diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..482413ce --- /dev/null +++ b/404.html @@ -0,0 +1,22 @@ + + + + + + 404 | eslint-plugin-lodash-template + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/assets/app.fQslityg.js b/assets/app.fQslityg.js new file mode 100644 index 00000000..73c5950a --- /dev/null +++ b/assets/app.fQslityg.js @@ -0,0 +1 @@ +import{t as p}from"./chunks/theme.Dciq0WeV.js";import{R as o,aa as u,ab as l,ac as c,ad as f,ae as d,af as m,ag as h,ah as g,ai as A,aj as v,d as P,u as y,v as C,s as b,ak as w,al as R,am as E,a8 as S}from"./chunks/framework.D6W_pQcY.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=y();return C(()=>{b(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&w(),R(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function j(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(l,e);const t=c(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function D(){return g(T)}function _(){let e=o,a;return A(t=>{let n=v(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&j().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{j as createApp}; diff --git a/assets/chunks/@localSearchIndexroot.DzqK7Ze_.js b/assets/chunks/@localSearchIndexroot.DzqK7Ze_.js new file mode 100644 index 00000000..2f8fb200 --- /dev/null +++ b/assets/chunks/@localSearchIndexroot.DzqK7Ze_.js @@ -0,0 +1 @@ +const t='{"documentCount":183,"nextId":183,"documentIds":{"0":"/eslint-plugin-lodash-template/#eslint-plugin-lodash-template","1":"/eslint-plugin-lodash-template/#features","2":"/eslint-plugin-lodash-template/#installation","3":"/eslint-plugin-lodash-template/#usage","4":"/eslint-plugin-lodash-template/#attention","5":"/eslint-plugin-lodash-template/#configs","6":"/eslint-plugin-lodash-template/#for-eslint-config-js","7":"/eslint-plugin-lodash-template/#for-eslintrc","8":"/eslint-plugin-lodash-template/#all-rules","9":"/eslint-plugin-lodash-template/#plugin-option","10":"/eslint-plugin-lodash-template/#suppress-no-undef-warnings-in-the-template-tag","11":"/eslint-plugin-lodash-template/#suppress-reports-for-specific-rules-in-template-files","12":"/eslint-plugin-lodash-template/#customize-parser","13":"/eslint-plugin-lodash-template/#customize-target-extensions","14":"/eslint-plugin-lodash-template/#for-javascript-typescript-templates","15":"/eslint-plugin-lodash-template/#configuring","16":"/eslint-plugin-lodash-template/#faq","17":"/eslint-plugin-lodash-template/#known-limitations-in-script-templates","18":"/eslint-plugin-lodash-template/#parsing-error","19":"/eslint-plugin-lodash-template/#false-positives-in-some-rules","20":"/eslint-plugin-lodash-template/#editor-settings","21":"/eslint-plugin-lodash-template/#migrations","22":"/eslint-plugin-lodash-template/#contributing","23":"/eslint-plugin-lodash-template/#parserservices","24":"/eslint-plugin-lodash-template/#development-tools","25":"/eslint-plugin-lodash-template/#license","26":"/eslint-plugin-lodash-template/migration/0.13to0.14.html#_0-13-x-to-0-14-x","27":"/eslint-plugin-lodash-template/migration/0.13to0.14.html#breaking-changes","28":"/eslint-plugin-lodash-template/migration/0.13to0.14.html#moved-some-rule-categories","29":"/eslint-plugin-lodash-template/migration/0.13to0.14.html#in-0-13-x","30":"/eslint-plugin-lodash-template/migration/0.13to0.14.html#for-0-14-x","31":"/eslint-plugin-lodash-template/migration/0.13to0.14.html#rename-some-rules","32":"/eslint-plugin-lodash-template/migration/0.13to0.14.html#customize-target-extentions","33":"/eslint-plugin-lodash-template/migration/0.13to0.14.html#in-0-13-x-1","34":"/eslint-plugin-lodash-template/migration/0.13to0.14.html#for-0-14-x-1","35":"/eslint-plugin-lodash-template/migration/0.13to0.14.html#suppress-no-undef-warnings-in-the-template-tag","36":"/eslint-plugin-lodash-template/migration/0.13to0.14.html#in-0-13-x-2","37":"/eslint-plugin-lodash-template/migration/0.13to0.14.html#for-0-14-x-2","38":"/eslint-plugin-lodash-template/migration/0.13to0.14.html#suppress-reports-for-specific-rules-in-template-files","39":"/eslint-plugin-lodash-template/migration/0.13to0.14.html#in-0-13-x-3","40":"/eslint-plugin-lodash-template/migration/0.13to0.14.html#for-0-14-x-3","41":"/eslint-plugin-lodash-template/rules/attribute-name-casing.html#lodash-template-attribute-name-casing","42":"/eslint-plugin-lodash-template/rules/attribute-name-casing.html#rule-details","43":"/eslint-plugin-lodash-template/rules/attribute-name-casing.html#options","44":"/eslint-plugin-lodash-template/rules/attribute-name-casing.html#examples-for-this-rule-with-ignore-onclick-option","45":"/eslint-plugin-lodash-template/rules/attribute-name-casing.html#examples-for-this-rule-with-ignoresvgcamelcaseattributes-true-default","46":"/eslint-plugin-lodash-template/rules/attribute-name-casing.html#further-reading","47":"/eslint-plugin-lodash-template/rules/attribute-name-casing.html#implementation","48":"/eslint-plugin-lodash-template/rules/attribute-value-quote.html#lodash-template-attribute-value-quote","49":"/eslint-plugin-lodash-template/rules/attribute-value-quote.html#rule-details","50":"/eslint-plugin-lodash-template/rules/attribute-value-quote.html#options","51":"/eslint-plugin-lodash-template/rules/attribute-value-quote.html#examples-for-this-rule-with-single-option","52":"/eslint-plugin-lodash-template/rules/attribute-value-quote.html#examples-for-this-rule-with-either-option","53":"/eslint-plugin-lodash-template/rules/attribute-value-quote.html#further-reading","54":"/eslint-plugin-lodash-template/rules/attribute-value-quote.html#implementation","55":"/eslint-plugin-lodash-template/rules/element-name-casing.html#lodash-template-element-name-casing","56":"/eslint-plugin-lodash-template/rules/element-name-casing.html#rule-details","57":"/eslint-plugin-lodash-template/rules/element-name-casing.html#further-reading","58":"/eslint-plugin-lodash-template/rules/element-name-casing.html#implementation","59":"/eslint-plugin-lodash-template/rules/html-closing-bracket-spacing.html#lodash-template-html-closing-bracket-spacing","60":"/eslint-plugin-lodash-template/rules/html-closing-bracket-spacing.html#rule-details","61":"/eslint-plugin-lodash-template/rules/html-closing-bracket-spacing.html#options","62":"/eslint-plugin-lodash-template/rules/html-closing-bracket-spacing.html#implementation","63":"/eslint-plugin-lodash-template/rules/html-closing-bracket-newline.html#lodash-template-html-closing-bracket-newline","64":"/eslint-plugin-lodash-template/rules/html-closing-bracket-newline.html#rule-details","65":"/eslint-plugin-lodash-template/rules/html-closing-bracket-newline.html#options","66":"/eslint-plugin-lodash-template/rules/html-closing-bracket-newline.html#examples-for-this-rule-with-multiline-always-option","67":"/eslint-plugin-lodash-template/rules/html-closing-bracket-newline.html#implementation","68":"/eslint-plugin-lodash-template/rules/html-comment-spacing.html#lodash-template-html-comment-spacing","69":"/eslint-plugin-lodash-template/rules/html-comment-spacing.html#rule-details","70":"/eslint-plugin-lodash-template/rules/html-comment-spacing.html#options","71":"/eslint-plugin-lodash-template/rules/html-comment-spacing.html#always-expect-one-space-between-comment-and-curly-brackets","72":"/eslint-plugin-lodash-template/rules/html-comment-spacing.html#never-expect-no-spaces-between-comment-and-curly-brackets","73":"/eslint-plugin-lodash-template/rules/html-comment-spacing.html#implementation","74":"/eslint-plugin-lodash-template/rules/html-comment-content-newline.html#lodash-template-html-comment-content-newline","75":"/eslint-plugin-lodash-template/rules/html-comment-content-newline.html#rule-details","76":"/eslint-plugin-lodash-template/rules/html-comment-content-newline.html#options","77":"/eslint-plugin-lodash-template/rules/html-comment-content-newline.html#further-reading","78":"/eslint-plugin-lodash-template/rules/html-comment-content-newline.html#implementation","79":"/eslint-plugin-lodash-template/rules/html-content-newline.html#lodash-template-html-content-newline","80":"/eslint-plugin-lodash-template/rules/html-content-newline.html#rule-details","81":"/eslint-plugin-lodash-template/rules/html-content-newline.html#options","82":"/eslint-plugin-lodash-template/rules/html-content-newline.html#implementation","83":"/eslint-plugin-lodash-template/rules/html-indent.html#lodash-template-html-indent","84":"/eslint-plugin-lodash-template/rules/html-indent.html#rule-details","85":"/eslint-plugin-lodash-template/rules/html-indent.html#options","86":"/eslint-plugin-lodash-template/rules/html-indent.html#examples-for-this-rule-with-attribute-1-closebracket-1-option","87":"/eslint-plugin-lodash-template/rules/html-indent.html#examples-for-this-rule-with-attribute-2-closebracket-1-option","88":"/eslint-plugin-lodash-template/rules/html-indent.html#implementation","89":"/eslint-plugin-lodash-template/rules/#all-rules","90":"/eslint-plugin-lodash-template/rules/#base-rules-enabling-correct-eslint-parsing","91":"/eslint-plugin-lodash-template/rules/#best-practices-improve-development-experience","92":"/eslint-plugin-lodash-template/rules/#recommended-improve-readability","93":"/eslint-plugin-lodash-template/rules/#recommended-with-html-template-improve-readability-with-html-template","94":"/eslint-plugin-lodash-template/rules/#uncategorized","95":"/eslint-plugin-lodash-template/rules/max-attributes-per-line.html#lodash-template-max-attributes-per-line","96":"/eslint-plugin-lodash-template/rules/max-attributes-per-line.html#rule-details","97":"/eslint-plugin-lodash-template/rules/max-attributes-per-line.html#options","98":"/eslint-plugin-lodash-template/rules/max-attributes-per-line.html#allowfirstline","99":"/eslint-plugin-lodash-template/rules/max-attributes-per-line.html#singleline","100":"/eslint-plugin-lodash-template/rules/max-attributes-per-line.html#multiline","101":"/eslint-plugin-lodash-template/rules/max-attributes-per-line.html#implementation","102":"/eslint-plugin-lodash-template/rules/no-duplicate-attributes.html#lodash-template-no-duplicate-attributes","103":"/eslint-plugin-lodash-template/rules/no-duplicate-attributes.html#rule-details","104":"/eslint-plugin-lodash-template/rules/no-duplicate-attributes.html#implementation","105":"/eslint-plugin-lodash-template/rules/no-empty-template-tag.html#lodash-template-no-empty-template-tag","106":"/eslint-plugin-lodash-template/rules/no-empty-template-tag.html#rule-details","107":"/eslint-plugin-lodash-template/rules/no-empty-template-tag.html#implementation","108":"/eslint-plugin-lodash-template/rules/no-html-comments.html#lodash-template-no-html-comments","109":"/eslint-plugin-lodash-template/rules/no-html-comments.html#rule-details","110":"/eslint-plugin-lodash-template/rules/no-html-comments.html#implementation","111":"/eslint-plugin-lodash-template/rules/no-invalid-template-interpolation.html#lodash-template-no-invalid-template-interpolation","112":"/eslint-plugin-lodash-template/rules/no-invalid-template-interpolation.html#rule-details","113":"/eslint-plugin-lodash-template/rules/no-invalid-template-interpolation.html#implementation","114":"/eslint-plugin-lodash-template/rules/no-irregular-whitespace.html#lodash-template-no-irregular-whitespace","115":"/eslint-plugin-lodash-template/rules/no-irregular-whitespace.html#rule-details","116":"/eslint-plugin-lodash-template/rules/no-irregular-whitespace.html#options","117":"/eslint-plugin-lodash-template/rules/no-irregular-whitespace.html#further-reading","118":"/eslint-plugin-lodash-template/rules/no-irregular-whitespace.html#implementation","119":"/eslint-plugin-lodash-template/rules/no-multi-spaces-in-html-tag.html#lodash-template-no-multi-spaces-in-html-tag","120":"/eslint-plugin-lodash-template/rules/no-multi-spaces-in-html-tag.html#rule-details","121":"/eslint-plugin-lodash-template/rules/no-multi-spaces-in-html-tag.html#implementation","122":"/eslint-plugin-lodash-template/rules/no-multi-spaces-in-scriptlet.html#lodash-template-no-multi-spaces-in-scriptlet","123":"/eslint-plugin-lodash-template/rules/no-multi-spaces-in-scriptlet.html#rule-details","124":"/eslint-plugin-lodash-template/rules/no-multi-spaces-in-scriptlet.html#further-reading","125":"/eslint-plugin-lodash-template/rules/no-multi-spaces-in-scriptlet.html#implementation","126":"/eslint-plugin-lodash-template/rules/no-script-parsing-error.html#lodash-template-no-script-parsing-error","127":"/eslint-plugin-lodash-template/rules/no-script-parsing-error.html#rule-details","128":"/eslint-plugin-lodash-template/rules/no-script-parsing-error.html#implementation","129":"/eslint-plugin-lodash-template/rules/no-semi-in-template-interpolation.html#lodash-template-no-semi-in-template-interpolation","130":"/eslint-plugin-lodash-template/rules/no-semi-in-template-interpolation.html#rule-details","131":"/eslint-plugin-lodash-template/rules/no-semi-in-template-interpolation.html#implementation","132":"/eslint-plugin-lodash-template/rules/no-space-attribute-equal-sign.html#lodash-template-no-space-attribute-equal-sign","133":"/eslint-plugin-lodash-template/rules/no-space-attribute-equal-sign.html#rule-details","134":"/eslint-plugin-lodash-template/rules/no-space-attribute-equal-sign.html#further-reading","135":"/eslint-plugin-lodash-template/rules/no-space-attribute-equal-sign.html#implementation","136":"/eslint-plugin-lodash-template/rules/no-warning-html-comments.html#lodash-template-no-warning-html-comments","137":"/eslint-plugin-lodash-template/rules/no-warning-html-comments.html#rule-details","138":"/eslint-plugin-lodash-template/rules/no-warning-html-comments.html#implementation","139":"/eslint-plugin-lodash-template/rules/no-template-tag-in-start-tag.html#lodash-template-no-template-tag-in-start-tag","140":"/eslint-plugin-lodash-template/rules/no-template-tag-in-start-tag.html#rule-details","141":"/eslint-plugin-lodash-template/rules/no-template-tag-in-start-tag.html#options","142":"/eslint-plugin-lodash-template/rules/no-template-tag-in-start-tag.html#examples-for-this-rule-with-arrowevaluatetag-true-option","143":"/eslint-plugin-lodash-template/rules/no-template-tag-in-start-tag.html#implementation","144":"/eslint-plugin-lodash-template/rules/scriptlet-indent.html#lodash-template-scriptlet-indent","145":"/eslint-plugin-lodash-template/rules/scriptlet-indent.html#rule-details","146":"/eslint-plugin-lodash-template/rules/scriptlet-indent.html#options","147":"/eslint-plugin-lodash-template/rules/scriptlet-indent.html#examples-for-this-rule-with-startindent-0","148":"/eslint-plugin-lodash-template/rules/scriptlet-indent.html#examples-for-this-rule-with-startindent-2","149":"/eslint-plugin-lodash-template/rules/scriptlet-indent.html#implementation","150":"/eslint-plugin-lodash-template/rules/prefer-escape-template-interpolations.html#lodash-template-prefer-escape-template-interpolations","151":"/eslint-plugin-lodash-template/rules/prefer-escape-template-interpolations.html#rule-details","152":"/eslint-plugin-lodash-template/rules/prefer-escape-template-interpolations.html#implementation","153":"/eslint-plugin-lodash-template/rules/template-tag-spacing.html#lodash-template-template-tag-spacing","154":"/eslint-plugin-lodash-template/rules/template-tag-spacing.html#rule-details","155":"/eslint-plugin-lodash-template/rules/template-tag-spacing.html#options","156":"/eslint-plugin-lodash-template/rules/template-tag-spacing.html#always-expect-one-space-between-expression-and-curly-brackets","157":"/eslint-plugin-lodash-template/rules/template-tag-spacing.html#never-expect-no-spaces-between-expression-and-curly-brackets","158":"/eslint-plugin-lodash-template/rules/template-tag-spacing.html#implementation","159":"/eslint-plugin-lodash-template/services/ast-for-html.html#ast-for-html","160":"/eslint-plugin-lodash-template/services/ast-for-html.html#htmltoken","161":"/eslint-plugin-lodash-template/services/ast-for-html.html#htmlnode","162":"/eslint-plugin-lodash-template/services/ast-for-html.html#htmldocument","163":"/eslint-plugin-lodash-template/services/ast-for-html.html#htmldocumentfragment","164":"/eslint-plugin-lodash-template/services/ast-for-html.html#htmldocumenttype","165":"/eslint-plugin-lodash-template/services/ast-for-html.html#htmlcomment","166":"/eslint-plugin-lodash-template/services/ast-for-html.html#htmltext","167":"/eslint-plugin-lodash-template/services/ast-for-html.html#htmlelement","168":"/eslint-plugin-lodash-template/services/ast-for-html.html#htmlstarttag","169":"/eslint-plugin-lodash-template/services/ast-for-html.html#htmlattribute","170":"/eslint-plugin-lodash-template/services/ast-for-html.html#htmlendtag","171":"/eslint-plugin-lodash-template/services/ast-for-template-tag.html#ast-for-templatetag","172":"/eslint-plugin-lodash-template/services/ast-for-template-tag.html#token","173":"/eslint-plugin-lodash-template/services/ast-for-template-tag.html#node","174":"/eslint-plugin-lodash-template/services/ast-for-template-tag.html#microtemplateevaluate","175":"/eslint-plugin-lodash-template/services/ast-for-template-tag.html#microtemplateinterpolate","176":"/eslint-plugin-lodash-template/services/ast-for-template-tag.html#microtemplateescape","177":"/eslint-plugin-lodash-template/services/ast-for-template-tag.html#microtemplateexpressionstart","178":"/eslint-plugin-lodash-template/services/ast-for-template-tag.html#microtemplateexpressionend","179":"/eslint-plugin-lodash-template/services/#contributing","180":"/eslint-plugin-lodash-template/services/#microtemplateservice","181":"/eslint-plugin-lodash-template/services/#traverse-microtemplates","182":"/eslint-plugin-lodash-template/services/#traverse-html"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[4,1,75],"1":[1,4,40],"2":[1,4,9],"3":[1,4,51],"4":[1,5,58],"5":[1,4,1],"6":[4,5,48],"7":[3,5,45],"8":[2,4,5],"9":[2,4,1],"10":[8,6,44],"11":[8,6,33],"12":[2,6,55],"13":[3,6,19],"14":[4,6,73],"15":[1,10,45],"16":[1,4,1],"17":[5,5,22],"18":[2,10,45],"19":[5,10,106],"20":[2,5,45],"21":[1,4,6],"22":[1,4,9],"23":[1,5,8],"24":[2,5,16],"25":[1,4,11],"26":[5,1,1],"27":[2,5,28],"28":[5,5,1],"29":[4,10,12],"30":[4,10,14],"31":[4,5,11],"32":[3,5,1],"33":[4,8,33],"34":[4,8,22],"35":[8,5,1],"36":[4,13,29],"37":[4,13,25],"38":[8,13,1],"39":[4,13,24],"40":[4,13,20],"41":[5,1,48],"42":[2,5,33],"43":[1,5,11],"44":[10,6,19],"45":[10,6,21],"46":[2,5,18],"47":[1,5,4],"48":[5,1,46],"49":[2,5,35],"50":[1,5,23],"51":[9,6,27],"52":[9,6,26],"53":[2,5,13],"54":[1,5,4],"55":[5,1,45],"56":[2,5,30],"57":[2,5,8],"58":[1,5,4],"59":[6,1,48],"60":[2,6,43],"61":[1,6,48],"62":[1,6,4],"63":[6,1,42],"64":[2,6,52],"65":[1,6,56],"66":[10,7,33],"67":[1,6,4],"68":[5,1,42],"69":[2,5,33],"70":[1,5,15],"71":[11,6,26],"72":[11,6,25],"73":[1,5,4],"74":[6,1,42],"75":[2,6,36],"76":[1,6,50],"77":[2,6,7],"78":[1,6,4],"79":[5,1,41],"80":[2,5,44],"81":[1,5,73],"82":[1,5,4],"83":[4,1,36],"84":[2,4,39],"85":[1,4,37],"86":[10,5,27],"87":[11,5,27],"88":[1,4,4],"89":[2,1,1],"90":[7,2,21],"91":[6,2,44],"92":[4,2,52],"93":[7,2,105],"94":[1,2,44],"95":[6,1,38],"96":[2,6,65],"97":[1,6,14],"98":[1,7,44],"99":[1,7,41],"100":[1,7,40],"101":[1,6,4],"102":[5,1,27],"103":[2,5,39],"104":[1,5,4],"105":[5,1,28],"106":[2,5,26],"107":[1,5,4],"108":[5,1,24],"109":[2,5,22],"110":[1,5,4],"111":[5,1,33],"112":[2,5,36],"113":[1,5,4],"114":[5,1,38],"115":[2,5,30],"116":[1,5,31],"117":[2,5,6],"118":[1,5,4],"119":[8,1,44],"120":[2,8,41],"121":[1,8,4],"122":[7,1,43],"123":[2,7,47],"124":[2,7,6],"125":[1,7,4],"126":[6,1,24],"127":[2,6,44],"128":[1,6,4],"129":[6,1,49],"130":[2,6,29],"131":[1,6,4],"132":[7,1,48],"133":[2,7,47],"134":[2,7,9],"135":[1,7,4],"136":[6,1,28],"137":[2,6,30],"138":[1,6,4],"139":[6,1,25],"140":[2,6,37],"141":[1,6,11],"142":[9,7,20],"143":[1,6,4],"144":[4,1,40],"145":[2,4,49],"146":[1,4,43],"147":[8,5,26],"148":[8,5,26],"149":[1,4,4],"150":[5,1,22],"151":[2,5,29],"152":[1,5,4],"153":[4,1,46],"154":[2,4,38],"155":[1,4,15],"156":[11,5,29],"157":[11,5,30],"158":[1,4,4],"159":[3,1,56],"160":[1,3,28],"161":[1,3,25],"162":[1,3,16],"163":[1,3,16],"164":[1,3,16],"165":[1,3,19],"166":[1,3,14],"167":[1,3,23],"168":[1,3,21],"169":[1,3,20],"170":[1,3,16],"171":[7,1,52],"172":[1,7,25],"173":[1,7,25],"174":[1,7,29],"175":[1,7,28],"176":[1,7,31],"177":[1,7,20],"178":[1,7,20],"179":[1,1,1],"180":[1,1,16],"181":[2,1,25],"182":[2,1,21]},"averageFieldLength":[3.1420765027322397,4.748633879781419,26.808743169398905],"storedFields":{"0":{"title":"eslint-plugin-lodash-template","titles":[]},"1":{"title":"Features","titles":["eslint-plugin-lodash-template"]},"2":{"title":"Installation","titles":["eslint-plugin-lodash-template"]},"3":{"title":"Usage","titles":["eslint-plugin-lodash-template"]},"4":{"title":"Attention","titles":["eslint-plugin-lodash-template","Usage"]},"5":{"title":"Configs","titles":["eslint-plugin-lodash-template"]},"6":{"title":"For eslint.config.js","titles":["eslint-plugin-lodash-template","Configs"]},"7":{"title":"For .eslintrc.*","titles":["eslint-plugin-lodash-template","Configs"]},"8":{"title":"All Rules","titles":["eslint-plugin-lodash-template"]},"9":{"title":"Plugin Option","titles":["eslint-plugin-lodash-template"]},"10":{"title":"Suppress no-undef warnings in the template tag","titles":["eslint-plugin-lodash-template","Plugin Option"]},"11":{"title":"Suppress reports for specific rules in template files","titles":["eslint-plugin-lodash-template","Plugin Option"]},"12":{"title":"Customize parser","titles":["eslint-plugin-lodash-template","Plugin Option"]},"13":{"title":"Customize target extensions","titles":["eslint-plugin-lodash-template","Plugin Option"]},"14":{"title":"For JavaScript (TypeScript) Templates","titles":["eslint-plugin-lodash-template","Plugin Option"]},"15":{"title":"Configuring","titles":["eslint-plugin-lodash-template","Plugin Option","For JavaScript (TypeScript) Templates"]},"16":{"title":"FAQ","titles":["eslint-plugin-lodash-template"]},"17":{"title":"Known Limitations in Script Templates","titles":["eslint-plugin-lodash-template","FAQ"]},"18":{"title":"Parsing Error","titles":["eslint-plugin-lodash-template","FAQ","Known Limitations in Script Templates"]},"19":{"title":"False Positives in Some Rules","titles":["eslint-plugin-lodash-template","FAQ","Known Limitations in Script Templates"]},"20":{"title":"Editor Settings","titles":["eslint-plugin-lodash-template","FAQ"]},"21":{"title":"Migrations","titles":["eslint-plugin-lodash-template"]},"22":{"title":"Contributing","titles":["eslint-plugin-lodash-template"]},"23":{"title":"parserServices","titles":["eslint-plugin-lodash-template","Contributing"]},"24":{"title":"Development Tools","titles":["eslint-plugin-lodash-template","Contributing"]},"25":{"title":"License","titles":["eslint-plugin-lodash-template"]},"26":{"title":"0.13.x to 0.14.x","titles":[]},"27":{"title":"Breaking Changes","titles":["0.13.x to 0.14.x"]},"28":{"title":"Moved some rule categories.","titles":["0.13.x to 0.14.x"]},"29":{"title":"In 0.13.x","titles":["0.13.x to 0.14.x","Moved some rule categories."]},"30":{"title":"For 0.14.x","titles":["0.13.x to 0.14.x","Moved some rule categories."]},"31":{"title":"Rename some rules.","titles":["0.13.x to 0.14.x"]},"32":{"title":"Customize target extentions","titles":["0.13.x to 0.14.x"]},"33":{"title":"In 0.13.x","titles":["0.13.x to 0.14.x","Customize target extentions"]},"34":{"title":"For 0.14.x","titles":["0.13.x to 0.14.x","Customize target extentions"]},"35":{"title":"Suppress no-undef warnings in the template tag","titles":["0.13.x to 0.14.x"]},"36":{"title":"In 0.13.x","titles":["0.13.x to 0.14.x","Suppress no-undef warnings in the template tag"]},"37":{"title":"For 0.14.x","titles":["0.13.x to 0.14.x","Suppress no-undef warnings in the template tag"]},"38":{"title":"Suppress reports for specific rules in template files","titles":["0.13.x to 0.14.x","Suppress no-undef warnings in the template tag"]},"39":{"title":"In 0.13.x","titles":["0.13.x to 0.14.x","Suppress no-undef warnings in the template tag"]},"40":{"title":"For 0.14.x","titles":["0.13.x to 0.14.x","Suppress no-undef warnings in the template tag"]},"41":{"title":"lodash-template/attribute-name-casing","titles":[]},"42":{"title":"Rule Details","titles":["lodash-template/attribute-name-casing"]},"43":{"title":"Options","titles":["lodash-template/attribute-name-casing"]},"44":{"title":"Examples for this rule with "ignore": ["onClick"] option:","titles":["lodash-template/attribute-name-casing","Options"]},"45":{"title":"Examples for this rule with "ignoreSvgCamelCaseAttributes": true, (default)","titles":["lodash-template/attribute-name-casing","Options"]},"46":{"title":"Further Reading","titles":["lodash-template/attribute-name-casing"]},"47":{"title":"Implementation","titles":["lodash-template/attribute-name-casing"]},"48":{"title":"lodash-template/attribute-value-quote","titles":[]},"49":{"title":"Rule Details","titles":["lodash-template/attribute-value-quote"]},"50":{"title":"Options","titles":["lodash-template/attribute-value-quote"]},"51":{"title":"Examples for this rule with "single" option:","titles":["lodash-template/attribute-value-quote","Options"]},"52":{"title":"Examples for this rule with "either" option:","titles":["lodash-template/attribute-value-quote","Options"]},"53":{"title":"Further Reading","titles":["lodash-template/attribute-value-quote"]},"54":{"title":"Implementation","titles":["lodash-template/attribute-value-quote"]},"55":{"title":"lodash-template/element-name-casing","titles":[]},"56":{"title":"Rule Details","titles":["lodash-template/element-name-casing"]},"57":{"title":"Further Reading","titles":["lodash-template/element-name-casing"]},"58":{"title":"Implementation","titles":["lodash-template/element-name-casing"]},"59":{"title":"lodash-template/html-closing-bracket-spacing","titles":[]},"60":{"title":"Rule Details","titles":["lodash-template/html-closing-bracket-spacing"]},"61":{"title":"Options","titles":["lodash-template/html-closing-bracket-spacing"]},"62":{"title":"Implementation","titles":["lodash-template/html-closing-bracket-spacing"]},"63":{"title":"lodash-template/html-closing-bracket-newline","titles":[]},"64":{"title":"Rule Details","titles":["lodash-template/html-closing-bracket-newline"]},"65":{"title":"Options","titles":["lodash-template/html-closing-bracket-newline"]},"66":{"title":"Examples for this rule with { "multiline": "always" } option:","titles":["lodash-template/html-closing-bracket-newline","Options"]},"67":{"title":"Implementation","titles":["lodash-template/html-closing-bracket-newline"]},"68":{"title":"lodash-template/html-comment-spacing","titles":[]},"69":{"title":"Rule Details","titles":["lodash-template/html-comment-spacing"]},"70":{"title":"Options","titles":["lodash-template/html-comment-spacing"]},"71":{"title":""always" - Expect one space between comment and curly brackets.","titles":["lodash-template/html-comment-spacing","Options"]},"72":{"title":""never" - Expect no spaces between comment and curly brackets.","titles":["lodash-template/html-comment-spacing","Options"]},"73":{"title":"Implementation","titles":["lodash-template/html-comment-spacing"]},"74":{"title":"lodash-template/html-comment-content-newline","titles":[]},"75":{"title":"Rule Details","titles":["lodash-template/html-comment-content-newline"]},"76":{"title":"Options","titles":["lodash-template/html-comment-content-newline"]},"77":{"title":"Further Reading","titles":["lodash-template/html-comment-content-newline"]},"78":{"title":"Implementation","titles":["lodash-template/html-comment-content-newline"]},"79":{"title":"lodash-template/html-content-newline","titles":[]},"80":{"title":"Rule Details","titles":["lodash-template/html-content-newline"]},"81":{"title":"Options","titles":["lodash-template/html-content-newline"]},"82":{"title":"Implementation","titles":["lodash-template/html-content-newline"]},"83":{"title":"lodash-template/html-indent","titles":[]},"84":{"title":"Rule Details","titles":["lodash-template/html-indent"]},"85":{"title":"Options","titles":["lodash-template/html-indent"]},"86":{"title":"Examples for this rule with { attribute: 1, closeBracket: 1 } option:","titles":["lodash-template/html-indent","Options"]},"87":{"title":"Examples for this rule with { attribute: 2, closeBracket: 1 } option:","titles":["lodash-template/html-indent","Options"]},"88":{"title":"Implementation","titles":["lodash-template/html-indent"]},"89":{"title":"All Rules","titles":[]},"90":{"title":"Base Rules (Enabling Correct ESLint Parsing)","titles":["All Rules"]},"91":{"title":"Best Practices (Improve Development Experience)","titles":["All Rules"]},"92":{"title":"Recommended (Improve Readability)","titles":["All Rules"]},"93":{"title":"Recommended with HTML template (Improve Readability with HTML template)","titles":["All Rules"]},"94":{"title":"Uncategorized","titles":["All Rules"]},"95":{"title":"lodash-template/max-attributes-per-line","titles":[]},"96":{"title":"Rule Details","titles":["lodash-template/max-attributes-per-line"]},"97":{"title":"Options","titles":["lodash-template/max-attributes-per-line"]},"98":{"title":"allowFirstLine","titles":["lodash-template/max-attributes-per-line","Options"]},"99":{"title":"singleline","titles":["lodash-template/max-attributes-per-line","Options"]},"100":{"title":"multiline","titles":["lodash-template/max-attributes-per-line","Options"]},"101":{"title":"Implementation","titles":["lodash-template/max-attributes-per-line"]},"102":{"title":"lodash-template/no-duplicate-attributes","titles":[]},"103":{"title":"Rule Details","titles":["lodash-template/no-duplicate-attributes"]},"104":{"title":"Implementation","titles":["lodash-template/no-duplicate-attributes"]},"105":{"title":"lodash-template/no-empty-template-tag","titles":[]},"106":{"title":"Rule Details","titles":["lodash-template/no-empty-template-tag"]},"107":{"title":"Implementation","titles":["lodash-template/no-empty-template-tag"]},"108":{"title":"lodash-template/no-html-comments","titles":[]},"109":{"title":"Rule Details","titles":["lodash-template/no-html-comments"]},"110":{"title":"Implementation","titles":["lodash-template/no-html-comments"]},"111":{"title":"lodash-template/no-invalid-template-interpolation","titles":[]},"112":{"title":"Rule Details","titles":["lodash-template/no-invalid-template-interpolation"]},"113":{"title":"Implementation","titles":["lodash-template/no-invalid-template-interpolation"]},"114":{"title":"lodash-template/no-irregular-whitespace","titles":[]},"115":{"title":"Rule Details","titles":["lodash-template/no-irregular-whitespace"]},"116":{"title":"Options","titles":["lodash-template/no-irregular-whitespace"]},"117":{"title":"Further Reading","titles":["lodash-template/no-irregular-whitespace"]},"118":{"title":"Implementation","titles":["lodash-template/no-irregular-whitespace"]},"119":{"title":"lodash-template/no-multi-spaces-in-html-tag","titles":[]},"120":{"title":"Rule Details","titles":["lodash-template/no-multi-spaces-in-html-tag"]},"121":{"title":"Implementation","titles":["lodash-template/no-multi-spaces-in-html-tag"]},"122":{"title":"lodash-template/no-multi-spaces-in-scriptlet","titles":[]},"123":{"title":"Rule Details","titles":["lodash-template/no-multi-spaces-in-scriptlet"]},"124":{"title":"Further Reading","titles":["lodash-template/no-multi-spaces-in-scriptlet"]},"125":{"title":"Implementation","titles":["lodash-template/no-multi-spaces-in-scriptlet"]},"126":{"title":"lodash-template/no-script-parsing-error","titles":[]},"127":{"title":"Rule Details","titles":["lodash-template/no-script-parsing-error"]},"128":{"title":"Implementation","titles":["lodash-template/no-script-parsing-error"]},"129":{"title":"lodash-template/no-semi-in-template-interpolation","titles":[]},"130":{"title":"Rule Details","titles":["lodash-template/no-semi-in-template-interpolation"]},"131":{"title":"Implementation","titles":["lodash-template/no-semi-in-template-interpolation"]},"132":{"title":"lodash-template/no-space-attribute-equal-sign","titles":[]},"133":{"title":"Rule Details","titles":["lodash-template/no-space-attribute-equal-sign"]},"134":{"title":"Further Reading","titles":["lodash-template/no-space-attribute-equal-sign"]},"135":{"title":"Implementation","titles":["lodash-template/no-space-attribute-equal-sign"]},"136":{"title":"lodash-template/no-warning-html-comments","titles":[]},"137":{"title":"Rule Details","titles":["lodash-template/no-warning-html-comments"]},"138":{"title":"Implementation","titles":["lodash-template/no-warning-html-comments"]},"139":{"title":"lodash-template/no-template-tag-in-start-tag","titles":[]},"140":{"title":"Rule Details","titles":["lodash-template/no-template-tag-in-start-tag"]},"141":{"title":"Options","titles":["lodash-template/no-template-tag-in-start-tag"]},"142":{"title":"Examples for this rule with {arrowEvaluateTag: true} option:","titles":["lodash-template/no-template-tag-in-start-tag","Options"]},"143":{"title":"Implementation","titles":["lodash-template/no-template-tag-in-start-tag"]},"144":{"title":"lodash-template/scriptlet-indent","titles":[]},"145":{"title":"Rule Details","titles":["lodash-template/scriptlet-indent"]},"146":{"title":"Options","titles":["lodash-template/scriptlet-indent"]},"147":{"title":"Examples for this rule with {startIndent: 0}:","titles":["lodash-template/scriptlet-indent","Options"]},"148":{"title":"Examples for this rule with {startIndent: 2}:","titles":["lodash-template/scriptlet-indent","Options"]},"149":{"title":"Implementation","titles":["lodash-template/scriptlet-indent"]},"150":{"title":"lodash-template/prefer-escape-template-interpolations","titles":[]},"151":{"title":"Rule Details","titles":["lodash-template/prefer-escape-template-interpolations"]},"152":{"title":"Implementation","titles":["lodash-template/prefer-escape-template-interpolations"]},"153":{"title":"lodash-template/template-tag-spacing","titles":[]},"154":{"title":"Rule Details","titles":["lodash-template/template-tag-spacing"]},"155":{"title":"Options","titles":["lodash-template/template-tag-spacing"]},"156":{"title":""always" - Expect one space between expression and curly brackets.","titles":["lodash-template/template-tag-spacing","Options"]},"157":{"title":""never" - Expect no spaces between expression and curly brackets.","titles":["lodash-template/template-tag-spacing","Options"]},"158":{"title":"Implementation","titles":["lodash-template/template-tag-spacing"]},"159":{"title":"AST for HTML","titles":[]},"160":{"title":"HTMLToken","titles":["AST for HTML"]},"161":{"title":"HTMLNode","titles":["AST for HTML"]},"162":{"title":"HTMLDocument","titles":["AST for HTML"]},"163":{"title":"HTMLDocumentFragment","titles":["AST for HTML"]},"164":{"title":"HTMLDocumentType","titles":["AST for HTML"]},"165":{"title":"HTMLComment","titles":["AST for HTML"]},"166":{"title":"HTMLText","titles":["AST for HTML"]},"167":{"title":"HTMLElement","titles":["AST for HTML"]},"168":{"title":"HTMLStartTag","titles":["AST for HTML"]},"169":{"title":"HTMLAttribute","titles":["AST for HTML"]},"170":{"title":"HTMLEndTag","titles":["AST for HTML"]},"171":{"title":"AST for <%= templateTag %>","titles":[]},"172":{"title":"Token","titles":["AST for <%= templateTag %>"]},"173":{"title":"Node","titles":["AST for <%= templateTag %>"]},"174":{"title":"MicroTemplateEvaluate","titles":["AST for <%= templateTag %>"]},"175":{"title":"MicroTemplateInterpolate","titles":["AST for <%= templateTag %>"]},"176":{"title":"MicroTemplateEscape","titles":["AST for <%= templateTag %>"]},"177":{"title":"MicroTemplateExpressionStart","titles":["AST for <%= templateTag %>"]},"178":{"title":"MicroTemplateExpressionEnd","titles":["AST for <%= templateTag %>"]},"179":{"title":"Contributing","titles":[]},"180":{"title":"MicroTemplateService","titles":["Contributing"]},"181":{"title":"Traverse MicroTemplates","titles":["Contributing"]},"182":{"title":"Traverse HTML","titles":["Contributing"]}},"dirtCount":0,"index":[["4",{"2":{"84":2,"145":3}}],["42",{"2":{"18":2}}],["3",{"2":{"69":2,"71":2,"84":1,"96":2,"154":2,"156":2,"157":2}}],["✗",{"2":{"42":1,"49":1,"51":1,"52":1,"56":1,"60":1,"64":1,"66":1,"69":1,"71":1,"72":1,"75":1,"76":1,"80":1,"81":1,"84":1,"96":1,"98":1,"99":1,"100":1,"103":1,"106":1,"109":1,"112":1,"115":1,"120":1,"123":1,"127":1,"130":1,"133":1,"140":1,"145":1,"151":1,"154":1,"156":1,"157":1}}],["✓",{"2":{"42":1,"44":1,"45":1,"49":1,"51":1,"52":1,"56":1,"60":1,"61":1,"64":1,"66":1,"69":1,"71":1,"72":1,"75":1,"76":1,"80":1,"81":1,"84":1,"86":1,"87":1,"96":1,"98":1,"99":1,"100":1,"103":1,"106":1,"109":1,"112":1,"115":1,"120":1,"123":1,"127":1,"130":1,"133":1,"140":1,"142":1,"145":1,"147":1,"148":1,"151":1,"154":1,"156":1,"157":1}}],["keytoken",{"2":{"169":1}}],["key",{"2":{"169":1}}],["kebab",{"2":{"42":3,"56":3}}],["known",{"0":{"17":1},"1":{"18":1,"19":1},"2":{"14":1,"17":1}}],["quotation",{"2":{"53":1}}],["quote",{"0":{"48":1},"1":{"49":1,"50":1,"51":1,"52":1,"53":1,"54":1},"2":{"49":3,"50":1,"51":3,"52":2,"53":1,"93":1}}],["quotes",{"2":{"4":2,"48":1,"49":3,"50":8,"51":2,"52":1,"93":1}}],["quot",{"0":{"44":4,"45":2,"51":2,"52":2,"66":4,"71":2,"72":2,"156":2,"157":2},"2":{"41":4,"48":6,"50":8,"55":4,"59":4,"61":30,"63":4,"65":8,"68":4,"74":4,"76":12,"79":4,"81":16,"83":4,"85":4,"93":8,"95":4,"102":4,"105":10,"108":4,"111":10,"114":8,"116":6,"119":6,"122":8,"126":12,"127":2,"129":10,"132":8,"136":4,"139":2,"144":8,"146":4,"150":2,"153":8}}],["⚙️",{"2":{"41":1,"48":1,"55":1,"59":1,"63":1,"68":1,"74":1,"79":1,"83":1,"95":1,"102":1,"105":1,"108":1,"111":1,"114":1,"119":1,"122":1,"126":1,"129":1,"132":1,"136":1,"139":1,"144":1,"150":1,"153":1}}],["🆖",{"2":{"41":1,"48":1,"55":1,"59":1,"68":1,"91":3,"92":2,"93":10,"94":2,"102":1,"105":1,"108":1,"111":1,"119":1,"122":1,"129":1,"132":1,"136":1,"139":1,"150":1,"153":1}}],["🆗",{"2":{"41":1,"48":1,"55":1,"59":1,"68":1,"91":1,"92":1,"93":6,"94":1,"129":1,"132":1,"150":1,"153":1}}],["5",{"2":{"27":1}}],["void",{"2":{"159":3,"171":3}}],["verification",{"2":{"127":1}}],["verifies",{"2":{"96":1}}],["visible",{"2":{"46":1}}],["viewbox=",{"2":{"45":1}}],["vs",{"2":{"20":1}}],["vscode",{"2":{"20":1}}],["vakue",{"2":{"169":1}}],["valid",{"2":{"103":1}}],["validate",{"2":{"20":1}}],["validating",{"2":{"19":1}}],["valuetoken",{"2":{"169":1}}],["values",{"2":{"53":1,"94":1,"116":1,"139":1,"140":5}}],["value",{"0":{"48":1},"1":{"49":1,"50":1,"51":1,"52":1,"53":1,"54":1},"2":{"19":1,"20":1,"49":3,"50":1,"51":3,"52":2,"93":1,"160":1,"165":1,"166":1}}],["vars",{"2":{"19":1}}],["variablename",{"2":{"10":1,"36":1,"37":1}}],["variable",{"2":{"10":2,"36":1,"37":1}}],["var",{"2":{"0":1,"10":1,"123":4}}],["xxxelement>",{"2":{"56":1}}],["xxxelementelement",{"2":{"56":1}}],["xxxelement",{"2":{"55":1,"93":1}}],["xxx",{"2":{"55":1,"56":1,"93":1}}],["x",{"0":{"26":2,"29":1,"30":1,"33":1,"34":1,"36":1,"37":1,"39":1,"40":1},"1":{"27":2,"28":2,"29":2,"30":2,"31":2,"32":2,"33":2,"34":2,"35":2,"36":2,"37":2,"38":2,"39":2,"40":2},"2":{"19":14,"21":2,"33":1,"34":1,"36":1,"37":1,"39":1,"40":1}}],["x3c",{"2":{"0":28,"10":10,"11":1,"12":6,"14":2,"18":4,"19":14,"42":6,"44":3,"45":4,"49":6,"51":6,"52":6,"56":9,"60":21,"61":9,"64":19,"66":13,"69":8,"71":8,"72":7,"75":10,"76":10,"80":11,"81":11,"84":11,"86":6,"87":6,"96":9,"98":5,"99":5,"100":5,"103":7,"106":12,"109":3,"112":17,"115":7,"120":6,"123":9,"127":5,"130":5,"133":5,"137":2,"140":13,"142":6,"145":15,"147":8,"148":8,"151":12,"154":14,"156":14,"157":14,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"174":1,"175":1,"176":1,"177":1,"178":1}}],["🔧",{"2":{"41":1,"48":1,"55":1,"59":1,"63":1,"68":1,"74":1,"79":1,"83":1,"91":1,"92":4,"93":12,"95":1,"114":1,"119":1,"122":1,"129":1,"132":1,"144":1,"153":1}}],["👎",{"2":{"18":1}}],["👍",{"2":{"18":1}}],["`obj`",{"2":{"14":1}}],["`options`",{"2":{"14":1}}],["`",{"2":{"14":4}}],["|",{"2":{"14":5,"50":3,"57":1,"61":6,"70":1,"85":1,"146":1,"155":1,"162":2,"163":2,"165":2,"167":4,"169":2}}],["^^^^^",{"2":{"14":1}}],["^^^^",{"2":{"14":1}}],["+",{"2":{"10":1,"11":1,"12":15,"13":5,"14":1,"15":12,"18":1,"33":2,"34":5,"36":3,"37":1,"39":3,"40":1}}],["7",{"2":{"6":1}}],["null",{"2":{"165":2,"167":2,"169":2}}],["number",{"2":{"85":3,"93":1,"95":1,"96":3,"99":1,"100":1,"146":3,"160":1,"161":1,"172":1,"173":1}}],["npm",{"2":{"24":2}}],["new",{"2":{"96":4,"98":1,"99":1,"100":1}}],["newline",{"0":{"63":1,"74":1,"79":1},"1":{"64":1,"65":1,"66":1,"67":1,"75":1,"76":1,"77":1,"78":1,"80":1,"81":1,"82":1},"2":{"64":4,"65":1,"66":3,"75":6,"76":8,"80":3,"81":6,"93":3}}],["next",{"2":{"64":1}}],["never",{"0":{"72":1,"157":1},"2":{"19":1,"61":11,"65":4,"70":1,"72":1,"76":4,"81":3,"155":1,"157":1}}],["necessary",{"2":{"19":1}}],["needed",{"2":{"19":1}}],["need",{"2":{"15":1,"17":1,"50":1}}],["nodes",{"2":{"159":1,"171":1}}],["node",{"0":{"173":1},"2":{"159":3,"160":2,"161":2,"165":1,"166":1,"167":1,"171":4,"172":2,"173":3,"174":1,"175":1,"176":1}}],["non",{"2":{"46":1}}],["not",{"2":{"12":1,"14":1,"15":1,"17":1,"50":1,"60":3,"65":2,"96":1,"112":1,"115":3,"120":1,"123":1,"133":1}}],["no",{"0":{"10":1,"35":1,"72":1,"102":1,"105":1,"108":1,"111":1,"114":1,"119":1,"122":1,"126":1,"129":1,"132":1,"136":1,"139":1,"157":1},"1":{"36":1,"37":1,"38":1,"39":1,"40":1,"103":1,"104":1,"106":1,"107":1,"109":1,"110":1,"112":1,"113":1,"115":1,"116":1,"117":1,"118":1,"120":1,"121":1,"123":1,"124":1,"125":1,"127":1,"128":1,"130":1,"131":1,"133":1,"134":1,"135":1,"137":1,"138":1,"140":1,"141":1,"142":1,"143":1},"2":{"3":1,"4":11,"11":3,"14":4,"19":1,"29":2,"30":2,"31":2,"39":2,"40":2,"60":4,"64":4,"66":2,"69":2,"71":2,"72":4,"75":6,"76":6,"80":3,"81":4,"90":1,"91":3,"92":2,"93":5,"94":3,"103":3,"106":3,"109":2,"112":3,"115":4,"116":1,"117":1,"120":3,"123":6,"124":1,"127":3,"130":2,"133":2,"137":2,"140":5,"141":1,"142":1,"151":1,"154":2,"156":2,"157":4,"182":1}}],["names",{"2":{"81":1}}],["name",{"0":{"41":1,"55":1},"1":{"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"56":1,"57":1,"58":1},"2":{"0":1,"10":1,"41":1,"42":4,"43":1,"44":1,"45":1,"55":1,"56":6,"93":4,"164":1,"167":1}}],["md",{"2":{"181":1,"182":1}}],["mdn",{"2":{"46":1,"57":1}}],["must",{"2":{"42":2,"56":2,"133":1}}],["multiplier",{"2":{"85":2,"146":2}}],["multiple",{"2":{"14":2,"19":1,"92":1,"93":1,"100":1,"119":1,"120":3,"122":1,"123":6}}],["multiline",{"0":{"66":1,"100":1},"2":{"65":4,"66":1,"75":3,"76":4,"81":6,"97":1,"98":1,"100":1}}],["multi",{"0":{"119":1,"122":1},"1":{"120":1,"121":1,"123":1,"124":1,"125":1},"2":{"4":6,"14":4,"31":2,"92":1,"93":1,"98":1,"120":3,"123":6,"124":1}}],["mistakes",{"2":{"103":1}}],["mit",{"2":{"25":1}}],["migrations",{"0":{"21":1}}],["microtemplates",{"0":{"181":1},"2":{"181":1}}],["microtemplateservic",{"2":{"180":1}}],["microtemplateservice",{"0":{"180":1},"2":{"159":2,"171":2,"180":1}}],["microtemplateexpressionend",{"0":{"178":1},"2":{"171":1,"174":1,"175":1,"176":1,"178":2}}],["microtemplateexpressionstart",{"0":{"177":1},"2":{"171":1,"174":1,"175":1,"176":1,"177":2}}],["microtemplateescape",{"0":{"176":1},"2":{"171":3,"176":1}}],["microtemplateevaluate",{"0":{"174":1},"2":{"171":3,"174":2}}],["microtemplateinterpolate",{"0":{"175":1},"2":{"171":3,"175":2,"176":1}}],["micro",{"2":{"0":1,"91":3,"92":2,"94":1,"105":1,"106":3,"111":1,"112":1,"129":1,"130":1,"144":1,"145":1,"146":1,"150":1,"151":2,"153":1,"154":1,"155":1,"171":1}}],["meshi",{"2":{"159":1,"171":1}}],["measures",{"2":{"24":1}}],["meta",{"2":{"20":1}}],["method",{"2":{"11":1,"27":2,"181":1,"182":1}}],["merge",{"2":{"19":1}}],["master",{"2":{"159":1,"171":1}}],["marks",{"2":{"53":1}}],["mark",{"2":{"20":1}}],["may",{"2":{"17":2,"18":1}}],["maximum",{"2":{"93":1,"95":1,"96":2,"99":1,"100":1}}],["max",{"0":{"95":1},"1":{"96":1,"97":1,"98":1,"99":1,"100":1,"101":1},"2":{"4":2,"93":1,"96":4,"97":2,"98":2,"99":2,"100":2}}],["mozilla",{"2":{"46":1}}],["moved",{"0":{"28":1},"1":{"29":1,"30":1},"2":{"27":1,"30":2}}],["module",{"2":{"15":1,"33":1}}],["more",{"2":{"3":1,"61":3}}],["works",{"2":{"127":1}}],["w3schools",{"2":{"53":1,"77":1,"134":1}}],["welcome",{"2":{"22":1}}],["well",{"2":{"18":2}}],["we",{"2":{"19":1,"181":1,"182":1}}],["web",{"2":{"0":1,"14":1,"57":1}}],["which",{"2":{"120":1,"123":1,"160":1,"161":1,"172":1,"173":1}}],["whitespaces",{"2":{"115":1}}],["whitespace",{"0":{"114":1},"1":{"115":1,"116":1,"117":1,"118":1},"2":{"4":2,"92":2,"114":1,"115":7,"116":4,"117":1,"120":1,"123":1}}],["when",{"2":{"14":1,"96":1,"99":1,"100":1,"103":1,"127":1}}],["will",{"2":{"14":1,"18":1,"19":1}}],["within",{"2":{"4":1}}],["with",{"0":{"44":1,"45":1,"51":1,"52":1,"66":1,"86":1,"87":1,"93":2,"142":1,"147":1,"148":1},"2":{"3":2,"6":4,"7":3,"10":1,"14":2,"15":4,"18":1,"20":1,"30":2,"41":1,"46":1,"48":1,"55":1,"59":1,"63":1,"64":1,"68":1,"74":1,"79":1,"83":1,"90":1,"91":1,"92":1,"93":2,"95":1,"102":1,"105":2,"108":1,"111":2,"114":2,"119":1,"122":2,"126":2,"129":2,"132":1,"136":1,"144":2,"153":2,"180":1}}],["write",{"2":{"10":1}}],["was",{"2":{"29":2,"33":1,"36":1,"39":1}}],["want",{"2":{"15":2,"94":1}}],["way",{"2":{"4":1}}],["warnings",{"0":{"10":1,"35":1},"1":{"36":1,"37":1,"38":1,"39":1,"40":1},"2":{"4":16,"20":1}}],["warning",{"0":{"136":1},"1":{"137":1,"138":1},"2":{"3":1,"29":1,"30":1,"93":2,"136":1,"137":2}}],["groups",{"2":{"133":1}}],["grid",{"2":{"0":2}}],["google",{"2":{"46":1,"53":1}}],["good",{"2":{"42":1,"44":1,"45":1,"49":1,"51":1,"52":1,"56":1,"60":1,"61":1,"64":1,"66":1,"69":1,"71":1,"72":1,"75":1,"76":1,"80":1,"81":1,"84":1,"86":1,"87":1,"96":1,"98":1,"99":1,"100":1,"103":1,"106":1,"109":1,"112":1,"115":1,"120":1,"123":1,"127":1,"130":1,"133":1,"140":1,"142":1,"145":1,"147":1,"148":1,"151":1,"154":1,"156":1,"157":1}}],["github",{"2":{"22":1,"159":1,"171":1}}],["getmicrotemplateservice",{"2":{"159":1,"171":1,"180":1}}],["gets",{"2":{"19":1}}],["get",{"2":{"18":1,"180":1}}],["generated",{"2":{"19":6}}],["generate",{"2":{"18":1,"19":2}}],["generic",{"2":{"3":1}}],["g",{"2":{"12":4,"19":3,"61":3}}],["global",{"2":{"10":3,"36":1,"37":1}}],["globals",{"2":{"4":1,"10":1,"36":1,"37":1}}],["gt",{"0":{"171":1},"1":{"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1},"2":{"4":1,"20":3,"41":3,"48":3,"55":3,"59":4,"60":1,"61":6,"68":2,"91":4,"92":3,"93":21,"94":4,"102":1,"105":1,"108":1,"111":1,"119":1,"122":1,"129":2,"132":2,"136":1,"139":2,"150":2,"153":2,"181":1}}],["guide",{"2":{"3":1,"46":1,"53":2,"77":1,"134":1}}],["duplication",{"2":{"93":1,"102":1}}],["duplicate",{"0":{"102":1},"1":{"103":1,"104":1},"2":{"93":1,"103":7}}],["due",{"2":{"17":1}}],["d",{"2":{"86":1,"87":1}}],["data",{"2":{"46":3}}],["drop",{"2":{"27":1}}],["disallows",{"2":{"61":3,"115":1}}],["disallow",{"2":{"59":1,"63":1,"65":2,"74":1,"76":2,"79":1,"81":2,"90":1,"91":3,"92":2,"93":9,"94":1,"102":1,"105":1,"108":1,"111":1,"112":1,"114":1,"119":1,"120":1,"122":1,"123":1,"126":1,"129":1,"130":1,"132":1,"133":1,"136":1,"139":1}}],["disabled",{"2":{"94":1,"139":1,"140":6,"142":3}}],["disable",{"2":{"4":15}}],["directive",{"2":{"12":1}}],["diff+",{"2":{"10":1,"11":1,"13":1,"15":1,"34":1}}],["diff",{"2":{"10":1,"11":1,"12":2,"15":2,"33":1,"36":1,"37":1,"39":1,"40":1}}],["divelement",{"2":{"56":1}}],["div>",{"2":{"0":3,"56":2,"60":1,"64":7,"66":5,"80":4,"81":4,"84":6,"86":3,"87":3,"103":2,"106":6,"112":8,"145":2,"147":1,"148":1,"151":6,"154":6,"156":6,"157":6}}],["div",{"2":{"0":3,"41":3,"42":3,"44":1,"48":3,"55":1,"60":5,"61":4,"64":7,"66":5,"80":6,"81":8,"84":2,"86":1,"87":1,"93":10,"102":1,"103":2,"115":4,"132":2,"145":2,"147":1,"148":1}}],["documentfragment",{"2":{"163":1}}],["document",{"2":{"162":1,"164":1}}],["docs",{"2":{"3":1}}],["double",{"2":{"49":2,"50":9}}],["doublequote",{"2":{"4":2}}],["don",{"2":{"14":1,"76":2,"81":2}}],["do",{"2":{"12":1,"15":1,"50":1}}],["does",{"2":{"4":1,"65":1,"96":1}}],["delimiter",{"2":{"177":1,"178":1}}],["declarations",{"2":{"98":1}}],["declared",{"2":{"19":1,"127":1}}],["definition",{"2":{"159":1,"171":1}}],["defines",{"2":{"98":1}}],["defined",{"2":{"96":1}}],["def",{"2":{"103":1,"127":2}}],["default",{"0":{"45":1},"2":{"3":1,"50":1,"61":3,"65":2,"70":1,"76":2,"81":3,"84":1,"85":3,"98":1,"99":1,"100":1,"145":1,"146":4,"155":1}}],["details",{"0":{"42":1,"49":1,"56":1,"60":1,"64":1,"69":1,"75":1,"80":1,"84":1,"96":1,"103":1,"106":1,"109":1,"112":1,"115":1,"120":1,"123":1,"127":1,"130":1,"133":1,"137":1,"140":1,"145":1,"151":1,"154":1},"2":{"15":1,"159":1,"171":1}}],["description",{"2":{"4":1,"90":1,"91":1,"92":1,"93":1,"94":1}}],["development",{"0":{"24":1,"91":1}}],["dev",{"2":{"2":1,"6":1,"7":1}}],["your",{"2":{"15":4,"19":1}}],["you",{"2":{"1":1,"12":1,"14":2,"15":3,"17":2,"18":2,"19":1,"65":1,"94":1,"159":1,"171":1}}],["ota",{"2":{"159":1,"171":1}}],["other",{"2":{"91":1,"111":1,"112":1}}],["otherwise",{"2":{"17":1}}],["opening",{"2":{"65":2,"80":1,"81":2,"99":1}}],["options",{"0":{"43":1,"50":1,"61":1,"65":1,"70":1,"76":1,"81":1,"85":1,"97":1,"116":1,"141":1,"146":1,"155":1},"1":{"44":1,"45":1,"51":1,"52":1,"66":1,"71":1,"72":1,"86":1,"87":1,"98":1,"99":1,"100":1,"142":1,"147":1,"148":1,"156":1,"157":1},"2":{"14":1}}],["option",{"0":{"9":1,"44":1,"51":1,"52":1,"66":1,"86":1,"87":1,"142":1},"1":{"10":1,"11":1,"12":1,"13":1,"14":1,"15":1},"2":{"36":1,"39":1,"41":1,"48":1,"55":1,"59":1,"63":1,"68":1,"74":1,"79":1,"83":1,"95":1,"114":1,"116":1,"119":1,"122":1,"129":1,"132":1,"144":1,"153":1}}],["own",{"2":{"64":1}}],["order",{"2":{"24":1}}],["or",{"2":{"17":1,"50":2,"59":1,"60":2,"61":3,"63":1,"64":1,"65":1,"74":1,"75":1,"79":1,"80":1,"81":1,"93":4}}],["org",{"2":{"3":1}}],["object",{"2":{"116":1}}],["obj",{"2":{"14":1}}],["occur",{"2":{"14":1}}],["overrides",{"2":{"13":1,"15":3,"34":1}}],["override",{"2":{"3":1}}],["outside",{"2":{"1":1,"4":1,"92":1,"94":1,"114":1,"139":1,"140":5}}],["offset",{"2":{"160":2,"161":2,"172":2,"173":2}}],["of",{"2":{"1":1,"6":2,"7":2,"19":1,"27":1,"41":1,"48":2,"49":1,"55":1,"59":1,"60":1,"61":3,"63":1,"64":1,"65":2,"68":1,"74":1,"79":1,"80":2,"81":4,"83":1,"84":3,"85":4,"91":1,"93":3,"95":2,"96":3,"99":1,"100":1,"102":1,"105":1,"111":1,"114":2,"119":1,"122":2,"126":1,"127":1,"129":3,"130":1,"132":1,"137":1,"144":2,"145":3,"146":4,"153":2,"159":1,"160":4,"161":4,"171":1,"172":4,"173":4,"177":1,"178":1}}],["one",{"0":{"71":1,"156":1},"2":{"61":3,"65":2,"76":2,"81":2,"85":3,"103":1,"146":3}}],["onclick=",{"2":{"44":1}}],["onclick",{"0":{"44":1},"2":{"44":1}}],["only",{"2":{"14":1,"103":1}}],["on",{"2":{"0":1,"14":1,"20":1,"23":1,"41":1,"48":1,"55":1,"59":1,"63":1,"64":2,"65":2,"68":1,"74":1,"79":1,"83":1,"95":1,"96":3,"98":1,"99":1,"100":1,"114":1,"119":1,"122":1,"129":1,"132":1,"144":1,"153":1}}],["omega",{"2":{"0":1}}],["0",{"0":{"26":2,"29":1,"30":1,"33":1,"34":1,"36":1,"37":1,"39":1,"40":1,"147":1},"1":{"27":2,"28":2,"29":2,"30":2,"31":2,"32":2,"33":2,"34":2,"35":2,"36":2,"37":2,"38":2,"39":2,"40":2},"2":{"0":1,"10":1,"11":1,"21":2,"33":1,"34":1,"36":1,"37":1,"39":1,"40":1,"45":2,"85":2,"145":2,"146":2,"147":2,"148":1}}],["function",{"2":{"159":1,"171":1}}],["further",{"0":{"46":1,"53":1,"57":1,"77":1,"117":1,"124":1,"134":1}}],["false",{"0":{"19":1},"2":{"19":5,"97":1,"98":2,"116":3,"141":1}}],["faq",{"0":{"16":1},"1":{"17":1,"18":1,"19":1,"20":1}}],["foo=",{"2":{"60":4,"61":2,"96":6,"98":2,"99":2,"100":2,"103":3}}],["foo>",{"2":{"60":1}}],["foobarattribute",{"2":{"42":1}}],["foobar",{"2":{"41":1,"42":1,"93":1}}],["foo",{"2":{"19":17,"41":2,"42":3,"60":7,"61":2,"64":7,"66":5,"84":2,"93":4,"98":1,"102":2,"103":2,"120":4,"123":2}}],["found",{"2":{"14":2,"60":7,"64":3,"66":2,"69":4,"71":4,"72":4,"75":5,"76":6,"80":2,"81":4,"84":3,"120":2,"123":5,"145":3,"154":4,"156":4,"157":4}}],["follows",{"2":{"10":2,"11":2,"12":3,"13":1,"15":2,"33":1,"34":1,"36":1,"37":1,"39":1,"40":1}}],["following",{"2":{"4":1,"18":2,"19":1}}],["forbidden",{"2":{"109":1,"140":4}}],["for",{"0":{"6":1,"7":1,"11":1,"14":1,"30":1,"34":1,"37":1,"38":1,"40":1,"44":1,"45":1,"51":1,"52":1,"66":1,"86":1,"87":1,"142":1,"147":1,"148":1,"159":1,"171":1},"1":{"15":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1},"2":{"0":3,"1":2,"4":1,"6":1,"10":2,"12":3,"13":2,"14":2,"19":4,"25":1,"27":3,"33":2,"34":3,"37":1,"40":1,"61":3,"65":2,"76":2,"81":3,"85":4,"94":1,"98":1,"116":1,"120":1,"123":1,"145":2,"146":4,"147":1,"148":1,"181":1,"182":1}}],["flat",{"2":{"3":1,"6":8}}],["first",{"2":{"98":1}}],["fix",{"2":{"41":2,"48":2,"55":2,"59":2,"63":2,"68":2,"74":2,"79":2,"83":2,"95":2,"114":2,"119":2,"122":2,"129":2,"132":2,"144":2,"153":2}}],["files",{"0":{"11":1,"38":1},"2":{"3":1,"13":1,"15":4,"34":1}}],["file",{"2":{"3":1,"10":1,"14":1,"25":1,"27":1}}],["find",{"2":{"1":1}}],["feature",{"2":{"1":1,"6":1,"7":1,"14":1}}],["features",{"0":{"1":1}}],["from",{"2":{"0":2,"3":1,"19":1,"180":1}}],["hidden",{"2":{"140":2}}],["hello",{"2":{"84":2}}],["here",{"2":{"3":2}}],["how",{"2":{"20":1}}],["however",{"2":{"19":2}}],["has",{"2":{"19":1,"27":2,"30":2,"116":1,"127":1,"160":1,"161":1,"172":1,"173":1}}],["have",{"2":{"14":1,"64":1,"65":1}}],["handling",{"2":{"4":1}}],["https",{"2":{"159":1,"171":1}}],["http",{"2":{"3":1}}],["htmlvalue",{"2":{"160":1}}],["htmlendtag",{"0":{"170":1},"2":{"159":1,"167":1,"170":2}}],["htmlelement",{"0":{"167":1},"2":{"159":3,"162":1,"163":1,"167":3}}],["htmlattribute",{"0":{"169":1},"2":{"159":1,"168":2,"169":2}}],["htmlstarttag",{"0":{"168":1},"2":{"159":1,"167":1,"168":2}}],["htmltext",{"0":{"166":1},"2":{"159":3,"162":1,"163":1,"166":2,"167":1}}],["htmltoken",{"0":{"160":1},"2":{"159":1,"160":1,"165":2,"168":2,"169":3,"170":2}}],["htmlcomment",{"0":{"165":1},"2":{"159":3,"162":1,"163":1,"165":2,"167":1}}],["htmldocumenttype",{"0":{"164":1},"2":{"159":1,"164":2}}],["htmldocumentfragment",{"0":{"163":1},"2":{"159":1,"163":2}}],["htmldocument",{"0":{"162":1},"2":{"159":1,"162":2}}],["htmlnode",{"0":{"161":1},"2":{"159":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1}}],["html5",{"2":{"46":1,"53":1,"77":1,"133":1,"134":1}}],["html",{"0":{"59":1,"63":1,"68":1,"74":1,"79":1,"83":1,"93":2,"108":1,"119":1,"136":1,"159":1,"182":1},"1":{"60":1,"61":1,"62":1,"64":1,"65":1,"66":1,"67":1,"69":1,"70":1,"71":1,"72":1,"73":1,"75":1,"76":1,"77":1,"78":1,"80":1,"81":1,"82":1,"84":1,"85":1,"86":1,"87":1,"88":1,"109":1,"110":1,"120":1,"121":1,"137":1,"138":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1},"2":{"0":2,"1":1,"3":4,"4":4,"6":2,"7":2,"13":1,"20":2,"29":2,"30":4,"34":1,"41":2,"42":1,"44":1,"45":1,"46":2,"48":2,"49":2,"51":1,"52":1,"53":2,"55":2,"56":1,"59":1,"60":10,"61":3,"63":1,"64":6,"65":2,"66":4,"68":2,"69":7,"70":1,"71":6,"72":6,"74":2,"75":8,"76":9,"77":1,"79":2,"80":5,"81":7,"83":2,"84":6,"85":1,"86":2,"87":2,"93":22,"95":2,"96":2,"98":1,"99":1,"100":1,"102":2,"103":1,"105":1,"106":1,"108":2,"109":4,"111":1,"112":1,"114":1,"115":1,"116":3,"119":2,"120":4,"122":1,"123":1,"126":1,"129":1,"130":1,"132":1,"133":1,"136":2,"137":4,"140":1,"142":1,"144":1,"145":1,"147":1,"148":1,"151":2,"153":1,"154":1,"156":1,"157":1,"159":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"182":4}}],["href=",{"2":{"0":2,"10":1}}],["boolean",{"2":{"168":1}}],["both",{"2":{"1":1}}],["blob",{"2":{"159":1,"171":1}}],["blocks",{"2":{"4":2}}],["baz=",{"2":{"96":2}}],["bad",{"2":{"42":1,"49":1,"51":1,"52":1,"56":1,"60":1,"64":1,"66":1,"69":1,"71":1,"72":1,"75":1,"76":1,"80":1,"81":1,"84":1,"96":1,"98":1,"99":1,"100":1,"103":1,"106":1,"109":1,"112":1,"115":1,"120":1,"123":1,"127":1,"130":1,"133":1,"140":1,"145":1,"151":1,"154":1,"156":1,"157":1}}],["barattribute",{"2":{"42":1}}],["bar=",{"2":{"42":1,"96":5,"98":2,"99":1,"100":2}}],["bar",{"2":{"41":2,"42":1,"60":4,"61":2,"64":7,"66":5,"93":2,"96":3,"99":1,"100":1,"123":2}}],["base",{"0":{"90":1},"2":{"6":2,"7":1,"15":1,"90":1,"126":1}}],["bashnpm",{"2":{"2":1}}],["breaks",{"2":{"64":3,"65":2,"66":2,"75":5,"76":10,"80":2,"81":9}}],["break",{"2":{"63":1,"64":5,"65":2,"66":2,"74":1,"75":7,"76":8,"79":1,"80":4,"81":6,"93":3,"96":1}}],["breaking",{"0":{"27":1}}],["br",{"2":{"60":2,"61":2}}],["brackets",{"0":{"71":1,"72":1,"156":1,"157":1},"2":{"59":1,"60":1,"63":1,"64":2,"65":1,"85":1,"93":2}}],["bracket",{"0":{"59":1,"63":1},"1":{"60":1,"61":1,"62":1,"64":1,"65":1,"66":1,"67":1},"2":{"60":8,"61":2,"64":7,"65":7,"66":5,"80":2,"81":4,"93":2}}],["branches",{"2":{"19":2}}],["branching",{"2":{"19":2}}],["but",{"2":{"19":1,"60":7,"64":3,"66":2,"69":4,"71":4,"72":4,"75":5,"76":6,"80":2,"81":4,"84":3,"112":1,"133":1,"145":3,"154":4,"156":4,"157":4}}],["b",{"2":{"19":7,"86":1,"87":1,"123":6}}],["by",{"2":{"11":1,"23":1,"41":1,"48":1,"49":2,"51":2,"52":1,"55":1,"59":1,"63":1,"68":1,"74":1,"79":1,"83":1,"95":1,"114":1,"119":1,"122":1,"129":1,"132":1,"144":1,"153":1}}],["b>",{"2":{"0":2}}],["better",{"2":{"133":1}}],["between",{"0":{"71":1,"72":1,"156":1,"157":1},"2":{"96":1,"120":1}}],["been",{"2":{"19":1,"127":1}}],["before",{"2":{"14":2,"59":1,"60":8,"63":1,"64":4,"65":4,"66":2,"69":2,"71":2,"72":2,"74":1,"75":4,"76":9,"79":1,"80":2,"81":8,"93":4,"120":2,"123":5,"154":2,"156":2,"157":2}}],["best",{"0":{"91":1},"2":{"6":1,"7":1,"29":2,"91":1,"92":1,"93":1,"105":1,"111":1,"126":1,"129":1}}],["below",{"2":{"0":1,"14":1}}],["be",{"2":{"0":1,"10":1,"11":1,"17":1,"18":2,"19":1,"42":2,"49":2,"51":2,"52":1,"56":2,"96":4,"98":2,"99":1,"100":1,"133":1,"180":1}}],["6",{"2":{"0":1,"7":1,"145":1}}],["range",{"2":{"160":2,"161":2,"172":2,"173":2}}],["run",{"2":{"24":1}}],["runs",{"2":{"24":2}}],["rule",{"0":{"28":1,"42":1,"44":1,"45":1,"49":1,"51":1,"52":1,"56":1,"60":1,"64":1,"66":1,"69":1,"75":1,"80":1,"84":1,"86":1,"87":1,"96":1,"103":1,"106":1,"109":1,"112":1,"115":1,"120":1,"123":1,"127":1,"130":1,"133":1,"137":1,"140":1,"142":1,"145":1,"147":1,"148":1,"151":1,"154":1},"1":{"29":1,"30":1},"2":{"4":10,"19":1,"27":1,"29":2,"30":2,"41":2,"42":1,"47":1,"48":2,"49":1,"54":1,"55":2,"56":1,"58":1,"59":2,"60":1,"62":1,"63":2,"64":1,"65":1,"67":1,"68":2,"69":1,"73":1,"74":2,"75":1,"78":1,"79":2,"80":1,"82":1,"83":2,"84":1,"88":1,"90":1,"91":1,"92":1,"93":1,"94":2,"95":2,"96":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":2,"115":1,"116":1,"117":1,"118":1,"119":2,"120":1,"121":1,"122":2,"123":1,"124":1,"125":1,"126":1,"127":2,"128":1,"129":2,"130":1,"131":1,"132":2,"133":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"143":1,"144":2,"145":1,"149":1,"150":1,"151":1,"152":1,"153":2,"154":1,"158":1}}],["rulesets",{"2":{"3":1}}],["rules",{"0":{"8":1,"11":1,"19":1,"31":1,"38":1,"89":1,"90":1},"1":{"90":1,"91":1,"92":1,"93":1,"94":1},"2":{"3":3,"6":6,"7":5,"8":1,"15":1,"17":1,"19":1,"27":2,"36":1,"39":1,"91":1,"92":2,"93":2,"94":2}}],["return",{"2":{"159":1,"171":1}}],["requires",{"2":{"50":5,"61":3}}],["require",{"2":{"33":1,"59":1,"63":1,"65":2,"74":1,"76":2,"79":1,"81":2,"93":4}}],["rename",{"0":{"31":1},"2":{"27":1}}],["read",{"2":{"133":1}}],["reading",{"0":{"46":1,"53":1,"57":1,"77":1,"117":1,"124":1,"134":1}}],["readme",{"2":{"24":1}}],["readability",{"0":{"92":1,"93":1},"2":{"1":1,"6":2,"7":2,"96":1}}],["results",{"2":{"19":1}}],["resig",{"2":{"0":1}}],["replace",{"2":{"18":1}}],["reporting",{"2":{"27":1}}],["reported",{"2":{"14":2,"41":1,"48":1,"55":1,"59":1,"63":1,"68":1,"74":1,"79":1,"83":1,"95":1,"114":1,"119":1,"122":1,"129":1,"132":1,"144":1,"153":1}}],["reports",{"0":{"11":1,"38":1},"2":{"103":1,"106":1,"109":1,"127":1,"137":1,"140":1,"151":1}}],["rewrite",{"2":{"17":1}}],["recommended",{"0":{"92":1,"93":1},"2":{"3":3,"6":4,"7":4,"14":2,"15":3,"24":1,"30":2,"41":1,"48":1,"55":1,"59":1,"63":1,"68":1,"74":1,"79":1,"83":1,"92":1,"93":2,"95":1,"102":1,"105":3,"108":1,"111":3,"114":3,"119":1,"122":3,"126":3,"129":3,"132":1,"136":1,"144":3,"153":3}}],["rights",{"2":{"25":1}}],["righted",{"2":{"0":1}}],["right",{"2":{"0":1,"85":1}}],["aparsing",{"2":{"127":1}}],["applied",{"2":{"12":1}}],["array",{"2":{"160":1,"161":1,"172":1,"173":1}}],["arrowevaluatetag",{"0":{"142":1},"2":{"141":1,"142":1}}],["arr",{"2":{"123":2,"145":4,"147":2,"148":2}}],["arguments",{"2":{"103":1}}],["around",{"2":{"93":1,"132":1,"133":2}}],["are",{"2":{"6":1,"7":1,"19":2,"81":2,"109":1,"120":1,"123":1,"140":4}}],["at",{"2":{"91":1,"129":1,"130":1}}],["attr2=",{"2":{"86":1,"87":1}}],["attr1=",{"2":{"86":1,"87":1}}],["attributes",{"0":{"95":1,"102":1},"1":{"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"103":1,"104":1},"2":{"46":1,"48":1,"49":1,"65":1,"85":1,"93":5,"95":1,"96":8,"97":1,"98":3,"99":3,"100":3,"102":1,"103":4,"120":1,"168":1}}],["attribute",{"0":{"41":1,"48":1,"86":1,"87":1,"132":1},"1":{"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"133":1,"134":1,"135":1},"2":{"20":1,"41":1,"42":4,"43":1,"44":1,"45":1,"49":3,"50":1,"51":3,"52":2,"53":1,"64":1,"65":2,"85":2,"86":1,"87":1,"93":5,"94":1,"96":4,"98":1,"99":1,"100":1,"103":2,"116":1,"132":1,"133":3,"139":1,"140":5,"169":1}}],["attention",{"0":{"4":1}}],["aims",{"2":{"69":1,"96":1,"120":1,"123":1,"154":1}}],["autofix",{"2":{"20":1}}],["automatically",{"2":{"12":1,"41":1,"48":1,"55":1,"59":1,"63":1,"68":1,"74":1,"79":1,"83":1,"95":1,"114":1,"119":1,"122":1,"129":1,"132":1,"144":1,"153":1}}],["avoid",{"2":{"19":1}}],["abc",{"2":{"42":3,"44":1,"48":2,"93":2,"103":2,"127":2}}],["about",{"2":{"20":1,"64":1}}],["above",{"2":{"6":3,"7":3}}],["able",{"2":{"17":1}}],["after",{"2":{"14":2,"69":2,"71":2,"72":2,"74":1,"75":3,"76":9,"79":1,"80":2,"81":8,"93":2,"154":2,"156":2,"157":2}}],["ast",{"0":{"159":1,"171":1},"1":{"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1},"2":{"159":2,"171":2,"181":2,"182":2}}],["asts",{"2":{"19":2}}],["assigned",{"2":{"19":1}}],["as",{"2":{"3":2,"10":2,"11":2,"12":3,"13":1,"15":2,"19":2,"33":1,"34":1,"36":1,"37":1,"39":1,"40":1,"65":1,"174":1,"175":1,"176":1}}],["addtargetextensions",{"2":{"33":1}}],["add",{"2":{"3":2}}],["always",{"0":{"66":1,"71":1,"156":1},"2":{"61":13,"65":2,"66":1,"70":2,"71":1,"76":4,"81":4,"155":2,"156":1}}],["already",{"2":{"19":1,"127":1}}],["allowed",{"2":{"115":3}}],["allows",{"2":{"98":1,"116":3,"133":1}}],["allowfirstline",{"0":{"98":1},"2":{"97":1,"98":1}}],["all",{"0":{"8":1,"89":1},"1":{"90":1,"91":1,"92":1,"93":1,"94":1},"2":{"6":2,"7":2,"8":1,"10":1,"19":1,"36":1,"37":1,"41":1,"48":1,"55":1,"59":1,"63":1,"68":1,"74":1,"79":1,"83":1,"91":1,"92":2,"93":2,"95":1,"96":1,"102":1,"105":2,"108":1,"111":2,"114":2,"119":1,"122":2,"126":2,"129":2,"132":1,"136":1,"139":1,"144":2,"150":1,"153":2}}],["also",{"2":{"3":1,"11":1,"14":2,"19":1}}],["alpha",{"2":{"0":1}}],["any",{"2":{"116":3,"137":1}}],["another",{"2":{"4":1}}],["an",{"2":{"1":1,"6":1,"7":1,"14":1,"18":1,"19":1,"96":1,"112":1,"116":1,"160":1,"161":1,"172":1,"173":1,"181":1,"182":1}}],["and",{"0":{"71":1,"72":1,"156":1,"157":1},"2":{"0":1,"1":2,"6":2,"7":1,"18":1,"19":1,"24":2,"25":1,"41":1,"48":1,"55":1,"59":1,"63":1,"68":1,"74":2,"75":1,"76":6,"79":2,"80":1,"81":7,"83":1,"92":1,"93":3,"95":1,"96":1,"102":1,"105":1,"108":1,"111":1,"114":1,"119":1,"122":1,"126":1,"129":1,"132":1,"133":1,"134":1,"136":1,"144":1,"153":1}}],["a>",{"2":{"0":2,"10":1}}],["a",{"2":{"0":2,"10":2,"14":2,"18":2,"19":16,"59":1,"60":3,"63":1,"64":1,"65":2,"74":1,"75":1,"79":1,"80":1,"81":2,"84":1,"85":1,"86":1,"87":1,"93":4,"96":6,"98":1,"99":2,"100":2,"112":3,"120":1,"123":6,"127":6,"145":1,"146":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"174":1,"175":1,"176":1}}],["1st",{"2":{"160":1,"161":1,"172":1,"173":1}}],["100",{"2":{"45":2}}],["14",{"0":{"26":1,"30":1,"34":1,"37":1,"40":1},"1":{"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1},"2":{"21":1,"34":1,"37":1,"40":1}}],["13",{"0":{"26":1,"29":1,"33":1,"36":1,"39":1},"1":{"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1},"2":{"21":1,"33":1,"36":1,"39":1}}],["123",{"2":{"3":3,"20":5,"44":1,"45":1,"61":1,"66":1,"76":1,"81":1,"86":1,"87":1,"98":2,"99":1,"100":1,"112":2,"123":2,"127":3,"140":1,"142":2,"145":2,"147":2,"148":2}}],["1",{"0":{"86":2,"87":1},"2":{"0":2,"19":6,"64":3,"66":2,"69":4,"71":4,"72":4,"75":5,"76":6,"80":2,"81":4,"84":1,"85":2,"86":2,"87":1,"96":6,"97":2,"98":2,"99":4,"100":4,"123":5,"146":2,"154":4,"156":4,"157":2}}],["2nd",{"2":{"160":1,"161":1,"172":1,"173":1}}],["2",{"0":{"87":1,"148":1},"2":{"0":1,"19":6,"36":1,"39":1,"84":3,"85":1,"86":1,"87":2,"96":5,"98":2,"99":1,"100":2,"123":3,"145":3,"146":1,"147":1,"148":2,"160":1,"161":1,"172":1,"173":1}}],[">the",{"2":{"140":4,"151":1}}],[">unexpected",{"2":{"137":1}}],[">html",{"2":{"109":1}}],[">empty",{"2":{"106":1,"112":1}}],[">expected",{"2":{"60":7,"69":2,"71":2,"72":2,"80":1,"81":2,"112":1,"154":2,"156":2,"157":2}}],[">content",{"2":{"80":1,"81":1}}],[">",{"2":{"0":16,"10":6,"11":1,"12":12,"14":2,"18":4,"19":13,"42":6,"44":3,"45":3,"49":6,"51":6,"52":6,"56":5,"60":18,"61":9,"64":12,"66":8,"69":6,"71":6,"72":5,"75":11,"76":10,"80":5,"81":4,"84":5,"86":3,"87":3,"96":9,"98":5,"99":5,"100":5,"103":5,"106":5,"109":2,"112":7,"115":7,"120":7,"123":5,"127":5,"130":5,"133":5,"137":1,"140":9,"142":6,"145":11,"147":6,"148":6,"151":5,"154":6,"156":6,"157":6}}],["=text",{"2":{"157":1}}],["=expected",{"2":{"154":2,"156":2,"157":2}}],["=equal",{"2":{"133":1}}],["=prop",{"2":{"92":1,"153":1}}],["===",{"2":{"123":3}}],["==",{"2":{"0":1}}],["=",{"0":{"171":1},"1":{"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1},"2":{"0":9,"3":1,"4":1,"10":3,"12":4,"14":3,"18":6,"19":15,"33":2,"42":2,"91":3,"92":1,"93":1,"94":2,"106":1,"111":1,"112":3,"123":4,"127":4,"129":2,"130":2,"132":1,"139":1,"140":3,"145":4,"147":2,"148":2,"150":1,"151":1,"153":1,"154":3,"156":3,"157":2,"159":1,"171":1,"181":1}}],["eqtoken",{"2":{"169":1}}],["equal",{"0":{"132":1},"1":{"133":1,"134":1,"135":1},"2":{"93":2,"132":1,"133":4,"134":1}}],["easier",{"2":{"133":1}}],["each",{"2":{"94":1}}],["elements",{"2":{"57":1,"65":2,"81":2,"96":1}}],["element>",{"2":{"56":1}}],["element",{"0":{"55":1},"1":{"56":1,"57":1,"58":1},"2":{"55":2,"56":4,"65":3,"80":2,"81":7,"93":3,"167":1,"168":1,"170":1}}],["else",{"2":{"19":3,"127":1}}],["either",{"0":{"52":1},"2":{"50":2,"52":1}}],["embedding",{"2":{"46":1}}],["empty",{"0":{"105":1},"1":{"106":1,"107":1},"2":{"4":1,"91":2,"105":1,"106":5}}],["entities",{"2":{"133":1}}],["enabling",{"0":{"90":1}}],["enabled",{"2":{"127":1}}],["enables",{"2":{"94":1}}],["enable",{"2":{"1":2,"6":3,"7":2,"90":1,"94":1}}],["end",{"2":{"61":1,"91":1,"129":1,"130":1,"160":1,"161":1,"170":1,"172":1,"173":1,"174":1,"175":1,"176":1,"178":1}}],["endtag",{"2":{"61":3,"81":2,"167":1}}],["enclosed",{"2":{"49":2,"51":2,"52":1}}],["enforces",{"2":{"42":1,"49":1,"56":1,"60":1,"64":1,"75":1,"80":1,"84":1,"145":1}}],["enforce",{"2":{"41":1,"48":1,"55":1,"65":1,"68":1,"69":1,"76":2,"81":2,"83":1,"91":1,"92":3,"93":7,"95":1,"96":1,"144":1,"153":1,"154":1}}],["editor",{"0":{"20":1},"2":{"20":1}}],["e",{"2":{"12":1,"19":3,"61":3}}],["escapes",{"2":{"176":1}}],["escape",{"0":{"150":1},"1":{"151":1,"152":1},"2":{"12":3,"50":1,"94":2,"150":1,"151":4}}],["eslintrc",{"0":{"7":1},"2":{"3":2,"10":1,"11":1,"12":1,"13":1,"15":1,"33":1,"34":1,"36":1,"37":1,"39":1,"40":1}}],["eslint",{"0":{"0":1,"6":1,"90":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"0":1,"1":2,"2":2,"3":4,"6":3,"7":2,"11":2,"14":2,"15":1,"20":4,"27":1,"33":1,"42":1,"44":1,"45":1,"49":1,"51":1,"52":1,"56":1,"60":1,"61":1,"64":1,"66":1,"69":1,"71":1,"72":1,"75":1,"76":1,"80":1,"81":1,"84":1,"86":1,"87":1,"96":1,"98":1,"99":1,"100":1,"103":1,"106":1,"109":1,"112":1,"115":1,"117":1,"120":1,"123":1,"124":1,"127":2,"130":1,"133":1,"137":1,"140":1,"142":1,"145":1,"147":1,"148":1,"151":1,"154":1,"156":1,"157":1,"159":1,"171":1}}],["evaluated",{"2":{"174":1}}],["evaluate",{"2":{"12":3,"106":1,"140":2,"154":1}}],["even",{"2":{"0":1,"19":1}}],["errors",{"2":{"19":1,"90":1,"126":1,"127":1}}],["error",{"0":{"18":1,"126":1},"1":{"127":1,"128":1},"2":{"3":1,"14":3,"18":1,"19":2,"20":2,"42":1,"43":1,"44":1,"45":1,"49":1,"50":1,"51":1,"52":1,"56":1,"60":1,"61":2,"64":1,"65":1,"66":1,"69":1,"70":1,"71":1,"72":1,"75":1,"76":2,"80":1,"81":2,"84":1,"85":1,"86":1,"87":1,"90":1,"94":1,"96":1,"97":1,"98":1,"99":1,"100":1,"103":1,"106":1,"109":1,"112":1,"115":1,"116":1,"120":1,"123":1,"127":6,"130":1,"133":1,"137":1,"140":1,"141":1,"142":1,"145":1,"146":1,"147":1,"148":1,"151":1,"154":1,"155":1,"156":1,"157":1}}],["ejs",{"2":{"1":1,"6":2,"12":3,"13":2,"33":2,"34":2}}],["exit",{"2":{"159":1,"171":1}}],["exist",{"2":{"103":1}}],["exceptions",{"2":{"116":1}}],["exceed",{"2":{"96":1}}],["extentions",{"0":{"32":1},"1":{"33":1,"34":1}}],["extensions",{"0":{"13":1}}],["extension",{"2":{"12":1,"20":1,"27":1}}],["extends",{"2":{"3":1,"12":1,"15":4,"90":1,"91":1,"92":1,"93":1}}],["ex",{"2":{"12":1,"41":1,"48":1,"55":1,"59":1,"68":1,"91":3,"92":2,"93":10,"94":2,"102":1,"105":1,"108":1,"111":1,"119":1,"122":1,"129":1,"132":1,"136":1,"139":1,"150":1,"153":1}}],["expressionend",{"2":{"174":2,"175":2,"176":2}}],["expression",{"0":{"156":1,"157":1},"2":{"91":2,"111":1,"112":2,"129":1,"130":1}}],["expressionstart",{"2":{"174":2,"175":2,"176":2}}],["expressions",{"2":{"4":1,"112":1}}],["expect",{"0":{"71":1,"72":1,"156":1,"157":1}}],["expected",{"2":{"49":1,"51":1,"64":3,"66":2,"69":2,"71":2,"72":2,"75":4,"76":5,"84":3,"145":3}}],["experience",{"0":{"91":1},"2":{"6":1,"7":1}}],["experimental",{"2":{"1":1,"6":1,"7":1,"14":1}}],["exports",{"2":{"3":1,"33":1}}],["export",{"2":{"3":1,"18":2,"159":1,"171":1}}],["example",{"2":{"3":2,"12":2,"13":1,"14":1,"33":1,"34":1,"94":1,"181":1,"182":1}}],["examples",{"0":{"44":1,"45":1,"51":1,"52":1,"66":1,"86":1,"87":1,"142":1,"147":1,"148":1},"2":{"0":1}}],["last",{"2":{"64":1,"65":2,"103":1}}],["language",{"2":{"20":1}}],["location",{"2":{"64":1,"160":2,"161":2,"172":2,"173":2}}],["logo",{"2":{"49":3,"51":3,"52":3}}],["logically",{"2":{"19":1}}],["log",{"2":{"19":4}}],["lodashtemplate",{"2":{"3":2}}],["lodash",{"0":{"0":1,"41":1,"48":1,"55":1,"59":1,"63":1,"68":1,"74":1,"79":1,"83":1,"95":1,"102":1,"105":1,"108":1,"111":1,"114":1,"119":1,"122":1,"126":1,"129":1,"132":1,"136":1,"139":1,"144":1,"150":1,"153":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"56":1,"57":1,"58":1,"60":1,"61":1,"62":1,"64":1,"65":1,"66":1,"67":1,"69":1,"70":1,"71":1,"72":1,"73":1,"75":1,"76":1,"77":1,"78":1,"80":1,"81":1,"82":1,"84":1,"85":1,"86":1,"87":1,"88":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"103":1,"104":1,"106":1,"107":1,"109":1,"110":1,"112":1,"113":1,"115":1,"116":1,"117":1,"118":1,"120":1,"121":1,"123":1,"124":1,"125":1,"127":1,"128":1,"130":1,"131":1,"133":1,"134":1,"135":1,"137":1,"138":1,"140":1,"141":1,"142":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"151":1,"152":1,"154":1,"155":1,"156":1,"157":1,"158":1},"2":{"0":1,"1":1,"2":1,"3":3,"4":9,"7":7,"10":1,"11":1,"12":2,"13":1,"14":4,"15":5,"29":2,"30":2,"31":4,"33":1,"34":1,"36":1,"37":1,"39":1,"40":1,"41":2,"42":3,"43":1,"44":1,"45":1,"48":2,"49":3,"50":1,"51":3,"52":2,"55":2,"56":3,"59":2,"60":8,"61":2,"63":2,"64":4,"65":2,"66":3,"68":2,"69":5,"70":1,"71":5,"72":5,"74":2,"75":6,"76":8,"79":2,"80":3,"81":6,"83":2,"84":4,"85":1,"86":1,"87":1,"90":2,"91":4,"92":5,"93":16,"94":3,"95":2,"96":4,"97":1,"98":2,"99":2,"100":2,"102":2,"103":3,"105":5,"106":3,"108":2,"109":2,"111":5,"112":3,"114":4,"115":4,"116":1,"119":2,"120":3,"122":4,"123":6,"126":6,"127":3,"129":5,"130":2,"132":2,"133":2,"136":2,"137":2,"139":1,"140":5,"141":1,"142":1,"144":4,"145":4,"146":1,"147":1,"148":1,"150":1,"151":2,"153":4,"154":5,"155":1,"156":5,"157":5,"159":1,"171":1}}],["less",{"2":{"133":1}}],["level",{"2":{"65":1,"146":1}}],["let",{"2":{"18":1,"145":2,"147":1,"148":1}}],["length",{"2":{"0":1,"10":1,"145":2,"147":1,"148":1}}],["lt",{"0":{"171":1},"1":{"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1},"2":{"4":1,"41":3,"48":3,"55":3,"59":4,"61":3,"68":2,"91":4,"92":3,"93":21,"94":4,"102":1,"105":1,"108":1,"111":1,"119":1,"122":1,"129":2,"132":2,"136":1,"139":2,"150":2,"153":2,"181":1}}],["lib",{"2":{"159":1,"171":1}}],["limits",{"2":{"96":1}}],["limitations",{"0":{"17":1},"1":{"18":1,"19":1},"2":{"14":1,"17":1,"25":1}}],["license",{"0":{"25":1},"2":{"25":2}}],["linters",{"2":{"20":1}}],["lines",{"2":{"100":1}}],["line",{"0":{"95":1},"1":{"96":1,"97":1,"98":1,"99":1,"100":1,"101":1},"2":{"4":2,"41":1,"48":1,"55":1,"59":1,"63":2,"64":10,"65":8,"66":4,"68":1,"74":2,"75":12,"76":19,"79":2,"80":6,"81":18,"83":1,"93":5,"95":2,"96":12,"97":1,"98":5,"99":5,"100":4,"114":1,"119":1,"122":1,"129":1,"132":1,"144":1,"153":1}}],["literal",{"2":{"12":1}}],["li>",{"2":{"0":2,"10":2}}],["like",{"2":{"0":1,"12":1,"14":1}}],["c",{"2":{"86":1,"87":1,"123":2}}],["curly",{"0":{"71":1,"72":1,"156":1,"157":1}}],["custom",{"2":{"46":1,"57":1}}],["customizing",{"2":{"27":1}}],["customize",{"0":{"12":1,"13":1,"32":1},"1":{"33":1,"34":1}}],["clauses",{"2":{"146":1}}],["class",{"2":{"93":1,"132":1,"133":1}}],["class=abc",{"2":{"48":1,"93":1}}],["class=",{"2":{"0":4,"48":2,"60":4,"64":7,"66":5,"80":4,"81":4,"84":2,"86":1,"87":1,"93":3,"115":2,"120":4,"132":1,"133":1,"140":1,"145":2,"147":1,"148":1}}],["closebracket",{"0":{"86":1,"87":1},"2":{"85":2,"86":1,"87":1}}],["closing",{"0":{"59":1,"63":1},"1":{"60":1,"61":1,"62":1,"64":1,"65":1,"66":1,"67":1},"2":{"59":1,"60":9,"61":3,"63":1,"64":9,"65":6,"66":5,"80":1,"81":2,"93":4}}],["css",{"2":{"46":1,"53":1}}],["children",{"2":{"162":1,"163":1,"167":1}}],["chars",{"2":{"177":2,"178":2}}],["characters",{"2":{"116":3}}],["changed",{"2":{"27":2}}],["changes",{"0":{"27":1}}],["checks",{"2":{"96":1}}],["check",{"2":{"14":1}}],["checking",{"2":{"0":1}}],["capitalization",{"2":{"46":1}}],["case",{"2":{"42":3,"56":3,"146":1}}],["casing",{"0":{"41":1,"55":1},"1":{"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"56":1,"57":1,"58":1},"2":{"41":1,"42":4,"43":1,"44":1,"45":1,"55":1,"56":4,"93":4}}],["category",{"2":{"29":2,"30":2,"91":1,"92":1,"93":1,"94":1}}],["categories",{"0":{"28":1},"1":{"29":1,"30":1},"2":{"27":1,"92":1,"93":1}}],["cause",{"2":{"19":1}}],["cannot",{"2":{"18":1}}],["can",{"2":{"0":1,"1":1,"11":1,"18":1,"19":2,"41":1,"48":1,"55":1,"59":1,"63":1,"65":1,"68":1,"74":1,"79":1,"83":1,"95":1,"114":1,"119":1,"122":1,"129":1,"132":1,"144":1,"153":1,"159":1,"171":1,"180":1}}],["create",{"2":{"3":1,"159":1,"171":1}}],["coverage",{"2":{"24":1}}],["cover",{"2":{"19":1}}],["com",{"2":{"159":1,"171":1}}],["command",{"2":{"41":1,"48":1,"55":1,"59":1,"63":1,"68":1,"74":1,"79":1,"83":1,"95":1,"114":1,"119":1,"122":1,"129":1,"132":1,"144":1,"153":1}}],["commentclose",{"2":{"165":1}}],["commentopen",{"2":{"165":1}}],["commentexpected",{"2":{"75":1,"76":1}}],["comment",{"0":{"68":1,"71":1,"72":1,"74":1},"1":{"69":1,"70":1,"71":1,"72":1,"73":1,"75":1,"76":1,"77":1,"78":1},"2":{"10":1,"12":1,"68":3,"69":9,"70":1,"71":8,"72":7,"74":1,"75":11,"76":13,"93":7,"108":1,"109":1,"137":1,"165":1}}],["comments",{"0":{"108":1,"136":1},"1":{"109":1,"110":1,"137":1,"138":1},"2":{"3":1,"29":2,"30":2,"76":8,"77":1,"93":4,"108":1,"109":3,"116":1,"136":1,"137":3,"182":1}}],["components",{"2":{"57":1}}],["compared",{"2":{"19":1}}],["complex",{"2":{"18":1}}],["complete",{"2":{"12":1}}],["correct",{"0":{"90":1},"2":{"6":2,"7":1}}],["context",{"2":{"159":1,"171":1}}],["contentexpected",{"2":{"80":1,"81":2}}],["content",{"0":{"74":1,"79":1},"1":{"75":1,"76":1,"77":1,"78":1,"80":1,"81":1,"82":1},"2":{"75":6,"76":8,"80":5,"81":7,"93":2,"115":2}}],["contents",{"2":{"0":1,"74":1,"75":1,"79":1,"80":1,"81":8,"93":2}}],["contributing",{"0":{"22":1,"179":1},"1":{"23":1,"24":1,"180":1,"181":1,"182":1},"2":{"22":1}}],["conditions",{"2":{"19":1}}],["considered",{"2":{"96":1}}],["consistent",{"2":{"19":1,"60":1,"83":1,"84":1,"92":1,"93":1,"144":1,"145":1}}],["console",{"2":{"19":4}}],["const",{"2":{"14":1,"19":14,"33":1,"127":4,"159":1,"171":1}}],["confusing",{"2":{"19":1}}],["confuse",{"2":{"19":1}}],["configs",{"0":{"5":1},"1":{"6":1,"7":1},"2":{"3":1,"6":9,"7":1}}],["config",{"0":{"6":1},"2":{"3":1,"6":1,"7":1}}],["configuration",{"2":{"24":1,"27":2,"65":2,"76":2,"81":3,"137":1}}],["configuring",{"0":{"15":1},"2":{"3":1}}],["configure",{"2":{"3":1,"15":1}}],["code",{"2":{"0":1,"6":2,"7":2,"20":1,"174":1,"175":1,"176":1}}],["two",{"2":{"96":1}}],["type=",{"2":{"93":1,"119":1,"120":3}}],["type",{"2":{"85":3,"146":3,"159":1,"162":1,"163":1,"164":2,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"174":1,"175":1,"176":1,"177":1,"178":1}}],["typescript",{"0":{"14":1},"1":{"15":1},"2":{"1":1,"15":2}}],["traverse",{"0":{"181":1,"182":1},"2":{"181":1,"182":1}}],["traversemicrotemplates",{"2":{"171":1,"181":1}}],["traversedocumentnodes",{"2":{"159":1,"182":1}}],["true",{"0":{"45":1,"142":1},"2":{"19":5,"20":1,"43":1,"45":1,"116":3,"142":1}}],["tries",{"2":{"19":1}}],["try",{"2":{"18":1}}],["tsinterface",{"2":{"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"174":1,"175":1,"176":1,"177":1,"178":1}}],["tsextend",{"2":{"160":1,"161":1,"172":1,"173":1}}],["ts",{"2":{"15":1,"159":1,"171":1}}],["t",{"2":{"14":1,"76":2,"81":2}}],["task",{"2":{"93":1,"136":1}}],["tab",{"2":{"85":3,"146":3}}],["tabs",{"2":{"11":1,"39":1,"40":1}}],["target",{"0":{"13":1,"32":1},"1":{"33":1,"34":1},"2":{"27":1}}],["tagclose",{"2":{"168":1,"170":1}}],["tagopen",{"2":{"168":1,"170":1}}],["tag",{"0":{"10":1,"35":1,"105":1,"119":1,"139":2,"153":1},"1":{"36":1,"37":1,"38":1,"39":1,"40":1,"106":1,"107":1,"120":1,"121":1,"140":2,"141":2,"142":2,"143":2,"154":1,"155":1,"156":1,"157":1,"158":1},"2":{"1":1,"4":2,"11":1,"59":1,"63":1,"64":1,"91":2,"92":3,"93":3,"94":6,"99":1,"100":1,"105":1,"106":5,"120":3,"139":2,"140":20,"141":2,"142":2,"144":1,"145":1,"146":1,"153":1,"154":5,"156":5,"157":5,"168":1,"170":1,"174":3,"175":3,"176":3,"177":2,"178":2,"181":2}}],["tags",{"2":{"1":1,"4":1,"60":1,"61":3,"92":1,"93":1,"114":1,"119":1}}],["top",{"2":{"146":1}}],["together",{"2":{"133":1}}],["todo",{"2":{"93":1,"136":1,"137":2}}],["tools",{"0":{"24":1}}],["token",{"0":{"172":1},"2":{"20":2,"171":1,"172":1,"177":1,"178":1}}],["to",{"0":{"26":1},"1":{"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1},"2":{"1":1,"3":1,"6":6,"7":5,"10":1,"12":2,"15":3,"17":3,"18":1,"19":3,"20":1,"21":1,"24":1,"30":2,"31":2,"49":2,"51":2,"52":1,"65":1,"69":1,"70":1,"81":1,"92":1,"96":3,"98":1,"120":1,"123":1,"133":1,"144":1,"145":1,"154":1,"155":1,"176":1,"181":1,"182":1}}],["terms",{"2":{"93":1,"136":1,"137":1}}],["ternary",{"2":{"11":1}}],["tests",{"2":{"24":1}}],["test",{"2":{"24":1,"47":1,"54":1,"58":1,"62":1,"67":1,"73":1,"78":1,"82":1,"88":1,"91":1,"92":1,"101":1,"104":1,"107":1,"110":1,"111":1,"113":1,"118":1,"121":1,"122":1,"125":1,"128":1,"131":1,"135":1,"138":1,"143":1,"149":1,"152":1,"158":1}}],["texts",{"2":{"116":1}}],["textarea",{"2":{"81":2}}],["text3",{"2":{"20":1}}],["text",{"2":{"0":1,"19":1,"20":1,"86":1,"87":1,"91":2,"93":1,"106":1,"112":1,"119":1,"120":3,"129":2,"130":2,"151":2,"154":3,"156":3,"157":2,"166":1}}],["templating",{"2":{"0":1}}],["templatetag",{"0":{"171":1},"1":{"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1},"2":{"181":1}}],["templatesettings",{"2":{"12":4}}],["templates",{"0":{"14":1,"17":1},"1":{"15":1,"18":1,"19":1},"2":{"0":1,"1":3,"6":1,"7":1,"10":1,"15":4,"17":2,"36":1,"37":1,"127":1}}],["template",{"0":{"0":1,"10":1,"11":1,"35":1,"38":1,"41":1,"48":1,"55":1,"59":1,"63":1,"68":1,"74":1,"79":1,"83":1,"93":2,"95":1,"102":1,"105":2,"108":1,"111":2,"114":1,"119":1,"122":1,"126":1,"129":2,"132":1,"136":1,"139":2,"144":1,"150":2,"153":2},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"36":1,"37":1,"38":1,"39":1,"40":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"56":1,"57":1,"58":1,"60":1,"61":1,"62":1,"64":1,"65":1,"66":1,"67":1,"69":1,"70":1,"71":1,"72":1,"73":1,"75":1,"76":1,"77":1,"78":1,"80":1,"81":1,"82":1,"84":1,"85":1,"86":1,"87":1,"88":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"103":1,"104":1,"106":2,"107":2,"109":1,"110":1,"112":2,"113":2,"115":1,"116":1,"117":1,"118":1,"120":1,"121":1,"123":1,"124":1,"125":1,"127":1,"128":1,"130":2,"131":2,"133":1,"134":1,"135":1,"137":1,"138":1,"140":2,"141":2,"142":2,"143":2,"145":1,"146":1,"147":1,"148":1,"149":1,"151":2,"152":2,"154":2,"155":2,"156":2,"157":2,"158":2},"2":{"0":1,"1":2,"2":1,"3":3,"4":11,"6":1,"7":8,"10":2,"11":2,"12":1,"13":1,"14":4,"15":5,"18":1,"19":5,"27":1,"29":2,"30":2,"31":4,"33":1,"34":1,"36":1,"37":1,"39":1,"40":1,"41":2,"42":3,"43":1,"44":1,"45":1,"48":2,"49":3,"50":1,"51":3,"52":2,"55":2,"56":3,"59":2,"60":8,"61":2,"63":2,"64":4,"65":2,"66":3,"68":2,"69":5,"70":1,"71":5,"72":5,"74":2,"75":6,"76":8,"79":2,"80":3,"81":6,"83":2,"84":4,"85":1,"86":1,"87":1,"90":3,"91":10,"92":9,"93":16,"94":8,"95":2,"96":4,"97":1,"98":2,"99":2,"100":2,"102":2,"103":3,"105":6,"106":9,"108":2,"109":2,"111":6,"112":7,"114":5,"115":4,"116":1,"119":2,"120":3,"122":4,"123":6,"126":7,"127":4,"129":6,"130":5,"132":2,"133":2,"136":2,"137":2,"139":2,"140":15,"141":2,"142":2,"144":5,"145":5,"146":2,"147":1,"148":1,"150":2,"151":6,"153":5,"154":11,"155":2,"156":10,"157":10,"159":1,"171":2,"174":1,"175":2,"176":2,"177":1,"178":1,"181":2}}],["than",{"2":{"91":1,"111":1,"112":1}}],["that",{"2":{"19":1,"96":1,"137":1,"140":1,"174":1,"175":1,"176":1}}],["there",{"2":{"96":1}}],["these",{"2":{"19":1}}],["then",{"2":{"19":1}}],["the",{"0":{"10":1,"35":1},"1":{"36":1,"37":1,"38":1,"39":1,"40":1},"2":{"0":2,"1":1,"4":2,"10":4,"11":1,"12":2,"14":3,"15":2,"18":3,"19":6,"25":1,"27":5,"36":1,"37":1,"41":3,"46":1,"48":3,"49":1,"55":3,"59":3,"61":3,"63":3,"64":4,"65":16,"68":3,"74":3,"76":10,"79":3,"80":2,"81":15,"83":3,"84":1,"85":4,"91":3,"92":3,"93":3,"94":1,"95":4,"96":4,"98":1,"99":1,"103":1,"114":4,"115":1,"119":3,"122":3,"129":5,"130":2,"132":3,"137":1,"140":2,"144":3,"145":1,"146":4,"153":3,"159":1,"160":9,"161":9,"171":1,"172":9,"173":9,"174":4,"175":4,"176":4,"177":4,"178":4,"181":1,"182":1}}],["this",{"0":{"44":1,"45":1,"51":1,"52":1,"66":1,"86":1,"87":1,"142":1,"147":1,"148":1},"2":{"0":1,"1":1,"4":2,"6":3,"7":3,"12":1,"14":2,"17":1,"19":3,"23":1,"41":2,"42":1,"48":2,"49":1,"55":2,"56":1,"59":2,"60":1,"63":2,"64":1,"65":2,"68":2,"69":1,"74":2,"75":1,"76":2,"79":2,"80":1,"81":2,"83":2,"84":1,"85":2,"90":1,"91":1,"92":1,"93":1,"94":1,"95":2,"96":1,"102":1,"103":1,"105":1,"106":1,"108":1,"109":1,"111":1,"112":1,"114":2,"115":1,"116":1,"119":2,"120":1,"122":2,"123":1,"126":1,"127":2,"129":2,"130":1,"132":2,"133":1,"136":1,"137":1,"139":1,"140":1,"144":2,"145":1,"146":2,"150":1,"151":1,"153":2,"154":1,"159":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"174":1,"175":1,"176":1,"177":1,"178":1,"180":1}}],["systemid",{"2":{"164":1}}],["syntax",{"2":{"127":1}}],["switchcase",{"2":{"146":2}}],["skiptext",{"2":{"116":2}}],["skipattrvalues",{"2":{"116":2}}],["skipcomments",{"2":{"116":2}}],["should",{"2":{"96":3,"98":1,"99":1,"100":1}}],["signs",{"2":{"93":1,"132":1,"133":3,"134":1}}],["sign",{"0":{"132":1},"1":{"133":1,"134":1,"135":1},"2":{"93":1,"133":2}}],["singleline",{"0":{"99":1},"2":{"65":2,"75":2,"76":3,"81":3,"97":1,"99":1}}],["single",{"0":{"51":1},"2":{"50":5,"51":3,"65":2,"76":1,"81":3,"99":1}}],["svg>",{"2":{"45":1}}],["svg",{"2":{"45":1}}],["same",{"2":{"19":1,"64":1,"65":2}}],["save",{"2":{"2":1}}],["sourcecode",{"2":{"159":1,"171":1,"180":1}}],["source",{"2":{"20":1,"47":2,"54":2,"58":2,"62":2,"67":2,"73":2,"78":2,"82":2,"88":2,"101":2,"104":2,"107":2,"110":2,"113":2,"118":2,"121":2,"125":2,"128":2,"131":2,"135":2,"138":2,"143":2,"149":2,"152":2,"158":2}}],["sourcetype",{"2":{"15":1}}],["so",{"2":{"19":1}}],["some",{"0":{"19":1,"28":1,"31":1},"1":{"29":1,"30":1},"2":{"17":2,"19":1,"27":2,"41":1,"48":1,"55":1,"59":1,"63":1,"68":1,"74":1,"79":1,"83":1,"95":1,"114":1,"119":1,"122":1,"129":1,"132":1,"144":1,"153":1}}],["scripts",{"2":{"19":1}}],["script",{"0":{"17":1,"126":1},"1":{"18":1,"19":1,"127":1,"128":1},"2":{"6":1,"7":1,"14":2,"15":4,"17":1,"18":4,"19":9,"31":2,"90":1,"105":1,"111":1,"114":1,"122":1,"123":1,"126":1,"127":3,"129":1,"144":1,"145":1,"153":1,"174":1}}],["scriptlet",{"0":{"122":1,"144":1},"1":{"123":1,"124":1,"125":1,"145":1,"146":1,"147":1,"148":1,"149":1},"2":{"4":4,"14":2,"31":2,"92":4,"122":1,"123":6,"144":1,"145":4,"146":1,"147":1,"148":1}}],["spacing",{"0":{"59":1,"68":1,"153":1},"1":{"60":1,"61":1,"62":1,"69":1,"70":1,"71":1,"72":1,"73":1,"154":1,"155":1,"156":1,"157":1,"158":1},"2":{"60":9,"61":2,"68":1,"69":6,"70":2,"71":5,"72":5,"92":2,"93":4,"132":1,"133":1,"153":1,"154":6,"155":2,"156":5,"157":5,"181":1}}],["spaced",{"2":{"133":1}}],["space",{"0":{"71":1,"132":1,"156":1},"1":{"133":1,"134":1,"135":1},"2":{"14":2,"59":1,"60":7,"69":4,"71":4,"72":4,"84":1,"93":2,"133":3,"154":4,"156":4,"157":2}}],["spaces",{"0":{"72":1,"119":1,"122":1,"157":1},"1":{"120":1,"121":1,"123":1,"124":1,"125":1},"2":{"4":6,"14":6,"31":2,"61":6,"69":4,"71":4,"72":4,"84":6,"85":1,"92":2,"93":2,"119":1,"120":5,"122":1,"123":11,"124":1,"133":1,"134":1,"145":7,"146":1,"154":4,"156":4,"157":6}}],["specified",{"2":{"93":1,"136":1,"137":1}}],["specification",{"2":{"181":1,"182":1}}],["specific",{"0":{"11":1,"38":1},"2":{"1":1,"10":1,"27":1}}],["special",{"2":{"4":1}}],["stored",{"2":{"174":2,"175":2,"176":2,"177":1,"178":1}}],["string",{"2":{"160":2,"164":3,"165":1,"166":1,"167":1,"169":2,"174":1,"175":1,"176":1,"177":2,"178":2}}],["stringify",{"2":{"14":1}}],["strict",{"2":{"4":1,"33":1}}],["statement",{"2":{"112":1}}],["statements",{"2":{"4":2,"146":1}}],["startindent",{"0":{"147":1,"148":1},"2":{"146":2,"147":1,"148":1}}],["start",{"0":{"139":1},"1":{"140":1,"141":1,"142":1,"143":1},"2":{"61":1,"94":3,"139":1,"140":10,"141":1,"142":1,"160":1,"161":1,"168":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1}}],["starttag",{"2":{"61":3,"81":2,"167":1}}],["standard",{"2":{"11":1}}],["stylistic",{"2":{"4":5}}],["style",{"2":{"0":1,"42":1,"46":1,"48":1,"49":1,"53":2,"56":1,"60":1,"76":2,"77":1,"81":3,"84":2,"93":1,"134":1,"145":2}}],["semicolon",{"2":{"91":1,"129":1,"130":2}}],["semi",{"0":{"129":1},"1":{"130":1,"131":1},"2":{"91":1,"130":2}}],["selfclosing",{"2":{"168":1}}],["selfclosingtag",{"2":{"61":3}}],["self",{"2":{"61":1}}],["selector",{"2":{"20":1}}],["setting",{"2":{"61":3}}],["settings",{"0":{"20":1},"2":{"3":1,"6":2,"7":1,"10":1,"11":1,"20":4,"37":1,"40":1}}],["set",{"2":{"4":2,"10":1,"11":1,"12":4,"13":1,"15":2,"33":1,"34":1,"36":1,"37":1,"39":1,"40":1,"70":1,"155":1}}],["see",{"2":{"3":1,"8":1,"25":1,"159":1,"171":1}}],["sublimelinter",{"2":{"20":3}}],["sublime",{"2":{"20":1}}],["support",{"2":{"12":1}}],["supports",{"2":{"0":1,"1":1,"4":1,"27":1}}],["suppressing",{"2":{"27":1}}],["suppression",{"2":{"11":1}}],["suppress",{"0":{"10":1,"11":1,"35":1,"38":1},"1":{"36":1,"37":1,"38":1,"39":1,"40":1}}],["such",{"2":{"3":2}}],["src=",{"2":{"0":1,"49":3,"51":3,"52":3}}],["s",{"2":{"0":1,"1":1,"12":6,"22":1,"59":1,"63":1,"64":1,"65":2,"81":2,"85":1,"93":2,"103":1,"146":1,"180":1}}],["javascriptreact",{"2":{"20":1}}],["javascript",{"0":{"14":1},"1":{"15":1},"2":{"1":1,"6":1,"7":1,"20":1,"127":2}}],["jsconst",{"2":{"19":1}}],["jslet",{"2":{"18":1}}],["json",{"2":{"14":1,"20":3,"36":1,"37":1,"39":1,"40":1,"43":1,"50":1,"61":1,"65":1,"70":1,"76":1,"81":1,"85":1,"90":1,"91":1,"92":1,"93":1,"94":1,"97":1,"116":1,"141":1,"146":1,"155":1}}],["jsmodule",{"2":{"3":1}}],["jsimport",{"2":{"3":1}}],["js",{"0":{"6":1},"2":{"0":1,"1":1,"3":2,"12":1,"14":1,"15":3,"18":1,"19":9,"20":1,"33":1,"127":2,"159":1,"171":1,"181":1,"182":1}}],["john",{"2":{"0":1}}],["u3000",{"2":{"115":3}}],["update",{"2":{"24":2}}],["unnecessary",{"2":{"130":1}}],["uncategorized",{"0":{"94":1}}],["unified",{"2":{"68":1,"69":1,"92":1,"93":1,"153":1,"154":1}}],["unexpected",{"2":{"20":2}}],["undef",{"0":{"10":1,"35":1},"1":{"36":1,"37":1,"38":1,"39":1,"40":1},"2":{"11":1,"39":1,"40":1}}],["underscore",{"2":{"0":1,"1":1}}],["unused",{"2":{"4":1,"19":1}}],["url",{"2":{"0":2,"10":1}}],["usage",{"0":{"3":1},"1":{"4":1}}],["uses",{"2":{"85":1,"146":1}}],["use",{"2":{"14":1,"15":2,"17":1,"19":2,"22":1,"33":1,"65":1,"159":1,"171":1,"181":1,"182":1}}],["users",{"2":{"0":3,"10":4}}],["user",{"2":{"0":2,"3":1,"20":1}}],["used",{"2":{"0":1,"10":2,"11":1,"14":1,"19":1,"36":1,"37":1,"120":1,"123":1}}],["using",{"2":{"0":1,"11":1,"14":1,"19":2,"57":1,"90":1}}],["publicid",{"2":{"164":1}}],["put",{"2":{"98":1}}],["people",{"2":{"64":1}}],["per",{"0":{"95":1},"1":{"96":1,"97":1,"98":1,"99":1,"100":1,"101":1},"2":{"4":2,"93":2,"95":1,"96":7,"97":1,"98":2,"99":3,"100":3}}],["pngexpected",{"2":{"49":1,"51":1,"52":1}}],["png",{"2":{"49":2,"51":2,"52":2}}],["possibly",{"2":{"103":1}}],["possible",{"2":{"19":1}}],["positives",{"0":{"19":1},"2":{"19":1}}],["print",{"2":{"151":1}}],["prs",{"2":{"22":1}}],["preset",{"2":{"94":1}}],["pre",{"2":{"81":2}}],["preferable",{"2":{"151":1}}],["prefer",{"0":{"150":1},"1":{"151":1,"152":1},"2":{"50":2,"94":2,"150":1,"151":2}}],["preference",{"2":{"20":1,"64":1}}],["predefined",{"2":{"6":1,"7":1,"137":1}}],["practices",{"0":{"91":1},"2":{"6":1,"7":1,"29":2,"91":1,"92":1,"93":1,"105":1,"111":1,"126":1,"129":1}}],["program",{"2":{"159":1,"171":1}}],["property",{"2":{"160":1,"161":1,"172":1,"173":1,"174":2,"175":2,"176":2,"177":1,"178":1}}],["properties",{"2":{"96":1}}],["prop",{"2":{"92":1,"153":1}}],["problems",{"2":{"41":1,"48":1,"55":1,"59":1,"63":1,"68":1,"74":1,"79":1,"83":1,"95":1,"114":1,"119":1,"122":1,"129":1,"132":1,"144":1,"153":1}}],["provided",{"2":{"23":1}}],["provide",{"2":{"12":1}}],["provides",{"2":{"6":1,"7":1,"180":1}}],["processor",{"2":{"13":1,"15":1,"34":1}}],["process",{"2":{"4":1,"19":4}}],["profile",{"2":{"0":1}}],["projects",{"2":{"0":1}}],["panel",{"2":{"80":4,"81":4}}],["package",{"2":{"20":1}}],["parsed",{"2":{"18":2}}],["parse",{"2":{"12":1,"18":1}}],["parserservices",{"0":{"23":1},"2":{"23":1,"159":1,"171":1,"180":2}}],["parseroptions",{"2":{"12":3,"15":2}}],["parser",{"0":{"12":1},"2":{"15":2,"180":1}}],["parsing",{"0":{"18":1,"90":1,"126":1},"1":{"127":1,"128":1},"2":{"6":3,"7":2,"14":1,"18":1,"19":2,"20":2,"90":2,"126":1,"127":3}}],["partial",{"2":{"1":1}}],["padded",{"2":{"4":2}}],["please",{"2":{"8":1,"10":2,"11":1,"12":1,"13":1,"15":1,"22":1,"34":1,"37":1,"40":1,"94":1}}],["plus",{"2":{"6":4,"7":4,"65":1}}],["pluginlodashtemplate",{"2":{"33":2}}],["plugin",{"0":{"0":1,"9":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":2,"11":2,"12":2,"13":2,"14":2,"15":2,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"0":2,"2":1,"3":2,"4":2,"6":2,"7":9,"12":2,"14":3,"15":4,"17":1,"19":2,"23":1,"33":1,"36":1,"39":1,"41":2,"48":2,"55":2,"59":2,"63":2,"68":2,"74":2,"79":2,"83":2,"90":2,"91":1,"92":1,"93":1,"95":2,"102":2,"105":5,"108":2,"111":5,"114":4,"119":2,"122":4,"126":6,"129":5,"132":2,"136":2,"139":1,"144":4,"150":1,"153":4,"159":1,"171":1,"180":1}}],["playground",{"2":{"0":1,"14":1}}],["p>",{"2":{"0":2}}],["ignoredattributes",{"2":{"168":1}}],["ignorenames",{"2":{"81":2}}],["ignoresvgcamelcaseattributes",{"0":{"45":1},"2":{"43":1,"45":1}}],["ignore",{"0":{"44":1},"2":{"43":1,"44":1,"76":2,"81":4}}],["ignorerules",{"2":{"11":1,"39":1,"40":1}}],["irregular",{"0":{"114":1},"1":{"115":1,"116":1,"117":1,"118":1},"2":{"4":2,"92":2,"114":1,"115":8,"116":1,"117":1}}],["if",{"2":{"4":2,"12":2,"14":3,"15":2,"18":1,"19":7,"50":1,"65":2,"81":2,"85":2,"91":1,"92":1,"94":1,"98":1,"111":1,"112":2,"122":1,"123":2,"127":2,"140":1,"142":1,"146":2}}],["is",{"2":{"1":1,"4":2,"6":1,"7":1,"12":2,"14":4,"19":12,"41":1,"48":1,"55":1,"59":1,"61":3,"63":1,"65":4,"68":1,"70":1,"74":1,"76":2,"79":1,"81":2,"83":1,"84":1,"85":5,"95":1,"96":2,"99":2,"100":2,"102":1,"103":1,"105":1,"108":1,"111":1,"114":1,"119":1,"122":1,"126":1,"127":1,"129":1,"132":1,"133":1,"136":1,"139":1,"140":1,"144":1,"145":1,"146":5,"150":1,"151":1,"153":1,"155":1,"160":3,"161":3,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"172":3,"173":3,"174":4,"175":4,"176":4,"177":2,"178":2,"181":2,"182":2}}],["issues",{"2":{"1":1,"22":1}}],["i++",{"2":{"0":1,"10":1,"145":2,"147":1,"148":1}}],["implementation",{"0":{"47":1,"54":1,"58":1,"62":1,"67":1,"73":1,"78":1,"82":1,"88":1,"101":1,"104":1,"107":1,"110":1,"113":1,"118":1,"121":1,"125":1,"128":1,"131":1,"135":1,"138":1,"143":1,"149":1,"152":1,"158":1}}],["implicit",{"2":{"4":1}}],["improve",{"0":{"91":1,"92":1,"93":1},"2":{"6":3,"7":3,"96":1}}],["improves",{"2":{"1":1}}],["image",{"2":{"0":1}}],["img",{"2":{"0":1,"49":3,"51":3,"52":3}}],["i",{"2":{"0":5,"10":4,"145":6,"147":3,"148":3}}],["idname",{"2":{"18":4}}],["identifier",{"2":{"18":1,"19":1,"127":1}}],["id",{"2":{"0":1,"4":1,"90":1,"91":1,"92":1,"93":1,"94":1,"115":2}}],["id=",{"2":{"0":1,"64":7,"66":5,"86":1,"87":1,"115":2}}],["invalid",{"0":{"111":1},"1":{"112":1,"113":1},"2":{"91":1,"112":3}}],["interface",{"2":{"160":1,"161":1,"172":1,"173":1}}],["interpolations",{"0":{"150":1},"1":{"151":1,"152":1},"2":{"94":2,"150":1,"151":2}}],["interpolation",{"0":{"111":1,"129":1},"1":{"112":1,"113":1,"130":1,"131":1},"2":{"18":2,"91":4,"111":1,"112":4,"129":1,"130":3,"151":1,"155":1}}],["interpolates",{"2":{"151":1}}],["interpolate",{"2":{"4":1,"12":3,"106":1,"140":2,"154":1,"175":1,"176":1}}],["integers",{"2":{"160":1,"161":1,"172":1,"173":1}}],["integer",{"2":{"85":2,"146":2,"160":2,"161":2,"172":2,"173":2}}],["input>",{"2":{"60":1}}],["input",{"2":{"59":4,"60":9,"61":4,"93":5,"94":1,"96":6,"98":2,"99":2,"100":2,"119":1,"120":3,"133":2,"139":1,"140":5,"142":2}}],["information",{"2":{"23":1,"174":2,"175":2,"176":2}}],["include",{"2":{"12":1,"137":1}}],["included",{"2":{"6":1,"7":1,"15":1,"41":1,"48":1,"55":1,"59":1,"63":1,"68":1,"74":1,"79":1,"83":1,"95":1,"102":1,"105":1,"108":1,"111":1,"114":1,"119":1,"122":1,"126":1,"129":1,"132":1,"136":1,"139":1,"144":1,"150":1,"153":1}}],["indentation",{"2":{"83":1,"84":4,"85":3,"92":1,"93":1,"120":1,"123":1,"144":1,"145":4,"146":3}}],["indentrule",{"2":{"4":1}}],["indent",{"0":{"83":1,"144":1},"1":{"84":1,"85":1,"86":1,"87":1,"88":1,"145":1,"146":1,"147":1,"148":1,"149":1},"2":{"4":5,"31":2,"65":2,"84":4,"85":3,"86":1,"87":1,"92":1,"93":1,"145":4,"146":3,"147":1,"148":1}}],["install",{"2":{"2":1}}],["installation",{"0":{"2":1}}],["inside",{"2":{"1":1}}],["in",{"0":{"10":1,"11":1,"17":1,"19":1,"29":1,"33":1,"35":1,"36":1,"38":1,"39":1,"119":1,"122":1,"129":1,"139":1},"1":{"18":1,"19":1,"36":1,"37":1,"38":1,"39":1,"40":1,"120":1,"121":1,"123":1,"124":1,"125":1,"130":1,"131":1,"140":1,"141":1,"142":1,"143":1},"2":{"0":1,"1":1,"4":5,"10":2,"12":1,"14":2,"17":1,"18":2,"19":1,"24":1,"27":1,"31":2,"33":2,"36":2,"37":1,"39":1,"41":1,"48":1,"55":1,"59":1,"63":1,"68":2,"69":1,"74":1,"79":1,"83":1,"90":1,"91":4,"92":6,"93":7,"94":4,"95":1,"96":2,"98":1,"99":1,"100":1,"102":1,"105":1,"108":1,"111":2,"112":1,"114":1,"116":3,"119":2,"120":4,"122":2,"123":7,"126":2,"127":1,"129":2,"130":3,"132":2,"133":2,"136":2,"137":1,"139":2,"140":10,"141":1,"142":1,"144":2,"145":1,"146":1,"150":1,"153":2,"154":1,"174":2,"175":2,"176":2,"177":1,"178":1}}],["its",{"2":{"137":1}}],["item",{"2":{"93":2,"115":4,"132":2,"133":2}}],["it",{"2":{"0":1,"12":1,"15":1,"18":2,"19":1,"33":1,"36":1,"39":1,"65":2,"81":2,"85":2,"96":1,"103":1,"146":2}}]],"serializationVersion":2}';export{t as default}; diff --git a/assets/chunks/VPLocalSearchBox.xqDXmbuF.js b/assets/chunks/VPLocalSearchBox.xqDXmbuF.js new file mode 100644 index 00000000..df48ea02 --- /dev/null +++ b/assets/chunks/VPLocalSearchBox.xqDXmbuF.js @@ -0,0 +1,8 @@ +var Ft=Object.defineProperty;var Ot=(a,e,t)=>e in a?Ft(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ae=(a,e,t)=>Ot(a,typeof e!="symbol"?e+"":e,t);import{V as Ct,p as ie,h as me,an as tt,ao as Rt,ap as At,q as $e,aq as Mt,d as Lt,D as xe,ar as st,as as Dt,at as zt,s as Pt,au as jt,v as Me,P as he,O as _e,av as Vt,aw as $t,W as Bt,R as Wt,$ as Kt,o as H,b as Jt,j as _,a0 as Ut,k as L,ax as qt,ay as Gt,az as Ht,c as Z,n as nt,e as Se,C as it,F as rt,a as fe,t as pe,aA as Qt,aB as at,a7 as Yt,ad as Zt,aj as Xt,aC as es,_ as ts}from"./framework.D6W_pQcY.js";import{u as ss,c as ns}from"./theme.Dciq0WeV.js";const is={root:()=>Ct(()=>import("./@localSearchIndexroot.DzqK7Ze_.js"),[])};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var mt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ne=mt.join(","),gt=typeof Element>"u",ae=gt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Fe=!gt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},Oe=function a(e,t){var s;t===void 0&&(t=!0);var n=e==null||(s=e.getAttribute)===null||s===void 0?void 0:s.call(e,"inert"),r=n===""||n==="true",i=r||t&&e&&a(e.parentNode);return i},rs=function(e){var t,s=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return s===""||s==="true"},bt=function(e,t,s){if(Oe(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ae.call(e,Ne)&&n.unshift(e),n=n.filter(s),n},yt=function a(e,t,s){for(var n=[],r=Array.from(e);r.length;){var i=r.shift();if(!Oe(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=a(l,!0,s);s.flatten?n.push.apply(n,c):n.push({scopeParent:i,candidates:c})}else{var h=ae.call(i,Ne);h&&s.filter(i)&&(t||!e.includes(i))&&n.push(i);var m=i.shadowRoot||typeof s.getShadowRoot=="function"&&s.getShadowRoot(i),f=!Oe(m,!1)&&(!s.shadowRootFilter||s.shadowRootFilter(i));if(m&&f){var b=a(m===!0?i.children:m.children,!0,s);s.flatten?n.push.apply(n,b):n.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return n},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},re=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||rs(e))&&!wt(e)?0:e.tabIndex},as=function(e,t){var s=re(e);return s<0&&t&&!wt(e)?0:s},os=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},ls=function(e){return xt(e)&&e.type==="hidden"},cs=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(s){return s.tagName==="SUMMARY"});return t},us=function(e,t){for(var s=0;ssummary:first-of-type"),i=r?e.parentElement:e;if(ae.call(i,"details:not([open]) *"))return!0;if(!s||s==="full"||s==="legacy-full"){if(typeof n=="function"){for(var o=e;e;){var l=e.parentElement,c=Fe(e);if(l&&!l.shadowRoot&&n(l)===!0)return ot(e);e.assignedSlot?e=e.assignedSlot:!l&&c!==e.ownerDocument?e=c.host:e=l}e=o}if(ps(e))return!e.getClientRects().length;if(s!=="legacy-full")return!0}else if(s==="non-zero-area")return ot(e);return!1},ms=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var s=0;s=0)},bs=function a(e){var t=[],s=[];return e.forEach(function(n,r){var i=!!n.scopeParent,o=i?n.scopeParent:n,l=as(o,i),c=i?a(n.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):s.push({documentOrder:r,tabIndex:l,item:n,isScope:i,content:c})}),s.sort(os).reduce(function(n,r){return r.isScope?n.push.apply(n,r.content):n.push(r.content),n},[]).concat(t)},ys=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:Be.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:gs}):s=bt(e,t.includeContainer,Be.bind(null,t)),bs(s)},ws=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:Ce.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):s=bt(e,t.includeContainer,Ce.bind(null,t)),s},oe=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,Ne)===!1?!1:Be(t,e)},xs=mt.concat("iframe").join(","),Le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,xs)===!1?!1:Ce(t,e)};/*! +* focus-trap 7.6.2 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function We(a,e){(e==null||e>a.length)&&(e=a.length);for(var t=0,s=Array(e);t0){var s=e[e.length-1];s!==t&&s.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var s=e.indexOf(t);s!==-1&&e.splice(s,1),e.length>0&&e[e.length-1].unpause()}},Os=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Cs=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ge=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Rs=function(e){return ge(e)&&!e.shiftKey},As=function(e){return ge(e)&&e.shiftKey},dt=function(e){return setTimeout(e,0)},ve=function(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),n=1;n1&&arguments[1]!==void 0?arguments[1]:{},g=d.hasFallback,T=g===void 0?!1:g,k=d.params,O=k===void 0?[]:k,S=r[u];if(typeof S=="function"&&(S=S.apply(void 0,Is(O))),S===!0&&(S=void 0),!S){if(S===void 0||S===!1)return S;throw new Error("`".concat(u,"` was specified but was not a node, or did not return a node"))}var C=S;if(typeof S=="string"){try{C=s.querySelector(S)}catch(v){throw new Error("`".concat(u,'` appears to be an invalid selector; error="').concat(v.message,'"'))}if(!C&&!T)throw new Error("`".concat(u,"` as selector refers to no known node"))}return C},m=function(){var u=h("initialFocus",{hasFallback:!0});if(u===!1)return!1;if(u===void 0||u&&!Le(u,r.tabbableOptions))if(c(s.activeElement)>=0)u=s.activeElement;else{var d=i.tabbableGroups[0],g=d&&d.firstTabbableNode;u=g||h("fallbackFocus")}else u===null&&(u=h("fallbackFocus"));if(!u)throw new Error("Your focus-trap needs to have at least one focusable element");return u},f=function(){if(i.containerGroups=i.containers.map(function(u){var d=ys(u,r.tabbableOptions),g=ws(u,r.tabbableOptions),T=d.length>0?d[0]:void 0,k=d.length>0?d[d.length-1]:void 0,O=g.find(function(v){return oe(v)}),S=g.slice().reverse().find(function(v){return oe(v)}),C=!!d.find(function(v){return re(v)>0});return{container:u,tabbableNodes:d,focusableNodes:g,posTabIndexesFound:C,firstTabbableNode:T,lastTabbableNode:k,firstDomTabbableNode:O,lastDomTabbableNode:S,nextTabbableNode:function(p){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,F=d.indexOf(p);return F<0?E?g.slice(g.indexOf(p)+1).find(function(z){return oe(z)}):g.slice(0,g.indexOf(p)).reverse().find(function(z){return oe(z)}):d[F+(E?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(u){return u.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(u){return u.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},b=function(u){var d=u.activeElement;if(d)return d.shadowRoot&&d.shadowRoot.activeElement!==null?b(d.shadowRoot):d},y=function(u){if(u!==!1&&u!==b(document)){if(!u||!u.focus){y(m());return}u.focus({preventScroll:!!r.preventScroll}),i.mostRecentlyFocusedNode=u,Os(u)&&u.select()}},x=function(u){var d=h("setReturnFocus",{params:[u]});return d||(d===!1?!1:u)},w=function(u){var d=u.target,g=u.event,T=u.isBackward,k=T===void 0?!1:T;d=d||Ee(g),f();var O=null;if(i.tabbableGroups.length>0){var S=c(d,g),C=S>=0?i.containerGroups[S]:void 0;if(S<0)k?O=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:O=i.tabbableGroups[0].firstTabbableNode;else if(k){var v=i.tabbableGroups.findIndex(function(j){var I=j.firstTabbableNode;return d===I});if(v<0&&(C.container===d||Le(d,r.tabbableOptions)&&!oe(d,r.tabbableOptions)&&!C.nextTabbableNode(d,!1))&&(v=S),v>=0){var p=v===0?i.tabbableGroups.length-1:v-1,E=i.tabbableGroups[p];O=re(d)>=0?E.lastTabbableNode:E.lastDomTabbableNode}else ge(g)||(O=C.nextTabbableNode(d,!1))}else{var F=i.tabbableGroups.findIndex(function(j){var I=j.lastTabbableNode;return d===I});if(F<0&&(C.container===d||Le(d,r.tabbableOptions)&&!oe(d,r.tabbableOptions)&&!C.nextTabbableNode(d))&&(F=S),F>=0){var z=F===i.tabbableGroups.length-1?0:F+1,P=i.tabbableGroups[z];O=re(d)>=0?P.firstTabbableNode:P.firstDomTabbableNode}else ge(g)||(O=C.nextTabbableNode(d))}}else O=h("fallbackFocus");return O},R=function(u){var d=Ee(u);if(!(c(d,u)>=0)){if(ve(r.clickOutsideDeactivates,u)){o.deactivate({returnFocus:r.returnFocusOnDeactivate});return}ve(r.allowOutsideClick,u)||u.preventDefault()}},A=function(u){var d=Ee(u),g=c(d,u)>=0;if(g||d instanceof Document)g&&(i.mostRecentlyFocusedNode=d);else{u.stopImmediatePropagation();var T,k=!0;if(i.mostRecentlyFocusedNode)if(re(i.mostRecentlyFocusedNode)>0){var O=c(i.mostRecentlyFocusedNode),S=i.containerGroups[O].tabbableNodes;if(S.length>0){var C=S.findIndex(function(v){return v===i.mostRecentlyFocusedNode});C>=0&&(r.isKeyForward(i.recentNavEvent)?C+1=0&&(T=S[C-1],k=!1))}}else i.containerGroups.some(function(v){return v.tabbableNodes.some(function(p){return re(p)>0})})||(k=!1);else k=!1;k&&(T=w({target:i.mostRecentlyFocusedNode,isBackward:r.isKeyBackward(i.recentNavEvent)})),y(T||i.mostRecentlyFocusedNode||m())}i.recentNavEvent=void 0},J=function(u){var d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=u;var g=w({event:u,isBackward:d});g&&(ge(u)&&u.preventDefault(),y(g))},Q=function(u){(r.isKeyForward(u)||r.isKeyBackward(u))&&J(u,r.isKeyBackward(u))},W=function(u){Cs(u)&&ve(r.escapeDeactivates,u)!==!1&&(u.preventDefault(),o.deactivate())},V=function(u){var d=Ee(u);c(d,u)>=0||ve(r.clickOutsideDeactivates,u)||ve(r.allowOutsideClick,u)||(u.preventDefault(),u.stopImmediatePropagation())},$=function(){if(i.active)return ut.activateTrap(n,o),i.delayInitialFocusTimer=r.delayInitialFocus?dt(function(){y(m())}):y(m()),s.addEventListener("focusin",A,!0),s.addEventListener("mousedown",R,{capture:!0,passive:!1}),s.addEventListener("touchstart",R,{capture:!0,passive:!1}),s.addEventListener("click",V,{capture:!0,passive:!1}),s.addEventListener("keydown",Q,{capture:!0,passive:!1}),s.addEventListener("keydown",W),o},be=function(){if(i.active)return s.removeEventListener("focusin",A,!0),s.removeEventListener("mousedown",R,!0),s.removeEventListener("touchstart",R,!0),s.removeEventListener("click",V,!0),s.removeEventListener("keydown",Q,!0),s.removeEventListener("keydown",W),o},M=function(u){var d=u.some(function(g){var T=Array.from(g.removedNodes);return T.some(function(k){return k===i.mostRecentlyFocusedNode})});d&&y(m())},U=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(M):void 0,q=function(){U&&(U.disconnect(),i.active&&!i.paused&&i.containers.map(function(u){U.observe(u,{subtree:!0,childList:!0})}))};return o={get active(){return i.active},get paused(){return i.paused},activate:function(u){if(i.active)return this;var d=l(u,"onActivate"),g=l(u,"onPostActivate"),T=l(u,"checkCanFocusTrap");T||f(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=s.activeElement,d==null||d();var k=function(){T&&f(),$(),q(),g==null||g()};return T?(T(i.containers.concat()).then(k,k),this):(k(),this)},deactivate:function(u){if(!i.active)return this;var d=ct({onDeactivate:r.onDeactivate,onPostDeactivate:r.onPostDeactivate,checkCanReturnFocus:r.checkCanReturnFocus},u);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,be(),i.active=!1,i.paused=!1,q(),ut.deactivateTrap(n,o);var g=l(d,"onDeactivate"),T=l(d,"onPostDeactivate"),k=l(d,"checkCanReturnFocus"),O=l(d,"returnFocus","returnFocusOnDeactivate");g==null||g();var S=function(){dt(function(){O&&y(x(i.nodeFocusedBeforeActivation)),T==null||T()})};return O&&k?(k(x(i.nodeFocusedBeforeActivation)).then(S,S),this):(S(),this)},pause:function(u){if(i.paused||!i.active)return this;var d=l(u,"onPause"),g=l(u,"onPostPause");return i.paused=!0,d==null||d(),be(),q(),g==null||g(),this},unpause:function(u){if(!i.paused||!i.active)return this;var d=l(u,"onUnpause"),g=l(u,"onPostUnpause");return i.paused=!1,d==null||d(),f(),$(),q(),g==null||g(),this},updateContainerElements:function(u){var d=[].concat(u).filter(Boolean);return i.containers=d.map(function(g){return typeof g=="string"?s.querySelector(g):g}),i.active&&f(),q(),this}},o.updateContainerElements(e),o};function Ds(a,e={}){let t;const{immediate:s,...n}=e,r=ie(!1),i=ie(!1),o=f=>t&&t.activate(f),l=f=>t&&t.deactivate(f),c=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)},m=me(()=>{const f=tt(a);return(Array.isArray(f)?f:[f]).map(b=>{const y=tt(b);return typeof y=="string"?y:Rt(y)}).filter(At)});return $e(m,f=>{f.length&&(t=Ls(f,{...n,onActivate(){r.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){r.value=!1,e.onDeactivate&&e.onDeactivate()}}),s&&o())},{flush:"post"}),Mt(()=>l()),{hasFocus:r,isPaused:i,activate:o,deactivate:l,pause:c,unpause:h}}class ce{constructor(e,t=!0,s=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=s,this.iframesTimeout=n}static matches(e,t){const s=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let r=!1;return s.every(i=>n.call(e,i)?(r=!0,!1):!0),r}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(s=>{const n=t.filter(r=>r.contains(s)).length>0;t.indexOf(s)===-1&&!n&&t.push(s)}),t}getIframeContents(e,t,s=()=>{}){let n;try{const r=e.contentWindow;if(n=r.document,!r||!n)throw new Error("iframe inaccessible")}catch{s()}n&&t(n)}isIframeBlank(e){const t="about:blank",s=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&s!==t&&s}observeIframeLoad(e,t,s){let n=!1,r=null;const i=()=>{if(!n){n=!0,clearTimeout(r);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,s))}catch{s()}}};e.addEventListener("load",i),r=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,s){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,s):this.getIframeContents(e,t,s):this.observeIframeLoad(e,t,s)}catch{s()}}waitForIframes(e,t){let s=0;this.forEachIframe(e,()=>!0,n=>{s++,this.waitForIframes(n.querySelector("html"),()=>{--s||t()})},n=>{n||t()})}forEachIframe(e,t,s,n=()=>{}){let r=e.querySelectorAll("iframe"),i=r.length,o=0;r=Array.prototype.slice.call(r);const l=()=>{--i<=0&&n(o)};i||l(),r.forEach(c=>{ce.matches(c,this.exclude)?l():this.onIframeReady(c,h=>{t(c)&&(o++,s(h)),l()},l)})}createIterator(e,t,s){return document.createNodeIterator(e,t,s,!1)}createInstanceOnIframe(e){return new ce(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,s){const n=e.compareDocumentPosition(s),r=Node.DOCUMENT_POSITION_PRECEDING;if(n&r)if(t!==null){const i=t.compareDocumentPosition(s),o=Node.DOCUMENT_POSITION_FOLLOWING;if(i&o)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let s;return t===null?s=e.nextNode():s=e.nextNode()&&e.nextNode(),{prevNode:t,node:s}}checkIframeFilter(e,t,s,n){let r=!1,i=!1;return n.forEach((o,l)=>{o.val===s&&(r=l,i=o.handled)}),this.compareNodeIframe(e,t,s)?(r===!1&&!i?n.push({val:s,handled:!0}):r!==!1&&!i&&(n[r].handled=!0),!0):(r===!1&&n.push({val:s,handled:!1}),!1)}handleOpenIframes(e,t,s,n){e.forEach(r=>{r.handled||this.getIframeContents(r.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,s,n)})})}iterateThroughNodes(e,t,s,n,r){const i=this.createIterator(t,e,n);let o=[],l=[],c,h,m=()=>({prevNode:h,node:c}=this.getIteratorNode(i),c);for(;m();)this.iframes&&this.forEachIframe(t,f=>this.checkIframeFilter(c,h,f,o),f=>{this.createInstanceOnIframe(f).forEachNode(e,b=>l.push(b),n)}),l.push(c);l.forEach(f=>{s(f)}),this.iframes&&this.handleOpenIframes(o,e,s,n),r()}forEachNode(e,t,s,n=()=>{}){const r=this.getContexts();let i=r.length;i||n(),r.forEach(o=>{const l=()=>{this.iterateThroughNodes(e,o,t,s,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(o,l):l()})}}let zs=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new ce(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const s=this.opt.log;this.opt.debug&&typeof s=="object"&&typeof s[t]=="function"&&s[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,s=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let r in t)if(t.hasOwnProperty(r)){const i=t[r],o=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(r):this.escapeStr(r),l=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);o!==""&&l!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(o)}|${this.escapeStr(l)})`,`gm${s}`),n+`(${this.processSynomyms(o)}|${this.processSynomyms(l)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,s,n)=>{let r=n.charAt(s+1);return/[(|)\\]/.test(r)||r===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const s=this.opt.ignorePunctuation;return Array.isArray(s)&&s.length&&t.push(this.escapeStr(s.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",s=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(r=>{s.every(i=>{if(i.indexOf(r)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let s=this.opt.accuracy,n=typeof s=="string"?s:s.value,r=typeof s=="string"?[]:s.limiters,i="";switch(r.forEach(o=>{i+=`|${this.escapeStr(o)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(s=>{this.opt.separateWordSearch?s.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):s.trim()&&t.indexOf(s)===-1&&t.push(s)}),{keywords:t.sort((s,n)=>n.length-s.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let s=0;return e.sort((n,r)=>n.start-r.start).forEach(n=>{let{start:r,end:i,valid:o}=this.callNoMatchOnInvalidRanges(n,s);o&&(n.start=r,n.length=i-r,t.push(n),s=i)}),t}callNoMatchOnInvalidRanges(e,t){let s,n,r=!1;return e&&typeof e.start<"u"?(s=parseInt(e.start,10),n=s+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-s>0?r=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:s,end:n,valid:r}}checkWhitespaceRanges(e,t,s){let n,r=!0,i=s.length,o=t-i,l=parseInt(e.start,10)-o;return l=l>i?i:l,n=l+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),l<0||n-l<0||l>i||n>i?(r=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):s.substring(l,n).replace(/\s+/g,"")===""&&(r=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:n,valid:r}}getTextNodes(e){let t="",s=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{s.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:s})})}matchesExclude(e){return ce.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,s){const n=this.opt.element?this.opt.element:"mark",r=e.splitText(t),i=r.splitText(s-t);let o=document.createElement(n);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=r.textContent,r.parentNode.replaceChild(o,r),i}wrapRangeInMappedTextNode(e,t,s,n,r){e.nodes.every((i,o)=>{const l=e.nodes[o+1];if(typeof l>"u"||l.start>t){if(!n(i.node))return!1;const c=t-i.start,h=(s>i.end?i.end:s)-i.start,m=e.value.substr(0,i.start),f=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,c,h),e.value=m+f,e.nodes.forEach((b,y)=>{y>=o&&(e.nodes[y].start>0&&y!==o&&(e.nodes[y].start-=h),e.nodes[y].end-=h)}),s-=h,r(i.node.previousSibling,i.start),s>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,s,n,r){const i=t===0?0:t+1;this.getTextNodes(o=>{o.nodes.forEach(l=>{l=l.node;let c;for(;(c=e.exec(l.textContent))!==null&&c[i]!=="";){if(!s(c[i],l))continue;let h=c.index;if(i!==0)for(let m=1;m{let l;for(;(l=e.exec(o.value))!==null&&l[i]!=="";){let c=l.index;if(i!==0)for(let m=1;ms(l[i],m),(m,f)=>{e.lastIndex=f,n(m)})}r()})}wrapRangeFromIndex(e,t,s,n){this.getTextNodes(r=>{const i=r.value.length;e.forEach((o,l)=>{let{start:c,end:h,valid:m}=this.checkWhitespaceRanges(o,i,r.value);m&&this.wrapRangeInMappedTextNode(r,c,h,f=>t(f,o,r.value.substring(c,h),l),f=>{s(f,o)})}),n()})}unwrapMatches(e){const t=e.parentNode;let s=document.createDocumentFragment();for(;e.firstChild;)s.appendChild(e.removeChild(e.firstChild));t.replaceChild(s,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let s=0,n="wrapMatches";const r=i=>{s++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,o)=>this.opt.filter(o,i,s),r,()=>{s===0&&this.opt.noMatch(e),this.opt.done(s)})}mark(e,t){this.opt=t;let s=0,n="wrapMatches";const{keywords:r,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),o=this.opt.caseSensitive?"":"i",l=c=>{let h=new RegExp(this.createRegExp(c),`gm${o}`),m=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(f,b)=>this.opt.filter(b,c,s,m),f=>{m++,s++,this.opt.each(f)},()=>{m===0&&this.opt.noMatch(c),r[i-1]===c?this.opt.done(s):l(r[r.indexOf(c)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(s):l(r[0])}markRanges(e,t){this.opt=t;let s=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(r,i,o,l)=>this.opt.filter(r,i,o,l),(r,i)=>{s++,this.opt.each(r,i)},()=>{this.opt.done(s)})):this.opt.done(s)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,s=>{this.unwrapMatches(s)},s=>{const n=ce.matches(s,t),r=this.matchesExclude(s);return!n||r?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Ps(a){const e=new zs(a);return this.mark=(t,s)=>(e.mark(t,s),this),this.markRegExp=(t,s)=>(e.markRegExp(t,s),this),this.markRanges=(t,s)=>(e.markRanges(t,s),this),this.unmark=t=>(e.unmark(t),this),this}function ke(a,e,t,s){function n(r){return r instanceof t?r:new t(function(i){i(r)})}return new(t||(t=Promise))(function(r,i){function o(h){try{c(s.next(h))}catch(m){i(m)}}function l(h){try{c(s.throw(h))}catch(m){i(m)}}function c(h){h.done?r(h.value):n(h.value).then(o,l)}c((s=s.apply(a,[])).next())})}const js="ENTRIES",_t="KEYS",St="VALUES",D="";class De{constructor(e,t){const s=e._tree,n=Array.from(s.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:s,keys:n}]:[]}next(){const e=this.dive();return this.backtrack(),e}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:e,keys:t}=le(this._path);if(le(t)===D)return{done:!1,value:this.result()};const s=e.get(le(t));return this._path.push({node:s,keys:Array.from(s.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const e=le(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:e})=>le(e)).filter(e=>e!==D).join("")}value(){return le(this._path).node.get(D)}result(){switch(this._type){case St:return this.value();case _t:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const le=a=>a[a.length-1],Vs=(a,e,t)=>{const s=new Map;if(e===void 0)return s;const n=e.length+1,r=n+t,i=new Uint8Array(r*n).fill(t+1);for(let o=0;o{const l=r*i;e:for(const c of a.keys())if(c===D){const h=n[l-1];h<=t&&s.set(o,[a.get(c),h])}else{let h=r;for(let m=0;mt)continue e}Et(a.get(c),e,t,s,n,h,i,o+c)}};class X{constructor(e=new Map,t=""){this._size=void 0,this._tree=e,this._prefix=t}atPrefix(e){if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");const[t,s]=Re(this._tree,e.slice(this._prefix.length));if(t===void 0){const[n,r]=qe(s);for(const i of n.keys())if(i!==D&&i.startsWith(r)){const o=new Map;return o.set(i.slice(r.length),n.get(i)),new X(o,e)}}return new X(t,e)}clear(){this._size=void 0,this._tree.clear()}delete(e){return this._size=void 0,$s(this._tree,e)}entries(){return new De(this,js)}forEach(e){for(const[t,s]of this)e(t,s,this)}fuzzyGet(e,t){return Vs(this._tree,e,t)}get(e){const t=Ke(this._tree,e);return t!==void 0?t.get(D):void 0}has(e){const t=Ke(this._tree,e);return t!==void 0&&t.has(D)}keys(){return new De(this,_t)}set(e,t){if(typeof e!="string")throw new Error("key must be a string");return this._size=void 0,ze(this._tree,e).set(D,t),this}get size(){if(this._size)return this._size;this._size=0;const e=this.entries();for(;!e.next().done;)this._size+=1;return this._size}update(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=ze(this._tree,e);return s.set(D,t(s.get(D))),this}fetch(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=ze(this._tree,e);let n=s.get(D);return n===void 0&&s.set(D,n=t()),n}values(){return new De(this,St)}[Symbol.iterator](){return this.entries()}static from(e){const t=new X;for(const[s,n]of e)t.set(s,n);return t}static fromObject(e){return X.from(Object.entries(e))}}const Re=(a,e,t=[])=>{if(e.length===0||a==null)return[a,t];for(const s of a.keys())if(s!==D&&e.startsWith(s))return t.push([a,s]),Re(a.get(s),e.slice(s.length),t);return t.push([a,e]),Re(void 0,"",t)},Ke=(a,e)=>{if(e.length===0||a==null)return a;for(const t of a.keys())if(t!==D&&e.startsWith(t))return Ke(a.get(t),e.slice(t.length))},ze=(a,e)=>{const t=e.length;e:for(let s=0;a&&s{const[t,s]=Re(a,e);if(t!==void 0){if(t.delete(D),t.size===0)Tt(s);else if(t.size===1){const[n,r]=t.entries().next().value;It(s,n,r)}}},Tt=a=>{if(a.length===0)return;const[e,t]=qe(a);if(e.delete(t),e.size===0)Tt(a.slice(0,-1));else if(e.size===1){const[s,n]=e.entries().next().value;s!==D&&It(a.slice(0,-1),s,n)}},It=(a,e,t)=>{if(a.length===0)return;const[s,n]=qe(a);s.set(n+e,t),s.delete(n)},qe=a=>a[a.length-1],Ge="or",kt="and",Bs="and_not";class ue{constructor(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');const t=e.autoVacuum==null||e.autoVacuum===!0?Ve:e.autoVacuum;this._options=Object.assign(Object.assign(Object.assign({},je),e),{autoVacuum:t,searchOptions:Object.assign(Object.assign({},ht),e.searchOptions||{}),autoSuggestOptions:Object.assign(Object.assign({},qs),e.autoSuggestOptions||{})}),this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=Ue,this.addFields(this._options.fields)}add(e){const{extractField:t,tokenize:s,processTerm:n,fields:r,idField:i}=this._options,o=t(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);if(this._idToShortId.has(o))throw new Error(`MiniSearch: duplicate ID ${o}`);const l=this.addDocumentId(o);this.saveStoredFields(l,e);for(const c of r){const h=t(e,c);if(h==null)continue;const m=s(h.toString(),c),f=this._fieldIds[c],b=new Set(m).size;this.addFieldLength(l,f,this._documentCount-1,b);for(const y of m){const x=n(y,c);if(Array.isArray(x))for(const w of x)this.addTerm(f,l,w);else x&&this.addTerm(f,l,x)}}}addAll(e){for(const t of e)this.add(t)}addAllAsync(e,t={}){const{chunkSize:s=10}=t,n={chunk:[],promise:Promise.resolve()},{chunk:r,promise:i}=e.reduce(({chunk:o,promise:l},c,h)=>(o.push(c),(h+1)%s===0?{chunk:[],promise:l.then(()=>new Promise(m=>setTimeout(m,0))).then(()=>this.addAll(o))}:{chunk:o,promise:l}),n);return i.then(()=>this.addAll(r))}remove(e){const{tokenize:t,processTerm:s,extractField:n,fields:r,idField:i}=this._options,o=n(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);const l=this._idToShortId.get(o);if(l==null)throw new Error(`MiniSearch: cannot remove document with ID ${o}: it is not in the index`);for(const c of r){const h=n(e,c);if(h==null)continue;const m=t(h.toString(),c),f=this._fieldIds[c],b=new Set(m).size;this.removeFieldLength(l,f,this._documentCount,b);for(const y of m){const x=s(y,c);if(Array.isArray(x))for(const w of x)this.removeTerm(f,l,w);else x&&this.removeTerm(f,l,x)}}this._storedFields.delete(l),this._documentIds.delete(l),this._idToShortId.delete(o),this._fieldLength.delete(l),this._documentCount-=1}removeAll(e){if(e)for(const t of e)this.remove(t);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(e){const t=this._idToShortId.get(e);if(t==null)throw new Error(`MiniSearch: cannot discard document with ID ${e}: it is not in the index`);this._idToShortId.delete(e),this._documentIds.delete(t),this._storedFields.delete(t),(this._fieldLength.get(t)||[]).forEach((s,n)=>{this.removeFieldLength(t,n,this._documentCount,s)}),this._fieldLength.delete(t),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;const{minDirtFactor:e,minDirtCount:t,batchSize:s,batchWait:n}=this._options.autoVacuum;this.conditionalVacuum({batchSize:s,batchWait:n},{minDirtCount:t,minDirtFactor:e})}discardAll(e){const t=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(const s of e)this.discard(s)}finally{this._options.autoVacuum=t}this.maybeAutoVacuum()}replace(e){const{idField:t,extractField:s}=this._options,n=s(e,t);this.discard(n),this.add(e)}vacuum(e={}){return this.conditionalVacuum(e)}conditionalVacuum(e,t){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{const s=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=Ue,this.performVacuuming(e,s)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)}performVacuuming(e,t){return ke(this,void 0,void 0,function*(){const s=this._dirtCount;if(this.vacuumConditionsMet(t)){const n=e.batchSize||Je.batchSize,r=e.batchWait||Je.batchWait;let i=1;for(const[o,l]of this._index){for(const[c,h]of l)for(const[m]of h)this._documentIds.has(m)||(h.size<=1?l.delete(c):h.delete(m));this._index.get(o).size===0&&this._index.delete(o),i%n===0&&(yield new Promise(c=>setTimeout(c,r))),i+=1}this._dirtCount-=s}yield null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null})}vacuumConditionsMet(e){if(e==null)return!0;let{minDirtCount:t,minDirtFactor:s}=e;return t=t||Ve.minDirtCount,s=s||Ve.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=s}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(e){return this._idToShortId.has(e)}getStoredFields(e){const t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)}search(e,t={}){const{searchOptions:s}=this._options,n=Object.assign(Object.assign({},s),t),r=this.executeQuery(e,t),i=[];for(const[o,{score:l,terms:c,match:h}]of r){const m=c.length||1,f={id:this._documentIds.get(o),score:l*m,terms:Object.keys(h),queryTerms:c,match:h};Object.assign(f,this._storedFields.get(o)),(n.filter==null||n.filter(f))&&i.push(f)}return e===ue.wildcard&&n.boostDocument==null||i.sort(pt),i}autoSuggest(e,t={}){t=Object.assign(Object.assign({},this._options.autoSuggestOptions),t);const s=new Map;for(const{score:r,terms:i}of this.search(e,t)){const o=i.join(" "),l=s.get(o);l!=null?(l.score+=r,l.count+=1):s.set(o,{score:r,terms:i,count:1})}const n=[];for(const[r,{score:i,terms:o,count:l}]of s)n.push({suggestion:r,terms:o,score:i/l});return n.sort(pt),n}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)}static loadJSONAsync(e,t){return ke(this,void 0,void 0,function*(){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(e),t)})}static getDefault(e){if(je.hasOwnProperty(e))return Pe(je,e);throw new Error(`MiniSearch: unknown option "${e}"`)}static loadJS(e,t){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=Te(n),l._fieldLength=Te(r),l._storedFields=Te(i);for(const[c,h]of l._documentIds)l._idToShortId.set(h,c);for(const[c,h]of s){const m=new Map;for(const f of Object.keys(h)){let b=h[f];o===1&&(b=b.ds),m.set(parseInt(f,10),Te(b))}l._index.set(c,m)}return l}static loadJSAsync(e,t){return ke(this,void 0,void 0,function*(){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=yield Ie(n),l._fieldLength=yield Ie(r),l._storedFields=yield Ie(i);for(const[h,m]of l._documentIds)l._idToShortId.set(m,h);let c=0;for(const[h,m]of s){const f=new Map;for(const b of Object.keys(m)){let y=m[b];o===1&&(y=y.ds),f.set(parseInt(b,10),yield Ie(y))}++c%1e3===0&&(yield Nt(0)),l._index.set(h,f)}return l})}static instantiateMiniSearch(e,t){const{documentCount:s,nextId:n,fieldIds:r,averageFieldLength:i,dirtCount:o,serializationVersion:l}=e;if(l!==1&&l!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");const c=new ue(t);return c._documentCount=s,c._nextId=n,c._idToShortId=new Map,c._fieldIds=r,c._avgFieldLength=i,c._dirtCount=o||0,c._index=new X,c}executeQuery(e,t={}){if(e===ue.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){const f=Object.assign(Object.assign(Object.assign({},t),e),{queries:void 0}),b=e.queries.map(y=>this.executeQuery(y,f));return this.combineResults(b,f.combineWith)}const{tokenize:s,processTerm:n,searchOptions:r}=this._options,i=Object.assign(Object.assign({tokenize:s,processTerm:n},r),t),{tokenize:o,processTerm:l}=i,m=o(e).flatMap(f=>l(f)).filter(f=>!!f).map(Us(i)).map(f=>this.executeQuerySpec(f,i));return this.combineResults(m,i.combineWith)}executeQuerySpec(e,t){const s=Object.assign(Object.assign({},this._options.searchOptions),t),n=(s.fields||this._options.fields).reduce((x,w)=>Object.assign(Object.assign({},x),{[w]:Pe(s.boost,w)||1}),{}),{boostDocument:r,weights:i,maxFuzzy:o,bm25:l}=s,{fuzzy:c,prefix:h}=Object.assign(Object.assign({},ht.weights),i),m=this._index.get(e.term),f=this.termResults(e.term,e.term,1,e.termBoost,m,n,r,l);let b,y;if(e.prefix&&(b=this._index.atPrefix(e.term)),e.fuzzy){const x=e.fuzzy===!0?.2:e.fuzzy,w=x<1?Math.min(o,Math.round(e.term.length*x)):x;w&&(y=this._index.fuzzyGet(e.term,w))}if(b)for(const[x,w]of b){const R=x.length-e.term.length;if(!R)continue;y==null||y.delete(x);const A=h*x.length/(x.length+.3*R);this.termResults(e.term,x,A,e.termBoost,w,n,r,l,f)}if(y)for(const x of y.keys()){const[w,R]=y.get(x);if(!R)continue;const A=c*x.length/(x.length+R);this.termResults(e.term,x,A,e.termBoost,w,n,r,l,f)}return f}executeWildcardQuery(e){const t=new Map,s=Object.assign(Object.assign({},this._options.searchOptions),e);for(const[n,r]of this._documentIds){const i=s.boostDocument?s.boostDocument(r,"",this._storedFields.get(n)):1;t.set(n,{score:i,terms:[],match:{}})}return t}combineResults(e,t=Ge){if(e.length===0)return new Map;const s=t.toLowerCase(),n=Ws[s];if(!n)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(n)||new Map}toJSON(){const e=[];for(const[t,s]of this._index){const n={};for(const[r,i]of s)n[r]=Object.fromEntries(i);e.push([t,n])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:e,serializationVersion:2}}termResults(e,t,s,n,r,i,o,l,c=new Map){if(r==null)return c;for(const h of Object.keys(i)){const m=i[h],f=this._fieldIds[h],b=r.get(f);if(b==null)continue;let y=b.size;const x=this._avgFieldLength[f];for(const w of b.keys()){if(!this._documentIds.has(w)){this.removeTerm(f,w,t),y-=1;continue}const R=o?o(this._documentIds.get(w),t,this._storedFields.get(w)):1;if(!R)continue;const A=b.get(w),J=this._fieldLength.get(w)[f],Q=Js(A,y,this._documentCount,J,x,l),W=s*n*m*R*Q,V=c.get(w);if(V){V.score+=W,Gs(V.terms,e);const $=Pe(V.match,t);$?$.push(h):V.match[t]=[h]}else c.set(w,{score:W,terms:[e],match:{[t]:[h]}})}}return c}addTerm(e,t,s){const n=this._index.fetch(s,vt);let r=n.get(e);if(r==null)r=new Map,r.set(t,1),n.set(e,r);else{const i=r.get(t);r.set(t,(i||0)+1)}}removeTerm(e,t,s){if(!this._index.has(s)){this.warnDocumentChanged(t,e,s);return}const n=this._index.fetch(s,vt),r=n.get(e);r==null||r.get(t)==null?this.warnDocumentChanged(t,e,s):r.get(t)<=1?r.size<=1?n.delete(e):r.delete(t):r.set(t,r.get(t)-1),this._index.get(s).size===0&&this._index.delete(s)}warnDocumentChanged(e,t,s){for(const n of Object.keys(this._fieldIds))if(this._fieldIds[n]===t){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(e)} has changed before removal: term "${s}" was not present in field "${n}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(e){const t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t}addFields(e){for(let t=0;tObject.prototype.hasOwnProperty.call(a,e)?a[e]:void 0,Ws={[Ge]:(a,e)=>{for(const t of e.keys()){const s=a.get(t);if(s==null)a.set(t,e.get(t));else{const{score:n,terms:r,match:i}=e.get(t);s.score=s.score+n,s.match=Object.assign(s.match,i),ft(s.terms,r)}}return a},[kt]:(a,e)=>{const t=new Map;for(const s of e.keys()){const n=a.get(s);if(n==null)continue;const{score:r,terms:i,match:o}=e.get(s);ft(n.terms,i),t.set(s,{score:n.score+r,terms:n.terms,match:Object.assign(n.match,o)})}return t},[Bs]:(a,e)=>{for(const t of e.keys())a.delete(t);return a}},Ks={k:1.2,b:.7,d:.5},Js=(a,e,t,s,n,r)=>{const{k:i,b:o,d:l}=r;return Math.log(1+(t-e+.5)/(e+.5))*(l+a*(i+1)/(a+i*(1-o+o*s/n)))},Us=a=>(e,t,s)=>{const n=typeof a.fuzzy=="function"?a.fuzzy(e,t,s):a.fuzzy||!1,r=typeof a.prefix=="function"?a.prefix(e,t,s):a.prefix===!0,i=typeof a.boostTerm=="function"?a.boostTerm(e,t,s):1;return{term:e,fuzzy:n,prefix:r,termBoost:i}},je={idField:"id",extractField:(a,e)=>a[e],tokenize:a=>a.split(Hs),processTerm:a=>a.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(a,e)=>{typeof(console==null?void 0:console[a])=="function"&&console[a](e)},autoVacuum:!0},ht={combineWith:Ge,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:Ks},qs={combineWith:kt,prefix:(a,e,t)=>e===t.length-1},Je={batchSize:1e3,batchWait:10},Ue={minDirtFactor:.1,minDirtCount:20},Ve=Object.assign(Object.assign({},Je),Ue),Gs=(a,e)=>{a.includes(e)||a.push(e)},ft=(a,e)=>{for(const t of e)a.includes(t)||a.push(t)},pt=({score:a},{score:e})=>e-a,vt=()=>new Map,Te=a=>{const e=new Map;for(const t of Object.keys(a))e.set(parseInt(t,10),a[t]);return e},Ie=a=>ke(void 0,void 0,void 0,function*(){const e=new Map;let t=0;for(const s of Object.keys(a))e.set(parseInt(s,10),a[s]),++t%1e3===0&&(yield Nt(0));return e}),Nt=a=>new Promise(e=>setTimeout(e,a)),Hs=/[\n\r\p{Z}\p{P}]+/u;class Qs{constructor(e=10){Ae(this,"max");Ae(this,"cache");this.max=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}}const Ys=["aria-owns"],Zs={class:"shell"},Xs=["title"],en={class:"search-actions before"},tn=["title"],sn=["aria-activedescendant","aria-controls","placeholder"],nn={class:"search-actions"},rn=["title"],an=["disabled","title"],on=["id","role","aria-labelledby"],ln=["id","aria-selected"],cn=["href","aria-label","onMouseenter","onFocusin","data-index"],un={class:"titles"},dn=["innerHTML"],hn={class:"title main"},fn=["innerHTML"],pn={key:0,class:"excerpt-wrapper"},vn={key:0,class:"excerpt",inert:""},mn=["innerHTML"],gn={key:0,class:"no-results"},bn={class:"search-keyboard-shortcuts"},yn=["aria-label"],wn=["aria-label"],xn=["aria-label"],_n=["aria-label"],Sn=Lt({__name:"VPLocalSearchBox",emits:["close"],setup(a,{emit:e}){var S,C;const t=e,s=xe(),n=xe(),r=xe(is),i=ss(),{activate:o}=Ds(s,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:l,theme:c}=i,h=st(async()=>{var v,p,E,F,z,P,j,I,K;return at(ue.loadJSON((E=await((p=(v=r.value)[l.value])==null?void 0:p.call(v)))==null?void 0:E.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((F=c.value.search)==null?void 0:F.provider)==="local"&&((P=(z=c.value.search.options)==null?void 0:z.miniSearch)==null?void 0:P.searchOptions)},...((j=c.value.search)==null?void 0:j.provider)==="local"&&((K=(I=c.value.search.options)==null?void 0:I.miniSearch)==null?void 0:K.options)}))}),f=me(()=>{var v,p;return((v=c.value.search)==null?void 0:v.provider)==="local"&&((p=c.value.search.options)==null?void 0:p.disableQueryPersistence)===!0}).value?ie(""):Dt("vitepress:local-search-filter",""),b=zt("vitepress:local-search-detailed-list",((S=c.value.search)==null?void 0:S.provider)==="local"&&((C=c.value.search.options)==null?void 0:C.detailedView)===!0),y=me(()=>{var v,p,E;return((v=c.value.search)==null?void 0:v.provider)==="local"&&(((p=c.value.search.options)==null?void 0:p.disableDetailedView)===!0||((E=c.value.search.options)==null?void 0:E.detailedView)===!1)}),x=me(()=>{var p,E,F,z,P,j,I;const v=((p=c.value.search)==null?void 0:p.options)??c.value.algolia;return((P=(z=(F=(E=v==null?void 0:v.locales)==null?void 0:E[l.value])==null?void 0:F.translations)==null?void 0:z.button)==null?void 0:P.buttonText)||((I=(j=v==null?void 0:v.translations)==null?void 0:j.button)==null?void 0:I.buttonText)||"Search"});Pt(()=>{y.value&&(b.value=!1)});const w=xe([]),R=ie(!1);$e(f,()=>{R.value=!1});const A=st(async()=>{if(n.value)return at(new Ps(n.value))},null),J=new Qs(16);jt(()=>[h.value,f.value,b.value],async([v,p,E],F,z)=>{var ee,ye,He,Qe;(F==null?void 0:F[0])!==v&&J.clear();let P=!1;if(z(()=>{P=!0}),!v)return;w.value=v.search(p).slice(0,16),R.value=!0;const j=E?await Promise.all(w.value.map(B=>Q(B.id))):[];if(P)return;for(const{id:B,mod:te}of j){const se=B.slice(0,B.indexOf("#"));let Y=J.get(se);if(Y)continue;Y=new Map,J.set(se,Y);const G=te.default??te;if(G!=null&&G.render||G!=null&&G.setup){const ne=Yt(G);ne.config.warnHandler=()=>{},ne.provide(Zt,i),Object.defineProperties(ne.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Ye=document.createElement("div");ne.mount(Ye),Ye.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(de=>{var et;const we=(et=de.querySelector("a"))==null?void 0:et.getAttribute("href"),Ze=(we==null?void 0:we.startsWith("#"))&&we.slice(1);if(!Ze)return;let Xe="";for(;(de=de.nextElementSibling)&&!/^h[1-6]$/i.test(de.tagName);)Xe+=de.outerHTML;Y.set(Ze,Xe)}),ne.unmount()}if(P)return}const I=new Set;if(w.value=w.value.map(B=>{const[te,se]=B.id.split("#"),Y=J.get(te),G=(Y==null?void 0:Y.get(se))??"";for(const ne in B.match)I.add(ne);return{...B,text:G}}),await he(),P)return;await new Promise(B=>{var te;(te=A.value)==null||te.unmark({done:()=>{var se;(se=A.value)==null||se.markRegExp(k(I),{done:B})}})});const K=((ee=s.value)==null?void 0:ee.querySelectorAll(".result .excerpt"))??[];for(const B of K)(ye=B.querySelector('mark[data-markjs="true"]'))==null||ye.scrollIntoView({block:"center"});(Qe=(He=n.value)==null?void 0:He.firstElementChild)==null||Qe.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function Q(v){const p=Xt(v.slice(0,v.indexOf("#")));try{if(!p)throw new Error(`Cannot find file for id: ${v}`);return{id:v,mod:await import(p)}}catch(E){return console.error(E),{id:v,mod:{}}}}const W=ie(),V=me(()=>{var v;return((v=f.value)==null?void 0:v.length)<=0});function $(v=!0){var p,E;(p=W.value)==null||p.focus(),v&&((E=W.value)==null||E.select())}Me(()=>{$()});function be(v){v.pointerType==="mouse"&&$()}const M=ie(-1),U=ie(!0);$e(w,v=>{M.value=v.length?0:-1,q()});function q(){he(()=>{const v=document.querySelector(".result.selected");v==null||v.scrollIntoView({block:"nearest"})})}_e("ArrowUp",v=>{v.preventDefault(),M.value--,M.value<0&&(M.value=w.value.length-1),U.value=!0,q()}),_e("ArrowDown",v=>{v.preventDefault(),M.value++,M.value>=w.value.length&&(M.value=0),U.value=!0,q()});const N=Vt();_e("Enter",v=>{if(v.isComposing||v.target instanceof HTMLButtonElement&&v.target.type!=="submit")return;const p=w.value[M.value];if(v.target instanceof HTMLInputElement&&!p){v.preventDefault();return}p&&(N.go(p.id),t("close"))}),_e("Escape",()=>{t("close")});const d=ns({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Me(()=>{window.history.pushState(null,"",null)}),$t("popstate",v=>{v.preventDefault(),t("close")});const g=Bt(Wt?document.body:null);Me(()=>{he(()=>{g.value=!0,he().then(()=>o())})}),Kt(()=>{g.value=!1});function T(){f.value="",he().then(()=>$(!1))}function k(v){return new RegExp([...v].sort((p,E)=>E.length-p.length).map(p=>`(${es(p)})`).join("|"),"gi")}function O(v){var F;if(!U.value)return;const p=(F=v.target)==null?void 0:F.closest(".result"),E=Number.parseInt(p==null?void 0:p.dataset.index);E>=0&&E!==M.value&&(M.value=E),U.value=!1}return(v,p)=>{var E,F,z,P,j;return H(),Jt(Qt,{to:"body"},[_("div",{ref_key:"el",ref:s,role:"button","aria-owns":(E=w.value)!=null&&E.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[_("div",{class:"backdrop",onClick:p[0]||(p[0]=I=>v.$emit("close"))}),_("div",Zs,[_("form",{class:"search-bar",onPointerup:p[4]||(p[4]=I=>be(I)),onSubmit:p[5]||(p[5]=Ut(()=>{},["prevent"]))},[_("label",{title:x.value,id:"localsearch-label",for:"localsearch-input"},p[7]||(p[7]=[_("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)]),8,Xs),_("div",en,[_("button",{class:"back-button",title:L(d)("modal.backButtonTitle"),onClick:p[1]||(p[1]=I=>v.$emit("close"))},p[8]||(p[8]=[_("span",{class:"vpi-arrow-left local-search-icon"},null,-1)]),8,tn)]),qt(_("input",{ref_key:"searchInput",ref:W,"onUpdate:modelValue":p[2]||(p[2]=I=>Ht(f)?f.value=I:null),"aria-activedescendant":M.value>-1?"localsearch-item-"+M.value:void 0,"aria-autocomplete":"both","aria-controls":(F=w.value)!=null&&F.length?"localsearch-list":void 0,"aria-labelledby":"localsearch-label",autocapitalize:"off",autocomplete:"off",autocorrect:"off",class:"search-input",id:"localsearch-input",enterkeyhint:"go",maxlength:"64",placeholder:x.value,spellcheck:"false",type:"search"},null,8,sn),[[Gt,L(f)]]),_("div",nn,[y.value?Se("",!0):(H(),Z("button",{key:0,class:nt(["toggle-layout-button",{"detailed-list":L(b)}]),type:"button",title:L(d)("modal.displayDetails"),onClick:p[3]||(p[3]=I=>M.value>-1&&(b.value=!L(b)))},p[9]||(p[9]=[_("span",{class:"vpi-layout-list local-search-icon"},null,-1)]),10,rn)),_("button",{class:"clear-button",type:"reset",disabled:V.value,title:L(d)("modal.resetButtonTitle"),onClick:T},p[10]||(p[10]=[_("span",{class:"vpi-delete local-search-icon"},null,-1)]),8,an)])],32),_("ul",{ref_key:"resultsEl",ref:n,id:(z=w.value)!=null&&z.length?"localsearch-list":void 0,role:(P=w.value)!=null&&P.length?"listbox":void 0,"aria-labelledby":(j=w.value)!=null&&j.length?"localsearch-label":void 0,class:"results",onMousemove:O},[(H(!0),Z(rt,null,it(w.value,(I,K)=>(H(),Z("li",{key:I.id,id:"localsearch-item-"+K,"aria-selected":M.value===K?"true":"false",role:"option"},[_("a",{href:I.id,class:nt(["result",{selected:M.value===K}]),"aria-label":[...I.titles,I.title].join(" > "),onMouseenter:ee=>!U.value&&(M.value=K),onFocusin:ee=>M.value=K,onClick:p[6]||(p[6]=ee=>v.$emit("close")),"data-index":K},[_("div",null,[_("div",un,[p[12]||(p[12]=_("span",{class:"title-icon"},"#",-1)),(H(!0),Z(rt,null,it(I.titles,(ee,ye)=>(H(),Z("span",{key:ye,class:"title"},[_("span",{class:"text",innerHTML:ee},null,8,dn),p[11]||(p[11]=_("span",{class:"vpi-chevron-right local-search-icon"},null,-1))]))),128)),_("span",hn,[_("span",{class:"text",innerHTML:I.title},null,8,fn)])]),L(b)?(H(),Z("div",pn,[I.text?(H(),Z("div",vn,[_("div",{class:"vp-doc",innerHTML:I.text},null,8,mn)])):Se("",!0),p[13]||(p[13]=_("div",{class:"excerpt-gradient-bottom"},null,-1)),p[14]||(p[14]=_("div",{class:"excerpt-gradient-top"},null,-1))])):Se("",!0)])],42,cn)],8,ln))),128)),L(f)&&!w.value.length&&R.value?(H(),Z("li",gn,[fe(pe(L(d)("modal.noResultsText"))+' "',1),_("strong",null,pe(L(f)),1),p[15]||(p[15]=fe('" '))])):Se("",!0)],40,on),_("div",bn,[_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.navigateUpKeyAriaLabel")},p[16]||(p[16]=[_("span",{class:"vpi-arrow-up navigate-icon"},null,-1)]),8,yn),_("kbd",{"aria-label":L(d)("modal.footer.navigateDownKeyAriaLabel")},p[17]||(p[17]=[_("span",{class:"vpi-arrow-down navigate-icon"},null,-1)]),8,wn),fe(" "+pe(L(d)("modal.footer.navigateText")),1)]),_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.selectKeyAriaLabel")},p[18]||(p[18]=[_("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)]),8,xn),fe(" "+pe(L(d)("modal.footer.selectText")),1)]),_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.closeKeyAriaLabel")},"esc",8,_n),fe(" "+pe(L(d)("modal.footer.closeText")),1)])])])],8,Ys)])}}}),Fn=ts(Sn,[["__scopeId","data-v-ce626c7c"]]);export{Fn as default}; diff --git a/assets/chunks/framework.D6W_pQcY.js b/assets/chunks/framework.D6W_pQcY.js new file mode 100644 index 00000000..6f151c0a --- /dev/null +++ b/assets/chunks/framework.D6W_pQcY.js @@ -0,0 +1,18 @@ +/** +* @vue/shared v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function $s(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Z={},Et=[],ke=()=>{},qo=()=>!1,en=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ds=e=>e.startsWith("onUpdate:"),ae=Object.assign,js=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Go=Object.prototype.hasOwnProperty,z=(e,t)=>Go.call(e,t),W=Array.isArray,Tt=e=>In(e)==="[object Map]",oi=e=>In(e)==="[object Set]",q=e=>typeof e=="function",re=e=>typeof e=="string",Xe=e=>typeof e=="symbol",ne=e=>e!==null&&typeof e=="object",li=e=>(ne(e)||q(e))&&q(e.then)&&q(e.catch),ci=Object.prototype.toString,In=e=>ci.call(e),Yo=e=>In(e).slice(8,-1),ai=e=>In(e)==="[object Object]",Vs=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ct=$s(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Nn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Xo=/-(\w)/g,Le=Nn(e=>e.replace(Xo,(t,n)=>n?n.toUpperCase():"")),Jo=/\B([A-Z])/g,st=Nn(e=>e.replace(Jo,"-$1").toLowerCase()),Fn=Nn(e=>e.charAt(0).toUpperCase()+e.slice(1)),_n=Nn(e=>e?`on${Fn(e)}`:""),tt=(e,t)=>!Object.is(e,t),bn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},ws=e=>{const t=parseFloat(e);return isNaN(t)?e:t},zo=e=>{const t=re(e)?Number(e):NaN;return isNaN(t)?e:t};let fr;const Hn=()=>fr||(fr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function $n(e){if(W(e)){const t={};for(let n=0;n{if(n){const s=n.split(Zo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Dn(e){let t="";if(re(e))t=e;else if(W(e))for(let n=0;n!!(e&&e.__v_isRef===!0),rl=e=>re(e)?e:e==null?"":W(e)||ne(e)&&(e.toString===ci||!q(e.toString))?di(e)?rl(e.value):JSON.stringify(e,hi,2):String(e),hi=(e,t)=>di(t)?hi(e,t.value):Tt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[es(s,i)+" =>"]=r,n),{})}:oi(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>es(n))}:Xe(t)?es(t):ne(t)&&!W(t)&&!ai(t)?String(t):t,es=(e,t="")=>{var n;return Xe(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let we;class il{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=we,!t&&we&&(this.index=(we.scopes||(we.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;if(jt){let t=jt;for(jt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Dt;){let t=Dt;for(Dt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function vi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function _i(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Bs(s),ll(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function Ss(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(bi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function bi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Kt))return;e.globalVersion=Kt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!Ss(e)){e.flags&=-3;return}const n=te,s=Ne;te=e,Ne=!0;try{vi(e);const r=e.fn(e._value);(t.version===0||tt(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{te=n,Ne=s,_i(e),e.flags&=-3}}function Bs(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)Bs(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function ll(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ne=!0;const wi=[];function rt(){wi.push(Ne),Ne=!1}function it(){const e=wi.pop();Ne=e===void 0?!0:e}function ur(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=te;te=void 0;try{t()}finally{te=n}}}let Kt=0;class cl{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class jn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!te||!Ne||te===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==te)n=this.activeLink=new cl(te,this),te.deps?(n.prevDep=te.depsTail,te.depsTail.nextDep=n,te.depsTail=n):te.deps=te.depsTail=n,Si(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=te.depsTail,n.nextDep=void 0,te.depsTail.nextDep=n,te.depsTail=n,te.deps===n&&(te.deps=s)}return n}trigger(t){this.version++,Kt++,this.notify(t)}notify(t){Us();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{ks()}}}function Si(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)Si(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Cn=new WeakMap,dt=Symbol(""),xs=Symbol(""),qt=Symbol("");function me(e,t,n){if(Ne&&te){let s=Cn.get(e);s||Cn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new jn),r.map=s,r.key=n),r.track()}}function Ge(e,t,n,s,r,i){const o=Cn.get(e);if(!o){Kt++;return}const l=c=>{c&&c.trigger()};if(Us(),t==="clear")o.forEach(l);else{const c=W(e),f=c&&Vs(n);if(c&&n==="length"){const a=Number(s);o.forEach((h,y)=>{(y==="length"||y===qt||!Xe(y)&&y>=a)&&l(h)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),f&&l(o.get(qt)),t){case"add":c?f&&l(o.get("length")):(l(o.get(dt)),Tt(e)&&l(o.get(xs)));break;case"delete":c||(l(o.get(dt)),Tt(e)&&l(o.get(xs)));break;case"set":Tt(e)&&l(o.get(dt));break}}ks()}function al(e,t){const n=Cn.get(e);return n&&n.get(t)}function _t(e){const t=J(e);return t===e?t:(me(t,"iterate",qt),Pe(e)?t:t.map(ye))}function Vn(e){return me(e=J(e),"iterate",qt),e}const fl={__proto__:null,[Symbol.iterator](){return ns(this,Symbol.iterator,ye)},concat(...e){return _t(this).concat(...e.map(t=>W(t)?_t(t):t))},entries(){return ns(this,"entries",e=>(e[1]=ye(e[1]),e))},every(e,t){return We(this,"every",e,t,void 0,arguments)},filter(e,t){return We(this,"filter",e,t,n=>n.map(ye),arguments)},find(e,t){return We(this,"find",e,t,ye,arguments)},findIndex(e,t){return We(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return We(this,"findLast",e,t,ye,arguments)},findLastIndex(e,t){return We(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return We(this,"forEach",e,t,void 0,arguments)},includes(...e){return ss(this,"includes",e)},indexOf(...e){return ss(this,"indexOf",e)},join(e){return _t(this).join(e)},lastIndexOf(...e){return ss(this,"lastIndexOf",e)},map(e,t){return We(this,"map",e,t,void 0,arguments)},pop(){return Ft(this,"pop")},push(...e){return Ft(this,"push",e)},reduce(e,...t){return dr(this,"reduce",e,t)},reduceRight(e,...t){return dr(this,"reduceRight",e,t)},shift(){return Ft(this,"shift")},some(e,t){return We(this,"some",e,t,void 0,arguments)},splice(...e){return Ft(this,"splice",e)},toReversed(){return _t(this).toReversed()},toSorted(e){return _t(this).toSorted(e)},toSpliced(...e){return _t(this).toSpliced(...e)},unshift(...e){return Ft(this,"unshift",e)},values(){return ns(this,"values",ye)}};function ns(e,t,n){const s=Vn(e),r=s[t]();return s!==e&&!Pe(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=n(i.value)),i}),r}const ul=Array.prototype;function We(e,t,n,s,r,i){const o=Vn(e),l=o!==e&&!Pe(e),c=o[t];if(c!==ul[t]){const h=c.apply(e,i);return l?ye(h):h}let f=n;o!==e&&(l?f=function(h,y){return n.call(this,ye(h),y,e)}:n.length>2&&(f=function(h,y){return n.call(this,h,y,e)}));const a=c.call(o,f,s);return l&&r?r(a):a}function dr(e,t,n,s){const r=Vn(e);let i=n;return r!==e&&(Pe(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,ye(l),c,e)}),r[t](i,...s)}function ss(e,t,n){const s=J(e);me(s,"iterate",qt);const r=s[t](...n);return(r===-1||r===!1)&&qs(n[0])?(n[0]=J(n[0]),s[t](...n)):r}function Ft(e,t,n=[]){rt(),Us();const s=J(e)[t].apply(e,n);return ks(),it(),s}const dl=$s("__proto__,__v_isRef,__isVue"),xi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Xe));function hl(e){Xe(e)||(e=String(e));const t=J(this);return me(t,"has",e),t.hasOwnProperty(e)}class Ei{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?xl:Ri:i?Ai:Ci).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=W(t);if(!r){let c;if(o&&(c=fl[n]))return c;if(n==="hasOwnProperty")return hl}const l=Reflect.get(t,n,fe(t)?t:s);return(Xe(n)?xi.has(n):dl(n))||(r||me(t,"get",n),i)?l:fe(l)?o&&Vs(n)?l:l.value:ne(l)?r?kn(l):Un(l):l}}class Ti extends Ei{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=yt(i);if(!Pe(s)&&!yt(s)&&(i=J(i),s=J(s)),!W(t)&&fe(i)&&!fe(s))return c?!1:(i.value=s,!0)}const o=W(t)&&Vs(n)?Number(n)e,cn=e=>Reflect.getPrototypeOf(e);function vl(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=Tt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=r[e](...s),a=n?Es:t?Ts:ye;return!t&&me(i,"iterate",c?xs:dt),{next(){const{value:h,done:y}=f.next();return y?{value:h,done:y}:{value:l?[a(h[0]),a(h[1])]:a(h),done:y}},[Symbol.iterator](){return this}}}}function an(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function _l(e,t){const n={get(r){const i=this.__v_raw,o=J(i),l=J(r);e||(tt(r,l)&&me(o,"get",r),me(o,"get",l));const{has:c}=cn(o),f=t?Es:e?Ts:ye;if(c.call(o,r))return f(i.get(r));if(c.call(o,l))return f(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&me(J(r),"iterate",dt),Reflect.get(r,"size",r)},has(r){const i=this.__v_raw,o=J(i),l=J(r);return e||(tt(r,l)&&me(o,"has",r),me(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=J(l),f=t?Es:e?Ts:ye;return!e&&me(c,"iterate",dt),l.forEach((a,h)=>r.call(i,f(a),f(h),o))}};return ae(n,e?{add:an("add"),set:an("set"),delete:an("delete"),clear:an("clear")}:{add(r){!t&&!Pe(r)&&!yt(r)&&(r=J(r));const i=J(this);return cn(i).has.call(i,r)||(i.add(r),Ge(i,"add",r,r)),this},set(r,i){!t&&!Pe(i)&&!yt(i)&&(i=J(i));const o=J(this),{has:l,get:c}=cn(o);let f=l.call(o,r);f||(r=J(r),f=l.call(o,r));const a=c.call(o,r);return o.set(r,i),f?tt(i,a)&&Ge(o,"set",r,i):Ge(o,"add",r,i),this},delete(r){const i=J(this),{has:o,get:l}=cn(i);let c=o.call(i,r);c||(r=J(r),c=o.call(i,r)),l&&l.call(i,r);const f=i.delete(r);return c&&Ge(i,"delete",r,void 0),f},clear(){const r=J(this),i=r.size!==0,o=r.clear();return i&&Ge(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=vl(r,e,t)}),n}function Ws(e,t){const n=_l(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(z(n,r)&&r in s?n:s,r,i)}const bl={get:Ws(!1,!1)},wl={get:Ws(!1,!0)},Sl={get:Ws(!0,!1)};const Ci=new WeakMap,Ai=new WeakMap,Ri=new WeakMap,xl=new WeakMap;function El(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Tl(e){return e.__v_skip||!Object.isExtensible(e)?0:El(Yo(e))}function Un(e){return yt(e)?e:Ks(e,!1,gl,bl,Ci)}function Cl(e){return Ks(e,!1,yl,wl,Ai)}function kn(e){return Ks(e,!0,ml,Sl,Ri)}function Ks(e,t,n,s,r){if(!ne(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=Tl(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function ht(e){return yt(e)?ht(e.__v_raw):!!(e&&e.__v_isReactive)}function yt(e){return!!(e&&e.__v_isReadonly)}function Pe(e){return!!(e&&e.__v_isShallow)}function qs(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function wn(e){return!z(e,"__v_skip")&&Object.isExtensible(e)&&fi(e,"__v_skip",!0),e}const ye=e=>ne(e)?Un(e):e,Ts=e=>ne(e)?kn(e):e;function fe(e){return e?e.__v_isRef===!0:!1}function oe(e){return Oi(e,!1)}function Gs(e){return Oi(e,!0)}function Oi(e,t){return fe(e)?e:new Al(e,t)}class Al{constructor(t,n){this.dep=new jn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:J(t),this._value=n?t:ye(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Pe(t)||yt(t);t=s?t:J(t),tt(t,n)&&(this._rawValue=t,this._value=s?t:ye(t),this.dep.trigger())}}function Mi(e){return fe(e)?e.value:e}const Rl={get:(e,t,n)=>t==="__v_raw"?e:Mi(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return fe(r)&&!fe(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Pi(e){return ht(e)?e:new Proxy(e,Rl)}class Ol{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new jn,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Ml(e){return new Ol(e)}class Pl{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return al(J(this._object),this._key)}}class Ll{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Il(e,t,n){return fe(e)?e:q(e)?new Ll(e):ne(e)&&arguments.length>1?Nl(e,t,n):oe(e)}function Nl(e,t,n){const s=e[t];return fe(s)?s:new Pl(e,t,n)}class Fl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new jn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Kt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&te!==this)return yi(this,!0),!0}get value(){const t=this.dep.track();return bi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Hl(e,t,n=!1){let s,r;return q(e)?s=e:(s=e.get,r=e.set),new Fl(s,r,n)}const fn={},An=new WeakMap;let ft;function $l(e,t=!1,n=ft){if(n){let s=An.get(n);s||An.set(n,s=[]),s.push(e)}}function Dl(e,t,n=Z){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,f=g=>r?g:Pe(g)||r===!1||r===0?Ye(g,1):Ye(g);let a,h,y,v,S=!1,_=!1;if(fe(e)?(h=()=>e.value,S=Pe(e)):ht(e)?(h=()=>f(e),S=!0):W(e)?(_=!0,S=e.some(g=>ht(g)||Pe(g)),h=()=>e.map(g=>{if(fe(g))return g.value;if(ht(g))return f(g);if(q(g))return c?c(g,2):g()})):q(e)?t?h=c?()=>c(e,2):e:h=()=>{if(y){rt();try{y()}finally{it()}}const g=ft;ft=a;try{return c?c(e,3,[v]):e(v)}finally{ft=g}}:h=ke,t&&r){const g=h,O=r===!0?1/0:r;h=()=>Ye(g(),O)}const K=pi(),N=()=>{a.stop(),K&&K.active&&js(K.effects,a)};if(i&&t){const g=t;t=(...O)=>{g(...O),N()}}let j=_?new Array(e.length).fill(fn):fn;const p=g=>{if(!(!(a.flags&1)||!a.dirty&&!g))if(t){const O=a.run();if(r||S||(_?O.some((F,$)=>tt(F,j[$])):tt(O,j))){y&&y();const F=ft;ft=a;try{const $=[O,j===fn?void 0:_&&j[0]===fn?[]:j,v];c?c(t,3,$):t(...$),j=O}finally{ft=F}}}else a.run()};return l&&l(p),a=new gi(h),a.scheduler=o?()=>o(p,!1):p,v=g=>$l(g,!1,a),y=a.onStop=()=>{const g=An.get(a);if(g){if(c)c(g,4);else for(const O of g)O();An.delete(a)}},t?s?p(!0):j=a.run():o?o(p.bind(null,!0),!0):a.run(),N.pause=a.pause.bind(a),N.resume=a.resume.bind(a),N.stop=N,N}function Ye(e,t=1/0,n){if(t<=0||!ne(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,fe(e))Ye(e.value,t,n);else if(W(e))for(let s=0;s{Ye(s,t,n)});else if(ai(e)){for(const s in e)Ye(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Ye(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function tn(e,t,n,s){try{return s?e(...s):e()}catch(r){nn(r,t,n)}}function He(e,t,n,s){if(q(e)){const r=tn(e,t,n,s);return r&&li(r)&&r.catch(i=>{nn(i,t,n)}),r}if(W(e)){const r=[];for(let i=0;i>>1,r=Se[s],i=Gt(r);i=Gt(n)?Se.push(e):Se.splice(Vl(t),0,e),e.flags|=1,Ii()}}function Ii(){Rn||(Rn=Li.then(Ni))}function Ul(e){W(e)?At.push(...e):Qe&&e.id===-1?Qe.splice(wt+1,0,e):e.flags&1||(At.push(e),e.flags|=1),Ii()}function hr(e,t,n=Ve+1){for(;nGt(n)-Gt(s));if(At.length=0,Qe){Qe.push(...t);return}for(Qe=t,wt=0;wte.id==null?e.flags&2?-1:1/0:e.id;function Ni(e){try{for(Ve=0;VeFi;function Fi(e,t=de,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&Rr(-1);const i=Mn(t);let o;try{o=e(...r)}finally{Mn(i),s._d&&Rr(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function xf(e,t){if(de===null)return e;const n=Jn(de),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,Vt=e=>e&&(e.disabled||e.disabled===""),pr=e=>e&&(e.defer||e.defer===""),gr=e=>typeof SVGElement<"u"&&e instanceof SVGElement,mr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Cs=(e,t)=>{const n=e&&e.to;return re(n)?t?t(n):null:n},Di={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,i,o,l,c,f){const{mc:a,pc:h,pbc:y,o:{insert:v,querySelector:S,createText:_,createComment:K}}=f,N=Vt(t.props);let{shapeFlag:j,children:p,dynamicChildren:g}=t;if(e==null){const O=t.el=_(""),F=t.anchor=_("");v(O,n,s),v(F,n,s);const $=(R,b)=>{j&16&&(r&&r.isCE&&(r.ce._teleportTarget=R),a(p,R,b,r,i,o,l,c))},V=()=>{const R=t.target=Cs(t.props,S),b=ji(R,t,_,v);R&&(o!=="svg"&&gr(R)?o="svg":o!=="mathml"&&mr(R)&&(o="mathml"),N||($(R,b),Sn(t,!1)))};N&&($(n,F),Sn(t,!0)),pr(t.props)?be(()=>{V(),t.el.__isMounted=!0},i):V()}else{if(pr(t.props)&&!e.el.__isMounted){be(()=>{Di.process(e,t,n,s,r,i,o,l,c,f),delete e.el.__isMounted},i);return}t.el=e.el,t.targetStart=e.targetStart;const O=t.anchor=e.anchor,F=t.target=e.target,$=t.targetAnchor=e.targetAnchor,V=Vt(e.props),R=V?n:F,b=V?O:$;if(o==="svg"||gr(F)?o="svg":(o==="mathml"||mr(F))&&(o="mathml"),g?(y(e.dynamicChildren,g,R,r,i,o,l),Zs(e,t,!0)):c||h(e,t,R,b,r,i,o,l,!1),N)V?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):un(t,n,O,f,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const I=t.target=Cs(t.props,S);I&&un(t,I,null,f,0)}else V&&un(t,F,$,f,1);Sn(t,N)}},remove(e,t,n,{um:s,o:{remove:r}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:f,targetAnchor:a,target:h,props:y}=e;if(h&&(r(f),r(a)),i&&r(c),o&16){const v=i||!Vt(y);for(let S=0;S{e.isMounted=!0}),qi(()=>{e.isUnmounting=!0}),e}const Re=[Function,Array],Vi={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Re,onEnter:Re,onAfterEnter:Re,onEnterCancelled:Re,onBeforeLeave:Re,onLeave:Re,onAfterLeave:Re,onLeaveCancelled:Re,onBeforeAppear:Re,onAppear:Re,onAfterAppear:Re,onAppearCancelled:Re},Ui=e=>{const t=e.subTree;return t.component?Ui(t.component):t},Wl={name:"BaseTransition",props:Vi,setup(e,{slots:t}){const n=Xn(),s=Bl();return()=>{const r=t.default&&Wi(t.default(),!0);if(!r||!r.length)return;const i=ki(r),o=J(e),{mode:l}=o;if(s.isLeaving)return rs(i);const c=yr(i);if(!c)return rs(i);let f=As(c,o,s,n,h=>f=h);c.type!==ve&&Yt(c,f);let a=n.subTree&&yr(n.subTree);if(a&&a.type!==ve&&!ut(c,a)&&Ui(n).type!==ve){let h=As(a,o,s,n);if(Yt(a,h),l==="out-in"&&c.type!==ve)return s.isLeaving=!0,h.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete h.afterLeave,a=void 0},rs(i);l==="in-out"&&c.type!==ve?h.delayLeave=(y,v,S)=>{const _=Bi(s,a);_[String(a.key)]=a,y[Ze]=()=>{v(),y[Ze]=void 0,delete f.delayedLeave,a=void 0},f.delayedLeave=()=>{S(),delete f.delayedLeave,a=void 0}}:a=void 0}else a&&(a=void 0);return i}}};function ki(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ve){t=n;break}}return t}const Kl=Wl;function Bi(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function As(e,t,n,s,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:f,onAfterEnter:a,onEnterCancelled:h,onBeforeLeave:y,onLeave:v,onAfterLeave:S,onLeaveCancelled:_,onBeforeAppear:K,onAppear:N,onAfterAppear:j,onAppearCancelled:p}=t,g=String(e.key),O=Bi(n,e),F=(R,b)=>{R&&He(R,s,9,b)},$=(R,b)=>{const I=b[1];F(R,b),W(R)?R.every(x=>x.length<=1)&&I():R.length<=1&&I()},V={mode:o,persisted:l,beforeEnter(R){let b=c;if(!n.isMounted)if(i)b=K||c;else return;R[Ze]&&R[Ze](!0);const I=O[g];I&&ut(e,I)&&I.el[Ze]&&I.el[Ze](),F(b,[R])},enter(R){let b=f,I=a,x=h;if(!n.isMounted)if(i)b=N||f,I=j||a,x=p||h;else return;let B=!1;const se=R[dn]=le=>{B||(B=!0,le?F(x,[R]):F(I,[R]),V.delayedLeave&&V.delayedLeave(),R[dn]=void 0)};b?$(b,[R,se]):se()},leave(R,b){const I=String(e.key);if(R[dn]&&R[dn](!0),n.isUnmounting)return b();F(y,[R]);let x=!1;const B=R[Ze]=se=>{x||(x=!0,b(),se?F(_,[R]):F(S,[R]),R[Ze]=void 0,O[I]===e&&delete O[I])};O[I]=e,v?$(v,[R,B]):B()},clone(R){const b=As(R,t,n,s,r);return r&&r(b),b}};return V}function rs(e){if(sn(e))return e=nt(e),e.children=null,e}function yr(e){if(!sn(e))return $i(e.type)&&e.children?ki(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&q(n.default))return n.default()}}function Yt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Yt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Wi(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;iXt(S,t&&(W(t)?t[_]:t),n,s,r));return}if(pt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Xt(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?Jn(s.component):s.el,o=r?null:i,{i:l,r:c}=e,f=t&&t.r,a=l.refs===Z?l.refs={}:l.refs,h=l.setupState,y=J(h),v=h===Z?()=>!1:S=>z(y,S);if(f!=null&&f!==c&&(re(f)?(a[f]=null,v(f)&&(h[f]=null)):fe(f)&&(f.value=null)),q(c))tn(c,l,12,[o,a]);else{const S=re(c),_=fe(c);if(S||_){const K=()=>{if(e.f){const N=S?v(c)?h[c]:a[c]:c.value;r?W(N)&&js(N,i):W(N)?N.includes(i)||N.push(i):S?(a[c]=[i],v(c)&&(h[c]=a[c])):(c.value=[i],e.k&&(a[e.k]=c.value))}else S?(a[c]=o,v(c)&&(h[c]=o)):_&&(c.value=o,e.k&&(a[e.k]=o))};o?(K.id=-1,be(K,n)):K()}}}let vr=!1;const bt=()=>{vr||(console.error("Hydration completed but contains mismatches."),vr=!0)},ql=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Gl=e=>e.namespaceURI.includes("MathML"),hn=e=>{if(e.nodeType===1){if(ql(e))return"svg";if(Gl(e))return"mathml"}},xt=e=>e.nodeType===8;function Yl(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:f}}=e,a=(p,g)=>{if(!g.hasChildNodes()){n(null,p,g),On(),g._vnode=p;return}h(g.firstChild,p,null,null,null),On(),g._vnode=p},h=(p,g,O,F,$,V=!1)=>{V=V||!!g.dynamicChildren;const R=xt(p)&&p.data==="[",b=()=>_(p,g,O,F,$,R),{type:I,ref:x,shapeFlag:B,patchFlag:se}=g;let le=p.nodeType;g.el=p,se===-2&&(V=!1,g.dynamicChildren=null);let U=null;switch(I){case gt:le!==3?g.children===""?(c(g.el=r(""),o(p),p),U=p):U=b():(p.data!==g.children&&(bt(),p.data=g.children),U=i(p));break;case ve:j(p)?(U=i(p),N(g.el=p.content.firstChild,p,O)):le!==8||R?U=b():U=i(p);break;case kt:if(R&&(p=i(p),le=p.nodeType),le===1||le===3){U=p;const Y=!g.children.length;for(let D=0;D{V=V||!!g.dynamicChildren;const{type:R,props:b,patchFlag:I,shapeFlag:x,dirs:B,transition:se}=g,le=R==="input"||R==="option";if(le||I!==-1){B&&Ue(g,null,O,"created");let U=!1;if(j(p)){U=ao(null,se)&&O&&O.vnode.props&&O.vnode.props.appear;const D=p.content.firstChild;U&&se.beforeEnter(D),N(D,p,O),g.el=p=D}if(x&16&&!(b&&(b.innerHTML||b.textContent))){let D=v(p.firstChild,g,p,O,F,$,V);for(;D;){pn(p,1)||bt();const he=D;D=D.nextSibling,l(he)}}else if(x&8){let D=g.children;D[0]===` +`&&(p.tagName==="PRE"||p.tagName==="TEXTAREA")&&(D=D.slice(1)),p.textContent!==D&&(pn(p,0)||bt(),p.textContent=g.children)}if(b){if(le||!V||I&48){const D=p.tagName.includes("-");for(const he in b)(le&&(he.endsWith("value")||he==="indeterminate")||en(he)&&!Ct(he)||he[0]==="."||D)&&s(p,he,null,b[he],void 0,O)}else if(b.onClick)s(p,"onClick",null,b.onClick,void 0,O);else if(I&4&&ht(b.style))for(const D in b.style)b.style[D]}let Y;(Y=b&&b.onVnodeBeforeMount)&&Oe(Y,O,g),B&&Ue(g,null,O,"beforeMount"),((Y=b&&b.onVnodeMounted)||B||U)&&mo(()=>{Y&&Oe(Y,O,g),U&&se.enter(p),B&&Ue(g,null,O,"mounted")},F)}return p.nextSibling},v=(p,g,O,F,$,V,R)=>{R=R||!!g.dynamicChildren;const b=g.children,I=b.length;for(let x=0;x{const{slotScopeIds:R}=g;R&&($=$?$.concat(R):R);const b=o(p),I=v(i(p),g,b,O,F,$,V);return I&&xt(I)&&I.data==="]"?i(g.anchor=I):(bt(),c(g.anchor=f("]"),b,I),I)},_=(p,g,O,F,$,V)=>{if(pn(p.parentElement,1)||bt(),g.el=null,V){const I=K(p);for(;;){const x=i(p);if(x&&x!==I)l(x);else break}}const R=i(p),b=o(p);return l(p),n(null,g,b,R,O,F,hn(b),$),O&&(O.vnode.el=g.el,po(O,g.el)),R},K=(p,g="[",O="]")=>{let F=0;for(;p;)if(p=i(p),p&&xt(p)&&(p.data===g&&F++,p.data===O)){if(F===0)return i(p);F--}return p},N=(p,g,O)=>{const F=g.parentNode;F&&F.replaceChild(p,g);let $=O;for(;$;)$.vnode.el===g&&($.vnode.el=$.subTree.el=p),$=$.parent},j=p=>p.nodeType===1&&p.tagName==="TEMPLATE";return[a,h]}const _r="data-allow-mismatch",Xl={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function pn(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(_r);)e=e.parentElement;const n=e&&e.getAttribute(_r);if(n==null)return!1;if(n==="")return!0;{const s=n.split(",");return t===0&&s.includes("children")?!0:n.split(",").includes(Xl[t])}}Hn().requestIdleCallback;Hn().cancelIdleCallback;function Jl(e,t){if(xt(e)&&e.data==="["){let n=1,s=e.nextSibling;for(;s;){if(s.nodeType===1){if(t(s)===!1)break}else if(xt(s))if(s.data==="]"){if(--n===0)break}else s.data==="["&&n++;s=s.nextSibling}}else t(e)}const pt=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function Tf(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,hydrate:i,timeout:o,suspensible:l=!0,onError:c}=e;let f=null,a,h=0;const y=()=>(h++,f=null,v()),v=()=>{let S;return f||(S=f=t().catch(_=>{if(_=_ instanceof Error?_:new Error(String(_)),c)return new Promise((K,N)=>{c(_,()=>K(y()),()=>N(_),h+1)});throw _}).then(_=>S!==f&&f?f:(_&&(_.__esModule||_[Symbol.toStringTag]==="Module")&&(_=_.default),a=_,_)))};return Xs({name:"AsyncComponentWrapper",__asyncLoader:v,__asyncHydrate(S,_,K){const N=i?()=>{const j=i(K,p=>Jl(S,p));j&&(_.bum||(_.bum=[])).push(j)}:K;a?N():v().then(()=>!_.isUnmounted&&N())},get __asyncResolved(){return a},setup(){const S=ue;if(Js(S),a)return()=>is(a,S);const _=p=>{f=null,nn(p,S,13,!s)};if(l&&S.suspense||Mt)return v().then(p=>()=>is(p,S)).catch(p=>(_(p),()=>s?ce(s,{error:p}):null));const K=oe(!1),N=oe(),j=oe(!!r);return r&&setTimeout(()=>{j.value=!1},r),o!=null&&setTimeout(()=>{if(!K.value&&!N.value){const p=new Error(`Async component timed out after ${o}ms.`);_(p),N.value=p}},o),v().then(()=>{K.value=!0,S.parent&&sn(S.parent.vnode)&&S.parent.update()}).catch(p=>{_(p),N.value=p}),()=>{if(K.value&&a)return is(a,S);if(N.value&&s)return ce(s,{error:N.value});if(n&&!j.value)return ce(n)}}})}function is(e,t){const{ref:n,props:s,children:r,ce:i}=t.vnode,o=ce(e,s,r);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const sn=e=>e.type.__isKeepAlive;function zl(e,t){Ki(e,"a",t)}function Ql(e,t){Ki(e,"da",t)}function Ki(e,t,n=ue){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Kn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)sn(r.parent.vnode)&&Zl(s,t,n,r),r=r.parent}}function Zl(e,t,n,s){const r=Kn(t,e,s,!0);qn(()=>{js(s[t],r)},n)}function Kn(e,t,n=ue,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{rt();const l=rn(n),c=He(t,n,e,o);return l(),it(),c});return s?r.unshift(i):r.push(i),i}}const Je=e=>(t,n=ue)=>{(!Mt||e==="sp")&&Kn(e,(...s)=>t(...s),n)},ec=Je("bm"),Lt=Je("m"),tc=Je("bu"),nc=Je("u"),qi=Je("bum"),qn=Je("um"),sc=Je("sp"),rc=Je("rtg"),ic=Je("rtc");function oc(e,t=ue){Kn("ec",e,t)}const Gi="components";function Cf(e,t){return Xi(Gi,e,!0,t)||e}const Yi=Symbol.for("v-ndc");function Af(e){return re(e)?Xi(Gi,e,!1)||e:e||Yi}function Xi(e,t,n=!0,s=!1){const r=de||ue;if(r){const i=r.type;{const l=Wc(i,!1);if(l&&(l===t||l===Le(t)||l===Fn(Le(t))))return i}const o=br(r[e]||i[e],t)||br(r.appContext[e],t);return!o&&s?i:o}}function br(e,t){return e&&(e[t]||e[Le(t)]||e[Fn(Le(t))])}function Rf(e,t,n,s){let r;const i=n,o=W(e);if(o||re(e)){const l=o&&ht(e);let c=!1;l&&(c=!Pe(e),e=Vn(e)),r=new Array(e.length);for(let f=0,a=e.length;ft(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,f=l.length;czt(t)?!(t.type===ve||t.type===xe&&!Ji(t.children)):!0)?e:null}function Mf(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:_n(s)]=e[s];return n}const Rs=e=>e?wo(e)?Jn(e):Rs(e.parent):null,Ut=ae(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Rs(e.parent),$root:e=>Rs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>zs(e),$forceUpdate:e=>e.f||(e.f=()=>{Ys(e.update)}),$nextTick:e=>e.n||(e.n=Bn.bind(e.proxy)),$watch:e=>Rc.bind(e)}),os=(e,t)=>e!==Z&&!e.__isScriptSetup&&z(e,t),lc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const v=o[t];if(v!==void 0)switch(v){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(os(s,t))return o[t]=1,s[t];if(r!==Z&&z(r,t))return o[t]=2,r[t];if((f=e.propsOptions[0])&&z(f,t))return o[t]=3,i[t];if(n!==Z&&z(n,t))return o[t]=4,n[t];Os&&(o[t]=0)}}const a=Ut[t];let h,y;if(a)return t==="$attrs"&&me(e.attrs,"get",""),a(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==Z&&z(n,t))return o[t]=4,n[t];if(y=c.config.globalProperties,z(y,t))return y[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return os(r,t)?(r[t]=n,!0):s!==Z&&z(s,t)?(s[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==Z&&z(e,o)||os(t,o)||(l=i[0])&&z(l,o)||z(s,o)||z(Ut,o)||z(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Pf(){return cc().slots}function cc(){const e=Xn();return e.setupContext||(e.setupContext=xo(e))}function wr(e){return W(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Os=!0;function ac(e){const t=zs(e),n=e.proxy,s=e.ctx;Os=!1,t.beforeCreate&&Sr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:f,created:a,beforeMount:h,mounted:y,beforeUpdate:v,updated:S,activated:_,deactivated:K,beforeDestroy:N,beforeUnmount:j,destroyed:p,unmounted:g,render:O,renderTracked:F,renderTriggered:$,errorCaptured:V,serverPrefetch:R,expose:b,inheritAttrs:I,components:x,directives:B,filters:se}=t;if(f&&fc(f,s,null),o)for(const Y in o){const D=o[Y];q(D)&&(s[Y]=D.bind(n))}if(r){const Y=r.call(n,n);ne(Y)&&(e.data=Un(Y))}if(Os=!0,i)for(const Y in i){const D=i[Y],he=q(D)?D.bind(n,n):q(D.get)?D.get.bind(n,n):ke,on=!q(D)&&q(D.set)?D.set.bind(n):ke,ot=ie({get:he,set:on});Object.defineProperty(s,Y,{enumerable:!0,configurable:!0,get:()=>ot.value,set:De=>ot.value=De})}if(l)for(const Y in l)zi(l[Y],s,n,Y);if(c){const Y=q(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(D=>{mc(D,Y[D])})}a&&Sr(a,e,"c");function U(Y,D){W(D)?D.forEach(he=>Y(he.bind(n))):D&&Y(D.bind(n))}if(U(ec,h),U(Lt,y),U(tc,v),U(nc,S),U(zl,_),U(Ql,K),U(oc,V),U(ic,F),U(rc,$),U(qi,j),U(qn,g),U(sc,R),W(b))if(b.length){const Y=e.exposed||(e.exposed={});b.forEach(D=>{Object.defineProperty(Y,D,{get:()=>n[D],set:he=>n[D]=he})})}else e.exposed||(e.exposed={});O&&e.render===ke&&(e.render=O),I!=null&&(e.inheritAttrs=I),x&&(e.components=x),B&&(e.directives=B),R&&Js(e)}function fc(e,t,n=ke){W(e)&&(e=Ms(e));for(const s in e){const r=e[s];let i;ne(r)?"default"in r?i=Ot(r.from||s,r.default,!0):i=Ot(r.from||s):i=Ot(r),fe(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function Sr(e,t,n){He(W(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function zi(e,t,n,s){let r=s.includes(".")?uo(n,s):()=>n[s];if(re(e)){const i=t[e];q(i)&&Fe(r,i)}else if(q(e))Fe(r,e.bind(n));else if(ne(e))if(W(e))e.forEach(i=>zi(i,t,n,s));else{const i=q(e.handler)?e.handler.bind(n):t[e.handler];q(i)&&Fe(r,i,e)}}function zs(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>Pn(c,f,o,!0)),Pn(c,t,o)),ne(t)&&i.set(t,c),c}function Pn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&Pn(e,i,n,!0),r&&r.forEach(o=>Pn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=uc[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const uc={data:xr,props:Er,emits:Er,methods:$t,computed:$t,beforeCreate:_e,created:_e,beforeMount:_e,mounted:_e,beforeUpdate:_e,updated:_e,beforeDestroy:_e,beforeUnmount:_e,destroyed:_e,unmounted:_e,activated:_e,deactivated:_e,errorCaptured:_e,serverPrefetch:_e,components:$t,directives:$t,watch:hc,provide:xr,inject:dc};function xr(e,t){return t?e?function(){return ae(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function dc(e,t){return $t(Ms(e),Ms(t))}function Ms(e){if(W(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(s&&s.proxy):t}}const Zi={},eo=()=>Object.create(Zi),to=e=>Object.getPrototypeOf(e)===Zi;function yc(e,t,n,s=!1){const r={},i=eo();e.propsDefaults=Object.create(null),no(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:Cl(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function vc(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let f=!1;if((s||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[y,v]=so(h,t,!0);ae(o,y),v&&l.push(...v)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!c)return ne(e)&&s.set(e,Et),Et;if(W(i))for(let a=0;ae[0]==="_"||e==="$stable",Qs=e=>W(e)?e.map(Me):[Me(e)],bc=(e,t,n)=>{if(t._n)return t;const s=Fi((...r)=>Qs(t(...r)),n);return s._c=!1,s},io=(e,t,n)=>{const s=e._ctx;for(const r in e){if(ro(r))continue;const i=e[r];if(q(i))t[r]=bc(r,i,s);else if(i!=null){const o=Qs(i);t[r]=()=>o}}},oo=(e,t)=>{const n=Qs(t);e.slots.default=()=>n},lo=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},wc=(e,t,n)=>{const s=e.slots=eo();if(e.vnode.shapeFlag&32){const r=t._;r?(lo(s,t,n),n&&fi(s,"_",r,!0)):io(t,s)}else t&&oo(e,t)},Sc=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=Z;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:lo(r,t,n):(i=!t.$stable,io(t,r)),o=t}else t&&(oo(e,t),o={default:1});if(i)for(const l in r)!ro(l)&&o[l]==null&&delete r[l]},be=mo;function xc(e){return co(e)}function Ec(e){return co(e,Yl)}function co(e,t){const n=Hn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:a,parentNode:h,nextSibling:y,setScopeId:v=ke,insertStaticContent:S}=e,_=(u,d,m,T=null,w=null,E=null,P=void 0,M=null,A=!!d.dynamicChildren)=>{if(u===d)return;u&&!ut(u,d)&&(T=ln(u),De(u,w,E,!0),u=null),d.patchFlag===-2&&(A=!1,d.dynamicChildren=null);const{type:C,ref:k,shapeFlag:L}=d;switch(C){case gt:K(u,d,m,T);break;case ve:N(u,d,m,T);break;case kt:u==null&&j(d,m,T,P);break;case xe:x(u,d,m,T,w,E,P,M,A);break;default:L&1?O(u,d,m,T,w,E,P,M,A):L&6?B(u,d,m,T,w,E,P,M,A):(L&64||L&128)&&C.process(u,d,m,T,w,E,P,M,A,vt)}k!=null&&w&&Xt(k,u&&u.ref,E,d||u,!d)},K=(u,d,m,T)=>{if(u==null)s(d.el=l(d.children),m,T);else{const w=d.el=u.el;d.children!==u.children&&f(w,d.children)}},N=(u,d,m,T)=>{u==null?s(d.el=c(d.children||""),m,T):d.el=u.el},j=(u,d,m,T)=>{[u.el,u.anchor]=S(u.children,d,m,T,u.el,u.anchor)},p=({el:u,anchor:d},m,T)=>{let w;for(;u&&u!==d;)w=y(u),s(u,m,T),u=w;s(d,m,T)},g=({el:u,anchor:d})=>{let m;for(;u&&u!==d;)m=y(u),r(u),u=m;r(d)},O=(u,d,m,T,w,E,P,M,A)=>{d.type==="svg"?P="svg":d.type==="math"&&(P="mathml"),u==null?F(d,m,T,w,E,P,M,A):R(u,d,w,E,P,M,A)},F=(u,d,m,T,w,E,P,M)=>{let A,C;const{props:k,shapeFlag:L,transition:H,dirs:G}=u;if(A=u.el=o(u.type,E,k&&k.is,k),L&8?a(A,u.children):L&16&&V(u.children,A,null,T,w,ls(u,E),P,M),G&&Ue(u,null,T,"created"),$(A,u,u.scopeId,P,T),k){for(const ee in k)ee!=="value"&&!Ct(ee)&&i(A,ee,null,k[ee],E,T);"value"in k&&i(A,"value",null,k.value,E),(C=k.onVnodeBeforeMount)&&Oe(C,T,u)}G&&Ue(u,null,T,"beforeMount");const X=ao(w,H);X&&H.beforeEnter(A),s(A,d,m),((C=k&&k.onVnodeMounted)||X||G)&&be(()=>{C&&Oe(C,T,u),X&&H.enter(A),G&&Ue(u,null,T,"mounted")},w)},$=(u,d,m,T,w)=>{if(m&&v(u,m),T)for(let E=0;E{for(let C=A;C{const M=d.el=u.el;let{patchFlag:A,dynamicChildren:C,dirs:k}=d;A|=u.patchFlag&16;const L=u.props||Z,H=d.props||Z;let G;if(m&<(m,!1),(G=H.onVnodeBeforeUpdate)&&Oe(G,m,d,u),k&&Ue(d,u,m,"beforeUpdate"),m&<(m,!0),(L.innerHTML&&H.innerHTML==null||L.textContent&&H.textContent==null)&&a(M,""),C?b(u.dynamicChildren,C,M,m,T,ls(d,w),E):P||D(u,d,M,null,m,T,ls(d,w),E,!1),A>0){if(A&16)I(M,L,H,m,w);else if(A&2&&L.class!==H.class&&i(M,"class",null,H.class,w),A&4&&i(M,"style",L.style,H.style,w),A&8){const X=d.dynamicProps;for(let ee=0;ee{G&&Oe(G,m,d,u),k&&Ue(d,u,m,"updated")},T)},b=(u,d,m,T,w,E,P)=>{for(let M=0;M{if(d!==m){if(d!==Z)for(const E in d)!Ct(E)&&!(E in m)&&i(u,E,d[E],null,w,T);for(const E in m){if(Ct(E))continue;const P=m[E],M=d[E];P!==M&&E!=="value"&&i(u,E,M,P,w,T)}"value"in m&&i(u,"value",d.value,m.value,w)}},x=(u,d,m,T,w,E,P,M,A)=>{const C=d.el=u?u.el:l(""),k=d.anchor=u?u.anchor:l("");let{patchFlag:L,dynamicChildren:H,slotScopeIds:G}=d;G&&(M=M?M.concat(G):G),u==null?(s(C,m,T),s(k,m,T),V(d.children||[],m,k,w,E,P,M,A)):L>0&&L&64&&H&&u.dynamicChildren?(b(u.dynamicChildren,H,m,w,E,P,M),(d.key!=null||w&&d===w.subTree)&&Zs(u,d,!0)):D(u,d,m,k,w,E,P,M,A)},B=(u,d,m,T,w,E,P,M,A)=>{d.slotScopeIds=M,u==null?d.shapeFlag&512?w.ctx.activate(d,m,T,P,A):se(d,m,T,w,E,P,A):le(u,d,A)},se=(u,d,m,T,w,E,P)=>{const M=u.component=Vc(u,T,w);if(sn(u)&&(M.ctx.renderer=vt),Uc(M,!1,P),M.asyncDep){if(w&&w.registerDep(M,U,P),!u.el){const A=M.subTree=ce(ve);N(null,A,d,m)}}else U(M,u,d,m,w,E,P)},le=(u,d,m)=>{const T=d.component=u.component;if(Ic(u,d,m))if(T.asyncDep&&!T.asyncResolved){Y(T,d,m);return}else T.next=d,T.update();else d.el=u.el,T.vnode=d},U=(u,d,m,T,w,E,P)=>{const M=()=>{if(u.isMounted){let{next:L,bu:H,u:G,parent:X,vnode:ee}=u;{const Te=fo(u);if(Te){L&&(L.el=ee.el,Y(u,L,P)),Te.asyncDep.then(()=>{u.isUnmounted||M()});return}}let Q=L,Ee;lt(u,!1),L?(L.el=ee.el,Y(u,L,P)):L=ee,H&&bn(H),(Ee=L.props&&L.props.onVnodeBeforeUpdate)&&Oe(Ee,X,L,ee),lt(u,!0);const pe=cs(u),Ie=u.subTree;u.subTree=pe,_(Ie,pe,h(Ie.el),ln(Ie),u,w,E),L.el=pe.el,Q===null&&po(u,pe.el),G&&be(G,w),(Ee=L.props&&L.props.onVnodeUpdated)&&be(()=>Oe(Ee,X,L,ee),w)}else{let L;const{el:H,props:G}=d,{bm:X,m:ee,parent:Q,root:Ee,type:pe}=u,Ie=pt(d);if(lt(u,!1),X&&bn(X),!Ie&&(L=G&&G.onVnodeBeforeMount)&&Oe(L,Q,d),lt(u,!0),H&&Zn){const Te=()=>{u.subTree=cs(u),Zn(H,u.subTree,u,w,null)};Ie&&pe.__asyncHydrate?pe.__asyncHydrate(H,u,Te):Te()}else{Ee.ce&&Ee.ce._injectChildStyle(pe);const Te=u.subTree=cs(u);_(null,Te,m,T,u,w,E),d.el=Te.el}if(ee&&be(ee,w),!Ie&&(L=G&&G.onVnodeMounted)){const Te=d;be(()=>Oe(L,Q,Te),w)}(d.shapeFlag&256||Q&&pt(Q.vnode)&&Q.vnode.shapeFlag&256)&&u.a&&be(u.a,w),u.isMounted=!0,d=m=T=null}};u.scope.on();const A=u.effect=new gi(M);u.scope.off();const C=u.update=A.run.bind(A),k=u.job=A.runIfDirty.bind(A);k.i=u,k.id=u.uid,A.scheduler=()=>Ys(k),lt(u,!0),C()},Y=(u,d,m)=>{d.component=u;const T=u.vnode.props;u.vnode=d,u.next=null,vc(u,d.props,T,m),Sc(u,d.children,m),rt(),hr(u),it()},D=(u,d,m,T,w,E,P,M,A=!1)=>{const C=u&&u.children,k=u?u.shapeFlag:0,L=d.children,{patchFlag:H,shapeFlag:G}=d;if(H>0){if(H&128){on(C,L,m,T,w,E,P,M,A);return}else if(H&256){he(C,L,m,T,w,E,P,M,A);return}}G&8?(k&16&&It(C,w,E),L!==C&&a(m,L)):k&16?G&16?on(C,L,m,T,w,E,P,M,A):It(C,w,E,!0):(k&8&&a(m,""),G&16&&V(L,m,T,w,E,P,M,A))},he=(u,d,m,T,w,E,P,M,A)=>{u=u||Et,d=d||Et;const C=u.length,k=d.length,L=Math.min(C,k);let H;for(H=0;Hk?It(u,w,E,!0,!1,L):V(d,m,T,w,E,P,M,A,L)},on=(u,d,m,T,w,E,P,M,A)=>{let C=0;const k=d.length;let L=u.length-1,H=k-1;for(;C<=L&&C<=H;){const G=u[C],X=d[C]=A?et(d[C]):Me(d[C]);if(ut(G,X))_(G,X,m,null,w,E,P,M,A);else break;C++}for(;C<=L&&C<=H;){const G=u[L],X=d[H]=A?et(d[H]):Me(d[H]);if(ut(G,X))_(G,X,m,null,w,E,P,M,A);else break;L--,H--}if(C>L){if(C<=H){const G=H+1,X=GH)for(;C<=L;)De(u[C],w,E,!0),C++;else{const G=C,X=C,ee=new Map;for(C=X;C<=H;C++){const Ce=d[C]=A?et(d[C]):Me(d[C]);Ce.key!=null&&ee.set(Ce.key,C)}let Q,Ee=0;const pe=H-X+1;let Ie=!1,Te=0;const Nt=new Array(pe);for(C=0;C=pe){De(Ce,w,E,!0);continue}let je;if(Ce.key!=null)je=ee.get(Ce.key);else for(Q=X;Q<=H;Q++)if(Nt[Q-X]===0&&ut(Ce,d[Q])){je=Q;break}je===void 0?De(Ce,w,E,!0):(Nt[je-X]=C+1,je>=Te?Te=je:Ie=!0,_(Ce,d[je],m,null,w,E,P,M,A),Ee++)}const cr=Ie?Tc(Nt):Et;for(Q=cr.length-1,C=pe-1;C>=0;C--){const Ce=X+C,je=d[Ce],ar=Ce+1{const{el:E,type:P,transition:M,children:A,shapeFlag:C}=u;if(C&6){ot(u.component.subTree,d,m,T);return}if(C&128){u.suspense.move(d,m,T);return}if(C&64){P.move(u,d,m,vt);return}if(P===xe){s(E,d,m);for(let L=0;LM.enter(E),w);else{const{leave:L,delayLeave:H,afterLeave:G}=M,X=()=>s(E,d,m),ee=()=>{L(E,()=>{X(),G&&G()})};H?H(E,X,ee):ee()}else s(E,d,m)},De=(u,d,m,T=!1,w=!1)=>{const{type:E,props:P,ref:M,children:A,dynamicChildren:C,shapeFlag:k,patchFlag:L,dirs:H,cacheIndex:G}=u;if(L===-2&&(w=!1),M!=null&&Xt(M,null,m,u,!0),G!=null&&(d.renderCache[G]=void 0),k&256){d.ctx.deactivate(u);return}const X=k&1&&H,ee=!pt(u);let Q;if(ee&&(Q=P&&P.onVnodeBeforeUnmount)&&Oe(Q,d,u),k&6)Ko(u.component,m,T);else{if(k&128){u.suspense.unmount(m,T);return}X&&Ue(u,null,d,"beforeUnmount"),k&64?u.type.remove(u,d,m,vt,T):C&&!C.hasOnce&&(E!==xe||L>0&&L&64)?It(C,d,m,!1,!0):(E===xe&&L&384||!w&&k&16)&&It(A,d,m),T&&or(u)}(ee&&(Q=P&&P.onVnodeUnmounted)||X)&&be(()=>{Q&&Oe(Q,d,u),X&&Ue(u,null,d,"unmounted")},m)},or=u=>{const{type:d,el:m,anchor:T,transition:w}=u;if(d===xe){Wo(m,T);return}if(d===kt){g(u);return}const E=()=>{r(m),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(u.shapeFlag&1&&w&&!w.persisted){const{leave:P,delayLeave:M}=w,A=()=>P(m,E);M?M(u.el,E,A):A()}else E()},Wo=(u,d)=>{let m;for(;u!==d;)m=y(u),r(u),u=m;r(d)},Ko=(u,d,m)=>{const{bum:T,scope:w,job:E,subTree:P,um:M,m:A,a:C}=u;Cr(A),Cr(C),T&&bn(T),w.stop(),E&&(E.flags|=8,De(P,u,d,m)),M&&be(M,d),be(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},It=(u,d,m,T=!1,w=!1,E=0)=>{for(let P=E;P{if(u.shapeFlag&6)return ln(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const d=y(u.anchor||u.el),m=d&&d[Hi];return m?y(m):d};let zn=!1;const lr=(u,d,m)=>{u==null?d._vnode&&De(d._vnode,null,null,!0):_(d._vnode||null,u,d,null,null,null,m),d._vnode=u,zn||(zn=!0,hr(),On(),zn=!1)},vt={p:_,um:De,m:ot,r:or,mt:se,mc:V,pc:D,pbc:b,n:ln,o:e};let Qn,Zn;return t&&([Qn,Zn]=t(vt)),{render:lr,hydrate:Qn,createApp:gc(lr,Qn)}}function ls({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function lt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function ao(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Zs(e,t,n=!1){const s=e.children,r=t.children;if(W(s)&&W(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function fo(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:fo(t)}function Cr(e){if(e)for(let t=0;tOt(Cc);function er(e,t){return Gn(e,null,t)}function Lf(e,t){return Gn(e,null,{flush:"post"})}function Fe(e,t,n){return Gn(e,t,n)}function Gn(e,t,n=Z){const{immediate:s,deep:r,flush:i,once:o}=n,l=ae({},n),c=t&&s||!t&&i!=="post";let f;if(Mt){if(i==="sync"){const v=Ac();f=v.__watcherHandles||(v.__watcherHandles=[])}else if(!c){const v=()=>{};return v.stop=ke,v.resume=ke,v.pause=ke,v}}const a=ue;l.call=(v,S,_)=>He(v,a,S,_);let h=!1;i==="post"?l.scheduler=v=>{be(v,a&&a.suspense)}:i!=="sync"&&(h=!0,l.scheduler=(v,S)=>{S?v():Ys(v)}),l.augmentJob=v=>{t&&(v.flags|=4),h&&(v.flags|=2,a&&(v.id=a.uid,v.i=a))};const y=Dl(e,t,l);return Mt&&(f?f.push(y):c&&y()),y}function Rc(e,t,n){const s=this.proxy,r=re(e)?e.includes(".")?uo(s,e):()=>s[e]:e.bind(s,s);let i;q(t)?i=t:(i=t.handler,n=t);const o=rn(this),l=Gn(r,i.bind(s),n);return o(),l}function uo(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Le(t)}Modifiers`]||e[`${st(t)}Modifiers`];function Mc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||Z;let r=n;const i=t.startsWith("update:"),o=i&&Oc(s,t.slice(7));o&&(o.trim&&(r=n.map(a=>re(a)?a.trim():a)),o.number&&(r=n.map(ws)));let l,c=s[l=_n(t)]||s[l=_n(Le(t))];!c&&i&&(c=s[l=_n(st(t))]),c&&He(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,He(f,e,6,r)}}function ho(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!q(e)){const c=f=>{const a=ho(f,t,!0);a&&(l=!0,ae(o,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(ne(e)&&s.set(e,null),null):(W(i)?i.forEach(c=>o[c]=null):ae(o,i),ne(e)&&s.set(e,o),o)}function Yn(e,t){return!e||!en(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,st(t))||z(e,t))}function cs(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:f,renderCache:a,props:h,data:y,setupState:v,ctx:S,inheritAttrs:_}=e,K=Mn(e);let N,j;try{if(n.shapeFlag&4){const g=r||s,O=g;N=Me(f.call(O,g,a,h,v,y,S)),j=l}else{const g=t;N=Me(g.length>1?g(h,{attrs:l,slots:o,emit:c}):g(h,null)),j=t.props?l:Pc(l)}}catch(g){Bt.length=0,nn(g,e,1),N=ce(ve)}let p=N;if(j&&_!==!1){const g=Object.keys(j),{shapeFlag:O}=p;g.length&&O&7&&(i&&g.some(Ds)&&(j=Lc(j,i)),p=nt(p,j,!1,!0))}return n.dirs&&(p=nt(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&Yt(p,n.transition),N=p,Mn(K),N}const Pc=e=>{let t;for(const n in e)(n==="class"||n==="style"||en(n))&&((t||(t={}))[n]=e[n]);return t},Lc=(e,t)=>{const n={};for(const s in e)(!Ds(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Ic(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Ar(s,o,f):!!o;if(c&8){const a=t.dynamicProps;for(let h=0;he.__isSuspense;function mo(e,t){t&&t.pendingBranch?W(e)?t.effects.push(...e):t.effects.push(e):Ul(e)}const xe=Symbol.for("v-fgt"),gt=Symbol.for("v-txt"),ve=Symbol.for("v-cmt"),kt=Symbol.for("v-stc"),Bt=[];let Ae=null;function Ls(e=!1){Bt.push(Ae=e?null:[])}function Nc(){Bt.pop(),Ae=Bt[Bt.length-1]||null}let Jt=1;function Rr(e,t=!1){Jt+=e,e<0&&Ae&&t&&(Ae.hasOnce=!0)}function yo(e){return e.dynamicChildren=Jt>0?Ae||Et:null,Nc(),Jt>0&&Ae&&Ae.push(e),e}function If(e,t,n,s,r,i){return yo(_o(e,t,n,s,r,i,!0))}function Is(e,t,n,s,r){return yo(ce(e,t,n,s,r,!0))}function zt(e){return e?e.__v_isVNode===!0:!1}function ut(e,t){return e.type===t.type&&e.key===t.key}const vo=({key:e})=>e??null,xn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||fe(e)||q(e)?{i:de,r:e,k:t,f:!!n}:e:null);function _o(e,t=null,n=null,s=0,r=null,i=e===xe?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&vo(t),ref:t&&xn(t),scopeId:Wn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:de};return l?(tr(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=re(n)?8:16),Jt>0&&!o&&Ae&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ae.push(c),c}const ce=Fc;function Fc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Yi)&&(e=ve),zt(e)){const l=nt(e,t,!0);return n&&tr(l,n),Jt>0&&!i&&Ae&&(l.shapeFlag&6?Ae[Ae.indexOf(e)]=l:Ae.push(l)),l.patchFlag=-2,l}if(Kc(e)&&(e=e.__vccOpts),t){t=Hc(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=Dn(l)),ne(c)&&(qs(c)&&!W(c)&&(c=ae({},c)),t.style=$n(c))}const o=re(e)?1:go(e)?128:$i(e)?64:ne(e)?4:q(e)?2:0;return _o(e,t,n,s,r,o,i,!0)}function Hc(e){return e?qs(e)||to(e)?ae({},e):e:null}function nt(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,f=t?$c(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&vo(f),ref:t&&t.ref?n&&i?W(i)?i.concat(xn(t)):[i,xn(t)]:xn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==xe?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&nt(e.ssContent),ssFallback:e.ssFallback&&nt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Yt(a,c.clone(a)),a}function bo(e=" ",t=0){return ce(gt,null,e,t)}function Nf(e,t){const n=ce(kt,null,e);return n.staticCount=t,n}function Ff(e="",t=!1){return t?(Ls(),Is(ve,null,e)):ce(ve,null,e)}function Me(e){return e==null||typeof e=="boolean"?ce(ve):W(e)?ce(xe,null,e.slice()):zt(e)?et(e):ce(gt,null,String(e))}function et(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:nt(e)}function tr(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(W(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),tr(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!to(t)?t._ctx=de:r===3&&de&&(de.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:de},n=32):(t=String(t),s&64?(n=16,t=[bo(t)]):n=8);e.children=t,e.shapeFlag|=n}function $c(...e){const t={};for(let n=0;nue||de;let Ln,Ns;{const e=Hn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Ln=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),Ns=t("__VUE_SSR_SETTERS__",n=>Mt=n)}const rn=e=>{const t=ue;return Ln(e),e.scope.on(),()=>{e.scope.off(),Ln(t)}},Or=()=>{ue&&ue.scope.off(),Ln(null)};function wo(e){return e.vnode.shapeFlag&4}let Mt=!1;function Uc(e,t=!1,n=!1){t&&Ns(t);const{props:s,children:r}=e.vnode,i=wo(e);yc(e,s,i,t),wc(e,r,n);const o=i?kc(e,t):void 0;return t&&Ns(!1),o}function kc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,lc);const{setup:s}=n;if(s){rt();const r=e.setupContext=s.length>1?xo(e):null,i=rn(e),o=tn(s,e,0,[e.props,r]),l=li(o);if(it(),i(),(l||e.sp)&&!pt(e)&&Js(e),l){if(o.then(Or,Or),t)return o.then(c=>{Mr(e,c,t)}).catch(c=>{nn(c,e,0)});e.asyncDep=o}else Mr(e,o,t)}else So(e,t)}function Mr(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ne(t)&&(e.setupState=Pi(t)),So(e,n)}let Pr;function So(e,t,n){const s=e.type;if(!e.render){if(!t&&Pr&&!s.render){const r=s.template||zs(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,f=ae(ae({isCustomElement:i,delimiters:l},o),c);s.render=Pr(r,f)}}e.render=s.render||ke}{const r=rn(e);rt();try{ac(e)}finally{it(),r()}}}const Bc={get(e,t){return me(e,"get",""),e[t]}};function xo(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Bc),slots:e.slots,emit:e.emit,expose:t}}function Jn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Pi(wn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Ut)return Ut[n](e)},has(t,n){return n in t||n in Ut}})):e.proxy}function Wc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function Kc(e){return q(e)&&"__vccOpts"in e}const ie=(e,t)=>Hl(e,t,Mt);function Fs(e,t,n){const s=arguments.length;return s===2?ne(t)&&!W(t)?zt(t)?ce(e,null,[t]):ce(e,t):ce(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&zt(n)&&(n=[n]),ce(e,t,n))}const qc="3.5.13";/** +* @vue/runtime-dom v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Hs;const Lr=typeof window<"u"&&window.trustedTypes;if(Lr)try{Hs=Lr.createPolicy("vue",{createHTML:e=>e})}catch{}const Eo=Hs?e=>Hs.createHTML(e):e=>e,Gc="http://www.w3.org/2000/svg",Yc="http://www.w3.org/1998/Math/MathML",qe=typeof document<"u"?document:null,Ir=qe&&qe.createElement("template"),Xc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?qe.createElementNS(Gc,e):t==="mathml"?qe.createElementNS(Yc,e):n?qe.createElement(e,{is:n}):qe.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>qe.createTextNode(e),createComment:e=>qe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>qe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Ir.innerHTML=Eo(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Ir.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ze="transition",Ht="animation",Qt=Symbol("_vtc"),To={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Jc=ae({},Vi,To),zc=e=>(e.displayName="Transition",e.props=Jc,e),Hf=zc((e,{slots:t})=>Fs(Kl,Qc(e),t)),ct=(e,t=[])=>{W(e)?e.forEach(n=>n(...t)):e&&e(...t)},Nr=e=>e?W(e)?e.some(t=>t.length>1):e.length>1:!1;function Qc(e){const t={};for(const x in e)x in To||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:f=o,appearToClass:a=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:y=`${n}-leave-active`,leaveToClass:v=`${n}-leave-to`}=e,S=Zc(r),_=S&&S[0],K=S&&S[1],{onBeforeEnter:N,onEnter:j,onEnterCancelled:p,onLeave:g,onLeaveCancelled:O,onBeforeAppear:F=N,onAppear:$=j,onAppearCancelled:V=p}=t,R=(x,B,se,le)=>{x._enterCancelled=le,at(x,B?a:l),at(x,B?f:o),se&&se()},b=(x,B)=>{x._isLeaving=!1,at(x,h),at(x,v),at(x,y),B&&B()},I=x=>(B,se)=>{const le=x?$:j,U=()=>R(B,x,se);ct(le,[B,U]),Fr(()=>{at(B,x?c:i),Ke(B,x?a:l),Nr(le)||Hr(B,s,_,U)})};return ae(t,{onBeforeEnter(x){ct(N,[x]),Ke(x,i),Ke(x,o)},onBeforeAppear(x){ct(F,[x]),Ke(x,c),Ke(x,f)},onEnter:I(!1),onAppear:I(!0),onLeave(x,B){x._isLeaving=!0;const se=()=>b(x,B);Ke(x,h),x._enterCancelled?(Ke(x,y),jr()):(jr(),Ke(x,y)),Fr(()=>{x._isLeaving&&(at(x,h),Ke(x,v),Nr(g)||Hr(x,s,K,se))}),ct(g,[x,se])},onEnterCancelled(x){R(x,!1,void 0,!0),ct(p,[x])},onAppearCancelled(x){R(x,!0,void 0,!0),ct(V,[x])},onLeaveCancelled(x){b(x),ct(O,[x])}})}function Zc(e){if(e==null)return null;if(ne(e))return[as(e.enter),as(e.leave)];{const t=as(e);return[t,t]}}function as(e){return zo(e)}function Ke(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Qt]||(e[Qt]=new Set)).add(t)}function at(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Qt];n&&(n.delete(t),n.size||(e[Qt]=void 0))}function Fr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let ea=0;function Hr(e,t,n,s){const r=e._endId=++ea,i=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=ta(e,t);if(!o)return s();const f=o+"end";let a=0;const h=()=>{e.removeEventListener(f,y),i()},y=v=>{v.target===e&&++a>=c&&h()};setTimeout(()=>{a(n[S]||"").split(", "),r=s(`${ze}Delay`),i=s(`${ze}Duration`),o=$r(r,i),l=s(`${Ht}Delay`),c=s(`${Ht}Duration`),f=$r(l,c);let a=null,h=0,y=0;t===ze?o>0&&(a=ze,h=o,y=i.length):t===Ht?f>0&&(a=Ht,h=f,y=c.length):(h=Math.max(o,f),a=h>0?o>f?ze:Ht:null,y=a?a===ze?i.length:c.length:0);const v=a===ze&&/\b(transform|all)(,|$)/.test(s(`${ze}Property`).toString());return{type:a,timeout:h,propCount:y,hasTransform:v}}function $r(e,t){for(;e.lengthDr(n)+Dr(e[s])))}function Dr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function jr(){return document.body.offsetHeight}function na(e,t,n){const s=e[Qt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Vr=Symbol("_vod"),sa=Symbol("_vsh"),ra=Symbol(""),ia=/(^|;)\s*display\s*:/;function oa(e,t,n){const s=e.style,r=re(n);let i=!1;if(n&&!r){if(t)if(re(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&En(s,l,"")}else for(const o in t)n[o]==null&&En(s,o,"");for(const o in n)o==="display"&&(i=!0),En(s,o,n[o])}else if(r){if(t!==n){const o=s[ra];o&&(n+=";"+o),s.cssText=n,i=ia.test(n)}}else t&&e.removeAttribute("style");Vr in e&&(e[Vr]=i?s.display:"",e[sa]&&(s.display="none"))}const Ur=/\s*!important$/;function En(e,t,n){if(W(n))n.forEach(s=>En(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=la(e,t);Ur.test(n)?e.setProperty(st(s),n.replace(Ur,""),"important"):e[s]=n}}const kr=["Webkit","Moz","ms"],fs={};function la(e,t){const n=fs[t];if(n)return n;let s=Le(t);if(s!=="filter"&&s in e)return fs[t]=s;s=Fn(s);for(let r=0;rus||(ua.then(()=>us=0),us=Date.now());function ha(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;He(pa(s,n.value),t,5,[s])};return n.value=e,n.attached=da(),n}function pa(e,t){if(W(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Yr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,ga=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?na(e,s,o):t==="style"?oa(e,n,s):en(t)?Ds(t)||aa(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ma(e,t,s,o))?(Kr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Wr(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!re(s))?Kr(e,Le(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Wr(e,t,s,o))};function ma(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Yr(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Yr(t)&&re(n)?!1:t in e}const Xr=e=>{const t=e.props["onUpdate:modelValue"]||!1;return W(t)?n=>bn(t,n):t};function ya(e){e.target.composing=!0}function Jr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const ds=Symbol("_assign"),$f={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[ds]=Xr(r);const i=s||r.props&&r.props.type==="number";St(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=ws(l)),e[ds](l)}),n&&St(e,"change",()=>{e.value=e.value.trim()}),t||(St(e,"compositionstart",ya),St(e,"compositionend",Jr),St(e,"change",Jr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:i}},o){if(e[ds]=Xr(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?ws(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},va=["ctrl","shift","alt","meta"],_a={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>va.some(n=>e[`${n}Key`]&&!t.includes(n))},Df=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=st(r.key);if(t.some(o=>o===i||ba[o]===i))return e(r)})},Co=ae({patchProp:ga},Xc);let Wt,zr=!1;function wa(){return Wt||(Wt=xc(Co))}function Sa(){return Wt=zr?Wt:Ec(Co),zr=!0,Wt}const Vf=(...e)=>{const t=wa().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ro(s);if(!r)return;const i=t._component;!q(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,Ao(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t},Uf=(...e)=>{const t=Sa().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ro(s);if(r)return n(r,!0,Ao(r))},t};function Ao(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Ro(e){return re(e)?document.querySelector(e):e}const kf=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},xa=window.__VP_SITE_DATA__;function nr(e){return pi()?(ol(e),!0):!1}function Be(e){return typeof e=="function"?e():Mi(e)}const Oo=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Bf=e=>e!=null,Ea=Object.prototype.toString,Ta=e=>Ea.call(e)==="[object Object]",Zt=()=>{},Qr=Ca();function Ca(){var e,t;return Oo&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function Aa(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const Mo=e=>e();function Ra(e,t={}){let n,s,r=Zt;const i=l=>{clearTimeout(l),r(),r=Zt};return l=>{const c=Be(e),f=Be(t.maxWait);return n&&i(n),c<=0||f!==void 0&&f<=0?(s&&(i(s),s=null),Promise.resolve(l())):new Promise((a,h)=>{r=t.rejectOnCancel?h:a,f&&!s&&(s=setTimeout(()=>{n&&i(n),s=null,a(l())},f)),n=setTimeout(()=>{s&&i(s),s=null,a(l())},c)})}}function Oa(e=Mo){const t=oe(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:kn(t),pause:n,resume:s,eventFilter:r}}function Ma(e){return Xn()}function Po(...e){if(e.length!==1)return Il(...e);const t=e[0];return typeof t=="function"?kn(Ml(()=>({get:t,set:Zt}))):oe(t)}function Lo(e,t,n={}){const{eventFilter:s=Mo,...r}=n;return Fe(e,Aa(s,t),r)}function Pa(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=Oa(s);return{stop:Lo(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function sr(e,t=!0,n){Ma()?Lt(e,n):t?e():Bn(e)}function Wf(e,t,n={}){const{debounce:s=0,maxWait:r=void 0,...i}=n;return Lo(e,t,{...i,eventFilter:Ra(s,{maxWait:r})})}function Kf(e,t,n){let s;fe(n)?s={evaluating:n}:s={};const{lazy:r=!1,evaluating:i=void 0,shallow:o=!0,onError:l=Zt}=s,c=oe(!r),f=o?Gs(t):oe(t);let a=0;return er(async h=>{if(!c.value)return;a++;const y=a;let v=!1;i&&Promise.resolve().then(()=>{i.value=!0});try{const S=await e(_=>{h(()=>{i&&(i.value=!1),v||_()})});y===a&&(f.value=S)}catch(S){l(S)}finally{i&&y===a&&(i.value=!1),v=!0}}),r?ie(()=>(c.value=!0,f.value)):f}const $e=Oo?window:void 0;function Io(e){var t;const n=Be(e);return(t=n==null?void 0:n.$el)!=null?t:n}function Pt(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=$e):[t,n,s,r]=e,!t)return Zt;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(a=>a()),i.length=0},l=(a,h,y,v)=>(a.addEventListener(h,y,v),()=>a.removeEventListener(h,y,v)),c=Fe(()=>[Io(t),Be(r)],([a,h])=>{if(o(),!a)return;const y=Ta(h)?{...h}:h;i.push(...n.flatMap(v=>s.map(S=>l(a,v,S,y))))},{immediate:!0,flush:"post"}),f=()=>{c(),o()};return nr(f),f}function La(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function qf(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=$e,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=La(t);return Pt(r,i,a=>{a.repeat&&Be(l)||c(a)&&n(a)},o)}function Ia(){const e=oe(!1),t=Xn();return t&&Lt(()=>{e.value=!0},t),e}function Na(e){const t=Ia();return ie(()=>(t.value,!!e()))}function No(e,t={}){const{window:n=$e}=t,s=Na(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=oe(!1),o=f=>{i.value=f.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=er(()=>{s.value&&(l(),r=n.matchMedia(Be(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return nr(()=>{c(),l(),r=void 0}),i}const gn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},mn="__vueuse_ssr_handlers__",Fa=Ha();function Ha(){return mn in gn||(gn[mn]=gn[mn]||{}),gn[mn]}function Fo(e,t){return Fa[e]||t}function rr(e){return No("(prefers-color-scheme: dark)",e)}function $a(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Da={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Zr="vueuse-storage";function ir(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:f=!1,shallow:a,window:h=$e,eventFilter:y,onError:v=b=>{console.error(b)},initOnMounted:S}=s,_=(a?Gs:oe)(typeof t=="function"?t():t);if(!n)try{n=Fo("getDefaultStorage",()=>{var b;return(b=$e)==null?void 0:b.localStorage})()}catch(b){v(b)}if(!n)return _;const K=Be(t),N=$a(K),j=(r=s.serializer)!=null?r:Da[N],{pause:p,resume:g}=Pa(_,()=>F(_.value),{flush:i,deep:o,eventFilter:y});h&&l&&sr(()=>{n instanceof Storage?Pt(h,"storage",V):Pt(h,Zr,R),S&&V()}),S||V();function O(b,I){if(h){const x={key:e,oldValue:b,newValue:I,storageArea:n};h.dispatchEvent(n instanceof Storage?new StorageEvent("storage",x):new CustomEvent(Zr,{detail:x}))}}function F(b){try{const I=n.getItem(e);if(b==null)O(I,null),n.removeItem(e);else{const x=j.write(b);I!==x&&(n.setItem(e,x),O(I,x))}}catch(I){v(I)}}function $(b){const I=b?b.newValue:n.getItem(e);if(I==null)return c&&K!=null&&n.setItem(e,j.write(K)),K;if(!b&&f){const x=j.read(I);return typeof f=="function"?f(x,K):N==="object"&&!Array.isArray(x)?{...K,...x}:x}else return typeof I!="string"?I:j.read(I)}function V(b){if(!(b&&b.storageArea!==n)){if(b&&b.key==null){_.value=K;return}if(!(b&&b.key!==e)){p();try{(b==null?void 0:b.newValue)!==j.write(_.value)&&(_.value=$(b))}catch(I){v(I)}finally{b?Bn(g):g()}}}}function R(b){V(b.detail)}return _}const ja="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function Va(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=$e,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:f,disableTransition:a=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},y=rr({window:r}),v=ie(()=>y.value?"dark":"light"),S=c||(o==null?Po(s):ir(o,s,i,{window:r,listenToStorageChanges:l})),_=ie(()=>S.value==="auto"?v.value:S.value),K=Fo("updateHTMLAttrs",(g,O,F)=>{const $=typeof g=="string"?r==null?void 0:r.document.querySelector(g):Io(g);if(!$)return;const V=new Set,R=new Set;let b=null;if(O==="class"){const x=F.split(/\s/g);Object.values(h).flatMap(B=>(B||"").split(/\s/g)).filter(Boolean).forEach(B=>{x.includes(B)?V.add(B):R.add(B)})}else b={key:O,value:F};if(V.size===0&&R.size===0&&b===null)return;let I;a&&(I=r.document.createElement("style"),I.appendChild(document.createTextNode(ja)),r.document.head.appendChild(I));for(const x of V)$.classList.add(x);for(const x of R)$.classList.remove(x);b&&$.setAttribute(b.key,b.value),a&&(r.getComputedStyle(I).opacity,document.head.removeChild(I))});function N(g){var O;K(t,n,(O=h[g])!=null?O:g)}function j(g){e.onChanged?e.onChanged(g,N):N(g)}Fe(_,j,{flush:"post",immediate:!0}),sr(()=>j(_.value));const p=ie({get(){return f?S.value:_.value},set(g){S.value=g}});try{return Object.assign(p,{store:S,system:v,state:_})}catch{return p}}function Ua(e={}){const{valueDark:t="dark",valueLight:n="",window:s=$e}=e,r=Va({...e,onChanged:(l,c)=>{var f;e.onChanged?(f=e.onChanged)==null||f.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=ie(()=>r.system?r.system.value:rr({window:s}).value?"dark":"light");return ie({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function hs(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Gf(e,t,n={}){const{window:s=$e}=n;return ir(e,t,s==null?void 0:s.localStorage,n)}function Ho(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const ps=new WeakMap;function Yf(e,t=!1){const n=oe(t);let s=null,r="";Fe(Po(e),l=>{const c=hs(Be(l));if(c){const f=c;if(ps.get(f)||ps.set(f,f.style.overflow),f.style.overflow!=="hidden"&&(r=f.style.overflow),f.style.overflow==="hidden")return n.value=!0;if(n.value)return f.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=hs(Be(e));!l||n.value||(Qr&&(s=Pt(l,"touchmove",c=>{ka(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=hs(Be(e));!l||!n.value||(Qr&&(s==null||s()),l.style.overflow=r,ps.delete(l),n.value=!1)};return nr(o),ie({get(){return n.value},set(l){l?i():o()}})}function Xf(e,t,n={}){const{window:s=$e}=n;return ir(e,t,s==null?void 0:s.sessionStorage,n)}function Jf(e={}){const{window:t=$e,behavior:n="auto"}=e;if(!t)return{x:oe(0),y:oe(0)};const s=oe(t.scrollX),r=oe(t.scrollY),i=ie({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),o=ie({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return Pt(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function zf(e={}){const{window:t=$e,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0,type:o="inner"}=e,l=oe(n),c=oe(s),f=()=>{t&&(o==="outer"?(l.value=t.outerWidth,c.value=t.outerHeight):i?(l.value=t.innerWidth,c.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight))};if(f(),sr(f),Pt("resize",f,{passive:!0}),r){const a=No("(orientation: portrait)");Fe(a,()=>f())}return{width:l,height:c}}const gs={BASE_URL:"/eslint-plugin-lodash-template/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var ms={};const $o=/^(?:[a-z]+:|\/\/)/i,Ba="vitepress-theme-appearance",Wa=/#.*$/,Ka=/[?#].*$/,qa=/(?:(^|\/)index)?\.(?:md|html)$/,ge=typeof document<"u",Do={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Ga(e,t,n=!1){if(t===void 0)return!1;if(e=ei(`/${e}`),n)return new RegExp(t).test(e);if(ei(t)!==e)return!1;const s=t.match(Wa);return s?(ge?location.hash:"")===s[0]:!0}function ei(e){return decodeURI(e).replace(Ka,"").replace(qa,"$1")}function Ya(e){return $o.test(e)}function Xa(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!Ya(n)&&Ga(t,`/${n}/`,!0))||"root"}function Ja(e,t){var s,r,i,o,l,c,f;const n=Xa(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:Vo(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(f=e.locales[n])==null?void 0:f.themeConfig}})}function jo(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=za(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function za(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Qa(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function Vo(e,t){return[...e.filter(n=>!Qa(t,n)),...t]}const Za=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,ef=/^[a-z]:/i;function ti(e){const t=ef.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Za,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const ys=new Set;function tf(e){if(ys.size===0){const n=typeof process=="object"&&(ms==null?void 0:ms.VITE_EXTRA_EXTENSIONS)||(gs==null?void 0:gs.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>ys.add(s))}const t=e.split(".").pop();return t==null||!ys.has(t.toLowerCase())}function Qf(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const nf=Symbol(),mt=Gs(xa);function Zf(e){const t=ie(()=>Ja(mt.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?oe(!0):n==="force-auto"?rr():n?Ua({storageKey:Ba,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):oe(!1),r=oe(ge?location.hash:"");return ge&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Fe(()=>e.data,()=>{r.value=ge?location.hash:""}),{site:t,theme:ie(()=>t.value.themeConfig),page:ie(()=>e.data),frontmatter:ie(()=>e.data.frontmatter),params:ie(()=>e.data.params),lang:ie(()=>t.value.lang),dir:ie(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ie(()=>t.value.localeIndex||"root"),title:ie(()=>jo(t.value,e.data)),description:ie(()=>e.data.description||t.value.description),isDark:s,hash:ie(()=>r.value)}}function sf(){const e=Ot(nf);if(!e)throw new Error("vitepress data not properly injected in app");return e}function rf(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function ni(e){return $o.test(e)||!e.startsWith("/")?e:rf(mt.value.base,e)}function of(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),ge){const n="/eslint-plugin-lodash-template/";t=ti(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${ti(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let Tn=[];function eu(e){Tn.push(e),qn(()=>{Tn=Tn.filter(t=>t!==e)})}function lf(){let e=mt.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=si(e,n);else if(Array.isArray(e))for(const s of e){const r=si(s,n);if(r){t=r;break}}return t}function si(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const cf=Symbol(),Uo="http://a.com",af=()=>({path:"/",component:null,data:Do});function tu(e,t){const n=Un(af()),s={route:n,go:r};async function r(l=ge?location.href:"/"){var c,f;l=vs(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(ge&&l!==vs(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((f=s.onAfterRouteChanged)==null?void 0:f.call(s,l)))}let i=null;async function o(l,c=0,f=!1){var y,v;if(await((y=s.onBeforePageLoad)==null?void 0:y.call(s,l))===!1)return;const a=new URL(l,Uo),h=i=a.pathname;try{let S=await e(h);if(!S)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:_,__pageData:K}=S;if(!_)throw new Error(`Invalid route component: ${_}`);await((v=s.onAfterPageLoad)==null?void 0:v.call(s,l)),n.path=ge?h:ni(h),n.component=wn(_),n.data=wn(K),ge&&Bn(()=>{let N=mt.value.base+K.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!mt.value.cleanUrls&&!N.endsWith("/")&&(N+=".html"),N!==a.pathname&&(a.pathname=N,l=N+a.search+a.hash,history.replaceState({},"",l)),a.hash&&!c){let j=null;try{j=document.getElementById(decodeURIComponent(a.hash).slice(1))}catch(p){console.warn(p)}if(j){ri(j,a.hash);return}}window.scrollTo(0,c)})}}catch(S){if(!/fetch|Page not found/.test(S.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(S),!f)try{const _=await fetch(mt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await _.json(),await o(l,c,!0);return}catch{}if(i===h){i=null,n.path=ge?h:ni(h),n.component=t?wn(t):null;const _=ge?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...Do,relativePath:_}}}}return ge&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const f=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(f==null)return;const{href:a,origin:h,pathname:y,hash:v,search:S}=new URL(f,c.baseURI),_=new URL(location.href);h===_.origin&&tf(y)&&(l.preventDefault(),y===_.pathname&&S===_.search?(v!==_.hash&&(history.pushState({},"",a),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:_.href,newURL:a}))),v?ri(c,v,c.classList.contains("header-anchor")):window.scrollTo(0,0)):r(a))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await o(vs(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function ff(){const e=Ot(cf);if(!e)throw new Error("useRouter() is called without provider.");return e}function ko(){return ff().route}function ri(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-lf()+i;requestAnimationFrame(r)}}function vs(e){const t=new URL(e,Uo);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),mt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const yn=()=>Tn.forEach(e=>e()),nu=Xs({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=ko(),{frontmatter:n,site:s}=sf();return Fe(n,yn,{deep:!0,flush:"post"}),()=>Fs(e.as,s.value.contentProps??{style:{position:"relative"}},[t.component?Fs(t.component,{onVnodeMounted:yn,onVnodeUpdated:yn,onVnodeUnmounted:yn}):"404 Page Not Found"])}}),uf="modulepreload",df=function(e){return"/eslint-plugin-lodash-template/"+e},ii={},su=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),l=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));r=Promise.allSettled(n.map(c=>{if(c=df(c),c in ii)return;ii[c]=!0;const f=c.endsWith(".css"),a=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${a}`))return;const h=document.createElement("link");if(h.rel=f?"stylesheet":uf,f||(h.as="script"),h.crossOrigin="",h.href=c,l&&h.setAttribute("nonce",l),document.head.appendChild(h),f)return new Promise((y,v)=>{h.addEventListener("load",y),h.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${c}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return r.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})},ru=Xs({setup(e,{slots:t}){const n=oe(!1);return Lt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function iu(){ge&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(f=>f.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function ou(){if(ge){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(a=>a.remove());let f=c.textContent||"";o&&(f=f.replace(/^ *(\$|>) /gm,"").trim()),hf(f).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const a=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,a)})}})}}async function hf(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function lu(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=_s(l);for(const f of document.head.children)if(f.isEqualNode(c)){s.push(f);return}});return}const o=i.map(_s);s.forEach((l,c)=>{const f=o.findIndex(a=>a==null?void 0:a.isEqualNode(l??null));f!==-1?delete o[f]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};er(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],f=jo(o,i);f!==document.title&&(document.title=f);const a=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==a&&h.setAttribute("content",a):_s(["meta",{name:"description",content:a}]),r(Vo(o.head,gf(c)))})}function _s([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&t.async==null&&(s.async=!1),s}function pf(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function gf(e){return e.filter(t=>!pf(t))}const bs=new Set,Bo=()=>document.createElement("link"),mf=e=>{const t=Bo();t.rel="prefetch",t.href=e,document.head.appendChild(t)},yf=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let vn;const vf=ge&&(vn=Bo())&&vn.relList&&vn.relList.supports&&vn.relList.supports("prefetch")?mf:yf;function cu(){if(!ge||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!bs.has(c)){bs.add(c);const f=of(c);f&&vf(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):bs.add(l))})})};Lt(s);const r=ko();Fe(()=>r.path,s),qn(()=>{n&&n.disconnect()})}export{qi as $,lf as A,Cf as B,Rf as C,Gs as D,eu as E,xe as F,ce as G,Af as H,$o as I,ko as J,$c as K,Ot as L,zf as M,$n as N,qf as O,Bn as P,Jf as Q,ge as R,kn as S,Hf as T,Tf as U,su as V,Yf as W,mc as X,Mf as Y,jf as Z,kf as _,bo as a,Df as a0,Pf as a1,bf as a2,wf as a3,Sf as a4,_f as a5,Hc as a6,Vf as a7,Fs as a8,Nf as a9,Ef as aA,wn as aB,Qf as aC,lu as aa,cf as ab,Zf as ac,nf as ad,nu as ae,ru as af,mt as ag,Uf as ah,tu as ai,of as aj,cu as ak,ou as al,iu as am,Be as an,Io as ao,Bf as ap,nr as aq,Kf as ar,Xf as as,Gf as at,Wf as au,ff as av,Pt as aw,xf as ax,$f as ay,fe as az,Is as b,If as c,Xs as d,Ff as e,tf as f,ni as g,ie as h,Ya as i,_o as j,Mi as k,Ga as l,No as m,Dn as n,Ls as o,oe as p,Fe as q,Of as r,er as s,rl as t,sf as u,Lt as v,Fi as w,qn as x,Lf as y,nc as z}; diff --git a/assets/chunks/theme.Dciq0WeV.js b/assets/chunks/theme.Dciq0WeV.js new file mode 100644 index 00000000..d3edbb21 --- /dev/null +++ b/assets/chunks/theme.Dciq0WeV.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.xqDXmbuF.js","assets/chunks/framework.D6W_pQcY.js"])))=>i.map(i=>d[i]); +import{d as k,o as l,c as p,r as d,n as O,a as be,t as I,b as S,w as v,e as w,T as $t,_ as A,u as jo,i as Wo,f as Go,g as bt,h as V,j as m,k as u,l as we,m as ut,p as H,q as ce,s as Ye,v as _e,x as wt,y as kt,z as Uo,A as qo,B as K,F as E,C as R,D as no,E as Xe,G as T,H as oe,I as so,J as Je,K as ne,L as Qe,M as Ko,N as Ae,O as dt,P as Pt,Q as io,R as Ze,S as Yo,U as Xo,V as Jo,W as ro,X as ao,Y as Qo,Z as lo,$ as Zo,a0 as en,a1 as tn,a2 as on,a3 as nn,a4 as sn,a5 as rn,a6 as an,a7 as ln,a8 as cn}from"./framework.D6W_pQcY.js";const un=k({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(e){return(t,o)=>(l(),p("span",{class:O(["VPBadge",t.type])},[d(t.$slots,"default",{},()=>[be(I(t.text),1)])],2))}}),dn={key:0,class:"VPBackdrop"},pn=k({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(e){return(t,o)=>(l(),S($t,{name:"fade"},{default:v(()=>[t.show?(l(),p("div",dn)):w("",!0)]),_:1}))}}),hn=A(pn,[["__scopeId","data-v-c79a1216"]]),N=jo;function fn(e,t){let o,n=!1;return()=>{o&&clearTimeout(o),n?o=setTimeout(e,t):(e(),(n=!0)&&setTimeout(()=>n=!1,t))}}function pt(e){return/^\//.test(e)?e:`/${e}`}function St(e){const{pathname:t,search:o,hash:n,protocol:s}=new URL(e,"http://a.com");if(Wo(e)||e.startsWith("#")||!s.startsWith("http")||!Go(t))return e;const{site:i}=N(),r=t.endsWith("/")||t.endsWith(".html")?e:e.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${o}${n}`);return bt(r)}function Ee({correspondingLink:e=!1}={}){const{site:t,localeIndex:o,page:n,theme:s,hash:i}=N(),r=V(()=>{var c,h;return{label:(c=t.value.locales[o.value])==null?void 0:c.label,link:((h=t.value.locales[o.value])==null?void 0:h.link)||(o.value==="root"?"/":`/${o.value}/`)}});return{localeLinks:V(()=>Object.entries(t.value.locales).flatMap(([c,h])=>r.value.label===h.label?[]:{text:h.label,link:mn(h.link||(c==="root"?"/":`/${c}/`),s.value.i18nRouting!==!1&&e,n.value.relativePath.slice(r.value.link.length-1),!t.value.cleanUrls)+i.value})),currentLang:r}}function mn(e,t,o,n){return t?e.replace(/\/$/,"")+pt(o.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):e}const vn={class:"NotFound"},gn={class:"code"},_n={class:"title"},yn={class:"quote"},$n={class:"action"},bn=["href","aria-label"],wn=k({__name:"NotFound",setup(e){const{theme:t}=N(),{currentLang:o}=Ee();return(n,s)=>{var i,r,a,c,h;return l(),p("div",vn,[m("p",gn,I(((i=u(t).notFound)==null?void 0:i.code)??"404"),1),m("h1",_n,I(((r=u(t).notFound)==null?void 0:r.title)??"PAGE NOT FOUND"),1),s[0]||(s[0]=m("div",{class:"divider"},null,-1)),m("blockquote",yn,I(((a=u(t).notFound)==null?void 0:a.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),m("div",$n,[m("a",{class:"link",href:u(bt)(u(o).link),"aria-label":((c=u(t).notFound)==null?void 0:c.linkLabel)??"go to home"},I(((h=u(t).notFound)==null?void 0:h.linkText)??"Take me home"),9,bn)])])}}}),kn=A(wn,[["__scopeId","data-v-d6be1790"]]);function co(e,t){if(Array.isArray(e))return Fe(e);if(e==null)return[];t=pt(t);const o=Object.keys(e).sort((s,i)=>i.split("/").length-s.split("/").length).find(s=>t.startsWith(pt(s))),n=o?e[o]:[];return Array.isArray(n)?Fe(n):Fe(n.items,n.base)}function Pn(e){const t=[];let o=0;for(const n in e){const s=e[n];if(s.items){o=t.push(s);continue}t[o]||t.push({items:[]}),t[o].items.push(s)}return t}function Sn(e){const t=[];function o(n){for(const s of n)s.text&&s.link&&t.push({text:s.text,link:s.link,docFooterText:s.docFooterText}),s.items&&o(s.items)}return o(e),t}function ht(e,t){return Array.isArray(t)?t.some(o=>ht(e,o)):we(e,t.link)?!0:t.items?ht(e,t.items):!1}function Fe(e,t){return[...e].map(o=>{const n={...o},s=n.base||t;return s&&n.link&&(n.link=s+n.link),n.items&&(n.items=Fe(n.items,s)),n})}function ue(){const{frontmatter:e,page:t,theme:o}=N(),n=ut("(min-width: 960px)"),s=H(!1),i=V(()=>{const P=o.value.sidebar,b=t.value.relativePath;return P?co(P,b):[]}),r=H(i.value);ce(i,(P,b)=>{JSON.stringify(P)!==JSON.stringify(b)&&(r.value=i.value)});const a=V(()=>e.value.sidebar!==!1&&r.value.length>0&&e.value.layout!=="home"),c=V(()=>h?e.value.aside==null?o.value.aside==="left":e.value.aside==="left":!1),h=V(()=>e.value.layout==="home"?!1:e.value.aside!=null?!!e.value.aside:o.value.aside!==!1),g=V(()=>a.value&&n.value),f=V(()=>a.value?Pn(r.value):[]);function _(){s.value=!0}function y(){s.value=!1}function $(){s.value?y():_()}return{isOpen:s,sidebar:r,sidebarGroups:f,hasSidebar:a,hasAside:h,leftAside:c,isSidebarEnabled:g,open:_,close:y,toggle:$}}function Tn(e,t){let o;Ye(()=>{o=e.value?document.activeElement:void 0}),_e(()=>{window.addEventListener("keyup",n)}),wt(()=>{window.removeEventListener("keyup",n)});function n(s){s.key==="Escape"&&e.value&&(t(),o==null||o.focus())}}function Ln(e){const{page:t,hash:o}=N(),n=H(!1),s=V(()=>e.value.collapsed!=null),i=V(()=>!!e.value.link),r=H(!1),a=()=>{r.value=we(t.value.relativePath,e.value.link)};ce([t,e,o],a),_e(a);const c=V(()=>r.value?!0:e.value.items?ht(t.value.relativePath,e.value.items):!1),h=V(()=>!!(e.value.items&&e.value.items.length));Ye(()=>{n.value=!!(s.value&&e.value.collapsed)}),kt(()=>{(r.value||c.value)&&(n.value=!1)});function g(){s.value&&(n.value=!n.value)}return{collapsed:n,collapsible:s,isLink:i,isActiveLink:r,hasActiveLink:c,hasChildren:h,toggle:g}}function An(){const{hasSidebar:e}=ue(),t=ut("(min-width: 960px)"),o=ut("(min-width: 1280px)");return{isAsideEnabled:V(()=>!o.value&&!t.value?!1:e.value?o.value:t.value)}}const ft=[];function uo(e){return typeof e.outline=="object"&&!Array.isArray(e.outline)&&e.outline.label||e.outlineTitle||"On this page"}function Tt(e){const t=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(o=>o.id&&o.hasChildNodes()).map(o=>{const n=Number(o.tagName[1]);return{element:o,title:Vn(o),link:"#"+o.id,level:n}});return Cn(t,e)}function Vn(e){let t="";for(const o of e.childNodes)if(o.nodeType===1){if(o.classList.contains("VPBadge")||o.classList.contains("header-anchor")||o.classList.contains("ignore-header"))continue;t+=o.textContent}else o.nodeType===3&&(t+=o.textContent);return t.trim()}function Cn(e,t){if(t===!1)return[];const o=(typeof t=="object"&&!Array.isArray(t)?t.level:t)||2,[n,s]=typeof o=="number"?[o,o]:o==="deep"?[2,6]:o;return xn(e,n,s)}function Nn(e,t){const{isAsideEnabled:o}=An(),n=fn(i,100);let s=null;_e(()=>{requestAnimationFrame(i),window.addEventListener("scroll",n)}),Uo(()=>{r(location.hash)}),wt(()=>{window.removeEventListener("scroll",n)});function i(){if(!o.value)return;const a=window.scrollY,c=window.innerHeight,h=document.body.offsetHeight,g=Math.abs(a+c-h)<1,f=ft.map(({element:y,link:$})=>({link:$,top:Mn(y)})).filter(({top:y})=>!Number.isNaN(y)).sort((y,$)=>y.top-$.top);if(!f.length){r(null);return}if(a<1){r(null);return}if(g){r(f[f.length-1].link);return}let _=null;for(const{link:y,top:$}of f){if($>a+qo()+4)break;_=y}r(_)}function r(a){s&&s.classList.remove("active"),a==null?s=null:s=e.value.querySelector(`a[href="${decodeURIComponent(a)}"]`);const c=s;c?(c.classList.add("active"),t.value.style.top=c.offsetTop+39+"px",t.value.style.opacity="1"):(t.value.style.top="33px",t.value.style.opacity="0")}}function Mn(e){let t=0;for(;e!==document.body;){if(e===null)return NaN;t+=e.offsetTop,e=e.offsetParent}return t}function xn(e,t,o){ft.length=0;const n=[],s=[];return e.forEach(i=>{const r={...i,children:[]};let a=s[s.length-1];for(;a&&a.level>=r.level;)s.pop(),a=s[s.length-1];if(r.element.classList.contains("ignore-header")||a&&"shouldIgnore"in a){s.push({level:r.level,shouldIgnore:!0});return}r.level>o||r.level{const s=K("VPDocOutlineItem",!0);return l(),p("ul",{class:O(["VPDocOutlineItem",o.root?"root":"nested"])},[(l(!0),p(E,null,R(o.headers,({children:i,link:r,title:a})=>(l(),p("li",null,[m("a",{class:"outline-link",href:r,onClick:t,title:a},I(a),9,Hn),i!=null&&i.length?(l(),S(s,{key:0,headers:i},null,8,["headers"])):w("",!0)]))),256))],2)}}}),po=A(On,[["__scopeId","data-v-b933a997"]]),Bn={class:"content"},In={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},En=k({__name:"VPDocAsideOutline",setup(e){const{frontmatter:t,theme:o}=N(),n=no([]);Xe(()=>{n.value=Tt(t.value.outline??o.value.outline)});const s=H(),i=H();return Nn(s,i),(r,a)=>(l(),p("nav",{"aria-labelledby":"doc-outline-aria-label",class:O(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:s},[m("div",Bn,[m("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),m("div",In,I(u(uo)(u(o))),1),T(po,{headers:n.value,root:!0},null,8,["headers"])])],2))}}),Dn=A(En,[["__scopeId","data-v-a5bbad30"]]),zn={class:"VPDocAsideCarbonAds"},Fn=k({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(e){const t=()=>null;return(o,n)=>(l(),p("div",zn,[T(u(t),{"carbon-ads":o.carbonAds},null,8,["carbon-ads"])]))}}),Rn={class:"VPDocAside"},jn=k({__name:"VPDocAside",setup(e){const{theme:t}=N();return(o,n)=>(l(),p("div",Rn,[d(o.$slots,"aside-top",{},void 0,!0),d(o.$slots,"aside-outline-before",{},void 0,!0),T(Dn),d(o.$slots,"aside-outline-after",{},void 0,!0),n[0]||(n[0]=m("div",{class:"spacer"},null,-1)),d(o.$slots,"aside-ads-before",{},void 0,!0),u(t).carbonAds?(l(),S(Fn,{key:0,"carbon-ads":u(t).carbonAds},null,8,["carbon-ads"])):w("",!0),d(o.$slots,"aside-ads-after",{},void 0,!0),d(o.$slots,"aside-bottom",{},void 0,!0)]))}}),Wn=A(jn,[["__scopeId","data-v-3f215769"]]);function Gn(){const{theme:e,page:t}=N();return V(()=>{const{text:o="Edit this page",pattern:n=""}=e.value.editLink||{};let s;return typeof n=="function"?s=n(t.value):s=n.replace(/:path/g,t.value.filePath),{url:s,text:o}})}function Un(){const{page:e,theme:t,frontmatter:o}=N();return V(()=>{var h,g,f,_,y,$,P,b;const n=co(t.value.sidebar,e.value.relativePath),s=Sn(n),i=qn(s,L=>L.link.replace(/[?#].*$/,"")),r=i.findIndex(L=>we(e.value.relativePath,L.link)),a=((h=t.value.docFooter)==null?void 0:h.prev)===!1&&!o.value.prev||o.value.prev===!1,c=((g=t.value.docFooter)==null?void 0:g.next)===!1&&!o.value.next||o.value.next===!1;return{prev:a?void 0:{text:(typeof o.value.prev=="string"?o.value.prev:typeof o.value.prev=="object"?o.value.prev.text:void 0)??((f=i[r-1])==null?void 0:f.docFooterText)??((_=i[r-1])==null?void 0:_.text),link:(typeof o.value.prev=="object"?o.value.prev.link:void 0)??((y=i[r-1])==null?void 0:y.link)},next:c?void 0:{text:(typeof o.value.next=="string"?o.value.next:typeof o.value.next=="object"?o.value.next.text:void 0)??(($=i[r+1])==null?void 0:$.docFooterText)??((P=i[r+1])==null?void 0:P.text),link:(typeof o.value.next=="object"?o.value.next.link:void 0)??((b=i[r+1])==null?void 0:b.link)}}})}function qn(e,t){const o=new Set;return e.filter(n=>{const s=t(n);return o.has(s)?!1:o.add(s)})}const se=k({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(e){const t=e,o=V(()=>t.tag??(t.href?"a":"span")),n=V(()=>t.href&&so.test(t.href)||t.target==="_blank");return(s,i)=>(l(),S(oe(o.value),{class:O(["VPLink",{link:s.href,"vp-external-link-icon":n.value,"no-icon":s.noIcon}]),href:s.href?u(St)(s.href):void 0,target:s.target??(n.value?"_blank":void 0),rel:s.rel??(n.value?"noreferrer":void 0)},{default:v(()=>[d(s.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Kn={class:"VPLastUpdated"},Yn=["datetime"],Xn=k({__name:"VPDocFooterLastUpdated",setup(e){const{theme:t,page:o,lang:n}=N(),s=V(()=>new Date(o.value.lastUpdated)),i=V(()=>s.value.toISOString()),r=H("");return _e(()=>{Ye(()=>{var a,c,h;r.value=new Intl.DateTimeFormat((c=(a=t.value.lastUpdated)==null?void 0:a.formatOptions)!=null&&c.forceLocale?n.value:void 0,((h=t.value.lastUpdated)==null?void 0:h.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(s.value)})}),(a,c)=>{var h;return l(),p("p",Kn,[be(I(((h=u(t).lastUpdated)==null?void 0:h.text)||u(t).lastUpdatedText||"Last updated")+": ",1),m("time",{datetime:i.value},I(r.value),9,Yn)])}}}),Jn=A(Xn,[["__scopeId","data-v-e98dd255"]]),Qn={key:0,class:"VPDocFooter"},Zn={key:0,class:"edit-info"},es={key:0,class:"edit-link"},ts={key:1,class:"last-updated"},os={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},ns={class:"pager"},ss=["innerHTML"],is=["innerHTML"],rs={class:"pager"},as=["innerHTML"],ls=["innerHTML"],cs=k({__name:"VPDocFooter",setup(e){const{theme:t,page:o,frontmatter:n}=N(),s=Gn(),i=Un(),r=V(()=>t.value.editLink&&n.value.editLink!==!1),a=V(()=>o.value.lastUpdated),c=V(()=>r.value||a.value||i.value.prev||i.value.next);return(h,g)=>{var f,_,y,$;return c.value?(l(),p("footer",Qn,[d(h.$slots,"doc-footer-before",{},void 0,!0),r.value||a.value?(l(),p("div",Zn,[r.value?(l(),p("div",es,[T(se,{class:"edit-link-button",href:u(s).url,"no-icon":!0},{default:v(()=>[g[0]||(g[0]=m("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),be(" "+I(u(s).text),1)]),_:1},8,["href"])])):w("",!0),a.value?(l(),p("div",ts,[T(Jn)])):w("",!0)])):w("",!0),(f=u(i).prev)!=null&&f.link||(_=u(i).next)!=null&&_.link?(l(),p("nav",os,[g[1]||(g[1]=m("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),m("div",ns,[(y=u(i).prev)!=null&&y.link?(l(),S(se,{key:0,class:"pager-link prev",href:u(i).prev.link},{default:v(()=>{var P;return[m("span",{class:"desc",innerHTML:((P=u(t).docFooter)==null?void 0:P.prev)||"Previous page"},null,8,ss),m("span",{class:"title",innerHTML:u(i).prev.text},null,8,is)]}),_:1},8,["href"])):w("",!0)]),m("div",rs,[($=u(i).next)!=null&&$.link?(l(),S(se,{key:0,class:"pager-link next",href:u(i).next.link},{default:v(()=>{var P;return[m("span",{class:"desc",innerHTML:((P=u(t).docFooter)==null?void 0:P.next)||"Next page"},null,8,as),m("span",{class:"title",innerHTML:u(i).next.text},null,8,ls)]}),_:1},8,["href"])):w("",!0)])])):w("",!0)])):w("",!0)}}}),us=A(cs,[["__scopeId","data-v-e257564d"]]),ds={class:"container"},ps={class:"aside-container"},hs={class:"aside-content"},fs={class:"content"},ms={class:"content-container"},vs={class:"main"},gs=k({__name:"VPDoc",setup(e){const{theme:t}=N(),o=Je(),{hasSidebar:n,hasAside:s,leftAside:i}=ue(),r=V(()=>o.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(a,c)=>{const h=K("Content");return l(),p("div",{class:O(["VPDoc",{"has-sidebar":u(n),"has-aside":u(s)}])},[d(a.$slots,"doc-top",{},void 0,!0),m("div",ds,[u(s)?(l(),p("div",{key:0,class:O(["aside",{"left-aside":u(i)}])},[c[0]||(c[0]=m("div",{class:"aside-curtain"},null,-1)),m("div",ps,[m("div",hs,[T(Wn,null,{"aside-top":v(()=>[d(a.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[d(a.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[d(a.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[d(a.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[d(a.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[d(a.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):w("",!0),m("div",fs,[m("div",ms,[d(a.$slots,"doc-before",{},void 0,!0),m("main",vs,[T(h,{class:O(["vp-doc",[r.value,u(t).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),T(us,null,{"doc-footer-before":v(()=>[d(a.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),d(a.$slots,"doc-after",{},void 0,!0)])])]),d(a.$slots,"doc-bottom",{},void 0,!0)],2)}}}),_s=A(gs,[["__scopeId","data-v-39a288b8"]]),ys=k({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(e){const t=e,o=V(()=>t.href&&so.test(t.href)),n=V(()=>t.tag||(t.href?"a":"button"));return(s,i)=>(l(),S(oe(n.value),{class:O(["VPButton",[s.size,s.theme]]),href:s.href?u(St)(s.href):void 0,target:t.target??(o.value?"_blank":void 0),rel:t.rel??(o.value?"noreferrer":void 0)},{default:v(()=>[be(I(s.text),1)]),_:1},8,["class","href","target","rel"]))}}),$s=A(ys,[["__scopeId","data-v-fa7799d5"]]),bs=["src","alt"],ws=k({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(e){return(t,o)=>{const n=K("VPImage",!0);return t.image?(l(),p(E,{key:0},[typeof t.image=="string"||"src"in t.image?(l(),p("img",ne({key:0,class:"VPImage"},typeof t.image=="string"?t.$attrs:{...t.image,...t.$attrs},{src:u(bt)(typeof t.image=="string"?t.image:t.image.src),alt:t.alt??(typeof t.image=="string"?"":t.image.alt||"")}),null,16,bs)):(l(),p(E,{key:1},[T(n,ne({class:"dark",image:t.image.dark,alt:t.image.alt},t.$attrs),null,16,["image","alt"]),T(n,ne({class:"light",image:t.image.light,alt:t.image.alt},t.$attrs),null,16,["image","alt"])],64))],64)):w("",!0)}}}),je=A(ws,[["__scopeId","data-v-8426fc1a"]]),ks={class:"container"},Ps={class:"main"},Ss={key:0,class:"name"},Ts=["innerHTML"],Ls=["innerHTML"],As=["innerHTML"],Vs={key:0,class:"actions"},Cs={key:0,class:"image"},Ns={class:"image-container"},Ms=k({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(e){const t=Qe("hero-image-slot-exists");return(o,n)=>(l(),p("div",{class:O(["VPHero",{"has-image":o.image||u(t)}])},[m("div",ks,[m("div",Ps,[d(o.$slots,"home-hero-info-before",{},void 0,!0),d(o.$slots,"home-hero-info",{},()=>[o.name?(l(),p("h1",Ss,[m("span",{innerHTML:o.name,class:"clip"},null,8,Ts)])):w("",!0),o.text?(l(),p("p",{key:1,innerHTML:o.text,class:"text"},null,8,Ls)):w("",!0),o.tagline?(l(),p("p",{key:2,innerHTML:o.tagline,class:"tagline"},null,8,As)):w("",!0)],!0),d(o.$slots,"home-hero-info-after",{},void 0,!0),o.actions?(l(),p("div",Vs,[(l(!0),p(E,null,R(o.actions,s=>(l(),p("div",{key:s.link,class:"action"},[T($s,{tag:"a",size:"medium",theme:s.theme,text:s.text,href:s.link,target:s.target,rel:s.rel},null,8,["theme","text","href","target","rel"])]))),128))])):w("",!0),d(o.$slots,"home-hero-actions-after",{},void 0,!0)]),o.image||u(t)?(l(),p("div",Cs,[m("div",Ns,[n[0]||(n[0]=m("div",{class:"image-bg"},null,-1)),d(o.$slots,"home-hero-image",{},()=>[o.image?(l(),S(je,{key:0,class:"image-src",image:o.image},null,8,["image"])):w("",!0)],!0)])])):w("",!0)])],2))}}),xs=A(Ms,[["__scopeId","data-v-303bb580"]]),Hs=k({__name:"VPHomeHero",setup(e){const{frontmatter:t}=N();return(o,n)=>u(t).hero?(l(),S(xs,{key:0,class:"VPHomeHero",name:u(t).hero.name,text:u(t).hero.text,tagline:u(t).hero.tagline,image:u(t).hero.image,actions:u(t).hero.actions},{"home-hero-info-before":v(()=>[d(o.$slots,"home-hero-info-before")]),"home-hero-info":v(()=>[d(o.$slots,"home-hero-info")]),"home-hero-info-after":v(()=>[d(o.$slots,"home-hero-info-after")]),"home-hero-actions-after":v(()=>[d(o.$slots,"home-hero-actions-after")]),"home-hero-image":v(()=>[d(o.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):w("",!0)}}),Os={class:"box"},Bs={key:0,class:"icon"},Is=["innerHTML"],Es=["innerHTML"],Ds=["innerHTML"],zs={key:4,class:"link-text"},Fs={class:"link-text-value"},Rs=k({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(e){return(t,o)=>(l(),S(se,{class:"VPFeature",href:t.link,rel:t.rel,target:t.target,"no-icon":!0,tag:t.link?"a":"div"},{default:v(()=>[m("article",Os,[typeof t.icon=="object"&&t.icon.wrap?(l(),p("div",Bs,[T(je,{image:t.icon,alt:t.icon.alt,height:t.icon.height||48,width:t.icon.width||48},null,8,["image","alt","height","width"])])):typeof t.icon=="object"?(l(),S(je,{key:1,image:t.icon,alt:t.icon.alt,height:t.icon.height||48,width:t.icon.width||48},null,8,["image","alt","height","width"])):t.icon?(l(),p("div",{key:2,class:"icon",innerHTML:t.icon},null,8,Is)):w("",!0),m("h2",{class:"title",innerHTML:t.title},null,8,Es),t.details?(l(),p("p",{key:3,class:"details",innerHTML:t.details},null,8,Ds)):w("",!0),t.linkText?(l(),p("div",zs,[m("p",Fs,[be(I(t.linkText)+" ",1),o[0]||(o[0]=m("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):w("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),js=A(Rs,[["__scopeId","data-v-a3976bdc"]]),Ws={key:0,class:"VPFeatures"},Gs={class:"container"},Us={class:"items"},qs=k({__name:"VPFeatures",props:{features:{}},setup(e){const t=e,o=V(()=>{const n=t.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,s)=>n.features?(l(),p("div",Ws,[m("div",Gs,[m("div",Us,[(l(!0),p(E,null,R(n.features,i=>(l(),p("div",{key:i.title,class:O(["item",[o.value]])},[T(js,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):w("",!0)}}),Ks=A(qs,[["__scopeId","data-v-a6181336"]]),Ys=k({__name:"VPHomeFeatures",setup(e){const{frontmatter:t}=N();return(o,n)=>u(t).features?(l(),S(Ks,{key:0,class:"VPHomeFeatures",features:u(t).features},null,8,["features"])):w("",!0)}}),Xs=k({__name:"VPHomeContent",setup(e){const{width:t}=Ko({initialWidth:0,includeScrollbar:!1});return(o,n)=>(l(),p("div",{class:"vp-doc container",style:Ae(u(t)?{"--vp-offset":`calc(50% - ${u(t)/2}px)`}:{})},[d(o.$slots,"default",{},void 0,!0)],4))}}),Js=A(Xs,[["__scopeId","data-v-8e2d4988"]]),Qs={class:"VPHome"},Zs=k({__name:"VPHome",setup(e){const{frontmatter:t}=N();return(o,n)=>{const s=K("Content");return l(),p("div",Qs,[d(o.$slots,"home-hero-before",{},void 0,!0),T(Hs,null,{"home-hero-info-before":v(()=>[d(o.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[d(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[d(o.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[d(o.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[d(o.$slots,"home-hero-image",{},void 0,!0)]),_:3}),d(o.$slots,"home-hero-after",{},void 0,!0),d(o.$slots,"home-features-before",{},void 0,!0),T(Ys),d(o.$slots,"home-features-after",{},void 0,!0),u(t).markdownStyles!==!1?(l(),S(Js,{key:0},{default:v(()=>[T(s)]),_:1})):(l(),S(s,{key:1}))])}}}),ei=A(Zs,[["__scopeId","data-v-686f80a6"]]),ti={},oi={class:"VPPage"};function ni(e,t){const o=K("Content");return l(),p("div",oi,[d(e.$slots,"page-top"),T(o),d(e.$slots,"page-bottom")])}const si=A(ti,[["render",ni]]),ii=k({__name:"VPContent",setup(e){const{page:t,frontmatter:o}=N(),{hasSidebar:n}=ue();return(s,i)=>(l(),p("div",{class:O(["VPContent",{"has-sidebar":u(n),"is-home":u(o).layout==="home"}]),id:"VPContent"},[u(t).isNotFound?d(s.$slots,"not-found",{key:0},()=>[T(kn)],!0):u(o).layout==="page"?(l(),S(si,{key:1},{"page-top":v(()=>[d(s.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[d(s.$slots,"page-bottom",{},void 0,!0)]),_:3})):u(o).layout==="home"?(l(),S(ei,{key:2},{"home-hero-before":v(()=>[d(s.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[d(s.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[d(s.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[d(s.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[d(s.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[d(s.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[d(s.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[d(s.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[d(s.$slots,"home-features-after",{},void 0,!0)]),_:3})):u(o).layout&&u(o).layout!=="doc"?(l(),S(oe(u(o).layout),{key:3})):(l(),S(_s,{key:4},{"doc-top":v(()=>[d(s.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[d(s.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[d(s.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[d(s.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[d(s.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[d(s.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[d(s.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[d(s.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[d(s.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[d(s.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[d(s.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),ri=A(ii,[["__scopeId","data-v-1428d186"]]),ai={class:"container"},li=["innerHTML"],ci=["innerHTML"],ui=k({__name:"VPFooter",setup(e){const{theme:t,frontmatter:o}=N(),{hasSidebar:n}=ue();return(s,i)=>u(t).footer&&u(o).footer!==!1?(l(),p("footer",{key:0,class:O(["VPFooter",{"has-sidebar":u(n)}])},[m("div",ai,[u(t).footer.message?(l(),p("p",{key:0,class:"message",innerHTML:u(t).footer.message},null,8,li)):w("",!0),u(t).footer.copyright?(l(),p("p",{key:1,class:"copyright",innerHTML:u(t).footer.copyright},null,8,ci)):w("",!0)])],2)):w("",!0)}}),di=A(ui,[["__scopeId","data-v-e315a0ad"]]);function pi(){const{theme:e,frontmatter:t}=N(),o=no([]),n=V(()=>o.value.length>0);return Xe(()=>{o.value=Tt(t.value.outline??e.value.outline)}),{headers:o,hasLocalNav:n}}const hi={class:"menu-text"},fi={class:"header"},mi={class:"outline"},vi=k({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(e){const t=e,{theme:o}=N(),n=H(!1),s=H(0),i=H(),r=H();function a(f){var _;(_=i.value)!=null&&_.contains(f.target)||(n.value=!1)}ce(n,f=>{if(f){document.addEventListener("click",a);return}document.removeEventListener("click",a)}),dt("Escape",()=>{n.value=!1}),Xe(()=>{n.value=!1});function c(){n.value=!n.value,s.value=window.innerHeight+Math.min(window.scrollY-t.navHeight,0)}function h(f){f.target.classList.contains("outline-link")&&(r.value&&(r.value.style.transition="none"),Pt(()=>{n.value=!1}))}function g(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(f,_)=>(l(),p("div",{class:"VPLocalNavOutlineDropdown",style:Ae({"--vp-vh":s.value+"px"}),ref_key:"main",ref:i},[f.headers.length>0?(l(),p("button",{key:0,onClick:c,class:O({open:n.value})},[m("span",hi,I(u(uo)(u(o))),1),_[0]||(_[0]=m("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(l(),p("button",{key:1,onClick:g},I(u(o).returnToTopLabel||"Return to top"),1)),T($t,{name:"flyout"},{default:v(()=>[n.value?(l(),p("div",{key:0,ref_key:"items",ref:r,class:"items",onClick:h},[m("div",fi,[m("a",{class:"top-link",href:"#",onClick:g},I(u(o).returnToTopLabel||"Return to top"),1)]),m("div",mi,[T(po,{headers:f.headers},null,8,["headers"])])],512)):w("",!0)]),_:1})],4))}}),gi=A(vi,[["__scopeId","data-v-17a5e62e"]]),_i={class:"container"},yi=["aria-expanded"],$i={class:"menu-text"},bi=k({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(e){const{theme:t,frontmatter:o}=N(),{hasSidebar:n}=ue(),{headers:s}=pi(),{y:i}=io(),r=H(0);_e(()=>{r.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Xe(()=>{s.value=Tt(o.value.outline??t.value.outline)});const a=V(()=>s.value.length===0),c=V(()=>a.value&&!n.value),h=V(()=>({VPLocalNav:!0,"has-sidebar":n.value,empty:a.value,fixed:c.value}));return(g,f)=>u(o).layout!=="home"&&(!c.value||u(i)>=r.value)?(l(),p("div",{key:0,class:O(h.value)},[m("div",_i,[u(n)?(l(),p("button",{key:0,class:"menu","aria-expanded":g.open,"aria-controls":"VPSidebarNav",onClick:f[0]||(f[0]=_=>g.$emit("open-menu"))},[f[1]||(f[1]=m("span",{class:"vpi-align-left menu-icon"},null,-1)),m("span",$i,I(u(t).sidebarMenuLabel||"Menu"),1)],8,yi)):w("",!0),T(gi,{headers:u(s),navHeight:r.value},null,8,["headers","navHeight"])])],2)):w("",!0)}}),wi=A(bi,[["__scopeId","data-v-a6f0e41e"]]);function ki(){const e=H(!1);function t(){e.value=!0,window.addEventListener("resize",s)}function o(){e.value=!1,window.removeEventListener("resize",s)}function n(){e.value?o():t()}function s(){window.outerWidth>=768&&o()}const i=Je();return ce(()=>i.path,o),{isScreenOpen:e,openScreen:t,closeScreen:o,toggleScreen:n}}const Pi={},Si={class:"VPSwitch",type:"button",role:"switch"},Ti={class:"check"},Li={key:0,class:"icon"};function Ai(e,t){return l(),p("button",Si,[m("span",Ti,[e.$slots.default?(l(),p("span",Li,[d(e.$slots,"default",{},void 0,!0)])):w("",!0)])])}const Vi=A(Pi,[["render",Ai],["__scopeId","data-v-1d5665e3"]]),Ci=k({__name:"VPSwitchAppearance",setup(e){const{isDark:t,theme:o}=N(),n=Qe("toggle-appearance",()=>{t.value=!t.value}),s=H("");return kt(()=>{s.value=t.value?o.value.lightModeSwitchTitle||"Switch to light theme":o.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,r)=>(l(),S(Vi,{title:s.value,class:"VPSwitchAppearance","aria-checked":u(t),onClick:u(n)},{default:v(()=>r[0]||(r[0]=[m("span",{class:"vpi-sun sun"},null,-1),m("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),Lt=A(Ci,[["__scopeId","data-v-5337faa4"]]),Ni={key:0,class:"VPNavBarAppearance"},Mi=k({__name:"VPNavBarAppearance",setup(e){const{site:t}=N();return(o,n)=>u(t).appearance&&u(t).appearance!=="force-dark"&&u(t).appearance!=="force-auto"?(l(),p("div",Ni,[T(Lt)])):w("",!0)}}),xi=A(Mi,[["__scopeId","data-v-6c893767"]]),At=H();let ho=!1,rt=0;function Hi(e){const t=H(!1);if(Ze){!ho&&Oi(),rt++;const o=ce(At,n=>{var s,i,r;n===e.el.value||(s=e.el.value)!=null&&s.contains(n)?(t.value=!0,(i=e.onFocus)==null||i.call(e)):(t.value=!1,(r=e.onBlur)==null||r.call(e))});wt(()=>{o(),rt--,rt||Bi()})}return Yo(t)}function Oi(){document.addEventListener("focusin",fo),ho=!0,At.value=document.activeElement}function Bi(){document.removeEventListener("focusin",fo)}function fo(){At.value=document.activeElement}const Ii={class:"VPMenuLink"},Ei=["innerHTML"],Di=k({__name:"VPMenuLink",props:{item:{}},setup(e){const{page:t}=N();return(o,n)=>(l(),p("div",Ii,[T(se,{class:O({active:u(we)(u(t).relativePath,o.item.activeMatch||o.item.link,!!o.item.activeMatch)}),href:o.item.link,target:o.item.target,rel:o.item.rel,"no-icon":o.item.noIcon},{default:v(()=>[m("span",{innerHTML:o.item.text},null,8,Ei)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),et=A(Di,[["__scopeId","data-v-35975db6"]]),zi={class:"VPMenuGroup"},Fi={key:0,class:"title"},Ri=k({__name:"VPMenuGroup",props:{text:{},items:{}},setup(e){return(t,o)=>(l(),p("div",zi,[t.text?(l(),p("p",Fi,I(t.text),1)):w("",!0),(l(!0),p(E,null,R(t.items,n=>(l(),p(E,null,["link"in n?(l(),S(et,{key:0,item:n},null,8,["item"])):w("",!0)],64))),256))]))}}),ji=A(Ri,[["__scopeId","data-v-69e747b5"]]),Wi={class:"VPMenu"},Gi={key:0,class:"items"},Ui=k({__name:"VPMenu",props:{items:{}},setup(e){return(t,o)=>(l(),p("div",Wi,[t.items?(l(),p("div",Gi,[(l(!0),p(E,null,R(t.items,n=>(l(),p(E,{key:JSON.stringify(n)},["link"in n?(l(),S(et,{key:0,item:n},null,8,["item"])):"component"in n?(l(),S(oe(n.component),ne({key:1,ref_for:!0},n.props),null,16)):(l(),S(ji,{key:2,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):w("",!0),d(t.$slots,"default",{},void 0,!0)]))}}),qi=A(Ui,[["__scopeId","data-v-b98bc113"]]),Ki=["aria-expanded","aria-label"],Yi={key:0,class:"text"},Xi=["innerHTML"],Ji={key:1,class:"vpi-more-horizontal icon"},Qi={class:"menu"},Zi=k({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(e){const t=H(!1),o=H();Hi({el:o,onBlur:n});function n(){t.value=!1}return(s,i)=>(l(),p("div",{class:"VPFlyout",ref_key:"el",ref:o,onMouseenter:i[1]||(i[1]=r=>t.value=!0),onMouseleave:i[2]||(i[2]=r=>t.value=!1)},[m("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":t.value,"aria-label":s.label,onClick:i[0]||(i[0]=r=>t.value=!t.value)},[s.button||s.icon?(l(),p("span",Yi,[s.icon?(l(),p("span",{key:0,class:O([s.icon,"option-icon"])},null,2)):w("",!0),s.button?(l(),p("span",{key:1,innerHTML:s.button},null,8,Xi)):w("",!0),i[3]||(i[3]=m("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(l(),p("span",Ji))],8,Ki),m("div",Qi,[T(qi,{items:s.items},{default:v(()=>[d(s.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),Vt=A(Zi,[["__scopeId","data-v-cf11d7a2"]]),er=["href","aria-label","innerHTML"],tr=k({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(e){const t=e,o=H();_e(async()=>{var i;await Pt();const s=(i=o.value)==null?void 0:i.children[0];s instanceof HTMLElement&&s.className.startsWith("vpi-social-")&&(getComputedStyle(s).maskImage||getComputedStyle(s).webkitMaskImage)==="none"&&s.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${t.icon}.svg')`)});const n=V(()=>typeof t.icon=="object"?t.icon.svg:``);return(s,i)=>(l(),p("a",{ref_key:"el",ref:o,class:"VPSocialLink no-icon",href:s.link,"aria-label":s.ariaLabel??(typeof s.icon=="string"?s.icon:""),target:"_blank",rel:"noopener",innerHTML:n.value},null,8,er))}}),or=A(tr,[["__scopeId","data-v-bd121fe5"]]),nr={class:"VPSocialLinks"},sr=k({__name:"VPSocialLinks",props:{links:{}},setup(e){return(t,o)=>(l(),p("div",nr,[(l(!0),p(E,null,R(t.links,({link:n,icon:s,ariaLabel:i})=>(l(),S(or,{key:n,icon:s,link:n,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),Ct=A(sr,[["__scopeId","data-v-7bc22406"]]),ir={key:0,class:"group translations"},rr={class:"trans-title"},ar={key:1,class:"group"},lr={class:"item appearance"},cr={class:"label"},ur={class:"appearance-action"},dr={key:2,class:"group"},pr={class:"item social-links"},hr=k({__name:"VPNavBarExtra",setup(e){const{site:t,theme:o}=N(),{localeLinks:n,currentLang:s}=Ee({correspondingLink:!0}),i=V(()=>n.value.length&&s.value.label||t.value.appearance||o.value.socialLinks);return(r,a)=>i.value?(l(),S(Vt,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[u(n).length&&u(s).label?(l(),p("div",ir,[m("p",rr,I(u(s).label),1),(l(!0),p(E,null,R(u(n),c=>(l(),S(et,{key:c.link,item:c},null,8,["item"]))),128))])):w("",!0),u(t).appearance&&u(t).appearance!=="force-dark"&&u(t).appearance!=="force-auto"?(l(),p("div",ar,[m("div",lr,[m("p",cr,I(u(o).darkModeSwitchLabel||"Appearance"),1),m("div",ur,[T(Lt)])])])):w("",!0),u(o).socialLinks?(l(),p("div",dr,[m("div",pr,[T(Ct,{class:"social-links-list",links:u(o).socialLinks},null,8,["links"])])])):w("",!0)]),_:1})):w("",!0)}}),fr=A(hr,[["__scopeId","data-v-bb2aa2f0"]]),mr=["aria-expanded"],vr=k({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(e){return(t,o)=>(l(),p("button",{type:"button",class:O(["VPNavBarHamburger",{active:t.active}]),"aria-label":"mobile navigation","aria-expanded":t.active,"aria-controls":"VPNavScreen",onClick:o[0]||(o[0]=n=>t.$emit("click"))},o[1]||(o[1]=[m("span",{class:"container"},[m("span",{class:"top"}),m("span",{class:"middle"}),m("span",{class:"bottom"})],-1)]),10,mr))}}),gr=A(vr,[["__scopeId","data-v-e5dd9c1c"]]),_r=["innerHTML"],yr=k({__name:"VPNavBarMenuLink",props:{item:{}},setup(e){const{page:t}=N();return(o,n)=>(l(),S(se,{class:O({VPNavBarMenuLink:!0,active:u(we)(u(t).relativePath,o.item.activeMatch||o.item.link,!!o.item.activeMatch)}),href:o.item.link,target:o.item.target,rel:o.item.rel,"no-icon":o.item.noIcon,tabindex:"0"},{default:v(()=>[m("span",{innerHTML:o.item.text},null,8,_r)]),_:1},8,["class","href","target","rel","no-icon"]))}}),$r=A(yr,[["__scopeId","data-v-e56f3d57"]]),br=k({__name:"VPNavBarMenuGroup",props:{item:{}},setup(e){const t=e,{page:o}=N(),n=i=>"component"in i?!1:"link"in i?we(o.value.relativePath,i.link,!!t.item.activeMatch):i.items.some(n),s=V(()=>n(t.item));return(i,r)=>(l(),S(Vt,{class:O({VPNavBarMenuGroup:!0,active:u(we)(u(o).relativePath,i.item.activeMatch,!!i.item.activeMatch)||s.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),wr={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},kr=k({__name:"VPNavBarMenu",setup(e){const{theme:t}=N();return(o,n)=>u(t).nav?(l(),p("nav",wr,[n[0]||(n[0]=m("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(l(!0),p(E,null,R(u(t).nav,s=>(l(),p(E,{key:JSON.stringify(s)},["link"in s?(l(),S($r,{key:0,item:s},null,8,["item"])):"component"in s?(l(),S(oe(s.component),ne({key:1,ref_for:!0},s.props),null,16)):(l(),S(br,{key:2,item:s},null,8,["item"]))],64))),128))])):w("",!0)}}),Pr=A(kr,[["__scopeId","data-v-dc692963"]]);function Sr(e){const{localeIndex:t,theme:o}=N();function n(s){var $,P,b;const i=s.split("."),r=($=o.value.search)==null?void 0:$.options,a=r&&typeof r=="object",c=a&&((b=(P=r.locales)==null?void 0:P[t.value])==null?void 0:b.translations)||null,h=a&&r.translations||null;let g=c,f=h,_=e;const y=i.pop();for(const L of i){let C=null;const x=_==null?void 0:_[L];x&&(C=_=x);const D=f==null?void 0:f[L];D&&(C=f=D);const B=g==null?void 0:g[L];B&&(C=g=B),x||(_=C),D||(f=C),B||(g=C)}return(g==null?void 0:g[y])??(f==null?void 0:f[y])??(_==null?void 0:_[y])??""}return n}const Tr=["aria-label"],Lr={class:"DocSearch-Button-Container"},Ar={class:"DocSearch-Button-Placeholder"},Ot=k({__name:"VPNavBarSearchButton",setup(e){const o=Sr({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(n,s)=>(l(),p("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":u(o)("button.buttonAriaLabel")},[m("span",Lr,[s[0]||(s[0]=m("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),m("span",Ar,I(u(o)("button.buttonText")),1)]),s[1]||(s[1]=m("span",{class:"DocSearch-Button-Keys"},[m("kbd",{class:"DocSearch-Button-Key"}),m("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,Tr))}}),Vr={class:"VPNavBarSearch"},Cr={id:"local-search"},Nr={key:1,id:"docsearch"},Mr=k({__name:"VPNavBarSearch",setup(e){const t=Xo(()=>Jo(()=>import("./VPLocalSearchBox.xqDXmbuF.js"),__vite__mapDeps([0,1]))),o=()=>null,{theme:n}=N(),s=H(!1),i=H(!1);_e(()=>{});function r(){s.value||(s.value=!0,setTimeout(a,16))}function a(){const f=new Event("keydown");f.key="k",f.metaKey=!0,window.dispatchEvent(f),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||a()},16)}function c(f){const _=f.target,y=_.tagName;return _.isContentEditable||y==="INPUT"||y==="SELECT"||y==="TEXTAREA"}const h=H(!1);dt("k",f=>{(f.ctrlKey||f.metaKey)&&(f.preventDefault(),h.value=!0)}),dt("/",f=>{c(f)||(f.preventDefault(),h.value=!0)});const g="local";return(f,_)=>{var y;return l(),p("div",Vr,[u(g)==="local"?(l(),p(E,{key:0},[h.value?(l(),S(u(t),{key:0,onClose:_[0]||(_[0]=$=>h.value=!1)})):w("",!0),m("div",Cr,[T(Ot,{onClick:_[1]||(_[1]=$=>h.value=!0)})])],64)):u(g)==="algolia"?(l(),p(E,{key:1},[s.value?(l(),S(u(o),{key:0,algolia:((y=u(n).search)==null?void 0:y.options)??u(n).algolia,onVnodeBeforeMount:_[2]||(_[2]=$=>i.value=!0)},null,8,["algolia"])):w("",!0),i.value?w("",!0):(l(),p("div",Nr,[T(Ot,{onClick:r})]))],64)):w("",!0)])}}}),xr=k({__name:"VPNavBarSocialLinks",setup(e){const{theme:t}=N();return(o,n)=>u(t).socialLinks?(l(),S(Ct,{key:0,class:"VPNavBarSocialLinks",links:u(t).socialLinks},null,8,["links"])):w("",!0)}}),Hr=A(xr,[["__scopeId","data-v-0394ad82"]]),Or=["href","rel","target"],Br=["innerHTML"],Ir={key:2},Er=k({__name:"VPNavBarTitle",setup(e){const{site:t,theme:o}=N(),{hasSidebar:n}=ue(),{currentLang:s}=Ee(),i=V(()=>{var c;return typeof o.value.logoLink=="string"?o.value.logoLink:(c=o.value.logoLink)==null?void 0:c.link}),r=V(()=>{var c;return typeof o.value.logoLink=="string"||(c=o.value.logoLink)==null?void 0:c.rel}),a=V(()=>{var c;return typeof o.value.logoLink=="string"||(c=o.value.logoLink)==null?void 0:c.target});return(c,h)=>(l(),p("div",{class:O(["VPNavBarTitle",{"has-sidebar":u(n)}])},[m("a",{class:"title",href:i.value??u(St)(u(s).link),rel:r.value,target:a.value},[d(c.$slots,"nav-bar-title-before",{},void 0,!0),u(o).logo?(l(),S(je,{key:0,class:"logo",image:u(o).logo},null,8,["image"])):w("",!0),u(o).siteTitle?(l(),p("span",{key:1,innerHTML:u(o).siteTitle},null,8,Br)):u(o).siteTitle===void 0?(l(),p("span",Ir,I(u(t).title),1)):w("",!0),d(c.$slots,"nav-bar-title-after",{},void 0,!0)],8,Or)],2))}}),Dr=A(Er,[["__scopeId","data-v-1168a8e4"]]),zr={class:"items"},Fr={class:"title"},Rr=k({__name:"VPNavBarTranslations",setup(e){const{theme:t}=N(),{localeLinks:o,currentLang:n}=Ee({correspondingLink:!0});return(s,i)=>u(o).length&&u(n).label?(l(),S(Vt,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:u(t).langMenuLabel||"Change language"},{default:v(()=>[m("div",zr,[m("p",Fr,I(u(n).label),1),(l(!0),p(E,null,R(u(o),r=>(l(),S(et,{key:r.link,item:r},null,8,["item"]))),128))])]),_:1},8,["label"])):w("",!0)}}),jr=A(Rr,[["__scopeId","data-v-88af2de4"]]),Wr={class:"wrapper"},Gr={class:"container"},Ur={class:"title"},qr={class:"content"},Kr={class:"content-body"},Yr=k({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(e){const t=e,{y:o}=io(),{hasSidebar:n}=ue(),{frontmatter:s}=N(),i=H({});return kt(()=>{i.value={"has-sidebar":n.value,home:s.value.layout==="home",top:o.value===0,"screen-open":t.isScreenOpen}}),(r,a)=>(l(),p("div",{class:O(["VPNavBar",i.value])},[m("div",Wr,[m("div",Gr,[m("div",Ur,[T(Dr,null,{"nav-bar-title-before":v(()=>[d(r.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[d(r.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),m("div",qr,[m("div",Kr,[d(r.$slots,"nav-bar-content-before",{},void 0,!0),T(Mr,{class:"search"}),T(Pr,{class:"menu"}),T(jr,{class:"translations"}),T(xi,{class:"appearance"}),T(Hr,{class:"social-links"}),T(fr,{class:"extra"}),d(r.$slots,"nav-bar-content-after",{},void 0,!0),T(gr,{class:"hamburger",active:r.isScreenOpen,onClick:a[0]||(a[0]=c=>r.$emit("toggle-screen"))},null,8,["active"])])])])]),a[1]||(a[1]=m("div",{class:"divider"},[m("div",{class:"divider-line"})],-1))],2))}}),Xr=A(Yr,[["__scopeId","data-v-6aa21345"]]),Jr={key:0,class:"VPNavScreenAppearance"},Qr={class:"text"},Zr=k({__name:"VPNavScreenAppearance",setup(e){const{site:t,theme:o}=N();return(n,s)=>u(t).appearance&&u(t).appearance!=="force-dark"&&u(t).appearance!=="force-auto"?(l(),p("div",Jr,[m("p",Qr,I(u(o).darkModeSwitchLabel||"Appearance"),1),T(Lt)])):w("",!0)}}),ea=A(Zr,[["__scopeId","data-v-b44890b2"]]),ta=["innerHTML"],oa=k({__name:"VPNavScreenMenuLink",props:{item:{}},setup(e){const t=Qe("close-screen");return(o,n)=>(l(),S(se,{class:"VPNavScreenMenuLink",href:o.item.link,target:o.item.target,rel:o.item.rel,"no-icon":o.item.noIcon,onClick:u(t)},{default:v(()=>[m("span",{innerHTML:o.item.text},null,8,ta)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),na=A(oa,[["__scopeId","data-v-df37e6dd"]]),sa=["innerHTML"],ia=k({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(e){const t=Qe("close-screen");return(o,n)=>(l(),S(se,{class:"VPNavScreenMenuGroupLink",href:o.item.link,target:o.item.target,rel:o.item.rel,"no-icon":o.item.noIcon,onClick:u(t)},{default:v(()=>[m("span",{innerHTML:o.item.text},null,8,sa)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),mo=A(ia,[["__scopeId","data-v-3e9c20e4"]]),ra={class:"VPNavScreenMenuGroupSection"},aa={key:0,class:"title"},la=k({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(e){return(t,o)=>(l(),p("div",ra,[t.text?(l(),p("p",aa,I(t.text),1)):w("",!0),(l(!0),p(E,null,R(t.items,n=>(l(),S(mo,{key:n.text,item:n},null,8,["item"]))),128))]))}}),ca=A(la,[["__scopeId","data-v-8133b170"]]),ua=["aria-controls","aria-expanded"],da=["innerHTML"],pa=["id"],ha={key:0,class:"item"},fa={key:1,class:"item"},ma={key:2,class:"group"},va=k({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(e){const t=e,o=H(!1),n=V(()=>`NavScreenGroup-${t.text.replace(" ","-").toLowerCase()}`);function s(){o.value=!o.value}return(i,r)=>(l(),p("div",{class:O(["VPNavScreenMenuGroup",{open:o.value}])},[m("button",{class:"button","aria-controls":n.value,"aria-expanded":o.value,onClick:s},[m("span",{class:"button-text",innerHTML:i.text},null,8,da),r[0]||(r[0]=m("span",{class:"vpi-plus button-icon"},null,-1))],8,ua),m("div",{id:n.value,class:"items"},[(l(!0),p(E,null,R(i.items,a=>(l(),p(E,{key:JSON.stringify(a)},["link"in a?(l(),p("div",ha,[T(mo,{item:a},null,8,["item"])])):"component"in a?(l(),p("div",fa,[(l(),S(oe(a.component),ne({ref_for:!0},a.props,{"screen-menu":""}),null,16))])):(l(),p("div",ma,[T(ca,{text:a.text,items:a.items},null,8,["text","items"])]))],64))),128))],8,pa)],2))}}),ga=A(va,[["__scopeId","data-v-b9ab8c58"]]),_a={key:0,class:"VPNavScreenMenu"},ya=k({__name:"VPNavScreenMenu",setup(e){const{theme:t}=N();return(o,n)=>u(t).nav?(l(),p("nav",_a,[(l(!0),p(E,null,R(u(t).nav,s=>(l(),p(E,{key:JSON.stringify(s)},["link"in s?(l(),S(na,{key:0,item:s},null,8,["item"])):"component"in s?(l(),S(oe(s.component),ne({key:1,ref_for:!0},s.props,{"screen-menu":""}),null,16)):(l(),S(ga,{key:2,text:s.text||"",items:s.items},null,8,["text","items"]))],64))),128))])):w("",!0)}}),$a=k({__name:"VPNavScreenSocialLinks",setup(e){const{theme:t}=N();return(o,n)=>u(t).socialLinks?(l(),S(Ct,{key:0,class:"VPNavScreenSocialLinks",links:u(t).socialLinks},null,8,["links"])):w("",!0)}}),ba={class:"list"},wa=k({__name:"VPNavScreenTranslations",setup(e){const{localeLinks:t,currentLang:o}=Ee({correspondingLink:!0}),n=H(!1);function s(){n.value=!n.value}return(i,r)=>u(t).length&&u(o).label?(l(),p("div",{key:0,class:O(["VPNavScreenTranslations",{open:n.value}])},[m("button",{class:"title",onClick:s},[r[0]||(r[0]=m("span",{class:"vpi-languages icon lang"},null,-1)),be(" "+I(u(o).label)+" ",1),r[1]||(r[1]=m("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),m("ul",ba,[(l(!0),p(E,null,R(u(t),a=>(l(),p("li",{key:a.link,class:"item"},[T(se,{class:"link",href:a.link},{default:v(()=>[be(I(a.text),1)]),_:2},1032,["href"])]))),128))])],2)):w("",!0)}}),ka=A(wa,[["__scopeId","data-v-858fe1a4"]]),Pa={class:"container"},Sa=k({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(e){const t=H(null),o=ro(Ze?document.body:null);return(n,s)=>(l(),S($t,{name:"fade",onEnter:s[0]||(s[0]=i=>o.value=!0),onAfterLeave:s[1]||(s[1]=i=>o.value=!1)},{default:v(()=>[n.open?(l(),p("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:t,id:"VPNavScreen"},[m("div",Pa,[d(n.$slots,"nav-screen-content-before",{},void 0,!0),T(ya,{class:"menu"}),T(ka,{class:"translations"}),T(ea,{class:"appearance"}),T($a,{class:"social-links"}),d(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):w("",!0)]),_:3}))}}),Ta=A(Sa,[["__scopeId","data-v-f2779853"]]),La={key:0,class:"VPNav"},Aa=k({__name:"VPNav",setup(e){const{isScreenOpen:t,closeScreen:o,toggleScreen:n}=ki(),{frontmatter:s}=N(),i=V(()=>s.value.navbar!==!1);return ao("close-screen",o),Ye(()=>{Ze&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(r,a)=>i.value?(l(),p("header",La,[T(Xr,{"is-screen-open":u(t),onToggleScreen:u(n)},{"nav-bar-title-before":v(()=>[d(r.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[d(r.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[d(r.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[d(r.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),T(Ta,{open:u(t)},{"nav-screen-content-before":v(()=>[d(r.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[d(r.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):w("",!0)}}),Va=A(Aa,[["__scopeId","data-v-ae24b3ad"]]),Ca=["role","tabindex"],Na={key:1,class:"items"},Ma=k({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(e){const t=e,{collapsed:o,collapsible:n,isLink:s,isActiveLink:i,hasActiveLink:r,hasChildren:a,toggle:c}=Ln(V(()=>t.item)),h=V(()=>a.value?"section":"div"),g=V(()=>s.value?"a":"div"),f=V(()=>a.value?t.depth+2===7?"p":`h${t.depth+2}`:"p"),_=V(()=>s.value?void 0:"button"),y=V(()=>[[`level-${t.depth}`],{collapsible:n.value},{collapsed:o.value},{"is-link":s.value},{"is-active":i.value},{"has-active":r.value}]);function $(b){"key"in b&&b.key!=="Enter"||!t.item.link&&c()}function P(){t.item.link&&c()}return(b,L)=>{const C=K("VPSidebarItem",!0);return l(),S(oe(h.value),{class:O(["VPSidebarItem",y.value])},{default:v(()=>[b.item.text?(l(),p("div",ne({key:0,class:"item",role:_.value},Qo(b.item.items?{click:$,keydown:$}:{},!0),{tabindex:b.item.items&&0}),[L[1]||(L[1]=m("div",{class:"indicator"},null,-1)),b.item.link?(l(),S(se,{key:0,tag:g.value,class:"link",href:b.item.link,rel:b.item.rel,target:b.item.target},{default:v(()=>[(l(),S(oe(f.value),{class:"text",innerHTML:b.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(l(),S(oe(f.value),{key:1,class:"text",innerHTML:b.item.text},null,8,["innerHTML"])),b.item.collapsed!=null&&b.item.items&&b.item.items.length?(l(),p("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:P,onKeydown:lo(P,["enter"]),tabindex:"0"},L[0]||(L[0]=[m("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):w("",!0)],16,Ca)):w("",!0),b.item.items&&b.item.items.length?(l(),p("div",Na,[b.depth<5?(l(!0),p(E,{key:0},R(b.item.items,x=>(l(),S(C,{key:x.text,item:x,depth:b.depth+1},null,8,["item","depth"]))),128)):w("",!0)])):w("",!0)]),_:1},8,["class"])}}}),xa=A(Ma,[["__scopeId","data-v-b7550ba0"]]),Ha=k({__name:"VPSidebarGroup",props:{items:{}},setup(e){const t=H(!0);let o=null;return _e(()=>{o=setTimeout(()=>{o=null,t.value=!1},300)}),Zo(()=>{o!=null&&(clearTimeout(o),o=null)}),(n,s)=>(l(!0),p(E,null,R(n.items,i=>(l(),p("div",{key:i.text,class:O(["group",{"no-transition":t.value}])},[T(xa,{item:i,depth:0},null,8,["item"])],2))),128))}}),Oa=A(Ha,[["__scopeId","data-v-c40bc020"]]),Ba={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ia=k({__name:"VPSidebar",props:{open:{type:Boolean}},setup(e){const{sidebarGroups:t,hasSidebar:o}=ue(),n=e,s=H(null),i=ro(Ze?document.body:null);ce([n,s],()=>{var a;n.open?(i.value=!0,(a=s.value)==null||a.focus()):i.value=!1},{immediate:!0,flush:"post"});const r=H(0);return ce(t,()=>{r.value+=1},{deep:!0}),(a,c)=>u(o)?(l(),p("aside",{key:0,class:O(["VPSidebar",{open:a.open}]),ref_key:"navEl",ref:s,onClick:c[0]||(c[0]=en(()=>{},["stop"]))},[c[2]||(c[2]=m("div",{class:"curtain"},null,-1)),m("nav",Ba,[c[1]||(c[1]=m("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),d(a.$slots,"sidebar-nav-before",{},void 0,!0),(l(),S(Oa,{items:u(t),key:r.value},null,8,["items"])),d(a.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):w("",!0)}}),Ea=A(Ia,[["__scopeId","data-v-319d5ca6"]]),Da=k({__name:"VPSkipLink",setup(e){const t=Je(),o=H();ce(()=>t.path,()=>o.value.focus());function n({target:s}){const i=document.getElementById(decodeURIComponent(s.hash).slice(1));if(i){const r=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",r)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",r),i.focus(),window.scrollTo(0,0)}}return(s,i)=>(l(),p(E,null,[m("span",{ref_key:"backToTop",ref:o,tabindex:"-1"},null,512),m("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}}),za=A(Da,[["__scopeId","data-v-0f60ec36"]]),Fa=k({__name:"Layout",setup(e){const{isOpen:t,open:o,close:n}=ue(),s=Je();ce(()=>s.path,n),Tn(t,n);const{frontmatter:i}=N(),r=tn(),a=V(()=>!!r["home-hero-image"]);return ao("hero-image-slot-exists",a),(c,h)=>{const g=K("Content");return u(i).layout!==!1?(l(),p("div",{key:0,class:O(["Layout",u(i).pageClass])},[d(c.$slots,"layout-top",{},void 0,!0),T(za),T(hn,{class:"backdrop",show:u(t),onClick:u(n)},null,8,["show","onClick"]),T(Va,null,{"nav-bar-title-before":v(()=>[d(c.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[d(c.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[d(c.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[d(c.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[d(c.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[d(c.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),T(wi,{open:u(t),onOpenMenu:u(o)},null,8,["open","onOpenMenu"]),T(Ea,{open:u(t)},{"sidebar-nav-before":v(()=>[d(c.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[d(c.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),T(ri,null,{"page-top":v(()=>[d(c.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[d(c.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[d(c.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[d(c.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[d(c.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[d(c.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[d(c.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[d(c.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[d(c.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[d(c.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[d(c.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[d(c.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[d(c.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[d(c.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[d(c.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[d(c.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[d(c.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[d(c.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[d(c.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[d(c.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[d(c.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[d(c.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[d(c.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),T(di),d(c.$slots,"layout-bottom",{},void 0,!0)],2)):(l(),S(g,{key:1}))}}}),Ra=A(Fa,[["__scopeId","data-v-5d98c3a5"]]),ja={Layout:Ra,enhanceApp:({app:e})=>{e.component("Badge",un)}},Wa=["top","right","bottom","left"],Bt=["start","end"],It=Wa.reduce((e,t)=>e.concat(t,t+"-"+Bt[0],t+"-"+Bt[1]),[]),xe=Math.min,$e=Math.max,Ga={left:"right",right:"left",bottom:"top",top:"bottom"},Ua={start:"end",end:"start"};function mt(e,t,o){return $e(e,xe(t,o))}function Pe(e,t){return typeof e=="function"?e(t):e}function ae(e){return e.split("-")[0]}function J(e){return e.split("-")[1]}function vo(e){return e==="x"?"y":"x"}function Nt(e){return e==="y"?"height":"width"}function ke(e){return["top","bottom"].includes(ae(e))?"y":"x"}function Mt(e){return vo(ke(e))}function go(e,t,o){o===void 0&&(o=!1);const n=J(e),s=Mt(e),i=Nt(s);let r=s==="x"?n===(o?"end":"start")?"right":"left":n==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(r=Ge(r)),[r,Ge(r)]}function qa(e){const t=Ge(e);return[We(e),t,We(t)]}function We(e){return e.replace(/start|end/g,t=>Ua[t])}function Ka(e,t,o){const n=["left","right"],s=["right","left"],i=["top","bottom"],r=["bottom","top"];switch(e){case"top":case"bottom":return o?t?s:n:t?n:s;case"left":case"right":return t?i:r;default:return[]}}function Ya(e,t,o,n){const s=J(e);let i=Ka(ae(e),o==="start",n);return s&&(i=i.map(r=>r+"-"+s),t&&(i=i.concat(i.map(We)))),i}function Ge(e){return e.replace(/left|right|bottom|top/g,t=>Ga[t])}function Xa(e){return{top:0,right:0,bottom:0,left:0,...e}}function _o(e){return typeof e!="number"?Xa(e):{top:e,right:e,bottom:e,left:e}}function Ve(e){const{x:t,y:o,width:n,height:s}=e;return{width:n,height:s,top:o,left:t,right:t+n,bottom:o+s,x:t,y:o}}function Et(e,t,o){let{reference:n,floating:s}=e;const i=ke(t),r=Mt(t),a=Nt(r),c=ae(t),h=i==="y",g=n.x+n.width/2-s.width/2,f=n.y+n.height/2-s.height/2,_=n[a]/2-s[a]/2;let y;switch(c){case"top":y={x:g,y:n.y-s.height};break;case"bottom":y={x:g,y:n.y+n.height};break;case"right":y={x:n.x+n.width,y:f};break;case"left":y={x:n.x-s.width,y:f};break;default:y={x:n.x,y:n.y}}switch(J(t)){case"start":y[r]-=_*(o&&h?-1:1);break;case"end":y[r]+=_*(o&&h?-1:1);break}return y}const Ja=async(e,t,o)=>{const{placement:n="bottom",strategy:s="absolute",middleware:i=[],platform:r}=o,a=i.filter(Boolean),c=await(r.isRTL==null?void 0:r.isRTL(t));let h=await r.getElementRects({reference:e,floating:t,strategy:s}),{x:g,y:f}=Et(h,n,c),_=n,y={},$=0;for(let P=0;P({name:"arrow",options:e,async fn(t){const{x:o,y:n,placement:s,rects:i,platform:r,elements:a,middlewareData:c}=t,{element:h,padding:g=0}=Pe(e,t)||{};if(h==null)return{};const f=_o(g),_={x:o,y:n},y=Mt(s),$=Nt(y),P=await r.getDimensions(h),b=y==="y",L=b?"top":"left",C=b?"bottom":"right",x=b?"clientHeight":"clientWidth",D=i.reference[$]+i.reference[y]-_[y]-i.floating[$],B=_[y]-i.reference[y],Y=await(r.getOffsetParent==null?void 0:r.getOffsetParent(h));let j=Y?Y[x]:0;(!j||!await(r.isElement==null?void 0:r.isElement(Y)))&&(j=a.floating[x]||i.floating[$]);const Z=D/2-B/2,G=j/2-P[$]/2-1,z=xe(f[L],G),W=xe(f[C],G),U=z,ee=j-P[$]-W,F=j/2-P[$]/2+Z,Se=mt(U,F,ee),le=!c.arrow&&J(s)!=null&&F!==Se&&i.reference[$]/2-(FJ(s)===e),...o.filter(s=>J(s)!==e)]:o.filter(s=>ae(s)===s)).filter(s=>e?J(s)===e||(t?We(s)!==s:!1):!0)}const el=function(e){return e===void 0&&(e={}),{name:"autoPlacement",options:e,async fn(t){var o,n,s;const{rects:i,middlewareData:r,placement:a,platform:c,elements:h}=t,{crossAxis:g=!1,alignment:f,allowedPlacements:_=It,autoAlignment:y=!0,...$}=Pe(e,t),P=f!==void 0||_===It?Za(f||null,y,_):_,b=await tt(t,$),L=((o=r.autoPlacement)==null?void 0:o.index)||0,C=P[L];if(C==null)return{};const x=go(C,i,await(c.isRTL==null?void 0:c.isRTL(h.floating)));if(a!==C)return{reset:{placement:P[0]}};const D=[b[ae(C)],b[x[0]],b[x[1]]],B=[...((n=r.autoPlacement)==null?void 0:n.overflows)||[],{placement:C,overflows:D}],Y=P[L+1];if(Y)return{data:{index:L+1,overflows:B},reset:{placement:Y}};const j=B.map(z=>{const W=J(z.placement);return[z.placement,W&&g?z.overflows.slice(0,2).reduce((U,ee)=>U+ee,0):z.overflows[0],z.overflows]}).sort((z,W)=>z[1]-W[1]),G=((s=j.filter(z=>z[2].slice(0,J(z[0])?2:3).every(W=>W<=0))[0])==null?void 0:s[0])||j[0][0];return G!==a?{data:{index:L+1,overflows:B},reset:{placement:G}}:{}}}},tl=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var o,n;const{placement:s,middlewareData:i,rects:r,initialPlacement:a,platform:c,elements:h}=t,{mainAxis:g=!0,crossAxis:f=!0,fallbackPlacements:_,fallbackStrategy:y="bestFit",fallbackAxisSideDirection:$="none",flipAlignment:P=!0,...b}=Pe(e,t);if((o=i.arrow)!=null&&o.alignmentOffset)return{};const L=ae(s),C=ke(a),x=ae(a)===a,D=await(c.isRTL==null?void 0:c.isRTL(h.floating)),B=_||(x||!P?[Ge(a)]:qa(a)),Y=$!=="none";!_&&Y&&B.push(...Ya(a,P,$,D));const j=[a,...B],Z=await tt(t,b),G=[];let z=((n=i.flip)==null?void 0:n.overflows)||[];if(g&&G.push(Z[L]),f){const F=go(s,r,D);G.push(Z[F[0]],Z[F[1]])}if(z=[...z,{placement:s,overflows:G}],!G.every(F=>F<=0)){var W,U;const F=(((W=i.flip)==null?void 0:W.index)||0)+1,Se=j[F];if(Se)return{data:{index:F,overflows:z},reset:{placement:Se}};let le=(U=z.filter(te=>te.overflows[0]<=0).sort((te,de)=>te.overflows[1]-de.overflows[1])[0])==null?void 0:U.placement;if(!le)switch(y){case"bestFit":{var ee;const te=(ee=z.filter(de=>{if(Y){const pe=ke(de.placement);return pe===C||pe==="y"}return!0}).map(de=>[de.placement,de.overflows.filter(pe=>pe>0).reduce((pe,Ro)=>pe+Ro,0)]).sort((de,pe)=>de[1]-pe[1])[0])==null?void 0:ee[0];te&&(le=te);break}case"initialPlacement":le=a;break}if(s!==le)return{reset:{placement:le}}}return{}}}};async function ol(e,t){const{placement:o,platform:n,elements:s}=e,i=await(n.isRTL==null?void 0:n.isRTL(s.floating)),r=ae(o),a=J(o),c=ke(o)==="y",h=["left","top"].includes(r)?-1:1,g=i&&c?-1:1,f=Pe(t,e);let{mainAxis:_,crossAxis:y,alignmentAxis:$}=typeof f=="number"?{mainAxis:f,crossAxis:0,alignmentAxis:null}:{mainAxis:f.mainAxis||0,crossAxis:f.crossAxis||0,alignmentAxis:f.alignmentAxis};return a&&typeof $=="number"&&(y=a==="end"?$*-1:$),c?{x:y*g,y:_*h}:{x:_*h,y:y*g}}const nl=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var o,n;const{x:s,y:i,placement:r,middlewareData:a}=t,c=await ol(t,e);return r===((o=a.offset)==null?void 0:o.placement)&&(n=a.arrow)!=null&&n.alignmentOffset?{}:{x:s+c.x,y:i+c.y,data:{...c,placement:r}}}}},sl=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:o,y:n,placement:s}=t,{mainAxis:i=!0,crossAxis:r=!1,limiter:a={fn:b=>{let{x:L,y:C}=b;return{x:L,y:C}}},...c}=Pe(e,t),h={x:o,y:n},g=await tt(t,c),f=ke(ae(s)),_=vo(f);let y=h[_],$=h[f];if(i){const b=_==="y"?"top":"left",L=_==="y"?"bottom":"right",C=y+g[b],x=y-g[L];y=mt(C,y,x)}if(r){const b=f==="y"?"top":"left",L=f==="y"?"bottom":"right",C=$+g[b],x=$-g[L];$=mt(C,$,x)}const P=a.fn({...t,[_]:y,[f]:$});return{...P,data:{x:P.x-o,y:P.y-n,enabled:{[_]:i,[f]:r}}}}}},il=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var o,n;const{placement:s,rects:i,platform:r,elements:a}=t,{apply:c=()=>{},...h}=Pe(e,t),g=await tt(t,h),f=ae(s),_=J(s),y=ke(s)==="y",{width:$,height:P}=i.floating;let b,L;f==="top"||f==="bottom"?(b=f,L=_===(await(r.isRTL==null?void 0:r.isRTL(a.floating))?"start":"end")?"left":"right"):(L=f,b=_==="end"?"top":"bottom");const C=P-g.top-g.bottom,x=$-g.left-g.right,D=xe(P-g[b],C),B=xe($-g[L],x),Y=!t.middlewareData.shift;let j=D,Z=B;if((o=t.middlewareData.shift)!=null&&o.enabled.x&&(Z=x),(n=t.middlewareData.shift)!=null&&n.enabled.y&&(j=C),Y&&!_){const z=$e(g.left,0),W=$e(g.right,0),U=$e(g.top,0),ee=$e(g.bottom,0);y?Z=$-2*(z!==0||W!==0?z+W:$e(g.left,g.right)):j=P-2*(U!==0||ee!==0?U+ee:$e(g.top,g.bottom))}await c({...t,availableWidth:Z,availableHeight:j});const G=await r.getDimensions(a.floating);return $!==G.width||P!==G.height?{reset:{rects:!0}}:{}}}};function q(e){var t;return((t=e.ownerDocument)==null?void 0:t.defaultView)||window}function ie(e){return q(e).getComputedStyle(e)}const Dt=Math.min,Ce=Math.max,Ue=Math.round;function yo(e){const t=ie(e);let o=parseFloat(t.width),n=parseFloat(t.height);const s=e.offsetWidth,i=e.offsetHeight,r=Ue(o)!==s||Ue(n)!==i;return r&&(o=s,n=i),{width:o,height:n,fallback:r}}function ge(e){return bo(e)?(e.nodeName||"").toLowerCase():""}let De;function $o(){if(De)return De;const e=navigator.userAgentData;return e&&Array.isArray(e.brands)?(De=e.brands.map(t=>t.brand+"/"+t.version).join(" "),De):navigator.userAgent}function re(e){return e instanceof q(e).HTMLElement}function me(e){return e instanceof q(e).Element}function bo(e){return e instanceof q(e).Node}function zt(e){return typeof ShadowRoot>"u"?!1:e instanceof q(e).ShadowRoot||e instanceof ShadowRoot}function ot(e){const{overflow:t,overflowX:o,overflowY:n,display:s}=ie(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+o)&&!["inline","contents"].includes(s)}function rl(e){return["table","td","th"].includes(ge(e))}function vt(e){const t=/firefox/i.test($o()),o=ie(e),n=o.backdropFilter||o.WebkitBackdropFilter;return o.transform!=="none"||o.perspective!=="none"||!!n&&n!=="none"||t&&o.willChange==="filter"||t&&!!o.filter&&o.filter!=="none"||["transform","perspective"].some(s=>o.willChange.includes(s))||["paint","layout","strict","content"].some(s=>{const i=o.contain;return i!=null&&i.includes(s)})}function wo(){return!/^((?!chrome|android).)*safari/i.test($o())}function xt(e){return["html","body","#document"].includes(ge(e))}function ko(e){return me(e)?e:e.contextElement}const Po={x:1,y:1};function Te(e){const t=ko(e);if(!re(t))return Po;const o=t.getBoundingClientRect(),{width:n,height:s,fallback:i}=yo(t);let r=(i?Ue(o.width):o.width)/n,a=(i?Ue(o.height):o.height)/s;return r&&Number.isFinite(r)||(r=1),a&&Number.isFinite(a)||(a=1),{x:r,y:a}}function He(e,t,o,n){var s,i;t===void 0&&(t=!1),o===void 0&&(o=!1);const r=e.getBoundingClientRect(),a=ko(e);let c=Po;t&&(n?me(n)&&(c=Te(n)):c=Te(e));const h=a?q(a):window,g=!wo()&&o;let f=(r.left+(g&&((s=h.visualViewport)==null?void 0:s.offsetLeft)||0))/c.x,_=(r.top+(g&&((i=h.visualViewport)==null?void 0:i.offsetTop)||0))/c.y,y=r.width/c.x,$=r.height/c.y;if(a){const P=q(a),b=n&&me(n)?q(n):n;let L=P.frameElement;for(;L&&n&&b!==P;){const C=Te(L),x=L.getBoundingClientRect(),D=getComputedStyle(L);x.x+=(L.clientLeft+parseFloat(D.paddingLeft))*C.x,x.y+=(L.clientTop+parseFloat(D.paddingTop))*C.y,f*=C.x,_*=C.y,y*=C.x,$*=C.y,f+=x.x,_+=x.y,L=q(L).frameElement}}return{width:y,height:$,top:_,right:f+y,bottom:_+$,left:f,x:f,y:_}}function ve(e){return((bo(e)?e.ownerDocument:e.document)||window.document).documentElement}function nt(e){return me(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function So(e){return He(ve(e)).left+nt(e).scrollLeft}function Oe(e){if(ge(e)==="html")return e;const t=e.assignedSlot||e.parentNode||zt(e)&&e.host||ve(e);return zt(t)?t.host:t}function To(e){const t=Oe(e);return xt(t)?t.ownerDocument.body:re(t)&&ot(t)?t:To(t)}function qe(e,t){var o;t===void 0&&(t=[]);const n=To(e),s=n===((o=e.ownerDocument)==null?void 0:o.body),i=q(n);return s?t.concat(i,i.visualViewport||[],ot(n)?n:[]):t.concat(n,qe(n))}function Ft(e,t,o){return t==="viewport"?Ve(function(n,s){const i=q(n),r=ve(n),a=i.visualViewport;let c=r.clientWidth,h=r.clientHeight,g=0,f=0;if(a){c=a.width,h=a.height;const _=wo();(_||!_&&s==="fixed")&&(g=a.offsetLeft,f=a.offsetTop)}return{width:c,height:h,x:g,y:f}}(e,o)):me(t)?Ve(function(n,s){const i=He(n,!0,s==="fixed"),r=i.top+n.clientTop,a=i.left+n.clientLeft,c=re(n)?Te(n):{x:1,y:1};return{width:n.clientWidth*c.x,height:n.clientHeight*c.y,x:a*c.x,y:r*c.y}}(t,o)):Ve(function(n){const s=ve(n),i=nt(n),r=n.ownerDocument.body,a=Ce(s.scrollWidth,s.clientWidth,r.scrollWidth,r.clientWidth),c=Ce(s.scrollHeight,s.clientHeight,r.scrollHeight,r.clientHeight);let h=-i.scrollLeft+So(n);const g=-i.scrollTop;return ie(r).direction==="rtl"&&(h+=Ce(s.clientWidth,r.clientWidth)-a),{width:a,height:c,x:h,y:g}}(ve(e)))}function Rt(e){return re(e)&&ie(e).position!=="fixed"?e.offsetParent:null}function jt(e){const t=q(e);let o=Rt(e);for(;o&&rl(o)&&ie(o).position==="static";)o=Rt(o);return o&&(ge(o)==="html"||ge(o)==="body"&&ie(o).position==="static"&&!vt(o))?t:o||function(n){let s=Oe(n);for(;re(s)&&!xt(s);){if(vt(s))return s;s=Oe(s)}return null}(e)||t}function al(e,t,o){const n=re(t),s=ve(t),i=He(e,!0,o==="fixed",t);let r={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if(n||!n&&o!=="fixed")if((ge(t)!=="body"||ot(s))&&(r=nt(t)),re(t)){const c=He(t,!0);a.x=c.x+t.clientLeft,a.y=c.y+t.clientTop}else s&&(a.x=So(s));return{x:i.left+r.scrollLeft-a.x,y:i.top+r.scrollTop-a.y,width:i.width,height:i.height}}const ll={getClippingRect:function(e){let{element:t,boundary:o,rootBoundary:n,strategy:s}=e;const i=o==="clippingAncestors"?function(h,g){const f=g.get(h);if(f)return f;let _=qe(h).filter(b=>me(b)&&ge(b)!=="body"),y=null;const $=ie(h).position==="fixed";let P=$?Oe(h):h;for(;me(P)&&!xt(P);){const b=ie(P),L=vt(P);($?L||y:L||b.position!=="static"||!y||!["absolute","fixed"].includes(y.position))?y=b:_=_.filter(C=>C!==P),P=Oe(P)}return g.set(h,_),_}(t,this._c):[].concat(o),r=[...i,n],a=r[0],c=r.reduce((h,g)=>{const f=Ft(t,g,s);return h.top=Ce(f.top,h.top),h.right=Dt(f.right,h.right),h.bottom=Dt(f.bottom,h.bottom),h.left=Ce(f.left,h.left),h},Ft(t,a,s));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:o,strategy:n}=e;const s=re(o),i=ve(o);if(o===i)return t;let r={scrollLeft:0,scrollTop:0},a={x:1,y:1};const c={x:0,y:0};if((s||!s&&n!=="fixed")&&((ge(o)!=="body"||ot(i))&&(r=nt(o)),re(o))){const h=He(o);a=Te(o),c.x=h.x+o.clientLeft,c.y=h.y+o.clientTop}return{width:t.width*a.x,height:t.height*a.y,x:t.x*a.x-r.scrollLeft*a.x+c.x,y:t.y*a.y-r.scrollTop*a.y+c.y}},isElement:me,getDimensions:function(e){return re(e)?yo(e):e.getBoundingClientRect()},getOffsetParent:jt,getDocumentElement:ve,getScale:Te,async getElementRects(e){let{reference:t,floating:o,strategy:n}=e;const s=this.getOffsetParent||jt,i=this.getDimensions;return{reference:al(t,await s(o),n),floating:{x:0,y:0,...await i(o)}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>ie(e).direction==="rtl"},cl=(e,t,o)=>{const n=new Map,s={platform:ll,...o},i={...s.platform,_c:n};return Ja(e,t,{...s,platform:i})};function Lo(e,t){for(const o in t)Object.prototype.hasOwnProperty.call(t,o)&&(typeof t[o]=="object"&&e[o]?Lo(e[o],t[o]):e[o]=t[o])}const Q={disabled:!1,distance:5,skidding:0,container:"body",boundary:void 0,instantMove:!1,disposeTimeout:150,popperTriggers:[],strategy:"absolute",preventOverflow:!0,flip:!0,shift:!0,overflowPadding:0,arrowPadding:0,arrowOverflow:!0,autoHideOnMousedown:!1,themes:{tooltip:{placement:"top",triggers:["hover","focus","touch"],hideTriggers:e=>[...e,"click"],delay:{show:200,hide:0},handleResize:!1,html:!1,loadingContent:"..."},dropdown:{placement:"bottom",triggers:["click"],delay:0,handleResize:!0,autoHide:!0},menu:{$extend:"dropdown",triggers:["hover","focus"],popperTriggers:["hover"],delay:{show:0,hide:400}}}};function Be(e,t){let o=Q.themes[e]||{},n;do n=o[t],typeof n>"u"?o.$extend?o=Q.themes[o.$extend]||{}:(o=null,n=Q[t]):o=null;while(o);return n}function ul(e){const t=[e];let o=Q.themes[e]||{};do o.$extend&&!o.$resetCss?(t.push(o.$extend),o=Q.themes[o.$extend]||{}):o=null;while(o);return t.map(n=>`v-popper--theme-${n}`)}function Wt(e){const t=[e];let o=Q.themes[e]||{};do o.$extend?(t.push(o.$extend),o=Q.themes[o.$extend]||{}):o=null;while(o);return t}let Le=!1;if(typeof window<"u"){Le=!1;try{const e=Object.defineProperty({},"passive",{get(){Le=!0}});window.addEventListener("test",null,e)}catch{}}let Ao=!1;typeof window<"u"&&typeof navigator<"u"&&(Ao=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream);const Vo=["auto","top","bottom","left","right"].reduce((e,t)=>e.concat([t,`${t}-start`,`${t}-end`]),[]),Gt={hover:"mouseenter",focus:"focus",click:"click",touch:"touchstart",pointer:"pointerdown"},Ut={hover:"mouseleave",focus:"blur",click:"click",touch:"touchend",pointer:"pointerup"};function qt(e,t){const o=e.indexOf(t);o!==-1&&e.splice(o,1)}function at(){return new Promise(e=>requestAnimationFrame(()=>{requestAnimationFrame(e)}))}const X=[];let ye=null;const Kt={};function Yt(e){let t=Kt[e];return t||(t=Kt[e]=[]),t}let gt=function(){};typeof window<"u"&&(gt=window.Element);function M(e){return function(t){return Be(t.theme,e)}}const lt="__floating-vue__popper",Co=()=>k({name:"VPopper",provide(){return{[lt]:{parentPopper:this}}},inject:{[lt]:{default:null}},props:{theme:{type:String,required:!0},targetNodes:{type:Function,required:!0},referenceNode:{type:Function,default:null},popperNode:{type:Function,required:!0},shown:{type:Boolean,default:!1},showGroup:{type:String,default:null},ariaId:{default:null},disabled:{type:Boolean,default:M("disabled")},positioningDisabled:{type:Boolean,default:M("positioningDisabled")},placement:{type:String,default:M("placement"),validator:e=>Vo.includes(e)},delay:{type:[String,Number,Object],default:M("delay")},distance:{type:[Number,String],default:M("distance")},skidding:{type:[Number,String],default:M("skidding")},triggers:{type:Array,default:M("triggers")},showTriggers:{type:[Array,Function],default:M("showTriggers")},hideTriggers:{type:[Array,Function],default:M("hideTriggers")},popperTriggers:{type:Array,default:M("popperTriggers")},popperShowTriggers:{type:[Array,Function],default:M("popperShowTriggers")},popperHideTriggers:{type:[Array,Function],default:M("popperHideTriggers")},container:{type:[String,Object,gt,Boolean],default:M("container")},boundary:{type:[String,gt],default:M("boundary")},strategy:{type:String,validator:e=>["absolute","fixed"].includes(e),default:M("strategy")},autoHide:{type:[Boolean,Function],default:M("autoHide")},handleResize:{type:Boolean,default:M("handleResize")},instantMove:{type:Boolean,default:M("instantMove")},eagerMount:{type:Boolean,default:M("eagerMount")},popperClass:{type:[String,Array,Object],default:M("popperClass")},computeTransformOrigin:{type:Boolean,default:M("computeTransformOrigin")},autoMinSize:{type:Boolean,default:M("autoMinSize")},autoSize:{type:[Boolean,String],default:M("autoSize")},autoMaxSize:{type:Boolean,default:M("autoMaxSize")},autoBoundaryMaxSize:{type:Boolean,default:M("autoBoundaryMaxSize")},preventOverflow:{type:Boolean,default:M("preventOverflow")},overflowPadding:{type:[Number,String],default:M("overflowPadding")},arrowPadding:{type:[Number,String],default:M("arrowPadding")},arrowOverflow:{type:Boolean,default:M("arrowOverflow")},flip:{type:Boolean,default:M("flip")},shift:{type:Boolean,default:M("shift")},shiftCrossAxis:{type:Boolean,default:M("shiftCrossAxis")},noAutoFocus:{type:Boolean,default:M("noAutoFocus")},disposeTimeout:{type:Number,default:M("disposeTimeout")}},emits:{show:()=>!0,hide:()=>!0,"update:shown":e=>!0,"apply-show":()=>!0,"apply-hide":()=>!0,"close-group":()=>!0,"close-directive":()=>!0,"auto-hide":()=>!0,resize:()=>!0},data(){return{isShown:!1,isMounted:!1,skipTransition:!1,classes:{showFrom:!1,showTo:!1,hideFrom:!1,hideTo:!0},result:{x:0,y:0,placement:"",strategy:this.strategy,arrow:{x:0,y:0,centerOffset:0},transformOrigin:null},randomId:`popper_${[Math.random(),Date.now()].map(e=>e.toString(36).substring(2,10)).join("_")}`,shownChildren:new Set,lastAutoHide:!0,pendingHide:!1,containsGlobalTarget:!1,isDisposed:!0,mouseDownContains:!1}},computed:{popperId(){return this.ariaId!=null?this.ariaId:this.randomId},shouldMountContent(){return this.eagerMount||this.isMounted},slotData(){return{popperId:this.popperId,isShown:this.isShown,shouldMountContent:this.shouldMountContent,skipTransition:this.skipTransition,autoHide:typeof this.autoHide=="function"?this.lastAutoHide:this.autoHide,show:this.show,hide:this.hide,handleResize:this.handleResize,onResize:this.onResize,classes:{...this.classes,popperClass:this.popperClass},result:this.positioningDisabled?null:this.result,attrs:this.$attrs}},parentPopper(){var e;return(e=this[lt])==null?void 0:e.parentPopper},hasPopperShowTriggerHover(){var e,t;return((e=this.popperTriggers)==null?void 0:e.includes("hover"))||((t=this.popperShowTriggers)==null?void 0:t.includes("hover"))}},watch:{shown:"$_autoShowHide",disabled(e){e?this.dispose():this.init()},async container(){this.isShown&&(this.$_ensureTeleport(),await this.$_computePosition())},triggers:{handler:"$_refreshListeners",deep:!0},positioningDisabled:"$_refreshListeners",...["placement","distance","skidding","boundary","strategy","overflowPadding","arrowPadding","preventOverflow","shift","shiftCrossAxis","flip"].reduce((e,t)=>(e[t]="$_computePosition",e),{})},created(){this.autoMinSize&&console.warn('[floating-vue] `autoMinSize` option is deprecated. Use `autoSize="min"` instead.'),this.autoMaxSize&&console.warn("[floating-vue] `autoMaxSize` option is deprecated. Use `autoBoundaryMaxSize` instead.")},mounted(){this.init(),this.$_detachPopperNode()},activated(){this.$_autoShowHide()},deactivated(){this.hide()},beforeUnmount(){this.dispose()},methods:{show({event:e=null,skipDelay:t=!1,force:o=!1}={}){var n,s;(n=this.parentPopper)!=null&&n.lockedChild&&this.parentPopper.lockedChild!==this||(this.pendingHide=!1,(o||!this.disabled)&&(((s=this.parentPopper)==null?void 0:s.lockedChild)===this&&(this.parentPopper.lockedChild=null),this.$_scheduleShow(e,t),this.$emit("show"),this.$_showFrameLocked=!0,requestAnimationFrame(()=>{this.$_showFrameLocked=!1})),this.$emit("update:shown",!0))},hide({event:e=null,skipDelay:t=!1}={}){var o;if(!this.$_hideInProgress){if(this.shownChildren.size>0){this.pendingHide=!0;return}if(this.hasPopperShowTriggerHover&&this.$_isAimingPopper()){this.parentPopper&&(this.parentPopper.lockedChild=this,clearTimeout(this.parentPopper.lockedChildTimer),this.parentPopper.lockedChildTimer=setTimeout(()=>{this.parentPopper.lockedChild===this&&(this.parentPopper.lockedChild.hide({skipDelay:t}),this.parentPopper.lockedChild=null)},1e3));return}((o=this.parentPopper)==null?void 0:o.lockedChild)===this&&(this.parentPopper.lockedChild=null),this.pendingHide=!1,this.$_scheduleHide(e,t),this.$emit("hide"),this.$emit("update:shown",!1)}},init(){var e;this.isDisposed&&(this.isDisposed=!1,this.isMounted=!1,this.$_events=[],this.$_preventShow=!1,this.$_referenceNode=((e=this.referenceNode)==null?void 0:e.call(this))??this.$el,this.$_targetNodes=this.targetNodes().filter(t=>t.nodeType===t.ELEMENT_NODE),this.$_popperNode=this.popperNode(),this.$_innerNode=this.$_popperNode.querySelector(".v-popper__inner"),this.$_arrowNode=this.$_popperNode.querySelector(".v-popper__arrow-container"),this.$_swapTargetAttrs("title","data-original-title"),this.$_detachPopperNode(),this.triggers.length&&this.$_addEventListeners(),this.shown&&this.show())},dispose(){this.isDisposed||(this.isDisposed=!0,this.$_removeEventListeners(),this.hide({skipDelay:!0}),this.$_detachPopperNode(),this.isMounted=!1,this.isShown=!1,this.$_updateParentShownChildren(!1),this.$_swapTargetAttrs("data-original-title","title"))},async onResize(){this.isShown&&(await this.$_computePosition(),this.$emit("resize"))},async $_computePosition(){if(this.isDisposed||this.positioningDisabled)return;const e={strategy:this.strategy,middleware:[]};(this.distance||this.skidding)&&e.middleware.push(nl({mainAxis:this.distance,crossAxis:this.skidding}));const t=this.placement.startsWith("auto");if(t?e.middleware.push(el({alignment:this.placement.split("-")[1]??""})):e.placement=this.placement,this.preventOverflow&&(this.shift&&e.middleware.push(sl({padding:this.overflowPadding,boundary:this.boundary,crossAxis:this.shiftCrossAxis})),!t&&this.flip&&e.middleware.push(tl({padding:this.overflowPadding,boundary:this.boundary}))),e.middleware.push(Qa({element:this.$_arrowNode,padding:this.arrowPadding})),this.arrowOverflow&&e.middleware.push({name:"arrowOverflow",fn:({placement:n,rects:s,middlewareData:i})=>{let r;const{centerOffset:a}=i.arrow;return n.startsWith("top")||n.startsWith("bottom")?r=Math.abs(a)>s.reference.width/2:r=Math.abs(a)>s.reference.height/2,{data:{overflow:r}}}}),this.autoMinSize||this.autoSize){const n=this.autoSize?this.autoSize:this.autoMinSize?"min":null;e.middleware.push({name:"autoSize",fn:({rects:s,placement:i,middlewareData:r})=>{var a;if((a=r.autoSize)!=null&&a.skip)return{};let c,h;return i.startsWith("top")||i.startsWith("bottom")?c=s.reference.width:h=s.reference.height,this.$_innerNode.style[n==="min"?"minWidth":n==="max"?"maxWidth":"width"]=c!=null?`${c}px`:null,this.$_innerNode.style[n==="min"?"minHeight":n==="max"?"maxHeight":"height"]=h!=null?`${h}px`:null,{data:{skip:!0},reset:{rects:!0}}}})}(this.autoMaxSize||this.autoBoundaryMaxSize)&&(this.$_innerNode.style.maxWidth=null,this.$_innerNode.style.maxHeight=null,e.middleware.push(il({boundary:this.boundary,padding:this.overflowPadding,apply:({availableWidth:n,availableHeight:s})=>{this.$_innerNode.style.maxWidth=n!=null?`${n}px`:null,this.$_innerNode.style.maxHeight=s!=null?`${s}px`:null}})));const o=await cl(this.$_referenceNode,this.$_popperNode,e);Object.assign(this.result,{x:o.x,y:o.y,placement:o.placement,strategy:o.strategy,arrow:{...o.middlewareData.arrow,...o.middlewareData.arrowOverflow}})},$_scheduleShow(e,t=!1){if(this.$_updateParentShownChildren(!0),this.$_hideInProgress=!1,clearTimeout(this.$_scheduleTimer),ye&&this.instantMove&&ye.instantMove&&ye!==this.parentPopper){ye.$_applyHide(!0),this.$_applyShow(!0);return}t?this.$_applyShow():this.$_scheduleTimer=setTimeout(this.$_applyShow.bind(this),this.$_computeDelay("show"))},$_scheduleHide(e,t=!1){if(this.shownChildren.size>0){this.pendingHide=!0;return}this.$_updateParentShownChildren(!1),this.$_hideInProgress=!0,clearTimeout(this.$_scheduleTimer),this.isShown&&(ye=this),t?this.$_applyHide():this.$_scheduleTimer=setTimeout(this.$_applyHide.bind(this),this.$_computeDelay("hide"))},$_computeDelay(e){const t=this.delay;return parseInt(t&&t[e]||t||0)},async $_applyShow(e=!1){clearTimeout(this.$_disposeTimer),clearTimeout(this.$_scheduleTimer),this.skipTransition=e,!this.isShown&&(this.$_ensureTeleport(),await at(),await this.$_computePosition(),await this.$_applyShowEffect(),this.positioningDisabled||this.$_registerEventListeners([...qe(this.$_referenceNode),...qe(this.$_popperNode)],"scroll",()=>{this.$_computePosition()}))},async $_applyShowEffect(){if(this.$_hideInProgress)return;if(this.computeTransformOrigin){const t=this.$_referenceNode.getBoundingClientRect(),o=this.$_popperNode.querySelector(".v-popper__wrapper"),n=o.parentNode.getBoundingClientRect(),s=t.x+t.width/2-(n.left+o.offsetLeft),i=t.y+t.height/2-(n.top+o.offsetTop);this.result.transformOrigin=`${s}px ${i}px`}this.isShown=!0,this.$_applyAttrsToTarget({"aria-describedby":this.popperId,"data-popper-shown":""});const e=this.showGroup;if(e){let t;for(let o=0;o0){this.pendingHide=!0,this.$_hideInProgress=!1;return}if(clearTimeout(this.$_scheduleTimer),!this.isShown)return;this.skipTransition=e,qt(X,this),X.length===0&&document.body.classList.remove("v-popper--some-open");for(const o of Wt(this.theme)){const n=Yt(o);qt(n,this),n.length===0&&document.body.classList.remove(`v-popper--some-open--${o}`)}ye===this&&(ye=null),this.isShown=!1,this.$_applyAttrsToTarget({"aria-describedby":void 0,"data-popper-shown":void 0}),clearTimeout(this.$_disposeTimer);const t=this.disposeTimeout;t!==null&&(this.$_disposeTimer=setTimeout(()=>{this.$_popperNode&&(this.$_detachPopperNode(),this.isMounted=!1)},t)),this.$_removeEventListeners("scroll"),this.$emit("apply-hide"),this.classes.showFrom=!1,this.classes.showTo=!1,this.classes.hideFrom=!0,this.classes.hideTo=!1,await at(),this.classes.hideFrom=!1,this.classes.hideTo=!0},$_autoShowHide(){this.shown?this.show():this.hide()},$_ensureTeleport(){if(this.isDisposed)return;let e=this.container;if(typeof e=="string"?e=window.document.querySelector(e):e===!1&&(e=this.$_targetNodes[0].parentNode),!e)throw new Error("No container for popover: "+this.container);e.appendChild(this.$_popperNode),this.isMounted=!0},$_addEventListeners(){const e=o=>{this.isShown&&!this.$_hideInProgress||(o.usedByTooltip=!0,!this.$_preventShow&&this.show({event:o}))};this.$_registerTriggerListeners(this.$_targetNodes,Gt,this.triggers,this.showTriggers,e),this.$_registerTriggerListeners([this.$_popperNode],Gt,this.popperTriggers,this.popperShowTriggers,e);const t=o=>{o.usedByTooltip||this.hide({event:o})};this.$_registerTriggerListeners(this.$_targetNodes,Ut,this.triggers,this.hideTriggers,t),this.$_registerTriggerListeners([this.$_popperNode],Ut,this.popperTriggers,this.popperHideTriggers,t)},$_registerEventListeners(e,t,o){this.$_events.push({targetNodes:e,eventType:t,handler:o}),e.forEach(n=>n.addEventListener(t,o,Le?{passive:!0}:void 0))},$_registerTriggerListeners(e,t,o,n,s){let i=o;n!=null&&(i=typeof n=="function"?n(i):n),i.forEach(r=>{const a=t[r];a&&this.$_registerEventListeners(e,a,s)})},$_removeEventListeners(e){const t=[];this.$_events.forEach(o=>{const{targetNodes:n,eventType:s,handler:i}=o;!e||e===s?n.forEach(r=>r.removeEventListener(s,i)):t.push(o)}),this.$_events=t},$_refreshListeners(){this.isDisposed||(this.$_removeEventListeners(),this.$_addEventListeners())},$_handleGlobalClose(e,t=!1){this.$_showFrameLocked||(this.hide({event:e}),e.closePopover?this.$emit("close-directive"):this.$emit("auto-hide"),t&&(this.$_preventShow=!0,setTimeout(()=>{this.$_preventShow=!1},300)))},$_detachPopperNode(){this.$_popperNode.parentNode&&this.$_popperNode.parentNode.removeChild(this.$_popperNode)},$_swapTargetAttrs(e,t){for(const o of this.$_targetNodes){const n=o.getAttribute(e);n&&(o.removeAttribute(e),o.setAttribute(t,n))}},$_applyAttrsToTarget(e){for(const t of this.$_targetNodes)for(const o in e){const n=e[o];n==null?t.removeAttribute(o):t.setAttribute(o,n)}},$_updateParentShownChildren(e){let t=this.parentPopper;for(;t;)e?t.shownChildren.add(this.randomId):(t.shownChildren.delete(this.randomId),t.pendingHide&&t.hide()),t=t.parentPopper},$_isAimingPopper(){const e=this.$_referenceNode.getBoundingClientRect();if(Ne>=e.left&&Ne<=e.right&&Me>=e.top&&Me<=e.bottom){const t=this.$_popperNode.getBoundingClientRect(),o=Ne-he,n=Me-fe,s=t.left+t.width/2-he+(t.top+t.height/2)-fe+t.width+t.height,i=he+o*s,r=fe+n*s;return ze(he,fe,i,r,t.left,t.top,t.left,t.bottom)||ze(he,fe,i,r,t.left,t.top,t.right,t.top)||ze(he,fe,i,r,t.right,t.top,t.right,t.bottom)||ze(he,fe,i,r,t.left,t.bottom,t.right,t.bottom)}return!1}},render(){return this.$slots.default(this.slotData)}});if(typeof document<"u"&&typeof window<"u"){if(Ao){const e=Le?{passive:!0,capture:!0}:!0;document.addEventListener("touchstart",t=>Xt(t,!0),e),document.addEventListener("touchend",t=>Jt(t,!0),e)}else window.addEventListener("mousedown",e=>Xt(e,!1),!0),window.addEventListener("click",e=>Jt(e,!1),!0);window.addEventListener("resize",Mo)}function Xt(e,t){if(Q.autoHideOnMousedown)No(e,t);else for(let o=0;o=0;n--){const s=X[n];try{const i=s.containsGlobalTarget=s.mouseDownContains||s.popperNode().contains(e.target);s.pendingHide=!1,requestAnimationFrame(()=>{if(s.pendingHide=!1,!o[s.randomId]&&Qt(s,i,e)){if(s.$_handleGlobalClose(e,t),!e.closeAllPopover&&e.closePopover&&i){let a=s.parentPopper;for(;a;)o[a.randomId]=!0,a=a.parentPopper;return}let r=s.parentPopper;for(;r&&Qt(r,r.containsGlobalTarget,e);)r.$_handleGlobalClose(e,t),r=r.parentPopper}})}catch{}}}function Qt(e,t,o){return o.closeAllPopover||o.closePopover&&t||dl(e,o)&&!t}function dl(e,t){if(typeof e.autoHide=="function"){const o=e.autoHide(t);return e.lastAutoHide=o,o}return e.autoHide}function Mo(){for(let e=0;e{he=Ne,fe=Me,Ne=e.clientX,Me=e.clientY},Le?{passive:!0}:void 0);function ze(e,t,o,n,s,i,r,a){const c=((r-s)*(t-i)-(a-i)*(e-s))/((a-i)*(o-e)-(r-s)*(n-t)),h=((o-e)*(t-i)-(n-t)*(e-s))/((a-i)*(o-e)-(r-s)*(n-t));return c>=0&&c<=1&&h>=0&&h<=1}const pl={extends:Co()},st=(e,t)=>{const o=e.__vccOpts||e;for(const[n,s]of t)o[n]=s;return o};function hl(e,t,o,n,s,i){return l(),p("div",{ref:"reference",class:O(["v-popper",{"v-popper--shown":e.slotData.isShown}])},[d(e.$slots,"default",rn(an(e.slotData)))],2)}const fl=st(pl,[["render",hl]]);function ml(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);var o=e.indexOf("Trident/");if(o>0){var n=e.indexOf("rv:");return parseInt(e.substring(n+3,e.indexOf(".",n)),10)}var s=e.indexOf("Edge/");return s>0?parseInt(e.substring(s+5,e.indexOf(".",s)),10):-1}let Re;function _t(){_t.init||(_t.init=!0,Re=ml()!==-1)}var it={name:"ResizeObserver",props:{emitOnMount:{type:Boolean,default:!1},ignoreWidth:{type:Boolean,default:!1},ignoreHeight:{type:Boolean,default:!1}},emits:["notify"],mounted(){_t(),Pt(()=>{this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitOnMount&&this.emitSize()});const e=document.createElement("object");this._resizeObject=e,e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex",-1),e.onload=this.addResizeHandlers,e.type="text/html",Re&&this.$el.appendChild(e),e.data="about:blank",Re||this.$el.appendChild(e)},beforeUnmount(){this.removeResizeHandlers()},methods:{compareAndNotify(){(!this.ignoreWidth&&this._w!==this.$el.offsetWidth||!this.ignoreHeight&&this._h!==this.$el.offsetHeight)&&(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitSize())},emitSize(){this.$emit("notify",{width:this._w,height:this._h})},addResizeHandlers(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers(){this._resizeObject&&this._resizeObject.onload&&(!Re&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),this.$el.removeChild(this._resizeObject),this._resizeObject.onload=null,this._resizeObject=null)}}};const vl=sn();on("data-v-b329ee4c");const gl={class:"resize-observer",tabindex:"-1"};nn();const _l=vl((e,t,o,n,s,i)=>(l(),S("div",gl)));it.render=_l;it.__scopeId="data-v-b329ee4c";it.__file="src/components/ResizeObserver.vue";const xo=(e="theme")=>({computed:{themeClass(){return ul(this[e])}}}),yl=k({name:"VPopperContent",components:{ResizeObserver:it},mixins:[xo()],props:{popperId:String,theme:String,shown:Boolean,mounted:Boolean,skipTransition:Boolean,autoHide:Boolean,handleResize:Boolean,classes:Object,result:Object},emits:["hide","resize"],methods:{toPx(e){return e!=null&&!isNaN(e)?`${e}px`:null}}}),$l=["id","aria-hidden","tabindex","data-popper-placement"],bl={ref:"inner",class:"v-popper__inner"},wl=m("div",{class:"v-popper__arrow-outer"},null,-1),kl=m("div",{class:"v-popper__arrow-inner"},null,-1),Pl=[wl,kl];function Sl(e,t,o,n,s,i){const r=K("ResizeObserver");return l(),p("div",{id:e.popperId,ref:"popover",class:O(["v-popper__popper",[e.themeClass,e.classes.popperClass,{"v-popper__popper--shown":e.shown,"v-popper__popper--hidden":!e.shown,"v-popper__popper--show-from":e.classes.showFrom,"v-popper__popper--show-to":e.classes.showTo,"v-popper__popper--hide-from":e.classes.hideFrom,"v-popper__popper--hide-to":e.classes.hideTo,"v-popper__popper--skip-transition":e.skipTransition,"v-popper__popper--arrow-overflow":e.result&&e.result.arrow.overflow,"v-popper__popper--no-positioning":!e.result}]]),style:Ae(e.result?{position:e.result.strategy,transform:`translate3d(${Math.round(e.result.x)}px,${Math.round(e.result.y)}px,0)`}:void 0),"aria-hidden":e.shown?"false":"true",tabindex:e.autoHide?0:void 0,"data-popper-placement":e.result?e.result.placement:void 0,onKeyup:t[2]||(t[2]=lo(a=>e.autoHide&&e.$emit("hide"),["esc"]))},[m("div",{class:"v-popper__backdrop",onClick:t[0]||(t[0]=a=>e.autoHide&&e.$emit("hide"))}),m("div",{class:"v-popper__wrapper",style:Ae(e.result?{transformOrigin:e.result.transformOrigin}:void 0)},[m("div",bl,[e.mounted?(l(),p(E,{key:0},[m("div",null,[d(e.$slots,"default")]),e.handleResize?(l(),S(r,{key:0,onNotify:t[1]||(t[1]=a=>e.$emit("resize",a))})):w("",!0)],64)):w("",!0)],512),m("div",{ref:"arrow",class:"v-popper__arrow-container",style:Ae(e.result?{left:e.toPx(e.result.arrow.x),top:e.toPx(e.result.arrow.y)}:void 0)},Pl,4)],4)],46,$l)}const Ho=st(yl,[["render",Sl]]),Oo={methods:{show(...e){return this.$refs.popper.show(...e)},hide(...e){return this.$refs.popper.hide(...e)},dispose(...e){return this.$refs.popper.dispose(...e)},onResize(...e){return this.$refs.popper.onResize(...e)}}};let yt=function(){};typeof window<"u"&&(yt=window.Element);const Tl=k({name:"VPopperWrapper",components:{Popper:fl,PopperContent:Ho},mixins:[Oo,xo("finalTheme")],props:{theme:{type:String,default:null},referenceNode:{type:Function,default:null},shown:{type:Boolean,default:!1},showGroup:{type:String,default:null},ariaId:{default:null},disabled:{type:Boolean,default:void 0},positioningDisabled:{type:Boolean,default:void 0},placement:{type:String,default:void 0},delay:{type:[String,Number,Object],default:void 0},distance:{type:[Number,String],default:void 0},skidding:{type:[Number,String],default:void 0},triggers:{type:Array,default:void 0},showTriggers:{type:[Array,Function],default:void 0},hideTriggers:{type:[Array,Function],default:void 0},popperTriggers:{type:Array,default:void 0},popperShowTriggers:{type:[Array,Function],default:void 0},popperHideTriggers:{type:[Array,Function],default:void 0},container:{type:[String,Object,yt,Boolean],default:void 0},boundary:{type:[String,yt],default:void 0},strategy:{type:String,default:void 0},autoHide:{type:[Boolean,Function],default:void 0},handleResize:{type:Boolean,default:void 0},instantMove:{type:Boolean,default:void 0},eagerMount:{type:Boolean,default:void 0},popperClass:{type:[String,Array,Object],default:void 0},computeTransformOrigin:{type:Boolean,default:void 0},autoMinSize:{type:Boolean,default:void 0},autoSize:{type:[Boolean,String],default:void 0},autoMaxSize:{type:Boolean,default:void 0},autoBoundaryMaxSize:{type:Boolean,default:void 0},preventOverflow:{type:Boolean,default:void 0},overflowPadding:{type:[Number,String],default:void 0},arrowPadding:{type:[Number,String],default:void 0},arrowOverflow:{type:Boolean,default:void 0},flip:{type:Boolean,default:void 0},shift:{type:Boolean,default:void 0},shiftCrossAxis:{type:Boolean,default:void 0},noAutoFocus:{type:Boolean,default:void 0},disposeTimeout:{type:Number,default:void 0}},emits:{show:()=>!0,hide:()=>!0,"update:shown":e=>!0,"apply-show":()=>!0,"apply-hide":()=>!0,"close-group":()=>!0,"close-directive":()=>!0,"auto-hide":()=>!0,resize:()=>!0},computed:{finalTheme(){return this.theme??this.$options.vPopperTheme}},methods:{getTargetNodes(){return Array.from(this.$el.children).filter(e=>e!==this.$refs.popperContent.$el)}}});function Ll(e,t,o,n,s,i){const r=K("PopperContent"),a=K("Popper");return l(),S(a,ne({ref:"popper"},e.$props,{theme:e.finalTheme,"target-nodes":e.getTargetNodes,"popper-node":()=>e.$refs.popperContent.$el,class:[e.themeClass],onShow:t[0]||(t[0]=()=>e.$emit("show")),onHide:t[1]||(t[1]=()=>e.$emit("hide")),"onUpdate:shown":t[2]||(t[2]=c=>e.$emit("update:shown",c)),onApplyShow:t[3]||(t[3]=()=>e.$emit("apply-show")),onApplyHide:t[4]||(t[4]=()=>e.$emit("apply-hide")),onCloseGroup:t[5]||(t[5]=()=>e.$emit("close-group")),onCloseDirective:t[6]||(t[6]=()=>e.$emit("close-directive")),onAutoHide:t[7]||(t[7]=()=>e.$emit("auto-hide")),onResize:t[8]||(t[8]=()=>e.$emit("resize"))}),{default:v(({popperId:c,isShown:h,shouldMountContent:g,skipTransition:f,autoHide:_,show:y,hide:$,handleResize:P,onResize:b,classes:L,result:C})=>[d(e.$slots,"default",{shown:h,show:y,hide:$}),T(r,{ref:"popperContent","popper-id":c,theme:e.finalTheme,shown:h,mounted:g,"skip-transition":f,"auto-hide":_,"handle-resize":P,classes:L,result:C,onHide:$,onResize:b},{default:v(()=>[d(e.$slots,"popper",{shown:h,hide:$})]),_:2},1032,["popper-id","theme","shown","mounted","skip-transition","auto-hide","handle-resize","classes","result","onHide","onResize"])]),_:3},16,["theme","target-nodes","popper-node","class"])}const Ht=st(Tl,[["render",Ll]]),Al={...Ht,name:"VDropdown",vPopperTheme:"dropdown"},Vl={...Ht,name:"VMenu",vPopperTheme:"menu"},Cl={...Ht,name:"VTooltip",vPopperTheme:"tooltip"},Nl=k({name:"VTooltipDirective",components:{Popper:Co(),PopperContent:Ho},mixins:[Oo],inheritAttrs:!1,props:{theme:{type:String,default:"tooltip"},html:{type:Boolean,default:e=>Be(e.theme,"html")},content:{type:[String,Number,Function],default:null},loadingContent:{type:String,default:e=>Be(e.theme,"loadingContent")},targetNodes:{type:Function,required:!0}},data(){return{asyncContent:null}},computed:{isContentAsync(){return typeof this.content=="function"},loading(){return this.isContentAsync&&this.asyncContent==null},finalContent(){return this.isContentAsync?this.loading?this.loadingContent:this.asyncContent:this.content}},watch:{content:{handler(){this.fetchContent(!0)},immediate:!0},async finalContent(){await this.$nextTick(),this.$refs.popper.onResize()}},created(){this.$_fetchId=0},methods:{fetchContent(e){if(typeof this.content=="function"&&this.$_isShown&&(e||!this.$_loading&&this.asyncContent==null)){this.asyncContent=null,this.$_loading=!0;const t=++this.$_fetchId,o=this.content(this);o.then?o.then(n=>this.onResult(t,n)):this.onResult(t,o)}},onResult(e,t){e===this.$_fetchId&&(this.$_loading=!1,this.asyncContent=t)},onShow(){this.$_isShown=!0,this.fetchContent()},onHide(){this.$_isShown=!1}}}),Ml=["innerHTML"],xl=["textContent"];function Hl(e,t,o,n,s,i){const r=K("PopperContent"),a=K("Popper");return l(),S(a,ne({ref:"popper"},e.$attrs,{theme:e.theme,"target-nodes":e.targetNodes,"popper-node":()=>e.$refs.popperContent.$el,onApplyShow:e.onShow,onApplyHide:e.onHide}),{default:v(({popperId:c,isShown:h,shouldMountContent:g,skipTransition:f,autoHide:_,hide:y,handleResize:$,onResize:P,classes:b,result:L})=>[T(r,{ref:"popperContent",class:O({"v-popper--tooltip-loading":e.loading}),"popper-id":c,theme:e.theme,shown:h,mounted:g,"skip-transition":f,"auto-hide":_,"handle-resize":$,classes:b,result:L,onHide:y,onResize:P},{default:v(()=>[e.html?(l(),p("div",{key:0,innerHTML:e.finalContent},null,8,Ml)):(l(),p("div",{key:1,textContent:I(e.finalContent)},null,8,xl))]),_:2},1032,["class","popper-id","theme","shown","mounted","skip-transition","auto-hide","handle-resize","classes","result","onHide","onResize"])]),_:1},16,["theme","target-nodes","popper-node","onApplyShow","onApplyHide"])}const Ol=st(Nl,[["render",Hl]]),Bo="v-popper--has-tooltip";function Bl(e,t){let o=e.placement;if(!o&&t)for(const n of Vo)t[n]&&(o=n);return o||(o=Be(e.theme||"tooltip","placement")),o}function Io(e,t,o){let n;const s=typeof t;return s==="string"?n={content:t}:t&&s==="object"?n=t:n={content:!1},n.placement=Bl(n,o),n.targetNodes=()=>[e],n.referenceNode=()=>e,n}let ct,Ie,Il=0;function El(){if(ct)return;Ie=H([]),ct=ln({name:"VTooltipDirectiveApp",setup(){return{directives:Ie}},render(){return this.directives.map(t=>cn(Ol,{...t.options,shown:t.shown||t.options.shown,key:t.id}))},devtools:{hide:!0}});const e=document.createElement("div");document.body.appendChild(e),ct.mount(e)}function Dl(e,t,o){El();const n=H(Io(e,t,o)),s=H(!1),i={id:Il++,options:n,shown:s};return Ie.value.push(i),e.classList&&e.classList.add(Bo),e.$_popper={options:n,item:i,show(){s.value=!0},hide(){s.value=!1}}}function Eo(e){if(e.$_popper){const t=Ie.value.indexOf(e.$_popper.item);t!==-1&&Ie.value.splice(t,1),delete e.$_popper,delete e.$_popperOldShown,delete e.$_popperMountTarget}e.classList&&e.classList.remove(Bo)}function Zt(e,{value:t,modifiers:o}){const n=Io(e,t,o);if(!n.content||Be(n.theme||"tooltip","disabled"))Eo(e);else{let s;e.$_popper?(s=e.$_popper,s.options.value=n):s=Dl(e,t,o),typeof t.shown<"u"&&t.shown!==e.$_popperOldShown&&(e.$_popperOldShown=t.shown,t.shown?s.show():s.hide())}}const zl={beforeMount:Zt,updated:Zt,beforeUnmount(e){Eo(e)}};function eo(e){e.addEventListener("mousedown",Ke),e.addEventListener("click",Ke),e.addEventListener("touchstart",Do,Le?{passive:!0}:!1)}function to(e){e.removeEventListener("mousedown",Ke),e.removeEventListener("click",Ke),e.removeEventListener("touchstart",Do),e.removeEventListener("touchend",zo),e.removeEventListener("touchcancel",Fo)}function Ke(e){const t=e.currentTarget;e.closePopover=!t.$_vclosepopover_touch,e.closeAllPopover=t.$_closePopoverModifiers&&!!t.$_closePopoverModifiers.all}function Do(e){if(e.changedTouches.length===1){const t=e.currentTarget;t.$_vclosepopover_touch=!0;const o=e.changedTouches[0];t.$_vclosepopover_touchPoint=o,t.addEventListener("touchend",zo),t.addEventListener("touchcancel",Fo)}}function zo(e){const t=e.currentTarget;if(t.$_vclosepopover_touch=!1,e.changedTouches.length===1){const o=e.changedTouches[0],n=t.$_vclosepopover_touchPoint;e.closePopover=Math.abs(o.screenY-n.screenY)<20&&Math.abs(o.screenX-n.screenX)<20,e.closeAllPopover=t.$_closePopoverModifiers&&!!t.$_closePopoverModifiers.all}}function Fo(e){const t=e.currentTarget;t.$_vclosepopover_touch=!1}const Fl={beforeMount(e,{value:t,modifiers:o}){e.$_closePopoverModifiers=o,(typeof t>"u"||t)&&eo(e)},updated(e,{value:t,oldValue:o,modifiers:n}){e.$_closePopoverModifiers=n,t!==o&&(typeof t>"u"||t?eo(e):to(e))},beforeUnmount(e){to(e)}};function Rl(e,t={}){e.$_vTooltipInstalled||(e.$_vTooltipInstalled=!0,Lo(Q,t),e.directive("tooltip",zl),e.directive("close-popper",Fl),e.component("VTooltip",Cl),e.component("VDropdown",Al),e.component("VMenu",Vl))}const jl={version:"5.2.2",install:Rl,options:Q},oo=typeof navigator<"u"&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),Wl={install:(e,t={})=>{typeof window<"u"&&window.addEventListener("click",o=>{o.composedPath().some(s=>{var i,r,a,c;return((r=(i=s==null?void 0:s.classList)==null?void 0:i.contains)==null?void 0:r.call(i,"vp-code-group"))||((c=(a=s==null?void 0:s.classList)==null?void 0:a.contains)==null?void 0:c.call(a,"tabs"))})&&Mo()},{passive:!0}),e.use(jl,{...t,themes:{twoslash:{$extend:"dropdown",triggers:oo?["touch"]:["hover","touch"],popperTriggers:oo?["touch"]:["hover","touch"],placement:"bottom-start",overflowPadding:10,delay:0,handleResize:!1,autoHide:!0,instantMove:!0,flip:!1,arrowPadding:8,autoBoundaryMaxSize:!0},"twoslash-query":{$extend:"twoslash",triggers:["click"],popperTriggers:["click"],autoHide:!1},"twoslash-completion":{$extend:"twoslash-query",triggers:["click"],popperTriggers:["click"],autoHide:!1,distance:0,arrowOverflow:!0},...t.theme}})}},Ul={extends:ja,enhanceApp({app:e}){e.use(Wl)}};export{Sr as c,Ul as t,N as u}; diff --git a/assets/index.md.D8JEoe-L.js b/assets/index.md.D8JEoe-L.js new file mode 100644 index 00000000..91e1df5c --- /dev/null +++ b/assets/index.md.D8JEoe-L.js @@ -0,0 +1,155 @@ +import{_ as p,c as h,a9 as t,j as i,G as n,w as e,a,B as r,o as k}from"./chunks/framework.D6W_pQcY.js";const w=JSON.parse('{"title":"eslint-plugin-lodash-template","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1733171881000}'),o={name:"index.md"},d={class:"language-js vp-adaptive-theme"},g={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},c={class:"line"},u={class:"language-json vp-adaptive-theme"},E={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},y={class:"line"},f={class:"language-json vp-adaptive-theme"},m={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},b={class:"line"};function F(v,s,D,q,A,C){const l=r("v-menu");return k(),h("div",null,[s[38]||(s[38]=t(`

eslint-plugin-lodash-template

ESLint plugin for John Resig-style micro templating.

NPM licenseNPM versionNPM downloads

It can be used in projects using Underscore.js and Lodash's template.

This plugin supports code checking for templates like the examples below.

html
<div id="<%= id %>" class="<%= (i % 2 == 1 ? ' even': '') %>">
+  <div class="grid_1 alpha right">
+    <img class="righted" src="<%= profile_image_url %>"/>
+  </div>
+  <div class="grid_6 omega contents">
+    <p><b><a href="/<%= from_user %>"><%= from_user %></a>:</b> <%= text %></p>
+  </div>
+</div>
html
<% for ( var i = 0; i < users.length; i++ ) { %>
+  <li><a href="<%= users[i].url %>"><%= users[i].name %></a></li>
+<% } %>

Playground on the Web

Features

  • Enable ESLint in Underscore.js and Lodash's templates.
  • You can find issues specific to template tags.
  • Improves readability of HTML templates.
  • For JavaScript (TypeScript) templates, enable ESLint both inside and outside the template tag. (This is an experimental feature)
  • Partial supports for EJS.

Installation

bash
npm install --save-dev eslint eslint-plugin-lodash-template

Usage

Create .eslintrc.* file to configure rules. See also: http://eslint.org/docs/user-guide/configuring.

Example eslint.config.js:

js
import lodashTemplate from 'eslint-plugin-lodash-template'
+export default [
+    {
+        files: ['**/*.html'],
+        ...lodashTemplate.configs['flat/recommended-with-html']
+    }
+]

Example .eslintrc.js:

js
module.exports = {
+  extends: [
+    // add more generic rulesets here, such as:
+    // 'eslint:recommended',
+    'plugin:lodash-template/recommended-with-html'
+  ],
+  rules: {
+    // override/add rules settings here, such as:
+    // 'lodash-template/no-warning-html-comments': 'error'
+  }
+}

Attention

This plugin does special handling for the following rule warnings in the template.

Rule IDProcess DescriptionAnother way this plugin supports
indentDisable warningslodash-template/scriptlet-indent rule,
lodash-template/html-indentrule
@stylistic/indentDisable warningslodash-template/scriptlet-indent rule,
lodash-template/html-indent rule
strictDisable warnings--
no-emptyDisable warnings--
max-statements-per-lineDisable warnings--
@stylistic/max-statements-per-lineDisable warnings--
padded-blocksDisable warnings--
@stylistic/padded-blocksDisable warnings--
no-implicit-globalsDisable warnings--
no-multi-spacesDisable warningslodash-template/no-multi-spaces-in-scriptlet rule,
lodash-template/no-multi-spaces-in-html-tag rule
@stylistic/no-multi-spacesDisable warningslodash-template/no-multi-spaces-in-scriptlet rule,
lodash-template/no-multi-spaces-in-html-tag rule
no-unused-expressionsDisable warnings within interpolate(<%=...%>)--
quotesDisable warnings if doublequote is set--
@stylistic/quotesDisable warnings if doublequote is set--
no-irregular-whitespaceDisable warnings outside template tagslodash-template/no-irregular-whitespace rule

Configs

For eslint.config.js

This plugin provides 7 predefined configs:

  • *.configs['flat/base'] - Settings and rules to enable correct ESLint parsing
  • *.configs['flat/base-with-ejs'] - Settings and rules to enable correct ESLint parsing for EJS
  • *.configs['flat/best-practices'] - Above, plus rules to improve dev experience
  • *.configs['flat/recommended'] - Above, plus rules to improve code readability
  • *.configs['flat/recommended-with-html'] - Above, plus rules to improve code readability with HTML template
  • *.configs['flat/recommended-with-script'] - *.configs['flat/recommended'] config, plus to enable ESLint parsing of JavaScript templates (This is an experimental feature)
  • *.configs['flat/all'] - All rules of this plugin are included

For .eslintrc.*

This plugin provides 6 predefined configs:

  • plugin:lodash-template/base - Settings and rules to enable correct ESLint parsing
  • plugin:lodash-template/best-practices - Above, plus rules to improve dev experience
  • plugin:lodash-template/recommended - Above, plus rules to improve code readability
  • plugin:lodash-template/recommended-with-html - Above, plus rules to improve code readability with HTML template
  • plugin:lodash-template/recommended-with-script - plugin:lodash-template/recommended config, plus to enable ESLint parsing of JavaScript templates (This is an experimental feature)
  • plugin:lodash-template/all - All rules of this plugin are included

All Rules

Please see All Rules

Plugin Option

Suppress no-undef warnings in the template tag

Please set the global variable used in all templates as follows.

.eslintrc.*:

diff
  {
+      "settings": {
++         "lodash-template/globals": ["variableName"]
+      }
+  }

Please write the global comment in the file as follows for the variable to be used with a specific template.

diff
+ <% /* global users */ %>
+  <% for ( var i = 0; i < users.length; i++ ) { %>
+    <li><a href="<%= users[i].url %>"><%= users[i].name %></a></li>
+  <% } %>

Suppress reports for specific rules in template files

Please set as follows.

.eslintrc.*:

diff
  {
+      "settings": {
++         "lodash-template/ignoreRules": ["no-undef", "no-tabs"]
+      }
+  }

The ESLint standard suppression method can also be used by using template tag, as follows.

diff
+ <% /* eslint no-ternary: 0 */ %>

Customize parser

For example, if you set Lodash templateSettings as follows,

js
_.templateSettings = {
+    evaluate:    /{{([\\s\\S]+?)}}/g,
+    interpolate: /{{=([\\s\\S]+?)}}/g,
+    escape:      /{{-([\\s\\S]+?)}}/g
+};

please set parserOptions(ex. .eslintrc.*) as follows.

diff
      parserOptions: {
++         templateSettings: {
++             evaluate:    ["{{", "}}"],
++             interpolate: ["{{=", "}}"],
++             escape:      ["{{-", "}}"],
++         },
+      },

For example, to parse like EJS, set as follows,

(If plugin:lodash-template/*** is set in extends, it is automatically applied to the extension .ejs.)

diff
      parserOptions: {
++         templateSettings: {
++             evaluate:    [ ["<%", "<%_"], ["%>", "-%>", "_%>"] ],
++             interpolate: [  "<%-",        ["%>", "-%>", "_%>"] ],
++             escape:      [  "<%=",        ["%>", "-%>", "_%>"] ],
++             comment:     [  "<%#",        ["%>", "-%>", "_%>"] ],
++             literal:     [  "<%%" ],
++         },
+      },

(This plugin do not provide complete support for EJS. e.g. the include directive.)

Customize target extensions

Please set .eslintrc.* as follows.

(For example, for EJS.)

diff
+    "overrides": [
++        {
++            "files": ["*.ejs"],
++            "processor": "lodash-template/html"
++        }
++    ]

For JavaScript (TypeScript) Templates

(This is an experimental feature. Also check for known limitations.)

For example if you have a file like below.

`,57)),i("div",d,[s[11]||(s[11]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[12]||(s[12]=i("span",{class:"lang"},"js",-1)),i("pre",g,[i("code",null,[s[9]||(s[9]=t(`/* eslint no-multi-spaces: error */ +<% /* eslint lodash-template/no-multi-spaces-in-scriptlet: error */ %> + +// if this plugin is not used, a parsing error will occur. +`,8)),i("span",c,[s[4]||(s[4]=i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"const",-1)),s[5]||(s[5]=i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," obj",-1)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:e(({})=>s[0]||(s[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,"Multiple spaces found before '='. (no-multi-spaces)")])],-1)])),default:e(()=>[s[1]||(s[1]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," ")])],-1))]),_:1}),s[6]||(s[6]=t('= <%= JSON.stringify(options',6)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:e(({})=>s[2]||(s[2]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a("Multiple spaces found before "),i("code",null,")"),a(". ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-multi-spaces-in-scriptlet.html"},"lodash-template/no-multi-spaces-in-scriptlet"),a(")")])])],-1)])),default:e(()=>[s[3]||(s[3]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[7]||(s[7]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},") ",-1)),s[8]||(s[8]=i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"%>",-1))]),s[10]||(s[10]=t('\n// ^^^^ ^^^^^ \n// | |\n// | If you don't use `"plugin:lodash-template/recommended-with-script"`,\n// | only the space after `options` is reported.\n// |\n// + When using `"plugin:lodash-template/recommended-with-script"`, the space after `obj` is also reported.',12))])])]),s[39]||(s[39]=t(`

Playground on the Web

Configuring

Please set .eslintrc.* as follows.

diff
+    "overrides": [
++        {
++            "files": ["**/your/templates/*.js"],
++            "extends": ["plugin:lodash-template/recommended-with-script"]
++        }
++    ]

If you do not want to use the included rules, set the details as follows.

diff
    "overrides": [
+        {
+            "files": ["**/your/templates/*.js"],
+-            "extends": ["plugin:lodash-template/recommended-with-script"],
++            "extends": ["plugin:lodash-template/base"],
++            "processor": "lodash-template/script"
+        }
+    ]

If you want to use it with TypeScript, you need to configure parserOptions.

diff
    "overrides": [
+        {
+-            "files": ["**/your/templates/*.js"],
++            "files": ["**/your/templates/*.ts"],
++            "parserOptions": {
++                 "parser": "@typescript-eslint/parser",
++                 "sourceType": "module"
++            },
+            "extends": ["plugin:lodash-template/recommended-with-script"]
+        }
+    ]

FAQ

Known Limitations in Script Templates

Due to known limitations in script templates, you may need to rewrite some templates. Otherwise, you may not be able to use this plugin or some rules.

Parsing Error

Interpolation in the script template will try to replace it with an identifier and parse it. If you generate a complex script in interpolation, you may get a parsing error.

👍 The following script can be parsed well.

js
let <%= idName %> = 42;
+export { <%= idName %> };

👎 The following script cannot be parsed well.

js
<%= 'let ' + idName %> = 42;
+export { <%= idName %> };

False Positives in Some Rules

If you use branching in your template, the plugin will generate multiple script ASTs needed to cover all branches. (Then merge the results of validating these ASTs.)
This can confuse some rules and cause false positives.

However, this is necessary to avoid script parsing errors.

e.g.

Template:

js
const a = 'foo'
+<% if (x) { %>
+  const b = 1;
+<% } else { %>
+  const b = 2;
+<% } %>

Generated Script 1:

js

+const a = 'foo'
+
+  const b = 1;

Generated Script 2:

js

+const a = 'foo'
+
+
+
+  const b = 2;

If we use the following script, it is a parsing error.

js

+const a = 'foo'
+
+  const b = 1;
+
+  const b = 2; // <- Identifier 'b' has already been declared

The plugin also tries to generate scripts using branches that are as consistent as possible.

e.g.

Template:

js
<% if (x.foo) { %>
+  const a = 'x.foo is true'
+<% } %>
+// ...
+<% if (x.foo) { %>
+  console.log(a)
+<% } else { %>
+  // process for x.foo is false
+<% } %>

Generated Script 1:

js

+  const a = 'x.foo is true'
+
+// ...
+
+  console.log(a)

Generated Script 2:

js

+
+
+// ...
+
+
+
+  // process for x.foo is false

However, branching conditions are compared using text, so even logically the same can be confusing.

e.g.

Template:

js
<% if (x['foo']) { %>
+  const a = 'x.foo is true'
+<% } %>
+// ...
+<% if (x.foo) { %>
+  console.log(a)
+<% } else { %>
+  // process for x.foo is false
+<% } %>

Generated Script 1:

js

+  const a = 'x.foo is true'
+
+// ...
+
+  console.log(a)

Generated Script 2:

js

+  const a = 'x.foo is true'
+
+// ...
+
+
+
+  // process for x.foo is false

This template gets an error 'a' is assigned a value but never used. from the no-unused-vars rule.

Editor Settings

About how to mark warnings on editor.

`,48)),i("ul",null,[i("li",null,[s[23]||(s[23]=i("p",null,[a("VSCode ("),i("a",{href:"https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint",target:"_blank",rel:"noreferrer"},"VS Code ESLint extension"),a(")")],-1)),s[24]||(s[24]=i("p",null,[i("strong",null,"settings.json"),a(":")],-1)),i("div",u,[s[21]||(s[21]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[22]||(s[22]=i("span",{class:"lang"},"json",-1)),i("pre",E,[i("code",null,[s[17]||(s[17]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"{")],-1)),s[18]||(s[18]=a(` +`)),i("span",y,[s[15]||(s[15]=i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},' "eslint.validate"',-1)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:e(({})=>s[13]||(s[13]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,"Parsing error: Unexpected token :")])],-1)])),default:e(()=>[s[14]||(s[14]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},":")])],-1))]),_:1}),s[16]||(s[16]=t(' [ "javascript", "javascriptreact", { "language": "html", "autoFix": true } ]',13))]),s[19]||(s[19]=a(` +`)),s[20]||(s[20]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"}")],-1))])])])]),i("li",null,[s[36]||(s[36]=i("p",null,[a("Sublime Text3 ("),i("a",{href:"https://packagecontrol.io/packages/SublimeLinter-eslint",target:"_blank",rel:"noreferrer"},"SublimeLinter-eslint"),a(")")],-1)),s[37]||(s[37]=i("p",null,"[Preference] > [Package Settings] > [SublimeLinter] > [Settings]",-1)),i("div",f,[s[34]||(s[34]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[35]||(s[35]=i("span",{class:"lang"},"json",-1)),i("pre",m,[i("code",null,[s[29]||(s[29]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"// SublimeLinter Settings - User")],-1)),s[30]||(s[30]=a(` +`)),s[31]||(s[31]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"{")],-1)),s[32]||(s[32]=a(` +`)),i("span",b,[s[27]||(s[27]=i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},' "linters"',-1)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:e(({})=>s[25]||(s[25]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,"Parsing error: Unexpected token :")])],-1)])),default:e(()=>[s[26]||(s[26]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},":")])],-1))]),_:1}),s[28]||(s[28]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," {",-1))]),s[33]||(s[33]=t(` + "eslint": { + "selector": "text.html, source.js - meta.attribute-with-value" + } + } +}`,10))])])])])]),s[40]||(s[40]=t('

Migrations

Contributing

Welcome contributing!

Please use GitHub's Issues/PRs.

parserServices

Information provided by parserServices on this plugin

Development Tools

  • npm test runs tests and measures coverage.
  • npm run update runs in order to update readme and recommended configuration.

License

See the LICENSE file for license rights and limitations (MIT).

',11))])}const B=p(o,[["render",F]]);export{w as __pageData,B as default}; diff --git a/assets/index.md.D8JEoe-L.lean.js b/assets/index.md.D8JEoe-L.lean.js new file mode 100644 index 00000000..91e1df5c --- /dev/null +++ b/assets/index.md.D8JEoe-L.lean.js @@ -0,0 +1,155 @@ +import{_ as p,c as h,a9 as t,j as i,G as n,w as e,a,B as r,o as k}from"./chunks/framework.D6W_pQcY.js";const w=JSON.parse('{"title":"eslint-plugin-lodash-template","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1733171881000}'),o={name:"index.md"},d={class:"language-js vp-adaptive-theme"},g={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},c={class:"line"},u={class:"language-json vp-adaptive-theme"},E={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},y={class:"line"},f={class:"language-json vp-adaptive-theme"},m={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},b={class:"line"};function F(v,s,D,q,A,C){const l=r("v-menu");return k(),h("div",null,[s[38]||(s[38]=t(`

eslint-plugin-lodash-template

ESLint plugin for John Resig-style micro templating.

NPM licenseNPM versionNPM downloads

It can be used in projects using Underscore.js and Lodash's template.

This plugin supports code checking for templates like the examples below.

html
<div id="<%= id %>" class="<%= (i % 2 == 1 ? ' even': '') %>">
+  <div class="grid_1 alpha right">
+    <img class="righted" src="<%= profile_image_url %>"/>
+  </div>
+  <div class="grid_6 omega contents">
+    <p><b><a href="/<%= from_user %>"><%= from_user %></a>:</b> <%= text %></p>
+  </div>
+</div>
html
<% for ( var i = 0; i < users.length; i++ ) { %>
+  <li><a href="<%= users[i].url %>"><%= users[i].name %></a></li>
+<% } %>

Playground on the Web

Features

  • Enable ESLint in Underscore.js and Lodash's templates.
  • You can find issues specific to template tags.
  • Improves readability of HTML templates.
  • For JavaScript (TypeScript) templates, enable ESLint both inside and outside the template tag. (This is an experimental feature)
  • Partial supports for EJS.

Installation

bash
npm install --save-dev eslint eslint-plugin-lodash-template

Usage

Create .eslintrc.* file to configure rules. See also: http://eslint.org/docs/user-guide/configuring.

Example eslint.config.js:

js
import lodashTemplate from 'eslint-plugin-lodash-template'
+export default [
+    {
+        files: ['**/*.html'],
+        ...lodashTemplate.configs['flat/recommended-with-html']
+    }
+]

Example .eslintrc.js:

js
module.exports = {
+  extends: [
+    // add more generic rulesets here, such as:
+    // 'eslint:recommended',
+    'plugin:lodash-template/recommended-with-html'
+  ],
+  rules: {
+    // override/add rules settings here, such as:
+    // 'lodash-template/no-warning-html-comments': 'error'
+  }
+}

Attention

This plugin does special handling for the following rule warnings in the template.

Rule IDProcess DescriptionAnother way this plugin supports
indentDisable warningslodash-template/scriptlet-indent rule,
lodash-template/html-indentrule
@stylistic/indentDisable warningslodash-template/scriptlet-indent rule,
lodash-template/html-indent rule
strictDisable warnings--
no-emptyDisable warnings--
max-statements-per-lineDisable warnings--
@stylistic/max-statements-per-lineDisable warnings--
padded-blocksDisable warnings--
@stylistic/padded-blocksDisable warnings--
no-implicit-globalsDisable warnings--
no-multi-spacesDisable warningslodash-template/no-multi-spaces-in-scriptlet rule,
lodash-template/no-multi-spaces-in-html-tag rule
@stylistic/no-multi-spacesDisable warningslodash-template/no-multi-spaces-in-scriptlet rule,
lodash-template/no-multi-spaces-in-html-tag rule
no-unused-expressionsDisable warnings within interpolate(<%=...%>)--
quotesDisable warnings if doublequote is set--
@stylistic/quotesDisable warnings if doublequote is set--
no-irregular-whitespaceDisable warnings outside template tagslodash-template/no-irregular-whitespace rule

Configs

For eslint.config.js

This plugin provides 7 predefined configs:

  • *.configs['flat/base'] - Settings and rules to enable correct ESLint parsing
  • *.configs['flat/base-with-ejs'] - Settings and rules to enable correct ESLint parsing for EJS
  • *.configs['flat/best-practices'] - Above, plus rules to improve dev experience
  • *.configs['flat/recommended'] - Above, plus rules to improve code readability
  • *.configs['flat/recommended-with-html'] - Above, plus rules to improve code readability with HTML template
  • *.configs['flat/recommended-with-script'] - *.configs['flat/recommended'] config, plus to enable ESLint parsing of JavaScript templates (This is an experimental feature)
  • *.configs['flat/all'] - All rules of this plugin are included

For .eslintrc.*

This plugin provides 6 predefined configs:

  • plugin:lodash-template/base - Settings and rules to enable correct ESLint parsing
  • plugin:lodash-template/best-practices - Above, plus rules to improve dev experience
  • plugin:lodash-template/recommended - Above, plus rules to improve code readability
  • plugin:lodash-template/recommended-with-html - Above, plus rules to improve code readability with HTML template
  • plugin:lodash-template/recommended-with-script - plugin:lodash-template/recommended config, plus to enable ESLint parsing of JavaScript templates (This is an experimental feature)
  • plugin:lodash-template/all - All rules of this plugin are included

All Rules

Please see All Rules

Plugin Option

Suppress no-undef warnings in the template tag

Please set the global variable used in all templates as follows.

.eslintrc.*:

diff
  {
+      "settings": {
++         "lodash-template/globals": ["variableName"]
+      }
+  }

Please write the global comment in the file as follows for the variable to be used with a specific template.

diff
+ <% /* global users */ %>
+  <% for ( var i = 0; i < users.length; i++ ) { %>
+    <li><a href="<%= users[i].url %>"><%= users[i].name %></a></li>
+  <% } %>

Suppress reports for specific rules in template files

Please set as follows.

.eslintrc.*:

diff
  {
+      "settings": {
++         "lodash-template/ignoreRules": ["no-undef", "no-tabs"]
+      }
+  }

The ESLint standard suppression method can also be used by using template tag, as follows.

diff
+ <% /* eslint no-ternary: 0 */ %>

Customize parser

For example, if you set Lodash templateSettings as follows,

js
_.templateSettings = {
+    evaluate:    /{{([\\s\\S]+?)}}/g,
+    interpolate: /{{=([\\s\\S]+?)}}/g,
+    escape:      /{{-([\\s\\S]+?)}}/g
+};

please set parserOptions(ex. .eslintrc.*) as follows.

diff
      parserOptions: {
++         templateSettings: {
++             evaluate:    ["{{", "}}"],
++             interpolate: ["{{=", "}}"],
++             escape:      ["{{-", "}}"],
++         },
+      },

For example, to parse like EJS, set as follows,

(If plugin:lodash-template/*** is set in extends, it is automatically applied to the extension .ejs.)

diff
      parserOptions: {
++         templateSettings: {
++             evaluate:    [ ["<%", "<%_"], ["%>", "-%>", "_%>"] ],
++             interpolate: [  "<%-",        ["%>", "-%>", "_%>"] ],
++             escape:      [  "<%=",        ["%>", "-%>", "_%>"] ],
++             comment:     [  "<%#",        ["%>", "-%>", "_%>"] ],
++             literal:     [  "<%%" ],
++         },
+      },

(This plugin do not provide complete support for EJS. e.g. the include directive.)

Customize target extensions

Please set .eslintrc.* as follows.

(For example, for EJS.)

diff
+    "overrides": [
++        {
++            "files": ["*.ejs"],
++            "processor": "lodash-template/html"
++        }
++    ]

For JavaScript (TypeScript) Templates

(This is an experimental feature. Also check for known limitations.)

For example if you have a file like below.

`,57)),i("div",d,[s[11]||(s[11]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[12]||(s[12]=i("span",{class:"lang"},"js",-1)),i("pre",g,[i("code",null,[s[9]||(s[9]=t(`/* eslint no-multi-spaces: error */ +<% /* eslint lodash-template/no-multi-spaces-in-scriptlet: error */ %> + +// if this plugin is not used, a parsing error will occur. +`,8)),i("span",c,[s[4]||(s[4]=i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"const",-1)),s[5]||(s[5]=i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," obj",-1)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:e(({})=>s[0]||(s[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,"Multiple spaces found before '='. (no-multi-spaces)")])],-1)])),default:e(()=>[s[1]||(s[1]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," ")])],-1))]),_:1}),s[6]||(s[6]=t('= <%= JSON.stringify(options',6)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:e(({})=>s[2]||(s[2]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a("Multiple spaces found before "),i("code",null,")"),a(". ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-multi-spaces-in-scriptlet.html"},"lodash-template/no-multi-spaces-in-scriptlet"),a(")")])])],-1)])),default:e(()=>[s[3]||(s[3]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[7]||(s[7]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},") ",-1)),s[8]||(s[8]=i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"%>",-1))]),s[10]||(s[10]=t('\n// ^^^^ ^^^^^ \n// | |\n// | If you don't use `"plugin:lodash-template/recommended-with-script"`,\n// | only the space after `options` is reported.\n// |\n// + When using `"plugin:lodash-template/recommended-with-script"`, the space after `obj` is also reported.',12))])])]),s[39]||(s[39]=t(`

Playground on the Web

Configuring

Please set .eslintrc.* as follows.

diff
+    "overrides": [
++        {
++            "files": ["**/your/templates/*.js"],
++            "extends": ["plugin:lodash-template/recommended-with-script"]
++        }
++    ]

If you do not want to use the included rules, set the details as follows.

diff
    "overrides": [
+        {
+            "files": ["**/your/templates/*.js"],
+-            "extends": ["plugin:lodash-template/recommended-with-script"],
++            "extends": ["plugin:lodash-template/base"],
++            "processor": "lodash-template/script"
+        }
+    ]

If you want to use it with TypeScript, you need to configure parserOptions.

diff
    "overrides": [
+        {
+-            "files": ["**/your/templates/*.js"],
++            "files": ["**/your/templates/*.ts"],
++            "parserOptions": {
++                 "parser": "@typescript-eslint/parser",
++                 "sourceType": "module"
++            },
+            "extends": ["plugin:lodash-template/recommended-with-script"]
+        }
+    ]

FAQ

Known Limitations in Script Templates

Due to known limitations in script templates, you may need to rewrite some templates. Otherwise, you may not be able to use this plugin or some rules.

Parsing Error

Interpolation in the script template will try to replace it with an identifier and parse it. If you generate a complex script in interpolation, you may get a parsing error.

👍 The following script can be parsed well.

js
let <%= idName %> = 42;
+export { <%= idName %> };

👎 The following script cannot be parsed well.

js
<%= 'let ' + idName %> = 42;
+export { <%= idName %> };

False Positives in Some Rules

If you use branching in your template, the plugin will generate multiple script ASTs needed to cover all branches. (Then merge the results of validating these ASTs.)
This can confuse some rules and cause false positives.

However, this is necessary to avoid script parsing errors.

e.g.

Template:

js
const a = 'foo'
+<% if (x) { %>
+  const b = 1;
+<% } else { %>
+  const b = 2;
+<% } %>

Generated Script 1:

js

+const a = 'foo'
+
+  const b = 1;

Generated Script 2:

js

+const a = 'foo'
+
+
+
+  const b = 2;

If we use the following script, it is a parsing error.

js

+const a = 'foo'
+
+  const b = 1;
+
+  const b = 2; // <- Identifier 'b' has already been declared

The plugin also tries to generate scripts using branches that are as consistent as possible.

e.g.

Template:

js
<% if (x.foo) { %>
+  const a = 'x.foo is true'
+<% } %>
+// ...
+<% if (x.foo) { %>
+  console.log(a)
+<% } else { %>
+  // process for x.foo is false
+<% } %>

Generated Script 1:

js

+  const a = 'x.foo is true'
+
+// ...
+
+  console.log(a)

Generated Script 2:

js

+
+
+// ...
+
+
+
+  // process for x.foo is false

However, branching conditions are compared using text, so even logically the same can be confusing.

e.g.

Template:

js
<% if (x['foo']) { %>
+  const a = 'x.foo is true'
+<% } %>
+// ...
+<% if (x.foo) { %>
+  console.log(a)
+<% } else { %>
+  // process for x.foo is false
+<% } %>

Generated Script 1:

js

+  const a = 'x.foo is true'
+
+// ...
+
+  console.log(a)

Generated Script 2:

js

+  const a = 'x.foo is true'
+
+// ...
+
+
+
+  // process for x.foo is false

This template gets an error 'a' is assigned a value but never used. from the no-unused-vars rule.

Editor Settings

About how to mark warnings on editor.

`,48)),i("ul",null,[i("li",null,[s[23]||(s[23]=i("p",null,[a("VSCode ("),i("a",{href:"https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint",target:"_blank",rel:"noreferrer"},"VS Code ESLint extension"),a(")")],-1)),s[24]||(s[24]=i("p",null,[i("strong",null,"settings.json"),a(":")],-1)),i("div",u,[s[21]||(s[21]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[22]||(s[22]=i("span",{class:"lang"},"json",-1)),i("pre",E,[i("code",null,[s[17]||(s[17]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"{")],-1)),s[18]||(s[18]=a(` +`)),i("span",y,[s[15]||(s[15]=i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},' "eslint.validate"',-1)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:e(({})=>s[13]||(s[13]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,"Parsing error: Unexpected token :")])],-1)])),default:e(()=>[s[14]||(s[14]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},":")])],-1))]),_:1}),s[16]||(s[16]=t(' [ "javascript", "javascriptreact", { "language": "html", "autoFix": true } ]',13))]),s[19]||(s[19]=a(` +`)),s[20]||(s[20]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"}")],-1))])])])]),i("li",null,[s[36]||(s[36]=i("p",null,[a("Sublime Text3 ("),i("a",{href:"https://packagecontrol.io/packages/SublimeLinter-eslint",target:"_blank",rel:"noreferrer"},"SublimeLinter-eslint"),a(")")],-1)),s[37]||(s[37]=i("p",null,"[Preference] > [Package Settings] > [SublimeLinter] > [Settings]",-1)),i("div",f,[s[34]||(s[34]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[35]||(s[35]=i("span",{class:"lang"},"json",-1)),i("pre",m,[i("code",null,[s[29]||(s[29]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"// SublimeLinter Settings - User")],-1)),s[30]||(s[30]=a(` +`)),s[31]||(s[31]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"{")],-1)),s[32]||(s[32]=a(` +`)),i("span",b,[s[27]||(s[27]=i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},' "linters"',-1)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:e(({})=>s[25]||(s[25]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,"Parsing error: Unexpected token :")])],-1)])),default:e(()=>[s[26]||(s[26]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},":")])],-1))]),_:1}),s[28]||(s[28]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," {",-1))]),s[33]||(s[33]=t(` + "eslint": { + "selector": "text.html, source.js - meta.attribute-with-value" + } + } +}`,10))])])])])]),s[40]||(s[40]=t('

Migrations

Contributing

Welcome contributing!

Please use GitHub's Issues/PRs.

parserServices

Information provided by parserServices on this plugin

Development Tools

  • npm test runs tests and measures coverage.
  • npm run update runs in order to update readme and recommended configuration.

License

See the LICENSE file for license rights and limitations (MIT).

',11))])}const B=p(o,[["render",F]]);export{w as __pageData,B as default}; diff --git a/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 b/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 new file mode 100644 index 00000000..b6b603d5 Binary files /dev/null and b/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 differ diff --git a/assets/inter-italic-cyrillic.By2_1cv3.woff2 b/assets/inter-italic-cyrillic.By2_1cv3.woff2 new file mode 100644 index 00000000..def40a4f Binary files /dev/null and b/assets/inter-italic-cyrillic.By2_1cv3.woff2 differ diff --git a/assets/inter-italic-greek-ext.1u6EdAuj.woff2 b/assets/inter-italic-greek-ext.1u6EdAuj.woff2 new file mode 100644 index 00000000..e070c3d3 Binary files /dev/null and b/assets/inter-italic-greek-ext.1u6EdAuj.woff2 differ diff --git a/assets/inter-italic-greek.DJ8dCoTZ.woff2 b/assets/inter-italic-greek.DJ8dCoTZ.woff2 new file mode 100644 index 00000000..a3c16ca4 Binary files /dev/null and b/assets/inter-italic-greek.DJ8dCoTZ.woff2 differ diff --git a/assets/inter-italic-latin-ext.CN1xVJS-.woff2 b/assets/inter-italic-latin-ext.CN1xVJS-.woff2 new file mode 100644 index 00000000..2210a899 Binary files /dev/null and b/assets/inter-italic-latin-ext.CN1xVJS-.woff2 differ diff --git a/assets/inter-italic-latin.C2AdPX0b.woff2 b/assets/inter-italic-latin.C2AdPX0b.woff2 new file mode 100644 index 00000000..790d62dc Binary files /dev/null and b/assets/inter-italic-latin.C2AdPX0b.woff2 differ diff --git a/assets/inter-italic-vietnamese.BSbpV94h.woff2 b/assets/inter-italic-vietnamese.BSbpV94h.woff2 new file mode 100644 index 00000000..1eec0775 Binary files /dev/null and b/assets/inter-italic-vietnamese.BSbpV94h.woff2 differ diff --git a/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 b/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 new file mode 100644 index 00000000..2cfe6153 Binary files /dev/null and b/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 differ diff --git a/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 b/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 new file mode 100644 index 00000000..e3886dd1 Binary files /dev/null and b/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 differ diff --git a/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 b/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 new file mode 100644 index 00000000..36d67487 Binary files /dev/null and b/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 differ diff --git a/assets/inter-roman-greek.BBVDIX6e.woff2 b/assets/inter-roman-greek.BBVDIX6e.woff2 new file mode 100644 index 00000000..2bed1e85 Binary files /dev/null and b/assets/inter-roman-greek.BBVDIX6e.woff2 differ diff --git a/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 b/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 new file mode 100644 index 00000000..9a8d1e2b Binary files /dev/null and b/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 differ diff --git a/assets/inter-roman-latin.Di8DUHzh.woff2 b/assets/inter-roman-latin.Di8DUHzh.woff2 new file mode 100644 index 00000000..07d3c53a Binary files /dev/null and b/assets/inter-roman-latin.Di8DUHzh.woff2 differ diff --git a/assets/inter-roman-vietnamese.BjW4sHH5.woff2 b/assets/inter-roman-vietnamese.BjW4sHH5.woff2 new file mode 100644 index 00000000..57bdc22a Binary files /dev/null and b/assets/inter-roman-vietnamese.BjW4sHH5.woff2 differ diff --git a/assets/migration_0.13to0.14.md.B9QGaIEH.js b/assets/migration_0.13to0.14.md.B9QGaIEH.js new file mode 100644 index 00000000..5d99cad7 --- /dev/null +++ b/assets/migration_0.13to0.14.md.B9QGaIEH.js @@ -0,0 +1,31 @@ +import{_ as a,c as e,a9 as i,o as t}from"./chunks/framework.D6W_pQcY.js";const k=JSON.parse('{"title":"0.13.x to 0.14.x","description":"","frontmatter":{},"headers":[],"relativePath":"migration/0.13to0.14.md","filePath":"migration/0.13to0.14.md","lastUpdated":1733171881000}'),n={name:"migration/0.13to0.14.md"};function l(o,s,p,r,h,d){return t(),e("div",null,s[0]||(s[0]=[i(`

0.13.x to 0.14.x

Breaking Changes

  • Moved some rule categories.
  • Rename some rules.
  • The configuration method for customizing the target extension has changed.
  • The configuration method for suppressing the reporting of specific rules in the template file has changed.
  • Drop supports for ESLint@5

Moved some rule categories.

In 0.13.x

  • Rule lodash-template/no-warning-html-comments was category best-practices.
  • Rule lodash-template/no-html-comments was category best-practices.

For 0.14.x

  • Rule lodash-template/no-warning-html-comments has moved to category recommended-with-html.
  • Rule lodash-template/no-html-comments has moved to category recommended-with-html.

Rename some rules.

  • lodash-template/no-multi-spaces-in-script to lodash-template/no-multi-spaces-in-scriptlet
  • lodash-template/script-indent to lodash-template/scriptlet-indent

Customize target extentions

In 0.13.x

In 0.13.x, it was set in .eslintrc.js as follows:

(For example, for EJS.)

diff
  "use strict"
+
++ const pluginLodashTemplate = require("eslint-plugin-lodash-template")
++ pluginLodashTemplate.addTargetExtensions(".ejs")
+
+  module.exports = {

For 0.14.x

For 0.14.x, please set .eslintrc.* as follows:

(For example, for EJS.)

diff
+    "overrides": [
++        {
++            "files": ["*.ejs"],
++            "processor": "lodash-template/html"
++        }
++    ]

Suppress no-undef warnings in the template tag

In 0.13.x

In 0.13.x, it was set the global variable used in all templates as follows.

.eslintrc.json:

diff
  {
+      "rules": {
++         "lodash-template/plugin-option": [2, {
++             "globals": ["variableName"],
++         }]
+      }
+  }

For 0.14.x

For 0.14.x, please set the global variable used in all templates as follows.

.eslintrc.json:

diff
  {
+      "settings": {
++         "lodash-template/globals": ["variableName"]
+      }
+  }

Suppress reports for specific rules in template files

In 0.13.x

In 0.13.x, it was set as follows.

.eslintrc.json:

diff
  {
+      "rules": {
++         "lodash-template/plugin-option": [2, {
++             "ignoreRules": ["no-undef", "no-tabs"],
++         }]
+      }
+  }

For 0.14.x

For 0.14.x, please set as follows.

.eslintrc.json:

diff
  {
+      "settings": {
++         "lodash-template/ignoreRules": ["no-undef", "no-tabs"]
+      }
+  }
`,37)]))}const u=a(n,[["render",l]]);export{k as __pageData,u as default}; diff --git a/assets/migration_0.13to0.14.md.B9QGaIEH.lean.js b/assets/migration_0.13to0.14.md.B9QGaIEH.lean.js new file mode 100644 index 00000000..5d99cad7 --- /dev/null +++ b/assets/migration_0.13to0.14.md.B9QGaIEH.lean.js @@ -0,0 +1,31 @@ +import{_ as a,c as e,a9 as i,o as t}from"./chunks/framework.D6W_pQcY.js";const k=JSON.parse('{"title":"0.13.x to 0.14.x","description":"","frontmatter":{},"headers":[],"relativePath":"migration/0.13to0.14.md","filePath":"migration/0.13to0.14.md","lastUpdated":1733171881000}'),n={name:"migration/0.13to0.14.md"};function l(o,s,p,r,h,d){return t(),e("div",null,s[0]||(s[0]=[i(`

0.13.x to 0.14.x

Breaking Changes

  • Moved some rule categories.
  • Rename some rules.
  • The configuration method for customizing the target extension has changed.
  • The configuration method for suppressing the reporting of specific rules in the template file has changed.
  • Drop supports for ESLint@5

Moved some rule categories.

In 0.13.x

  • Rule lodash-template/no-warning-html-comments was category best-practices.
  • Rule lodash-template/no-html-comments was category best-practices.

For 0.14.x

  • Rule lodash-template/no-warning-html-comments has moved to category recommended-with-html.
  • Rule lodash-template/no-html-comments has moved to category recommended-with-html.

Rename some rules.

  • lodash-template/no-multi-spaces-in-script to lodash-template/no-multi-spaces-in-scriptlet
  • lodash-template/script-indent to lodash-template/scriptlet-indent

Customize target extentions

In 0.13.x

In 0.13.x, it was set in .eslintrc.js as follows:

(For example, for EJS.)

diff
  "use strict"
+
++ const pluginLodashTemplate = require("eslint-plugin-lodash-template")
++ pluginLodashTemplate.addTargetExtensions(".ejs")
+
+  module.exports = {

For 0.14.x

For 0.14.x, please set .eslintrc.* as follows:

(For example, for EJS.)

diff
+    "overrides": [
++        {
++            "files": ["*.ejs"],
++            "processor": "lodash-template/html"
++        }
++    ]

Suppress no-undef warnings in the template tag

In 0.13.x

In 0.13.x, it was set the global variable used in all templates as follows.

.eslintrc.json:

diff
  {
+      "rules": {
++         "lodash-template/plugin-option": [2, {
++             "globals": ["variableName"],
++         }]
+      }
+  }

For 0.14.x

For 0.14.x, please set the global variable used in all templates as follows.

.eslintrc.json:

diff
  {
+      "settings": {
++         "lodash-template/globals": ["variableName"]
+      }
+  }

Suppress reports for specific rules in template files

In 0.13.x

In 0.13.x, it was set as follows.

.eslintrc.json:

diff
  {
+      "rules": {
++         "lodash-template/plugin-option": [2, {
++             "ignoreRules": ["no-undef", "no-tabs"],
++         }]
+      }
+  }

For 0.14.x

For 0.14.x, please set as follows.

.eslintrc.json:

diff
  {
+      "settings": {
++         "lodash-template/ignoreRules": ["no-undef", "no-tabs"]
+      }
+  }
`,37)]))}const u=a(n,[["render",l]]);export{k as __pageData,u as default}; diff --git a/assets/rules_attribute-name-casing.md.C-BHfieH.js b/assets/rules_attribute-name-casing.md.C-BHfieH.js new file mode 100644 index 00000000..8a96bfdd --- /dev/null +++ b/assets/rules_attribute-name-casing.md.C-BHfieH.js @@ -0,0 +1,16 @@ +import{_ as o,c as r,a9 as e,j as s,G as n,w as a,a as t,B as h,o as p}from"./chunks/framework.D6W_pQcY.js";const F=JSON.parse('{"title":"lodash-template/attribute-name-casing","description":"enforce HTML attribute name casing. (ex. :ok: `
` :ng: `
` `
`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/attribute-name-casing","description":"enforce HTML attribute name casing. (ex. :ok: `
` :ng: `
` `
`)"},"headers":[],"relativePath":"rules/attribute-name-casing.md","filePath":"rules/attribute-name-casing.md","lastUpdated":1733171881000}'),k={name:"rules/attribute-name-casing.md"},d={class:"language-html vp-adaptive-theme"},u={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},m={class:"line"};function E(b,i,c,y,f,q){const l=h("v-menu");return p(),r("div",null,[i[20]||(i[20]=e('

lodash-template/attribute-name-casing

enforce HTML attribute name casing. (ex. 🆗 <div foo-bar> 🆖 <div fooBar> <div FOO-BAR>)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces attribute name casing style (kebab-case).

',5)),s("div",d,[i[18]||(i[18]=s("button",{title:"Copy Code",class:"copy"},null,-1)),i[19]||(i[19]=s("span",{class:"lang"},"html",-1)),s("pre",u,[s("code",null,[i[16]||(i[16]=e(`<% /* eslint "lodash-template/attribute-name-casing": "error" */ %> +<!-- ✓ GOOD --> +<div foo-bar="abc"> + +<!-- ✗ BAD --> +`,10)),s("span",g,[i[2]||(i[2]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[3]||(i[3]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),i[4]||(i[4]=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ",-1)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>i[0]||(i[0]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Attribute "),s("code",null,"fooBar"),t(" must be 'kebab-case'. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/attribute-name-casing.html"},"lodash-template/attribute-name-casing"),t(")")])])],-1)])),default:a(()=>[i[1]||(i[1]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"fooBar")])],-1))]),_:1}),i[5]||(i[5]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),i[6]||(i[6]=s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"abc"',-1)),i[7]||(i[7]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))]),i[17]||(i[17]=t(` +`)),s("span",m,[i[10]||(i[10]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[11]||(i[11]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),i[12]||(i[12]=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ",-1)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>i[8]||(i[8]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Attribute "),s("code",null,"FOO-BAR"),t(" must be 'kebab-case'. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/attribute-name-casing.html"},"lodash-template/attribute-name-casing"),t(")")])])],-1)])),default:a(()=>[i[9]||(i[9]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"FOO-BAR")])],-1))]),_:1}),i[13]||(i[13]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),i[14]||(i[14]=s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"abc"',-1)),i[15]||(i[15]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))])])])]),i[21]||(i[21]=e(`

Options

json
{
+  "lodash-template/attribute-name-casing": ["error", {
+    "ignore": [],
+    "ignoreSvgCamelCaseAttributes": true,
+  }]
+}

Examples for this rule with "ignore": ["onClick"] option:

html
<% /* eslint "lodash-template/attribute-name-casing": ["error", {"ignore": ["onClick"]}] */ %>
+<!-- ✓ GOOD -->
+<div onClick="abc">

Examples for this rule with "ignoreSvgCamelCaseAttributes": true, (default)

html
<% /* eslint "lodash-template/attribute-name-casing": ["error", {"ignoreSvgCamelCaseAttributes": true}] */ %>
+<!-- ✓ GOOD -->
+<svg viewBox="0 0 100 100"></svg>

Further Reading

Implementation

`,10))])}const C=o(k,[["render",E]]);export{F as __pageData,C as default}; diff --git a/assets/rules_attribute-name-casing.md.C-BHfieH.lean.js b/assets/rules_attribute-name-casing.md.C-BHfieH.lean.js new file mode 100644 index 00000000..8a96bfdd --- /dev/null +++ b/assets/rules_attribute-name-casing.md.C-BHfieH.lean.js @@ -0,0 +1,16 @@ +import{_ as o,c as r,a9 as e,j as s,G as n,w as a,a as t,B as h,o as p}from"./chunks/framework.D6W_pQcY.js";const F=JSON.parse('{"title":"lodash-template/attribute-name-casing","description":"enforce HTML attribute name casing. (ex. :ok: `
` :ng: `
` `
`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/attribute-name-casing","description":"enforce HTML attribute name casing. (ex. :ok: `
` :ng: `
` `
`)"},"headers":[],"relativePath":"rules/attribute-name-casing.md","filePath":"rules/attribute-name-casing.md","lastUpdated":1733171881000}'),k={name:"rules/attribute-name-casing.md"},d={class:"language-html vp-adaptive-theme"},u={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},m={class:"line"};function E(b,i,c,y,f,q){const l=h("v-menu");return p(),r("div",null,[i[20]||(i[20]=e('

lodash-template/attribute-name-casing

enforce HTML attribute name casing. (ex. 🆗 <div foo-bar> 🆖 <div fooBar> <div FOO-BAR>)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces attribute name casing style (kebab-case).

',5)),s("div",d,[i[18]||(i[18]=s("button",{title:"Copy Code",class:"copy"},null,-1)),i[19]||(i[19]=s("span",{class:"lang"},"html",-1)),s("pre",u,[s("code",null,[i[16]||(i[16]=e(`<% /* eslint "lodash-template/attribute-name-casing": "error" */ %> +<!-- ✓ GOOD --> +<div foo-bar="abc"> + +<!-- ✗ BAD --> +`,10)),s("span",g,[i[2]||(i[2]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[3]||(i[3]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),i[4]||(i[4]=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ",-1)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>i[0]||(i[0]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Attribute "),s("code",null,"fooBar"),t(" must be 'kebab-case'. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/attribute-name-casing.html"},"lodash-template/attribute-name-casing"),t(")")])])],-1)])),default:a(()=>[i[1]||(i[1]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"fooBar")])],-1))]),_:1}),i[5]||(i[5]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),i[6]||(i[6]=s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"abc"',-1)),i[7]||(i[7]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))]),i[17]||(i[17]=t(` +`)),s("span",m,[i[10]||(i[10]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[11]||(i[11]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),i[12]||(i[12]=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ",-1)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>i[8]||(i[8]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Attribute "),s("code",null,"FOO-BAR"),t(" must be 'kebab-case'. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/attribute-name-casing.html"},"lodash-template/attribute-name-casing"),t(")")])])],-1)])),default:a(()=>[i[9]||(i[9]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"FOO-BAR")])],-1))]),_:1}),i[13]||(i[13]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),i[14]||(i[14]=s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"abc"',-1)),i[15]||(i[15]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))])])])]),i[21]||(i[21]=e(`

Options

json
{
+  "lodash-template/attribute-name-casing": ["error", {
+    "ignore": [],
+    "ignoreSvgCamelCaseAttributes": true,
+  }]
+}

Examples for this rule with "ignore": ["onClick"] option:

html
<% /* eslint "lodash-template/attribute-name-casing": ["error", {"ignore": ["onClick"]}] */ %>
+<!-- ✓ GOOD -->
+<div onClick="abc">

Examples for this rule with "ignoreSvgCamelCaseAttributes": true, (default)

html
<% /* eslint "lodash-template/attribute-name-casing": ["error", {"ignoreSvgCamelCaseAttributes": true}] */ %>
+<!-- ✓ GOOD -->
+<svg viewBox="0 0 100 100"></svg>

Further Reading

Implementation

`,10))])}const C=o(k,[["render",E]]);export{F as __pageData,C as default}; diff --git a/assets/rules_attribute-value-quote.md.U2s_C0SQ.js b/assets/rules_attribute-value-quote.md.U2s_C0SQ.js new file mode 100644 index 00000000..768dfdb1 --- /dev/null +++ b/assets/rules_attribute-value-quote.md.U2s_C0SQ.js @@ -0,0 +1,19 @@ +import{_ as n,c as p,a9 as e,j as i,G as o,w as l,a as t,B as h,o as r}from"./chunks/framework.D6W_pQcY.js";const T=JSON.parse('{"title":"lodash-template/attribute-value-quote","description":"enforce quotes style of HTML attributes. (ex. :ok: `
` :ng: `
` `
`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/attribute-value-quote","description":"enforce quotes style of HTML attributes. (ex. :ok: `
` :ng: `
` `
`)"},"headers":[],"relativePath":"rules/attribute-value-quote.md","filePath":"rules/attribute-value-quote.md","lastUpdated":1733171881000}'),k={name:"rules/attribute-value-quote.md"},u={class:"language-html vp-adaptive-theme"},d={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},E={class:"line"},y={class:"language-html vp-adaptive-theme"},b={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},m={class:"line"},q={class:"line"},f={class:"language-html vp-adaptive-theme"},v={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},F={class:"line"};function w(B,s,D,c,C,x){const a=h("v-menu");return r(),p("div",null,[s[46]||(s[46]=e('

lodash-template/attribute-value-quote

enforce quotes style of HTML attributes. (ex. 🆗 <div class="abc"> 🆖 <div class='abc'> <div class=abc>)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces the quotes style of HTML attributes.

',5)),i("div",u,[s[16]||(s[16]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[17]||(s[17]=i("span",{class:"lang"},"html",-1)),i("pre",d,[i("code",null,[s[14]||(s[14]=e(`<% /* eslint "lodash-template/attribute-value-quote": "error" */ %> +<!-- ✓ GOOD --> +<img src="./logo.png"> + +<!-- ✗ BAD --> +`,10)),i("span",g,[s[2]||(s[2]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[3]||(s[3]=i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"img",-1)),s[4]||(s[4]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1)),s[5]||(s[5]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),o(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>s[0]||(s[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected to be enclosed by double quotes. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/attribute-value-quote.html"},"lodash-template/attribute-value-quote"),t(")")])])],-1)])),default:l(()=>[s[1]||(s[1]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},"'./logo.png'")])],-1))]),_:1}),s[6]||(s[6]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))]),s[15]||(s[15]=t(` +`)),i("span",E,[s[9]||(s[9]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[10]||(s[10]=i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"img",-1)),s[11]||(s[11]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1)),s[12]||(s[12]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),o(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>s[7]||(s[7]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected to be enclosed by double quotes. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/attribute-value-quote.html"},"lodash-template/attribute-value-quote"),t(")")])])],-1)])),default:l(()=>[s[8]||(s[8]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},"./logo.png")])],-1))]),_:1}),s[13]||(s[13]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))])])])]),s[47]||(s[47]=e('

Options

json
{\n  "lodash-template/attribute-value-quote": ["error", "double" | "single" | "either" | "prefer-double"]\n}
  • "double" ... requires double quotes.
  • "single" ... requires single quotes.
  • "either" ... requires double quotes or single quotes.
  • "prefer-double" (default) ... requires double quotes or single quotes. if do not need escape double quotes, requires double quotes.

Examples for this rule with "single" option:

',4)),i("div",y,[s[34]||(s[34]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[35]||(s[35]=i("span",{class:"lang"},"html",-1)),i("pre",b,[i("code",null,[s[32]||(s[32]=e(`<% /* eslint "lodash-template/attribute-value-quote": ["error", "single"] */ %> +<!-- ✓ GOOD --> +<img src='./logo.png'> + +<!-- ✗ BAD --> +`,10)),i("span",m,[s[20]||(s[20]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[21]||(s[21]=i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"img",-1)),s[22]||(s[22]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1)),s[23]||(s[23]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),o(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>s[18]||(s[18]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected to be enclosed by single quotes. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/attribute-value-quote.html"},"lodash-template/attribute-value-quote"),t(")")])])],-1)])),default:l(()=>[s[19]||(s[19]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"./logo.png"')])],-1))]),_:1}),s[24]||(s[24]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))]),s[33]||(s[33]=t(` +`)),i("span",q,[s[27]||(s[27]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[28]||(s[28]=i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"img",-1)),s[29]||(s[29]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1)),s[30]||(s[30]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),o(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>s[25]||(s[25]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected to be enclosed by single quotes. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/attribute-value-quote.html"},"lodash-template/attribute-value-quote"),t(")")])])],-1)])),default:l(()=>[s[26]||(s[26]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},"./logo.png")])],-1))]),_:1}),s[31]||(s[31]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))])])])]),s[48]||(s[48]=i("h3",{id:"examples-for-this-rule-with-either-option",tabindex:"-1"},[t("Examples for this rule with "),i("code",null,'"either"'),t(" option: "),i("a",{class:"header-anchor",href:"#examples-for-this-rule-with-either-option","aria-label":'Permalink to "Examples for this rule with `"either"` option:"'},"​")],-1)),i("div",f,[s[44]||(s[44]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[45]||(s[45]=i("span",{class:"lang"},"html",-1)),i("pre",v,[i("code",null,[s[43]||(s[43]=e(`<% /* eslint "lodash-template/attribute-value-quote": ["error", "either"] */ %> +<!-- ✓ GOOD --> +<img src="./logo.png"> +<img src='./logo.png'> + +<!-- ✗ BAD --> +`,12)),i("span",F,[s[38]||(s[38]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[39]||(s[39]=i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"img",-1)),s[40]||(s[40]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1)),s[41]||(s[41]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),o(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>s[36]||(s[36]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected to be enclosed by quotes. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/attribute-value-quote.html"},"lodash-template/attribute-value-quote"),t(")")])])],-1)])),default:l(()=>[s[37]||(s[37]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},"./logo.png")])],-1))]),_:1}),s[42]||(s[42]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))])])])]),s[49]||(s[49]=e('

Further Reading

Implementation

',4))])}const M=n(k,[["render",w]]);export{T as __pageData,M as default}; diff --git a/assets/rules_attribute-value-quote.md.U2s_C0SQ.lean.js b/assets/rules_attribute-value-quote.md.U2s_C0SQ.lean.js new file mode 100644 index 00000000..768dfdb1 --- /dev/null +++ b/assets/rules_attribute-value-quote.md.U2s_C0SQ.lean.js @@ -0,0 +1,19 @@ +import{_ as n,c as p,a9 as e,j as i,G as o,w as l,a as t,B as h,o as r}from"./chunks/framework.D6W_pQcY.js";const T=JSON.parse('{"title":"lodash-template/attribute-value-quote","description":"enforce quotes style of HTML attributes. (ex. :ok: `
` :ng: `
` `
`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/attribute-value-quote","description":"enforce quotes style of HTML attributes. (ex. :ok: `
` :ng: `
` `
`)"},"headers":[],"relativePath":"rules/attribute-value-quote.md","filePath":"rules/attribute-value-quote.md","lastUpdated":1733171881000}'),k={name:"rules/attribute-value-quote.md"},u={class:"language-html vp-adaptive-theme"},d={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},E={class:"line"},y={class:"language-html vp-adaptive-theme"},b={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},m={class:"line"},q={class:"line"},f={class:"language-html vp-adaptive-theme"},v={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},F={class:"line"};function w(B,s,D,c,C,x){const a=h("v-menu");return r(),p("div",null,[s[46]||(s[46]=e('

lodash-template/attribute-value-quote

enforce quotes style of HTML attributes. (ex. 🆗 <div class="abc"> 🆖 <div class='abc'> <div class=abc>)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces the quotes style of HTML attributes.

',5)),i("div",u,[s[16]||(s[16]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[17]||(s[17]=i("span",{class:"lang"},"html",-1)),i("pre",d,[i("code",null,[s[14]||(s[14]=e(`<% /* eslint "lodash-template/attribute-value-quote": "error" */ %> +<!-- ✓ GOOD --> +<img src="./logo.png"> + +<!-- ✗ BAD --> +`,10)),i("span",g,[s[2]||(s[2]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[3]||(s[3]=i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"img",-1)),s[4]||(s[4]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1)),s[5]||(s[5]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),o(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>s[0]||(s[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected to be enclosed by double quotes. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/attribute-value-quote.html"},"lodash-template/attribute-value-quote"),t(")")])])],-1)])),default:l(()=>[s[1]||(s[1]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},"'./logo.png'")])],-1))]),_:1}),s[6]||(s[6]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))]),s[15]||(s[15]=t(` +`)),i("span",E,[s[9]||(s[9]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[10]||(s[10]=i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"img",-1)),s[11]||(s[11]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1)),s[12]||(s[12]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),o(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>s[7]||(s[7]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected to be enclosed by double quotes. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/attribute-value-quote.html"},"lodash-template/attribute-value-quote"),t(")")])])],-1)])),default:l(()=>[s[8]||(s[8]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},"./logo.png")])],-1))]),_:1}),s[13]||(s[13]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))])])])]),s[47]||(s[47]=e('

Options

json
{\n  "lodash-template/attribute-value-quote": ["error", "double" | "single" | "either" | "prefer-double"]\n}
  • "double" ... requires double quotes.
  • "single" ... requires single quotes.
  • "either" ... requires double quotes or single quotes.
  • "prefer-double" (default) ... requires double quotes or single quotes. if do not need escape double quotes, requires double quotes.

Examples for this rule with "single" option:

',4)),i("div",y,[s[34]||(s[34]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[35]||(s[35]=i("span",{class:"lang"},"html",-1)),i("pre",b,[i("code",null,[s[32]||(s[32]=e(`<% /* eslint "lodash-template/attribute-value-quote": ["error", "single"] */ %> +<!-- ✓ GOOD --> +<img src='./logo.png'> + +<!-- ✗ BAD --> +`,10)),i("span",m,[s[20]||(s[20]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[21]||(s[21]=i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"img",-1)),s[22]||(s[22]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1)),s[23]||(s[23]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),o(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>s[18]||(s[18]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected to be enclosed by single quotes. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/attribute-value-quote.html"},"lodash-template/attribute-value-quote"),t(")")])])],-1)])),default:l(()=>[s[19]||(s[19]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"./logo.png"')])],-1))]),_:1}),s[24]||(s[24]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))]),s[33]||(s[33]=t(` +`)),i("span",q,[s[27]||(s[27]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[28]||(s[28]=i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"img",-1)),s[29]||(s[29]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1)),s[30]||(s[30]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),o(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>s[25]||(s[25]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected to be enclosed by single quotes. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/attribute-value-quote.html"},"lodash-template/attribute-value-quote"),t(")")])])],-1)])),default:l(()=>[s[26]||(s[26]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},"./logo.png")])],-1))]),_:1}),s[31]||(s[31]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))])])])]),s[48]||(s[48]=i("h3",{id:"examples-for-this-rule-with-either-option",tabindex:"-1"},[t("Examples for this rule with "),i("code",null,'"either"'),t(" option: "),i("a",{class:"header-anchor",href:"#examples-for-this-rule-with-either-option","aria-label":'Permalink to "Examples for this rule with `"either"` option:"'},"​")],-1)),i("div",f,[s[44]||(s[44]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[45]||(s[45]=i("span",{class:"lang"},"html",-1)),i("pre",v,[i("code",null,[s[43]||(s[43]=e(`<% /* eslint "lodash-template/attribute-value-quote": ["error", "either"] */ %> +<!-- ✓ GOOD --> +<img src="./logo.png"> +<img src='./logo.png'> + +<!-- ✗ BAD --> +`,12)),i("span",F,[s[38]||(s[38]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[39]||(s[39]=i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"img",-1)),s[40]||(s[40]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1)),s[41]||(s[41]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),o(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>s[36]||(s[36]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected to be enclosed by quotes. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/attribute-value-quote.html"},"lodash-template/attribute-value-quote"),t(")")])])],-1)])),default:l(()=>[s[37]||(s[37]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},"./logo.png")])],-1))]),_:1}),s[42]||(s[42]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))])])])]),s[49]||(s[49]=e('

Further Reading

Implementation

',4))])}const M=n(k,[["render",w]]);export{T as __pageData,M as default}; diff --git a/assets/rules_element-name-casing.md.B-R_2r9R.js b/assets/rules_element-name-casing.md.B-R_2r9R.js new file mode 100644 index 00000000..86bc56a0 --- /dev/null +++ b/assets/rules_element-name-casing.md.B-R_2r9R.js @@ -0,0 +1,8 @@ +import{_ as o,c as r,a9 as a,j as e,G as n,w as l,a as t,B as p,o as h}from"./chunks/framework.D6W_pQcY.js";const D=JSON.parse('{"title":"lodash-template/element-name-casing","description":"enforce HTML element name casing. (ex. :ok: `` :ng: `` `
`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/element-name-casing","description":"enforce HTML element name casing. (ex. :ok: `` :ng: `` `
`)"},"headers":[],"relativePath":"rules/element-name-casing.md","filePath":"rules/element-name-casing.md","lastUpdated":1733171881000}'),m={name:"rules/element-name-casing.md"},d={class:"language-html vp-adaptive-theme"},g={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},u={class:"line"},c={class:"line"};function k(E,s,b,f,x,y){const i=p("v-menu");return h(),r("div",null,[s[10]||(s[10]=a('

lodash-template/element-name-casing

enforce HTML element name casing. (ex. 🆗 <xxx-element> 🆖 <xxxElement> <DIV>)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces element name casing style (kebab-case).

',5)),e("div",d,[s[8]||(s[8]=e("button",{title:"Copy Code",class:"copy"},null,-1)),s[9]||(s[9]=e("span",{class:"lang"},"html",-1)),e("pre",g,[e("code",null,[s[6]||(s[6]=a(`<% /* eslint "lodash-template/element-name-casing": "error" */ %> +<!-- ✓ GOOD --> +<div> +<xxx-element> + +<!-- ✗ BAD --> +`,12)),e("span",u,[n(i,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>s[0]||(s[0]=[e("span",{class:"twoslash-popup-container vp-copy-ignore"},[e("div",{class:"twoslash-popup-error vp-doc"},[e("p",null,[t("Element name "),e("code",null,"
"),t(" must be 'kebab-case'. ("),e("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/element-name-casing.html"},"lodash-template/element-name-casing"),t(")")])])],-1)])),default:l(()=>[s[1]||(s[1]=e("span",null,[e("span",null,[e("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<"),e("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"DIV")])],-1))]),_:1}),s[2]||(s[2]=e("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))]),s[7]||(s[7]=t(` +`)),e("span",c,[n(i,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>s[3]||(s[3]=[e("span",{class:"twoslash-popup-container vp-copy-ignore"},[e("div",{class:"twoslash-popup-error vp-doc"},[e("p",null,[t("Element name "),e("code",null,""),t(" must be 'kebab-case'. ("),e("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/element-name-casing.html"},"lodash-template/element-name-casing"),t(")")])])],-1)])),default:l(()=>[s[4]||(s[4]=e("span",null,[e("span",null,[e("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<"),e("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"xxxElement")])],-1))]),_:1}),s[5]||(s[5]=e("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))])])])]),s[11]||(s[11]=a('

Further Reading

Implementation

',4))])}const q=o(m,[["render",k]]);export{D as __pageData,q as default}; diff --git a/assets/rules_element-name-casing.md.B-R_2r9R.lean.js b/assets/rules_element-name-casing.md.B-R_2r9R.lean.js new file mode 100644 index 00000000..86bc56a0 --- /dev/null +++ b/assets/rules_element-name-casing.md.B-R_2r9R.lean.js @@ -0,0 +1,8 @@ +import{_ as o,c as r,a9 as a,j as e,G as n,w as l,a as t,B as p,o as h}from"./chunks/framework.D6W_pQcY.js";const D=JSON.parse('{"title":"lodash-template/element-name-casing","description":"enforce HTML element name casing. (ex. :ok: `` :ng: `` `
`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/element-name-casing","description":"enforce HTML element name casing. (ex. :ok: `` :ng: `` `
`)"},"headers":[],"relativePath":"rules/element-name-casing.md","filePath":"rules/element-name-casing.md","lastUpdated":1733171881000}'),m={name:"rules/element-name-casing.md"},d={class:"language-html vp-adaptive-theme"},g={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},u={class:"line"},c={class:"line"};function k(E,s,b,f,x,y){const i=p("v-menu");return h(),r("div",null,[s[10]||(s[10]=a('

lodash-template/element-name-casing

enforce HTML element name casing. (ex. 🆗 <xxx-element> 🆖 <xxxElement> <DIV>)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces element name casing style (kebab-case).

',5)),e("div",d,[s[8]||(s[8]=e("button",{title:"Copy Code",class:"copy"},null,-1)),s[9]||(s[9]=e("span",{class:"lang"},"html",-1)),e("pre",g,[e("code",null,[s[6]||(s[6]=a(`<% /* eslint "lodash-template/element-name-casing": "error" */ %> +<!-- ✓ GOOD --> +<div> +<xxx-element> + +<!-- ✗ BAD --> +`,12)),e("span",u,[n(i,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>s[0]||(s[0]=[e("span",{class:"twoslash-popup-container vp-copy-ignore"},[e("div",{class:"twoslash-popup-error vp-doc"},[e("p",null,[t("Element name "),e("code",null,"
"),t(" must be 'kebab-case'. ("),e("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/element-name-casing.html"},"lodash-template/element-name-casing"),t(")")])])],-1)])),default:l(()=>[s[1]||(s[1]=e("span",null,[e("span",null,[e("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<"),e("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"DIV")])],-1))]),_:1}),s[2]||(s[2]=e("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))]),s[7]||(s[7]=t(` +`)),e("span",c,[n(i,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>s[3]||(s[3]=[e("span",{class:"twoslash-popup-container vp-copy-ignore"},[e("div",{class:"twoslash-popup-error vp-doc"},[e("p",null,[t("Element name "),e("code",null,""),t(" must be 'kebab-case'. ("),e("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/element-name-casing.html"},"lodash-template/element-name-casing"),t(")")])])],-1)])),default:l(()=>[s[4]||(s[4]=e("span",null,[e("span",null,[e("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<"),e("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"xxxElement")])],-1))]),_:1}),s[5]||(s[5]=e("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))])])])]),s[11]||(s[11]=a('

Further Reading

Implementation

',4))])}const q=o(m,[["render",k]]);export{D as __pageData,q as default}; diff --git a/assets/rules_html-closing-bracket-newline.md.Cufar9xb.js b/assets/rules_html-closing-bracket-newline.md.Cufar9xb.js new file mode 100644 index 00000000..80bbb120 --- /dev/null +++ b/assets/rules_html-closing-bracket-newline.md.Cufar9xb.js @@ -0,0 +1,48 @@ +import{_ as h,c as p,a9 as l,j as i,G as e,w as t,a,B as k,o}from"./chunks/framework.D6W_pQcY.js";const A=JSON.parse(`{"title":"lodash-template/html-closing-bracket-newline","description":"require or disallow a line break before tag's closing brackets","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/html-closing-bracket-newline","description":"require or disallow a line break before tag's closing brackets"},"headers":[],"relativePath":"rules/html-closing-bracket-newline.md","filePath":"rules/html-closing-bracket-newline.md","lastUpdated":1733171881000}`),r={name:"rules/html-closing-bracket-newline.md"},d={class:"language-html vp-adaptive-theme"},E={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},u={class:"line"},y={class:"line"},c={class:"language-html vp-adaptive-theme"},b={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},m={class:"line"},F={class:"line"};function f(q,s,v,w,C,B){const n=k("v-menu");return o(),p("div",null,[s[34]||(s[34]=l(`

lodash-template/html-closing-bracket-newline

require or disallow a line break before tag's closing brackets

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

People have own preference about the location of closing brackets. This rule enforces a line break (or no line break) before tag's closing brackets.

html
<div
+  id="foo"
+  class="bar"> <!-- On the same line with the last attribute. -->
+</div>
+<div
+  id="foo"
+  class="bar"
+> <!-- On the next line. -->
+</div>
`,6)),i("div",d,[s[17]||(s[17]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[18]||(s[18]=i("span",{class:"lang"},"html",-1)),i("pre",E,[i("code",null,[s[13]||(s[13]=l(`<% /* eslint "lodash-template/html-closing-bracket-newline": "error" */ %> +<!-- ✓ GOOD --> +<div id="foo" class="bar"></div> +<div + id="foo" + class="bar"></div> + +<!-- ✗ BAD --> +`,16)),i("span",g,[s[2]||(s[2]=l('<div id="foo" class="bar"',8)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[0]||(s[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a("Expected no line breaks before closing bracket, but 1 line break found. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-newline.html"},"lodash-template/html-closing-bracket-newline"),a(")")])])],-1)])),default:t(()=>[s[1]||(s[1]=i("span",null,[i("span")],-1))]),_:1})]),s[14]||(s[14]=l(` +></div> +<div + id="foo" +`,7)),i("span",u,[s[5]||(s[5]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," class",-1)),s[6]||(s[6]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),s[7]||(s[7]=i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"bar"',-1)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[3]||(s[3]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a("Expected no line breaks before closing bracket, but 1 line break found. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-newline.html"},"lodash-template/html-closing-bracket-newline"),a(")")])])],-1)])),default:t(()=>[s[4]||(s[4]=i("span",null,[i("span")],-1))]),_:1})]),s[15]||(s[15]=l(` +></div> +<div + id="foo" +`,7)),i("span",y,[s[10]||(s[10]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," class",-1)),s[11]||(s[11]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),s[12]||(s[12]=i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"bar"',-1)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[8]||(s[8]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a("Expected no line breaks before closing bracket, but 1 line break found. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-newline.html"},"lodash-template/html-closing-bracket-newline"),a(")")])])],-1)])),default:t(()=>[s[9]||(s[9]=i("span",null,[i("span")],-1))]),_:1})]),s[16]||(s[16]=l(` + ></div>`,2))])])]),s[35]||(s[35]=l(`

Options

json
{
+  "lodash-template/html-closing-bracket-newline": ["error", {
+    "singleline": "never",
+    "multiline": "never"
+  }]
+}
  • singleline ... the configuration for single-line elements. It's a single-line element if the element does not have attributes or the last attribute is on the same line as the opening bracket.
    • "never" ... disallow line breaks before the closing bracket. This is the default.
    • "always" ... require one line break before the closing bracket.
  • multiline ... the configuration for multiline elements. It's a multiline element if the last attribute is not on the same line of the opening bracket.
    • "never" ... disallow line breaks before the closing bracket. This is the default.
    • "always" ... require one line break before the closing bracket.

Plus, you can use lodash-template/html-indent rule to enforce indent-level of the closing brackets.

Examples for this rule with { "multiline": "always" } option:

`,5)),i("div",c,[s[32]||(s[32]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[33]||(s[33]=i("span",{class:"lang"},"html",-1)),i("pre",b,[i("code",null,[s[30]||(s[30]=l(`<% /* eslint "lodash-template/html-closing-bracket-newline": ["error", { "multiline": "always" }] */ %> +<!-- ✓ GOOD --> +<div id="foo" class="bar"></div> +<div + id="foo" + class="bar" +></div> +<div + id="foo" + class="bar" + ></div> + +<!-- ✗ BAD --> +`,26)),i("span",m,[s[21]||(s[21]=l('<div id="foo" class="bar"',8)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[19]||(s[19]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a("Expected no line breaks before closing bracket, but 1 line break found. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-newline.html"},"lodash-template/html-closing-bracket-newline"),a(")")])])],-1)])),default:t(()=>[s[20]||(s[20]=i("span",null,[i("span")],-1))]),_:1})]),s[31]||(s[31]=l(` +></div> +<div + id="foo" +`,7)),i("span",F,[s[24]||(s[24]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," class",-1)),s[25]||(s[25]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),s[26]||(s[26]=i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"bar"',-1)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[22]||(s[22]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a("Expected 1 line break before closing bracket, but no line breaks found. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-newline.html"},"lodash-template/html-closing-bracket-newline"),a(")")])])],-1)])),default:t(()=>[s[23]||(s[23]=i("span",null,[i("span")],-1))]),_:1}),s[27]||(s[27]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))])])])]),s[36]||(s[36]=i("h2",{id:"implementation",tabindex:"-1"},[a("Implementation "),i("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),s[37]||(s[37]=i("ul",null,[i("li",null,[i("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/html-closing-bracket-newline.js",target:"_blank",rel:"noreferrer"},"Rule source")]),i("li",null,[i("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/html-closing-bracket-newline.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const x=h(r,[["render",f]]);export{A as __pageData,x as default}; diff --git a/assets/rules_html-closing-bracket-newline.md.Cufar9xb.lean.js b/assets/rules_html-closing-bracket-newline.md.Cufar9xb.lean.js new file mode 100644 index 00000000..80bbb120 --- /dev/null +++ b/assets/rules_html-closing-bracket-newline.md.Cufar9xb.lean.js @@ -0,0 +1,48 @@ +import{_ as h,c as p,a9 as l,j as i,G as e,w as t,a,B as k,o}from"./chunks/framework.D6W_pQcY.js";const A=JSON.parse(`{"title":"lodash-template/html-closing-bracket-newline","description":"require or disallow a line break before tag's closing brackets","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/html-closing-bracket-newline","description":"require or disallow a line break before tag's closing brackets"},"headers":[],"relativePath":"rules/html-closing-bracket-newline.md","filePath":"rules/html-closing-bracket-newline.md","lastUpdated":1733171881000}`),r={name:"rules/html-closing-bracket-newline.md"},d={class:"language-html vp-adaptive-theme"},E={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},u={class:"line"},y={class:"line"},c={class:"language-html vp-adaptive-theme"},b={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},m={class:"line"},F={class:"line"};function f(q,s,v,w,C,B){const n=k("v-menu");return o(),p("div",null,[s[34]||(s[34]=l(`

lodash-template/html-closing-bracket-newline

require or disallow a line break before tag's closing brackets

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

People have own preference about the location of closing brackets. This rule enforces a line break (or no line break) before tag's closing brackets.

html
<div
+  id="foo"
+  class="bar"> <!-- On the same line with the last attribute. -->
+</div>
+<div
+  id="foo"
+  class="bar"
+> <!-- On the next line. -->
+</div>
`,6)),i("div",d,[s[17]||(s[17]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[18]||(s[18]=i("span",{class:"lang"},"html",-1)),i("pre",E,[i("code",null,[s[13]||(s[13]=l(`<% /* eslint "lodash-template/html-closing-bracket-newline": "error" */ %> +<!-- ✓ GOOD --> +<div id="foo" class="bar"></div> +<div + id="foo" + class="bar"></div> + +<!-- ✗ BAD --> +`,16)),i("span",g,[s[2]||(s[2]=l('<div id="foo" class="bar"',8)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[0]||(s[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a("Expected no line breaks before closing bracket, but 1 line break found. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-newline.html"},"lodash-template/html-closing-bracket-newline"),a(")")])])],-1)])),default:t(()=>[s[1]||(s[1]=i("span",null,[i("span")],-1))]),_:1})]),s[14]||(s[14]=l(` +></div> +<div + id="foo" +`,7)),i("span",u,[s[5]||(s[5]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," class",-1)),s[6]||(s[6]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),s[7]||(s[7]=i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"bar"',-1)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[3]||(s[3]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a("Expected no line breaks before closing bracket, but 1 line break found. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-newline.html"},"lodash-template/html-closing-bracket-newline"),a(")")])])],-1)])),default:t(()=>[s[4]||(s[4]=i("span",null,[i("span")],-1))]),_:1})]),s[15]||(s[15]=l(` +></div> +<div + id="foo" +`,7)),i("span",y,[s[10]||(s[10]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," class",-1)),s[11]||(s[11]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),s[12]||(s[12]=i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"bar"',-1)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[8]||(s[8]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a("Expected no line breaks before closing bracket, but 1 line break found. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-newline.html"},"lodash-template/html-closing-bracket-newline"),a(")")])])],-1)])),default:t(()=>[s[9]||(s[9]=i("span",null,[i("span")],-1))]),_:1})]),s[16]||(s[16]=l(` + ></div>`,2))])])]),s[35]||(s[35]=l(`

Options

json
{
+  "lodash-template/html-closing-bracket-newline": ["error", {
+    "singleline": "never",
+    "multiline": "never"
+  }]
+}
  • singleline ... the configuration for single-line elements. It's a single-line element if the element does not have attributes or the last attribute is on the same line as the opening bracket.
    • "never" ... disallow line breaks before the closing bracket. This is the default.
    • "always" ... require one line break before the closing bracket.
  • multiline ... the configuration for multiline elements. It's a multiline element if the last attribute is not on the same line of the opening bracket.
    • "never" ... disallow line breaks before the closing bracket. This is the default.
    • "always" ... require one line break before the closing bracket.

Plus, you can use lodash-template/html-indent rule to enforce indent-level of the closing brackets.

Examples for this rule with { "multiline": "always" } option:

`,5)),i("div",c,[s[32]||(s[32]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[33]||(s[33]=i("span",{class:"lang"},"html",-1)),i("pre",b,[i("code",null,[s[30]||(s[30]=l(`<% /* eslint "lodash-template/html-closing-bracket-newline": ["error", { "multiline": "always" }] */ %> +<!-- ✓ GOOD --> +<div id="foo" class="bar"></div> +<div + id="foo" + class="bar" +></div> +<div + id="foo" + class="bar" + ></div> + +<!-- ✗ BAD --> +`,26)),i("span",m,[s[21]||(s[21]=l('<div id="foo" class="bar"',8)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[19]||(s[19]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a("Expected no line breaks before closing bracket, but 1 line break found. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-newline.html"},"lodash-template/html-closing-bracket-newline"),a(")")])])],-1)])),default:t(()=>[s[20]||(s[20]=i("span",null,[i("span")],-1))]),_:1})]),s[31]||(s[31]=l(` +></div> +<div + id="foo" +`,7)),i("span",F,[s[24]||(s[24]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," class",-1)),s[25]||(s[25]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),s[26]||(s[26]=i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"bar"',-1)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[22]||(s[22]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a("Expected 1 line break before closing bracket, but no line breaks found. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-newline.html"},"lodash-template/html-closing-bracket-newline"),a(")")])])],-1)])),default:t(()=>[s[23]||(s[23]=i("span",null,[i("span")],-1))]),_:1}),s[27]||(s[27]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))])])])]),s[36]||(s[36]=i("h2",{id:"implementation",tabindex:"-1"},[a("Implementation "),i("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),s[37]||(s[37]=i("ul",null,[i("li",null,[i("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/html-closing-bracket-newline.js",target:"_blank",rel:"noreferrer"},"Rule source")]),i("li",null,[i("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/html-closing-bracket-newline.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const x=h(r,[["render",f]]);export{A as __pageData,x as default}; diff --git a/assets/rules_html-closing-bracket-spacing.md.B_hyhmtY.js b/assets/rules_html-closing-bracket-spacing.md.B_hyhmtY.js new file mode 100644 index 00000000..a11dcd7f --- /dev/null +++ b/assets/rules_html-closing-bracket-spacing.md.B_hyhmtY.js @@ -0,0 +1,39 @@ +import{_ as p,c as h,a9 as e,j as s,G as n,w as a,a as t,B as o,o as k}from"./chunks/framework.D6W_pQcY.js";const A=JSON.parse('{"title":"lodash-template/html-closing-bracket-spacing","description":"require or disallow a space before tag\'s closing brackets. (ex. :ok: `` `` :ng: `` ``)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/html-closing-bracket-spacing","description":"require or disallow a space before tag\'s closing brackets. (ex. :ok: `` `` :ng: `` ``)"},"headers":[],"relativePath":"rules/html-closing-bracket-spacing.md","filePath":"rules/html-closing-bracket-spacing.md","lastUpdated":1733171881000}'),r={name:"rules/html-closing-bracket-spacing.md"},d={class:"language-html vp-adaptive-theme"},g={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},E={class:"line"},u={class:"line"},c={class:"line"},y={class:"line"},m={class:"line"},b={class:"line"},f={class:"line"};function q(F,i,v,w,C,B){const l=o("v-menu");return k(),h("div",null,[i[37]||(i[37]=e(`

lodash-template/html-closing-bracket-spacing

require or disallow a space before tag's closing brackets. (ex. 🆗 <input> <input·/> 🆖 <input·> <input/>)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces consistent spacing style before closing brackets > of tags.

html
<div class="foo"> or <div class="foo" >
+<input class="foo"/> or <input class="foo" />
`,6)),s("div",d,[i[35]||(i[35]=s("button",{title:"Copy Code",class:"copy"},null,-1)),i[36]||(i[36]=s("span",{class:"lang"},"html",-1)),s("pre",g,[s("code",null,[i[28]||(i[28]=e(`<% /* eslint "lodash-template/html-closing-bracket-spacing": "error" */ %> +<!-- ✓ GOOD --> +<input> +<input foo> +<div foo="bar"> +</div> +<br /> +<input foo /> +<input foo="bar" /> + +<!-- ✗ BAD --> +`,22)),s("span",E,[i[2]||(i[2]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[3]||(i[3]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"input",-1)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>i[0]||(i[0]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected no space before "),s("code",null,">"),t(", but found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-spacing.html"},"lodash-template/html-closing-bracket-spacing"),t(")")])])],-1)])),default:a(()=>[i[1]||(i[1]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," >")])],-1))]),_:1})]),i[29]||(i[29]=t(` +`)),s("span",u,[i[6]||(i[6]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[7]||(i[7]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"input",-1)),i[8]||(i[8]=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," foo",-1)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>i[4]||(i[4]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected no space before "),s("code",null,">"),t(", but found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-spacing.html"},"lodash-template/html-closing-bracket-spacing"),t(")")])])],-1)])),default:a(()=>[i[5]||(i[5]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," >")])],-1))]),_:1})]),i[30]||(i[30]=t(` +`)),s("span",c,[i[11]||(i[11]=e('<div foo="bar"',5)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>i[9]||(i[9]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected no space before "),s("code",null,">"),t(", but found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-spacing.html"},"lodash-template/html-closing-bracket-spacing"),t(")")])])],-1)])),default:a(()=>[i[10]||(i[10]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," >")])],-1))]),_:1})]),i[31]||(i[31]=t(` +`)),s("span",y,[i[14]||(i[14]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"i[12]||(i[12]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected no space before "),s("code",null,">"),t(", but found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-spacing.html"},"lodash-template/html-closing-bracket-spacing"),t(")")])])],-1)])),default:a(()=>[i[13]||(i[13]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," >")])],-1))]),_:1})]),i[32]||(i[32]=t(` +`)),s("span",m,[i[18]||(i[18]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[19]||(i[19]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"br",-1)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>i[16]||(i[16]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected a space before "),s("code",null,"/>"),t(", but not found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-spacing.html"},"lodash-template/html-closing-bracket-spacing"),t(")")])])],-1)])),default:a(()=>[i[17]||(i[17]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"/>")])],-1))]),_:1})]),i[33]||(i[33]=t(` +`)),s("span",b,[i[22]||(i[22]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[23]||(i[23]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"input",-1)),i[24]||(i[24]=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," foo",-1)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>i[20]||(i[20]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected a space before "),s("code",null,"/>"),t(", but not found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-spacing.html"},"lodash-template/html-closing-bracket-spacing"),t(")")])])],-1)])),default:a(()=>[i[21]||(i[21]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"/>")])],-1))]),_:1})]),i[34]||(i[34]=t(` +`)),s("span",f,[i[27]||(i[27]=e('<input foo="bar"',5)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>i[25]||(i[25]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected a space before "),s("code",null,"/>"),t(", but not found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-spacing.html"},"lodash-template/html-closing-bracket-spacing"),t(")")])])],-1)])),default:a(()=>[i[26]||(i[26]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"/>")])],-1))]),_:1})])])])]),i[38]||(i[38]=e(`

Options

json
{
+  "lodash-template/html-closing-bracket-spacing": ["error", {
+    "startTag": "always" | "never",
+    "endTag": "always" | "never",
+    "selfClosingTag": "always" | "never"
+  }]
+}
  • startTag ("always" | "never") ... Setting for the > of start tags (e.g. <div>). Default is "never".
    • "always" ... requires one or more spaces.
    • "never" ... disallows spaces.
  • endTag ("always" | "never") ... Setting for the > of end tags (e.g. </div>). Default is "never".
    • "always" ... requires one or more spaces.
    • "never" ... disallows spaces.
  • selfClosingTag ("always" | "never") ... Setting for the /> of self-closing tags (e.g. <br/>). Default is "always".
    • "always" ... requires one or more spaces.
    • "never" ... disallows spaces.
html
<% /* eslint
+  lodash-template/html-closing-bracket-spacing: ["error", {
+    "startTag": "always",
+    "endTag": "always",
+    "selfClosingTag": "always"
+  }]
+*/ %>
+<!-- ✓ GOOD -->
+<input >
+<input foo >
+<div foo="bar" >
+</div >
+<br />
+<input foo />
+<input foo="bar" />

Implementation

`,6))])}const x=p(r,[["render",q]]);export{A as __pageData,x as default}; diff --git a/assets/rules_html-closing-bracket-spacing.md.B_hyhmtY.lean.js b/assets/rules_html-closing-bracket-spacing.md.B_hyhmtY.lean.js new file mode 100644 index 00000000..a11dcd7f --- /dev/null +++ b/assets/rules_html-closing-bracket-spacing.md.B_hyhmtY.lean.js @@ -0,0 +1,39 @@ +import{_ as p,c as h,a9 as e,j as s,G as n,w as a,a as t,B as o,o as k}from"./chunks/framework.D6W_pQcY.js";const A=JSON.parse('{"title":"lodash-template/html-closing-bracket-spacing","description":"require or disallow a space before tag\'s closing brackets. (ex. :ok: `` `` :ng: `` ``)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/html-closing-bracket-spacing","description":"require or disallow a space before tag\'s closing brackets. (ex. :ok: `` `` :ng: `` ``)"},"headers":[],"relativePath":"rules/html-closing-bracket-spacing.md","filePath":"rules/html-closing-bracket-spacing.md","lastUpdated":1733171881000}'),r={name:"rules/html-closing-bracket-spacing.md"},d={class:"language-html vp-adaptive-theme"},g={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},E={class:"line"},u={class:"line"},c={class:"line"},y={class:"line"},m={class:"line"},b={class:"line"},f={class:"line"};function q(F,i,v,w,C,B){const l=o("v-menu");return k(),h("div",null,[i[37]||(i[37]=e(`

lodash-template/html-closing-bracket-spacing

require or disallow a space before tag's closing brackets. (ex. 🆗 <input> <input·/> 🆖 <input·> <input/>)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces consistent spacing style before closing brackets > of tags.

html
<div class="foo"> or <div class="foo" >
+<input class="foo"/> or <input class="foo" />
`,6)),s("div",d,[i[35]||(i[35]=s("button",{title:"Copy Code",class:"copy"},null,-1)),i[36]||(i[36]=s("span",{class:"lang"},"html",-1)),s("pre",g,[s("code",null,[i[28]||(i[28]=e(`<% /* eslint "lodash-template/html-closing-bracket-spacing": "error" */ %> +<!-- ✓ GOOD --> +<input> +<input foo> +<div foo="bar"> +</div> +<br /> +<input foo /> +<input foo="bar" /> + +<!-- ✗ BAD --> +`,22)),s("span",E,[i[2]||(i[2]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[3]||(i[3]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"input",-1)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>i[0]||(i[0]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected no space before "),s("code",null,">"),t(", but found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-spacing.html"},"lodash-template/html-closing-bracket-spacing"),t(")")])])],-1)])),default:a(()=>[i[1]||(i[1]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," >")])],-1))]),_:1})]),i[29]||(i[29]=t(` +`)),s("span",u,[i[6]||(i[6]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[7]||(i[7]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"input",-1)),i[8]||(i[8]=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," foo",-1)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>i[4]||(i[4]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected no space before "),s("code",null,">"),t(", but found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-spacing.html"},"lodash-template/html-closing-bracket-spacing"),t(")")])])],-1)])),default:a(()=>[i[5]||(i[5]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," >")])],-1))]),_:1})]),i[30]||(i[30]=t(` +`)),s("span",c,[i[11]||(i[11]=e('<div foo="bar"',5)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>i[9]||(i[9]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected no space before "),s("code",null,">"),t(", but found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-spacing.html"},"lodash-template/html-closing-bracket-spacing"),t(")")])])],-1)])),default:a(()=>[i[10]||(i[10]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," >")])],-1))]),_:1})]),i[31]||(i[31]=t(` +`)),s("span",y,[i[14]||(i[14]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"i[12]||(i[12]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected no space before "),s("code",null,">"),t(", but found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-spacing.html"},"lodash-template/html-closing-bracket-spacing"),t(")")])])],-1)])),default:a(()=>[i[13]||(i[13]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," >")])],-1))]),_:1})]),i[32]||(i[32]=t(` +`)),s("span",m,[i[18]||(i[18]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[19]||(i[19]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"br",-1)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>i[16]||(i[16]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected a space before "),s("code",null,"/>"),t(", but not found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-spacing.html"},"lodash-template/html-closing-bracket-spacing"),t(")")])])],-1)])),default:a(()=>[i[17]||(i[17]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"/>")])],-1))]),_:1})]),i[33]||(i[33]=t(` +`)),s("span",b,[i[22]||(i[22]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[23]||(i[23]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"input",-1)),i[24]||(i[24]=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," foo",-1)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>i[20]||(i[20]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected a space before "),s("code",null,"/>"),t(", but not found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-spacing.html"},"lodash-template/html-closing-bracket-spacing"),t(")")])])],-1)])),default:a(()=>[i[21]||(i[21]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"/>")])],-1))]),_:1})]),i[34]||(i[34]=t(` +`)),s("span",f,[i[27]||(i[27]=e('<input foo="bar"',5)),n(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>i[25]||(i[25]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected a space before "),s("code",null,"/>"),t(", but not found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-closing-bracket-spacing.html"},"lodash-template/html-closing-bracket-spacing"),t(")")])])],-1)])),default:a(()=>[i[26]||(i[26]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"/>")])],-1))]),_:1})])])])]),i[38]||(i[38]=e(`

Options

json
{
+  "lodash-template/html-closing-bracket-spacing": ["error", {
+    "startTag": "always" | "never",
+    "endTag": "always" | "never",
+    "selfClosingTag": "always" | "never"
+  }]
+}
  • startTag ("always" | "never") ... Setting for the > of start tags (e.g. <div>). Default is "never".
    • "always" ... requires one or more spaces.
    • "never" ... disallows spaces.
  • endTag ("always" | "never") ... Setting for the > of end tags (e.g. </div>). Default is "never".
    • "always" ... requires one or more spaces.
    • "never" ... disallows spaces.
  • selfClosingTag ("always" | "never") ... Setting for the /> of self-closing tags (e.g. <br/>). Default is "always".
    • "always" ... requires one or more spaces.
    • "never" ... disallows spaces.
html
<% /* eslint
+  lodash-template/html-closing-bracket-spacing: ["error", {
+    "startTag": "always",
+    "endTag": "always",
+    "selfClosingTag": "always"
+  }]
+*/ %>
+<!-- ✓ GOOD -->
+<input >
+<input foo >
+<div foo="bar" >
+</div >
+<br />
+<input foo />
+<input foo="bar" />

Implementation

`,6))])}const x=p(r,[["render",q]]);export{A as __pageData,x as default}; diff --git a/assets/rules_html-comment-content-newline.md.ej66B5u4.js b/assets/rules_html-comment-content-newline.md.ej66B5u4.js new file mode 100644 index 00000000..216e38ed --- /dev/null +++ b/assets/rules_html-comment-content-newline.md.ej66B5u4.js @@ -0,0 +1,44 @@ +import{_ as o,c as p,a9 as a,j as s,G as i,w as t,a as e,B as r,o as h}from"./chunks/framework.D6W_pQcY.js";const P=JSON.parse('{"title":"lodash-template/html-comment-content-newline","description":"require or disallow a line break before and after HTML comment contents","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/html-comment-content-newline","description":"require or disallow a line break before and after HTML comment contents"},"headers":[],"relativePath":"rules/html-comment-content-newline.md","filePath":"rules/html-comment-content-newline.md","lastUpdated":1733171881000}'),d={name:"rules/html-comment-content-newline.md"},k={class:"language-html vp-adaptive-theme"},m={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},u={class:"line"},g={class:"line"},c={class:"line"},f={class:"line"},w={class:"line"},b={class:"language-html vp-adaptive-theme"},y={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},D={class:"line"},A={class:"line"},v={class:"line"},E={class:"line"};function q(x,l,C,F,B,T){const n=r("v-menu");return h(),p("div",null,[l[58]||(l[58]=a('

lodash-template/html-comment-content-newline

require or disallow a line break before and after HTML comment contents

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces a line break (or no line break) before and after HTML comment contents.

',5)),s("div",k,[l[24]||(l[24]=s("button",{title:"Copy Code",class:"copy"},null,-1)),l[25]||(l[25]=s("span",{class:"lang"},"html",-1)),s("pre",m,[s("code",null,[l[19]||(l[19]=a(`<% /* eslint "lodash-template/html-comment-content-newline": "error" */ %> +<!-- ✓ GOOD --> +<!-- singleline comment --> +<!-- + multiline + comment +--> + +<!-- ✗ BAD --> +`,18)),s("span",u,[l[2]||(l[2]=s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},""),e(", but 1 line break found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-content-newline.html"},"lodash-template/html-comment-content-newline"),e(")")])])],-1)])),default:t(()=>[l[4]||(l[4]=s("span",null,[s("span")],-1))]),_:1})]),l[21]||(l[21]=a(` +--> +<!-- + multiline +`,7)),s("span",c,[l[9]||(l[9]=s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}}," comment",-1)),i(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>l[7]||(l[7]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[e("Expected 1 line break before "),s("code",null,"-->"),e(", but no line breaks found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-content-newline.html"},"lodash-template/html-comment-content-newline"),e(")")])])],-1)])),default:t(()=>[l[8]||(l[8]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}}," ")])],-1))]),_:1}),l[10]||(l[10]=s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->",-1))]),l[22]||(l[22]=e(` +`)),s("span",f,[l[13]||(l[13]=s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},""),e(", but no line breaks found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-content-newline.html"},"lodash-template/html-comment-content-newline"),e(")")])])],-1)])),default:t(()=>[l[16]||(l[16]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}}," ")])],-1))]),_:1}),l[18]||(l[18]=s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->",-1))])])])]),l[59]||(l[59]=a(`

Options

json
{
+  "lodash-template/html-comment-content-newline": ["error", {
+    "singleline": "never",
+    "multiline": "always",
+  }]
+}
  • singleline ... the configuration for single-line comments.
    • "ignore" ... Don't enforce line breaks style before and after the comments.
    • "never" ... disallow line breaks before and after the comments. This is the default.
    • "always" ... require one line break before and after the comments.
  • multiline ... the configuration for multiline comments.
    • "ignore" ... Don't enforce line breaks style before and after the comments.
    • "never" ... disallow line breaks before and after the comments.
    • "always" ... require one line break before and after the comments. This is the default.
`,3)),s("div",b,[l[56]||(l[56]=s("button",{title:"Copy Code",class:"copy"},null,-1)),l[57]||(l[57]=s("span",{class:"lang"},"html",-1)),s("pre",y,[s("code",null,[l[46]||(l[46]=a(`<% /* eslint + lodash-template/html-comment-content-newline: ["error", { + "singleline": "always", + "multiline": "never" + }] +*/ %> +<!-- + ✓ GOOD +--> +<!-- + comment +--> + +<!-- comment + comment --> + +`,32)),s("span",D,[l[30]||(l[30]=s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},""),e(", but no line breaks found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-content-newline.html"},"lodash-template/html-comment-content-newline"),e(")")])])],-1)])),default:t(()=>[l[29]||(l[29]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}}," ")])],-1))]),_:1}),l[32]||(l[32]=s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->",-1))]),l[47]||(l[47]=e(` +`)),s("span",A,[l[37]||(l[37]=s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},""),e(", but no line breaks found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-content-newline.html"},"lodash-template/html-comment-content-newline"),e(")")])])],-1)])),default:t(()=>[l[36]||(l[36]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}}," ")])],-1))]),_:1}),l[39]||(l[39]=s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->",-1))]),l[48]||(l[48]=e(` +`)),l[49]||(l[49]=s("span",{class:"line"},null,-1)),l[50]||(l[50]=e(` +`)),s("span",v,[l[42]||(l[42]=s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},""),e(", but 1 line break found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-content-newline.html"},"lodash-template/html-comment-content-newline"),e(")")])])],-1)])),default:t(()=>[l[44]||(l[44]=s("span",null,[s("span")],-1))]),_:1})]),l[54]||(l[54]=e(` +`)),l[55]||(l[55]=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->")],-1))])])]),l[60]||(l[60]=a('

Further Reading

Implementation

',4))])}const H=o(d,[["render",q]]);export{P as __pageData,H as default}; diff --git a/assets/rules_html-comment-content-newline.md.ej66B5u4.lean.js b/assets/rules_html-comment-content-newline.md.ej66B5u4.lean.js new file mode 100644 index 00000000..216e38ed --- /dev/null +++ b/assets/rules_html-comment-content-newline.md.ej66B5u4.lean.js @@ -0,0 +1,44 @@ +import{_ as o,c as p,a9 as a,j as s,G as i,w as t,a as e,B as r,o as h}from"./chunks/framework.D6W_pQcY.js";const P=JSON.parse('{"title":"lodash-template/html-comment-content-newline","description":"require or disallow a line break before and after HTML comment contents","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/html-comment-content-newline","description":"require or disallow a line break before and after HTML comment contents"},"headers":[],"relativePath":"rules/html-comment-content-newline.md","filePath":"rules/html-comment-content-newline.md","lastUpdated":1733171881000}'),d={name:"rules/html-comment-content-newline.md"},k={class:"language-html vp-adaptive-theme"},m={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},u={class:"line"},g={class:"line"},c={class:"line"},f={class:"line"},w={class:"line"},b={class:"language-html vp-adaptive-theme"},y={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},D={class:"line"},A={class:"line"},v={class:"line"},E={class:"line"};function q(x,l,C,F,B,T){const n=r("v-menu");return h(),p("div",null,[l[58]||(l[58]=a('

lodash-template/html-comment-content-newline

require or disallow a line break before and after HTML comment contents

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces a line break (or no line break) before and after HTML comment contents.

',5)),s("div",k,[l[24]||(l[24]=s("button",{title:"Copy Code",class:"copy"},null,-1)),l[25]||(l[25]=s("span",{class:"lang"},"html",-1)),s("pre",m,[s("code",null,[l[19]||(l[19]=a(`<% /* eslint "lodash-template/html-comment-content-newline": "error" */ %> +<!-- ✓ GOOD --> +<!-- singleline comment --> +<!-- + multiline + comment +--> + +<!-- ✗ BAD --> +`,18)),s("span",u,[l[2]||(l[2]=s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},""),e(", but 1 line break found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-content-newline.html"},"lodash-template/html-comment-content-newline"),e(")")])])],-1)])),default:t(()=>[l[4]||(l[4]=s("span",null,[s("span")],-1))]),_:1})]),l[21]||(l[21]=a(` +--> +<!-- + multiline +`,7)),s("span",c,[l[9]||(l[9]=s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}}," comment",-1)),i(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>l[7]||(l[7]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[e("Expected 1 line break before "),s("code",null,"-->"),e(", but no line breaks found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-content-newline.html"},"lodash-template/html-comment-content-newline"),e(")")])])],-1)])),default:t(()=>[l[8]||(l[8]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}}," ")])],-1))]),_:1}),l[10]||(l[10]=s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->",-1))]),l[22]||(l[22]=e(` +`)),s("span",f,[l[13]||(l[13]=s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},""),e(", but no line breaks found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-content-newline.html"},"lodash-template/html-comment-content-newline"),e(")")])])],-1)])),default:t(()=>[l[16]||(l[16]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}}," ")])],-1))]),_:1}),l[18]||(l[18]=s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->",-1))])])])]),l[59]||(l[59]=a(`

Options

json
{
+  "lodash-template/html-comment-content-newline": ["error", {
+    "singleline": "never",
+    "multiline": "always",
+  }]
+}
  • singleline ... the configuration for single-line comments.
    • "ignore" ... Don't enforce line breaks style before and after the comments.
    • "never" ... disallow line breaks before and after the comments. This is the default.
    • "always" ... require one line break before and after the comments.
  • multiline ... the configuration for multiline comments.
    • "ignore" ... Don't enforce line breaks style before and after the comments.
    • "never" ... disallow line breaks before and after the comments.
    • "always" ... require one line break before and after the comments. This is the default.
`,3)),s("div",b,[l[56]||(l[56]=s("button",{title:"Copy Code",class:"copy"},null,-1)),l[57]||(l[57]=s("span",{class:"lang"},"html",-1)),s("pre",y,[s("code",null,[l[46]||(l[46]=a(`<% /* eslint + lodash-template/html-comment-content-newline: ["error", { + "singleline": "always", + "multiline": "never" + }] +*/ %> +<!-- + ✓ GOOD +--> +<!-- + comment +--> + +<!-- comment + comment --> + +`,32)),s("span",D,[l[30]||(l[30]=s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},""),e(", but no line breaks found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-content-newline.html"},"lodash-template/html-comment-content-newline"),e(")")])])],-1)])),default:t(()=>[l[29]||(l[29]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}}," ")])],-1))]),_:1}),l[32]||(l[32]=s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->",-1))]),l[47]||(l[47]=e(` +`)),s("span",A,[l[37]||(l[37]=s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},""),e(", but no line breaks found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-content-newline.html"},"lodash-template/html-comment-content-newline"),e(")")])])],-1)])),default:t(()=>[l[36]||(l[36]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}}," ")])],-1))]),_:1}),l[39]||(l[39]=s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->",-1))]),l[48]||(l[48]=e(` +`)),l[49]||(l[49]=s("span",{class:"line"},null,-1)),l[50]||(l[50]=e(` +`)),s("span",v,[l[42]||(l[42]=s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},""),e(", but 1 line break found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-content-newline.html"},"lodash-template/html-comment-content-newline"),e(")")])])],-1)])),default:t(()=>[l[44]||(l[44]=s("span",null,[s("span")],-1))]),_:1})]),l[54]||(l[54]=e(` +`)),l[55]||(l[55]=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->")],-1))])])]),l[60]||(l[60]=a('

Further Reading

Implementation

',4))])}const H=o(d,[["render",q]]);export{P as __pageData,H as default}; diff --git a/assets/rules_html-comment-spacing.md.BmKWBP6S.js b/assets/rules_html-comment-spacing.md.BmKWBP6S.js new file mode 100644 index 00000000..8ab3c61e --- /dev/null +++ b/assets/rules_html-comment-spacing.md.BmKWBP6S.js @@ -0,0 +1,18 @@ +import{_ as n,c as p,a9 as o,j as s,G as i,w as l,a as e,B as r,o as h}from"./chunks/framework.D6W_pQcY.js";const T=JSON.parse('{"title":"lodash-template/html-comment-spacing","description":"enforce unified spacing in HTML comment. (ex. :ok: ``, :ng: ``)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/html-comment-spacing","description":"enforce unified spacing in HTML comment. (ex. :ok: ``, :ng: ``)"},"headers":[],"relativePath":"rules/html-comment-spacing.md","filePath":"rules/html-comment-spacing.md","lastUpdated":1733171881000}'),m={name:"rules/html-comment-spacing.md"},d={class:"language-html vp-adaptive-theme"},u={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},c={class:"line"},g={class:"line"},k={class:"language-html vp-adaptive-theme"},f={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},y={class:"line"},b={class:"line"},v={class:"language-html vp-adaptive-theme"},w={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},D={class:"line"},A={class:"line"};function E(q,t,x,B,C,F){const a=r("v-menu");return h(),p("div",null,[t[42]||(t[42]=o('

lodash-template/html-comment-spacing

enforce unified spacing in HTML comment. (ex. 🆗 <!-- comment -->, 🆖 <!--comment-->)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule aims to enforce unified spacing in HTML comment.

',5)),s("div",d,[t[12]||(t[12]=s("button",{title:"Copy Code",class:"copy"},null,-1)),t[13]||(t[13]=s("span",{class:"lang"},"html",-1)),s("pre",u,[s("code",null,[t[10]||(t[10]=o(`<% /* eslint "lodash-template/html-comment-spacing": "error" */ %> +<!-- ✓ GOOD --> +<!-- comment --> + +<!-- ✗ BAD --> +`,10)),s("span",c,[i(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[0]||(t[0]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[e("Expected 1 space after "),s("code",null,""),e(", but 3 spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-spacing.html"},"lodash-template/html-comment-spacing"),e(")")])])],-1)])),default:l(()=>[t[3]||(t[3]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->")])],-1))]),_:1})]),t[11]||(t[11]=e(` +`)),s("span",g,[i(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[5]||(t[5]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[e("Expected 1 space after "),s("code",null,""),e(", but no spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-spacing.html"},"lodash-template/html-comment-spacing"),e(")")])])],-1)])),default:l(()=>[t[8]||(t[8]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->")])],-1))]),_:1})])])])]),t[43]||(t[43]=o('

Options

Default spacing is set to always

json
{\n  "lodash-template/html-comment-spacing": ["error", "always" | "never"]\n}

"always" - Expect one space between comment and curly brackets.

',4)),s("div",k,[t[26]||(t[26]=s("button",{title:"Copy Code",class:"copy"},null,-1)),t[27]||(t[27]=s("span",{class:"lang"},"html",-1)),s("pre",f,[s("code",null,[t[24]||(t[24]=o(`<% /* eslint "lodash-template/html-comment-spacing": ["error", "always"] */ %> +<!-- ✓ GOOD --> +<!-- comment --> + +<!-- ✗ BAD --> +`,10)),s("span",y,[i(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[14]||(t[14]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[e("Expected 1 space after "),s("code",null,""),e(", but 3 spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-spacing.html"},"lodash-template/html-comment-spacing"),e(")")])])],-1)])),default:l(()=>[t[17]||(t[17]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->")])],-1))]),_:1})]),t[25]||(t[25]=e(` +`)),s("span",b,[i(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[19]||(t[19]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[e("Expected 1 space after "),s("code",null,""),e(", but no spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-spacing.html"},"lodash-template/html-comment-spacing"),e(")")])])],-1)])),default:l(()=>[t[22]||(t[22]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->")])],-1))]),_:1})])])])]),t[44]||(t[44]=s("h3",{id:"never-expect-no-spaces-between-comment-and-curly-brackets",tabindex:"-1"},[s("code",null,'"never"'),e(" - Expect no spaces between comment and curly brackets. "),s("a",{class:"header-anchor",href:"#never-expect-no-spaces-between-comment-and-curly-brackets","aria-label":'Permalink to "`"never"` - Expect no spaces between comment and curly brackets."'},"​")],-1)),s("div",v,[t[40]||(t[40]=s("button",{title:"Copy Code",class:"copy"},null,-1)),t[41]||(t[41]=s("span",{class:"lang"},"html",-1)),s("pre",w,[s("code",null,[t[38]||(t[38]=o(`<% /* eslint "lodash-template/html-comment-spacing": ["error", "never"] */ %> +<!--✓ GOOD--> +<!--comment--> + +`,8)),s("span",D,[i(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[28]||(t[28]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[e("Expected no spaces after "),s("code",null,""),e(", but 1 space found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-spacing.html"},"lodash-template/html-comment-spacing"),e(")")])])],-1)])),default:l(()=>[t[31]||(t[31]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->")])],-1))]),_:1})]),t[39]||(t[39]=e(` +`)),s("span",A,[i(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[33]||(t[33]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[e("Expected no spaces after "),s("code",null,""),e(", but 1 space found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-spacing.html"},"lodash-template/html-comment-spacing"),e(")")])])],-1)])),default:l(()=>[t[36]||(t[36]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->")])],-1))]),_:1})])])])]),t[45]||(t[45]=s("h2",{id:"implementation",tabindex:"-1"},[e("Implementation "),s("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),t[46]||(t[46]=s("ul",null,[s("li",null,[s("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/html-comment-spacing.js",target:"_blank",rel:"noreferrer"},"Rule source")]),s("li",null,[s("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/html-comment-spacing.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const P=n(m,[["render",E]]);export{T as __pageData,P as default}; diff --git a/assets/rules_html-comment-spacing.md.BmKWBP6S.lean.js b/assets/rules_html-comment-spacing.md.BmKWBP6S.lean.js new file mode 100644 index 00000000..8ab3c61e --- /dev/null +++ b/assets/rules_html-comment-spacing.md.BmKWBP6S.lean.js @@ -0,0 +1,18 @@ +import{_ as n,c as p,a9 as o,j as s,G as i,w as l,a as e,B as r,o as h}from"./chunks/framework.D6W_pQcY.js";const T=JSON.parse('{"title":"lodash-template/html-comment-spacing","description":"enforce unified spacing in HTML comment. (ex. :ok: ``, :ng: ``)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/html-comment-spacing","description":"enforce unified spacing in HTML comment. (ex. :ok: ``, :ng: ``)"},"headers":[],"relativePath":"rules/html-comment-spacing.md","filePath":"rules/html-comment-spacing.md","lastUpdated":1733171881000}'),m={name:"rules/html-comment-spacing.md"},d={class:"language-html vp-adaptive-theme"},u={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},c={class:"line"},g={class:"line"},k={class:"language-html vp-adaptive-theme"},f={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},y={class:"line"},b={class:"line"},v={class:"language-html vp-adaptive-theme"},w={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},D={class:"line"},A={class:"line"};function E(q,t,x,B,C,F){const a=r("v-menu");return h(),p("div",null,[t[42]||(t[42]=o('

lodash-template/html-comment-spacing

enforce unified spacing in HTML comment. (ex. 🆗 <!-- comment -->, 🆖 <!--comment-->)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule aims to enforce unified spacing in HTML comment.

',5)),s("div",d,[t[12]||(t[12]=s("button",{title:"Copy Code",class:"copy"},null,-1)),t[13]||(t[13]=s("span",{class:"lang"},"html",-1)),s("pre",u,[s("code",null,[t[10]||(t[10]=o(`<% /* eslint "lodash-template/html-comment-spacing": "error" */ %> +<!-- ✓ GOOD --> +<!-- comment --> + +<!-- ✗ BAD --> +`,10)),s("span",c,[i(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[0]||(t[0]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[e("Expected 1 space after "),s("code",null,""),e(", but 3 spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-spacing.html"},"lodash-template/html-comment-spacing"),e(")")])])],-1)])),default:l(()=>[t[3]||(t[3]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->")])],-1))]),_:1})]),t[11]||(t[11]=e(` +`)),s("span",g,[i(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[5]||(t[5]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[e("Expected 1 space after "),s("code",null,""),e(", but no spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-spacing.html"},"lodash-template/html-comment-spacing"),e(")")])])],-1)])),default:l(()=>[t[8]||(t[8]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->")])],-1))]),_:1})])])])]),t[43]||(t[43]=o('

Options

Default spacing is set to always

json
{\n  "lodash-template/html-comment-spacing": ["error", "always" | "never"]\n}

"always" - Expect one space between comment and curly brackets.

',4)),s("div",k,[t[26]||(t[26]=s("button",{title:"Copy Code",class:"copy"},null,-1)),t[27]||(t[27]=s("span",{class:"lang"},"html",-1)),s("pre",f,[s("code",null,[t[24]||(t[24]=o(`<% /* eslint "lodash-template/html-comment-spacing": ["error", "always"] */ %> +<!-- ✓ GOOD --> +<!-- comment --> + +<!-- ✗ BAD --> +`,10)),s("span",y,[i(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[14]||(t[14]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[e("Expected 1 space after "),s("code",null,""),e(", but 3 spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-spacing.html"},"lodash-template/html-comment-spacing"),e(")")])])],-1)])),default:l(()=>[t[17]||(t[17]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->")])],-1))]),_:1})]),t[25]||(t[25]=e(` +`)),s("span",b,[i(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[19]||(t[19]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[e("Expected 1 space after "),s("code",null,""),e(", but no spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-spacing.html"},"lodash-template/html-comment-spacing"),e(")")])])],-1)])),default:l(()=>[t[22]||(t[22]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->")])],-1))]),_:1})])])])]),t[44]||(t[44]=s("h3",{id:"never-expect-no-spaces-between-comment-and-curly-brackets",tabindex:"-1"},[s("code",null,'"never"'),e(" - Expect no spaces between comment and curly brackets. "),s("a",{class:"header-anchor",href:"#never-expect-no-spaces-between-comment-and-curly-brackets","aria-label":'Permalink to "`"never"` - Expect no spaces between comment and curly brackets."'},"​")],-1)),s("div",v,[t[40]||(t[40]=s("button",{title:"Copy Code",class:"copy"},null,-1)),t[41]||(t[41]=s("span",{class:"lang"},"html",-1)),s("pre",w,[s("code",null,[t[38]||(t[38]=o(`<% /* eslint "lodash-template/html-comment-spacing": ["error", "never"] */ %> +<!--✓ GOOD--> +<!--comment--> + +`,8)),s("span",D,[i(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[28]||(t[28]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[e("Expected no spaces after "),s("code",null,""),e(", but 1 space found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-spacing.html"},"lodash-template/html-comment-spacing"),e(")")])])],-1)])),default:l(()=>[t[31]||(t[31]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->")])],-1))]),_:1})]),t[39]||(t[39]=e(` +`)),s("span",A,[i(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[33]||(t[33]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[e("Expected no spaces after "),s("code",null,""),e(", but 1 space found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-comment-spacing.html"},"lodash-template/html-comment-spacing"),e(")")])])],-1)])),default:l(()=>[t[36]||(t[36]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"-->")])],-1))]),_:1})])])])]),t[45]||(t[45]=s("h2",{id:"implementation",tabindex:"-1"},[e("Implementation "),s("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),t[46]||(t[46]=s("ul",null,[s("li",null,[s("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/html-comment-spacing.js",target:"_blank",rel:"noreferrer"},"Rule source")]),s("li",null,[s("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/html-comment-spacing.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const P=n(m,[["render",E]]);export{T as __pageData,P as default}; diff --git a/assets/rules_html-content-newline.md.Dty8WRyI.js b/assets/rules_html-content-newline.md.Dty8WRyI.js new file mode 100644 index 00000000..605ec1b9 --- /dev/null +++ b/assets/rules_html-content-newline.md.Dty8WRyI.js @@ -0,0 +1,47 @@ +import{_ as p,c as h,a9 as e,j as i,G as a,w as n,a as t,B as o,o as r}from"./chunks/framework.D6W_pQcY.js";const B=JSON.parse('{"title":"lodash-template/html-content-newline","description":"require or disallow a line break before and after HTML contents","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/html-content-newline","description":"require or disallow a line break before and after HTML contents"},"headers":[],"relativePath":"rules/html-content-newline.md","filePath":"rules/html-content-newline.md","lastUpdated":1733171881000}'),k={name:"rules/html-content-newline.md"},d={class:"language-html vp-adaptive-theme"},E={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},u={class:"language-html vp-adaptive-theme"},y={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},m={class:"line"},c={class:"line"},f={class:"line"};function b(q,s,v,w,F,C){const l=o("v-menu");return r(),h("div",null,[s[35]||(s[35]=e('

lodash-template/html-content-newline

require or disallow a line break before and after HTML contents

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces a line break (or no line break) before and after HTML contents.

',5)),i("div",d,[s[10]||(s[10]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[11]||(s[11]=i("span",{class:"lang"},"html",-1)),i("pre",E,[i("code",null,[s[9]||(s[9]=e(`<% /* eslint "lodash-template/html-content-newline": "error" */ %> +<!-- ✓ GOOD --> +<div class="panel">content</div> + +<div class="panel"> + content +</div> + +<div + class="panel" +> + content +</div> + +<!-- ✗ BAD --> +<div + class="panel" +`,34)),i("span",g,[s[4]||(s[4]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),a(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:n(({})=>s[0]||(s[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t('Expected 1 line break after closing bracket of the "div" element, but no line breaks found. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-content-newline.html"},"lodash-template/html-content-newline"),t(")")])])],-1)])),default:n(()=>[s[1]||(s[1]=i("span",null,[i("span")],-1))]),_:1}),s[5]||(s[5]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"content",-1)),a(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:n(({})=>s[2]||(s[2]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t('Expected 1 line break before opening bracket of the "div" element, but no line breaks found. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-content-newline.html"},"lodash-template/html-content-newline"),t(")")])])],-1)])),default:n(()=>[s[3]||(s[3]=i("span",null,[i("span")],-1))]),_:1}),s[6]||(s[6]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))])])])]),s[36]||(s[36]=e(`

Options

json
{
+  "lodash-template/html-content-newline": ["error", {
+    "singleline": "ignore",
+    "multiline": "always",
+    "ignoreNames": ["pre", "textarea"]
+  }]
+}
  • singleline ... the configuration for single-line elements. It's a single-line element if startTag, endTag and contents are single-line.
    • "ignore" ... Don't enforce line breaks style before and after the contents. This is the default.
    • "never" ... disallow line breaks before and after the contents.
    • "always" ... require one line break before and after the contents.
  • multiline ... the configuration for multiline elements. It's a multiline element if startTag, endTag or contents are multiline.
    • "ignore" ... Don't enforce line breaks style before and after the contents.
    • "never" ... disallow line breaks before and after the contents.
    • "always" ... require one line break before and after the contents. This is the default.
  • ignoreNames ... the configuration for element names to ignore line breaks style.
    default ["pre", "textarea"]
`,3)),i("div",u,[s[33]||(s[33]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[34]||(s[34]=i("span",{class:"lang"},"html",-1)),i("pre",y,[i("code",null,[s[28]||(s[28]=e(`<% /*eslint + lodash-template/html-content-newline: ["error", { + "singleline": "always", + "multiline": "never" + }] +*/ %> + +<!-- ✓ GOOD --> +<div class="panel"> + content +</div> + +<div + class="panel" +>content</div> + +<!-- ✗ BAD --> +`,34)),i("span",m,[s[16]||(s[16]=e('<div class="panel">',6)),a(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:n(({})=>s[12]||(s[12]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t('Expected 1 line break after closing bracket of the "div" element, but no line breaks found. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-content-newline.html"},"lodash-template/html-content-newline"),t(")")])])],-1)])),default:n(()=>[s[13]||(s[13]=i("span",null,[i("span")],-1))]),_:1}),s[17]||(s[17]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"content",-1)),a(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:n(({})=>s[14]||(s[14]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t('Expected 1 line break before opening bracket of the "div" element, but no line breaks found. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-content-newline.html"},"lodash-template/html-content-newline"),t(")")])])],-1)])),default:n(()=>[s[15]||(s[15]=i("span",null,[i("span")],-1))]),_:1}),s[18]||(s[18]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))]),s[29]||(s[29]=e(` + +<div + class="panel" +`,7)),i("span",c,[s[23]||(s[23]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),a(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:n(({})=>s[21]||(s[21]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t('Expected no line breaks after closing bracket of the "div" element, but 1 line break found. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-content-newline.html"},"lodash-template/html-content-newline"),t(")")])])],-1)])),default:n(()=>[s[22]||(s[22]=i("span",null,[i("span")],-1))]),_:1})]),s[30]||(s[30]=t(` +`)),i("span",f,[s[26]||(s[26]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ",-1)),s[27]||(s[27]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"content",-1)),a(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:n(({})=>s[24]||(s[24]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t('Expected no line breaks before opening bracket of the "div" element, but 1 line break found. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-content-newline.html"},"lodash-template/html-content-newline"),t(")")])])],-1)])),default:n(()=>[s[25]||(s[25]=i("span",null,[i("span")],-1))]),_:1})]),s[31]||(s[31]=t(` +`)),s[32]||(s[32]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1))])])]),s[37]||(s[37]=i("h2",{id:"implementation",tabindex:"-1"},[t("Implementation "),i("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),s[38]||(s[38]=i("ul",null,[i("li",null,[i("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/html-content-newline.js",target:"_blank",rel:"noreferrer"},"Rule source")]),i("li",null,[i("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/html-content-newline.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const A=p(k,[["render",b]]);export{B as __pageData,A as default}; diff --git a/assets/rules_html-content-newline.md.Dty8WRyI.lean.js b/assets/rules_html-content-newline.md.Dty8WRyI.lean.js new file mode 100644 index 00000000..605ec1b9 --- /dev/null +++ b/assets/rules_html-content-newline.md.Dty8WRyI.lean.js @@ -0,0 +1,47 @@ +import{_ as p,c as h,a9 as e,j as i,G as a,w as n,a as t,B as o,o as r}from"./chunks/framework.D6W_pQcY.js";const B=JSON.parse('{"title":"lodash-template/html-content-newline","description":"require or disallow a line break before and after HTML contents","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/html-content-newline","description":"require or disallow a line break before and after HTML contents"},"headers":[],"relativePath":"rules/html-content-newline.md","filePath":"rules/html-content-newline.md","lastUpdated":1733171881000}'),k={name:"rules/html-content-newline.md"},d={class:"language-html vp-adaptive-theme"},E={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},u={class:"language-html vp-adaptive-theme"},y={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},m={class:"line"},c={class:"line"},f={class:"line"};function b(q,s,v,w,F,C){const l=o("v-menu");return r(),h("div",null,[s[35]||(s[35]=e('

lodash-template/html-content-newline

require or disallow a line break before and after HTML contents

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces a line break (or no line break) before and after HTML contents.

',5)),i("div",d,[s[10]||(s[10]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[11]||(s[11]=i("span",{class:"lang"},"html",-1)),i("pre",E,[i("code",null,[s[9]||(s[9]=e(`<% /* eslint "lodash-template/html-content-newline": "error" */ %> +<!-- ✓ GOOD --> +<div class="panel">content</div> + +<div class="panel"> + content +</div> + +<div + class="panel" +> + content +</div> + +<!-- ✗ BAD --> +<div + class="panel" +`,34)),i("span",g,[s[4]||(s[4]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),a(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:n(({})=>s[0]||(s[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t('Expected 1 line break after closing bracket of the "div" element, but no line breaks found. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-content-newline.html"},"lodash-template/html-content-newline"),t(")")])])],-1)])),default:n(()=>[s[1]||(s[1]=i("span",null,[i("span")],-1))]),_:1}),s[5]||(s[5]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"content",-1)),a(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:n(({})=>s[2]||(s[2]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t('Expected 1 line break before opening bracket of the "div" element, but no line breaks found. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-content-newline.html"},"lodash-template/html-content-newline"),t(")")])])],-1)])),default:n(()=>[s[3]||(s[3]=i("span",null,[i("span")],-1))]),_:1}),s[6]||(s[6]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))])])])]),s[36]||(s[36]=e(`

Options

json
{
+  "lodash-template/html-content-newline": ["error", {
+    "singleline": "ignore",
+    "multiline": "always",
+    "ignoreNames": ["pre", "textarea"]
+  }]
+}
  • singleline ... the configuration for single-line elements. It's a single-line element if startTag, endTag and contents are single-line.
    • "ignore" ... Don't enforce line breaks style before and after the contents. This is the default.
    • "never" ... disallow line breaks before and after the contents.
    • "always" ... require one line break before and after the contents.
  • multiline ... the configuration for multiline elements. It's a multiline element if startTag, endTag or contents are multiline.
    • "ignore" ... Don't enforce line breaks style before and after the contents.
    • "never" ... disallow line breaks before and after the contents.
    • "always" ... require one line break before and after the contents. This is the default.
  • ignoreNames ... the configuration for element names to ignore line breaks style.
    default ["pre", "textarea"]
`,3)),i("div",u,[s[33]||(s[33]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[34]||(s[34]=i("span",{class:"lang"},"html",-1)),i("pre",y,[i("code",null,[s[28]||(s[28]=e(`<% /*eslint + lodash-template/html-content-newline: ["error", { + "singleline": "always", + "multiline": "never" + }] +*/ %> + +<!-- ✓ GOOD --> +<div class="panel"> + content +</div> + +<div + class="panel" +>content</div> + +<!-- ✗ BAD --> +`,34)),i("span",m,[s[16]||(s[16]=e('<div class="panel">',6)),a(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:n(({})=>s[12]||(s[12]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t('Expected 1 line break after closing bracket of the "div" element, but no line breaks found. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-content-newline.html"},"lodash-template/html-content-newline"),t(")")])])],-1)])),default:n(()=>[s[13]||(s[13]=i("span",null,[i("span")],-1))]),_:1}),s[17]||(s[17]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"content",-1)),a(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:n(({})=>s[14]||(s[14]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t('Expected 1 line break before opening bracket of the "div" element, but no line breaks found. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-content-newline.html"},"lodash-template/html-content-newline"),t(")")])])],-1)])),default:n(()=>[s[15]||(s[15]=i("span",null,[i("span")],-1))]),_:1}),s[18]||(s[18]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))]),s[29]||(s[29]=e(` + +<div + class="panel" +`,7)),i("span",c,[s[23]||(s[23]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),a(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:n(({})=>s[21]||(s[21]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t('Expected no line breaks after closing bracket of the "div" element, but 1 line break found. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-content-newline.html"},"lodash-template/html-content-newline"),t(")")])])],-1)])),default:n(()=>[s[22]||(s[22]=i("span",null,[i("span")],-1))]),_:1})]),s[30]||(s[30]=t(` +`)),i("span",f,[s[26]||(s[26]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ",-1)),s[27]||(s[27]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"content",-1)),a(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:n(({})=>s[24]||(s[24]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t('Expected no line breaks before opening bracket of the "div" element, but 1 line break found. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-content-newline.html"},"lodash-template/html-content-newline"),t(")")])])],-1)])),default:n(()=>[s[25]||(s[25]=i("span",null,[i("span")],-1))]),_:1})]),s[31]||(s[31]=t(` +`)),s[32]||(s[32]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1))])])]),s[37]||(s[37]=i("h2",{id:"implementation",tabindex:"-1"},[t("Implementation "),i("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),s[38]||(s[38]=i("ul",null,[i("li",null,[i("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/html-content-newline.js",target:"_blank",rel:"noreferrer"},"Rule source")]),i("li",null,[i("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/html-content-newline.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const A=p(k,[["render",b]]);export{B as __pageData,A as default}; diff --git a/assets/rules_html-indent.md.D6ND3aJr.js b/assets/rules_html-indent.md.D6ND3aJr.js new file mode 100644 index 00000000..b2aa6885 --- /dev/null +++ b/assets/rules_html-indent.md.D6ND3aJr.js @@ -0,0 +1,41 @@ +import{_ as h,c as p,a9 as l,j as i,G as e,w as a,a as t,B as k,o}from"./chunks/framework.D6W_pQcY.js";const B=JSON.parse('{"title":"lodash-template/html-indent","description":"enforce consistent HTML indentation.","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/html-indent","description":"enforce consistent HTML indentation."},"headers":[],"relativePath":"rules/html-indent.md","filePath":"rules/html-indent.md","lastUpdated":1733171881000}'),r={name:"rules/html-indent.md"},d={class:"language-html vp-adaptive-theme"},E={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},u={class:"line"},c={class:"line"};function y(m,s,b,f,q,F){const n=k("v-menu");return o(),p("div",null,[s[18]||(s[18]=l('

lodash-template/html-indent

enforce consistent HTML indentation.

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces a consistent HTML indentation style. The default style is 2 spaces.

',5)),i("div",d,[s[16]||(s[16]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[17]||(s[17]=i("span",{class:"lang"},"html",-1)),i("pre",E,[i("code",null,[s[11]||(s[11]=l(`<% /* eslint "lodash-template/html-indent": "error" */ %> +<!-- ✓ GOOD --> +<div> + <div class="foo"> + Hello. + </div> +</div> + +<!-- ✗ BAD --> +<div> +`,20)),i("span",g,[e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[0]||(s[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected indentation of 2 spaces but found 1 space. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-indent.html"},"lodash-template/html-indent"),t(")")])])],-1)])),default:a(()=>[s[1]||(s[1]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[2]||(s[2]=l('<div class="foo">',6))]),s[12]||(s[12]=t(` +`)),i("span",u,[e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[3]||(s[3]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected indentation of 4 spaces but found 3 spaces. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-indent.html"},"lodash-template/html-indent"),t(")")])])],-1)])),default:a(()=>[s[4]||(s[4]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[5]||(s[5]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"Hello.",-1))]),s[13]||(s[13]=t(` +`)),i("span",c,[e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[6]||(s[6]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected indentation of 2 spaces but found 4 spaces. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-indent.html"},"lodash-template/html-indent"),t(")")])])],-1)])),default:a(()=>[s[7]||(s[7]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[8]||(s[8]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))]),s[14]||(s[14]=t(` +`)),s[15]||(s[15]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1))])])]),s[19]||(s[19]=l(`

Options

json
{
+  "lodash-template/html-indent": ["error", type, {
+    "attribute": 1,
+    "closeBracket": 0
+  }]
+}
  • type (number | "tab") ... The type of indentation. Default is 2. If this is a number, it's the number of spaces for one indent. If this is "tab", it uses one tab for one indent.
  • attribute (integer) ... The multiplier of indentation for attributes. Default is 1.
  • closeBracket (integer) ... The multiplier of indentation for right brackets. Default is 0.

Examples for this rule with { attribute: 1, closeBracket: 1 } option:

html
<% /* eslint "lodash-template/html-indent": ["error", 2, { "attribute": 1, "closeBracket": 1 }] */ %>
+<!-- ✓ GOOD -->
+<div>
+  <div
+    id="a"
+    class="b"
+    attr1="c"
+    attr2="d"
+    >
+    Text
+  </div>
+</div>

Examples for this rule with { attribute: 2, closeBracket: 1 } option:

html
<% /* eslint "lodash-template/html-indent": ["error", 2, { "attribute": 2, "closeBracket": 1 }] */ %>
+<!-- ✓ GOOD -->
+<div>
+  <div
+      id="a"
+      class="b"
+      attr1="c"
+      attr2="d"
+    >
+    Text
+  </div>
+</div>

Implementation

`,9))])}const D=h(r,[["render",y]]);export{B as __pageData,D as default}; diff --git a/assets/rules_html-indent.md.D6ND3aJr.lean.js b/assets/rules_html-indent.md.D6ND3aJr.lean.js new file mode 100644 index 00000000..b2aa6885 --- /dev/null +++ b/assets/rules_html-indent.md.D6ND3aJr.lean.js @@ -0,0 +1,41 @@ +import{_ as h,c as p,a9 as l,j as i,G as e,w as a,a as t,B as k,o}from"./chunks/framework.D6W_pQcY.js";const B=JSON.parse('{"title":"lodash-template/html-indent","description":"enforce consistent HTML indentation.","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/html-indent","description":"enforce consistent HTML indentation."},"headers":[],"relativePath":"rules/html-indent.md","filePath":"rules/html-indent.md","lastUpdated":1733171881000}'),r={name:"rules/html-indent.md"},d={class:"language-html vp-adaptive-theme"},E={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},u={class:"line"},c={class:"line"};function y(m,s,b,f,q,F){const n=k("v-menu");return o(),p("div",null,[s[18]||(s[18]=l('

lodash-template/html-indent

enforce consistent HTML indentation.

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces a consistent HTML indentation style. The default style is 2 spaces.

',5)),i("div",d,[s[16]||(s[16]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[17]||(s[17]=i("span",{class:"lang"},"html",-1)),i("pre",E,[i("code",null,[s[11]||(s[11]=l(`<% /* eslint "lodash-template/html-indent": "error" */ %> +<!-- ✓ GOOD --> +<div> + <div class="foo"> + Hello. + </div> +</div> + +<!-- ✗ BAD --> +<div> +`,20)),i("span",g,[e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[0]||(s[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected indentation of 2 spaces but found 1 space. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-indent.html"},"lodash-template/html-indent"),t(")")])])],-1)])),default:a(()=>[s[1]||(s[1]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[2]||(s[2]=l('<div class="foo">',6))]),s[12]||(s[12]=t(` +`)),i("span",u,[e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[3]||(s[3]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected indentation of 4 spaces but found 3 spaces. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-indent.html"},"lodash-template/html-indent"),t(")")])])],-1)])),default:a(()=>[s[4]||(s[4]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[5]||(s[5]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"Hello.",-1))]),s[13]||(s[13]=t(` +`)),i("span",c,[e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[6]||(s[6]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected indentation of 2 spaces but found 4 spaces. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/html-indent.html"},"lodash-template/html-indent"),t(")")])])],-1)])),default:a(()=>[s[7]||(s[7]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[8]||(s[8]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))]),s[14]||(s[14]=t(` +`)),s[15]||(s[15]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1))])])]),s[19]||(s[19]=l(`

Options

json
{
+  "lodash-template/html-indent": ["error", type, {
+    "attribute": 1,
+    "closeBracket": 0
+  }]
+}
  • type (number | "tab") ... The type of indentation. Default is 2. If this is a number, it's the number of spaces for one indent. If this is "tab", it uses one tab for one indent.
  • attribute (integer) ... The multiplier of indentation for attributes. Default is 1.
  • closeBracket (integer) ... The multiplier of indentation for right brackets. Default is 0.

Examples for this rule with { attribute: 1, closeBracket: 1 } option:

html
<% /* eslint "lodash-template/html-indent": ["error", 2, { "attribute": 1, "closeBracket": 1 }] */ %>
+<!-- ✓ GOOD -->
+<div>
+  <div
+    id="a"
+    class="b"
+    attr1="c"
+    attr2="d"
+    >
+    Text
+  </div>
+</div>

Examples for this rule with { attribute: 2, closeBracket: 1 } option:

html
<% /* eslint "lodash-template/html-indent": ["error", 2, { "attribute": 2, "closeBracket": 1 }] */ %>
+<!-- ✓ GOOD -->
+<div>
+  <div
+      id="a"
+      class="b"
+      attr1="c"
+      attr2="d"
+    >
+    Text
+  </div>
+</div>

Implementation

`,9))])}const D=h(r,[["render",y]]);export{B as __pageData,D as default}; diff --git a/assets/rules_index.md.zA_efqXq.js b/assets/rules_index.md.zA_efqXq.js new file mode 100644 index 00000000..5d3098e7 --- /dev/null +++ b/assets/rules_index.md.zA_efqXq.js @@ -0,0 +1,13 @@ +import{_ as e,c as l,a9 as a,o as i}from"./chunks/framework.D6W_pQcY.js";const g=JSON.parse('{"title":"All Rules","description":"","frontmatter":{"sidebarDepth":0},"headers":[],"relativePath":"rules/index.md","filePath":"rules/index.md","lastUpdated":1733171881000}'),s={name:"rules/index.md"};function n(d,t,o,r,h,p){return i(),l("div",null,t[0]||(t[0]=[a(`

All Rules

Base Rules (Enabling Correct ESLint Parsing)

Enable this plugin using with:

json
{
+  "extends": "plugin:lodash-template/base"
+}
Rule IDDescription
lodash-template/no-script-parsing-errordisallow parsing errors in template

Best Practices (Improve Development Experience)

Enforce all the rules in this category with:

json
{
+  "extends": "plugin:lodash-template/best-practices"
+}
Rule IDDescription
lodash-template/no-empty-template-tagdisallow empty micro-template tag. (ex. 🆖 <% %>)
lodash-template/no-invalid-template-interpolationdisallow other than expression in micro-template interpolation. (ex. 🆖 <%= if (test) { %>)
lodash-template/no-semi-in-template-interpolationdisallow the semicolon at the end of expression in micro template interpolation.(ex. 🆗 <%= text %> 🆖 <%= text; %>)🔧

Enforce all the rules in this category and all the rules in Best Practices categories with:

json
{
+  "extends": "plugin:lodash-template/recommended"
+}
Rule IDDescription
lodash-template/no-irregular-whitespacedisallow irregular whitespace outside the template tags.🔧
lodash-template/no-multi-spaces-in-scriptletdisallow multiple spaces in scriptlet. (ex. 🆖 <% if···(test)···{ %>)🔧
lodash-template/scriptlet-indentenforce consistent indentation to scriptlet in micro-template tag.🔧
lodash-template/template-tag-spacingenforce unified spacing in micro-template tag. (ex. 🆗 <%= prop %>, 🆖 <%=prop%>)🔧

Enforce all the rules in this category and all the rules in Best Practices/Recommended categories with:

json
{
+  "extends": "plugin:lodash-template/recommended-with-html"
+}
Rule IDDescription
lodash-template/attribute-name-casingenforce HTML attribute name casing. (ex. 🆗 <div foo-bar> 🆖 <div fooBar> <div FOO-BAR>)🔧
lodash-template/attribute-value-quoteenforce quotes style of HTML attributes. (ex. 🆗 <div class="abc"> 🆖 <div class='abc'> <div class=abc>)🔧
lodash-template/element-name-casingenforce HTML element name casing. (ex. 🆗 <xxx-element> 🆖 <xxxElement> <DIV>)🔧
lodash-template/html-closing-bracket-newlinerequire or disallow a line break before tag's closing brackets🔧
lodash-template/html-closing-bracket-spacingrequire or disallow a space before tag's closing brackets. (ex. 🆗 <input> <input·/> 🆖 <input·> <input/>)🔧
lodash-template/html-comment-content-newlinerequire or disallow a line break before and after HTML comment contents🔧
lodash-template/html-comment-spacingenforce unified spacing in HTML comment. (ex. 🆗 <!-- comment -->, 🆖 <!--comment-->)🔧
lodash-template/html-content-newlinerequire or disallow a line break before and after HTML contents🔧
lodash-template/html-indentenforce consistent HTML indentation.🔧
lodash-template/max-attributes-per-lineenforce the maximum number of HTML attributes per line🔧
lodash-template/no-duplicate-attributesdisallow duplication of HTML attributes. (ex. 🆖 <div foo foo>)
lodash-template/no-html-commentsdisallow HTML comments. (ex. 🆖 <!-- comment -->)
lodash-template/no-multi-spaces-in-html-tagdisallow multiple spaces in HTML tags. (ex. 🆖 <input···type="text">)🔧
lodash-template/no-space-attribute-equal-signdisallow spacing around equal signs in attribute. (ex. 🆗 <div class="item"> 🆖 <div class = "item">)🔧
lodash-template/no-warning-html-commentsdisallow specified warning terms in HTML comments. (ex. 🆖 <!-- TODO:task -->)

Uncategorized

No preset enables the rules in this category. Please enable each rule if you want.

For example:

json
{
+  "rules": {
+    "lodash-template/no-template-tag-in-start-tag": "error"
+  }
+}
Rule IDDescription
lodash-template/no-template-tag-in-start-tagdisallow template tag in start tag outside attribute values. (ex. 🆖 <input <%= 'disabled' %> >)
lodash-template/prefer-escape-template-interpolationsprefer escape micro-template interpolations. (ex. 🆗 <%- ... %>, 🆖 <%= ... %>)
`,22)]))}const m=e(s,[["render",n]]);export{g as __pageData,m as default}; diff --git a/assets/rules_index.md.zA_efqXq.lean.js b/assets/rules_index.md.zA_efqXq.lean.js new file mode 100644 index 00000000..5d3098e7 --- /dev/null +++ b/assets/rules_index.md.zA_efqXq.lean.js @@ -0,0 +1,13 @@ +import{_ as e,c as l,a9 as a,o as i}from"./chunks/framework.D6W_pQcY.js";const g=JSON.parse('{"title":"All Rules","description":"","frontmatter":{"sidebarDepth":0},"headers":[],"relativePath":"rules/index.md","filePath":"rules/index.md","lastUpdated":1733171881000}'),s={name:"rules/index.md"};function n(d,t,o,r,h,p){return i(),l("div",null,t[0]||(t[0]=[a(`

All Rules

Base Rules (Enabling Correct ESLint Parsing)

Enable this plugin using with:

json
{
+  "extends": "plugin:lodash-template/base"
+}
Rule IDDescription
lodash-template/no-script-parsing-errordisallow parsing errors in template

Best Practices (Improve Development Experience)

Enforce all the rules in this category with:

json
{
+  "extends": "plugin:lodash-template/best-practices"
+}
Rule IDDescription
lodash-template/no-empty-template-tagdisallow empty micro-template tag. (ex. 🆖 <% %>)
lodash-template/no-invalid-template-interpolationdisallow other than expression in micro-template interpolation. (ex. 🆖 <%= if (test) { %>)
lodash-template/no-semi-in-template-interpolationdisallow the semicolon at the end of expression in micro template interpolation.(ex. 🆗 <%= text %> 🆖 <%= text; %>)🔧

Enforce all the rules in this category and all the rules in Best Practices categories with:

json
{
+  "extends": "plugin:lodash-template/recommended"
+}
Rule IDDescription
lodash-template/no-irregular-whitespacedisallow irregular whitespace outside the template tags.🔧
lodash-template/no-multi-spaces-in-scriptletdisallow multiple spaces in scriptlet. (ex. 🆖 <% if···(test)···{ %>)🔧
lodash-template/scriptlet-indentenforce consistent indentation to scriptlet in micro-template tag.🔧
lodash-template/template-tag-spacingenforce unified spacing in micro-template tag. (ex. 🆗 <%= prop %>, 🆖 <%=prop%>)🔧

Enforce all the rules in this category and all the rules in Best Practices/Recommended categories with:

json
{
+  "extends": "plugin:lodash-template/recommended-with-html"
+}
Rule IDDescription
lodash-template/attribute-name-casingenforce HTML attribute name casing. (ex. 🆗 <div foo-bar> 🆖 <div fooBar> <div FOO-BAR>)🔧
lodash-template/attribute-value-quoteenforce quotes style of HTML attributes. (ex. 🆗 <div class="abc"> 🆖 <div class='abc'> <div class=abc>)🔧
lodash-template/element-name-casingenforce HTML element name casing. (ex. 🆗 <xxx-element> 🆖 <xxxElement> <DIV>)🔧
lodash-template/html-closing-bracket-newlinerequire or disallow a line break before tag's closing brackets🔧
lodash-template/html-closing-bracket-spacingrequire or disallow a space before tag's closing brackets. (ex. 🆗 <input> <input·/> 🆖 <input·> <input/>)🔧
lodash-template/html-comment-content-newlinerequire or disallow a line break before and after HTML comment contents🔧
lodash-template/html-comment-spacingenforce unified spacing in HTML comment. (ex. 🆗 <!-- comment -->, 🆖 <!--comment-->)🔧
lodash-template/html-content-newlinerequire or disallow a line break before and after HTML contents🔧
lodash-template/html-indentenforce consistent HTML indentation.🔧
lodash-template/max-attributes-per-lineenforce the maximum number of HTML attributes per line🔧
lodash-template/no-duplicate-attributesdisallow duplication of HTML attributes. (ex. 🆖 <div foo foo>)
lodash-template/no-html-commentsdisallow HTML comments. (ex. 🆖 <!-- comment -->)
lodash-template/no-multi-spaces-in-html-tagdisallow multiple spaces in HTML tags. (ex. 🆖 <input···type="text">)🔧
lodash-template/no-space-attribute-equal-signdisallow spacing around equal signs in attribute. (ex. 🆗 <div class="item"> 🆖 <div class = "item">)🔧
lodash-template/no-warning-html-commentsdisallow specified warning terms in HTML comments. (ex. 🆖 <!-- TODO:task -->)

Uncategorized

No preset enables the rules in this category. Please enable each rule if you want.

For example:

json
{
+  "rules": {
+    "lodash-template/no-template-tag-in-start-tag": "error"
+  }
+}
Rule IDDescription
lodash-template/no-template-tag-in-start-tagdisallow template tag in start tag outside attribute values. (ex. 🆖 <input <%= 'disabled' %> >)
lodash-template/prefer-escape-template-interpolationsprefer escape micro-template interpolations. (ex. 🆗 <%- ... %>, 🆖 <%= ... %>)
`,22)]))}const m=e(s,[["render",n]]);export{g as __pageData,m as default}; diff --git a/assets/rules_max-attributes-per-line.md.Ztqx6w1h.js b/assets/rules_max-attributes-per-line.md.Ztqx6w1h.js new file mode 100644 index 00000000..57849e28 --- /dev/null +++ b/assets/rules_max-attributes-per-line.md.Ztqx6w1h.js @@ -0,0 +1,76 @@ +import{_ as p,c as h,a9 as l,j as i,G as e,w as t,a,B as k,o as r}from"./chunks/framework.D6W_pQcY.js";const T=JSON.parse('{"title":"lodash-template/max-attributes-per-line","description":"enforce the maximum number of HTML attributes per line","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/max-attributes-per-line","description":"enforce the maximum number of HTML attributes per line"},"headers":[],"relativePath":"rules/max-attributes-per-line.md","filePath":"rules/max-attributes-per-line.md","lastUpdated":1733171881000}'),o={name:"rules/max-attributes-per-line.md"},d={class:"language-html vp-adaptive-theme"},E={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},u={class:"line"},y={class:"line"},m={class:"language-html vp-adaptive-theme"},F={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},b={class:"line"},f={class:"language-html vp-adaptive-theme"},C={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},B={class:"line"},q={class:"language-html vp-adaptive-theme"},v={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},w={class:"line"};function x(D,s,A,c,O,L){const n=k("v-menu");return r(),h("div",null,[s[53]||(s[53]=l('

lodash-template/max-attributes-per-line

enforce the maximum number of HTML attributes per line

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

Limits the maximum number of attributes/properties per line to improve readability.

This rule aims to enforce a number of attributes per line in HTML. It checks all the elements and verifies that the number of attributes per line does not exceed the defined maximum. An attribute is considered to be in a new line when there is a line break between two attributes.

',6)),i("div",d,[s[24]||(s[24]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[25]||(s[25]=i("span",{class:"lang"},"html",-1)),i("pre",E,[i("code",null,[s[16]||(s[16]=l(`<% /* eslint "lodash-template/max-attributes-per-line": "error" */ %> +<!-- ✓ GOOD --> +<input foo="1"> + +<input + foo="1" + bar="2" +> + +<input + foo="1" + bar="2" + baz="3" +> + +<!-- ✗ BAD --> +`,32)),i("span",g,[s[2]||(s[2]=l('<input foo="1" ',6)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[0]||(s[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a('Attribute "bar" should be on a new line. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/max-attributes-per-line.html"},"lodash-template/max-attributes-per-line"),a(")")])])],-1)])),default:t(()=>[s[1]||(s[1]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"bar"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"2"')])],-1))]),_:1}),s[3]||(s[3]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))]),s[17]||(s[17]=a(` +`)),s[18]||(s[18]=i("span",{class:"line"},null,-1)),s[19]||(s[19]=a(` +`)),s[20]||(s[20]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<"),i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"input")],-1)),s[21]||(s[21]=a(` +`)),i("span",u,[s[6]||(s[6]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," foo",-1)),s[7]||(s[7]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),s[8]||(s[8]=i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"1"',-1)),s[9]||(s[9]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ",-1)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[4]||(s[4]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a('Attribute "bar" should be on a new line. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/max-attributes-per-line.html"},"lodash-template/max-attributes-per-line"),a(")")])])],-1)])),default:t(()=>[s[5]||(s[5]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"bar"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"2"')])],-1))]),_:1})]),s[22]||(s[22]=l(` +> + +<input +`,7)),i("span",y,[s[12]||(s[12]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," foo",-1)),s[13]||(s[13]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),s[14]||(s[14]=i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"1"',-1)),s[15]||(s[15]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ",-1)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[10]||(s[10]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a('Attribute "bar" should be on a new line. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/max-attributes-per-line.html"},"lodash-template/max-attributes-per-line"),a(")")])])],-1)])),default:t(()=>[s[11]||(s[11]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"bar"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"2"')])],-1))]),_:1})]),s[23]||(s[23]=l(` + baz="3" +>`,4))])])]),s[54]||(s[54]=l(`

Options

json
{
+  "lodash-template/max-attributes-per-line": ["error", {
+    "singleline": 1,
+    "multiline": {
+      "max": 1,
+      "allowFirstLine": false
+    }
+  }]
+}

allowFirstLine

For multi-line declarations, defines if allows attributes to be put in the first line. (Default false)

`,4)),i("div",m,[s[33]||(s[33]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[34]||(s[34]=i("span",{class:"lang"},"html",-1)),i("pre",F,[i("code",null,[s[31]||(s[31]=l(`<% /* eslint + lodash-template/max-attributes-per-line: ["error", { + "multiline": { + "allowFirstLine": false + } + }] +*/ %> + +<!-- ✓ GOOD --> +<input + foo="1" + bar="2" +> + +<!-- ✗ BAD --> +`,30)),i("span",b,[s[28]||(s[28]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[29]||(s[29]=i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"input",-1)),s[30]||(s[30]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ",-1)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[26]||(s[26]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a('Attribute "foo" should be on a new line. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/max-attributes-per-line.html"},"lodash-template/max-attributes-per-line"),a(")")])])],-1)])),default:t(()=>[s[27]||(s[27]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"foo"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"1"')])],-1))]),_:1})]),s[32]||(s[32]=l(` + bar="2" +>`,4))])])]),s[55]||(s[55]=i("h3",{id:"singleline",tabindex:"-1"},[i("code",null,"singleline"),a(),i("a",{class:"header-anchor",href:"#singleline","aria-label":'Permalink to "`singleline`"'},"​")],-1)),s[56]||(s[56]=i("p",null,"Number of maximum attributes per line when the opening tag is in a single line. (Default is 1)",-1)),i("div",f,[s[40]||(s[40]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[41]||(s[41]=i("span",{class:"lang"},"html",-1)),i("pre",C,[i("code",null,[s[39]||(s[39]=l(`<% /* eslint + lodash-template/max-attributes-per-line: ["error", { + "singleline": 1 + }] +*/ %> + +<!-- ✓ GOOD --> +<input foo="1"> + +<!-- ✗ BAD --> +`,20)),i("span",B,[s[37]||(s[37]=l('<input foo="1" ',6)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[35]||(s[35]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a('Attribute "bar" should be on a new line. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/max-attributes-per-line.html"},"lodash-template/max-attributes-per-line"),a(")")])])],-1)])),default:t(()=>[s[36]||(s[36]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"bar"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"2"')])],-1))]),_:1}),s[38]||(s[38]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))])])])]),s[57]||(s[57]=i("h3",{id:"multiline",tabindex:"-1"},[i("code",null,"multiline"),a(),i("a",{class:"header-anchor",href:"#multiline","aria-label":'Permalink to "`multiline`"'},"​")],-1)),s[58]||(s[58]=i("p",null,"Number of maximum attributes per line when a tag is in multiple lines. (Default is 1)",-1)),i("div",q,[s[51]||(s[51]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[52]||(s[52]=i("span",{class:"lang"},"html",-1)),i("pre",v,[i("code",null,[s[48]||(s[48]=l(`<% /* eslint + lodash-template/max-attributes-per-line: ["error", { + "multiline": 1 + }] +*/ %> + +<!-- ✓ GOOD --> +<input + foo="1" + bar="2" +> + +<!-- ✗ BAD --> +<input +`,28)),i("span",w,[s[44]||(s[44]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," foo",-1)),s[45]||(s[45]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),s[46]||(s[46]=i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"1"',-1)),s[47]||(s[47]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ",-1)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[42]||(s[42]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a('Attribute "bar" should be on a new line. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/max-attributes-per-line.html"},"lodash-template/max-attributes-per-line"),a(")")])])],-1)])),default:t(()=>[s[43]||(s[43]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"bar"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"2"')])],-1))]),_:1})]),s[49]||(s[49]=a(` +`)),s[50]||(s[50]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1))])])]),s[59]||(s[59]=i("h2",{id:"implementation",tabindex:"-1"},[a("Implementation "),i("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),s[60]||(s[60]=i("ul",null,[i("li",null,[i("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/max-attributes-per-line.js",target:"_blank",rel:"noreferrer"},"Rule source")]),i("li",null,[i("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/max-attributes-per-line.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const N=p(o,[["render",x]]);export{T as __pageData,N as default}; diff --git a/assets/rules_max-attributes-per-line.md.Ztqx6w1h.lean.js b/assets/rules_max-attributes-per-line.md.Ztqx6w1h.lean.js new file mode 100644 index 00000000..57849e28 --- /dev/null +++ b/assets/rules_max-attributes-per-line.md.Ztqx6w1h.lean.js @@ -0,0 +1,76 @@ +import{_ as p,c as h,a9 as l,j as i,G as e,w as t,a,B as k,o as r}from"./chunks/framework.D6W_pQcY.js";const T=JSON.parse('{"title":"lodash-template/max-attributes-per-line","description":"enforce the maximum number of HTML attributes per line","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/max-attributes-per-line","description":"enforce the maximum number of HTML attributes per line"},"headers":[],"relativePath":"rules/max-attributes-per-line.md","filePath":"rules/max-attributes-per-line.md","lastUpdated":1733171881000}'),o={name:"rules/max-attributes-per-line.md"},d={class:"language-html vp-adaptive-theme"},E={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},u={class:"line"},y={class:"line"},m={class:"language-html vp-adaptive-theme"},F={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},b={class:"line"},f={class:"language-html vp-adaptive-theme"},C={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},B={class:"line"},q={class:"language-html vp-adaptive-theme"},v={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},w={class:"line"};function x(D,s,A,c,O,L){const n=k("v-menu");return r(),h("div",null,[s[53]||(s[53]=l('

lodash-template/max-attributes-per-line

enforce the maximum number of HTML attributes per line

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

Limits the maximum number of attributes/properties per line to improve readability.

This rule aims to enforce a number of attributes per line in HTML. It checks all the elements and verifies that the number of attributes per line does not exceed the defined maximum. An attribute is considered to be in a new line when there is a line break between two attributes.

',6)),i("div",d,[s[24]||(s[24]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[25]||(s[25]=i("span",{class:"lang"},"html",-1)),i("pre",E,[i("code",null,[s[16]||(s[16]=l(`<% /* eslint "lodash-template/max-attributes-per-line": "error" */ %> +<!-- ✓ GOOD --> +<input foo="1"> + +<input + foo="1" + bar="2" +> + +<input + foo="1" + bar="2" + baz="3" +> + +<!-- ✗ BAD --> +`,32)),i("span",g,[s[2]||(s[2]=l('<input foo="1" ',6)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[0]||(s[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a('Attribute "bar" should be on a new line. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/max-attributes-per-line.html"},"lodash-template/max-attributes-per-line"),a(")")])])],-1)])),default:t(()=>[s[1]||(s[1]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"bar"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"2"')])],-1))]),_:1}),s[3]||(s[3]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))]),s[17]||(s[17]=a(` +`)),s[18]||(s[18]=i("span",{class:"line"},null,-1)),s[19]||(s[19]=a(` +`)),s[20]||(s[20]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<"),i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"input")],-1)),s[21]||(s[21]=a(` +`)),i("span",u,[s[6]||(s[6]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," foo",-1)),s[7]||(s[7]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),s[8]||(s[8]=i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"1"',-1)),s[9]||(s[9]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ",-1)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[4]||(s[4]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a('Attribute "bar" should be on a new line. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/max-attributes-per-line.html"},"lodash-template/max-attributes-per-line"),a(")")])])],-1)])),default:t(()=>[s[5]||(s[5]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"bar"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"2"')])],-1))]),_:1})]),s[22]||(s[22]=l(` +> + +<input +`,7)),i("span",y,[s[12]||(s[12]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," foo",-1)),s[13]||(s[13]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),s[14]||(s[14]=i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"1"',-1)),s[15]||(s[15]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ",-1)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[10]||(s[10]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a('Attribute "bar" should be on a new line. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/max-attributes-per-line.html"},"lodash-template/max-attributes-per-line"),a(")")])])],-1)])),default:t(()=>[s[11]||(s[11]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"bar"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"2"')])],-1))]),_:1})]),s[23]||(s[23]=l(` + baz="3" +>`,4))])])]),s[54]||(s[54]=l(`

Options

json
{
+  "lodash-template/max-attributes-per-line": ["error", {
+    "singleline": 1,
+    "multiline": {
+      "max": 1,
+      "allowFirstLine": false
+    }
+  }]
+}

allowFirstLine

For multi-line declarations, defines if allows attributes to be put in the first line. (Default false)

`,4)),i("div",m,[s[33]||(s[33]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[34]||(s[34]=i("span",{class:"lang"},"html",-1)),i("pre",F,[i("code",null,[s[31]||(s[31]=l(`<% /* eslint + lodash-template/max-attributes-per-line: ["error", { + "multiline": { + "allowFirstLine": false + } + }] +*/ %> + +<!-- ✓ GOOD --> +<input + foo="1" + bar="2" +> + +<!-- ✗ BAD --> +`,30)),i("span",b,[s[28]||(s[28]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[29]||(s[29]=i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"input",-1)),s[30]||(s[30]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ",-1)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[26]||(s[26]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a('Attribute "foo" should be on a new line. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/max-attributes-per-line.html"},"lodash-template/max-attributes-per-line"),a(")")])])],-1)])),default:t(()=>[s[27]||(s[27]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"foo"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"1"')])],-1))]),_:1})]),s[32]||(s[32]=l(` + bar="2" +>`,4))])])]),s[55]||(s[55]=i("h3",{id:"singleline",tabindex:"-1"},[i("code",null,"singleline"),a(),i("a",{class:"header-anchor",href:"#singleline","aria-label":'Permalink to "`singleline`"'},"​")],-1)),s[56]||(s[56]=i("p",null,"Number of maximum attributes per line when the opening tag is in a single line. (Default is 1)",-1)),i("div",f,[s[40]||(s[40]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[41]||(s[41]=i("span",{class:"lang"},"html",-1)),i("pre",C,[i("code",null,[s[39]||(s[39]=l(`<% /* eslint + lodash-template/max-attributes-per-line: ["error", { + "singleline": 1 + }] +*/ %> + +<!-- ✓ GOOD --> +<input foo="1"> + +<!-- ✗ BAD --> +`,20)),i("span",B,[s[37]||(s[37]=l('<input foo="1" ',6)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[35]||(s[35]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a('Attribute "bar" should be on a new line. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/max-attributes-per-line.html"},"lodash-template/max-attributes-per-line"),a(")")])])],-1)])),default:t(()=>[s[36]||(s[36]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"bar"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"2"')])],-1))]),_:1}),s[38]||(s[38]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))])])])]),s[57]||(s[57]=i("h3",{id:"multiline",tabindex:"-1"},[i("code",null,"multiline"),a(),i("a",{class:"header-anchor",href:"#multiline","aria-label":'Permalink to "`multiline`"'},"​")],-1)),s[58]||(s[58]=i("p",null,"Number of maximum attributes per line when a tag is in multiple lines. (Default is 1)",-1)),i("div",q,[s[51]||(s[51]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[52]||(s[52]=i("span",{class:"lang"},"html",-1)),i("pre",v,[i("code",null,[s[48]||(s[48]=l(`<% /* eslint + lodash-template/max-attributes-per-line: ["error", { + "multiline": 1 + }] +*/ %> + +<!-- ✓ GOOD --> +<input + foo="1" + bar="2" +> + +<!-- ✗ BAD --> +<input +`,28)),i("span",w,[s[44]||(s[44]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," foo",-1)),s[45]||(s[45]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),s[46]||(s[46]=i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"1"',-1)),s[47]||(s[47]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ",-1)),e(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[42]||(s[42]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a('Attribute "bar" should be on a new line. ('),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/max-attributes-per-line.html"},"lodash-template/max-attributes-per-line"),a(")")])])],-1)])),default:t(()=>[s[43]||(s[43]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"bar"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"2"')])],-1))]),_:1})]),s[49]||(s[49]=a(` +`)),s[50]||(s[50]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1))])])]),s[59]||(s[59]=i("h2",{id:"implementation",tabindex:"-1"},[a("Implementation "),i("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),s[60]||(s[60]=i("ul",null,[i("li",null,[i("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/max-attributes-per-line.js",target:"_blank",rel:"noreferrer"},"Rule source")]),i("li",null,[i("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/max-attributes-per-line.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const N=p(o,[["render",x]]);export{T as __pageData,N as default}; diff --git a/assets/rules_no-duplicate-attributes.md.B5t6CrQv.js b/assets/rules_no-duplicate-attributes.md.B5t6CrQv.js new file mode 100644 index 00000000..f0a4ff6a --- /dev/null +++ b/assets/rules_no-duplicate-attributes.md.B5t6CrQv.js @@ -0,0 +1,11 @@ +import{_ as n,c as p,a9 as e,j as s,G as o,w as a,a as i,B as r,o as h}from"./chunks/framework.D6W_pQcY.js";const w=JSON.parse('{"title":"lodash-template/no-duplicate-attributes","description":"disallow duplication of HTML attributes. (ex. :ng: `
`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-duplicate-attributes","description":"disallow duplication of HTML attributes. (ex. :ng: `
`)"},"headers":[],"relativePath":"rules/no-duplicate-attributes.md","filePath":"rules/no-duplicate-attributes.md","lastUpdated":1733171881000}'),d={name:"rules/no-duplicate-attributes.md"},u={class:"language-html vp-adaptive-theme"},k={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},m={class:"line"};function b(c,t,E,f,y,v){const l=r("v-menu");return h(),p("div",null,[t[12]||(t[12]=e('

lodash-template/no-duplicate-attributes

disallow duplication of HTML attributes. (ex. 🆖 <div foo foo>)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".

Rule Details

This rule reports duplicate attributes.

When duplicate arguments exist, only the last one is valid. It's possibly mistakes.

',6)),s("div",u,[t[10]||(t[10]=s("button",{title:"Copy Code",class:"copy"},null,-1)),t[11]||(t[11]=s("span",{class:"lang"},"html",-1)),s("pre",k,[s("code",null,[t[6]||(t[6]=e(`<% /* eslint "lodash-template/no-duplicate-attributes": "error" */ %> +<!-- ✓ GOOD --> +<div + foo="abc" +></div> + +<!-- ✗ BAD --> +<div +`,16)),s("span",g,[t[2]||(t[2]=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ",-1)),o(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>t[0]||(t[0]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[i('Duplicate attribute "foo". ('),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-duplicate-attributes.html"},"lodash-template/no-duplicate-attributes"),i(")")])])],-1)])),default:a(()=>[t[1]||(t[1]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"foo"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"abc"')])],-1))]),_:1})]),t[7]||(t[7]=i(` +`)),s("span",m,[t[5]||(t[5]=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ",-1)),o(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>t[3]||(t[3]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[i('Duplicate attribute "foo". ('),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-duplicate-attributes.html"},"lodash-template/no-duplicate-attributes"),i(")")])])],-1)])),default:a(()=>[t[4]||(t[4]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"foo"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"def"')])],-1))]),_:1})]),t[8]||(t[8]=i(` +`)),t[9]||(t[9]=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1))])])]),t[13]||(t[13]=s("h2",{id:"implementation",tabindex:"-1"},[i("Implementation "),s("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),t[14]||(t[14]=s("ul",null,[s("li",null,[s("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/no-duplicate-attributes.js",target:"_blank",rel:"noreferrer"},"Rule source")]),s("li",null,[s("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/no-duplicate-attributes.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const D=n(d,[["render",b]]);export{w as __pageData,D as default}; diff --git a/assets/rules_no-duplicate-attributes.md.B5t6CrQv.lean.js b/assets/rules_no-duplicate-attributes.md.B5t6CrQv.lean.js new file mode 100644 index 00000000..f0a4ff6a --- /dev/null +++ b/assets/rules_no-duplicate-attributes.md.B5t6CrQv.lean.js @@ -0,0 +1,11 @@ +import{_ as n,c as p,a9 as e,j as s,G as o,w as a,a as i,B as r,o as h}from"./chunks/framework.D6W_pQcY.js";const w=JSON.parse('{"title":"lodash-template/no-duplicate-attributes","description":"disallow duplication of HTML attributes. (ex. :ng: `
`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-duplicate-attributes","description":"disallow duplication of HTML attributes. (ex. :ng: `
`)"},"headers":[],"relativePath":"rules/no-duplicate-attributes.md","filePath":"rules/no-duplicate-attributes.md","lastUpdated":1733171881000}'),d={name:"rules/no-duplicate-attributes.md"},u={class:"language-html vp-adaptive-theme"},k={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},m={class:"line"};function b(c,t,E,f,y,v){const l=r("v-menu");return h(),p("div",null,[t[12]||(t[12]=e('

lodash-template/no-duplicate-attributes

disallow duplication of HTML attributes. (ex. 🆖 <div foo foo>)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".

Rule Details

This rule reports duplicate attributes.

When duplicate arguments exist, only the last one is valid. It's possibly mistakes.

',6)),s("div",u,[t[10]||(t[10]=s("button",{title:"Copy Code",class:"copy"},null,-1)),t[11]||(t[11]=s("span",{class:"lang"},"html",-1)),s("pre",k,[s("code",null,[t[6]||(t[6]=e(`<% /* eslint "lodash-template/no-duplicate-attributes": "error" */ %> +<!-- ✓ GOOD --> +<div + foo="abc" +></div> + +<!-- ✗ BAD --> +<div +`,16)),s("span",g,[t[2]||(t[2]=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ",-1)),o(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>t[0]||(t[0]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[i('Duplicate attribute "foo". ('),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-duplicate-attributes.html"},"lodash-template/no-duplicate-attributes"),i(")")])])],-1)])),default:a(()=>[t[1]||(t[1]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"foo"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"abc"')])],-1))]),_:1})]),t[7]||(t[7]=i(` +`)),s("span",m,[t[5]||(t[5]=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ",-1)),o(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>t[3]||(t[3]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[i('Duplicate attribute "foo". ('),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-duplicate-attributes.html"},"lodash-template/no-duplicate-attributes"),i(")")])])],-1)])),default:a(()=>[t[4]||(t[4]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"foo"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"def"')])],-1))]),_:1})]),t[8]||(t[8]=i(` +`)),t[9]||(t[9]=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1))])])]),t[13]||(t[13]=s("h2",{id:"implementation",tabindex:"-1"},[i("Implementation "),s("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),t[14]||(t[14]=s("ul",null,[s("li",null,[s("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/no-duplicate-attributes.js",target:"_blank",rel:"noreferrer"},"Rule source")]),s("li",null,[s("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/no-duplicate-attributes.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const D=n(d,[["render",b]]);export{w as __pageData,D as default}; diff --git a/assets/rules_no-empty-template-tag.md.is_4AX7P.js b/assets/rules_no-empty-template-tag.md.is_4AX7P.js new file mode 100644 index 00000000..65073982 --- /dev/null +++ b/assets/rules_no-empty-template-tag.md.is_4AX7P.js @@ -0,0 +1,8 @@ +import{_ as o,c as n,a9 as e,j as s,G as p,w as l,a as i,B as r,o as h}from"./chunks/framework.D6W_pQcY.js";const q=JSON.parse('{"title":"lodash-template/no-empty-template-tag","description":"disallow empty micro-template tag. (ex. :ng: `<% %>`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-empty-template-tag","description":"disallow empty micro-template tag. (ex. :ng: `<% %>`)"},"headers":[],"relativePath":"rules/no-empty-template-tag.md","filePath":"rules/no-empty-template-tag.md","lastUpdated":1733171881000}'),d={name:"rules/no-empty-template-tag.md"},m={class:"language-html vp-adaptive-theme"},k={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},u={class:"line"};function E(y,t,f,b,v,D){const a=r("v-menu");return h(),n("div",null,[t[18]||(t[18]=e('

lodash-template/no-empty-template-tag

disallow empty micro-template tag. (ex. 🆖 <% %>)

  • ⚙️ This rule is included in all of "plugin:lodash-template/best-practices", "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".

Rule Details

This rule reports empty micro-template interpolate/evaluate.

',5)),s("div",m,[t[16]||(t[16]=s("button",{title:"Copy Code",class:"copy"},null,-1)),t[17]||(t[17]=s("span",{class:"lang"},"html",-1)),s("pre",k,[s("code",null,[t[13]||(t[13]=e(`<% /* eslint "lodash-template/no-empty-template-tag": "error" */ %> +<!-- ✓ GOOD --> +<div><%= text %></div> + +<!-- ✗ BAD --> +`,10)),s("span",g,[t[2]||(t[2]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),t[3]||(t[3]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),t[4]||(t[4]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),p(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[0]||(t[0]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[i("Empty micro-template tag. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-empty-template-tag.html"},"lodash-template/no-empty-template-tag"),i(")")])])],-1)])),default:l(()=>[t[1]||(t[1]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"% %>")])],-1))]),_:1}),t[5]||(t[5]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))]),t[14]||(t[14]=i(` +`)),s("span",u,[t[10]||(t[10]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),t[11]||(t[11]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),t[12]||(t[12]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),p(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[8]||(t[8]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[i("Empty micro-template tag. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-empty-template-tag.html"},"lodash-template/no-empty-template-tag"),i(")")])])],-1)])),default:l(()=>[t[9]||(t[9]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%")])],-1))]),_:1})]),t[15]||(t[15]=e(` +%></div>`,2))])])]),t[19]||(t[19]=s("h2",{id:"implementation",tabindex:"-1"},[i("Implementation "),s("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),t[20]||(t[20]=s("ul",null,[s("li",null,[s("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/no-empty-template-tag.js",target:"_blank",rel:"noreferrer"},"Rule source")]),s("li",null,[s("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/no-empty-template-tag.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const w=o(d,[["render",E]]);export{q as __pageData,w as default}; diff --git a/assets/rules_no-empty-template-tag.md.is_4AX7P.lean.js b/assets/rules_no-empty-template-tag.md.is_4AX7P.lean.js new file mode 100644 index 00000000..65073982 --- /dev/null +++ b/assets/rules_no-empty-template-tag.md.is_4AX7P.lean.js @@ -0,0 +1,8 @@ +import{_ as o,c as n,a9 as e,j as s,G as p,w as l,a as i,B as r,o as h}from"./chunks/framework.D6W_pQcY.js";const q=JSON.parse('{"title":"lodash-template/no-empty-template-tag","description":"disallow empty micro-template tag. (ex. :ng: `<% %>`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-empty-template-tag","description":"disallow empty micro-template tag. (ex. :ng: `<% %>`)"},"headers":[],"relativePath":"rules/no-empty-template-tag.md","filePath":"rules/no-empty-template-tag.md","lastUpdated":1733171881000}'),d={name:"rules/no-empty-template-tag.md"},m={class:"language-html vp-adaptive-theme"},k={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},u={class:"line"};function E(y,t,f,b,v,D){const a=r("v-menu");return h(),n("div",null,[t[18]||(t[18]=e('

lodash-template/no-empty-template-tag

disallow empty micro-template tag. (ex. 🆖 <% %>)

  • ⚙️ This rule is included in all of "plugin:lodash-template/best-practices", "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".

Rule Details

This rule reports empty micro-template interpolate/evaluate.

',5)),s("div",m,[t[16]||(t[16]=s("button",{title:"Copy Code",class:"copy"},null,-1)),t[17]||(t[17]=s("span",{class:"lang"},"html",-1)),s("pre",k,[s("code",null,[t[13]||(t[13]=e(`<% /* eslint "lodash-template/no-empty-template-tag": "error" */ %> +<!-- ✓ GOOD --> +<div><%= text %></div> + +<!-- ✗ BAD --> +`,10)),s("span",g,[t[2]||(t[2]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),t[3]||(t[3]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),t[4]||(t[4]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),p(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[0]||(t[0]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[i("Empty micro-template tag. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-empty-template-tag.html"},"lodash-template/no-empty-template-tag"),i(")")])])],-1)])),default:l(()=>[t[1]||(t[1]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"% %>")])],-1))]),_:1}),t[5]||(t[5]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))]),t[14]||(t[14]=i(` +`)),s("span",u,[t[10]||(t[10]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),t[11]||(t[11]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),t[12]||(t[12]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),p(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[8]||(t[8]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[i("Empty micro-template tag. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-empty-template-tag.html"},"lodash-template/no-empty-template-tag"),i(")")])])],-1)])),default:l(()=>[t[9]||(t[9]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%")])],-1))]),_:1})]),t[15]||(t[15]=e(` +%></div>`,2))])])]),t[19]||(t[19]=s("h2",{id:"implementation",tabindex:"-1"},[i("Implementation "),s("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),t[20]||(t[20]=s("ul",null,[s("li",null,[s("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/no-empty-template-tag.js",target:"_blank",rel:"noreferrer"},"Rule source")]),s("li",null,[s("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/no-empty-template-tag.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const w=o(d,[["render",E]]);export{q as __pageData,w as default}; diff --git a/assets/rules_no-html-comments.md.BYNJjbjz.js b/assets/rules_no-html-comments.md.BYNJjbjz.js new file mode 100644 index 00000000..d1e84b32 --- /dev/null +++ b/assets/rules_no-html-comments.md.BYNJjbjz.js @@ -0,0 +1,4 @@ +import{_ as n,c as i,a9 as l,j as t,G as m,w as o,a as s,B as r,o as h}from"./chunks/framework.D6W_pQcY.js";const w=JSON.parse('{"title":"lodash-template/no-html-comments","description":"disallow HTML comments. (ex. :ng: ``)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-html-comments","description":"disallow HTML comments. (ex. :ng: ``)"},"headers":[],"relativePath":"rules/no-html-comments.md","filePath":"rules/no-html-comments.md","lastUpdated":1733171881000}'),p={name:"rules/no-html-comments.md"},d={class:"language-html vp-adaptive-theme"},u={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},c={class:"line"};function k(g,e,b,f,v,q){const a=r("v-menu");return h(),i("div",null,[e[5]||(e[5]=l('

lodash-template/no-html-comments

disallow HTML comments. (ex. 🆖 <!-- comment -->)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".

Rule Details

This rule reports HTML comments.

',5)),t("div",d,[e[3]||(e[3]=t("button",{title:"Copy Code",class:"copy"},null,-1)),e[4]||(e[4]=t("span",{class:"lang"},"html",-1)),t("pre",u,[t("code",null,[e[2]||(e[2]=l(`<% /* eslint "lodash-template/no-html-comments": "error" */ %> +<% /* ✓ GOOD */ %> + +`,6)),t("span",c,[m(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:o(({})=>e[0]||(e[0]=[t("span",{class:"twoslash-popup-container vp-copy-ignore"},[t("div",{class:"twoslash-popup-error vp-doc"},[t("p",null,[s("HTML comment are forbidden. ("),t("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-html-comments.html"},"lodash-template/no-html-comments"),s(")")])])],-1)])),default:o(()=>[e[1]||(e[1]=t("span",null,[t("span",null,[t("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"")])],-1))]),_:1})])])])]),e[6]||(e[6]=t("h2",{id:"implementation",tabindex:"-1"},[s("Implementation "),t("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),e[7]||(e[7]=t("ul",null,[t("li",null,[t("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/no-html-comments.js",target:"_blank",rel:"noreferrer"},"Rule source")]),t("li",null,[t("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/no-html-comments.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const x=n(p,[["render",k]]);export{w as __pageData,x as default}; diff --git a/assets/rules_no-html-comments.md.BYNJjbjz.lean.js b/assets/rules_no-html-comments.md.BYNJjbjz.lean.js new file mode 100644 index 00000000..d1e84b32 --- /dev/null +++ b/assets/rules_no-html-comments.md.BYNJjbjz.lean.js @@ -0,0 +1,4 @@ +import{_ as n,c as i,a9 as l,j as t,G as m,w as o,a as s,B as r,o as h}from"./chunks/framework.D6W_pQcY.js";const w=JSON.parse('{"title":"lodash-template/no-html-comments","description":"disallow HTML comments. (ex. :ng: ``)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-html-comments","description":"disallow HTML comments. (ex. :ng: ``)"},"headers":[],"relativePath":"rules/no-html-comments.md","filePath":"rules/no-html-comments.md","lastUpdated":1733171881000}'),p={name:"rules/no-html-comments.md"},d={class:"language-html vp-adaptive-theme"},u={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},c={class:"line"};function k(g,e,b,f,v,q){const a=r("v-menu");return h(),i("div",null,[e[5]||(e[5]=l('

lodash-template/no-html-comments

disallow HTML comments. (ex. 🆖 <!-- comment -->)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".

Rule Details

This rule reports HTML comments.

',5)),t("div",d,[e[3]||(e[3]=t("button",{title:"Copy Code",class:"copy"},null,-1)),e[4]||(e[4]=t("span",{class:"lang"},"html",-1)),t("pre",u,[t("code",null,[e[2]||(e[2]=l(`<% /* eslint "lodash-template/no-html-comments": "error" */ %> +<% /* ✓ GOOD */ %> + +`,6)),t("span",c,[m(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:o(({})=>e[0]||(e[0]=[t("span",{class:"twoslash-popup-container vp-copy-ignore"},[t("div",{class:"twoslash-popup-error vp-doc"},[t("p",null,[s("HTML comment are forbidden. ("),t("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-html-comments.html"},"lodash-template/no-html-comments"),s(")")])])],-1)])),default:o(()=>[e[1]||(e[1]=t("span",null,[t("span",null,[t("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"")])],-1))]),_:1})])])])]),e[6]||(e[6]=t("h2",{id:"implementation",tabindex:"-1"},[s("Implementation "),t("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),e[7]||(e[7]=t("ul",null,[t("li",null,[t("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/no-html-comments.js",target:"_blank",rel:"noreferrer"},"Rule source")]),t("li",null,[t("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/no-html-comments.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const x=n(p,[["render",k]]);export{w as __pageData,x as default}; diff --git a/assets/rules_no-invalid-template-interpolation.md.7uBC17rV.js b/assets/rules_no-invalid-template-interpolation.md.7uBC17rV.js new file mode 100644 index 00000000..8aaef36c --- /dev/null +++ b/assets/rules_no-invalid-template-interpolation.md.7uBC17rV.js @@ -0,0 +1,14 @@ +import{_ as o,c as p,a9 as a,j as i,G as n,w as l,a as s,B as h,o as r}from"./chunks/framework.D6W_pQcY.js";const w=JSON.parse('{"title":"lodash-template/no-invalid-template-interpolation","description":"disallow other than expression in micro-template interpolation. (ex. :ng: `<%= if (test) { %>`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-invalid-template-interpolation","description":"disallow other than expression in micro-template interpolation. (ex. :ng: `<%= if (test) { %>`)"},"headers":[],"relativePath":"rules/no-invalid-template-interpolation.md","filePath":"rules/no-invalid-template-interpolation.md","lastUpdated":1733171881000}'),d={name:"rules/no-invalid-template-interpolation.md"},k={class:"language-html vp-adaptive-theme"},E={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},m={class:"line"};function u(y,t,c,v,f,D){const e=h("v-menu");return r(),p("div",null,[t[14]||(t[14]=a('

lodash-template/no-invalid-template-interpolation

disallow other than expression in micro-template interpolation. (ex. 🆖 <%= if (test) { %>)

  • ⚙️ This rule is included in all of "plugin:lodash-template/best-practices", "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".

Rule Details

This rule disallow other than expression in micro-template interpolation.

',5)),i("div",k,[t[12]||(t[12]=i("button",{title:"Copy Code",class:"copy"},null,-1)),t[13]||(t[13]=i("span",{class:"lang"},"html",-1)),i("pre",E,[i("code",null,[t[10]||(t[10]=a(`<% /* eslint "lodash-template/no-invalid-template-interpolation": "error" */ %> +<!-- ✓ GOOD --> +<% if (a) { %> + <div></div> +<% } %> + +<div><%= text %></div> + +<!-- ✗ BAD --> +`,18)),i("span",g,[n(e,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[0]||(t[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[s("Expected an expression, but a not expressions. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-invalid-template-interpolation.html"},"lodash-template/no-invalid-template-interpolation"),s(")")])])],-1)])),default:l(()=>[t[1]||(t[1]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%= if (a) { %>")])],-1))]),_:1})]),t[11]||(t[11]=a(` + <div></div> +<% } %> + +`,7)),i("span",m,[t[4]||(t[4]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),t[5]||(t[5]=i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),t[6]||(t[6]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),n(e,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[2]||(t[2]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[s("Empty statement. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-invalid-template-interpolation.html"},"lodash-template/no-invalid-template-interpolation"),s(")")])])],-1)])),default:l(()=>[t[3]||(t[3]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%= /**/ %>")])],-1))]),_:1}),t[7]||(t[7]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))])])])]),t[15]||(t[15]=i("h2",{id:"implementation",tabindex:"-1"},[s("Implementation "),i("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),t[16]||(t[16]=i("ul",null,[i("li",null,[i("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/no-invalid-template-interpolation.js",target:"_blank",rel:"noreferrer"},"Rule source")]),i("li",null,[i("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/no-invalid-template-interpolation.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const q=o(d,[["render",u]]);export{w as __pageData,q as default}; diff --git a/assets/rules_no-invalid-template-interpolation.md.7uBC17rV.lean.js b/assets/rules_no-invalid-template-interpolation.md.7uBC17rV.lean.js new file mode 100644 index 00000000..8aaef36c --- /dev/null +++ b/assets/rules_no-invalid-template-interpolation.md.7uBC17rV.lean.js @@ -0,0 +1,14 @@ +import{_ as o,c as p,a9 as a,j as i,G as n,w as l,a as s,B as h,o as r}from"./chunks/framework.D6W_pQcY.js";const w=JSON.parse('{"title":"lodash-template/no-invalid-template-interpolation","description":"disallow other than expression in micro-template interpolation. (ex. :ng: `<%= if (test) { %>`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-invalid-template-interpolation","description":"disallow other than expression in micro-template interpolation. (ex. :ng: `<%= if (test) { %>`)"},"headers":[],"relativePath":"rules/no-invalid-template-interpolation.md","filePath":"rules/no-invalid-template-interpolation.md","lastUpdated":1733171881000}'),d={name:"rules/no-invalid-template-interpolation.md"},k={class:"language-html vp-adaptive-theme"},E={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},m={class:"line"};function u(y,t,c,v,f,D){const e=h("v-menu");return r(),p("div",null,[t[14]||(t[14]=a('

lodash-template/no-invalid-template-interpolation

disallow other than expression in micro-template interpolation. (ex. 🆖 <%= if (test) { %>)

  • ⚙️ This rule is included in all of "plugin:lodash-template/best-practices", "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".

Rule Details

This rule disallow other than expression in micro-template interpolation.

',5)),i("div",k,[t[12]||(t[12]=i("button",{title:"Copy Code",class:"copy"},null,-1)),t[13]||(t[13]=i("span",{class:"lang"},"html",-1)),i("pre",E,[i("code",null,[t[10]||(t[10]=a(`<% /* eslint "lodash-template/no-invalid-template-interpolation": "error" */ %> +<!-- ✓ GOOD --> +<% if (a) { %> + <div></div> +<% } %> + +<div><%= text %></div> + +<!-- ✗ BAD --> +`,18)),i("span",g,[n(e,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[0]||(t[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[s("Expected an expression, but a not expressions. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-invalid-template-interpolation.html"},"lodash-template/no-invalid-template-interpolation"),s(")")])])],-1)])),default:l(()=>[t[1]||(t[1]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%= if (a) { %>")])],-1))]),_:1})]),t[11]||(t[11]=a(` + <div></div> +<% } %> + +`,7)),i("span",m,[t[4]||(t[4]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),t[5]||(t[5]=i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),t[6]||(t[6]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),n(e,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[2]||(t[2]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[s("Empty statement. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-invalid-template-interpolation.html"},"lodash-template/no-invalid-template-interpolation"),s(")")])])],-1)])),default:l(()=>[t[3]||(t[3]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%= /**/ %>")])],-1))]),_:1}),t[7]||(t[7]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))])])])]),t[15]||(t[15]=i("h2",{id:"implementation",tabindex:"-1"},[s("Implementation "),i("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),t[16]||(t[16]=i("ul",null,[i("li",null,[i("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/no-invalid-template-interpolation.js",target:"_blank",rel:"noreferrer"},"Rule source")]),i("li",null,[i("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/no-invalid-template-interpolation.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const q=o(d,[["render",u]]);export{w as __pageData,q as default}; diff --git a/assets/rules_no-irregular-whitespace.md.B1E1gedE.js b/assets/rules_no-irregular-whitespace.md.B1E1gedE.js new file mode 100644 index 00000000..b037bfc4 --- /dev/null +++ b/assets/rules_no-irregular-whitespace.md.B1E1gedE.js @@ -0,0 +1,14 @@ +import{_ as n,c as o,a9 as l,j as i,G as r,w as t,a as e,B as p,o as h}from"./chunks/framework.D6W_pQcY.js";const F=JSON.parse('{"title":"lodash-template/no-irregular-whitespace","description":"disallow irregular whitespace outside the template tags.","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-irregular-whitespace","description":"disallow irregular whitespace outside the template tags."},"headers":[],"relativePath":"rules/no-irregular-whitespace.md","filePath":"rules/no-irregular-whitespace.md","lastUpdated":1733171881000}'),d={name:"rules/no-irregular-whitespace.md"},k={class:"language-html vp-adaptive-theme"},u={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},E={class:"line"};function m(c,s,y,w,f,b){const a=p("v-menu");return h(),o("div",null,[s[22]||(s[22]=l('

lodash-template/no-irregular-whitespace

disallow irregular whitespace outside the template tags.

  • ⚙️ This rule is included in all of "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule disallows the irregular whitespaces.

',5)),i("div",k,[s[20]||(s[20]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[21]||(s[21]=i("span",{class:"lang"},"html",-1)),i("pre",u,[i("code",null,[s[18]||(s[18]=l(`<% /* eslint "lodash-template/no-irregular-whitespace": "error" */ %> +<!-- ✓ GOOD --> +<div id="item-id" class="item-content"> +</div > + +<!-- ✗ BAD --> +`,12)),i("span",g,[s[4]||(s[4]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[5]||(s[5]=i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),r(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[0]||(s[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[e("Irregular whitespace '\\u3000' not allowed. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-irregular-whitespace.html"},"lodash-template/no-irregular-whitespace"),e(")")])])],-1)])),default:t(()=>[s[1]||(s[1]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ")])],-1))]),_:1}),s[6]||(s[6]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"id",-1)),s[7]||(s[7]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),s[8]||(s[8]=i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"item-id"',-1)),r(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[2]||(s[2]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[e("Irregular whitespace '\\u3000' not allowed. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-irregular-whitespace.html"},"lodash-template/no-irregular-whitespace"),e(")")])])],-1)])),default:t(()=>[s[3]||(s[3]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ")])],-1))]),_:1}),s[9]||(s[9]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"class",-1)),s[10]||(s[10]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),s[11]||(s[11]=i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"item-content"',-1)),s[12]||(s[12]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))]),s[19]||(s[19]=e(` +`)),i("span",E,[s[15]||(s[15]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"s[13]||(s[13]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[e("Irregular whitespace '\\u3000' not allowed. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-irregular-whitespace.html"},"lodash-template/no-irregular-whitespace"),e(")")])])],-1)])),default:t(()=>[s[14]||(s[14]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[17]||(s[17]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))])])])]),s[23]||(s[23]=l(`

Options

json
{
+  "lodash-template/no-irregular-whitespace": ["error", {
+    "skipComments": false,
+    "skipAttrValues": false,
+    "skipText": false
+  }]
+}

This rule has an object option for exceptions:

  • "skipComments": true allows any whitespace characters in HTML comments
  • "skipAttrValues": true allows any whitespace characters in HTML attribute values
  • "skipText": true allows any whitespace characters in HTML texts

Further Reading

Implementation

`,8))])}const v=n(d,[["render",m]]);export{F as __pageData,v as default}; diff --git a/assets/rules_no-irregular-whitespace.md.B1E1gedE.lean.js b/assets/rules_no-irregular-whitespace.md.B1E1gedE.lean.js new file mode 100644 index 00000000..b037bfc4 --- /dev/null +++ b/assets/rules_no-irregular-whitespace.md.B1E1gedE.lean.js @@ -0,0 +1,14 @@ +import{_ as n,c as o,a9 as l,j as i,G as r,w as t,a as e,B as p,o as h}from"./chunks/framework.D6W_pQcY.js";const F=JSON.parse('{"title":"lodash-template/no-irregular-whitespace","description":"disallow irregular whitespace outside the template tags.","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-irregular-whitespace","description":"disallow irregular whitespace outside the template tags."},"headers":[],"relativePath":"rules/no-irregular-whitespace.md","filePath":"rules/no-irregular-whitespace.md","lastUpdated":1733171881000}'),d={name:"rules/no-irregular-whitespace.md"},k={class:"language-html vp-adaptive-theme"},u={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},E={class:"line"};function m(c,s,y,w,f,b){const a=p("v-menu");return h(),o("div",null,[s[22]||(s[22]=l('

lodash-template/no-irregular-whitespace

disallow irregular whitespace outside the template tags.

  • ⚙️ This rule is included in all of "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule disallows the irregular whitespaces.

',5)),i("div",k,[s[20]||(s[20]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[21]||(s[21]=i("span",{class:"lang"},"html",-1)),i("pre",u,[i("code",null,[s[18]||(s[18]=l(`<% /* eslint "lodash-template/no-irregular-whitespace": "error" */ %> +<!-- ✓ GOOD --> +<div id="item-id" class="item-content"> +</div > + +<!-- ✗ BAD --> +`,12)),i("span",g,[s[4]||(s[4]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[5]||(s[5]=i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),r(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[0]||(s[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[e("Irregular whitespace '\\u3000' not allowed. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-irregular-whitespace.html"},"lodash-template/no-irregular-whitespace"),e(")")])])],-1)])),default:t(()=>[s[1]||(s[1]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ")])],-1))]),_:1}),s[6]||(s[6]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"id",-1)),s[7]||(s[7]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),s[8]||(s[8]=i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"item-id"',-1)),r(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[2]||(s[2]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[e("Irregular whitespace '\\u3000' not allowed. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-irregular-whitespace.html"},"lodash-template/no-irregular-whitespace"),e(")")])])],-1)])),default:t(()=>[s[3]||(s[3]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ")])],-1))]),_:1}),s[9]||(s[9]=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"class",-1)),s[10]||(s[10]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),s[11]||(s[11]=i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"item-content"',-1)),s[12]||(s[12]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))]),s[19]||(s[19]=e(` +`)),i("span",E,[s[15]||(s[15]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"s[13]||(s[13]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[e("Irregular whitespace '\\u3000' not allowed. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-irregular-whitespace.html"},"lodash-template/no-irregular-whitespace"),e(")")])])],-1)])),default:t(()=>[s[14]||(s[14]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[17]||(s[17]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))])])])]),s[23]||(s[23]=l(`

Options

json
{
+  "lodash-template/no-irregular-whitespace": ["error", {
+    "skipComments": false,
+    "skipAttrValues": false,
+    "skipText": false
+  }]
+}

This rule has an object option for exceptions:

  • "skipComments": true allows any whitespace characters in HTML comments
  • "skipAttrValues": true allows any whitespace characters in HTML attribute values
  • "skipText": true allows any whitespace characters in HTML texts

Further Reading

Implementation

`,8))])}const v=n(d,[["render",m]]);export{F as __pageData,v as default}; diff --git a/assets/rules_no-multi-spaces-in-html-tag.md.CzYPXTNw.js b/assets/rules_no-multi-spaces-in-html-tag.md.CzYPXTNw.js new file mode 100644 index 00000000..cabaccac --- /dev/null +++ b/assets/rules_no-multi-spaces-in-html-tag.md.CzYPXTNw.js @@ -0,0 +1,12 @@ +import{_ as p,c as o,a9 as e,j as t,G as n,w as l,a as i,B as h,o as r}from"./chunks/framework.D6W_pQcY.js";const w=JSON.parse('{"title":"lodash-template/no-multi-spaces-in-html-tag","description":"disallow multiple spaces in HTML tags. (ex. :ng: ``)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-multi-spaces-in-html-tag","description":"disallow multiple spaces in HTML tags. (ex. :ng: ``)"},"headers":[],"relativePath":"rules/no-multi-spaces-in-html-tag.md","filePath":"rules/no-multi-spaces-in-html-tag.md","lastUpdated":1733171881000}'),d={name:"rules/no-multi-spaces-in-html-tag.md"},k={class:"language-html vp-adaptive-theme"},u={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},m={class:"line"},g={class:"line"};function E(y,s,c,f,b,F){const a=h("v-menu");return r(),o("div",null,[s[17]||(s[17]=e('

lodash-template/no-multi-spaces-in-html-tag

disallow multiple spaces in HTML tags. (ex. 🆖 <input···type="text">)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule aims to disallow multiple whitespace in a between attributes which are not used for indentation.

',5)),t("div",k,[s[15]||(s[15]=t("button",{title:"Copy Code",class:"copy"},null,-1)),s[16]||(s[16]=t("span",{class:"lang"},"html",-1)),t("pre",u,[t("code",null,[s[13]||(s[13]=e(`<% /* eslint "lodash-template/no-multi-spaces-in-html-tag": "error" */ %> +<!-- ✓ GOOD --> +<input + class="foo" + type="text" +> + +<input class="foo" type="text"> + +<!-- ✗ BAD --> +`,20)),t("span",m,[s[2]||(s[2]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[3]||(s[3]=t("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"input",-1)),n(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>s[0]||(s[0]=[t("span",{class:"twoslash-popup-container vp-copy-ignore"},[t("div",{class:"twoslash-popup-error vp-doc"},[t("p",null,[i("Multiple spaces found before "),t("code",null,'class="foo"'),i(". ("),t("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-multi-spaces-in-html-tag.html"},"lodash-template/no-multi-spaces-in-html-tag"),i(")")])])],-1)])),default:l(()=>[s[1]||(s[1]=t("span",null,[t("span",null,[t("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ")])],-1))]),_:1}),s[4]||(s[4]=t("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"class",-1)),s[5]||(s[5]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),s[6]||(s[6]=t("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"foo"',-1))]),s[14]||(s[14]=i(` +`)),t("span",g,[s[9]||(s[9]=t("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," type",-1)),s[10]||(s[10]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),s[11]||(s[11]=t("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"text"',-1)),n(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>s[7]||(s[7]=[t("span",{class:"twoslash-popup-container vp-copy-ignore"},[t("div",{class:"twoslash-popup-error vp-doc"},[t("p",null,[i("Multiple spaces found before "),t("code",null,">"),i(". ("),t("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-multi-spaces-in-html-tag.html"},"lodash-template/no-multi-spaces-in-html-tag"),i(")")])])],-1)])),default:l(()=>[s[8]||(s[8]=t("span",null,[t("span",null,[t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[12]||(s[12]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))])])])]),s[18]||(s[18]=t("h2",{id:"implementation",tabindex:"-1"},[i("Implementation "),t("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),s[19]||(s[19]=t("ul",null,[t("li",null,[t("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/no-multi-spaces-in-html-tag.js",target:"_blank",rel:"noreferrer"},"Rule source")]),t("li",null,[t("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/no-multi-spaces-in-html-tag.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const v=p(d,[["render",E]]);export{w as __pageData,v as default}; diff --git a/assets/rules_no-multi-spaces-in-html-tag.md.CzYPXTNw.lean.js b/assets/rules_no-multi-spaces-in-html-tag.md.CzYPXTNw.lean.js new file mode 100644 index 00000000..cabaccac --- /dev/null +++ b/assets/rules_no-multi-spaces-in-html-tag.md.CzYPXTNw.lean.js @@ -0,0 +1,12 @@ +import{_ as p,c as o,a9 as e,j as t,G as n,w as l,a as i,B as h,o as r}from"./chunks/framework.D6W_pQcY.js";const w=JSON.parse('{"title":"lodash-template/no-multi-spaces-in-html-tag","description":"disallow multiple spaces in HTML tags. (ex. :ng: ``)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-multi-spaces-in-html-tag","description":"disallow multiple spaces in HTML tags. (ex. :ng: ``)"},"headers":[],"relativePath":"rules/no-multi-spaces-in-html-tag.md","filePath":"rules/no-multi-spaces-in-html-tag.md","lastUpdated":1733171881000}'),d={name:"rules/no-multi-spaces-in-html-tag.md"},k={class:"language-html vp-adaptive-theme"},u={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},m={class:"line"},g={class:"line"};function E(y,s,c,f,b,F){const a=h("v-menu");return r(),o("div",null,[s[17]||(s[17]=e('

lodash-template/no-multi-spaces-in-html-tag

disallow multiple spaces in HTML tags. (ex. 🆖 <input···type="text">)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule aims to disallow multiple whitespace in a between attributes which are not used for indentation.

',5)),t("div",k,[s[15]||(s[15]=t("button",{title:"Copy Code",class:"copy"},null,-1)),s[16]||(s[16]=t("span",{class:"lang"},"html",-1)),t("pre",u,[t("code",null,[s[13]||(s[13]=e(`<% /* eslint "lodash-template/no-multi-spaces-in-html-tag": "error" */ %> +<!-- ✓ GOOD --> +<input + class="foo" + type="text" +> + +<input class="foo" type="text"> + +<!-- ✗ BAD --> +`,20)),t("span",m,[s[2]||(s[2]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[3]||(s[3]=t("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"input",-1)),n(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>s[0]||(s[0]=[t("span",{class:"twoslash-popup-container vp-copy-ignore"},[t("div",{class:"twoslash-popup-error vp-doc"},[t("p",null,[i("Multiple spaces found before "),t("code",null,'class="foo"'),i(". ("),t("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-multi-spaces-in-html-tag.html"},"lodash-template/no-multi-spaces-in-html-tag"),i(")")])])],-1)])),default:l(()=>[s[1]||(s[1]=t("span",null,[t("span",null,[t("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ")])],-1))]),_:1}),s[4]||(s[4]=t("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"class",-1)),s[5]||(s[5]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),s[6]||(s[6]=t("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"foo"',-1))]),s[14]||(s[14]=i(` +`)),t("span",g,[s[9]||(s[9]=t("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," type",-1)),s[10]||(s[10]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1)),s[11]||(s[11]=t("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"text"',-1)),n(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>s[7]||(s[7]=[t("span",{class:"twoslash-popup-container vp-copy-ignore"},[t("div",{class:"twoslash-popup-error vp-doc"},[t("p",null,[i("Multiple spaces found before "),t("code",null,">"),i(". ("),t("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-multi-spaces-in-html-tag.html"},"lodash-template/no-multi-spaces-in-html-tag"),i(")")])])],-1)])),default:l(()=>[s[8]||(s[8]=t("span",null,[t("span",null,[t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[12]||(s[12]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))])])])]),s[18]||(s[18]=t("h2",{id:"implementation",tabindex:"-1"},[i("Implementation "),t("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),s[19]||(s[19]=t("ul",null,[t("li",null,[t("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/no-multi-spaces-in-html-tag.js",target:"_blank",rel:"noreferrer"},"Rule source")]),t("li",null,[t("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/no-multi-spaces-in-html-tag.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const v=p(d,[["render",E]]);export{w as __pageData,v as default}; diff --git a/assets/rules_no-multi-spaces-in-scriptlet.md.nmP8cufa.js b/assets/rules_no-multi-spaces-in-scriptlet.md.nmP8cufa.js new file mode 100644 index 00000000..07684429 --- /dev/null +++ b/assets/rules_no-multi-spaces-in-scriptlet.md.nmP8cufa.js @@ -0,0 +1,26 @@ +import{_ as p,c as o,a9 as n,j as l,G as a,w as t,a as i,B as r,o as h}from"./chunks/framework.D6W_pQcY.js";const B=JSON.parse('{"title":"lodash-template/no-multi-spaces-in-scriptlet","description":"disallow multiple spaces in scriptlet. (ex. :ng: `<% if···(test)···{ %>`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-multi-spaces-in-scriptlet","description":"disallow multiple spaces in scriptlet. (ex. :ng: `<% if···(test)···{ %>`)"},"headers":[],"relativePath":"rules/no-multi-spaces-in-scriptlet.md","filePath":"rules/no-multi-spaces-in-scriptlet.md","lastUpdated":1733171881000}'),d={name:"rules/no-multi-spaces-in-scriptlet.md"},u={class:"language-html vp-adaptive-theme"},k={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},m={class:"line"},E={class:"line"},g={class:"line"},f={class:"line"},c={class:"line"};function y(b,s,v,w,q,D){const e=r("v-menu");return h(),o("div",null,[s[38]||(s[38]=n('

lodash-template/no-multi-spaces-in-scriptlet

disallow multiple spaces in scriptlet. (ex. 🆖 <% if···(test)···{ %>)

  • ⚙️ This rule is included in all of "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule aims to disallow multiple whitespace in script which are not used for indentation.

',5)),l("div",u,[s[36]||(s[36]=l("button",{title:"Copy Code",class:"copy"},null,-1)),s[37]||(s[37]=l("span",{class:"lang"},"html",-1)),l("pre",k,[l("code",null,[s[21]||(s[21]=n(`<% /* eslint "lodash-template/no-multi-spaces-in-scriptlet": "error" */ %> +<!-- ✓ GOOD --> +<% +var a = 1; + +if(foo === "bar") {} + +a << b + +var arr = [1, 2]; + +a ? b: c +%> + +<!-- ✗ BAD --> +<% +`,32)),l("span",m,[s[2]||(s[2]=l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"var a =",-1)),a(e,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[0]||(s[0]=[l("span",{class:"twoslash-popup-container vp-copy-ignore"},[l("div",{class:"twoslash-popup-error vp-doc"},[l("p",null,[i("Multiple spaces found before "),l("code",null,"1"),i(". ("),l("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-multi-spaces-in-scriptlet.html"},"lodash-template/no-multi-spaces-in-scriptlet"),i(")")])])],-1)])),default:t(()=>[s[1]||(s[1]=l("span",null,[l("span",null,[l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[3]||(s[3]=l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"1;",-1))]),s[22]||(s[22]=i(` +`)),s[23]||(s[23]=l("span",{class:"line"},null,-1)),s[24]||(s[24]=i(` +`)),l("span",E,[s[6]||(s[6]=l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"if(foo",-1)),a(e,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[4]||(s[4]=[l("span",{class:"twoslash-popup-container vp-copy-ignore"},[l("div",{class:"twoslash-popup-error vp-doc"},[l("p",null,[i("Multiple spaces found before "),l("code",null,"==="),i(". ("),l("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-multi-spaces-in-scriptlet.html"},"lodash-template/no-multi-spaces-in-scriptlet"),i(")")])])],-1)])),default:t(()=>[s[5]||(s[5]=l("span",null,[l("span",null,[l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[7]||(s[7]=l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},'=== "bar") {}',-1))]),s[25]||(s[25]=i(` +`)),s[26]||(s[26]=l("span",{class:"line"},null,-1)),s[27]||(s[27]=i(` +`)),l("span",g,[s[10]||(s[10]=l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"a ",-1)),s[11]||(s[11]=l("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<<",-1)),a(e,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[8]||(s[8]=[l("span",{class:"twoslash-popup-container vp-copy-ignore"},[l("div",{class:"twoslash-popup-error vp-doc"},[l("p",null,[i("Multiple spaces found before "),l("code",null,"b"),i(". ("),l("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-multi-spaces-in-scriptlet.html"},"lodash-template/no-multi-spaces-in-scriptlet"),i(")")])])],-1)])),default:t(()=>[s[9]||(s[9]=l("span",null,[l("span",null,[l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[12]||(s[12]=l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"b",-1))]),s[28]||(s[28]=i(` +`)),s[29]||(s[29]=l("span",{class:"line"},null,-1)),s[30]||(s[30]=i(` +`)),l("span",f,[s[15]||(s[15]=l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"var arr = [1,",-1)),a(e,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[13]||(s[13]=[l("span",{class:"twoslash-popup-container vp-copy-ignore"},[l("div",{class:"twoslash-popup-error vp-doc"},[l("p",null,[i("Multiple spaces found before "),l("code",null,"2"),i(". ("),l("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-multi-spaces-in-scriptlet.html"},"lodash-template/no-multi-spaces-in-scriptlet"),i(")")])])],-1)])),default:t(()=>[s[14]||(s[14]=l("span",null,[l("span",null,[l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[16]||(s[16]=l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"2];",-1))]),s[31]||(s[31]=i(` +`)),s[32]||(s[32]=l("span",{class:"line"},null,-1)),s[33]||(s[33]=i(` +`)),l("span",c,[s[19]||(s[19]=l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"a ?",-1)),a(e,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[17]||(s[17]=[l("span",{class:"twoslash-popup-container vp-copy-ignore"},[l("div",{class:"twoslash-popup-error vp-doc"},[l("p",null,[i("Multiple spaces found before "),l("code",null,"b"),i(". ("),l("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-multi-spaces-in-scriptlet.html"},"lodash-template/no-multi-spaces-in-scriptlet"),i(")")])])],-1)])),default:t(()=>[s[18]||(s[18]=l("span",null,[l("span",null,[l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[20]||(s[20]=l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"b: c",-1))]),s[34]||(s[34]=i(` +`)),s[35]||(s[35]=l("span",{class:"line"},[l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%>")],-1))])])]),s[39]||(s[39]=n('

Further Reading

Implementation

',4))])}const A=p(d,[["render",y]]);export{B as __pageData,A as default}; diff --git a/assets/rules_no-multi-spaces-in-scriptlet.md.nmP8cufa.lean.js b/assets/rules_no-multi-spaces-in-scriptlet.md.nmP8cufa.lean.js new file mode 100644 index 00000000..07684429 --- /dev/null +++ b/assets/rules_no-multi-spaces-in-scriptlet.md.nmP8cufa.lean.js @@ -0,0 +1,26 @@ +import{_ as p,c as o,a9 as n,j as l,G as a,w as t,a as i,B as r,o as h}from"./chunks/framework.D6W_pQcY.js";const B=JSON.parse('{"title":"lodash-template/no-multi-spaces-in-scriptlet","description":"disallow multiple spaces in scriptlet. (ex. :ng: `<% if···(test)···{ %>`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-multi-spaces-in-scriptlet","description":"disallow multiple spaces in scriptlet. (ex. :ng: `<% if···(test)···{ %>`)"},"headers":[],"relativePath":"rules/no-multi-spaces-in-scriptlet.md","filePath":"rules/no-multi-spaces-in-scriptlet.md","lastUpdated":1733171881000}'),d={name:"rules/no-multi-spaces-in-scriptlet.md"},u={class:"language-html vp-adaptive-theme"},k={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},m={class:"line"},E={class:"line"},g={class:"line"},f={class:"line"},c={class:"line"};function y(b,s,v,w,q,D){const e=r("v-menu");return h(),o("div",null,[s[38]||(s[38]=n('

lodash-template/no-multi-spaces-in-scriptlet

disallow multiple spaces in scriptlet. (ex. 🆖 <% if···(test)···{ %>)

  • ⚙️ This rule is included in all of "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule aims to disallow multiple whitespace in script which are not used for indentation.

',5)),l("div",u,[s[36]||(s[36]=l("button",{title:"Copy Code",class:"copy"},null,-1)),s[37]||(s[37]=l("span",{class:"lang"},"html",-1)),l("pre",k,[l("code",null,[s[21]||(s[21]=n(`<% /* eslint "lodash-template/no-multi-spaces-in-scriptlet": "error" */ %> +<!-- ✓ GOOD --> +<% +var a = 1; + +if(foo === "bar") {} + +a << b + +var arr = [1, 2]; + +a ? b: c +%> + +<!-- ✗ BAD --> +<% +`,32)),l("span",m,[s[2]||(s[2]=l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"var a =",-1)),a(e,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[0]||(s[0]=[l("span",{class:"twoslash-popup-container vp-copy-ignore"},[l("div",{class:"twoslash-popup-error vp-doc"},[l("p",null,[i("Multiple spaces found before "),l("code",null,"1"),i(". ("),l("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-multi-spaces-in-scriptlet.html"},"lodash-template/no-multi-spaces-in-scriptlet"),i(")")])])],-1)])),default:t(()=>[s[1]||(s[1]=l("span",null,[l("span",null,[l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[3]||(s[3]=l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"1;",-1))]),s[22]||(s[22]=i(` +`)),s[23]||(s[23]=l("span",{class:"line"},null,-1)),s[24]||(s[24]=i(` +`)),l("span",E,[s[6]||(s[6]=l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"if(foo",-1)),a(e,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[4]||(s[4]=[l("span",{class:"twoslash-popup-container vp-copy-ignore"},[l("div",{class:"twoslash-popup-error vp-doc"},[l("p",null,[i("Multiple spaces found before "),l("code",null,"==="),i(". ("),l("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-multi-spaces-in-scriptlet.html"},"lodash-template/no-multi-spaces-in-scriptlet"),i(")")])])],-1)])),default:t(()=>[s[5]||(s[5]=l("span",null,[l("span",null,[l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[7]||(s[7]=l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},'=== "bar") {}',-1))]),s[25]||(s[25]=i(` +`)),s[26]||(s[26]=l("span",{class:"line"},null,-1)),s[27]||(s[27]=i(` +`)),l("span",g,[s[10]||(s[10]=l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"a ",-1)),s[11]||(s[11]=l("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<<",-1)),a(e,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[8]||(s[8]=[l("span",{class:"twoslash-popup-container vp-copy-ignore"},[l("div",{class:"twoslash-popup-error vp-doc"},[l("p",null,[i("Multiple spaces found before "),l("code",null,"b"),i(". ("),l("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-multi-spaces-in-scriptlet.html"},"lodash-template/no-multi-spaces-in-scriptlet"),i(")")])])],-1)])),default:t(()=>[s[9]||(s[9]=l("span",null,[l("span",null,[l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[12]||(s[12]=l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"b",-1))]),s[28]||(s[28]=i(` +`)),s[29]||(s[29]=l("span",{class:"line"},null,-1)),s[30]||(s[30]=i(` +`)),l("span",f,[s[15]||(s[15]=l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"var arr = [1,",-1)),a(e,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[13]||(s[13]=[l("span",{class:"twoslash-popup-container vp-copy-ignore"},[l("div",{class:"twoslash-popup-error vp-doc"},[l("p",null,[i("Multiple spaces found before "),l("code",null,"2"),i(". ("),l("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-multi-spaces-in-scriptlet.html"},"lodash-template/no-multi-spaces-in-scriptlet"),i(")")])])],-1)])),default:t(()=>[s[14]||(s[14]=l("span",null,[l("span",null,[l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[16]||(s[16]=l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"2];",-1))]),s[31]||(s[31]=i(` +`)),s[32]||(s[32]=l("span",{class:"line"},null,-1)),s[33]||(s[33]=i(` +`)),l("span",c,[s[19]||(s[19]=l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"a ?",-1)),a(e,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:t(({})=>s[17]||(s[17]=[l("span",{class:"twoslash-popup-container vp-copy-ignore"},[l("div",{class:"twoslash-popup-error vp-doc"},[l("p",null,[i("Multiple spaces found before "),l("code",null,"b"),i(". ("),l("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-multi-spaces-in-scriptlet.html"},"lodash-template/no-multi-spaces-in-scriptlet"),i(")")])])],-1)])),default:t(()=>[s[18]||(s[18]=l("span",null,[l("span",null,[l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[20]||(s[20]=l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"b: c",-1))]),s[34]||(s[34]=i(` +`)),s[35]||(s[35]=l("span",{class:"line"},[l("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%>")],-1))])])]),s[39]||(s[39]=n('

Further Reading

Implementation

',4))])}const A=p(d,[["render",y]]);export{B as __pageData,A as default}; diff --git a/assets/rules_no-script-parsing-error.md.DjCPmhpF.js b/assets/rules_no-script-parsing-error.md.DjCPmhpF.js new file mode 100644 index 00000000..bf978c12 --- /dev/null +++ b/assets/rules_no-script-parsing-error.md.DjCPmhpF.js @@ -0,0 +1,12 @@ +import{_ as n,c as r,a9 as t,j as i,G as p,w as e,a,B as o,o as h}from"./chunks/framework.D6W_pQcY.js";const A=JSON.parse('{"title":"lodash-template/no-script-parsing-error","description":"disallow parsing errors in template","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-script-parsing-error","description":"disallow parsing errors in template"},"headers":[],"relativePath":"rules/no-script-parsing-error.md","filePath":"rules/no-script-parsing-error.md","lastUpdated":1733171881000}'),k={name:"rules/no-script-parsing-error.md"},d={class:"language-js vp-adaptive-theme"},g={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},u={class:"line"};function c(m,s,y,F,b,D){const l=o("v-menu");return h(),r("div",null,[s[9]||(s[9]=t(`

lodash-template/no-script-parsing-error

disallow parsing errors in template

  • ⚙️ This rule is included in all of "plugin:lodash-template/base", "plugin:lodash-template/all", "plugin:lodash-template/best-practices", "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/recommended-with-script".

Rule Details

This rule reports syntax errors in JavaScript template.
This rule works when verification of "JavaScript Templates" is enabled.

js
/* eslint "lodash-template/no-script-parsing-error": "error" */
+/* ✓ GOOD */
+<% if (a) { %>
+  const a = 'ABC'
+<% } else { %>
+  const a = 'DEF'
+<% } %>
`,6)),i("div",d,[s[7]||(s[7]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[8]||(s[8]=i("span",{class:"lang"},"js",-1)),i("pre",g,[i("code",null,[s[6]||(s[6]=t(`/* eslint "lodash-template/no-script-parsing-error": "error" */ +/* ✗ BAD */ +<% if (a) { %> + const a = 'ABC' +<% } %> +`,10)),i("span",u,[s[2]||(s[2]=i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"const",-1)),s[3]||(s[3]=i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," ",-1)),p(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:e(({})=>s[0]||(s[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a("Parsing error: Identifier 'a' has already been declared. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-script-parsing-error.html"},"lodash-template/no-script-parsing-error"),a(")")])])],-1)])),default:e(()=>[s[1]||(s[1]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"a")])],-1))]),_:1}),s[4]||(s[4]=i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," =",-1)),s[5]||(s[5]=i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}}," 'DEF'",-1))])])])]),s[10]||(s[10]=i("h2",{id:"implementation",tabindex:"-1"},[a("Implementation "),i("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),s[11]||(s[11]=i("ul",null,[i("li",null,[i("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/no-script-parsing-error.js",target:"_blank",rel:"noreferrer"},"Rule source")]),i("li",null,[i("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/no-script-parsing-error.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const E=n(k,[["render",c]]);export{A as __pageData,E as default}; diff --git a/assets/rules_no-script-parsing-error.md.DjCPmhpF.lean.js b/assets/rules_no-script-parsing-error.md.DjCPmhpF.lean.js new file mode 100644 index 00000000..bf978c12 --- /dev/null +++ b/assets/rules_no-script-parsing-error.md.DjCPmhpF.lean.js @@ -0,0 +1,12 @@ +import{_ as n,c as r,a9 as t,j as i,G as p,w as e,a,B as o,o as h}from"./chunks/framework.D6W_pQcY.js";const A=JSON.parse('{"title":"lodash-template/no-script-parsing-error","description":"disallow parsing errors in template","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-script-parsing-error","description":"disallow parsing errors in template"},"headers":[],"relativePath":"rules/no-script-parsing-error.md","filePath":"rules/no-script-parsing-error.md","lastUpdated":1733171881000}'),k={name:"rules/no-script-parsing-error.md"},d={class:"language-js vp-adaptive-theme"},g={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},u={class:"line"};function c(m,s,y,F,b,D){const l=o("v-menu");return h(),r("div",null,[s[9]||(s[9]=t(`

lodash-template/no-script-parsing-error

disallow parsing errors in template

  • ⚙️ This rule is included in all of "plugin:lodash-template/base", "plugin:lodash-template/all", "plugin:lodash-template/best-practices", "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/recommended-with-script".

Rule Details

This rule reports syntax errors in JavaScript template.
This rule works when verification of "JavaScript Templates" is enabled.

js
/* eslint "lodash-template/no-script-parsing-error": "error" */
+/* ✓ GOOD */
+<% if (a) { %>
+  const a = 'ABC'
+<% } else { %>
+  const a = 'DEF'
+<% } %>
`,6)),i("div",d,[s[7]||(s[7]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[8]||(s[8]=i("span",{class:"lang"},"js",-1)),i("pre",g,[i("code",null,[s[6]||(s[6]=t(`/* eslint "lodash-template/no-script-parsing-error": "error" */ +/* ✗ BAD */ +<% if (a) { %> + const a = 'ABC' +<% } %> +`,10)),i("span",u,[s[2]||(s[2]=i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"const",-1)),s[3]||(s[3]=i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," ",-1)),p(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:e(({})=>s[0]||(s[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[a("Parsing error: Identifier 'a' has already been declared. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-script-parsing-error.html"},"lodash-template/no-script-parsing-error"),a(")")])])],-1)])),default:e(()=>[s[1]||(s[1]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"a")])],-1))]),_:1}),s[4]||(s[4]=i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," =",-1)),s[5]||(s[5]=i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}}," 'DEF'",-1))])])])]),s[10]||(s[10]=i("h2",{id:"implementation",tabindex:"-1"},[a("Implementation "),i("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),s[11]||(s[11]=i("ul",null,[i("li",null,[i("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/no-script-parsing-error.js",target:"_blank",rel:"noreferrer"},"Rule source")]),i("li",null,[i("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/no-script-parsing-error.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const E=n(k,[["render",c]]);export{A as __pageData,E as default}; diff --git a/assets/rules_no-semi-in-template-interpolation.md.BZeF_yRA.js b/assets/rules_no-semi-in-template-interpolation.md.BZeF_yRA.js new file mode 100644 index 00000000..262c65d5 --- /dev/null +++ b/assets/rules_no-semi-in-template-interpolation.md.BZeF_yRA.js @@ -0,0 +1,6 @@ +import{_ as a,c as n,a9 as l,j as e,G as p,w as s,a as i,B as r,o as d}from"./chunks/framework.D6W_pQcY.js";const q=JSON.parse('{"title":"lodash-template/no-semi-in-template-interpolation","description":"disallow the semicolon at the end of expression in micro template interpolation.(ex. :ok: `<%= text %>` :ng: `<%= text; %>`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-semi-in-template-interpolation","description":"disallow the semicolon at the end of expression in micro template interpolation.(ex. :ok: `<%= text %>` :ng: `<%= text; %>`)"},"headers":[],"relativePath":"rules/no-semi-in-template-interpolation.md","filePath":"rules/no-semi-in-template-interpolation.md","lastUpdated":1733171881000}'),h={name:"rules/no-semi-in-template-interpolation.md"},m={class:"language-html vp-adaptive-theme"},u={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},c={class:"line"};function k(g,t,f,b,x,y){const o=r("v-menu");return d(),n("div",null,[t[8]||(t[8]=l('

lodash-template/no-semi-in-template-interpolation

disallow the semicolon at the end of expression in micro template interpolation.(ex. 🆗 <%= text %> 🆖 <%= text; %>)

  • ⚙️ This rule is included in all of "plugin:lodash-template/best-practices", "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule disallow the semicolon at the end of expression in micro template interpolation.

',5)),e("div",m,[t[6]||(t[6]=e("button",{title:"Copy Code",class:"copy"},null,-1)),t[7]||(t[7]=e("span",{class:"lang"},"html",-1)),e("pre",u,[e("code",null,[t[5]||(t[5]=l(`<% /* eslint "lodash-template/no-semi-in-template-interpolation": "error" */ %> +<!-- ✓ GOOD --> +<%= text %> + +<!-- ✗ BAD --> +`,10)),e("span",c,[t[2]||(t[2]=e("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<",-1)),t[3]||(t[3]=e("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%= text",-1)),p(o,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:s(({})=>t[0]||(t[0]=[e("span",{class:"twoslash-popup-container vp-copy-ignore"},[e("div",{class:"twoslash-popup-error vp-doc"},[e("p",null,[i("Unnecessary semicolon. ("),e("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-semi-in-template-interpolation.html"},"lodash-template/no-semi-in-template-interpolation"),i(")")])])],-1)])),default:s(()=>[t[1]||(t[1]=e("span",null,[e("span",null,[e("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},";")])],-1))]),_:1}),t[4]||(t[4]=e("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," %>",-1))])])])]),t[9]||(t[9]=e("h2",{id:"implementation",tabindex:"-1"},[i("Implementation "),e("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),t[10]||(t[10]=e("ul",null,[e("li",null,[e("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/no-semi-in-template-interpolation.js",target:"_blank",rel:"noreferrer"},"Rule source")]),e("li",null,[e("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/no-semi-in-template-interpolation.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const D=a(h,[["render",k]]);export{q as __pageData,D as default}; diff --git a/assets/rules_no-semi-in-template-interpolation.md.BZeF_yRA.lean.js b/assets/rules_no-semi-in-template-interpolation.md.BZeF_yRA.lean.js new file mode 100644 index 00000000..262c65d5 --- /dev/null +++ b/assets/rules_no-semi-in-template-interpolation.md.BZeF_yRA.lean.js @@ -0,0 +1,6 @@ +import{_ as a,c as n,a9 as l,j as e,G as p,w as s,a as i,B as r,o as d}from"./chunks/framework.D6W_pQcY.js";const q=JSON.parse('{"title":"lodash-template/no-semi-in-template-interpolation","description":"disallow the semicolon at the end of expression in micro template interpolation.(ex. :ok: `<%= text %>` :ng: `<%= text; %>`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-semi-in-template-interpolation","description":"disallow the semicolon at the end of expression in micro template interpolation.(ex. :ok: `<%= text %>` :ng: `<%= text; %>`)"},"headers":[],"relativePath":"rules/no-semi-in-template-interpolation.md","filePath":"rules/no-semi-in-template-interpolation.md","lastUpdated":1733171881000}'),h={name:"rules/no-semi-in-template-interpolation.md"},m={class:"language-html vp-adaptive-theme"},u={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},c={class:"line"};function k(g,t,f,b,x,y){const o=r("v-menu");return d(),n("div",null,[t[8]||(t[8]=l('

lodash-template/no-semi-in-template-interpolation

disallow the semicolon at the end of expression in micro template interpolation.(ex. 🆗 <%= text %> 🆖 <%= text; %>)

  • ⚙️ This rule is included in all of "plugin:lodash-template/best-practices", "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule disallow the semicolon at the end of expression in micro template interpolation.

',5)),e("div",m,[t[6]||(t[6]=e("button",{title:"Copy Code",class:"copy"},null,-1)),t[7]||(t[7]=e("span",{class:"lang"},"html",-1)),e("pre",u,[e("code",null,[t[5]||(t[5]=l(`<% /* eslint "lodash-template/no-semi-in-template-interpolation": "error" */ %> +<!-- ✓ GOOD --> +<%= text %> + +<!-- ✗ BAD --> +`,10)),e("span",c,[t[2]||(t[2]=e("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<",-1)),t[3]||(t[3]=e("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%= text",-1)),p(o,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:s(({})=>t[0]||(t[0]=[e("span",{class:"twoslash-popup-container vp-copy-ignore"},[e("div",{class:"twoslash-popup-error vp-doc"},[e("p",null,[i("Unnecessary semicolon. ("),e("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-semi-in-template-interpolation.html"},"lodash-template/no-semi-in-template-interpolation"),i(")")])])],-1)])),default:s(()=>[t[1]||(t[1]=e("span",null,[e("span",null,[e("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},";")])],-1))]),_:1}),t[4]||(t[4]=e("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," %>",-1))])])])]),t[9]||(t[9]=e("h2",{id:"implementation",tabindex:"-1"},[i("Implementation "),e("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),t[10]||(t[10]=e("ul",null,[e("li",null,[e("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/no-semi-in-template-interpolation.js",target:"_blank",rel:"noreferrer"},"Rule source")]),e("li",null,[e("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/no-semi-in-template-interpolation.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const D=a(h,[["render",k]]);export{q as __pageData,D as default}; diff --git a/assets/rules_no-space-attribute-equal-sign.md.DTXp4BxP.js b/assets/rules_no-space-attribute-equal-sign.md.DTXp4BxP.js new file mode 100644 index 00000000..a35de1f1 --- /dev/null +++ b/assets/rules_no-space-attribute-equal-sign.md.DTXp4BxP.js @@ -0,0 +1,6 @@ +import{_ as n,c as o,a9 as e,j as t,G as r,w as a,B as p,o as u,a as i}from"./chunks/framework.D6W_pQcY.js";const v=JSON.parse('{"title":"lodash-template/no-space-attribute-equal-sign","description":"disallow spacing around equal signs in attribute. (ex. :ok: `
` :ng: `
`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-space-attribute-equal-sign","description":"disallow spacing around equal signs in attribute. (ex. :ok: `
` :ng: `
`)"},"headers":[],"relativePath":"rules/no-space-attribute-equal-sign.md","filePath":"rules/no-space-attribute-equal-sign.md","lastUpdated":1733171881000}'),h={name:"rules/no-space-attribute-equal-sign.md"},d={class:"language-html vp-adaptive-theme"},g={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},k={class:"line"};function m(c,s,b,q,E,f){const l=p("v-menu");return u(),o("div",null,[s[12]||(s[12]=e('

lodash-template/no-space-attribute-equal-sign

disallow spacing around equal signs in attribute. (ex. 🆗 <div class="item"> 🆖 <div class = "item">)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule disallow spacing around equal signs in attribute.

HTML5 allows spaces around equal signs. But space-less is easier to read, and groups entities better together.

',6)),t("div",d,[s[10]||(s[10]=t("button",{title:"Copy Code",class:"copy"},null,-1)),s[11]||(s[11]=t("span",{class:"lang"},"html",-1)),t("pre",g,[t("code",null,[s[9]||(s[9]=e(`<% /* eslint "lodash-template/no-space-attribute-equal-sign": "error" */ %> +<!-- ✓ GOOD --> +<input class="item"> + +<!-- ✗ BAD --> +`,10)),t("span",k,[s[2]||(s[2]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[3]||(s[3]=t("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"input",-1)),s[4]||(s[4]=t("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," class",-1)),s[5]||(s[5]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ",-1)),r(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[0]||(s[0]=[t("span",{class:"twoslash-popup-container vp-copy-ignore"},[t("div",{class:"twoslash-popup-error vp-doc"},[t("p",null,[i("Equal signs in must not be spaced. ("),t("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-space-attribute-equal-sign.html"},"lodash-template/no-space-attribute-equal-sign"),i(")")])])],-1)])),default:a(()=>[s[1]||(s[1]=t("span",null,[t("span",null,[t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=")])],-1))]),_:1}),s[6]||(s[6]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ",-1)),s[7]||(s[7]=t("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"item"',-1)),s[8]||(s[8]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))])])])]),s[13]||(s[13]=e('

Further Reading

Implementation

',4))])}const w=n(h,[["render",m]]);export{v as __pageData,w as default}; diff --git a/assets/rules_no-space-attribute-equal-sign.md.DTXp4BxP.lean.js b/assets/rules_no-space-attribute-equal-sign.md.DTXp4BxP.lean.js new file mode 100644 index 00000000..a35de1f1 --- /dev/null +++ b/assets/rules_no-space-attribute-equal-sign.md.DTXp4BxP.lean.js @@ -0,0 +1,6 @@ +import{_ as n,c as o,a9 as e,j as t,G as r,w as a,B as p,o as u,a as i}from"./chunks/framework.D6W_pQcY.js";const v=JSON.parse('{"title":"lodash-template/no-space-attribute-equal-sign","description":"disallow spacing around equal signs in attribute. (ex. :ok: `
` :ng: `
`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-space-attribute-equal-sign","description":"disallow spacing around equal signs in attribute. (ex. :ok: `
` :ng: `
`)"},"headers":[],"relativePath":"rules/no-space-attribute-equal-sign.md","filePath":"rules/no-space-attribute-equal-sign.md","lastUpdated":1733171881000}'),h={name:"rules/no-space-attribute-equal-sign.md"},d={class:"language-html vp-adaptive-theme"},g={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},k={class:"line"};function m(c,s,b,q,E,f){const l=p("v-menu");return u(),o("div",null,[s[12]||(s[12]=e('

lodash-template/no-space-attribute-equal-sign

disallow spacing around equal signs in attribute. (ex. 🆗 <div class="item"> 🆖 <div class = "item">)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule disallow spacing around equal signs in attribute.

HTML5 allows spaces around equal signs. But space-less is easier to read, and groups entities better together.

',6)),t("div",d,[s[10]||(s[10]=t("button",{title:"Copy Code",class:"copy"},null,-1)),s[11]||(s[11]=t("span",{class:"lang"},"html",-1)),t("pre",g,[t("code",null,[s[9]||(s[9]=e(`<% /* eslint "lodash-template/no-space-attribute-equal-sign": "error" */ %> +<!-- ✓ GOOD --> +<input class="item"> + +<!-- ✗ BAD --> +`,10)),t("span",k,[s[2]||(s[2]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[3]||(s[3]=t("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"input",-1)),s[4]||(s[4]=t("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," class",-1)),s[5]||(s[5]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ",-1)),r(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[0]||(s[0]=[t("span",{class:"twoslash-popup-container vp-copy-ignore"},[t("div",{class:"twoslash-popup-error vp-doc"},[t("p",null,[i("Equal signs in must not be spaced. ("),t("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-space-attribute-equal-sign.html"},"lodash-template/no-space-attribute-equal-sign"),i(")")])])],-1)])),default:a(()=>[s[1]||(s[1]=t("span",null,[t("span",null,[t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=")])],-1))]),_:1}),s[6]||(s[6]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ",-1)),s[7]||(s[7]=t("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"item"',-1)),s[8]||(s[8]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1))])])])]),s[13]||(s[13]=e('

Further Reading

Implementation

',4))])}const w=n(h,[["render",m]]);export{v as __pageData,w as default}; diff --git a/assets/rules_no-template-tag-in-start-tag.md.C97ZG_oA.js b/assets/rules_no-template-tag-in-start-tag.md.C97ZG_oA.js new file mode 100644 index 00000000..bf44e5be --- /dev/null +++ b/assets/rules_no-template-tag-in-start-tag.md.C97ZG_oA.js @@ -0,0 +1,27 @@ +import{_ as p,c as h,a9 as n,j as i,G as e,w as a,a as t,B as o,o as r}from"./chunks/framework.D6W_pQcY.js";const C=JSON.parse('{"title":"lodash-template/no-template-tag-in-start-tag","description":"disallow template tag in start tag outside attribute values. (ex. :ng: ` >`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-template-tag-in-start-tag","description":"disallow template tag in start tag outside attribute values. (ex. :ng: ` >`)"},"headers":[],"relativePath":"rules/no-template-tag-in-start-tag.md","filePath":"rules/no-template-tag-in-start-tag.md","lastUpdated":1733171881000}'),k={name:"rules/no-template-tag-in-start-tag.md"},d={class:"language-html vp-adaptive-theme"},g={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},u={class:"line"},E={class:"line"},y={class:"line"},m={class:"line"};function f(b,s,F,v,B,D){const l=o("v-menu");return r(),h("div",null,[s[34]||(s[34]=n('

lodash-template/no-template-tag-in-start-tag

disallow template tag in start tag outside attribute values. (ex. 🆖 <input <%= 'disabled' %> >)

  • ⚙️ This rule is included in "plugin:lodash-template/all".

Rule Details

This rule reports the template tag that is in the start tag, outside attribute values.

',5)),i("div",d,[s[32]||(s[32]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[33]||(s[33]=i("span",{class:"lang"},"html",-1)),i("pre",g,[i("code",null,[s[18]||(s[18]=n(`<% /* eslint "lodash-template/no-template-tag-in-start-tag": "error" */ %> +<!-- ✓ GOOD --> +<input disabled > + +<input class="<%= hidden ? 'hidden' : '' %>" > + +<!-- ✗ BAD --> +`,14)),i("span",u,[s[2]||(s[2]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[3]||(s[3]=i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"input",-1)),s[4]||(s[4]=i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}}," ",-1)),e(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[0]||(s[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("The template interpolate tag in start tag outside attribute values are forbidden. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-template-tag-in-start-tag.html"},"lodash-template/no-template-tag-in-start-tag"),t(")")])])],-1)])),default:a(()=>[s[1]||(s[1]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<%="),i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}}," 'disabled'"),i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," %"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")])],-1))]),_:1}),s[5]||(s[5]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," >",-1))]),s[19]||(s[19]=t(` +`)),s[20]||(s[20]=i("span",{class:"line"},null,-1)),s[21]||(s[21]=t(` +`)),i("span",E,[s[8]||(s[8]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[9]||(s[9]=i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"input",-1)),s[10]||(s[10]=i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}}," ",-1)),e(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[6]||(s[6]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("The template interpolate tag in start tag outside attribute values are forbidden. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-template-tag-in-start-tag.html"},"lodash-template/no-template-tag-in-start-tag"),t(")")])])],-1)])),default:a(()=>[s[7]||(s[7]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<%="),i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," disabled"),i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ?"),i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}}," 'disabled'"),i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," :"),i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}}," ''"),i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," %"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")])],-1))]),_:1}),s[11]||(s[11]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," >",-1))]),s[22]||(s[22]=t(` +`)),s[23]||(s[23]=i("span",{class:"line"},null,-1)),s[24]||(s[24]=t(` +`)),s[25]||(s[25]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<"),i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"input")],-1)),s[26]||(s[26]=t(` +`)),i("span",y,[s[14]||(s[14]=i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}}," ",-1)),e(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[12]||(s[12]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("The template evaluate tag in start tag outside attribute values are forbidden. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-template-tag-in-start-tag.html"},"lodash-template/no-template-tag-in-start-tag"),t(")")])])],-1)])),default:a(()=>[s[13]||(s[13]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<%"),i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," if"),i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," (disabled)"),i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," {"),i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," %"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")])],-1))]),_:1})]),s[27]||(s[27]=t(` +`)),s[28]||(s[28]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," disabled")],-1)),s[29]||(s[29]=t(` +`)),i("span",m,[s[17]||(s[17]=i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}}," ",-1)),e(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[15]||(s[15]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("The template evaluate tag in start tag outside attribute values are forbidden. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-template-tag-in-start-tag.html"},"lodash-template/no-template-tag-in-start-tag"),t(")")])])],-1)])),default:a(()=>[s[16]||(s[16]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"% } %>")])],-1))]),_:1})]),s[30]||(s[30]=t(` +`)),s[31]||(s[31]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1))])])]),s[35]||(s[35]=n(`

Options

json
{
+  "lodash-template/no-template-tag-in-start-tag": ["error", {
+    "arrowEvaluateTag": false,
+  }]
+}

Examples for this rule with {arrowEvaluateTag: true} option:

html
<% /* eslint "lodash-template/no-template-tag-in-start-tag": ["error", {"arrowEvaluateTag": true}] */ %>
+<!-- ✓ GOOD -->
+<input disabled >
+<input
+  <% if (disabled) { %>
+  disabled
+  <% } %>
+>

Implementation

`,6))])}const q=p(k,[["render",f]]);export{C as __pageData,q as default}; diff --git a/assets/rules_no-template-tag-in-start-tag.md.C97ZG_oA.lean.js b/assets/rules_no-template-tag-in-start-tag.md.C97ZG_oA.lean.js new file mode 100644 index 00000000..bf44e5be --- /dev/null +++ b/assets/rules_no-template-tag-in-start-tag.md.C97ZG_oA.lean.js @@ -0,0 +1,27 @@ +import{_ as p,c as h,a9 as n,j as i,G as e,w as a,a as t,B as o,o as r}from"./chunks/framework.D6W_pQcY.js";const C=JSON.parse('{"title":"lodash-template/no-template-tag-in-start-tag","description":"disallow template tag in start tag outside attribute values. (ex. :ng: ` >`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-template-tag-in-start-tag","description":"disallow template tag in start tag outside attribute values. (ex. :ng: ` >`)"},"headers":[],"relativePath":"rules/no-template-tag-in-start-tag.md","filePath":"rules/no-template-tag-in-start-tag.md","lastUpdated":1733171881000}'),k={name:"rules/no-template-tag-in-start-tag.md"},d={class:"language-html vp-adaptive-theme"},g={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},u={class:"line"},E={class:"line"},y={class:"line"},m={class:"line"};function f(b,s,F,v,B,D){const l=o("v-menu");return r(),h("div",null,[s[34]||(s[34]=n('

lodash-template/no-template-tag-in-start-tag

disallow template tag in start tag outside attribute values. (ex. 🆖 <input <%= 'disabled' %> >)

  • ⚙️ This rule is included in "plugin:lodash-template/all".

Rule Details

This rule reports the template tag that is in the start tag, outside attribute values.

',5)),i("div",d,[s[32]||(s[32]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[33]||(s[33]=i("span",{class:"lang"},"html",-1)),i("pre",g,[i("code",null,[s[18]||(s[18]=n(`<% /* eslint "lodash-template/no-template-tag-in-start-tag": "error" */ %> +<!-- ✓ GOOD --> +<input disabled > + +<input class="<%= hidden ? 'hidden' : '' %>" > + +<!-- ✗ BAD --> +`,14)),i("span",u,[s[2]||(s[2]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[3]||(s[3]=i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"input",-1)),s[4]||(s[4]=i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}}," ",-1)),e(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[0]||(s[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("The template interpolate tag in start tag outside attribute values are forbidden. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-template-tag-in-start-tag.html"},"lodash-template/no-template-tag-in-start-tag"),t(")")])])],-1)])),default:a(()=>[s[1]||(s[1]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<%="),i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}}," 'disabled'"),i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," %"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")])],-1))]),_:1}),s[5]||(s[5]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," >",-1))]),s[19]||(s[19]=t(` +`)),s[20]||(s[20]=i("span",{class:"line"},null,-1)),s[21]||(s[21]=t(` +`)),i("span",E,[s[8]||(s[8]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),s[9]||(s[9]=i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"input",-1)),s[10]||(s[10]=i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}}," ",-1)),e(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[6]||(s[6]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("The template interpolate tag in start tag outside attribute values are forbidden. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-template-tag-in-start-tag.html"},"lodash-template/no-template-tag-in-start-tag"),t(")")])])],-1)])),default:a(()=>[s[7]||(s[7]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<%="),i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," disabled"),i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," ?"),i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}}," 'disabled'"),i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," :"),i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}}," ''"),i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," %"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")])],-1))]),_:1}),s[11]||(s[11]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," >",-1))]),s[22]||(s[22]=t(` +`)),s[23]||(s[23]=i("span",{class:"line"},null,-1)),s[24]||(s[24]=t(` +`)),s[25]||(s[25]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<"),i("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"input")],-1)),s[26]||(s[26]=t(` +`)),i("span",y,[s[14]||(s[14]=i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}}," ",-1)),e(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[12]||(s[12]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("The template evaluate tag in start tag outside attribute values are forbidden. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-template-tag-in-start-tag.html"},"lodash-template/no-template-tag-in-start-tag"),t(")")])])],-1)])),default:a(()=>[s[13]||(s[13]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<%"),i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," if"),i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," (disabled)"),i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," {"),i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," %"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")])],-1))]),_:1})]),s[27]||(s[27]=t(` +`)),s[28]||(s[28]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," disabled")],-1)),s[29]||(s[29]=t(` +`)),i("span",m,[s[17]||(s[17]=i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}}," ",-1)),e(l,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[15]||(s[15]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("The template evaluate tag in start tag outside attribute values are forbidden. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-template-tag-in-start-tag.html"},"lodash-template/no-template-tag-in-start-tag"),t(")")])])],-1)])),default:a(()=>[s[16]||(s[16]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"% } %>")])],-1))]),_:1})]),s[30]||(s[30]=t(` +`)),s[31]||(s[31]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1))])])]),s[35]||(s[35]=n(`

Options

json
{
+  "lodash-template/no-template-tag-in-start-tag": ["error", {
+    "arrowEvaluateTag": false,
+  }]
+}

Examples for this rule with {arrowEvaluateTag: true} option:

html
<% /* eslint "lodash-template/no-template-tag-in-start-tag": ["error", {"arrowEvaluateTag": true}] */ %>
+<!-- ✓ GOOD -->
+<input disabled >
+<input
+  <% if (disabled) { %>
+  disabled
+  <% } %>
+>

Implementation

`,6))])}const q=p(k,[["render",f]]);export{C as __pageData,q as default}; diff --git a/assets/rules_no-warning-html-comments.md.DBLM2y6K.js b/assets/rules_no-warning-html-comments.md.DBLM2y6K.js new file mode 100644 index 00000000..2fa03b92 --- /dev/null +++ b/assets/rules_no-warning-html-comments.md.DBLM2y6K.js @@ -0,0 +1,2 @@ +import{_ as a,c as o,a9 as i,j as e,a as s,G as r,w as l,B as m,o as h}from"./chunks/framework.D6W_pQcY.js";const D=JSON.parse('{"title":"lodash-template/no-warning-html-comments","description":"disallow specified warning terms in HTML comments. (ex. :ng: ``)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-warning-html-comments","description":"disallow specified warning terms in HTML comments. (ex. :ng: ``)"},"headers":[],"relativePath":"rules/no-warning-html-comments.md","filePath":"rules/no-warning-html-comments.md","lastUpdated":1733171881000}'),p={name:"rules/no-warning-html-comments.md"},d={class:"language-html vp-adaptive-theme"},u={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},c={class:"line"};function g(k,t,f,w,b,v){const n=m("v-menu");return h(),o("div",null,[t[6]||(t[6]=i('

lodash-template/no-warning-html-comments

disallow specified warning terms in HTML comments. (ex. 🆖 <!-- TODO:task -->)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".

Rule Details

This rule reports HTML comments that include any of the predefined terms specified in its configuration.

',5)),e("div",d,[t[4]||(t[4]=e("button",{title:"Copy Code",class:"copy"},null,-1)),t[5]||(t[5]=e("span",{class:"lang"},"html",-1)),e("pre",u,[e("code",null,[t[2]||(t[2]=e("span",{class:"line"},[e("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),e("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},'% /* eslint "lodash-template/no-warning-html-comments": "error" */ %>')],-1)),t[3]||(t[3]=s(` +`)),e("span",c,[r(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[0]||(t[0]=[e("span",{class:"twoslash-popup-container vp-copy-ignore"},[e("div",{class:"twoslash-popup-error vp-doc"},[e("p",null,[s("Unexpected 'todo' comment. ("),e("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-warning-html-comments.html"},"lodash-template/no-warning-html-comments"),s(")")])])],-1)])),default:l(()=>[t[1]||(t[1]=e("span",null,[e("span",null,[e("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"")])],-1))]),_:1})])])])]),t[7]||(t[7]=e("h2",{id:"implementation",tabindex:"-1"},[s("Implementation "),e("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),t[8]||(t[8]=e("ul",null,[e("li",null,[e("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/no-warning-html-comments.js",target:"_blank",rel:"noreferrer"},"Rule source")]),e("li",null,[e("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/no-warning-html-comments.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const T=a(p,[["render",g]]);export{D as __pageData,T as default}; diff --git a/assets/rules_no-warning-html-comments.md.DBLM2y6K.lean.js b/assets/rules_no-warning-html-comments.md.DBLM2y6K.lean.js new file mode 100644 index 00000000..2fa03b92 --- /dev/null +++ b/assets/rules_no-warning-html-comments.md.DBLM2y6K.lean.js @@ -0,0 +1,2 @@ +import{_ as a,c as o,a9 as i,j as e,a as s,G as r,w as l,B as m,o as h}from"./chunks/framework.D6W_pQcY.js";const D=JSON.parse('{"title":"lodash-template/no-warning-html-comments","description":"disallow specified warning terms in HTML comments. (ex. :ng: ``)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/no-warning-html-comments","description":"disallow specified warning terms in HTML comments. (ex. :ng: ``)"},"headers":[],"relativePath":"rules/no-warning-html-comments.md","filePath":"rules/no-warning-html-comments.md","lastUpdated":1733171881000}'),p={name:"rules/no-warning-html-comments.md"},d={class:"language-html vp-adaptive-theme"},u={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},c={class:"line"};function g(k,t,f,w,b,v){const n=m("v-menu");return h(),o("div",null,[t[6]||(t[6]=i('

lodash-template/no-warning-html-comments

disallow specified warning terms in HTML comments. (ex. 🆖 <!-- TODO:task -->)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".

Rule Details

This rule reports HTML comments that include any of the predefined terms specified in its configuration.

',5)),e("div",d,[t[4]||(t[4]=e("button",{title:"Copy Code",class:"copy"},null,-1)),t[5]||(t[5]=e("span",{class:"lang"},"html",-1)),e("pre",u,[e("code",null,[t[2]||(t[2]=e("span",{class:"line"},[e("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),e("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},'% /* eslint "lodash-template/no-warning-html-comments": "error" */ %>')],-1)),t[3]||(t[3]=s(` +`)),e("span",c,[r(n,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>t[0]||(t[0]=[e("span",{class:"twoslash-popup-container vp-copy-ignore"},[e("div",{class:"twoslash-popup-error vp-doc"},[e("p",null,[s("Unexpected 'todo' comment. ("),e("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/no-warning-html-comments.html"},"lodash-template/no-warning-html-comments"),s(")")])])],-1)])),default:l(()=>[t[1]||(t[1]=e("span",null,[e("span",null,[e("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"")])],-1))]),_:1})])])])]),t[7]||(t[7]=e("h2",{id:"implementation",tabindex:"-1"},[s("Implementation "),e("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),t[8]||(t[8]=e("ul",null,[e("li",null,[e("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/no-warning-html-comments.js",target:"_blank",rel:"noreferrer"},"Rule source")]),e("li",null,[e("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/no-warning-html-comments.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const T=a(p,[["render",g]]);export{D as __pageData,T as default}; diff --git a/assets/rules_prefer-escape-template-interpolations.md.B9bZDD04.js b/assets/rules_prefer-escape-template-interpolations.md.B9bZDD04.js new file mode 100644 index 00000000..8735c351 --- /dev/null +++ b/assets/rules_prefer-escape-template-interpolations.md.B9bZDD04.js @@ -0,0 +1,7 @@ +import{_ as p,c as n,a9 as i,j as t,G as r,w as l,a as s,B as o,o as h}from"./chunks/framework.D6W_pQcY.js";const v=JSON.parse('{"title":"lodash-template/prefer-escape-template-interpolations","description":"prefer escape micro-template interpolations. (ex. :ok: `<%- ... %>`, :ng: `<%= ... %>`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/prefer-escape-template-interpolations","description":"prefer escape micro-template interpolations. (ex. :ok: `<%- ... %>`, :ng: `<%= ... %>`)"},"headers":[],"relativePath":"rules/prefer-escape-template-interpolations.md","filePath":"rules/prefer-escape-template-interpolations.md","lastUpdated":1733171881000}'),k={name:"rules/prefer-escape-template-interpolations.md"},d={class:"language-html vp-adaptive-theme"},m={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},E={class:"line"};function g(u,e,f,c,y,b){const a=o("v-menu");return h(),n("div",null,[e[11]||(e[11]=i('

lodash-template/prefer-escape-template-interpolations

prefer escape micro-template interpolations. (ex. 🆗 <%- ... %>, 🆖 <%= ... %>)

  • ⚙️ This rule is included in "plugin:lodash-template/all".

Rule Details

This rule reports no escape micro-template interpolates.

',5)),t("div",d,[e[9]||(e[9]=t("button",{title:"Copy Code",class:"copy"},null,-1)),e[10]||(e[10]=t("span",{class:"lang"},"html",-1)),t("pre",m,[t("code",null,[e[8]||(e[8]=i(`<% /* eslint "lodash-template/prefer-escape-template-interpolations": "error" */ %> +<!-- ✓ GOOD --> +<div><%- text %></div> +<div><% print(html) %></div> + +<!-- ✗ BAD --> +`,12)),t("span",E,[e[2]||(e[2]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),e[3]||(e[3]=t("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),e[4]||(e[4]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),r(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>e[0]||(e[0]=[t("span",{class:"twoslash-popup-container vp-copy-ignore"},[t("div",{class:"twoslash-popup-error vp-doc"},[t("p",null,[s("The escape micro-template interpolation is preferable. ("),t("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/prefer-escape-template-interpolations.html"},"lodash-template/prefer-escape-template-interpolations"),s(")")])])],-1)])),default:l(()=>[e[1]||(e[1]=t("span",null,[t("span",null,[t("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%= text %>")])],-1))]),_:1}),e[5]||(e[5]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))])])])]),e[12]||(e[12]=t("h2",{id:"implementation",tabindex:"-1"},[s("Implementation "),t("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),e[13]||(e[13]=t("ul",null,[t("li",null,[t("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/prefer-escape-template-interpolations.js",target:"_blank",rel:"noreferrer"},"Rule source")]),t("li",null,[t("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/prefer-escape-template-interpolations.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const A=p(k,[["render",g]]);export{v as __pageData,A as default}; diff --git a/assets/rules_prefer-escape-template-interpolations.md.B9bZDD04.lean.js b/assets/rules_prefer-escape-template-interpolations.md.B9bZDD04.lean.js new file mode 100644 index 00000000..8735c351 --- /dev/null +++ b/assets/rules_prefer-escape-template-interpolations.md.B9bZDD04.lean.js @@ -0,0 +1,7 @@ +import{_ as p,c as n,a9 as i,j as t,G as r,w as l,a as s,B as o,o as h}from"./chunks/framework.D6W_pQcY.js";const v=JSON.parse('{"title":"lodash-template/prefer-escape-template-interpolations","description":"prefer escape micro-template interpolations. (ex. :ok: `<%- ... %>`, :ng: `<%= ... %>`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/prefer-escape-template-interpolations","description":"prefer escape micro-template interpolations. (ex. :ok: `<%- ... %>`, :ng: `<%= ... %>`)"},"headers":[],"relativePath":"rules/prefer-escape-template-interpolations.md","filePath":"rules/prefer-escape-template-interpolations.md","lastUpdated":1733171881000}'),k={name:"rules/prefer-escape-template-interpolations.md"},d={class:"language-html vp-adaptive-theme"},m={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},E={class:"line"};function g(u,e,f,c,y,b){const a=o("v-menu");return h(),n("div",null,[e[11]||(e[11]=i('

lodash-template/prefer-escape-template-interpolations

prefer escape micro-template interpolations. (ex. 🆗 <%- ... %>, 🆖 <%= ... %>)

  • ⚙️ This rule is included in "plugin:lodash-template/all".

Rule Details

This rule reports no escape micro-template interpolates.

',5)),t("div",d,[e[9]||(e[9]=t("button",{title:"Copy Code",class:"copy"},null,-1)),e[10]||(e[10]=t("span",{class:"lang"},"html",-1)),t("pre",m,[t("code",null,[e[8]||(e[8]=i(`<% /* eslint "lodash-template/prefer-escape-template-interpolations": "error" */ %> +<!-- ✓ GOOD --> +<div><%- text %></div> +<div><% print(html) %></div> + +<!-- ✗ BAD --> +`,12)),t("span",E,[e[2]||(e[2]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),e[3]||(e[3]=t("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),e[4]||(e[4]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),r(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>e[0]||(e[0]=[t("span",{class:"twoslash-popup-container vp-copy-ignore"},[t("div",{class:"twoslash-popup-error vp-doc"},[t("p",null,[s("The escape micro-template interpolation is preferable. ("),t("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/prefer-escape-template-interpolations.html"},"lodash-template/prefer-escape-template-interpolations"),s(")")])])],-1)])),default:l(()=>[e[1]||(e[1]=t("span",null,[t("span",null,[t("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%= text %>")])],-1))]),_:1}),e[5]||(e[5]=t("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))])])])]),e[12]||(e[12]=t("h2",{id:"implementation",tabindex:"-1"},[s("Implementation "),t("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),e[13]||(e[13]=t("ul",null,[t("li",null,[t("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/prefer-escape-template-interpolations.js",target:"_blank",rel:"noreferrer"},"Rule source")]),t("li",null,[t("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/prefer-escape-template-interpolations.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const A=p(k,[["render",g]]);export{v as __pageData,A as default}; diff --git a/assets/rules_scriptlet-indent.md.BlSYPqJq.js b/assets/rules_scriptlet-indent.md.BlSYPqJq.js new file mode 100644 index 00000000..40428d10 --- /dev/null +++ b/assets/rules_scriptlet-indent.md.BlSYPqJq.js @@ -0,0 +1,39 @@ +import{_ as h,c as p,a9 as l,j as i,G as n,w as a,a as t,B as k,o}from"./chunks/framework.D6W_pQcY.js";const q=JSON.parse('{"title":"lodash-template/scriptlet-indent","description":"enforce consistent indentation to scriptlet in micro-template tag.","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/scriptlet-indent","description":"enforce consistent indentation to scriptlet in micro-template tag."},"headers":[],"relativePath":"rules/scriptlet-indent.md","filePath":"rules/scriptlet-indent.md","lastUpdated":1733171881000}'),r={name:"rules/scriptlet-indent.md"},d={class:"language-html vp-adaptive-theme"},E={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},c={class:"line"},y={class:"line"};function u(f,s,m,b,D,F){const e=k("v-menu");return o(),p("div",null,[s[17]||(s[17]=l('

lodash-template/scriptlet-indent

enforce consistent indentation to scriptlet in micro-template tag.

  • ⚙️ This rule is included in all of "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces a consistent indentation style to script in micro-template tag. The default style is 2 spaces.

',5)),i("div",d,[s[15]||(s[15]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[16]||(s[16]=i("span",{class:"lang"},"html",-1)),i("pre",E,[i("code",null,[s[9]||(s[9]=l(`<% /* eslint "lodash-template/scriptlet-indent": "error" */ %> +<!-- ✓ GOOD --> +<% for ( + let i = 0; + i < arr.length; + i++ + ) { %> + <div class="<%= arr[i] %>"></div> +<% } %> + +<!-- ✗ BAD --> +<% for ( +`,24)),i("span",g,[n(e,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[0]||(s[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected indentation of 4 spaces but found 6 spaces. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/scriptlet-indent.html"},"lodash-template/scriptlet-indent"),t(")")])])],-1)])),default:a(()=>[s[1]||(s[1]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[2]||(s[2]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"let i = 0;",-1))]),s[10]||(s[10]=t(` +`)),s[11]||(s[11]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," i "),i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," arr.length;")],-1)),s[12]||(s[12]=t(` +`)),i("span",c,[n(e,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[3]||(s[3]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected indentation of 4 spaces but found 2 spaces. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/scriptlet-indent.html"},"lodash-template/scriptlet-indent"),t(")")])])],-1)])),default:a(()=>[s[4]||(s[4]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[5]||(s[5]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"i++",-1))]),s[13]||(s[13]=t(` +`)),i("span",y,[n(e,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[6]||(s[6]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected indentation of 2 spaces but found 4 spaces. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/scriptlet-indent.html"},"lodash-template/scriptlet-indent"),t(")")])])],-1)])),default:a(()=>[s[7]||(s[7]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[8]||(s[8]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},") { %>",-1))]),s[14]||(s[14]=l(` + <div class="<%= arr[i] %>"></div> +<% } %>`,4))])])]),s[18]||(s[18]=l(`

Options

json
{
+  "lodash-template/scriptlet-indent": ["error", type, {
+    "startIndent": 1,
+    "switchCase": 0
+  }]
+}
  • type (number | "tab") ... The type of indentation. Default is 2. If this is a number, it's the number of spaces for one indent. If this is "tab", it uses one tab for one indent.
  • startIndent (integer) ... The multiplier of indentation for top-level statements in micro-template tag. Default is 1.
  • switchCase (integer) ... The multiplier of indentation for case/default clauses. Default is 0.

Examples for this rule with {startIndent: 0}:

html
<% /* eslint "lodash-template/scriptlet-indent": ["error", 2, {"startIndent": 0}] */ %>
+<!-- ✓ GOOD -->
+<% for (
+  let i = 0;
+  i < arr.length;
+  i++
+) { %>
+  <div class="<%= arr[i] %>"></div>
+<% } %>

Examples for this rule with {startIndent: 2}:

html
<% /* eslint "lodash-template/scriptlet-indent": ["error", 2, {"startIndent": 2}] */ %>
+<!-- ✓ GOOD -->
+<% for (
+      let i = 0;
+      i < arr.length;
+      i++
+    ) { %>
+  <div class="<%= arr[i] %>"></div>
+<% } %>

Implementation

`,9))])}const v=h(r,[["render",u]]);export{q as __pageData,v as default}; diff --git a/assets/rules_scriptlet-indent.md.BlSYPqJq.lean.js b/assets/rules_scriptlet-indent.md.BlSYPqJq.lean.js new file mode 100644 index 00000000..40428d10 --- /dev/null +++ b/assets/rules_scriptlet-indent.md.BlSYPqJq.lean.js @@ -0,0 +1,39 @@ +import{_ as h,c as p,a9 as l,j as i,G as n,w as a,a as t,B as k,o}from"./chunks/framework.D6W_pQcY.js";const q=JSON.parse('{"title":"lodash-template/scriptlet-indent","description":"enforce consistent indentation to scriptlet in micro-template tag.","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/scriptlet-indent","description":"enforce consistent indentation to scriptlet in micro-template tag."},"headers":[],"relativePath":"rules/scriptlet-indent.md","filePath":"rules/scriptlet-indent.md","lastUpdated":1733171881000}'),r={name:"rules/scriptlet-indent.md"},d={class:"language-html vp-adaptive-theme"},E={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},g={class:"line"},c={class:"line"},y={class:"line"};function u(f,s,m,b,D,F){const e=k("v-menu");return o(),p("div",null,[s[17]||(s[17]=l('

lodash-template/scriptlet-indent

enforce consistent indentation to scriptlet in micro-template tag.

  • ⚙️ This rule is included in all of "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces a consistent indentation style to script in micro-template tag. The default style is 2 spaces.

',5)),i("div",d,[s[15]||(s[15]=i("button",{title:"Copy Code",class:"copy"},null,-1)),s[16]||(s[16]=i("span",{class:"lang"},"html",-1)),i("pre",E,[i("code",null,[s[9]||(s[9]=l(`<% /* eslint "lodash-template/scriptlet-indent": "error" */ %> +<!-- ✓ GOOD --> +<% for ( + let i = 0; + i < arr.length; + i++ + ) { %> + <div class="<%= arr[i] %>"></div> +<% } %> + +<!-- ✗ BAD --> +<% for ( +`,24)),i("span",g,[n(e,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[0]||(s[0]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected indentation of 4 spaces but found 6 spaces. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/scriptlet-indent.html"},"lodash-template/scriptlet-indent"),t(")")])])],-1)])),default:a(()=>[s[1]||(s[1]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[2]||(s[2]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"let i = 0;",-1))]),s[10]||(s[10]=t(` +`)),s[11]||(s[11]=i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," i "),i("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," arr.length;")],-1)),s[12]||(s[12]=t(` +`)),i("span",c,[n(e,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[3]||(s[3]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected indentation of 4 spaces but found 2 spaces. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/scriptlet-indent.html"},"lodash-template/scriptlet-indent"),t(")")])])],-1)])),default:a(()=>[s[4]||(s[4]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[5]||(s[5]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"i++",-1))]),s[13]||(s[13]=t(` +`)),i("span",y,[n(e,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:a(({})=>s[6]||(s[6]=[i("span",{class:"twoslash-popup-container vp-copy-ignore"},[i("div",{class:"twoslash-popup-error vp-doc"},[i("p",null,[t("Expected indentation of 2 spaces but found 4 spaces. ("),i("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/scriptlet-indent.html"},"lodash-template/scriptlet-indent"),t(")")])])],-1)])),default:a(()=>[s[7]||(s[7]=i("span",null,[i("span",null,[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")])],-1))]),_:1}),s[8]||(s[8]=i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},") { %>",-1))]),s[14]||(s[14]=l(` + <div class="<%= arr[i] %>"></div> +<% } %>`,4))])])]),s[18]||(s[18]=l(`

Options

json
{
+  "lodash-template/scriptlet-indent": ["error", type, {
+    "startIndent": 1,
+    "switchCase": 0
+  }]
+}
  • type (number | "tab") ... The type of indentation. Default is 2. If this is a number, it's the number of spaces for one indent. If this is "tab", it uses one tab for one indent.
  • startIndent (integer) ... The multiplier of indentation for top-level statements in micro-template tag. Default is 1.
  • switchCase (integer) ... The multiplier of indentation for case/default clauses. Default is 0.

Examples for this rule with {startIndent: 0}:

html
<% /* eslint "lodash-template/scriptlet-indent": ["error", 2, {"startIndent": 0}] */ %>
+<!-- ✓ GOOD -->
+<% for (
+  let i = 0;
+  i < arr.length;
+  i++
+) { %>
+  <div class="<%= arr[i] %>"></div>
+<% } %>

Examples for this rule with {startIndent: 2}:

html
<% /* eslint "lodash-template/scriptlet-indent": ["error", 2, {"startIndent": 2}] */ %>
+<!-- ✓ GOOD -->
+<% for (
+      let i = 0;
+      i < arr.length;
+      i++
+    ) { %>
+  <div class="<%= arr[i] %>"></div>
+<% } %>

Implementation

`,9))])}const v=h(r,[["render",u]]);export{q as __pageData,v as default}; diff --git a/assets/rules_template-tag-spacing.md.Ra2vYcon.js b/assets/rules_template-tag-spacing.md.Ra2vYcon.js new file mode 100644 index 00000000..8f7b5ce4 --- /dev/null +++ b/assets/rules_template-tag-spacing.md.Ra2vYcon.js @@ -0,0 +1,19 @@ +import{_ as n,c as o,a9 as p,j as s,G as e,w as l,a as t,B as h,o as r}from"./chunks/framework.D6W_pQcY.js";const P=JSON.parse('{"title":"lodash-template/template-tag-spacing","description":"enforce unified spacing in micro-template tag. (ex. :ok: `<%= prop %>`, :ng: `<%=prop%>`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/template-tag-spacing","description":"enforce unified spacing in micro-template tag. (ex. :ok: `<%= prop %>`, :ng: `<%=prop%>`)"},"headers":[],"relativePath":"rules/template-tag-spacing.md","filePath":"rules/template-tag-spacing.md","lastUpdated":1733171881000}'),k={name:"rules/template-tag-spacing.md"},d={class:"language-html vp-adaptive-theme"},g={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},E={class:"line"},u={class:"line"},m={class:"language-html vp-adaptive-theme"},y={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},f={class:"line"},v={class:"line"},b={class:"language-html vp-adaptive-theme"},w={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},c={class:"line"},D={class:"line"};function x(q,i,A,B,F,C){const a=h("v-menu");return r(),o("div",null,[i[78]||(i[78]=p('

lodash-template/template-tag-spacing

enforce unified spacing in micro-template tag. (ex. 🆗 <%= prop %>, 🆖 <%=prop%>)

  • ⚙️ This rule is included in all of "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule aims to enforce unified spacing in micro-template interpolate/evaluate.

',5)),s("div",d,[i[24]||(i[24]=s("button",{title:"Copy Code",class:"copy"},null,-1)),i[25]||(i[25]=s("span",{class:"lang"},"html",-1)),s("pre",g,[s("code",null,[i[22]||(i[22]=p(`<% /* eslint "lodash-template/template-tag-spacing": "error" */ %> +<!-- ✓ GOOD --> +<div><%= text %></div> + +<!-- ✗ BAD --> +`,10)),s("span",E,[i[4]||(i[4]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[5]||(i[5]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),i[6]||(i[6]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[0]||(i[0]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected 1 space after "),s("code",null,"<%="),t(", but 3 spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[1]||(i[1]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%=")])],-1))]),_:1}),i[7]||(i[7]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," text ",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[2]||(i[2]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected 1 space before "),s("code",null,"%>"),t(", but 3 spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[3]||(i[3]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%>")])],-1))]),_:1}),i[8]||(i[8]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))]),i[23]||(i[23]=t(` +`)),s("span",u,[i[15]||(i[15]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[16]||(i[16]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),i[17]||(i[17]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[11]||(i[11]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected 1 space after "),s("code",null,"<%="),t(", but no spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[12]||(i[12]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%=")])],-1))]),_:1}),i[18]||(i[18]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"text",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[13]||(i[13]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected 1 space before "),s("code",null,"%>"),t(", but no spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[14]||(i[14]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%>")])],-1))]),_:1}),i[19]||(i[19]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))])])])]),i[79]||(i[79]=p('

Options

Default spacing is set to always

json
{\n  "lodash-template/micro-template-interpolation-spacing": ["error", "always" | "never"]\n}

"always" - Expect one space between expression and curly brackets.

',4)),s("div",m,[i[50]||(i[50]=s("button",{title:"Copy Code",class:"copy"},null,-1)),i[51]||(i[51]=s("span",{class:"lang"},"html",-1)),s("pre",y,[s("code",null,[i[48]||(i[48]=p(`<% /* eslint "lodash-template/template-tag-spacing": ["error", "always"] */ %> +<!-- ✓ GOOD --> +<div><%= text %></div> + +<!-- ✗ BAD --> +`,10)),s("span",f,[i[30]||(i[30]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[31]||(i[31]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),i[32]||(i[32]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[26]||(i[26]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected 1 space after "),s("code",null,"<%="),t(", but 3 spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[27]||(i[27]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%=")])],-1))]),_:1}),i[33]||(i[33]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," text ",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[28]||(i[28]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected 1 space before "),s("code",null,"%>"),t(", but 3 spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[29]||(i[29]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%>")])],-1))]),_:1}),i[34]||(i[34]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))]),i[49]||(i[49]=t(` +`)),s("span",v,[i[41]||(i[41]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[42]||(i[42]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),i[43]||(i[43]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[37]||(i[37]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected 1 space after "),s("code",null,"<%="),t(", but no spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[38]||(i[38]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%=")])],-1))]),_:1}),i[44]||(i[44]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"text",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[39]||(i[39]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected 1 space before "),s("code",null,"%>"),t(", but no spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[40]||(i[40]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%>")])],-1))]),_:1}),i[45]||(i[45]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))])])])]),i[80]||(i[80]=s("h3",{id:"never-expect-no-spaces-between-expression-and-curly-brackets",tabindex:"-1"},[s("code",null,'"never"'),t(" - Expect no spaces between expression and curly brackets. "),s("a",{class:"header-anchor",href:"#never-expect-no-spaces-between-expression-and-curly-brackets","aria-label":'Permalink to "`"never"` - Expect no spaces between expression and curly brackets."'},"​")],-1)),s("div",b,[i[76]||(i[76]=s("button",{title:"Copy Code",class:"copy"},null,-1)),i[77]||(i[77]=s("span",{class:"lang"},"html",-1)),s("pre",w,[s("code",null,[i[74]||(i[74]=p(`<%/* eslint "lodash-template/template-tag-spacing": ["error", "never"] */%> +<!-- ✓ GOOD --> +<div><%=text%></div> + +<!-- ✗ BAD --> +`,10)),s("span",c,[i[56]||(i[56]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[57]||(i[57]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),i[58]||(i[58]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[52]||(i[52]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected no spaces after "),s("code",null,"<%="),t(", but 3 spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[53]||(i[53]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%=")])],-1))]),_:1}),i[59]||(i[59]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," text ",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[54]||(i[54]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected no spaces before "),s("code",null,"%>"),t(", but 3 spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[55]||(i[55]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%>")])],-1))]),_:1}),i[60]||(i[60]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))]),i[75]||(i[75]=t(` +`)),s("span",D,[i[67]||(i[67]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[68]||(i[68]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),i[69]||(i[69]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[63]||(i[63]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected no spaces after "),s("code",null,"<%="),t(", but 1 space found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[64]||(i[64]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%=")])],-1))]),_:1}),i[70]||(i[70]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," text ",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[65]||(i[65]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected no spaces before "),s("code",null,"%>"),t(", but 1 space found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[66]||(i[66]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%>")])],-1))]),_:1}),i[71]||(i[71]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))])])])]),i[81]||(i[81]=s("h2",{id:"implementation",tabindex:"-1"},[t("Implementation "),s("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),i[82]||(i[82]=s("ul",null,[s("li",null,[s("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/template-tag-spacing.js",target:"_blank",rel:"noreferrer"},"Rule source")]),s("li",null,[s("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/template-tag-spacing.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const T=n(k,[["render",x]]);export{P as __pageData,T as default}; diff --git a/assets/rules_template-tag-spacing.md.Ra2vYcon.lean.js b/assets/rules_template-tag-spacing.md.Ra2vYcon.lean.js new file mode 100644 index 00000000..8f7b5ce4 --- /dev/null +++ b/assets/rules_template-tag-spacing.md.Ra2vYcon.lean.js @@ -0,0 +1,19 @@ +import{_ as n,c as o,a9 as p,j as s,G as e,w as l,a as t,B as h,o as r}from"./chunks/framework.D6W_pQcY.js";const P=JSON.parse('{"title":"lodash-template/template-tag-spacing","description":"enforce unified spacing in micro-template tag. (ex. :ok: `<%= prop %>`, :ng: `<%=prop%>`)","frontmatter":{"pageClass":"rule-details","sidebarDepth":0,"title":"lodash-template/template-tag-spacing","description":"enforce unified spacing in micro-template tag. (ex. :ok: `<%= prop %>`, :ng: `<%=prop%>`)"},"headers":[],"relativePath":"rules/template-tag-spacing.md","filePath":"rules/template-tag-spacing.md","lastUpdated":1733171881000}'),k={name:"rules/template-tag-spacing.md"},d={class:"language-html vp-adaptive-theme"},g={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},E={class:"line"},u={class:"line"},m={class:"language-html vp-adaptive-theme"},y={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},f={class:"line"},v={class:"line"},b={class:"language-html vp-adaptive-theme"},w={class:"shiki shiki-themes github-light github-dark vp-code twoslash lsp",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabindex:"0"},c={class:"line"},D={class:"line"};function x(q,i,A,B,F,C){const a=h("v-menu");return r(),o("div",null,[i[78]||(i[78]=p('

lodash-template/template-tag-spacing

enforce unified spacing in micro-template tag. (ex. 🆗 <%= prop %>, 🆖 <%=prop%>)

  • ⚙️ This rule is included in all of "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule aims to enforce unified spacing in micro-template interpolate/evaluate.

',5)),s("div",d,[i[24]||(i[24]=s("button",{title:"Copy Code",class:"copy"},null,-1)),i[25]||(i[25]=s("span",{class:"lang"},"html",-1)),s("pre",g,[s("code",null,[i[22]||(i[22]=p(`<% /* eslint "lodash-template/template-tag-spacing": "error" */ %> +<!-- ✓ GOOD --> +<div><%= text %></div> + +<!-- ✗ BAD --> +`,10)),s("span",E,[i[4]||(i[4]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[5]||(i[5]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),i[6]||(i[6]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[0]||(i[0]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected 1 space after "),s("code",null,"<%="),t(", but 3 spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[1]||(i[1]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%=")])],-1))]),_:1}),i[7]||(i[7]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," text ",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[2]||(i[2]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected 1 space before "),s("code",null,"%>"),t(", but 3 spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[3]||(i[3]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%>")])],-1))]),_:1}),i[8]||(i[8]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))]),i[23]||(i[23]=t(` +`)),s("span",u,[i[15]||(i[15]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[16]||(i[16]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),i[17]||(i[17]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[11]||(i[11]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected 1 space after "),s("code",null,"<%="),t(", but no spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[12]||(i[12]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%=")])],-1))]),_:1}),i[18]||(i[18]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"text",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[13]||(i[13]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected 1 space before "),s("code",null,"%>"),t(", but no spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[14]||(i[14]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%>")])],-1))]),_:1}),i[19]||(i[19]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))])])])]),i[79]||(i[79]=p('

Options

Default spacing is set to always

json
{\n  "lodash-template/micro-template-interpolation-spacing": ["error", "always" | "never"]\n}

"always" - Expect one space between expression and curly brackets.

',4)),s("div",m,[i[50]||(i[50]=s("button",{title:"Copy Code",class:"copy"},null,-1)),i[51]||(i[51]=s("span",{class:"lang"},"html",-1)),s("pre",y,[s("code",null,[i[48]||(i[48]=p(`<% /* eslint "lodash-template/template-tag-spacing": ["error", "always"] */ %> +<!-- ✓ GOOD --> +<div><%= text %></div> + +<!-- ✗ BAD --> +`,10)),s("span",f,[i[30]||(i[30]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[31]||(i[31]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),i[32]||(i[32]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[26]||(i[26]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected 1 space after "),s("code",null,"<%="),t(", but 3 spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[27]||(i[27]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%=")])],-1))]),_:1}),i[33]||(i[33]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," text ",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[28]||(i[28]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected 1 space before "),s("code",null,"%>"),t(", but 3 spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[29]||(i[29]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%>")])],-1))]),_:1}),i[34]||(i[34]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))]),i[49]||(i[49]=t(` +`)),s("span",v,[i[41]||(i[41]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[42]||(i[42]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),i[43]||(i[43]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[37]||(i[37]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected 1 space after "),s("code",null,"<%="),t(", but no spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[38]||(i[38]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%=")])],-1))]),_:1}),i[44]||(i[44]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"text",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[39]||(i[39]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected 1 space before "),s("code",null,"%>"),t(", but no spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[40]||(i[40]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%>")])],-1))]),_:1}),i[45]||(i[45]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))])])])]),i[80]||(i[80]=s("h3",{id:"never-expect-no-spaces-between-expression-and-curly-brackets",tabindex:"-1"},[s("code",null,'"never"'),t(" - Expect no spaces between expression and curly brackets. "),s("a",{class:"header-anchor",href:"#never-expect-no-spaces-between-expression-and-curly-brackets","aria-label":'Permalink to "`"never"` - Expect no spaces between expression and curly brackets."'},"​")],-1)),s("div",b,[i[76]||(i[76]=s("button",{title:"Copy Code",class:"copy"},null,-1)),i[77]||(i[77]=s("span",{class:"lang"},"html",-1)),s("pre",w,[s("code",null,[i[74]||(i[74]=p(`<%/* eslint "lodash-template/template-tag-spacing": ["error", "never"] */%> +<!-- ✓ GOOD --> +<div><%=text%></div> + +<!-- ✗ BAD --> +`,10)),s("span",c,[i[56]||(i[56]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[57]||(i[57]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),i[58]||(i[58]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[52]||(i[52]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected no spaces after "),s("code",null,"<%="),t(", but 3 spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[53]||(i[53]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%=")])],-1))]),_:1}),i[59]||(i[59]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," text ",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[54]||(i[54]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected no spaces before "),s("code",null,"%>"),t(", but 3 spaces found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[55]||(i[55]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%>")])],-1))]),_:1}),i[60]||(i[60]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))]),i[75]||(i[75]=t(` +`)),s("span",D,[i[67]||(i[67]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<",-1)),i[68]||(i[68]=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div",-1)),i[69]||(i[69]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[63]||(i[63]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected no spaces after "),s("code",null,"<%="),t(", but 1 space found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[64]||(i[64]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#B31D28","--shiki-light-font-style":"italic","--shiki-dark":"#FDAEB7","--shiki-dark-font-style":"italic"}},"<"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%=")])],-1))]),_:1}),i[70]||(i[70]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," text ",-1)),e(a,{class:"twoslash-error twoslash-error-hover","popper-class":"shiki twoslash-floating vp-copy-ignore vp-code",theme:"twoslash"},{popper:l(({})=>i[65]||(i[65]=[s("span",{class:"twoslash-popup-container vp-copy-ignore"},[s("div",{class:"twoslash-popup-error vp-doc"},[s("p",null,[t("Expected no spaces before "),s("code",null,"%>"),t(", but 1 space found. ("),s("a",{href:"https://ota-meshi.github.io/eslint-plugin-lodash-template/rules/template-tag-spacing.html"},"lodash-template/template-tag-spacing"),t(")")])])],-1)])),default:l(()=>[i[66]||(i[66]=s("span",null,[s("span",null,[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"%>")])],-1))]),_:1}),i[71]||(i[71]=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"",-1))])])])]),i[81]||(i[81]=s("h2",{id:"implementation",tabindex:"-1"},[t("Implementation "),s("a",{class:"header-anchor",href:"#implementation","aria-label":'Permalink to "Implementation"'},"​")],-1)),i[82]||(i[82]=s("ul",null,[s("li",null,[s("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/rules/template-tag-spacing.js",target:"_blank",rel:"noreferrer"},"Rule source")]),s("li",null,[s("a",{href:"https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/tests/lib/rules/template-tag-spacing.js",target:"_blank",rel:"noreferrer"},"Test source")])],-1))])}const T=n(k,[["render",x]]);export{P as __pageData,T as default}; diff --git a/assets/services_ast-for-html.md.DCBHSak1.js b/assets/services_ast-for-html.md.DCBHSak1.js new file mode 100644 index 00000000..14472bdb --- /dev/null +++ b/assets/services_ast-for-html.md.DCBHSak1.js @@ -0,0 +1,68 @@ +import{_ as i,c as a,a9 as t,o as n}from"./chunks/framework.D6W_pQcY.js";const E=JSON.parse('{"title":"AST for HTML","description":"","frontmatter":{"sidebarDepth":1},"headers":[],"relativePath":"services/ast-for-html.md","filePath":"services/ast-for-html.md","lastUpdated":1733171881000}'),h={name:"services/ast-for-html.md"};function l(e,s,k,p,r,d){return n(),a("div",null,s[0]||(s[0]=[t(`

AST for HTML

You can use the type definition of this AST:

ts

+export function create(context) {
+    const microTemplateService = sourceCode.parserServices.getMicroTemplateService()
+    return {
+        "Program:exit"() {
+            microTemplateService.traverseDocumentNodes({
+                HTMLElement(node: HTMLElement): void {
+                    // ...
+                },
+                HTMLText(node: HTMLText): void {
+                    // ...
+                },
+                HTMLComment(node: HTMLComment): void {
+                    // ...
+                },
+            })
+        },
+    }
+}

See details: https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/ast/html-nodes.js

HTMLToken

ts
extend interface HTMLToken {
+    range: [ number ],
+    htmlValue: string,
+    value: string,
+}
  • The range property is an array which has 2 integers. The 1st integer is the offset of the start location of the node. The 2nd integer is the offset of the end location of the node.

HTMLNode

ts
extend interface HTMLNode {
+    range: [ number ]
+}
  • The range property is an array which has 2 integers. The 1st integer is the offset of the start location of the node. The 2nd integer is the offset of the end location of the node.

HTMLDocument

ts
interface HTMLDocument <: HTMLNode {
+    type: "HTMLDocument",
+    children: [ HTMLElement | HTMLText | HTMLComment ]
+}
  • This is a HTML Document.

HTMLDocumentFragment

ts
interface HTMLDocumentFragment <: HTMLNode  {
+    type: "HTMLDocumentFragment",
+    children: [ HTMLElement | HTMLText | HTMLComment ]
+}
  • This is a HTML DocumentFragment.

HTMLDocumentType

ts
interface HTMLDocumentType <: HTMLNode  {
+    type: "HTMLDocumentType",
+    name: string,
+    publicId: string,
+    systemId: string
+}
  • This is a HTML Document Type.

HTMLComment

ts
interface HTMLComment <: HTMLNode  {
+    type: "HTMLComment",
+    value: string,
+    commentOpen: HTMLToken | null,
+    commentClose: HTMLToken | null,
+}
  • This is a HTML comment node.

HTMLText

ts
interface HTMLText <: HTMLNode  {
+    type: "HTMLText",
+    value: string
+}
  • This is a HTML text node.

HTMLElement

ts
interface HTMLElement <: HTMLNode  {
+    type: "HTMLElement",
+    name: string,
+    children: [ HTMLElement | HTMLText | HTMLComment ]
+    startTag: HTMLStartTag | null,
+    endTag: HTMLEndTag | null
+}
  • This is a HTML element node.

HTMLStartTag

ts
interface HTMLStartTag <: HTMLNode  {
+    type: "HTMLStartTag",
+    attributes: [ HTMLAttribute ],
+    tagOpen: HTMLToken,
+    tagClose: HTMLToken,
+    selfClosing: boolean,
+    ignoredAttributes: [ HTMLAttribute ],
+}
  • This is a HTML element start tag.

HTMLAttribute

ts
interface HTMLAttribute <: HTMLNode  {
+    type: "HTMLAttribute",
+    key: string,
+    vakue: string,
+    keyToken: HTMLToken,
+    eqToken: HTMLToken | null,
+    valueToken: HTMLToken | null,
+}
  • This is a HTML attribute.

HTMLEndTag

ts
interface HTMLEndTag <: HTMLNode  {
+    type: "HTMLEndTag",
+    tagOpen: HTMLToken,
+    tagClose: HTMLToken,
+}
  • This is a HTML element end tag.
`,38)]))}const y=i(h,[["render",l]]);export{E as __pageData,y as default}; diff --git a/assets/services_ast-for-html.md.DCBHSak1.lean.js b/assets/services_ast-for-html.md.DCBHSak1.lean.js new file mode 100644 index 00000000..14472bdb --- /dev/null +++ b/assets/services_ast-for-html.md.DCBHSak1.lean.js @@ -0,0 +1,68 @@ +import{_ as i,c as a,a9 as t,o as n}from"./chunks/framework.D6W_pQcY.js";const E=JSON.parse('{"title":"AST for HTML","description":"","frontmatter":{"sidebarDepth":1},"headers":[],"relativePath":"services/ast-for-html.md","filePath":"services/ast-for-html.md","lastUpdated":1733171881000}'),h={name:"services/ast-for-html.md"};function l(e,s,k,p,r,d){return n(),a("div",null,s[0]||(s[0]=[t(`

AST for HTML

You can use the type definition of this AST:

ts

+export function create(context) {
+    const microTemplateService = sourceCode.parserServices.getMicroTemplateService()
+    return {
+        "Program:exit"() {
+            microTemplateService.traverseDocumentNodes({
+                HTMLElement(node: HTMLElement): void {
+                    // ...
+                },
+                HTMLText(node: HTMLText): void {
+                    // ...
+                },
+                HTMLComment(node: HTMLComment): void {
+                    // ...
+                },
+            })
+        },
+    }
+}

See details: https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/ast/html-nodes.js

HTMLToken

ts
extend interface HTMLToken {
+    range: [ number ],
+    htmlValue: string,
+    value: string,
+}
  • The range property is an array which has 2 integers. The 1st integer is the offset of the start location of the node. The 2nd integer is the offset of the end location of the node.

HTMLNode

ts
extend interface HTMLNode {
+    range: [ number ]
+}
  • The range property is an array which has 2 integers. The 1st integer is the offset of the start location of the node. The 2nd integer is the offset of the end location of the node.

HTMLDocument

ts
interface HTMLDocument <: HTMLNode {
+    type: "HTMLDocument",
+    children: [ HTMLElement | HTMLText | HTMLComment ]
+}
  • This is a HTML Document.

HTMLDocumentFragment

ts
interface HTMLDocumentFragment <: HTMLNode  {
+    type: "HTMLDocumentFragment",
+    children: [ HTMLElement | HTMLText | HTMLComment ]
+}
  • This is a HTML DocumentFragment.

HTMLDocumentType

ts
interface HTMLDocumentType <: HTMLNode  {
+    type: "HTMLDocumentType",
+    name: string,
+    publicId: string,
+    systemId: string
+}
  • This is a HTML Document Type.

HTMLComment

ts
interface HTMLComment <: HTMLNode  {
+    type: "HTMLComment",
+    value: string,
+    commentOpen: HTMLToken | null,
+    commentClose: HTMLToken | null,
+}
  • This is a HTML comment node.

HTMLText

ts
interface HTMLText <: HTMLNode  {
+    type: "HTMLText",
+    value: string
+}
  • This is a HTML text node.

HTMLElement

ts
interface HTMLElement <: HTMLNode  {
+    type: "HTMLElement",
+    name: string,
+    children: [ HTMLElement | HTMLText | HTMLComment ]
+    startTag: HTMLStartTag | null,
+    endTag: HTMLEndTag | null
+}
  • This is a HTML element node.

HTMLStartTag

ts
interface HTMLStartTag <: HTMLNode  {
+    type: "HTMLStartTag",
+    attributes: [ HTMLAttribute ],
+    tagOpen: HTMLToken,
+    tagClose: HTMLToken,
+    selfClosing: boolean,
+    ignoredAttributes: [ HTMLAttribute ],
+}
  • This is a HTML element start tag.

HTMLAttribute

ts
interface HTMLAttribute <: HTMLNode  {
+    type: "HTMLAttribute",
+    key: string,
+    vakue: string,
+    keyToken: HTMLToken,
+    eqToken: HTMLToken | null,
+    valueToken: HTMLToken | null,
+}
  • This is a HTML attribute.

HTMLEndTag

ts
interface HTMLEndTag <: HTMLNode  {
+    type: "HTMLEndTag",
+    tagOpen: HTMLToken,
+    tagClose: HTMLToken,
+}
  • This is a HTML element end tag.
`,38)]))}const y=i(h,[["render",l]]);export{E as __pageData,y as default}; diff --git a/assets/services_ast-for-template-tag.md.DUGFd6lv.js b/assets/services_ast-for-template-tag.md.DUGFd6lv.js new file mode 100644 index 00000000..8e7ccaf8 --- /dev/null +++ b/assets/services_ast-for-template-tag.md.DUGFd6lv.js @@ -0,0 +1,44 @@ +import{_ as i,c as a,a9 as e,o as t}from"./chunks/framework.D6W_pQcY.js";const E=JSON.parse('{"title":"AST for <%= templateTag %>","description":"","frontmatter":{"sidebarDepth":1},"headers":[],"relativePath":"services/ast-for-template-tag.md","filePath":"services/ast-for-template-tag.md","lastUpdated":1733171881000}'),n={name:"services/ast-for-template-tag.md"};function l(h,s,p,k,r,d){return t(),a("div",null,s[0]||(s[0]=[e(`

AST for <%= templateTag %>

You can use the type definition of this AST:

ts

+export function create(context) {
+    const microTemplateService = sourceCode.parserServices.getMicroTemplateService()
+    return {
+        "Program:exit"() {
+            microTemplateService.traverseMicroTemplates({
+                MicroTemplateEvaluate(node: MicroTemplateEvaluate): void {
+                    // ...
+                },
+                MicroTemplateInterpolate(node: MicroTemplateInterpolate): void {
+                    // ...
+                },
+                MicroTemplateEscape(node: MicroTemplateEscape): void {
+                    // ...
+                },
+            })
+        },
+    }
+}

See details: https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/ast/micro-template-nodes.js

Token

ts
extend interface Token {
+    range: [ number ]
+}
  • The range property is an array which has 2 integers. The 1st integer is the offset of the start location of the node. The 2nd integer is the offset of the end location of the node.

Node

ts
extend interface Node {
+    range: [ number ]
+}
  • The range property is an array which has 2 integers. The 1st integer is the offset of the start location of the node. The 2nd integer is the offset of the end location of the node.

MicroTemplateEvaluate

ts
interface MicroTemplateEvaluate <: Node {
+    type: "MicroTemplateEvaluate",
+    expressionStart: MicroTemplateExpressionStart,
+    expressionEnd: MicroTemplateExpressionEnd,
+    code: string
+}
  • This is a template tag that is evaluated as script.
  • The start tag information is stored in the expressionStart property.
  • The end tag information is stored in the expressionEnd property.

MicroTemplateInterpolate

ts
interface MicroTemplateInterpolate <: Node  {
+    type: "MicroTemplateInterpolate",
+    expressionStart: MicroTemplateExpressionStart,
+    expressionEnd: MicroTemplateExpressionEnd,
+    code: string
+}
  • This is a template tag that is interpolate as template.
  • The start tag information is stored in the expressionStart property.
  • The end tag information is stored in the expressionEnd property.

MicroTemplateEscape

ts
interface MicroTemplateInterpolate <: Node  {
+    type: "MicroTemplateEscape",
+    expressionStart: MicroTemplateExpressionStart,
+    expressionEnd: MicroTemplateExpressionEnd,
+    code: string
+}
  • This is a template tag that is escapes to interpolate as template.
  • The start tag information is stored in the expressionStart property.
  • The end tag information is stored in the expressionEnd property.

MicroTemplateExpressionStart

ts
interface MicroTemplateExpressionStart <: Token  {
+    type: "MicroTemplateExpressionStart",
+    chars: string
+}
  • This is the start tag of the template tag.
  • The delimiter string is stored in the chars property.

MicroTemplateExpressionEnd

ts
interface MicroTemplateExpressionEnd <: Token  {
+    type: "MicroTemplateExpressionEnd",
+    chars: string
+}
  • This is the end tag of the template tag.
  • The delimiter string is stored in the chars property.
`,26)]))}const g=i(n,[["render",l]]);export{E as __pageData,g as default}; diff --git a/assets/services_ast-for-template-tag.md.DUGFd6lv.lean.js b/assets/services_ast-for-template-tag.md.DUGFd6lv.lean.js new file mode 100644 index 00000000..8e7ccaf8 --- /dev/null +++ b/assets/services_ast-for-template-tag.md.DUGFd6lv.lean.js @@ -0,0 +1,44 @@ +import{_ as i,c as a,a9 as e,o as t}from"./chunks/framework.D6W_pQcY.js";const E=JSON.parse('{"title":"AST for <%= templateTag %>","description":"","frontmatter":{"sidebarDepth":1},"headers":[],"relativePath":"services/ast-for-template-tag.md","filePath":"services/ast-for-template-tag.md","lastUpdated":1733171881000}'),n={name:"services/ast-for-template-tag.md"};function l(h,s,p,k,r,d){return t(),a("div",null,s[0]||(s[0]=[e(`

AST for <%= templateTag %>

You can use the type definition of this AST:

ts

+export function create(context) {
+    const microTemplateService = sourceCode.parserServices.getMicroTemplateService()
+    return {
+        "Program:exit"() {
+            microTemplateService.traverseMicroTemplates({
+                MicroTemplateEvaluate(node: MicroTemplateEvaluate): void {
+                    // ...
+                },
+                MicroTemplateInterpolate(node: MicroTemplateInterpolate): void {
+                    // ...
+                },
+                MicroTemplateEscape(node: MicroTemplateEscape): void {
+                    // ...
+                },
+            })
+        },
+    }
+}

See details: https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/ast/micro-template-nodes.js

Token

ts
extend interface Token {
+    range: [ number ]
+}
  • The range property is an array which has 2 integers. The 1st integer is the offset of the start location of the node. The 2nd integer is the offset of the end location of the node.

Node

ts
extend interface Node {
+    range: [ number ]
+}
  • The range property is an array which has 2 integers. The 1st integer is the offset of the start location of the node. The 2nd integer is the offset of the end location of the node.

MicroTemplateEvaluate

ts
interface MicroTemplateEvaluate <: Node {
+    type: "MicroTemplateEvaluate",
+    expressionStart: MicroTemplateExpressionStart,
+    expressionEnd: MicroTemplateExpressionEnd,
+    code: string
+}
  • This is a template tag that is evaluated as script.
  • The start tag information is stored in the expressionStart property.
  • The end tag information is stored in the expressionEnd property.

MicroTemplateInterpolate

ts
interface MicroTemplateInterpolate <: Node  {
+    type: "MicroTemplateInterpolate",
+    expressionStart: MicroTemplateExpressionStart,
+    expressionEnd: MicroTemplateExpressionEnd,
+    code: string
+}
  • This is a template tag that is interpolate as template.
  • The start tag information is stored in the expressionStart property.
  • The end tag information is stored in the expressionEnd property.

MicroTemplateEscape

ts
interface MicroTemplateInterpolate <: Node  {
+    type: "MicroTemplateEscape",
+    expressionStart: MicroTemplateExpressionStart,
+    expressionEnd: MicroTemplateExpressionEnd,
+    code: string
+}
  • This is a template tag that is escapes to interpolate as template.
  • The start tag information is stored in the expressionStart property.
  • The end tag information is stored in the expressionEnd property.

MicroTemplateExpressionStart

ts
interface MicroTemplateExpressionStart <: Token  {
+    type: "MicroTemplateExpressionStart",
+    chars: string
+}
  • This is the start tag of the template tag.
  • The delimiter string is stored in the chars property.

MicroTemplateExpressionEnd

ts
interface MicroTemplateExpressionEnd <: Token  {
+    type: "MicroTemplateExpressionEnd",
+    chars: string
+}
  • This is the end tag of the template tag.
  • The delimiter string is stored in the chars property.
`,26)]))}const g=i(n,[["render",l]]);export{E as __pageData,g as default}; diff --git a/assets/services_index.md.Cq1QsQcw.js b/assets/services_index.md.Cq1QsQcw.js new file mode 100644 index 00000000..13079138 --- /dev/null +++ b/assets/services_index.md.Cq1QsQcw.js @@ -0,0 +1 @@ +import{_ as t,c as a,a9 as r,o as i}from"./chunks/framework.D6W_pQcY.js";const d=JSON.parse('{"title":"Contributing","description":"","frontmatter":{},"headers":[],"relativePath":"services/index.md","filePath":"services/index.md","lastUpdated":1733171881000}'),s={name:"services/index.md"};function o(l,e,c,m,n,h){return i(),a("div",null,e[0]||(e[0]=[r('

Contributing

MicroTemplateService

This plugin's parser provides MicroTemplateService from parserServices. MicroTemplateServic can be get with sourceCode.parserServices.getMicroTemplateService().

Traverse MicroTemplates

Traverse HTML

',7)]))}const u=t(s,[["render",o]]);export{d as __pageData,u as default}; diff --git a/assets/services_index.md.Cq1QsQcw.lean.js b/assets/services_index.md.Cq1QsQcw.lean.js new file mode 100644 index 00000000..13079138 --- /dev/null +++ b/assets/services_index.md.Cq1QsQcw.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,a9 as r,o as i}from"./chunks/framework.D6W_pQcY.js";const d=JSON.parse('{"title":"Contributing","description":"","frontmatter":{},"headers":[],"relativePath":"services/index.md","filePath":"services/index.md","lastUpdated":1733171881000}'),s={name:"services/index.md"};function o(l,e,c,m,n,h){return i(),a("div",null,e[0]||(e[0]=[r('

Contributing

MicroTemplateService

This plugin's parser provides MicroTemplateService from parserServices. MicroTemplateServic can be get with sourceCode.parserServices.getMicroTemplateService().

Traverse MicroTemplates

Traverse HTML

',7)]))}const u=t(s,[["render",o]]);export{d as __pageData,u as default}; diff --git a/assets/style.BacqnFk4.css b/assets/style.BacqnFk4.css new file mode 100644 index 00000000..60876d6f --- /dev/null +++ b/assets/style.BacqnFk4.css @@ -0,0 +1 @@ +@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/eslint-plugin-lodash-template/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) 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:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/eslint-plugin-lodash-template/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/eslint-plugin-lodash-template/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/eslint-plugin-lodash-template/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/eslint-plugin-lodash-template/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/eslint-plugin-lodash-template/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/eslint-plugin-lodash-template/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/eslint-plugin-lodash-template/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) 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:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/eslint-plugin-lodash-template/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/eslint-plugin-lodash-template/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/eslint-plugin-lodash-template/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/eslint-plugin-lodash-template/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/eslint-plugin-lodash-template/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/eslint-plugin-lodash-template/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;-webkit-user-select:none;user-select:none;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-c79a1216]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-c79a1216],.VPBackdrop.fade-leave-to[data-v-c79a1216]{opacity:0}.VPBackdrop.fade-leave-active[data-v-c79a1216]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-c79a1216]{display:none}}.NotFound[data-v-d6be1790]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-d6be1790]{padding:96px 32px 168px}}.code[data-v-d6be1790]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-d6be1790]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-d6be1790]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-d6be1790]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-d6be1790]{padding-top:20px}.link[data-v-d6be1790]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-d6be1790]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-b933a997]{position:relative;z-index:1}.nested[data-v-b933a997]{padding-right:16px;padding-left:16px}.outline-link[data-v-b933a997]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-b933a997]:hover,.outline-link.active[data-v-b933a997]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-b933a997]{padding-left:13px}.VPDocAsideOutline[data-v-a5bbad30]{display:none}.VPDocAsideOutline.has-outline[data-v-a5bbad30]{display:block}.content[data-v-a5bbad30]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-a5bbad30]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-a5bbad30]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-3f215769]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-3f215769]{flex-grow:1}.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-3f215769] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-e98dd255]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-e98dd255]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-e257564d]{margin-top:64px}.edit-info[data-v-e257564d]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-e257564d]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-e257564d]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-e257564d]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-e257564d]{margin-right:8px}.prev-next[data-v-e257564d]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-e257564d]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-e257564d]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-e257564d]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-e257564d]{margin-left:auto;text-align:right}.desc[data-v-e257564d]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-e257564d]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-39a288b8]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-39a288b8]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-39a288b8]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-39a288b8]{display:flex;justify-content:center}.VPDoc .aside[data-v-39a288b8]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{max-width:1104px}}.container[data-v-39a288b8]{margin:0 auto;width:100%}.aside[data-v-39a288b8]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-39a288b8]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-39a288b8]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-39a288b8]::-webkit-scrollbar{display:none}.aside-curtain[data-v-39a288b8]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-39a288b8]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-39a288b8]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-39a288b8]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-39a288b8]{order:1;margin:0;min-width:640px}}.content-container[data-v-39a288b8]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-39a288b8]{max-width:688px}.VPButton[data-v-fa7799d5]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-fa7799d5]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-fa7799d5]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-fa7799d5]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-fa7799d5]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-fa7799d5]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-fa7799d5]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-fa7799d5]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-fa7799d5]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-fa7799d5]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-fa7799d5]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-fa7799d5]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-fa7799d5]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-8426fc1a]{display:none}.dark .VPImage.light[data-v-8426fc1a]{display:none}.VPHero[data-v-303bb580]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-303bb580]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-303bb580]{flex-direction:row}}.main[data-v-303bb580]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-303bb580]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-303bb580]{text-align:left}}@media (min-width: 960px){.main[data-v-303bb580]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-303bb580]{max-width:592px}}.name[data-v-303bb580],.text[data-v-303bb580]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0 auto}.name[data-v-303bb580]{color:var(--vp-home-hero-name-color)}.clip[data-v-303bb580]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-303bb580],.text[data-v-303bb580]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-303bb580],.text[data-v-303bb580]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0}}.tagline[data-v-303bb580]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-303bb580]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-303bb580]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-303bb580]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-303bb580]{margin:0}}.actions[data-v-303bb580]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-303bb580]{justify-content:center}@media (min-width: 640px){.actions[data-v-303bb580]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-303bb580]{justify-content:flex-start}}.action[data-v-303bb580]{flex-shrink:0;padding:6px}.image[data-v-303bb580]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-303bb580]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-303bb580]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-303bb580]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-303bb580]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-303bb580]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-303bb580]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-303bb580]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-303bb580]{width:320px;height:320px}}[data-v-303bb580] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-303bb580] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-303bb580] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-a3976bdc]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-a3976bdc]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-a3976bdc]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-a3976bdc]>.VPImage{margin-bottom:20px}.icon[data-v-a3976bdc]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-a3976bdc]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-a3976bdc]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-a3976bdc]{padding-top:8px}.link-text-value[data-v-a3976bdc]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-a3976bdc]{margin-left:6px}.VPFeatures[data-v-a6181336]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-a6181336]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-a6181336]{padding:0 64px}}.container[data-v-a6181336]{margin:0 auto;max-width:1152px}.items[data-v-a6181336]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-a6181336]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336]{width:50%}.item.grid-3[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-a6181336]{width:25%}}.container[data-v-8e2d4988]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-8e2d4988]{padding:0 48px}}@media (min-width: 960px){.container[data-v-8e2d4988]{width:100%;padding:0 64px}}.vp-doc[data-v-8e2d4988] .VPHomeSponsors,.vp-doc[data-v-8e2d4988] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-8e2d4988] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-8e2d4988] .VPHomeSponsors a,.vp-doc[data-v-8e2d4988] .VPTeamPage a{text-decoration:none}.VPHome[data-v-686f80a6]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-686f80a6]{margin-bottom:128px}}.VPContent[data-v-1428d186]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-1428d186]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-1428d186]{margin:0}@media (min-width: 960px){.VPContent[data-v-1428d186]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-1428d186]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-1428d186]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-e315a0ad]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-e315a0ad]{display:none}.VPFooter[data-v-e315a0ad] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-e315a0ad] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-e315a0ad]{padding:32px}}.container[data-v-e315a0ad]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-e315a0ad],.copyright[data-v-e315a0ad]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-17a5e62e]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-17a5e62e]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-17a5e62e]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-17a5e62e]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-17a5e62e]{color:var(--vp-c-text-1)}.icon[data-v-17a5e62e]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-17a5e62e]{font-size:14px}.icon[data-v-17a5e62e]{font-size:16px}}.open>.icon[data-v-17a5e62e]{transform:rotate(90deg)}.items[data-v-17a5e62e]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-17a5e62e]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-17a5e62e]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-17a5e62e]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-17a5e62e]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-17a5e62e]{transition:all .2s ease-out}.flyout-leave-active[data-v-17a5e62e]{transition:all .15s ease-in}.flyout-enter-from[data-v-17a5e62e],.flyout-leave-to[data-v-17a5e62e]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-a6f0e41e]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-a6f0e41e]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-a6f0e41e]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-a6f0e41e]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-a6f0e41e]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-a6f0e41e]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-a6f0e41e]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-a6f0e41e]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-a6f0e41e]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-a6f0e41e]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-a6f0e41e]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-a6f0e41e]{display:none}}.menu-icon[data-v-a6f0e41e]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-a6f0e41e]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-a6f0e41e]{padding:12px 32px 11px}}.VPSwitch[data-v-1d5665e3]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-1d5665e3]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-1d5665e3]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-1d5665e3]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-1d5665e3] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-1d5665e3] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-5337faa4]{opacity:1}.moon[data-v-5337faa4],.dark .sun[data-v-5337faa4]{opacity:0}.dark .moon[data-v-5337faa4]{opacity:1}.dark .VPSwitchAppearance[data-v-5337faa4] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-6c893767]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-6c893767]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-35975db6]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-35975db6]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-35975db6]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-35975db6]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-69e747b5]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-69e747b5]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-69e747b5]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-69e747b5]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-b98bc113]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-b98bc113] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-b98bc113] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-b98bc113] .group:last-child{padding-bottom:0}.VPMenu[data-v-b98bc113] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-b98bc113] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-b98bc113] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-b98bc113] .action{padding-left:24px}.VPFlyout[data-v-cf11d7a2]{position:relative}.VPFlyout[data-v-cf11d7a2]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-cf11d7a2]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-cf11d7a2]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-cf11d7a2]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-cf11d7a2]{color:var(--vp-c-brand-2)}.button[aria-expanded=false]+.menu[data-v-cf11d7a2]{opacity:0;visibility:hidden;transform:translateY(0)}.VPFlyout:hover .menu[data-v-cf11d7a2],.button[aria-expanded=true]+.menu[data-v-cf11d7a2]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-cf11d7a2]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-cf11d7a2]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-cf11d7a2]{margin-right:0;font-size:16px}.text-icon[data-v-cf11d7a2]{margin-left:4px;font-size:14px}.icon[data-v-cf11d7a2]{font-size:20px;transition:fill .25s}.menu[data-v-cf11d7a2]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-bd121fe5]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-bd121fe5]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-bd121fe5]>svg,.VPSocialLink[data-v-bd121fe5]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-7bc22406]{display:flex;justify-content:center}.VPNavBarExtra[data-v-bb2aa2f0]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-bb2aa2f0]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-bb2aa2f0]{display:none}}.trans-title[data-v-bb2aa2f0]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-bb2aa2f0],.item.social-links[data-v-bb2aa2f0]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-bb2aa2f0]{min-width:176px}.appearance-action[data-v-bb2aa2f0]{margin-right:-2px}.social-links-list[data-v-bb2aa2f0]{margin:-4px -8px}.VPNavBarHamburger[data-v-e5dd9c1c]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-e5dd9c1c]{display:none}}.container[data-v-e5dd9c1c]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-e5dd9c1c]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .middle[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .bottom[data-v-e5dd9c1c]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-e5dd9c1c],.middle[data-v-e5dd9c1c],.bottom[data-v-e5dd9c1c]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(0)}.middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-e56f3d57]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-e56f3d57],.VPNavBarMenuLink[data-v-e56f3d57]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-dc692963]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-dc692963]{display:flex}}/*! @docsearch/css 3.8.0 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch-Button-Key--pressed{box-shadow:var(--docsearch-key-pressed-shadow);transform:translate3d(0,1px,0)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-0394ad82]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-0394ad82]{display:flex;align-items:center}}.title[data-v-1168a8e4]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-1168a8e4]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-1168a8e4]{border-bottom-color:var(--vp-c-divider)}}[data-v-1168a8e4] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-88af2de4]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-88af2de4]{display:flex;align-items:center}}.title[data-v-88af2de4]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-6aa21345]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-6aa21345]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-6aa21345]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-6aa21345]:not(.home){background-color:transparent}.VPNavBar[data-v-6aa21345]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-6aa21345]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-6aa21345]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-6aa21345]{padding:0}}.container[data-v-6aa21345]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-6aa21345],.container>.content[data-v-6aa21345]{pointer-events:none}.container[data-v-6aa21345] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-6aa21345]{max-width:100%}}.title[data-v-6aa21345]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-6aa21345]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-6aa21345]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-6aa21345]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-6aa21345]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-6aa21345]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-6aa21345]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-6aa21345]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-6aa21345]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-6aa21345]{column-gap:.5rem}}.menu+.translations[data-v-6aa21345]:before,.menu+.appearance[data-v-6aa21345]:before,.menu+.social-links[data-v-6aa21345]:before,.translations+.appearance[data-v-6aa21345]:before,.appearance+.social-links[data-v-6aa21345]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-6aa21345]:before,.translations+.appearance[data-v-6aa21345]:before{margin-right:16px}.appearance+.social-links[data-v-6aa21345]:before{margin-left:16px}.social-links[data-v-6aa21345]{margin-right:-8px}.divider[data-v-6aa21345]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-6aa21345]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-6aa21345]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-6aa21345]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-6aa21345]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-6aa21345]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-6aa21345]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-b44890b2]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-b44890b2]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-df37e6dd]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-df37e6dd]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-3e9c20e4]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-3e9c20e4]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-8133b170]{display:block}.title[data-v-8133b170]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-b9ab8c58]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-b9ab8c58]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-b9ab8c58]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-b9ab8c58]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-b9ab8c58]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-b9ab8c58]{transform:rotate(45deg)}.button[data-v-b9ab8c58]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-b9ab8c58]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-b9ab8c58]{transition:transform .25s}.group[data-v-b9ab8c58]:first-child{padding-top:0}.group+.group[data-v-b9ab8c58],.group+.item[data-v-b9ab8c58]{padding-top:4px}.VPNavScreenTranslations[data-v-858fe1a4]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-858fe1a4]{height:auto}.title[data-v-858fe1a4]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-858fe1a4]{font-size:16px}.icon.lang[data-v-858fe1a4]{margin-right:8px}.icon.chevron[data-v-858fe1a4]{margin-left:4px}.list[data-v-858fe1a4]{padding:4px 0 0 24px}.link[data-v-858fe1a4]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-f2779853]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-f2779853],.VPNavScreen.fade-leave-active[data-v-f2779853]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-f2779853],.VPNavScreen.fade-leave-active .container[data-v-f2779853]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-f2779853],.VPNavScreen.fade-leave-to[data-v-f2779853]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-f2779853],.VPNavScreen.fade-leave-to .container[data-v-f2779853]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-f2779853]{display:none}}.container[data-v-f2779853]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-f2779853],.menu+.appearance[data-v-f2779853],.translations+.appearance[data-v-f2779853]{margin-top:24px}.menu+.social-links[data-v-f2779853]{margin-top:16px}.appearance+.social-links[data-v-f2779853]{margin-top:16px}.VPNav[data-v-ae24b3ad]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-ae24b3ad]{position:fixed}}.VPSidebarItem.level-0[data-v-b7550ba0]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-b7550ba0]{padding-bottom:10px}.item[data-v-b7550ba0]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-b7550ba0]{cursor:pointer}.indicator[data-v-b7550ba0]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-b7550ba0],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-b7550ba0],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-b7550ba0],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-b7550ba0]{background-color:var(--vp-c-brand-1)}.link[data-v-b7550ba0]{display:flex;align-items:center;flex-grow:1}.text[data-v-b7550ba0]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-b7550ba0]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-b7550ba0],.VPSidebarItem.level-2 .text[data-v-b7550ba0],.VPSidebarItem.level-3 .text[data-v-b7550ba0],.VPSidebarItem.level-4 .text[data-v-b7550ba0],.VPSidebarItem.level-5 .text[data-v-b7550ba0]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-b7550ba0]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-1.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-2.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-3.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-4.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-5.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-b7550ba0]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-b7550ba0]{color:var(--vp-c-brand-1)}.caret[data-v-b7550ba0]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-b7550ba0]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-b7550ba0]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-b7550ba0]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-b7550ba0]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-b7550ba0],.VPSidebarItem.level-2 .items[data-v-b7550ba0],.VPSidebarItem.level-3 .items[data-v-b7550ba0],.VPSidebarItem.level-4 .items[data-v-b7550ba0],.VPSidebarItem.level-5 .items[data-v-b7550ba0]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-b7550ba0]{display:none}.no-transition[data-v-c40bc020] .caret-icon{transition:none}.group+.group[data-v-c40bc020]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-c40bc020]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-319d5ca6]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-319d5ca6]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-319d5ca6]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-319d5ca6]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-319d5ca6]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-319d5ca6]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-319d5ca6]{outline:0}.VPSkipLink[data-v-0f60ec36]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-0f60ec36]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-0f60ec36]{top:14px;left:16px}}.Layout[data-v-5d98c3a5]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3d121b4a]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-3d121b4a]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-3d121b4a]{margin:128px 0}}.VPHomeSponsors[data-v-3d121b4a]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-3d121b4a]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-3d121b4a]{padding:0 64px}}.container[data-v-3d121b4a]{margin:0 auto;max-width:1152px}.love[data-v-3d121b4a]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-3d121b4a]{display:inline-block}.message[data-v-3d121b4a]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-3d121b4a]{padding-top:32px}.action[data-v-3d121b4a]{padding-top:40px;text-align:center}.VPTeamPage[data-v-7c57f839]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-7c57f839]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-7c57f839-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-7c57f839-s],.VPTeamMembers+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-7c57f839-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-7c57f839-s],.VPTeamMembers+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:96px}}.VPTeamMembers[data-v-7c57f839-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-7c57f839-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-7c57f839-s]{padding:0 64px}}.VPTeamPageTitle[data-v-bf2cbdac]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:80px 64px 48px}}.title[data-v-bf2cbdac]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-bf2cbdac]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-bf2cbdac]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-bf2cbdac]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-b1a88750]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-b1a88750]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-b1a88750]{padding:0 64px}}.title[data-v-b1a88750]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-b1a88750]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-b1a88750]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-b1a88750]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-b1a88750]{padding-top:40px}.VPTeamMembersItem[data-v-f3fa364a]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f3fa364a]{padding:32px}.VPTeamMembersItem.small .data[data-v-f3fa364a]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f3fa364a]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f3fa364a]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f3fa364a]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f3fa364a]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f3fa364a]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f3fa364a]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f3fa364a]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f3fa364a]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f3fa364a]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f3fa364a]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f3fa364a]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f3fa364a]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f3fa364a]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f3fa364a]{text-align:center}.avatar[data-v-f3fa364a]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f3fa364a]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-f3fa364a]{margin:0;font-weight:600}.affiliation[data-v-f3fa364a]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f3fa364a]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f3fa364a]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f3fa364a]{margin:0 auto}.desc[data-v-f3fa364a] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f3fa364a]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f3fa364a]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f3fa364a]:hover,.sp .sp-link.link[data-v-f3fa364a]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f3fa364a]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-6cb0dbc4]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-6cb0dbc4]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-6cb0dbc4]{max-width:876px}.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-6cb0dbc4]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-6cb0dbc4]{max-width:760px}.container[data-v-6cb0dbc4]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper__popper{z-index:10000;top:0;left:0;outline:none}.v-popper__popper.v-popper__popper--hidden{visibility:hidden;opacity:0;transition:opacity .15s,visibility .15s;pointer-events:none}.v-popper__popper.v-popper__popper--shown{visibility:visible;opacity:1;transition:opacity .15s}.v-popper__popper.v-popper__popper--skip-transition,.v-popper__popper.v-popper__popper--skip-transition>.v-popper__wrapper{transition:none!important}.v-popper__backdrop{position:absolute;top:0;left:0;width:100%;height:100%;display:none}.v-popper__inner{position:relative;box-sizing:border-box;overflow-y:auto}.v-popper__inner>div{position:relative;z-index:1;max-width:inherit;max-height:inherit}.v-popper__arrow-container{position:absolute;width:10px;height:10px}.v-popper__popper--arrow-overflow .v-popper__arrow-container,.v-popper__popper--no-positioning .v-popper__arrow-container{display:none}.v-popper__arrow-inner,.v-popper__arrow-outer{border-style:solid;position:absolute;top:0;left:0;width:0;height:0}.v-popper__arrow-inner{visibility:hidden;border-width:7px}.v-popper__arrow-outer{border-width:6px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{left:-2px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{left:-1px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{border-bottom-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{border-top-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{top:-4px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{top:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{top:-1px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{border-left-width:0;border-left-color:transparent!important;border-top-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{left:-4px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{left:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer{border-right-width:0;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner{left:-2px}.v-popper--theme-tooltip .v-popper__inner{background:#000c;color:#fff;border-radius:6px;padding:7px 12px 6px}.v-popper--theme-tooltip .v-popper__arrow-outer{border-color:#000c}.v-popper--theme-dropdown .v-popper__inner{background:#fff;color:#000;border-radius:6px;border:1px solid #ddd;box-shadow:0 6px 30px #0000001a}.v-popper--theme-dropdown .v-popper__arrow-inner{visibility:visible;border-color:#fff}.v-popper--theme-dropdown .v-popper__arrow-outer{border-color:#ddd}:root{--twoslash-border-color: #8888;--twoslash-underline-color: currentColor;--twoslash-highlighted-border: #c37d0d50;--twoslash-highlighted-bg: #c37d0d20;--twoslash-popup-bg: #f8f8f8;--twoslash-popup-color: inherit;--twoslash-popup-shadow: rgba(0, 0, 0, .08) 0px 1px 4px;--twoslash-docs-color: #888;--twoslash-docs-font: sans-serif;--twoslash-code-font: inherit;--twoslash-code-font-size: 1em;--twoslash-matched-color: inherit;--twoslash-unmatched-color: #888;--twoslash-cursor-color: #8888;--twoslash-error-color: #d45656;--twoslash-error-bg: #d4565620;--twoslash-warn-color: #c37d0d;--twoslash-warn-bg: #c37d0d20;--twoslash-tag-color: #3772cf;--twoslash-tag-bg: #3772cf20;--twoslash-tag-warn-color: var(--twoslash-warn-color);--twoslash-tag-warn-bg: var(--twoslash-warn-bg);--twoslash-tag-annotate-color: #1ba673;--twoslash-tag-annotate-bg: #1ba67320}@media (prefers-reduced-motion: reduce){.twoslash *{transition:none!important}}.twoslash:hover .twoslash-hover{border-color:var(--twoslash-underline-color)}.twoslash .twoslash-hover{border-bottom:1px dotted transparent;transition-timing-function:ease;transition:border-color .3s;position:relative}.twoslash .twoslash-popup-container{position:absolute;opacity:0;display:inline-flex;flex-direction:column;transform:translateY(1.1em);background:var(--twoslash-popup-bg);color:var(--twoslash-popup-color);border:1px solid var(--twoslash-border-color);transition:opacity .3s;border-radius:4px;pointer-events:none;z-index:10;-webkit-user-select:none;user-select:none;text-align:left;box-shadow:var(--twoslash-popup-shadow)}.twoslash .twoslash-query-presisted .twoslash-popup-container{z-index:9;transform:translateY(1.5em)}.twoslash .twoslash-hover:hover .twoslash-popup-container,.twoslash .twoslash-error-hover:hover .twoslash-popup-container,.twoslash .twoslash-query-presisted .twoslash-popup-container,.twoslash .twoslash-query-line .twoslash-popup-container{opacity:1;pointer-events:auto}.twoslash .twoslash-popup-container:hover{-webkit-user-select:auto;user-select:auto}.twoslash .twoslash-popup-arrow{position:absolute;top:-4px;left:1em;border-top:1px solid var(--twoslash-border-color);border-right:1px solid var(--twoslash-border-color);background:var(--twoslash-popup-bg);transform:rotate(-45deg);width:6px;height:6px;pointer-events:none}.twoslash .twoslash-popup-code,.twoslash .twoslash-popup-error,.twoslash .twoslash-popup-docs{padding:6px 8px!important}.twoslash .twoslash-popup-code{font-family:var(--twoslash-code-font);font-size:var(--twoslash-code-font-size)}.twoslash .twoslash-popup-docs{color:var(--twoslash-docs-color);font-family:var(--twoslash-docs-font);font-size:.8em;border-top:1px solid var(--twoslash-border-color)}.twoslash .twoslash-popup-error{color:var(--twoslash-error-color);background-color:var(--twoslash-error-bg);font-family:var(--twoslash-docs-font);font-size:.8em}.twoslash .twoslash-popup-docs-tags{display:flex;flex-direction:column;font-family:var(--twoslash-docs-font)}.twoslash .twoslash-popup-docs-tags,.twoslash .twoslash-popup-docs-tag-name{margin-right:.5em}.twoslash .twoslash-popup-docs-tag-name{font-family:var(--twoslash-code-font)}.twoslash .twoslash-query-line .twoslash-popup-container{position:relative;margin-bottom:1.4em;transform:translateY(.6em)}.twoslash .twoslash-error-line{position:relative;background-color:var(--twoslash-error-bg);border-left:3px solid var(--twoslash-error-color);color:var(--twoslash-error-color);padding:6px 12px;margin:.2em 0;min-width:100%;width:max-content}.twoslash .twoslash-error-line.twoslash-error-level-warning{background-color:var(--twoslash-warn-bg);border-left:3px solid var(--twoslash-warn-color);color:var(--twoslash-warn-color)}.twoslash .twoslash-error{background:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%23c94824'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") repeat-x bottom left;padding-bottom:2px}.twoslash .twoslash-error.twoslash-error-level-warning{background:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%23c37d0d'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") repeat-x bottom left;padding-bottom:2px}.twoslash .twoslash-completion-cursor{position:relative}.twoslash .twoslash-completion-cursor .twoslash-completion-list{-webkit-user-select:none;user-select:none;position:absolute;top:0;left:0;transform:translateY(1.2em);margin:3px 0 0 -1px;display:inline-block;z-index:8;box-shadow:var(--twoslash-popup-shadow);background:var(--twoslash-popup-bg);border:1px solid var(--twoslash-border-color)}.twoslash-completion-list{width:240px;font-size:.8rem;padding:4px;display:flex;flex-direction:column;gap:4px}.twoslash-completion-list:hover{-webkit-user-select:auto;user-select:auto}.twoslash-completion-list:before{background-color:var(--twoslash-cursor-color);width:2px;position:absolute;top:-1.6em;height:1.4em;left:-1px;content:" "}.twoslash-completion-list li{overflow:hidden;display:flex;align-items:center;gap:.25em;line-height:1em}.twoslash-completion-list li span.twoslash-completions-unmatched{color:var(--twoslash-unmatched-color)}.twoslash-completion-list .deprecated{text-decoration:line-through;opacity:.5}.twoslash-completion-list li span.twoslash-completions-matched{color:var(--twoslash-matched-color)}.twoslash-highlighted{background-color:var(--twoslash-highlighted-bg);border:1px solid var(--twoslash-highlighted-border);padding:1px 2px;margin:-1px -3px;border-radius:4px}.twoslash-completion-list .twoslash-completions-icon{color:var(--twoslash-unmatched-color);width:1em;flex:none}.twoslash .twoslash-tag-line{position:relative;background-color:var(--twoslash-tag-bg);border-left:3px solid var(--twoslash-tag-color);color:var(--twoslash-tag-color);padding:6px 10px;margin:.2em 0;display:flex;align-items:center;gap:.3em;min-width:100%;width:max-content}.twoslash .twoslash-tag-line .twoslash-tag-icon{width:1.1em;color:inherit}.twoslash .twoslash-tag-line.twoslash-tag-error-line{background-color:var(--twoslash-error-bg);border-left:3px solid var(--twoslash-error-color);color:var(--twoslash-error-color)}.twoslash .twoslash-tag-line.twoslash-tag-warn-line{background-color:var(--twoslash-tag-warn-bg);border-left:3px solid var(--twoslash-tag-warn-color);color:var(--twoslash-tag-warn-color)}.twoslash .twoslash-tag-line.twoslash-tag-annotate-line{background-color:var(--twoslash-tag-annotate-bg);border-left:3px solid var(--twoslash-tag-annotate-color);color:var(--twoslash-tag-annotate-color)}:root{--twoslash-popup-bg: var(--vp-c-bg, inherit);--twoslash-popup-color: var(--vp-c-text-1);--twoslash-docs-color: var(--vp-c-text-1);--twoslash-docs-font: var(--vp-font-family-base);--twoslash-code-font: var(--vp-font-family-mono);--twoslash-code-size: var(--vp-code-font-size);--twoslash-underline-color: #8888;--twoslash-border-color: var(--vp-c-border);--twoslash-cursor-color: var(--vp-c-brand);--twoslash-matched-color: var(--vp-c-brand);--twoslash-unmatched-color: var(--vp-c-text-2)}.v-popper--theme-twoslash{z-index:calc(var(--vp-z-index-local-nav) - 1)}.v-popper--theme-twoslash .v-popper__inner{background:var(--twoslash-popup-bg);color:var(--twoslash-popup-color);border-color:var(--twoslash-border-color)}.v-popper--theme-twoslash .v-popper__arrow-outer{border-color:var(--twoslash-border-color)}.v-popper--theme-twoslash .v-popper__arrow-inner{border-color:var(--twoslash-popup-bg)}.twoslash-popup-container{transform:translateY(1.5em)}.twoslash-query-presisted .twoslash-popup-container{transform:translateY(1.8em)}.twoslash .v-popper{display:inline-block}.twoslash-completion-list .twoslash-completions-icon{color:var(--twoslash-unmatched-color)!important}.twoslash-floating .twoslash-popup-code{max-width:600px;display:block;width:fit-content;min-width:100%;padding:6px 12px;line-height:var(--vp-code-line-height);font-size:var(--twoslash-code-size);transition:color .5s;white-space:pre-wrap}.twoslash-floating .twoslash-popup-docs,.twoslash-floating .twoslash-popup-error{padding:12px!important;font-family:var(--twoslash-docs-font);font-size:.9em;max-height:500px;max-width:700px;overflow-y:auto;overflow-x:hidden;text-wrap:balance}.twoslash-floating .twoslash-popup-docs p:first-child,.twoslash-floating .twoslash-popup-error p:first-child{margin-top:0}.twoslash-floating .twoslash-popup-docs p:last-child,.twoslash-floating .twoslash-popup-error p:last-child{margin-bottom:0}.twoslash-floating .twoslash-popup-docs{border-top:1px solid var(--twoslash-border-color);color:var(--twoslash-docs-color)}.twoslash-floating .twoslash-popup-error{color:var(--twoslash-error-color)}.twoslash-floating .twoslash-popup-error.twoslash-error-level-warning{color:var(--twoslash-warn-color)}.twoslash-floating .twoslash-popup-docs p,.twoslash-floating .twoslash-popup-error p{margin:6px 0;text-wrap:balance}.twoslash-floating .twoslash-popup-docs pre .twoslash-floating .twoslash-popup-error pre{background-color:var(--vp-code-block-bg);border-radius:8px;padding:12px;margin:6px -2px;overflow-x:auto}.twoslash-floating .twoslash-popup-docs-tags{display:flex;flex-direction:column;padding:8px 12px!important}.twoslash-floating .twoslash-popup-docs-tags .twoslash-popup-docs-tag-name{font-family:var(--twoslash-code-font);color:var(--twoslash-unmatched-color);margin-right:.5em}.twoslash-completion-cursor{height:1.2em;width:2px;margin-bottom:-.2em;background:var(--twoslash-cursor-color);display:inline-block;-webkit-user-select:none;user-select:none}.twoslash-floating.twoslash-completion .v-popper__arrow-container{display:none}.twoslash-floating.twoslash-completion .twoslash-completion-list{padding:6px;font-family:var(--twoslash-code-font);font-size:var(--twoslash-code-size)!important}.twoslash-floating.twoslash-completion .twoslash-completion-list li{padding:3px 0}a>img{display:inline-block}a.title{white-space:pre-wrap}.twoslash-error-hover>*{min-width:4px;min-height:16px;display:inline-block}.VPLocalSearchBox[data-v-ce626c7c]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-ce626c7c]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-ce626c7c]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-ce626c7c]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-ce626c7c]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-ce626c7c]{padding:0 8px}}.search-bar[data-v-ce626c7c]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-ce626c7c]{display:block;font-size:18px}.navigate-icon[data-v-ce626c7c]{display:block;font-size:14px}.search-icon[data-v-ce626c7c]{margin:8px}@media (max-width: 767px){.search-icon[data-v-ce626c7c]{display:none}}.search-input[data-v-ce626c7c]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-ce626c7c]{padding:6px 4px}}.search-actions[data-v-ce626c7c]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-ce626c7c]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-ce626c7c]{display:none}}.search-actions button[data-v-ce626c7c]{padding:8px}.search-actions button[data-v-ce626c7c]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-ce626c7c]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-ce626c7c]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-ce626c7c]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-ce626c7c]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-ce626c7c]{display:none}}.search-keyboard-shortcuts kbd[data-v-ce626c7c]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-ce626c7c]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-ce626c7c]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-ce626c7c]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-ce626c7c]{margin:8px}}.titles[data-v-ce626c7c]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-ce626c7c]{display:flex;align-items:center;gap:4px}.title.main[data-v-ce626c7c]{font-weight:500}.title-icon[data-v-ce626c7c]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-ce626c7c]{opacity:.5}.result.selected[data-v-ce626c7c]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-ce626c7c]{position:relative}.excerpt[data-v-ce626c7c]{opacity:50%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;margin-top:4px}.result.selected .excerpt[data-v-ce626c7c]{opacity:1}.excerpt[data-v-ce626c7c] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-ce626c7c] mark,.excerpt[data-v-ce626c7c] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-ce626c7c] .vp-code-group .tabs{display:none}.excerpt[data-v-ce626c7c] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-ce626c7c]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-ce626c7c]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-ce626c7c],.result.selected .title-icon[data-v-ce626c7c]{color:var(--vp-c-brand-1)!important}.no-results[data-v-ce626c7c]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-ce626c7c]{flex:none} diff --git a/hashmap.json b/hashmap.json new file mode 100644 index 00000000..63291160 --- /dev/null +++ b/hashmap.json @@ -0,0 +1 @@ +{"index.md":"D8JEoe-L","migration_0.13to0.14.md":"B9QGaIEH","rules_attribute-name-casing.md":"C-BHfieH","rules_attribute-value-quote.md":"U2s_C0SQ","rules_element-name-casing.md":"B-R_2r9R","rules_html-closing-bracket-newline.md":"Cufar9xb","rules_html-closing-bracket-spacing.md":"B_hyhmtY","rules_html-comment-content-newline.md":"ej66B5u4","rules_html-comment-spacing.md":"BmKWBP6S","rules_html-content-newline.md":"Dty8WRyI","rules_html-indent.md":"D6ND3aJr","rules_index.md":"zA_efqXq","rules_max-attributes-per-line.md":"Ztqx6w1h","rules_no-duplicate-attributes.md":"B5t6CrQv","rules_no-empty-template-tag.md":"is_4AX7P","rules_no-html-comments.md":"BYNJjbjz","rules_no-invalid-template-interpolation.md":"7uBC17rV","rules_no-irregular-whitespace.md":"B1E1gedE","rules_no-multi-spaces-in-html-tag.md":"CzYPXTNw","rules_no-multi-spaces-in-scriptlet.md":"nmP8cufa","rules_no-script-parsing-error.md":"DjCPmhpF","rules_no-semi-in-template-interpolation.md":"BZeF_yRA","rules_no-space-attribute-equal-sign.md":"DTXp4BxP","rules_no-template-tag-in-start-tag.md":"C97ZG_oA","rules_no-warning-html-comments.md":"DBLM2y6K","rules_prefer-escape-template-interpolations.md":"B9bZDD04","rules_scriptlet-indent.md":"BlSYPqJq","rules_template-tag-spacing.md":"Ra2vYcon","services_ast-for-html.md":"DCBHSak1","services_ast-for-template-tag.md":"DUGFd6lv","services_index.md":"Cq1QsQcw"} diff --git a/index.html b/index.html new file mode 100644 index 00000000..40ffeff8 --- /dev/null +++ b/index.html @@ -0,0 +1,185 @@ + + + + + + eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

eslint-plugin-lodash-template

ESLint plugin for John Resig-style micro templating.

NPM licenseNPM versionNPM downloads

It can be used in projects using Underscore.js and Lodash's template.

This plugin supports code checking for templates like the examples below.

html
<div id="<%= id %>" class="<%= (i % 2 == 1 ? ' even': '') %>">
+  <div class="grid_1 alpha right">
+    <img class="righted" src="<%= profile_image_url %>"/>
+  </div>
+  <div class="grid_6 omega contents">
+    <p><b><a href="/<%= from_user %>"><%= from_user %></a>:</b> <%= text %></p>
+  </div>
+</div>
html
<% for ( var i = 0; i < users.length; i++ ) { %>
+  <li><a href="<%= users[i].url %>"><%= users[i].name %></a></li>
+<% } %>

Playground on the Web

Features

  • Enable ESLint in Underscore.js and Lodash's templates.
  • You can find issues specific to template tags.
  • Improves readability of HTML templates.
  • For JavaScript (TypeScript) templates, enable ESLint both inside and outside the template tag. (This is an experimental feature)
  • Partial supports for EJS.

Installation

bash
npm install --save-dev eslint eslint-plugin-lodash-template

Usage

Create .eslintrc.* file to configure rules. See also: http://eslint.org/docs/user-guide/configuring.

Example eslint.config.js:

js
import lodashTemplate from 'eslint-plugin-lodash-template'
+export default [
+    {
+        files: ['**/*.html'],
+        ...lodashTemplate.configs['flat/recommended-with-html']
+    }
+]

Example .eslintrc.js:

js
module.exports = {
+  extends: [
+    // add more generic rulesets here, such as:
+    // 'eslint:recommended',
+    'plugin:lodash-template/recommended-with-html'
+  ],
+  rules: {
+    // override/add rules settings here, such as:
+    // 'lodash-template/no-warning-html-comments': 'error'
+  }
+}

Attention

This plugin does special handling for the following rule warnings in the template.

Rule IDProcess DescriptionAnother way this plugin supports
indentDisable warningslodash-template/scriptlet-indent rule,
lodash-template/html-indentrule
@stylistic/indentDisable warningslodash-template/scriptlet-indent rule,
lodash-template/html-indent rule
strictDisable warnings--
no-emptyDisable warnings--
max-statements-per-lineDisable warnings--
@stylistic/max-statements-per-lineDisable warnings--
padded-blocksDisable warnings--
@stylistic/padded-blocksDisable warnings--
no-implicit-globalsDisable warnings--
no-multi-spacesDisable warningslodash-template/no-multi-spaces-in-scriptlet rule,
lodash-template/no-multi-spaces-in-html-tag rule
@stylistic/no-multi-spacesDisable warningslodash-template/no-multi-spaces-in-scriptlet rule,
lodash-template/no-multi-spaces-in-html-tag rule
no-unused-expressionsDisable warnings within interpolate(<%=...%>)--
quotesDisable warnings if doublequote is set--
@stylistic/quotesDisable warnings if doublequote is set--
no-irregular-whitespaceDisable warnings outside template tagslodash-template/no-irregular-whitespace rule

Configs

For eslint.config.js

This plugin provides 7 predefined configs:

  • *.configs['flat/base'] - Settings and rules to enable correct ESLint parsing
  • *.configs['flat/base-with-ejs'] - Settings and rules to enable correct ESLint parsing for EJS
  • *.configs['flat/best-practices'] - Above, plus rules to improve dev experience
  • *.configs['flat/recommended'] - Above, plus rules to improve code readability
  • *.configs['flat/recommended-with-html'] - Above, plus rules to improve code readability with HTML template
  • *.configs['flat/recommended-with-script'] - *.configs['flat/recommended'] config, plus to enable ESLint parsing of JavaScript templates (This is an experimental feature)
  • *.configs['flat/all'] - All rules of this plugin are included

For .eslintrc.*

This plugin provides 6 predefined configs:

  • plugin:lodash-template/base - Settings and rules to enable correct ESLint parsing
  • plugin:lodash-template/best-practices - Above, plus rules to improve dev experience
  • plugin:lodash-template/recommended - Above, plus rules to improve code readability
  • plugin:lodash-template/recommended-with-html - Above, plus rules to improve code readability with HTML template
  • plugin:lodash-template/recommended-with-script - plugin:lodash-template/recommended config, plus to enable ESLint parsing of JavaScript templates (This is an experimental feature)
  • plugin:lodash-template/all - All rules of this plugin are included

All Rules

Please see All Rules

Plugin Option

Suppress no-undef warnings in the template tag

Please set the global variable used in all templates as follows.

.eslintrc.*:

diff
  {
+      "settings": {
++         "lodash-template/globals": ["variableName"]
+      }
+  }

Please write the global comment in the file as follows for the variable to be used with a specific template.

diff
+ <% /* global users */ %>
+  <% for ( var i = 0; i < users.length; i++ ) { %>
+    <li><a href="<%= users[i].url %>"><%= users[i].name %></a></li>
+  <% } %>

Suppress reports for specific rules in template files

Please set as follows.

.eslintrc.*:

diff
  {
+      "settings": {
++         "lodash-template/ignoreRules": ["no-undef", "no-tabs"]
+      }
+  }

The ESLint standard suppression method can also be used by using template tag, as follows.

diff
+ <% /* eslint no-ternary: 0 */ %>

Customize parser

For example, if you set Lodash templateSettings as follows,

js
_.templateSettings = {
+    evaluate:    /{{([\s\S]+?)}}/g,
+    interpolate: /{{=([\s\S]+?)}}/g,
+    escape:      /{{-([\s\S]+?)}}/g
+};

please set parserOptions(ex. .eslintrc.*) as follows.

diff
      parserOptions: {
++         templateSettings: {
++             evaluate:    ["{{", "}}"],
++             interpolate: ["{{=", "}}"],
++             escape:      ["{{-", "}}"],
++         },
+      },

For example, to parse like EJS, set as follows,

(If plugin:lodash-template/*** is set in extends, it is automatically applied to the extension .ejs.)

diff
      parserOptions: {
++         templateSettings: {
++             evaluate:    [ ["<%", "<%_"], ["%>", "-%>", "_%>"] ],
++             interpolate: [  "<%-",        ["%>", "-%>", "_%>"] ],
++             escape:      [  "<%=",        ["%>", "-%>", "_%>"] ],
++             comment:     [  "<%#",        ["%>", "-%>", "_%>"] ],
++             literal:     [  "<%%" ],
++         },
+      },

(This plugin do not provide complete support for EJS. e.g. the include directive.)

Customize target extensions

Please set .eslintrc.* as follows.

(For example, for EJS.)

diff
+    "overrides": [
++        {
++            "files": ["*.ejs"],
++            "processor": "lodash-template/html"
++        }
++    ]

For JavaScript (TypeScript) Templates

(This is an experimental feature. Also check for known limitations.)

For example if you have a file like below.

js
/* eslint no-multi-spaces: error */
+<% /* eslint lodash-template/no-multi-spaces-in-scriptlet: error */ %>
+
+// if this plugin is not used, a parsing error will occur.
+const obj
= <%= JSON.stringify(options
) %>
+// ^^^^ ^^^^^ +// | | +// | If you don't use `"plugin:lodash-template/recommended-with-script"`, +// | only the space after `options` is reported. +// | +// + When using `"plugin:lodash-template/recommended-with-script"`, the space after `obj` is also reported.

Playground on the Web

Configuring

Please set .eslintrc.* as follows.

diff
+    "overrides": [
++        {
++            "files": ["**/your/templates/*.js"],
++            "extends": ["plugin:lodash-template/recommended-with-script"]
++        }
++    ]

If you do not want to use the included rules, set the details as follows.

diff
    "overrides": [
+        {
+            "files": ["**/your/templates/*.js"],
+-            "extends": ["plugin:lodash-template/recommended-with-script"],
++            "extends": ["plugin:lodash-template/base"],
++            "processor": "lodash-template/script"
+        }
+    ]

If you want to use it with TypeScript, you need to configure parserOptions.

diff
    "overrides": [
+        {
+-            "files": ["**/your/templates/*.js"],
++            "files": ["**/your/templates/*.ts"],
++            "parserOptions": {
++                 "parser": "@typescript-eslint/parser",
++                 "sourceType": "module"
++            },
+            "extends": ["plugin:lodash-template/recommended-with-script"]
+        }
+    ]

FAQ

Known Limitations in Script Templates

Due to known limitations in script templates, you may need to rewrite some templates. Otherwise, you may not be able to use this plugin or some rules.

Parsing Error

Interpolation in the script template will try to replace it with an identifier and parse it. If you generate a complex script in interpolation, you may get a parsing error.

👍 The following script can be parsed well.

js
let <%= idName %> = 42;
+export { <%= idName %> };

👎 The following script cannot be parsed well.

js
<%= 'let ' + idName %> = 42;
+export { <%= idName %> };

False Positives in Some Rules

If you use branching in your template, the plugin will generate multiple script ASTs needed to cover all branches. (Then merge the results of validating these ASTs.)
This can confuse some rules and cause false positives.

However, this is necessary to avoid script parsing errors.

e.g.

Template:

js
const a = 'foo'
+<% if (x) { %>
+  const b = 1;
+<% } else { %>
+  const b = 2;
+<% } %>

Generated Script 1:

js

+const a = 'foo'
+
+  const b = 1;

Generated Script 2:

js

+const a = 'foo'
+
+
+
+  const b = 2;

If we use the following script, it is a parsing error.

js

+const a = 'foo'
+
+  const b = 1;
+
+  const b = 2; // <- Identifier 'b' has already been declared

The plugin also tries to generate scripts using branches that are as consistent as possible.

e.g.

Template:

js
<% if (x.foo) { %>
+  const a = 'x.foo is true'
+<% } %>
+// ...
+<% if (x.foo) { %>
+  console.log(a)
+<% } else { %>
+  // process for x.foo is false
+<% } %>

Generated Script 1:

js

+  const a = 'x.foo is true'
+
+// ...
+
+  console.log(a)

Generated Script 2:

js

+
+
+// ...
+
+
+
+  // process for x.foo is false

However, branching conditions are compared using text, so even logically the same can be confusing.

e.g.

Template:

js
<% if (x['foo']) { %>
+  const a = 'x.foo is true'
+<% } %>
+// ...
+<% if (x.foo) { %>
+  console.log(a)
+<% } else { %>
+  // process for x.foo is false
+<% } %>

Generated Script 1:

js

+  const a = 'x.foo is true'
+
+// ...
+
+  console.log(a)

Generated Script 2:

js

+  const a = 'x.foo is true'
+
+// ...
+
+
+
+  // process for x.foo is false

This template gets an error 'a' is assigned a value but never used. from the no-unused-vars rule.

Editor Settings

About how to mark warnings on editor.

  • VSCode (VS Code ESLint extension)

    settings.json:

    json
    {
    +    "eslint.validate"
    :
    [ "javascript", "javascriptreact", { "language": "html", "autoFix": true } ]
    +}
  • Sublime Text3 (SublimeLinter-eslint)

    [Preference] > [Package Settings] > [SublimeLinter] > [Settings]

    json
    // SublimeLinter Settings - User
    +{
    +    "linters"
    :
    {
    + "eslint": { + "selector": "text.html, source.js - meta.attribute-with-value" + } + } +}

Migrations

Contributing

Welcome contributing!

Please use GitHub's Issues/PRs.

parserServices

Information provided by parserServices on this plugin

Development Tools

  • npm test runs tests and measures coverage.
  • npm run update runs in order to update readme and recommended configuration.

License

See the LICENSE file for license rights and limitations (MIT).

+ + + + \ No newline at end of file diff --git a/logo.png b/logo.png new file mode 100644 index 00000000..c259cbd9 Binary files /dev/null and b/logo.png differ diff --git a/logo.svg b/logo.svg new file mode 100644 index 00000000..e0adddb2 --- /dev/null +++ b/logo.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/migration/0.13to0.14.html b/migration/0.13to0.14.html new file mode 100644 index 00000000..c9c3c50b --- /dev/null +++ b/migration/0.13to0.14.html @@ -0,0 +1,55 @@ + + + + + + 0.13.x to 0.14.x | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

0.13.x to 0.14.x

Breaking Changes

  • Moved some rule categories.
  • Rename some rules.
  • The configuration method for customizing the target extension has changed.
  • The configuration method for suppressing the reporting of specific rules in the template file has changed.
  • Drop supports for ESLint@5

Moved some rule categories.

In 0.13.x

  • Rule lodash-template/no-warning-html-comments was category best-practices.
  • Rule lodash-template/no-html-comments was category best-practices.

For 0.14.x

  • Rule lodash-template/no-warning-html-comments has moved to category recommended-with-html.
  • Rule lodash-template/no-html-comments has moved to category recommended-with-html.

Rename some rules.

  • lodash-template/no-multi-spaces-in-script to lodash-template/no-multi-spaces-in-scriptlet
  • lodash-template/script-indent to lodash-template/scriptlet-indent

Customize target extentions

In 0.13.x

In 0.13.x, it was set in .eslintrc.js as follows:

(For example, for EJS.)

diff
  "use strict"
+
++ const pluginLodashTemplate = require("eslint-plugin-lodash-template")
++ pluginLodashTemplate.addTargetExtensions(".ejs")
+
+  module.exports = {

For 0.14.x

For 0.14.x, please set .eslintrc.* as follows:

(For example, for EJS.)

diff
+    "overrides": [
++        {
++            "files": ["*.ejs"],
++            "processor": "lodash-template/html"
++        }
++    ]

Suppress no-undef warnings in the template tag

In 0.13.x

In 0.13.x, it was set the global variable used in all templates as follows.

.eslintrc.json:

diff
  {
+      "rules": {
++         "lodash-template/plugin-option": [2, {
++             "globals": ["variableName"],
++         }]
+      }
+  }

For 0.14.x

For 0.14.x, please set the global variable used in all templates as follows.

.eslintrc.json:

diff
  {
+      "settings": {
++         "lodash-template/globals": ["variableName"]
+      }
+  }

Suppress reports for specific rules in template files

In 0.13.x

In 0.13.x, it was set as follows.

.eslintrc.json:

diff
  {
+      "rules": {
++         "lodash-template/plugin-option": [2, {
++             "ignoreRules": ["no-undef", "no-tabs"],
++         }]
+      }
+  }

For 0.14.x

For 0.14.x, please set as follows.

.eslintrc.json:

diff
  {
+      "settings": {
++         "lodash-template/ignoreRules": ["no-undef", "no-tabs"]
+      }
+  }
+ + + + \ No newline at end of file diff --git a/rules/attribute-name-casing.html b/rules/attribute-name-casing.html new file mode 100644 index 00000000..1860570f --- /dev/null +++ b/rules/attribute-name-casing.html @@ -0,0 +1,40 @@ + + + + + + lodash-template/attribute-name-casing | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/attribute-name-casing

enforce HTML attribute name casing. (ex. 🆗 <div foo-bar> 🆖 <div fooBar> <div FOO-BAR>)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces attribute name casing style (kebab-case).

html
<% /* eslint "lodash-template/attribute-name-casing": "error" */ %>
+<!-- ✓ GOOD -->
+<div foo-bar="abc">
+
+<!-- ✗ BAD -->
+<div 
fooBar
="abc">
+<div
FOO-BAR
="abc">

Options

json
{
+  "lodash-template/attribute-name-casing": ["error", {
+    "ignore": [],
+    "ignoreSvgCamelCaseAttributes": true,
+  }]
+}

Examples for this rule with "ignore": ["onClick"] option:

html
<% /* eslint "lodash-template/attribute-name-casing": ["error", {"ignore": ["onClick"]}] */ %>
+<!-- ✓ GOOD -->
+<div onClick="abc">

Examples for this rule with "ignoreSvgCamelCaseAttributes": true, (default)

html
<% /* eslint "lodash-template/attribute-name-casing": ["error", {"ignoreSvgCamelCaseAttributes": true}] */ %>
+<!-- ✓ GOOD -->
+<svg viewBox="0 0 100 100"></svg>

Further Reading

Implementation

+ + + + \ No newline at end of file diff --git a/rules/attribute-value-quote.html b/rules/attribute-value-quote.html new file mode 100644 index 00000000..51f3bc85 --- /dev/null +++ b/rules/attribute-value-quote.html @@ -0,0 +1,45 @@ + + + + + + lodash-template/attribute-value-quote | eslint-plugin-lodash-template + ` :ng: `
` `
`)"> + + + + + + + + + + + + + +
Skip to content

lodash-template/attribute-value-quote

enforce quotes style of HTML attributes. (ex. 🆗 <div class="abc"> 🆖 <div class='abc'> <div class=abc>)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces the quotes style of HTML attributes.

html
<% /* eslint "lodash-template/attribute-value-quote": "error" */ %>
+<!-- ✓ GOOD -->
+<img src="./logo.png">
+
+<!-- ✗ BAD -->
+<img src=
'./logo.png'
>
+<img src=
./logo.png
>

Options

json
{
+  "lodash-template/attribute-value-quote": ["error", "double" | "single" | "either" | "prefer-double"]
+}
  • "double" ... requires double quotes.
  • "single" ... requires single quotes.
  • "either" ... requires double quotes or single quotes.
  • "prefer-double" (default) ... requires double quotes or single quotes. if do not need escape double quotes, requires double quotes.

Examples for this rule with "single" option:

html
<% /* eslint "lodash-template/attribute-value-quote": ["error", "single"] */ %>
+<!-- ✓ GOOD -->
+<img src='./logo.png'>
+
+<!-- ✗ BAD -->
+<img src=
"./logo.png"
>
+<img src=
./logo.png
>

Examples for this rule with "either" option:

html
<% /* eslint "lodash-template/attribute-value-quote": ["error", "either"] */ %>
+<!-- ✓ GOOD -->
+<img src="./logo.png">
+<img src='./logo.png'>
+
+<!-- ✗ BAD -->
+<img src=
./logo.png
>

Further Reading

Implementation

+ + + + \ No newline at end of file diff --git a/rules/element-name-casing.html b/rules/element-name-casing.html new file mode 100644 index 00000000..d72df5eb --- /dev/null +++ b/rules/element-name-casing.html @@ -0,0 +1,32 @@ + + + + + + lodash-template/element-name-casing | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/element-name-casing

enforce HTML element name casing. (ex. 🆗 <xxx-element> 🆖 <xxxElement> <DIV>)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces element name casing style (kebab-case).

html
<% /* eslint "lodash-template/element-name-casing": "error" */ %>
+<!-- ✓ GOOD -->
+<div>
+<xxx-element>
+
+<!-- ✗ BAD -->
+
<DIV
>
+
<xxxElement
>

Further Reading

Implementation

+ + + + \ No newline at end of file diff --git a/rules/html-closing-bracket-newline.html b/rules/html-closing-bracket-newline.html new file mode 100644 index 00000000..48aadec1 --- /dev/null +++ b/rules/html-closing-bracket-newline.html @@ -0,0 +1,72 @@ + + + + + + lodash-template/html-closing-bracket-newline | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/html-closing-bracket-newline

require or disallow a line break before tag's closing brackets

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

People have own preference about the location of closing brackets. This rule enforces a line break (or no line break) before tag's closing brackets.

html
<div
+  id="foo"
+  class="bar"> <!-- On the same line with the last attribute. -->
+</div>
+<div
+  id="foo"
+  class="bar"
+> <!-- On the next line. -->
+</div>
html
<% /* eslint "lodash-template/html-closing-bracket-newline": "error" */ %>
+<!-- ✓ GOOD -->
+<div id="foo" class="bar"></div>
+<div
+  id="foo"
+  class="bar"></div>
+
+<!-- ✗ BAD -->
+<div id="foo" class="bar"
+></div> +<div + id="foo" + class="bar"
+></div> +<div + id="foo" + class="bar"
+ ></div>

Options

json
{
+  "lodash-template/html-closing-bracket-newline": ["error", {
+    "singleline": "never",
+    "multiline": "never"
+  }]
+}
  • singleline ... the configuration for single-line elements. It's a single-line element if the element does not have attributes or the last attribute is on the same line as the opening bracket.
    • "never" ... disallow line breaks before the closing bracket. This is the default.
    • "always" ... require one line break before the closing bracket.
  • multiline ... the configuration for multiline elements. It's a multiline element if the last attribute is not on the same line of the opening bracket.
    • "never" ... disallow line breaks before the closing bracket. This is the default.
    • "always" ... require one line break before the closing bracket.

Plus, you can use lodash-template/html-indent rule to enforce indent-level of the closing brackets.

Examples for this rule with { "multiline": "always" } option:

html
<% /* eslint "lodash-template/html-closing-bracket-newline": ["error", { "multiline": "always" }] */ %>
+<!-- ✓ GOOD -->
+<div id="foo" class="bar"></div>
+<div
+  id="foo"
+  class="bar"
+></div>
+<div
+  id="foo"
+  class="bar"
+  ></div>
+
+<!-- ✗ BAD -->
+<div id="foo" class="bar"
+></div> +<div + id="foo" + class="bar"
></div>

Implementation

+ + + + \ No newline at end of file diff --git a/rules/html-closing-bracket-spacing.html b/rules/html-closing-bracket-spacing.html new file mode 100644 index 00000000..8ee7f333 --- /dev/null +++ b/rules/html-closing-bracket-spacing.html @@ -0,0 +1,63 @@ + + + + + + lodash-template/html-closing-bracket-spacing | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/html-closing-bracket-spacing

require or disallow a space before tag's closing brackets. (ex. 🆗 <input> <input·/> 🆖 <input·> <input/>)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces consistent spacing style before closing brackets > of tags.

html
<div class="foo"> or <div class="foo" >
+<input class="foo"/> or <input class="foo" />
html
<% /* eslint "lodash-template/html-closing-bracket-spacing": "error" */ %>
+<!-- ✓ GOOD -->
+<input>
+<input foo>
+<div foo="bar">
+</div>
+<br />
+<input foo />
+<input foo="bar" />
+
+<!-- ✗ BAD -->
+<input
>
+<input foo
>
+<div foo="bar"
>
+</div
>
+<br
/>
+<input foo
/>
+<input foo="bar"
/>

Options

json
{
+  "lodash-template/html-closing-bracket-spacing": ["error", {
+    "startTag": "always" | "never",
+    "endTag": "always" | "never",
+    "selfClosingTag": "always" | "never"
+  }]
+}
  • startTag ("always" | "never") ... Setting for the > of start tags (e.g. <div>). Default is "never".
    • "always" ... requires one or more spaces.
    • "never" ... disallows spaces.
  • endTag ("always" | "never") ... Setting for the > of end tags (e.g. </div>). Default is "never".
    • "always" ... requires one or more spaces.
    • "never" ... disallows spaces.
  • selfClosingTag ("always" | "never") ... Setting for the /> of self-closing tags (e.g. <br/>). Default is "always".
    • "always" ... requires one or more spaces.
    • "never" ... disallows spaces.
html
<% /* eslint
+  lodash-template/html-closing-bracket-spacing: ["error", {
+    "startTag": "always",
+    "endTag": "always",
+    "selfClosingTag": "always"
+  }]
+*/ %>
+<!-- ✓ GOOD -->
+<input >
+<input foo >
+<div foo="bar" >
+</div >
+<br />
+<input foo />
+<input foo="bar" />

Implementation

+ + + + \ No newline at end of file diff --git a/rules/html-comment-content-newline.html b/rules/html-comment-content-newline.html new file mode 100644 index 00000000..4695f43b --- /dev/null +++ b/rules/html-comment-content-newline.html @@ -0,0 +1,68 @@ + + + + + + lodash-template/html-comment-content-newline | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/html-comment-content-newline

require or disallow a line break before and after HTML comment contents

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces a line break (or no line break) before and after HTML comment contents.

html
<% /* eslint "lodash-template/html-comment-content-newline": "error" */ %>
+<!-- ✓ GOOD -->
+<!-- singleline comment -->
+<!--
+  multiline
+  comment
+-->
+
+<!-- ✗ BAD -->
+<!--
+ singleline comment
+--> +<!-- + multiline + comment
-->
+<!--
multiline
+ comment
-->

Options

json
{
+  "lodash-template/html-comment-content-newline": ["error", {
+    "singleline": "never",
+    "multiline": "always",
+  }]
+}
  • singleline ... the configuration for single-line comments.
    • "ignore" ... Don't enforce line breaks style before and after the comments.
    • "never" ... disallow line breaks before and after the comments. This is the default.
    • "always" ... require one line break before and after the comments.
  • multiline ... the configuration for multiline comments.
    • "ignore" ... Don't enforce line breaks style before and after the comments.
    • "never" ... disallow line breaks before and after the comments.
    • "always" ... require one line break before and after the comments. This is the default.
html
<% /* eslint
+  lodash-template/html-comment-content-newline: ["error", {
+    "singleline": "always",
+    "multiline": "never"
+  }]
+*/ %>
+<!--
+  ✓ GOOD
+-->
+<!--
+  comment
+-->
+
+<!-- comment
+  comment -->
+
+<!--
✗ BAD
-->
+<!--
comment
-->
+ +<!--
+ comment + comment
+-->

Further Reading

Implementation

+ + + + \ No newline at end of file diff --git a/rules/html-comment-spacing.html b/rules/html-comment-spacing.html new file mode 100644 index 00000000..715e5455 --- /dev/null +++ b/rules/html-comment-spacing.html @@ -0,0 +1,44 @@ + + + + + + lodash-template/html-comment-spacing | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/html-comment-spacing

enforce unified spacing in HTML comment. (ex. 🆗 <!-- comment -->, 🆖 <!--comment-->)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule aims to enforce unified spacing in HTML comment.

html
<% /* eslint "lodash-template/html-comment-spacing": "error" */ %>
+<!-- ✓ GOOD -->
+<!-- comment -->
+
+<!-- ✗ BAD -->
+
<!--
comment
-->
+
<!--
comment
-->

Options

Default spacing is set to always

json
{
+  "lodash-template/html-comment-spacing": ["error", "always" | "never"]
+}

"always" - Expect one space between comment and curly brackets.

html
<% /* eslint "lodash-template/html-comment-spacing": ["error", "always"] */ %>
+<!-- ✓ GOOD -->
+<!-- comment -->
+
+<!-- ✗ BAD -->
+
<!--
comment
-->
+
<!--
comment
-->

"never" - Expect no spaces between comment and curly brackets.

html
<% /* eslint "lodash-template/html-comment-spacing": ["error", "never"] */ %>
+<!--✓ GOOD-->
+<!--comment-->
+
+
<!--
✗ BAD
-->
+
<!--
comment
-->

Implementation

+ + + + \ No newline at end of file diff --git a/rules/html-content-newline.html b/rules/html-content-newline.html new file mode 100644 index 00000000..dbb59d2a --- /dev/null +++ b/rules/html-content-newline.html @@ -0,0 +1,71 @@ + + + + + + lodash-template/html-content-newline | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/html-content-newline

require or disallow a line break before and after HTML contents

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces a line break (or no line break) before and after HTML contents.

html
<% /* eslint "lodash-template/html-content-newline": "error" */ %>
+<!-- ✓ GOOD -->
+<div class="panel">content</div>
+
+<div class="panel">
+  content
+</div>
+
+<div
+  class="panel"
+>
+  content
+</div>
+
+<!-- ✗ BAD -->
+<div
+  class="panel"
+>
content
</div>

Options

json
{
+  "lodash-template/html-content-newline": ["error", {
+    "singleline": "ignore",
+    "multiline": "always",
+    "ignoreNames": ["pre", "textarea"]
+  }]
+}
  • singleline ... the configuration for single-line elements. It's a single-line element if startTag, endTag and contents are single-line.
    • "ignore" ... Don't enforce line breaks style before and after the contents. This is the default.
    • "never" ... disallow line breaks before and after the contents.
    • "always" ... require one line break before and after the contents.
  • multiline ... the configuration for multiline elements. It's a multiline element if startTag, endTag or contents are multiline.
    • "ignore" ... Don't enforce line breaks style before and after the contents.
    • "never" ... disallow line breaks before and after the contents.
    • "always" ... require one line break before and after the contents. This is the default.
  • ignoreNames ... the configuration for element names to ignore line breaks style.
    default ["pre", "textarea"]
html
<% /*eslint
+  lodash-template/html-content-newline: ["error", {
+    "singleline": "always",
+    "multiline": "never"
+  }]
+*/ %>
+
+<!-- ✓ GOOD -->
+<div class="panel">
+  content
+</div>
+
+<div
+  class="panel"
+>content</div>
+
+<!-- ✗ BAD -->
+<div class="panel">
content
</div>
+ +<div + class="panel" +>
+ content
+</div>

Implementation

+ + + + \ No newline at end of file diff --git a/rules/html-indent.html b/rules/html-indent.html new file mode 100644 index 00000000..e52771f5 --- /dev/null +++ b/rules/html-indent.html @@ -0,0 +1,65 @@ + + + + + + lodash-template/html-indent | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/html-indent

enforce consistent HTML indentation.

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces a consistent HTML indentation style. The default style is 2 spaces.

html
<% /* eslint "lodash-template/html-indent": "error" */ %>
+<!-- ✓ GOOD -->
+<div>
+  <div class="foo">
+    Hello.
+  </div>
+</div>
+
+<!-- ✗ BAD -->
+<div>
+
<div class="foo">
+
Hello.
+
</div>
+</div>

Options

json
{
+  "lodash-template/html-indent": ["error", type, {
+    "attribute": 1,
+    "closeBracket": 0
+  }]
+}
  • type (number | "tab") ... The type of indentation. Default is 2. If this is a number, it's the number of spaces for one indent. If this is "tab", it uses one tab for one indent.
  • attribute (integer) ... The multiplier of indentation for attributes. Default is 1.
  • closeBracket (integer) ... The multiplier of indentation for right brackets. Default is 0.

Examples for this rule with { attribute: 1, closeBracket: 1 } option:

html
<% /* eslint "lodash-template/html-indent": ["error", 2, { "attribute": 1, "closeBracket": 1 }] */ %>
+<!-- ✓ GOOD -->
+<div>
+  <div
+    id="a"
+    class="b"
+    attr1="c"
+    attr2="d"
+    >
+    Text
+  </div>
+</div>

Examples for this rule with { attribute: 2, closeBracket: 1 } option:

html
<% /* eslint "lodash-template/html-indent": ["error", 2, { "attribute": 2, "closeBracket": 1 }] */ %>
+<!-- ✓ GOOD -->
+<div>
+  <div
+      id="a"
+      class="b"
+      attr1="c"
+      attr2="d"
+    >
+    Text
+  </div>
+</div>

Implementation

+ + + + \ No newline at end of file diff --git a/rules/index.html b/rules/index.html new file mode 100644 index 00000000..02b1293a --- /dev/null +++ b/rules/index.html @@ -0,0 +1,37 @@ + + + + + + All Rules | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

All Rules

Base Rules (Enabling Correct ESLint Parsing)

Enable this plugin using with:

json
{
+  "extends": "plugin:lodash-template/base"
+}
Rule IDDescription
lodash-template/no-script-parsing-errordisallow parsing errors in template

Best Practices (Improve Development Experience)

Enforce all the rules in this category with:

json
{
+  "extends": "plugin:lodash-template/best-practices"
+}
Rule IDDescription
lodash-template/no-empty-template-tagdisallow empty micro-template tag. (ex. 🆖 <% %>)
lodash-template/no-invalid-template-interpolationdisallow other than expression in micro-template interpolation. (ex. 🆖 <%= if (test) { %>)
lodash-template/no-semi-in-template-interpolationdisallow the semicolon at the end of expression in micro template interpolation.(ex. 🆗 <%= text %> 🆖 <%= text; %>)🔧

Enforce all the rules in this category and all the rules in Best Practices categories with:

json
{
+  "extends": "plugin:lodash-template/recommended"
+}
Rule IDDescription
lodash-template/no-irregular-whitespacedisallow irregular whitespace outside the template tags.🔧
lodash-template/no-multi-spaces-in-scriptletdisallow multiple spaces in scriptlet. (ex. 🆖 <% if···(test)···{ %>)🔧
lodash-template/scriptlet-indentenforce consistent indentation to scriptlet in micro-template tag.🔧
lodash-template/template-tag-spacingenforce unified spacing in micro-template tag. (ex. 🆗 <%= prop %>, 🆖 <%=prop%>)🔧

Enforce all the rules in this category and all the rules in Best Practices/Recommended categories with:

json
{
+  "extends": "plugin:lodash-template/recommended-with-html"
+}
Rule IDDescription
lodash-template/attribute-name-casingenforce HTML attribute name casing. (ex. 🆗 <div foo-bar> 🆖 <div fooBar> <div FOO-BAR>)🔧
lodash-template/attribute-value-quoteenforce quotes style of HTML attributes. (ex. 🆗 <div class="abc"> 🆖 <div class='abc'> <div class=abc>)🔧
lodash-template/element-name-casingenforce HTML element name casing. (ex. 🆗 <xxx-element> 🆖 <xxxElement> <DIV>)🔧
lodash-template/html-closing-bracket-newlinerequire or disallow a line break before tag's closing brackets🔧
lodash-template/html-closing-bracket-spacingrequire or disallow a space before tag's closing brackets. (ex. 🆗 <input> <input·/> 🆖 <input·> <input/>)🔧
lodash-template/html-comment-content-newlinerequire or disallow a line break before and after HTML comment contents🔧
lodash-template/html-comment-spacingenforce unified spacing in HTML comment. (ex. 🆗 <!-- comment -->, 🆖 <!--comment-->)🔧
lodash-template/html-content-newlinerequire or disallow a line break before and after HTML contents🔧
lodash-template/html-indentenforce consistent HTML indentation.🔧
lodash-template/max-attributes-per-lineenforce the maximum number of HTML attributes per line🔧
lodash-template/no-duplicate-attributesdisallow duplication of HTML attributes. (ex. 🆖 <div foo foo>)
lodash-template/no-html-commentsdisallow HTML comments. (ex. 🆖 <!-- comment -->)
lodash-template/no-multi-spaces-in-html-tagdisallow multiple spaces in HTML tags. (ex. 🆖 <input···type="text">)🔧
lodash-template/no-space-attribute-equal-signdisallow spacing around equal signs in attribute. (ex. 🆗 <div class="item"> 🆖 <div class = "item">)🔧
lodash-template/no-warning-html-commentsdisallow specified warning terms in HTML comments. (ex. 🆖 <!-- TODO:task -->)

Uncategorized

No preset enables the rules in this category. Please enable each rule if you want.

For example:

json
{
+  "rules": {
+    "lodash-template/no-template-tag-in-start-tag": "error"
+  }
+}
Rule IDDescription
lodash-template/no-template-tag-in-start-tagdisallow template tag in start tag outside attribute values. (ex. 🆖 <input <%= 'disabled' %> >)
lodash-template/prefer-escape-template-interpolationsprefer escape micro-template interpolations. (ex. 🆗 <%- ... %>, 🆖 <%= ... %>)
+ + + + \ No newline at end of file diff --git a/rules/max-attributes-per-line.html b/rules/max-attributes-per-line.html new file mode 100644 index 00000000..e28144aa --- /dev/null +++ b/rules/max-attributes-per-line.html @@ -0,0 +1,100 @@ + + + + + + lodash-template/max-attributes-per-line | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/max-attributes-per-line

enforce the maximum number of HTML attributes per line

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

Limits the maximum number of attributes/properties per line to improve readability.

This rule aims to enforce a number of attributes per line in HTML. It checks all the elements and verifies that the number of attributes per line does not exceed the defined maximum. An attribute is considered to be in a new line when there is a line break between two attributes.

html
<% /* eslint "lodash-template/max-attributes-per-line": "error" */ %>
+<!-- ✓ GOOD -->
+<input foo="1">
+
+<input
+  foo="1"
+  bar="2"
+>
+
+<input
+  foo="1"
+  bar="2"
+  baz="3"
+>
+
+<!-- ✗ BAD -->
+<input foo="1" 
bar="2"
>
+ +<input + foo="1"
bar="2"
+> + +<input + foo="1"
bar="2"
+ baz="3" +>

Options

json
{
+  "lodash-template/max-attributes-per-line": ["error", {
+    "singleline": 1,
+    "multiline": {
+      "max": 1,
+      "allowFirstLine": false
+    }
+  }]
+}

allowFirstLine

For multi-line declarations, defines if allows attributes to be put in the first line. (Default false)

html
<% /* eslint
+  lodash-template/max-attributes-per-line: ["error", {
+    "multiline": {
+      "allowFirstLine": false
+    }
+  }]
+*/ %>
+
+<!-- ✓ GOOD -->
+<input
+  foo="1"
+  bar="2"
+>
+
+<!-- ✗ BAD -->
+<input 
foo="1"
+ bar="2" +>

singleline

Number of maximum attributes per line when the opening tag is in a single line. (Default is 1)

html
<% /* eslint
+  lodash-template/max-attributes-per-line: ["error", {
+    "singleline": 1
+  }]
+*/ %>
+
+<!-- ✓ GOOD -->
+<input foo="1">
+
+<!-- ✗ BAD -->
+<input foo="1" 
bar="2"
>

multiline

Number of maximum attributes per line when a tag is in multiple lines. (Default is 1)

html
<% /* eslint
+  lodash-template/max-attributes-per-line: ["error", {
+    "multiline": 1
+  }]
+*/ %>
+
+<!-- ✓ GOOD -->
+<input
+  foo="1"
+  bar="2"
+>
+
+<!-- ✗ BAD -->
+<input
+  foo="1" 
bar="2"
+>

Implementation

+ + + + \ No newline at end of file diff --git a/rules/no-duplicate-attributes.html b/rules/no-duplicate-attributes.html new file mode 100644 index 00000000..0348cfbe --- /dev/null +++ b/rules/no-duplicate-attributes.html @@ -0,0 +1,35 @@ + + + + + + lodash-template/no-duplicate-attributes | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/no-duplicate-attributes

disallow duplication of HTML attributes. (ex. 🆖 <div foo foo>)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".

Rule Details

This rule reports duplicate attributes.

When duplicate arguments exist, only the last one is valid. It's possibly mistakes.

html
<% /* eslint "lodash-template/no-duplicate-attributes": "error" */ %>
+<!-- ✓ GOOD -->
+<div
+  foo="abc"
+></div>
+
+<!-- ✗ BAD -->
+<div
+  
foo="abc"
+
foo="def"
+></div>

Implementation

+ + + + \ No newline at end of file diff --git a/rules/no-empty-template-tag.html b/rules/no-empty-template-tag.html new file mode 100644 index 00000000..7c0316c5 --- /dev/null +++ b/rules/no-empty-template-tag.html @@ -0,0 +1,32 @@ + + + + + + lodash-template/no-empty-template-tag | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/no-empty-template-tag

disallow empty micro-template tag. (ex. 🆖 <% %>)

  • ⚙️ This rule is included in all of "plugin:lodash-template/best-practices", "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".

Rule Details

This rule reports empty micro-template interpolate/evaluate.

html
<% /* eslint "lodash-template/no-empty-template-tag": "error" */ %>
+<!-- ✓ GOOD -->
+<div><%= text %></div>
+
+<!-- ✗ BAD -->
+<div>
<% %>
</div>
+<div>
<%
+%></div>

Implementation

+ + + + \ No newline at end of file diff --git a/rules/no-html-comments.html b/rules/no-html-comments.html new file mode 100644 index 00000000..6109649a --- /dev/null +++ b/rules/no-html-comments.html @@ -0,0 +1,28 @@ + + + + + + lodash-template/no-html-comments | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/no-html-comments

disallow HTML comments. (ex. 🆖 <!-- comment -->)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".

Rule Details

This rule reports HTML comments.

html
<% /* eslint "lodash-template/no-html-comments": "error" */ %>
+<% /* ✓ GOOD */ %>
+
+
<!-- ✗ BAD -->

Implementation

+ + + + \ No newline at end of file diff --git a/rules/no-invalid-template-interpolation.html b/rules/no-invalid-template-interpolation.html new file mode 100644 index 00000000..c2b28b2c --- /dev/null +++ b/rules/no-invalid-template-interpolation.html @@ -0,0 +1,38 @@ + + + + + + lodash-template/no-invalid-template-interpolation | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/no-invalid-template-interpolation

disallow other than expression in micro-template interpolation. (ex. 🆖 <%= if (test) { %>)

  • ⚙️ This rule is included in all of "plugin:lodash-template/best-practices", "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".

Rule Details

This rule disallow other than expression in micro-template interpolation.

html
<% /* eslint "lodash-template/no-invalid-template-interpolation": "error" */ %>
+<!-- ✓ GOOD -->
+<% if (a) { %>
+  <div></div>
+<% } %>
+
+<div><%= text %></div>
+
+<!-- ✗ BAD -->
+
<%= if (a) { %>
+ <div></div> +<% } %> + +<div>
<%= /**/ %>
</div>

Implementation

+ + + + \ No newline at end of file diff --git a/rules/no-irregular-whitespace.html b/rules/no-irregular-whitespace.html new file mode 100644 index 00000000..ac8bfee4 --- /dev/null +++ b/rules/no-irregular-whitespace.html @@ -0,0 +1,38 @@ + + + + + + lodash-template/no-irregular-whitespace | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/no-irregular-whitespace

disallow irregular whitespace outside the template tags.

  • ⚙️ This rule is included in all of "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule disallows the irregular whitespaces.

html
<% /* eslint "lodash-template/no-irregular-whitespace": "error" */ %>
+<!-- ✓ GOOD -->
+<div id="item-id" class="item-content">
+</div >
+
+<!-- ✗ BAD -->
+<div
 
id="item-id"
 
class="item-content">
+</div
 
>

Options

json
{
+  "lodash-template/no-irregular-whitespace": ["error", {
+    "skipComments": false,
+    "skipAttrValues": false,
+    "skipText": false
+  }]
+}

This rule has an object option for exceptions:

  • "skipComments": true allows any whitespace characters in HTML comments
  • "skipAttrValues": true allows any whitespace characters in HTML attribute values
  • "skipText": true allows any whitespace characters in HTML texts

Further Reading

Implementation

+ + + + \ No newline at end of file diff --git a/rules/no-multi-spaces-in-html-tag.html b/rules/no-multi-spaces-in-html-tag.html new file mode 100644 index 00000000..40b205fa --- /dev/null +++ b/rules/no-multi-spaces-in-html-tag.html @@ -0,0 +1,36 @@ + + + + + + lodash-template/no-multi-spaces-in-html-tag | eslint-plugin-lodash-template + `)"> + + + + + + + + + + + + + +
Skip to content

lodash-template/no-multi-spaces-in-html-tag

disallow multiple spaces in HTML tags. (ex. 🆖 <input···type="text">)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule aims to disallow multiple whitespace in a between attributes which are not used for indentation.

html
<% /* eslint "lodash-template/no-multi-spaces-in-html-tag": "error" */ %>
+<!-- ✓ GOOD -->
+<input
+  class="foo"
+  type="text"
+>
+
+<input class="foo" type="text">
+
+<!-- ✗ BAD -->
+<input
class="foo"
+ type="text"
>

Implementation

+ + + + \ No newline at end of file diff --git a/rules/no-multi-spaces-in-scriptlet.html b/rules/no-multi-spaces-in-scriptlet.html new file mode 100644 index 00000000..ab5d14f4 --- /dev/null +++ b/rules/no-multi-spaces-in-scriptlet.html @@ -0,0 +1,50 @@ + + + + + + lodash-template/no-multi-spaces-in-scriptlet | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/no-multi-spaces-in-scriptlet

disallow multiple spaces in scriptlet. (ex. 🆖 <% if···(test)···{ %>)

  • ⚙️ This rule is included in all of "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule aims to disallow multiple whitespace in script which are not used for indentation.

html
<% /* eslint "lodash-template/no-multi-spaces-in-scriptlet": "error" */ %>
+<!-- ✓ GOOD -->
+<%
+var a = 1;
+
+if(foo === "bar") {}
+
+a << b
+
+var arr = [1, 2];
+
+a ? b: c
+%>
+
+<!-- ✗ BAD -->
+<%
+var a =
1;
+ +if(foo
=== "bar") {}
+ +a <<
b
+ +var arr = [1,
2];
+ +a ?
b: c
+%>

Further Reading

Implementation

+ + + + \ No newline at end of file diff --git a/rules/no-script-parsing-error.html b/rules/no-script-parsing-error.html new file mode 100644 index 00000000..28d81cb8 --- /dev/null +++ b/rules/no-script-parsing-error.html @@ -0,0 +1,36 @@ + + + + + + lodash-template/no-script-parsing-error | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/no-script-parsing-error

disallow parsing errors in template

  • ⚙️ This rule is included in all of "plugin:lodash-template/base", "plugin:lodash-template/all", "plugin:lodash-template/best-practices", "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/recommended-with-script".

Rule Details

This rule reports syntax errors in JavaScript template.
This rule works when verification of "JavaScript Templates" is enabled.

js
/* eslint "lodash-template/no-script-parsing-error": "error" */
+/* ✓ GOOD */
+<% if (a) { %>
+  const a = 'ABC'
+<% } else { %>
+  const a = 'DEF'
+<% } %>
js
/* eslint "lodash-template/no-script-parsing-error": "error" */
+/* ✗ BAD */
+<% if (a) { %>
+  const a = 'ABC'
+<% } %>
+const 
a
= 'DEF'

Implementation

+ + + + \ No newline at end of file diff --git a/rules/no-semi-in-template-interpolation.html b/rules/no-semi-in-template-interpolation.html new file mode 100644 index 00000000..4c38a039 --- /dev/null +++ b/rules/no-semi-in-template-interpolation.html @@ -0,0 +1,30 @@ + + + + + + lodash-template/no-semi-in-template-interpolation | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/no-semi-in-template-interpolation

disallow the semicolon at the end of expression in micro template interpolation.(ex. 🆗 <%= text %> 🆖 <%= text; %>)

  • ⚙️ This rule is included in all of "plugin:lodash-template/best-practices", "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule disallow the semicolon at the end of expression in micro template interpolation.

html
<% /* eslint "lodash-template/no-semi-in-template-interpolation": "error" */ %>
+<!-- ✓ GOOD -->
+<%= text %>
+
+<!-- ✗ BAD -->
+<%= text
;
%>

Implementation

+ + + + \ No newline at end of file diff --git a/rules/no-space-attribute-equal-sign.html b/rules/no-space-attribute-equal-sign.html new file mode 100644 index 00000000..52a09733 --- /dev/null +++ b/rules/no-space-attribute-equal-sign.html @@ -0,0 +1,30 @@ + + + + + + lodash-template/no-space-attribute-equal-sign | eslint-plugin-lodash-template + ` :ng: `
`)"> + + + + + + + + + + + + + +
Skip to content

lodash-template/no-space-attribute-equal-sign

disallow spacing around equal signs in attribute. (ex. 🆗 <div class="item"> 🆖 <div class = "item">)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule disallow spacing around equal signs in attribute.

HTML5 allows spaces around equal signs. But space-less is easier to read, and groups entities better together.

html
<% /* eslint "lodash-template/no-space-attribute-equal-sign": "error" */ %>
+<!-- ✓ GOOD -->
+<input class="item">
+
+<!-- ✗ BAD -->
+<input class 
=
"item">

Further Reading

Implementation

+ + + + \ No newline at end of file diff --git a/rules/no-template-tag-in-start-tag.html b/rules/no-template-tag-in-start-tag.html new file mode 100644 index 00000000..e3b525ac --- /dev/null +++ b/rules/no-template-tag-in-start-tag.html @@ -0,0 +1,51 @@ + + + + + + lodash-template/no-template-tag-in-start-tag | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/no-template-tag-in-start-tag

disallow template tag in start tag outside attribute values. (ex. 🆖 <input <%= 'disabled' %> >)

  • ⚙️ This rule is included in "plugin:lodash-template/all".

Rule Details

This rule reports the template tag that is in the start tag, outside attribute values.

html
<% /* eslint "lodash-template/no-template-tag-in-start-tag": "error" */ %>
+<!-- ✓ GOOD -->
+<input disabled >
+
+<input class="<%= hidden ? 'hidden' : '' %>" >
+
+<!-- ✗ BAD -->
+<input 
<%= 'disabled' %>
>
+ +<input
<%= disabled ? 'disabled' : '' %>
>
+ +<input +
<% if (disabled) { %>
+ disabled +
<% } %>
+>

Options

json
{
+  "lodash-template/no-template-tag-in-start-tag": ["error", {
+    "arrowEvaluateTag": false,
+  }]
+}

Examples for this rule with {arrowEvaluateTag: true} option:

html
<% /* eslint "lodash-template/no-template-tag-in-start-tag": ["error", {"arrowEvaluateTag": true}] */ %>
+<!-- ✓ GOOD -->
+<input disabled >
+<input
+  <% if (disabled) { %>
+  disabled
+  <% } %>
+>

Implementation

+ + + + \ No newline at end of file diff --git a/rules/no-warning-html-comments.html b/rules/no-warning-html-comments.html new file mode 100644 index 00000000..34e6e2c3 --- /dev/null +++ b/rules/no-warning-html-comments.html @@ -0,0 +1,26 @@ + + + + + + lodash-template/no-warning-html-comments | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/no-warning-html-comments

disallow specified warning terms in HTML comments. (ex. 🆖 <!-- TODO:task -->)

  • ⚙️ This rule is included in "plugin:lodash-template/recommended-with-html" and "plugin:lodash-template/all".

Rule Details

This rule reports HTML comments that include any of the predefined terms specified in its configuration.

html
<% /* eslint "lodash-template/no-warning-html-comments": "error" */ %>
+
<!-- TODO -->

Implementation

+ + + + \ No newline at end of file diff --git a/rules/prefer-escape-template-interpolations.html b/rules/prefer-escape-template-interpolations.html new file mode 100644 index 00000000..c64dd2b8 --- /dev/null +++ b/rules/prefer-escape-template-interpolations.html @@ -0,0 +1,31 @@ + + + + + + lodash-template/prefer-escape-template-interpolations | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/prefer-escape-template-interpolations

prefer escape micro-template interpolations. (ex. 🆗 <%- ... %>, 🆖 <%= ... %>)

  • ⚙️ This rule is included in "plugin:lodash-template/all".

Rule Details

This rule reports no escape micro-template interpolates.

html
<% /* eslint "lodash-template/prefer-escape-template-interpolations": "error" */ %>
+<!-- ✓ GOOD -->
+<div><%- text %></div>
+<div><% print(html) %></div>
+
+<!-- ✗ BAD -->
+<div>
<%= text %>
</div>

Implementation

+ + + + \ No newline at end of file diff --git a/rules/scriptlet-indent.html b/rules/scriptlet-indent.html new file mode 100644 index 00000000..b97503de --- /dev/null +++ b/rules/scriptlet-indent.html @@ -0,0 +1,63 @@ + + + + + + lodash-template/scriptlet-indent | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/scriptlet-indent

enforce consistent indentation to scriptlet in micro-template tag.

  • ⚙️ This rule is included in all of "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule enforces a consistent indentation style to script in micro-template tag. The default style is 2 spaces.

html
<% /* eslint "lodash-template/scriptlet-indent": "error" */ %>
+<!-- ✓ GOOD -->
+<% for (
+    let i = 0;
+    i < arr.length;
+    i++
+  ) { %>
+  <div class="<%= arr[i] %>"></div>
+<% } %>
+
+<!-- ✗ BAD -->
+<% for (
+
let i = 0;
+ i < arr.length; +
i++
+
) { %>
+ <div class="<%= arr[i] %>"></div> +<% } %>

Options

json
{
+  "lodash-template/scriptlet-indent": ["error", type, {
+    "startIndent": 1,
+    "switchCase": 0
+  }]
+}
  • type (number | "tab") ... The type of indentation. Default is 2. If this is a number, it's the number of spaces for one indent. If this is "tab", it uses one tab for one indent.
  • startIndent (integer) ... The multiplier of indentation for top-level statements in micro-template tag. Default is 1.
  • switchCase (integer) ... The multiplier of indentation for case/default clauses. Default is 0.

Examples for this rule with {startIndent: 0}:

html
<% /* eslint "lodash-template/scriptlet-indent": ["error", 2, {"startIndent": 0}] */ %>
+<!-- ✓ GOOD -->
+<% for (
+  let i = 0;
+  i < arr.length;
+  i++
+) { %>
+  <div class="<%= arr[i] %>"></div>
+<% } %>

Examples for this rule with {startIndent: 2}:

html
<% /* eslint "lodash-template/scriptlet-indent": ["error", 2, {"startIndent": 2}] */ %>
+<!-- ✓ GOOD -->
+<% for (
+      let i = 0;
+      i < arr.length;
+      i++
+    ) { %>
+  <div class="<%= arr[i] %>"></div>
+<% } %>

Implementation

+ + + + \ No newline at end of file diff --git a/rules/template-tag-spacing.html b/rules/template-tag-spacing.html new file mode 100644 index 00000000..8059ae08 --- /dev/null +++ b/rules/template-tag-spacing.html @@ -0,0 +1,45 @@ + + + + + + lodash-template/template-tag-spacing | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

lodash-template/template-tag-spacing

enforce unified spacing in micro-template tag. (ex. 🆗 <%= prop %>, 🆖 <%=prop%>)

  • ⚙️ This rule is included in all of "plugin:lodash-template/recommended", "plugin:lodash-template/recommended-with-html", "plugin:lodash-template/recommended-with-script" and "plugin:lodash-template/all".
  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

Rule Details

This rule aims to enforce unified spacing in micro-template interpolate/evaluate.

html
<% /* eslint "lodash-template/template-tag-spacing": "error" */ %>
+<!-- ✓ GOOD -->
+<div><%= text %></div>
+
+<!-- ✗ BAD -->
+<div>
<%=
text
%>
</div>
+<div>
<%=
text
%>
</div>

Options

Default spacing is set to always

json
{
+  "lodash-template/micro-template-interpolation-spacing": ["error", "always" | "never"]
+}

"always" - Expect one space between expression and curly brackets.

html
<% /* eslint "lodash-template/template-tag-spacing": ["error", "always"] */ %>
+<!-- ✓ GOOD -->
+<div><%= text %></div>
+
+<!-- ✗ BAD -->
+<div>
<%=
text
%>
</div>
+<div>
<%=
text
%>
</div>

"never" - Expect no spaces between expression and curly brackets.

html
<%/* eslint "lodash-template/template-tag-spacing": ["error", "never"] */%>
+<!-- ✓ GOOD -->
+<div><%=text%></div>
+
+<!-- ✗ BAD -->
+<div>
<%=
text
%>
</div>
+<div>
<%=
text
%>
</div>

Implementation

+ + + + \ No newline at end of file diff --git a/service-worker.js b/service-worker.js new file mode 100644 index 00000000..9f78ca85 --- /dev/null +++ b/service-worker.js @@ -0,0 +1,13 @@ +// https://github.com/NekR/self-destroying-sw +self.addEventListener("install", (_e) => { + self.skipWaiting(); +}); + +self.addEventListener("activate", (_e) => { + self.registration + .unregister() + .then(() => self.clients.matchAll()) + .then((clients) => { + for (const client of clients) client.navigate(client.url); + }); +}); diff --git a/services/ast-for-html.html b/services/ast-for-html.html new file mode 100644 index 00000000..05e87ece --- /dev/null +++ b/services/ast-for-html.html @@ -0,0 +1,92 @@ + + + + + + AST for HTML | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

AST for HTML

You can use the type definition of this AST:

ts

+export function create(context) {
+    const microTemplateService = sourceCode.parserServices.getMicroTemplateService()
+    return {
+        "Program:exit"() {
+            microTemplateService.traverseDocumentNodes({
+                HTMLElement(node: HTMLElement): void {
+                    // ...
+                },
+                HTMLText(node: HTMLText): void {
+                    // ...
+                },
+                HTMLComment(node: HTMLComment): void {
+                    // ...
+                },
+            })
+        },
+    }
+}

See details: https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/ast/html-nodes.js

HTMLToken

ts
extend interface HTMLToken {
+    range: [ number ],
+    htmlValue: string,
+    value: string,
+}
  • The range property is an array which has 2 integers. The 1st integer is the offset of the start location of the node. The 2nd integer is the offset of the end location of the node.

HTMLNode

ts
extend interface HTMLNode {
+    range: [ number ]
+}
  • The range property is an array which has 2 integers. The 1st integer is the offset of the start location of the node. The 2nd integer is the offset of the end location of the node.

HTMLDocument

ts
interface HTMLDocument <: HTMLNode {
+    type: "HTMLDocument",
+    children: [ HTMLElement | HTMLText | HTMLComment ]
+}
  • This is a HTML Document.

HTMLDocumentFragment

ts
interface HTMLDocumentFragment <: HTMLNode  {
+    type: "HTMLDocumentFragment",
+    children: [ HTMLElement | HTMLText | HTMLComment ]
+}
  • This is a HTML DocumentFragment.

HTMLDocumentType

ts
interface HTMLDocumentType <: HTMLNode  {
+    type: "HTMLDocumentType",
+    name: string,
+    publicId: string,
+    systemId: string
+}
  • This is a HTML Document Type.

HTMLComment

ts
interface HTMLComment <: HTMLNode  {
+    type: "HTMLComment",
+    value: string,
+    commentOpen: HTMLToken | null,
+    commentClose: HTMLToken | null,
+}
  • This is a HTML comment node.

HTMLText

ts
interface HTMLText <: HTMLNode  {
+    type: "HTMLText",
+    value: string
+}
  • This is a HTML text node.

HTMLElement

ts
interface HTMLElement <: HTMLNode  {
+    type: "HTMLElement",
+    name: string,
+    children: [ HTMLElement | HTMLText | HTMLComment ]
+    startTag: HTMLStartTag | null,
+    endTag: HTMLEndTag | null
+}
  • This is a HTML element node.

HTMLStartTag

ts
interface HTMLStartTag <: HTMLNode  {
+    type: "HTMLStartTag",
+    attributes: [ HTMLAttribute ],
+    tagOpen: HTMLToken,
+    tagClose: HTMLToken,
+    selfClosing: boolean,
+    ignoredAttributes: [ HTMLAttribute ],
+}
  • This is a HTML element start tag.

HTMLAttribute

ts
interface HTMLAttribute <: HTMLNode  {
+    type: "HTMLAttribute",
+    key: string,
+    vakue: string,
+    keyToken: HTMLToken,
+    eqToken: HTMLToken | null,
+    valueToken: HTMLToken | null,
+}
  • This is a HTML attribute.

HTMLEndTag

ts
interface HTMLEndTag <: HTMLNode  {
+    type: "HTMLEndTag",
+    tagOpen: HTMLToken,
+    tagClose: HTMLToken,
+}
  • This is a HTML element end tag.
+ + + + \ No newline at end of file diff --git a/services/ast-for-template-tag.html b/services/ast-for-template-tag.html new file mode 100644 index 00000000..15c6e743 --- /dev/null +++ b/services/ast-for-template-tag.html @@ -0,0 +1,68 @@ + + + + + + AST for <%= templateTag %> | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

AST for <%= templateTag %>

You can use the type definition of this AST:

ts

+export function create(context) {
+    const microTemplateService = sourceCode.parserServices.getMicroTemplateService()
+    return {
+        "Program:exit"() {
+            microTemplateService.traverseMicroTemplates({
+                MicroTemplateEvaluate(node: MicroTemplateEvaluate): void {
+                    // ...
+                },
+                MicroTemplateInterpolate(node: MicroTemplateInterpolate): void {
+                    // ...
+                },
+                MicroTemplateEscape(node: MicroTemplateEscape): void {
+                    // ...
+                },
+            })
+        },
+    }
+}

See details: https://github.com/ota-meshi/eslint-plugin-lodash-template/blob/master/lib/ast/micro-template-nodes.js

Token

ts
extend interface Token {
+    range: [ number ]
+}
  • The range property is an array which has 2 integers. The 1st integer is the offset of the start location of the node. The 2nd integer is the offset of the end location of the node.

Node

ts
extend interface Node {
+    range: [ number ]
+}
  • The range property is an array which has 2 integers. The 1st integer is the offset of the start location of the node. The 2nd integer is the offset of the end location of the node.

MicroTemplateEvaluate

ts
interface MicroTemplateEvaluate <: Node {
+    type: "MicroTemplateEvaluate",
+    expressionStart: MicroTemplateExpressionStart,
+    expressionEnd: MicroTemplateExpressionEnd,
+    code: string
+}
  • This is a template tag that is evaluated as script.
  • The start tag information is stored in the expressionStart property.
  • The end tag information is stored in the expressionEnd property.

MicroTemplateInterpolate

ts
interface MicroTemplateInterpolate <: Node  {
+    type: "MicroTemplateInterpolate",
+    expressionStart: MicroTemplateExpressionStart,
+    expressionEnd: MicroTemplateExpressionEnd,
+    code: string
+}
  • This is a template tag that is interpolate as template.
  • The start tag information is stored in the expressionStart property.
  • The end tag information is stored in the expressionEnd property.

MicroTemplateEscape

ts
interface MicroTemplateInterpolate <: Node  {
+    type: "MicroTemplateEscape",
+    expressionStart: MicroTemplateExpressionStart,
+    expressionEnd: MicroTemplateExpressionEnd,
+    code: string
+}
  • This is a template tag that is escapes to interpolate as template.
  • The start tag information is stored in the expressionStart property.
  • The end tag information is stored in the expressionEnd property.

MicroTemplateExpressionStart

ts
interface MicroTemplateExpressionStart <: Token  {
+    type: "MicroTemplateExpressionStart",
+    chars: string
+}
  • This is the start tag of the template tag.
  • The delimiter string is stored in the chars property.

MicroTemplateExpressionEnd

ts
interface MicroTemplateExpressionEnd <: Token  {
+    type: "MicroTemplateExpressionEnd",
+    chars: string
+}
  • This is the end tag of the template tag.
  • The delimiter string is stored in the chars property.
+ + + + \ No newline at end of file diff --git a/services/index.html b/services/index.html new file mode 100644 index 00000000..aed7fa89 --- /dev/null +++ b/services/index.html @@ -0,0 +1,25 @@ + + + + + + Contributing | eslint-plugin-lodash-template + + + + + + + + + + + + + + +
Skip to content

Contributing

MicroTemplateService

This plugin's parser provides MicroTemplateService from parserServices. MicroTemplateServic can be get with sourceCode.parserServices.getMicroTemplateService().

Traverse MicroTemplates

Traverse HTML

+ + + + \ No newline at end of file diff --git a/vp-icons.css b/vp-icons.css new file mode 100644 index 00000000..ddc5bd8e --- /dev/null +++ b/vp-icons.css @@ -0,0 +1 @@ +.vpi-social-github{--icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")} \ No newline at end of file