From 06c4aa94b6c2dfd644da7afe871605c08d38c50a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 8 Jun 2024 00:41:33 +0000 Subject: [PATCH] Deploy to GitHub pages --- 404.html | 34 ++++ assets/app.kKVWRcqi.js | 7 + .../chunks/@localSearchIndexroot.ClQ3OA1c.js | 1 + assets/chunks/VPLocalSearchBox.-MOopR_s.js | 13 ++ assets/chunks/framework.BZkFhLI2.js | 1 + assets/chunks/theme.nKR3Z4U4.js | 7 + assets/contribution_index.md.xSz8e9wz.js | 3 + assets/contribution_index.md.xSz8e9wz.lean.js | 1 + assets/example_api-controller.md.XBwemvty.js | 15 ++ ...example_api-controller.md.XBwemvty.lean.js | 1 + assets/guide_autoMapper.md.UB8WcRi7.js | 16 ++ assets/guide_autoMapper.md.UB8WcRi7.lean.js | 1 + assets/guide_compile.md.cinpU56c.js | 14 ++ assets/guide_compile.md.cinpU56c.lean.js | 1 + .../guide_dependency-injection.md.qVniEsVf.js | 60 ++++++ ...e_dependency-injection.md.qVniEsVf.lean.js | 1 + assets/guide_extensions.md.05kIhNxA.js | 1 + assets/guide_extensions.md.05kIhNxA.lean.js | 1 + ...de_extensions_elasticsearch.md.rYnqRIzY.js | 148 ++++++++++++++ ...tensions_elasticsearch.md.rYnqRIzY.lean.js | 1 + ..._extensions_entityframework.md.WR0AOgc0.js | 5 + ...nsions_entityframework.md.WR0AOgc0.lean.js | 1 + ...e_extensions_gridify-client.md.GNaIHB85.js | 21 ++ ...ensions_gridify-client.md.GNaIHB85.lean.js | 1 + assets/guide_filtering.md.TD7rR8FX.js | 42 ++++ assets/guide_filtering.md.TD7rR8FX.lean.js | 1 + assets/guide_getting-started.md.FWeU4sXV.js | 1 + .../guide_getting-started.md.FWeU4sXV.lean.js | 1 + ..._gridifyGlobalConfiguration.md.UeTwzC58.js | 1 + ...ifyGlobalConfiguration.md.UeTwzC58.lean.js | 1 + assets/guide_gridifyMapper.md.pzrB12Km.js | 38 ++++ .../guide_gridifyMapper.md.pzrB12Km.lean.js | 1 + assets/guide_gridifyQuery.md.ILlAAeUX.js | 23 +++ assets/guide_gridifyQuery.md.ILlAAeUX.lean.js | 1 + assets/guide_index.md.dsHjDx2f.js | 1 + assets/guide_index.md.dsHjDx2f.lean.js | 1 + assets/guide_ordering.md.l6koKC3p.js | 17 ++ assets/guide_ordering.md.l6koKC3p.lean.js | 1 + assets/guide_queryBuilder.md.vfz1Uidr.js | 5 + assets/guide_queryBuilder.md.vfz1Uidr.lean.js | 1 + assets/index.md.u0-vC_kO.js | 1 + assets/index.md.u0-vC_kO.lean.js | 1 + .../inter-italic-cyrillic-ext.OVycGSDq.woff2 | Bin 0 -> 28332 bytes assets/inter-italic-cyrillic.-nLMcIwj.woff2 | Bin 0 -> 17824 bytes assets/inter-italic-greek-ext.hznxWNZO.woff2 | Bin 0 -> 12188 bytes assets/inter-italic-greek.PSfer2Kc.woff2 | Bin 0 -> 23264 bytes assets/inter-italic-latin-ext.RnFly65-.woff2 | Bin 0 -> 63552 bytes assets/inter-italic-latin.27E69YJn.woff2 | Bin 0 -> 46048 bytes assets/inter-italic-vietnamese.xzQHe1q1.woff2 | Bin 0 -> 8784 bytes .../inter-roman-cyrillic-ext.8T9wMG5w.woff2 | Bin 0 -> 26600 bytes assets/inter-roman-cyrillic.jIZ9REo5.woff2 | Bin 0 -> 16780 bytes assets/inter-roman-greek-ext.9JiNzaSO.woff2 | Bin 0 -> 11808 bytes assets/inter-roman-greek.Cb5wWeGA.woff2 | Bin 0 -> 21776 bytes assets/inter-roman-latin-ext.GZWE-KO4.woff2 | Bin 0 -> 59608 bytes assets/inter-roman-latin.bvIUbFQP.woff2 | Bin 0 -> 42464 bytes assets/inter-roman-vietnamese.paY3CzEB.woff2 | Bin 0 -> 8492 bytes assets/style.O8TM59vS.css | 1 + assets/v1_index.md.utgFH8vB.js | 78 ++++++++ assets/v1_index.md.utgFH8vB.lean.js | 1 + contribution/index.html | 39 ++++ example/api-controller.html | 51 +++++ favicon.ico | Bin 0 -> 15406 bytes gridify-dark-logo.svg | 1 + gridify-dark-logo2.svg | 1 + gridify-light-logo.svg | 1 + gridify-light-logo2.svg | 1 + gridify-readme-logo.svg | 1 + guide/autoMapper.html | 52 +++++ guide/compile.html | 50 +++++ guide/dependency-injection.html | 96 +++++++++ guide/extensions.html | 37 ++++ guide/extensions/elasticsearch.html | 184 ++++++++++++++++++ guide/extensions/entityframework.html | 41 ++++ guide/extensions/gridify-client.html | 57 ++++++ guide/filtering.html | 78 ++++++++ guide/getting-started.html | 37 ++++ guide/gridifyGlobalConfiguration.html | 37 ++++ guide/gridifyMapper.html | 74 +++++++ guide/gridifyQuery.html | 59 ++++++ guide/index.html | 37 ++++ guide/ordering.html | 53 +++++ guide/queryBuilder.html | 41 ++++ hashmap.json | 1 + index.html | 37 ++++ sitemap.xml | 1 + social-logo.png | Bin 0 -> 41019 bytes v1/index.html | 114 +++++++++++ 87 files changed, 1754 insertions(+) create mode 100644 404.html create mode 100644 assets/app.kKVWRcqi.js create mode 100644 assets/chunks/@localSearchIndexroot.ClQ3OA1c.js create mode 100644 assets/chunks/VPLocalSearchBox.-MOopR_s.js create mode 100644 assets/chunks/framework.BZkFhLI2.js create mode 100644 assets/chunks/theme.nKR3Z4U4.js create mode 100644 assets/contribution_index.md.xSz8e9wz.js create mode 100644 assets/contribution_index.md.xSz8e9wz.lean.js create mode 100644 assets/example_api-controller.md.XBwemvty.js create mode 100644 assets/example_api-controller.md.XBwemvty.lean.js create mode 100644 assets/guide_autoMapper.md.UB8WcRi7.js create mode 100644 assets/guide_autoMapper.md.UB8WcRi7.lean.js create mode 100644 assets/guide_compile.md.cinpU56c.js create mode 100644 assets/guide_compile.md.cinpU56c.lean.js create mode 100644 assets/guide_dependency-injection.md.qVniEsVf.js create mode 100644 assets/guide_dependency-injection.md.qVniEsVf.lean.js create mode 100644 assets/guide_extensions.md.05kIhNxA.js create mode 100644 assets/guide_extensions.md.05kIhNxA.lean.js create mode 100644 assets/guide_extensions_elasticsearch.md.rYnqRIzY.js create mode 100644 assets/guide_extensions_elasticsearch.md.rYnqRIzY.lean.js create mode 100644 assets/guide_extensions_entityframework.md.WR0AOgc0.js create mode 100644 assets/guide_extensions_entityframework.md.WR0AOgc0.lean.js create mode 100644 assets/guide_extensions_gridify-client.md.GNaIHB85.js create mode 100644 assets/guide_extensions_gridify-client.md.GNaIHB85.lean.js create mode 100644 assets/guide_filtering.md.TD7rR8FX.js create mode 100644 assets/guide_filtering.md.TD7rR8FX.lean.js create mode 100644 assets/guide_getting-started.md.FWeU4sXV.js create mode 100644 assets/guide_getting-started.md.FWeU4sXV.lean.js create mode 100644 assets/guide_gridifyGlobalConfiguration.md.UeTwzC58.js create mode 100644 assets/guide_gridifyGlobalConfiguration.md.UeTwzC58.lean.js create mode 100644 assets/guide_gridifyMapper.md.pzrB12Km.js create mode 100644 assets/guide_gridifyMapper.md.pzrB12Km.lean.js create mode 100644 assets/guide_gridifyQuery.md.ILlAAeUX.js create mode 100644 assets/guide_gridifyQuery.md.ILlAAeUX.lean.js create mode 100644 assets/guide_index.md.dsHjDx2f.js create mode 100644 assets/guide_index.md.dsHjDx2f.lean.js create mode 100644 assets/guide_ordering.md.l6koKC3p.js create mode 100644 assets/guide_ordering.md.l6koKC3p.lean.js create mode 100644 assets/guide_queryBuilder.md.vfz1Uidr.js create mode 100644 assets/guide_queryBuilder.md.vfz1Uidr.lean.js create mode 100644 assets/index.md.u0-vC_kO.js create mode 100644 assets/index.md.u0-vC_kO.lean.js create mode 100644 assets/inter-italic-cyrillic-ext.OVycGSDq.woff2 create mode 100644 assets/inter-italic-cyrillic.-nLMcIwj.woff2 create mode 100644 assets/inter-italic-greek-ext.hznxWNZO.woff2 create mode 100644 assets/inter-italic-greek.PSfer2Kc.woff2 create mode 100644 assets/inter-italic-latin-ext.RnFly65-.woff2 create mode 100644 assets/inter-italic-latin.27E69YJn.woff2 create mode 100644 assets/inter-italic-vietnamese.xzQHe1q1.woff2 create mode 100644 assets/inter-roman-cyrillic-ext.8T9wMG5w.woff2 create mode 100644 assets/inter-roman-cyrillic.jIZ9REo5.woff2 create mode 100644 assets/inter-roman-greek-ext.9JiNzaSO.woff2 create mode 100644 assets/inter-roman-greek.Cb5wWeGA.woff2 create mode 100644 assets/inter-roman-latin-ext.GZWE-KO4.woff2 create mode 100644 assets/inter-roman-latin.bvIUbFQP.woff2 create mode 100644 assets/inter-roman-vietnamese.paY3CzEB.woff2 create mode 100644 assets/style.O8TM59vS.css create mode 100644 assets/v1_index.md.utgFH8vB.js create mode 100644 assets/v1_index.md.utgFH8vB.lean.js create mode 100644 contribution/index.html create mode 100644 example/api-controller.html create mode 100644 favicon.ico create mode 100644 gridify-dark-logo.svg create mode 100644 gridify-dark-logo2.svg create mode 100644 gridify-light-logo.svg create mode 100644 gridify-light-logo2.svg create mode 100644 gridify-readme-logo.svg create mode 100644 guide/autoMapper.html create mode 100644 guide/compile.html create mode 100644 guide/dependency-injection.html create mode 100644 guide/extensions.html create mode 100644 guide/extensions/elasticsearch.html create mode 100644 guide/extensions/entityframework.html create mode 100644 guide/extensions/gridify-client.html create mode 100644 guide/filtering.html create mode 100644 guide/getting-started.html create mode 100644 guide/gridifyGlobalConfiguration.html create mode 100644 guide/gridifyMapper.html create mode 100644 guide/gridifyQuery.html create mode 100644 guide/index.html create mode 100644 guide/ordering.html create mode 100644 guide/queryBuilder.html create mode 100644 hashmap.json create mode 100644 index.html create mode 100644 sitemap.xml create mode 100644 social-logo.png create mode 100644 v1/index.html diff --git a/404.html b/404.html new file mode 100644 index 00000000..10928d95 --- /dev/null +++ b/404.html @@ -0,0 +1,34 @@ + + + + + + 404 | Gridify + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
+ + + + \ No newline at end of file diff --git a/assets/app.kKVWRcqi.js b/assets/app.kKVWRcqi.js new file mode 100644 index 00000000..76b8bbdf --- /dev/null +++ b/assets/app.kKVWRcqi.js @@ -0,0 +1,7 @@ +import{a3 as p,v as s,a4 as c,a5 as l,a6 as f,a7 as d,a8 as m,a9 as h,aa as g,ab as A,ac as v,ad as P,X as y,d as w,u as C,j as b,z as R,ae as _,af as D,ag as E}from"./chunks/framework.BZkFhLI2.js";import{t as i}from"./chunks/theme.nKR3Z4U4.js";const L="2.14.2",T={extends:i,Layout:()=>p(i.Layout,null,{}),enhanceApp({app:e,router:a,siteData:t}){e.config.globalProperties.$version=L}};function u(e){if(e.extends){const a=u(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const o=u(T),j=w({name:"VitePressApp",setup(){const{site:e}=C();return b(()=>{R(()=>{document.documentElement.lang=e.value.lang,document.documentElement.dir=e.value.dir})}),e.value.router.prefetchLinks&&_(),D(),E(),o.setup&&o.setup(),()=>p(o.Layout)}});async function x(){const e=S(),a=O();a.provide(l,e);const t=f(e.route);return a.provide(d,t),a.component("Content",m),a.component("ClientOnly",h),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),o.enhanceApp&&await o.enhanceApp({app:a,router:e,siteData:g}),{app:a,router:e,data:t}}function O(){return A(j)}function S(){let e=s,a;return v(t=>{let n=P(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=y(()=>import(n),__vite__mapDeps([]))),s&&(e=!1),r},o.NotFound)}s&&x().then(({app:e,router:a,data:t})=>{a.go().then(()=>{c(a.route,t.site),e.mount("#app")})});export{x as createApp}; +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = [] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} \ No newline at end of file diff --git a/assets/chunks/@localSearchIndexroot.ClQ3OA1c.js b/assets/chunks/@localSearchIndexroot.ClQ3OA1c.js new file mode 100644 index 00000000..c843c482 --- /dev/null +++ b/assets/chunks/@localSearchIndexroot.ClQ3OA1c.js @@ -0,0 +1 @@ +const e='{"documentCount":98,"nextId":98,"documentIds":{"0":"/Gridify/example/api-controller#using-gridify-in-api-controllers","1":"/Gridify/example/api-controller#describing-the-scenario","2":"/Gridify/example/api-controller#solving-problems-using-gridify","3":"/Gridify/example/api-controller#what-is-the-paging-return-value","4":"/Gridify/example/api-controller#what-is-gridifyquery","5":"/Gridify/example/api-controller#sample-request-query-string","6":"/Gridify/example/api-controller#more-information","7":"/Gridify/guide/autoMapper#automapper","8":"/Gridify/guide/autoMapper#gridifyto","9":"/Gridify/guide/compile#compile-and-reuse","10":"/Gridify/guide/compile#performance","11":"/Gridify/guide/dependency-injection#dependency-injection","12":"/Gridify/guide/dependency-injection#register-gridifymapper-with-di","13":"/Gridify/guide/dependency-injection#_1-define-mapping-profiles","14":"/Gridify/guide/dependency-injection#_2-register-mapping-profiles","15":"/Gridify/guide/dependency-injection#_3-inject-and-use-mappers","16":"/Gridify/guide/extensions#extensions","17":"/Gridify/guide/extensions#applyfiltering","18":"/Gridify/guide/extensions#applyordering","19":"/Gridify/guide/extensions#applypaging","20":"/Gridify/guide/extensions#applyfilteringandordering","21":"/Gridify/guide/extensions#applyorderingandpaging","22":"/Gridify/guide/extensions#applyfilteringorderingpaging","23":"/Gridify/guide/extensions#gridifyqueryable","24":"/Gridify/guide/extensions#gridify","25":"/Gridify/guide/extensions/elasticsearch#elasticsearch","26":"/Gridify/guide/extensions/elasticsearch#gridify-elasticsearch-package","27":"/Gridify/guide/extensions/elasticsearch#installation","28":"/Gridify/guide/extensions/elasticsearch#package-manager","29":"/Gridify/guide/extensions/elasticsearch#net-cli","30":"/Gridify/guide/extensions/elasticsearch#configurations","31":"/Gridify/guide/extensions/elasticsearch#customelasticsearchnamingaction","32":"/Gridify/guide/extensions/elasticsearch#default","33":"/Gridify/guide/extensions/elasticsearch#customized","34":"/Gridify/guide/extensions/elasticsearch#examples-of-usage","35":"/Gridify/guide/extensions/elasticsearch#without-pre-initialized-mapper","36":"/Gridify/guide/extensions/elasticsearch#with-custom-mapping","37":"/Gridify/guide/extensions/elasticsearch#with-customelasticsearchnamingaction-initialized","38":"/Gridify/guide/extensions/entityframework#entity-framework","39":"/Gridify/guide/extensions/entityframework#gridify-entityframework-package","40":"/Gridify/guide/extensions/entityframework#installation","41":"/Gridify/guide/extensions/entityframework#package-manager","42":"/Gridify/guide/extensions/entityframework#net-cli","43":"/Gridify/guide/extensions/entityframework#compatibility-layer","44":"/Gridify/guide/extensions/entityframework#configuration","45":"/Gridify/guide/extensions/entityframework#entityframeworkcompatibilitylayer","46":"/Gridify/guide/extensions/entityframework#enableentityframeworkcompatibilitylayer","47":"/Gridify/guide/extensions/entityframework#disableentityframeworkcompatibilitylayer","48":"/Gridify/guide/extensions/gridify-client#gridify-client-library","49":"/Gridify/guide/extensions/gridify-client#installation","50":"/Gridify/guide/extensions/gridify-client#gridifyquerybuilder","51":"/Gridify/guide/extensions/gridify-client#conditional-operators","52":"/Gridify/guide/extensions/gridify-client#usage-example","53":"/Gridify/guide/filtering#filtering","54":"/Gridify/guide/filtering#conditional-operators","55":"/Gridify/guide/filtering#special-operators","56":"/Gridify/guide/filtering#logical-operators","57":"/Gridify/guide/filtering#case-insensitive-operator-i","58":"/Gridify/guide/filtering#escaping","59":"/Gridify/guide/filtering#passing-indexes","60":"/Gridify/guide/filtering#custom-operators","61":"/Gridify/guide/getting-started#getting-started","62":"/Gridify/guide/getting-started#installation","63":"/Gridify/guide/getting-started#namespace","64":"/Gridify/guide/getting-started#how-to-use","65":"/Gridify/guide/gridifyGlobalConfiguration#gridifyglobalconfiguration","66":"/Gridify/guide/gridifyGlobalConfiguration#general-configurations","67":"/Gridify/guide/gridifyGlobalConfiguration#defaultpagesize","68":"/Gridify/guide/gridifyGlobalConfiguration#casesensitivemapper","69":"/Gridify/guide/gridifyGlobalConfiguration#allownullsearch","70":"/Gridify/guide/gridifyGlobalConfiguration#ignorenotmappedfields","71":"/Gridify/guide/gridifyGlobalConfiguration#disablenullchecks","72":"/Gridify/guide/gridifyGlobalConfiguration#customoperators","73":"/Gridify/guide/gridifyMapper#gridifymapper","74":"/Gridify/guide/gridifyMapper#generatemappings","75":"/Gridify/guide/gridifyMapper#removemap","76":"/Gridify/guide/gridifyMapper#addmap","77":"/Gridify/guide/gridifyMapper#value-convertor","78":"/Gridify/guide/gridifyMapper#hasmap","79":"/Gridify/guide/gridifyMapper#getcurrentmaps","80":"/Gridify/guide/gridifyMapper#gridifymapperconfiguration","81":"/Gridify/guide/gridifyMapper#casesensitive","82":"/Gridify/guide/gridifyMapper#ignorenotmappedfields","83":"/Gridify/guide/gridifyMapper#allownullsearch","84":"/Gridify/guide/gridifyMapper#filtering-on-nested-collections","85":"/Gridify/guide/gridifyMapper#use-indexes-on-sub-collections","86":"/Gridify/guide/gridifyMapper#getexpression","87":"/Gridify/guide/gridifyMapper#getlambdaexpression","88":"/Gridify/guide/gridifyQuery#gridifyquery","89":"/Gridify/guide/gridifyQuery#isvalid","90":"/Gridify/guide/gridifyQuery#getfilteringexpression","91":"/Gridify/guide/#introduction","92":"/Gridify/guide/#features","93":"/Gridify/guide/#examples","94":"/Gridify/guide/#performance","95":"/Gridify/guide/ordering#ordering","96":"/Gridify/guide/ordering#order-by-nullable-types","97":"/Gridify/guide/queryBuilder#querybuilder"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[5,1,59],"1":[3,5,99],"2":[4,5,34],"3":[7,5,36],"4":[4,5,17],"5":[4,5,44],"6":[2,5,39],"7":[1,1,50],"8":[2,1,80],"9":[3,1,73],"10":[1,3,46],"11":[2,1,47],"12":[4,2,30],"13":[4,2,56],"14":[4,2,36],"15":[5,2,61],"16":[1,1,43],"17":[1,1,74],"18":[1,1,46],"19":[1,1,35],"20":[1,1,23],"21":[1,1,23],"22":[1,1,24],"23":[1,1,23],"24":[1,1,33],"25":[1,1,14],"26":[3,1,25],"27":[1,1,1],"28":[2,2,7],"29":[3,2,8],"30":[1,1,1],"31":[1,2,34],"32":[1,3,28],"33":[2,3,33],"34":[3,1,1],"35":[4,4,48],"36":[3,4,66],"37":[3,4,96],"38":[2,1,1],"39":[3,2,12],"40":[1,2,1],"41":[2,3,7],"42":[3,3,8],"43":[2,2,55],"44":[1,2,1],"45":[1,3,22],"46":[2,3,8],"47":[2,3,8],"48":[3,1,37],"49":[1,3,18],"50":[1,3,75],"51":[2,3,50],"52":[2,3,66],"53":[1,1,7],"54":[2,1,66],"55":[2,1,1],"56":[2,3,32],"57":[4,3,35],"58":[1,1,60],"59":[2,1,59],"60":[2,1,106],"61":[2,1,72],"62":[1,2,19],"63":[1,2,18],"64":[3,2,14],"65":[1,1,15],"66":[2,1,1],"67":[1,3,16],"68":[1,3,30],"69":[1,3,39],"70":[1,3,32],"71":[1,3,41],"72":[1,1,27],"73":[1,1,108],"74":[1,1,77],"75":[1,1,33],"76":[1,1,36],"77":[2,2,45],"78":[1,1,14],"79":[1,1,8],"80":[1,1,16],"81":[1,2,31],"82":[1,2,42],"83":[1,2,32],"84":[4,1,60],"85":[5,1,53],"86":[1,1,25],"87":[1,1,22],"88":[1,1,31],"89":[1,1,60],"90":[1,1,39],"91":[1,1,37],"92":[1,1,57],"93":[1,1,22],"94":[1,1,143],"95":[1,1,65],"96":[4,1,49],"97":[1,1,130]},"averageFieldLength":[1.9183673469387759,1.9081632653061227,38.64285714285714],"storedFields":{"0":{"title":"Using Gridify in API Controllers","titles":[]},"1":{"title":"Describing the Scenario","titles":["Using Gridify in API Controllers"]},"2":{"title":"Solving Problems Using Gridify","titles":["Using Gridify in API Controllers"]},"3":{"title":"What is the Paging Return Value?","titles":["Using Gridify in API Controllers"]},"4":{"title":"What is GridifyQuery?","titles":["Using Gridify in API Controllers"]},"5":{"title":"Sample Request Query String","titles":["Using Gridify in API Controllers"]},"6":{"title":"More Information","titles":["Using Gridify in API Controllers"]},"7":{"title":"AutoMapper","titles":[]},"8":{"title":"GridifyTo!","titles":["AutoMapper"]},"9":{"title":"Compile and Reuse","titles":[]},"10":{"title":"Performance","titles":["Compile and Reuse"]},"11":{"title":"Dependency Injection","titles":[]},"12":{"title":"Register GridifyMapper with DI","titles":["Dependency Injection"]},"13":{"title":"1. Define Mapping Profiles","titles":["Dependency Injection"]},"14":{"title":"2. Register Mapping Profiles","titles":["Dependency Injection"]},"15":{"title":"3. Inject and Use Mappers","titles":["Dependency Injection"]},"16":{"title":"Extensions","titles":[]},"17":{"title":"ApplyFiltering","titles":["Extensions"]},"18":{"title":"ApplyOrdering","titles":["Extensions"]},"19":{"title":"ApplyPaging","titles":["Extensions"]},"20":{"title":"ApplyFilteringAndOrdering","titles":["Extensions"]},"21":{"title":"ApplyOrderingAndPaging","titles":["Extensions"]},"22":{"title":"ApplyFilteringOrderingPaging","titles":["Extensions"]},"23":{"title":"GridifyQueryable","titles":["Extensions"]},"24":{"title":"Gridify","titles":["Extensions"]},"25":{"title":"Elasticsearch","titles":[]},"26":{"title":"Gridify.Elasticsearch Package","titles":["Elasticsearch"]},"27":{"title":"Installation","titles":["Elasticsearch"]},"28":{"title":"Package Manager","titles":["Elasticsearch","Installation"]},"29":{"title":".NET CLI","titles":["Elasticsearch","Installation"]},"30":{"title":"Configurations","titles":["Elasticsearch"]},"31":{"title":"CustomElasticsearchNamingAction","titles":["Elasticsearch","Configurations"]},"32":{"title":"Default","titles":["Elasticsearch","Configurations","CustomElasticsearchNamingAction"]},"33":{"title":"Customized:","titles":["Elasticsearch","Configurations","CustomElasticsearchNamingAction"]},"34":{"title":"Examples of usage","titles":["Elasticsearch"]},"35":{"title":"Without pre-initialized mapper","titles":["Elasticsearch","Examples of usage"]},"36":{"title":"With custom mapping","titles":["Elasticsearch","Examples of usage"]},"37":{"title":"With CustomElasticsearchNamingAction initialized","titles":["Elasticsearch","Examples of usage"]},"38":{"title":"Entity Framework","titles":[]},"39":{"title":"Gridify.EntityFramework Package","titles":["Entity Framework"]},"40":{"title":"Installation","titles":["Entity Framework"]},"41":{"title":"Package Manager","titles":["Entity Framework","Installation"]},"42":{"title":".NET CLI","titles":["Entity Framework","Installation"]},"43":{"title":"Compatibility layer","titles":["Entity Framework"]},"44":{"title":"Configuration","titles":["Entity Framework"]},"45":{"title":"EntityFrameworkCompatibilityLayer","titles":["Entity Framework","Configuration"]},"46":{"title":"EnableEntityFrameworkCompatibilityLayer()","titles":["Entity Framework","Configuration"]},"47":{"title":"DisableEntityFrameworkCompatibilityLayer()","titles":["Entity Framework","Configuration"]},"48":{"title":"Gridify Client Library","titles":[]},"49":{"title":"Installation","titles":["Gridify Client Library"]},"50":{"title":"GridifyQueryBuilder","titles":["Gridify Client Library"]},"51":{"title":"Conditional Operators","titles":["Gridify Client Library"]},"52":{"title":"Usage Example","titles":["Gridify Client Library"]},"53":{"title":"Filtering","titles":[]},"54":{"title":"Conditional Operators","titles":["Filtering"]},"55":{"title":"Special Operators","titles":["Filtering"]},"56":{"title":"Logical Operators","titles":["Filtering","Special Operators"]},"57":{"title":"Case Insensitive Operator - /i","titles":["Filtering","Special Operators"]},"58":{"title":"Escaping","titles":["Filtering"]},"59":{"title":"Passing Indexes","titles":["Filtering"]},"60":{"title":"Custom Operators","titles":["Filtering"]},"61":{"title":"Getting Started","titles":[]},"62":{"title":"Installation","titles":["Getting Started"]},"63":{"title":"Namespace","titles":["Getting Started"]},"64":{"title":"How to use","titles":["Getting Started"]},"65":{"title":"GridifyGlobalConfiguration","titles":[]},"66":{"title":"General configurations","titles":["GridifyGlobalConfiguration"]},"67":{"title":"DefaultPageSize","titles":["GridifyGlobalConfiguration","General configurations"]},"68":{"title":"CaseSensitiveMapper","titles":["GridifyGlobalConfiguration","General configurations"]},"69":{"title":"AllowNullSearch","titles":["GridifyGlobalConfiguration","General configurations"]},"70":{"title":"IgnoreNotMappedFields","titles":["GridifyGlobalConfiguration","General configurations"]},"71":{"title":"DisableNullChecks","titles":["GridifyGlobalConfiguration","General configurations"]},"72":{"title":"CustomOperators","titles":["GridifyGlobalConfiguration"]},"73":{"title":"GridifyMapper","titles":[]},"74":{"title":"GenerateMappings","titles":["GridifyMapper"]},"75":{"title":"RemoveMap","titles":["GridifyMapper"]},"76":{"title":"AddMap","titles":["GridifyMapper"]},"77":{"title":"Value convertor","titles":["GridifyMapper","AddMap"]},"78":{"title":"HasMap","titles":["GridifyMapper"]},"79":{"title":"GetCurrentMaps","titles":["GridifyMapper"]},"80":{"title":"GridifyMapperConfiguration","titles":["GridifyMapper"]},"81":{"title":"CaseSensitive","titles":["GridifyMapper","GridifyMapperConfiguration"]},"82":{"title":"IgnoreNotMappedFields","titles":["GridifyMapper","GridifyMapperConfiguration"]},"83":{"title":"AllowNullSearch","titles":["GridifyMapper","GridifyMapperConfiguration"]},"84":{"title":"Filtering on Nested Collections","titles":["GridifyMapper"]},"85":{"title":"Use Indexes on Sub-Collections","titles":["GridifyMapper"]},"86":{"title":"GetExpression","titles":["GridifyMapper"]},"87":{"title":"GetLambdaExpression","titles":["GridifyMapper"]},"88":{"title":"GridifyQuery","titles":[]},"89":{"title":"IsValid","titles":["GridifyQuery"]},"90":{"title":"GetFilteringExpression","titles":["GridifyQuery"]},"91":{"title":"Introduction","titles":[]},"92":{"title":"Features","titles":["Introduction"]},"93":{"title":"Examples","titles":["Introduction"]},"94":{"title":"Performance","titles":["Introduction"]},"95":{"title":"Ordering","titles":[]},"96":{"title":"Order By Nullable types","titles":["Ordering"]},"97":{"title":"QueryBuilder","titles":[]}},"dirtCount":0,"index":[["71",{"2":{"94":1}}],["722",{"2":{"94":1}}],["7",{"2":{"94":2}}],["734",{"2":{"94":1}}],["736",{"2":{"10":1}}],["74",{"2":{"94":1}}],["76",{"2":{"94":1}}],["64",{"2":{"94":1}}],["649",{"2":{"94":1}}],["66",{"2":{"94":1}}],["61",{"2":{"94":1}}],["637",{"2":{"94":1}}],["62",{"2":{"94":1}}],["65",{"2":{"94":1}}],["6",{"2":{"60":1,"94":3}}],["689",{"2":{"10":1}}],[">",{"2":{"59":1,"85":1}}],["863",{"2":{"94":1}}],["82",{"2":{"94":1}}],["83",{"2":{"94":1}}],["8",{"2":{"59":1,"85":1,"94":7}}],["8th",{"2":{"59":1,"85":1}}],["854",{"2":{"10":1}}],["8594",{"2":{"10":2}}],["|",{"2":{"56":2,"58":7}}],["||",{"2":{"54":1}}],["^",{"2":{"54":4}}],["41",{"2":{"94":1}}],["4",{"2":{"94":3}}],["4000",{"2":{"43":1}}],["45",{"2":{"36":1,"94":1}}],["$1",{"2":{"58":2}}],["$",{"2":{"33":1,"37":1,"54":4}}],["$version",{"2":{"28":1,"29":1,"41":1,"42":1,"62":3}}],["kb",{"2":{"94":6}}],["keywords",{"2":{"95":2}}],["keyword",{"2":{"32":1,"33":1,"35":1,"36":2,"37":1,"69":1,"83":1}}],["know",{"2":{"1":1}}],["js",{"2":{"61":1,"62":1}}],["json",{"2":{"52":1}}],["jsonget",{"2":{"32":1,"33":1}}],["jo",{"2":{"56":1}}],["john",{"2":{"17":2,"35":1,"36":1,"37":1,"57":4,"60":1}}],["javascriptlet",{"2":{"58":1}}],["javascript",{"2":{"48":1,"58":1,"61":1,"92":1}}],["just",{"2":{"0":1,"2":1}}],["v0",{"2":{"94":1}}],["v2",{"2":{"59":1,"60":1,"74":1,"85":1}}],["v",{"2":{"58":2,"73":2,"77":2}}],["version",{"2":{"28":1,"29":1,"41":1,"42":1,"59":1,"62":3,"85":1}}],["ve",{"2":{"15":1}}],["void",{"2":{"14":1}}],["validates",{"2":{"97":1}}],["valid",{"2":{"89":3,"97":1}}],["value2",{"2":{"56":1}}],["values",{"2":{"5":1,"54":1,"57":1,"58":1,"77":2,"83":2}}],["value",{"0":{"3":1,"77":1},"2":{"23":1,"32":1,"33":1,"35":1,"36":4,"37":1,"43":2,"50":1,"54":10,"56":1,"57":1,"58":2,"60":6,"69":1,"73":1,"74":1,"76":1,"77":1}}],["valuable",{"2":{"0":1}}],["vahid",{"2":{"43":1}}],["various",{"2":{"94":1}}],["var",{"2":{"7":3,"8":2,"9":8,"15":2,"35":1,"36":2,"37":3,"58":1,"59":1,"80":1,"84":1,"85":1,"89":1,"90":1,"95":6,"97":1}}],["93",{"2":{"94":1}}],["90",{"2":{"94":1}}],["9",{"2":{"94":3}}],["92",{"2":{"94":2}}],["924",{"2":{"10":1}}],["9297",{"2":{"10":2}}],["984",{"2":{"10":1}}],["57",{"2":{"94":1}}],["59",{"2":{"94":1}}],["599",{"2":{"94":1}}],["53103",{"2":{"94":1}}],["53",{"2":{"94":1}}],["55",{"2":{"94":1}}],["50|name^a",{"2":{"52":1}}],["50",{"2":{"52":1}}],["5",{"2":{"10":2}}],["021",{"2":{"94":1}}],["06",{"2":{"94":1}}],["05",{"2":{"94":1}}],["01",{"2":{"10":1,"94":1}}],["019",{"2":{"10":1}}],["000",{"2":{"10":1}}],["00",{"2":{"10":2,"94":2}}],["001",{"2":{"10":1}}],["008",{"2":{"10":1}}],["0",{"2":{"10":6,"35":1,"36":1,"37":1,"43":2,"59":1,"60":1,"74":2,"85":1,"94":6}}],["ryujit",{"2":{"94":1}}],["rather",{"2":{"60":1}}],["ratiosd",{"2":{"10":1}}],["ratio",{"2":{"10":1,"94":2}}],["raw",{"2":{"17":1}}],["really",{"2":{"97":1}}],["readonly",{"2":{"15":2}}],["read",{"2":{"6":1}}],["reference",{"2":{"71":1}}],["re",{"2":{"61":1}}],["remarkable",{"2":{"91":1}}],["remove",{"2":{"97":1}}],["removes",{"2":{"75":1}}],["removemap",{"0":{"75":1},"2":{"73":1,"97":1}}],["removeemptyentries",{"2":{"60":1}}],["remember",{"2":{"5":1}}],["regexmatchoperator>",{"2":{"60":1}}],["regexmatchoperator",{"2":{"60":2}}],["regex",{"2":{"58":2,"60":2}}],["registration",{"2":{"60":1}}],["registrations",{"2":{"14":1}}],["registered",{"2":{"15":1}}],["register",{"0":{"12":1,"14":1},"2":{"11":1,"12":1,"14":1,"60":4,"72":2}}],["registering",{"2":{"11":1,"12":1}}],["retrieve",{"2":{"50":1}}],["returning",{"2":{"1":1}}],["return",{"0":{"3":1},"2":{"1":1,"2":1,"8":2,"15":2,"35":1,"36":1,"60":4,"70":1}}],["returns",{"2":{"1":1,"23":1,"24":1,"79":1,"86":1,"87":1,"89":1,"97":9}}],["reuse",{"0":{"9":1},"1":{"10":1}}],["response",{"2":{"35":2,"36":2,"37":1}}],["res",{"2":{"8":6}}],["result",{"2":{"7":2,"9":3,"15":4,"88":1,"90":1,"97":3}}],["recommend",{"2":{"8":1}}],["records",{"2":{"3":2,"69":1}}],["related",{"2":{"6":1,"68":1,"69":1,"70":1}}],["request",{"0":{"5":1}}],["required",{"2":{"2":1}}],["replace",{"2":{"58":2}}],["represents",{"2":{"4":1,"13":1,"50":1}}],["repository",{"2":{"1":1,"61":1}}],["336",{"2":{"94":1}}],["321",{"2":{"94":1}}],["32",{"2":{"94":1}}],["329",{"2":{"10":1}}],["38",{"2":{"94":1}}],["36",{"2":{"94":2}}],["30",{"2":{"36":1,"56":2}}],["37",{"2":{"10":1}}],["392",{"2":{"10":1}}],["39",{"2":{"10":1}}],["3",{"0":{"15":1},"2":{"9":1,"19":2,"59":1,"84":1,"85":1,"94":1}}],["23",{"2":{"94":1}}],["23660",{"2":{"94":1}}],["22h2",{"2":{"94":1}}],["22621",{"2":{"94":1}}],["2715",{"2":{"94":1}}],["26",{"2":{"94":1}}],["295",{"2":{"94":1}}],["216",{"2":{"94":1}}],["2022update",{"2":{"94":1}}],["20",{"2":{"19":3,"35":2,"36":2,"37":2,"67":1,"88":1,"94":1}}],["2",{"0":{"14":1},"2":{"9":1,"10":2,"52":2,"74":2,"94":5}}],["14",{"2":{"94":1}}],["12800h",{"2":{"94":1}}],["12th",{"2":{"94":1}}],["123",{"2":{"84":1}}],["12345this",{"2":{"33":1}}],["1234567891011121314151617jsonget",{"2":{"37":1}}],["1234567891011121314151617",{"2":{"35":1,"37":1}}],["12345678910111213141516171819jsonget",{"2":{"36":1}}],["1234567891011121314151617181920212223242526272829303132333435363738394041424344",{"2":{"36":1}}],["123456789101112131415161718192021",{"2":{"15":1}}],["123456789101112131415161718csharppublic",{"2":{"15":1}}],["123456789101112131415jsonget",{"2":{"35":1}}],["12345678910",{"2":{"32":1,"33":1}}],["123this",{"2":{"32":1}}],["190",{"2":{"94":1}}],["13",{"2":{"94":4}}],["119",{"2":{"94":1}}],["11",{"2":{"74":1,"94":2}}],["100",{"2":{"94":1}}],["10",{"2":{"52":2,"59":1,"85":1,"94":2}}],["1564",{"2":{"10":1}}],["1",{"0":{"13":1},"2":{"9":1,"10":4,"19":1,"35":1,"36":1,"37":1,"88":1,"94":8}}],["quot",{"2":{"54":24,"56":6,"69":4}}],["queries",{"2":{"25":1,"26":1,"43":1,"48":2,"50":2,"56":1,"58":1,"61":1,"86":1,"87":1,"91":1,"92":2}}],["queryable",{"2":{"97":3}}],["queryablepaging",{"2":{"7":1,"23":1}}],["querybuilder",{"0":{"97":1},"2":{"9":5,"15":3,"64":1,"95":1,"97":2}}],["query",{"0":{"5":1},"2":{"2":2,"4":1,"5":1,"7":3,"8":6,"15":4,"17":4,"18":3,"19":3,"32":2,"33":2,"35":1,"36":1,"37":1,"43":1,"50":1,"52":3,"54":1,"57":1,"58":1,"76":1,"84":1,"92":2,"95":1,"96":1,"97":5}}],["q",{"2":{"13":4,"81":2,"82":2,"83":2,"89":2}}],["qp",{"2":{"7":3}}],["=hn",{"2":{"56":1}}],["=value",{"2":{"54":3}}],["==",{"2":{"17":1,"54":1}}],["=>",{"2":{"13":2,"17":1,"18":2,"32":1,"33":2,"35":1,"36":5,"37":2,"54":1,"58":1,"59":1,"60":5,"73":4,"77":2,"81":1,"82":1,"83":1,"84":3,"85":1,"89":1,"96":1}}],["=",{"2":{"7":4,"8":4,"9":9,"13":3,"15":7,"17":3,"18":2,"19":2,"31":1,"32":1,"33":2,"35":6,"36":7,"37":10,"43":2,"52":1,"54":11,"56":2,"57":1,"58":4,"59":3,"60":1,"71":2,"73":1,"74":3,"77":1,"80":5,"81":2,"82":2,"83":2,"84":3,"85":3,"86":1,"87":1,"88":6,"89":17,"90":4,"95":10,"96":4,"97":2}}],["+",{"2":{"7":4}}],["x64",{"2":{"94":1}}],["x",{"2":{"18":4,"36":8,"54":2,"57":1,"59":2,"85":2,"95":3,"96":2}}],["x26",{"2":{"5":3}}],["x3c",{"2":{"1":1,"2":1,"3":1,"7":4,"8":13,"9":3,"13":1,"15":8,"32":1,"33":1,"35":1,"36":2,"37":3,"52":1,"59":1,"60":6,"72":1,"73":1,"74":3,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":2,"88":1,"89":4,"90":3,"95":1,"97":1}}],["utilizing",{"2":{"91":1}}],["utilize",{"2":{"14":1}}],["up",{"2":{"74":2}}],["understanding",{"2":{"73":1,"93":1}}],["u",{"2":{"43":6}}],["url",{"2":{"5":1}}],["usually",{"2":{"75":1}}],["usage",{"0":{"34":1,"52":1},"1":{"35":1,"36":1,"37":1},"2":{"52":1,"54":1,"56":1,"60":1}}],["us",{"2":{"10":3,"94":18}}],["useemptymapper",{"2":{"97":1}}],["useful",{"2":{"97":1}}],["uses",{"2":{"31":1}}],["usecustommapper",{"2":{"15":1,"97":1}}],["username",{"2":{"73":4,"77":3}}],["user",{"2":{"1":2,"17":1,"76":1,"92":1}}],["user>",{"2":{"1":1,"2":1,"32":1,"33":1,"35":1,"36":2,"37":1}}],["usercontroller",{"2":{"1":1}}],["users",{"2":{"1":5,"2":1,"32":2,"33":2,"35":2,"36":2,"37":2,"43":1}}],["use",{"0":{"15":1,"64":1,"85":1},"2":{"1":1,"5":1,"6":1,"7":1,"9":2,"10":1,"16":2,"17":2,"18":1,"19":1,"20":1,"21":1,"22":1,"43":1,"51":1,"57":2,"58":1,"59":1,"60":1,"61":1,"63":1,"75":1,"76":2,"77":2,"84":2,"86":1,"87":1,"89":1,"90":1,"91":1,"95":3,"96":3,"97":6}}],["used",{"2":{"0":1,"23":1,"24":1,"92":1}}],["using",{"0":{"0":1,"2":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"2":{"8":1,"9":5,"17":1,"26":1,"49":1,"50":1,"56":1,"59":2,"60":1,"61":1,"64":3,"65":1,"72":1,"73":1,"83":1,"84":1,"85":1,"90":1,"93":1}}],["minimal",{"2":{"94":1}}],["mycustomoperator>",{"2":{"72":1}}],["must",{"2":{"36":1,"60":1}}],["multiple",{"2":{"1":1,"9":1,"95":3}}],["most",{"2":{"94":1}}],["mobile",{"2":{"73":2}}],["models",{"2":{"12":1}}],["more",{"0":{"6":1},"2":{"4":1,"6":1,"11":1,"16":1,"17":1,"18":1,"59":1,"61":1,"72":1,"73":1,"85":1,"93":1}}],["manually",{"2":{"97":1}}],["manager",{"0":{"28":1,"41":1}}],["making",{"2":{"91":1}}],["make",{"2":{"14":1,"16":1,"32":1,"33":1,"43":1,"45":1,"73":1}}],["maxnestingdepth",{"2":{"74":1}}],["matching",{"2":{"60":1}}],["matches",{"2":{"57":1}}],["maps",{"2":{"73":1}}],["map",{"2":{"13":1,"73":1,"97":2}}],["mapped",{"2":{"73":1,"82":1,"89":1}}],["mapperconfig",{"2":{"80":2}}],["mappers",{"0":{"15":1},"2":{"92":1}}],["mapper",{"0":{"35":1},"2":{"8":4,"13":1,"15":11,"36":1,"37":1,"73":3,"74":3,"75":1,"76":1,"77":1,"78":1,"80":1,"81":2,"82":1,"83":1,"84":2,"86":1,"87":1,"89":6,"97":4}}],["mappings",{"2":{"13":2,"68":1,"73":1,"74":7,"75":1,"79":1,"81":1,"97":1}}],["mapping",{"0":{"13":1,"14":1,"36":1},"2":{"11":2,"12":2,"13":1,"14":1,"15":1,"70":1,"75":1,"76":1,"78":1,"92":1}}],["maintainable",{"2":{"11":1}}],["massive",{"2":{"9":1}}],["may",{"2":{"1":2,"60":1}}],["mentioning",{"2":{"94":1}}],["mean",{"2":{"10":1,"94":1}}],["methods",{"2":{"6":1,"9":1,"16":3,"26":1,"39":1,"50":2,"63":1,"64":1,"67":1,"73":1,"84":1,"97":2}}],["method",{"2":{"4":1,"8":2,"10":1,"14":1,"17":3,"18":1,"19":1,"20":2,"21":2,"22":2,"24":1,"50":1,"51":1,"72":1,"74":2,"75":2,"76":1,"77":1,"78":1,"79":1,"85":1,"86":1,"87":1,"89":1,"90":2,"94":1,"97":2}}],["messy",{"2":{"1":1}}],["host",{"2":{"94":1}}],["how",{"0":{"64":1},"2":{"11":1,"31":1,"73":1,"74":1}}],["however",{"2":{"1":1}}],["here",{"2":{"13":1,"92":1,"94":1}}],["helpful",{"2":{"58":1}}],["help",{"2":{"7":1}}],["httpget",{"2":{"15":2}}],["http",{"2":{"5":2}}],["handle",{"2":{"58":1}}],["handles",{"2":{"2":1}}],["hard",{"2":{"17":1}}],["having",{"2":{"9":1,"58":1}}],["have",{"2":{"1":1,"8":3,"17":1,"58":1,"75":1,"84":2,"93":1,"94":1}}],["hasvalue",{"2":{"96":3}}],["hasmap",{"0":{"78":1}}],["has",{"2":{"3":1,"23":1,"26":1,"39":1,"61":1,"78":1,"85":1}}],["given",{"2":{"70":1,"78":1}}],["global",{"2":{"60":1}}],["gm",{"2":{"59":1,"85":1}}],["greetings",{"2":{"91":1}}],["greater",{"2":{"51":2}}],["greaterthanorequal",{"2":{"51":1,"54":1}}],["greaterthan",{"2":{"51":1,"54":1}}],["group",{"2":{"50":1}}],["grouping",{"2":{"50":1}}],["grid",{"2":{"24":1}}],["gridifygridify",{"2":{"62":1}}],["gridifyglobalconfiguration",{"0":{"65":1},"1":{"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1},"2":{"60":3,"72":1}}],["gridifyasync",{"2":{"39":1}}],["gridifyextension",{"2":{"15":1}}],["gridifycompiled",{"2":{"10":1}}],["gridifytoasync",{"2":{"8":1}}],["gridifyto",{"0":{"8":1},"2":{"8":3}}],["gridifymapperconfiguration",{"0":{"80":1},"1":{"81":1,"82":1,"83":1},"2":{"80":1}}],["gridifymapper",{"0":{"12":1,"73":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1},"2":{"6":2,"11":1,"13":2,"16":1,"36":1,"37":1,"59":1,"68":1,"69":1,"70":1,"73":1,"74":4,"77":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":2,"89":1,"97":2}}],["gridifyquerybuilder",{"0":{"50":1},"2":{"50":2,"52":2}}],["gridifyqueryableasync",{"2":{"8":1,"39":1}}],["gridifyqueryable",{"0":{"23":1},"2":{"7":1,"8":1}}],["gridifyquery",{"0":{"4":1,"88":1},"1":{"89":1,"90":1},"2":{"2":1,"4":2,"5":1,"7":2,"8":4,"9":3,"15":2,"16":1,"35":1,"36":1,"37":1,"59":1,"85":1,"88":2,"89":6,"90":2,"95":3,"97":1}}],["gridify",{"0":{"0":1,"2":1,"24":1,"26":1,"39":1,"48":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"49":1,"50":1,"51":1,"52":1},"2":{"0":2,"1":1,"2":3,"4":1,"6":1,"7":2,"8":2,"9":2,"10":1,"11":1,"12":1,"14":1,"15":1,"16":3,"25":2,"26":2,"28":1,"29":1,"37":3,"39":1,"41":1,"42":1,"43":1,"48":2,"49":2,"50":1,"52":2,"53":1,"54":1,"58":1,"59":1,"60":1,"61":12,"62":4,"63":2,"64":1,"65":1,"70":1,"71":1,"73":1,"75":1,"82":1,"83":1,"88":1,"91":1,"92":2,"93":2,"94":4,"95":1,"96":1}}],["gp",{"2":{"35":2}}],["g",{"2":{"31":1,"58":1,"71":1,"96":1}}],["gt",{"2":{"13":1,"15":1,"23":1,"24":1,"31":1,"54":4,"56":1,"71":1,"96":2}}],["gq",{"2":{"9":2,"35":2,"36":2,"37":2,"59":1,"85":1,"88":2,"89":8,"90":2,"95":3}}],["gen",{"2":{"10":2,"94":1}}],["general",{"0":{"66":1},"1":{"67":1,"68":1,"69":1,"70":1,"71":1}}],["generates",{"2":{"74":3}}],["generatemappings",{"0":{"74":1},"2":{"73":1,"74":2}}],["generate",{"2":{"25":1,"73":1,"74":3}}],["generated",{"2":{"9":1,"17":1,"45":1,"73":1,"74":1,"75":1,"89":1,"97":1}}],["generic",{"2":{"3":1}}],["getlambdaexpression",{"0":{"87":1},"2":{"87":1}}],["getexpression",{"0":{"86":1},"2":{"86":1}}],["getcurrentmaps",{"0":{"79":1}}],["getting",{"0":{"61":1},"1":{"62":1,"63":1,"64":1}}],["getoperator",{"2":{"60":3}}],["getweatherforecasts",{"2":{"15":2}}],["getweatherforecast",{"2":{"15":2}}],["getfilteringexpression",{"0":{"90":1},"2":{"9":2,"90":1}}],["get",{"2":{"3":2,"9":1,"12":1,"15":2,"73":8}}],["getusers",{"2":{"1":1,"2":1,"5":2}}],["david",{"2":{"60":1}}],["data",{"2":{"3":3,"11":1,"17":1,"59":1,"84":1,"85":1,"90":1,"91":1}}],["dynamiclinq",{"2":{"94":1}}],["dynamic",{"2":{"48":1,"50":2,"52":1,"61":1,"91":1,"94":1}}],["dynamically",{"2":{"17":1}}],["dsl",{"2":{"25":1,"26":1,"92":1}}],["dbset",{"2":{"17":1,"18":1,"19":1,"20":1,"21":1,"22":1}}],["directly",{"2":{"97":1}}],["didn",{"2":{"97":1}}],["disablenullchecks",{"0":{"71":1}}],["disable",{"2":{"69":1,"71":1}}],["disableentityframeworkcompatibilitylayer",{"0":{"47":1}}],["display",{"2":{"1":1}}],["di",{"0":{"12":1},"2":{"11":3,"12":2}}],["documents",{"2":{"35":1,"36":1}}],["document",{"2":{"31":2,"37":1}}],["documentation",{"2":{"6":1,"16":1}}],["don",{"2":{"8":1,"54":1,"71":1,"73":1,"75":1,"82":1,"83":1,"84":1,"95":1,"97":1}}],["done",{"2":{"8":1}}],["doesn",{"2":{"70":1}}],["does",{"2":{"8":1,"37":1,"51":3}}],["dto",{"2":{"3":1}}],["delimited",{"2":{"95":1}}],["delegate",{"2":{"9":1,"97":4}}],["details",{"2":{"94":1}}],["deep",{"2":{"74":2}}],["depth",{"2":{"74":4}}],["dependency",{"0":{"11":1},"1":{"12":1,"13":1,"14":1,"15":1},"2":{"8":1,"11":1}}],["developing",{"2":{"61":1}}],["demonstrating",{"2":{"52":1}}],["demonstrate",{"2":{"0":1}}],["designed",{"2":{"48":1,"61":1,"91":1}}],["descending",{"2":{"50":3,"95":3}}],["description",{"2":{"50":1,"51":1,"97":1}}],["describes",{"2":{"50":1}}],["describing",{"0":{"1":1}}],["desc",{"2":{"18":1,"52":1,"95":10}}],["defined",{"2":{"70":1}}],["define",{"0":{"13":1},"2":{"12":1,"13":1,"60":2}}],["defaultpagesize",{"0":{"67":1}}],["default",{"0":{"32":1},"2":{"5":1,"31":2,"37":2,"45":1,"50":1,"54":1,"60":1,"65":1,"67":2,"68":2,"69":1,"70":1,"71":2,"73":1,"74":1,"81":2,"82":1,"83":1,"95":4,"97":1}}],["evaluate",{"2":{"97":4}}],["evaluator",{"2":{"97":2}}],["even",{"2":{"94":1}}],["error",{"2":{"94":1}}],["ease",{"2":{"91":1}}],["easily",{"2":{"56":1}}],["each",{"2":{"7":1,"13":1}}],["empty",{"2":{"54":1,"97":1}}],["emailaddress",{"2":{"31":4,"32":2,"33":2}}],["equality",{"2":{"51":1}}],["equal",{"2":{"51":3,"52":1,"54":1,"68":1,"95":3}}],["equivalent",{"2":{"17":1,"18":1,"19":1,"54":1}}],["esc",{"2":{"58":3}}],["escape",{"2":{"58":2}}],["escapevalue",{"2":{"50":2}}],["escaping",{"0":{"58":1}}],["especially",{"2":{"0":1}}],["effortless",{"2":{"91":1}}],["efficient",{"2":{"1":1}}],["ef",{"2":{"43":2,"60":2}}],["e",{"2":{"31":1,"71":1,"96":1}}],["elastic",{"2":{"26":1,"31":1}}],["elasticsearchgridify",{"2":{"62":1}}],["elasticsearch",{"0":{"25":1,"26":1},"1":{"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1},"2":{"25":2,"26":3,"28":1,"29":1,"31":3,"32":1,"33":1,"37":3,"61":3,"62":1,"92":1}}],["else",{"2":{"1":1}}],["eg",{"2":{"9":3}}],["existing",{"2":{"97":2}}],["expensive",{"2":{"94":1}}],["expression",{"2":{"9":5,"10":1,"43":1,"60":3,"76":2,"86":1,"87":1,"90":4,"95":1,"97":1}}],["expressions",{"2":{"9":1,"45":1,"97":2}}],["exceptional",{"2":{"91":1}}],["exception",{"2":{"82":2}}],["exceptions",{"2":{"70":1,"71":1}}],["extra",{"2":{"23":1}}],["extensionsgridifyqueryquerybuilder",{"2":{"95":1}}],["extensions",{"0":{"16":1},"1":{"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1},"2":{"37":1}}],["extensionsquerybuilder",{"2":{"15":1}}],["extension",{"2":{"6":1,"8":2,"14":1,"16":3,"25":1,"26":1,"63":1,"64":1,"89":1,"90":1,"97":1}}],["examples",{"0":{"34":1,"93":1},"1":{"35":1,"36":1,"37":1},"2":{"93":2}}],["exampledomain",{"2":{"5":2}}],["example",{"0":{"52":1},"2":{"0":1,"7":2,"10":1,"13":1,"14":1,"15":1,"17":1,"52":2,"54":1,"56":1,"57":1,"58":2,"59":1,"60":5,"68":1,"69":1,"73":2,"77":1,"82":1,"84":1,"85":1,"95":3,"96":1}}],["environment",{"2":{"61":1}}],["enumerable",{"2":{"97":4}}],["enum",{"2":{"51":1}}],["enabling",{"2":{"43":1}}],["enableentityframeworkcompatibilitylayer",{"0":{"46":1},"2":{"43":1}}],["enable",{"2":{"43":1}}],["enables",{"2":{"11":1,"45":1,"69":1,"92":1}}],["encode",{"2":{"5":1}}],["encoded",{"2":{"5":1}}],["enough",{"2":{"1":1,"60":1}}],["entities",{"2":{"73":2}}],["entityframeworkgridify",{"2":{"62":1}}],["entityframeworkcompatibilitylayer",{"0":{"45":1},"2":{"46":1,"47":1}}],["entityframework",{"0":{"39":1},"2":{"8":1,"39":1,"41":1,"42":1,"45":1,"60":1,"61":2,"62":1}}],["entity",{"0":{"38":1},"1":{"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1},"2":{"1":1,"9":1,"43":2,"45":1,"61":2,"74":1,"92":1}}],["entire",{"2":{"1":1}}],["ends",{"2":{"51":1}}],["endswith",{"2":{"51":1,"54":1}}],["endgroup",{"2":{"50":1,"52":1}}],["end",{"2":{"1":2,"17":1,"50":1,"51":1}}],["l3",{"2":{"84":2}}],["l2",{"2":{"84":2}}],["l1",{"2":{"84":2}}],["later",{"2":{"97":1}}],["lambda",{"2":{"90":1}}],["layer",{"0":{"43":1},"2":{"43":2,"45":1}}],["lastname",{"2":{"36":2,"56":1,"73":1,"95":3}}],["lt",{"2":{"13":1,"15":1,"23":1,"24":1,"54":4,"56":1}}],["ll",{"2":{"12":1}}],["level1list",{"2":{"84":1}}],["level1>",{"2":{"84":1}}],["level3list",{"2":{"84":1}}],["level2list",{"2":{"84":1}}],["levels",{"2":{"74":1}}],["level",{"2":{"74":4,"84":2}}],["leveraging",{"2":{"48":1}}],["less",{"2":{"51":2}}],["lessthanorequal",{"2":{"51":1,"54":1}}],["lessthan",{"2":{"51":1,"52":1,"54":1}}],["learn",{"2":{"4":1,"6":1,"72":1}}],["let",{"2":{"0":1}}],["lowercase",{"2":{"73":1,"77":1}}],["log",{"2":{"52":1}}],["logical",{"0":{"56":1},"2":{"50":4,"56":1,"94":1}}],["lot",{"2":{"1":1}}],["look",{"2":{"0":1}}],["libraries",{"2":{"94":1}}],["library",{"0":{"48":1},"1":{"49":1,"50":1,"51":1,"52":1},"2":{"0":1,"8":1,"16":1,"48":3,"49":1,"50":1,"52":1,"61":1,"65":1,"91":1}}],["limits",{"2":{"74":1}}],["limited",{"2":{"0":1}}],["lightweight",{"2":{"48":1,"61":1}}],["linq",{"2":{"17":2,"18":1,"19":1,"54":1,"84":1,"86":1,"87":1,"90":1,"91":2,"92":2,"94":3}}],["lines",{"2":{"2":1}}],["like",{"2":{"9":1,"23":1,"37":1,"51":2,"54":1,"60":1,"71":1,"92":1,"94":1}}],["list",{"2":{"1":6,"79":1,"95":1}}],["physical",{"2":{"94":1}}],["phonenumber",{"2":{"73":2}}],["popular",{"2":{"94":1}}],["positive",{"2":{"74":1}}],["policy",{"2":{"37":1}}],["powerful",{"2":{"11":1,"48":1}}],["p",{"2":{"17":2,"31":2,"33":2,"37":2,"54":3,"73":6,"77":2,"96":6}}],["prepared",{"2":{"93":1}}],["prevent",{"2":{"71":1}}],["pre",{"0":{"35":1}}],["private",{"2":{"15":2}}],["provide",{"2":{"93":1}}],["provides",{"2":{"11":1,"25":1,"43":1}}],["prop1",{"2":{"84":2}}],["prop",{"2":{"59":2,"60":6,"85":2}}],["properties",{"2":{"1":1,"3":1,"73":2,"74":7,"75":1}}],["property1",{"2":{"84":2}}],["property",{"2":{"1":2,"3":2,"31":4,"37":1,"45":1,"46":1,"47":1,"68":1,"72":1,"73":2,"76":1,"89":1,"90":1,"95":1,"96":1}}],["program",{"2":{"14":1}}],["profile",{"2":{"13":1}}],["profiles",{"0":{"13":1,"14":1},"2":{"11":1,"12":1,"13":1,"14":1,"15":1}}],["process",{"2":{"12":1,"91":1}}],["problems",{"0":{"2":1}}],["projectto",{"2":{"7":4,"8":2}}],["projection",{"2":{"7":1,"8":1}}],["projects",{"2":{"0":1}}],["project",{"2":{"0":1,"8":2,"49":1,"61":1}}],["performance",{"0":{"10":1,"94":1},"2":{"9":1,"10":1,"91":1,"94":1}}],["person",{"2":{"73":2,"86":2,"87":1,"89":1}}],["personsrepo",{"2":{"17":2,"18":2,"19":2,"54":2,"57":1,"88":1,"90":1,"95":3,"96":4}}],["persons",{"2":{"9":3,"97":1}}],["person>",{"2":{"7":2,"9":3,"73":1,"74":3,"80":1,"81":1,"82":1,"83":1,"88":1,"89":4,"90":1,"95":1,"97":1}}],["persondto>",{"2":{"7":2}}],["personrepo",{"2":{"7":2}}],["please",{"2":{"5":1}}],["particularly",{"2":{"92":1}}],["parenthesis",{"2":{"56":1}}],["parameterized",{"2":{"43":1}}],["parameter",{"2":{"6":1,"16":1,"50":1,"51":1,"74":2,"76":3,"77":1,"85":1}}],["parameters",{"2":{"4":1,"50":1}}],["package",{"0":{"26":1,"28":1,"39":1,"41":1},"2":{"8":1,"24":1,"26":1,"28":1,"29":1,"37":1,"39":1,"41":1,"42":1,"61":3,"62":3,"63":2}}],["packages",{"2":{"7":1,"61":1}}],["password",{"2":{"73":3,"82":1}}],["pass",{"2":{"15":1,"51":1,"59":1,"89":1}}],["passing",{"0":{"59":1},"2":{"5":1,"59":1,"74":2,"85":1}}],["passed",{"2":{"4":1,"17":1}}],["paging",{"0":{"3":1},"2":{"2":1,"3":1,"7":3,"8":5,"15":1,"19":1,"21":1,"22":1,"24":2,"67":1,"88":3,"97":9}}],["pagination",{"2":{"0":1,"1":1,"5":1,"23":1,"50":2,"52":1,"91":1,"92":1,"94":1}}],["pagesize",{"2":{"35":1,"36":1,"37":1,"50":1,"52":1,"88":1,"97":1}}],["pagesize=20",{"2":{"5":1}}],["pagesize=100",{"2":{"5":1}}],["page=1",{"2":{"5":2}}],["page",{"2":{"1":1,"3":1,"35":1,"36":1,"37":1,"50":3,"52":1,"67":2,"88":1,"97":1}}],["public",{"2":{"1":1,"3":1,"8":1,"13":1,"14":1,"15":4,"60":6,"73":9,"74":3}}],["birthdate",{"2":{"96":5}}],["brackets",{"2":{"59":1}}],["backslash",{"2":{"58":1}}],["base",{"2":{"73":1,"97":2}}],["based",{"2":{"0":2,"50":1,"91":1}}],["basic",{"2":{"52":1}}],["bool>>",{"2":{"90":1}}],["boolean",{"2":{"50":1}}],["bool",{"2":{"36":1,"45":1,"68":1,"69":1,"70":1,"71":1,"81":1,"82":1,"83":1,"89":4,"97":1}}],["boost",{"2":{"9":1}}],["b",{"2":{"10":3}}],["bunch",{"2":{"26":1}}],["buildwithqueryablepaging",{"2":{"97":1}}],["buildwithpagingcompiled",{"2":{"97":1}}],["buildwithpaging",{"2":{"97":1}}],["buildevaluator",{"2":{"97":1}}],["builder",{"2":{"43":1,"95":4,"97":2}}],["build",{"2":{"15":1,"50":2,"52":1,"97":4}}],["buildfilteringexpression",{"2":{"9":1,"97":1}}],["buildcompiledevaluator",{"2":{"97":1}}],["buildcompiled",{"2":{"9":3,"97":1}}],["built",{"2":{"8":1,"95":1}}],["but",{"2":{"8":1,"17":1,"23":1,"37":1,"61":1,"73":1,"81":1,"84":1}}],["by",{"0":{"96":1},"2":{"1":2,"9":1,"11":2,"13":1,"17":1,"31":1,"37":2,"68":2,"71":2,"74":1,"75":1,"81":1,"82":1,"83":1,"95":2,"96":1}}],["benchmarkdotnet",{"2":{"94":1}}],["benchmark",{"2":{"94":2}}],["become",{"2":{"73":1}}],["because",{"2":{"8":1}}],["better",{"2":{"73":1,"93":1}}],["behavior",{"2":{"31":1,"65":1,"68":1,"71":1,"81":1,"96":1}}],["behind",{"2":{"2":1}}],["below",{"2":{"16":1,"17":1,"18":1,"19":1,"52":1}}],["bellow",{"2":{"8":1,"54":1,"59":1,"85":1}}],["before",{"2":{"5":1,"58":1,"77":2}}],["be",{"2":{"0":1,"1":2,"6":1,"17":1,"23":1,"24":1,"31":2,"37":1,"48":1,"57":1,"58":1,"60":1,"61":1,"74":1,"75":1,"92":1,"95":1,"97":3}}],["cpu",{"2":{"94":1}}],["creation",{"2":{"48":1}}],["createdate",{"2":{"43":1}}],["creates",{"2":{"43":1,"90":1}}],["create",{"2":{"13":1,"56":1,"60":1,"61":1,"73":1}}],["change",{"2":{"65":1,"68":1,"77":1,"81":1}}],["character",{"2":{"60":1}}],["characters",{"2":{"58":1,"96":2}}],["challenges",{"2":{"1":1}}],["checks",{"2":{"78":1,"89":1}}],["checking",{"2":{"71":1}}],["checkout",{"2":{"59":1,"85":1}}],["check",{"2":{"16":1,"17":1,"18":1,"89":1,"97":1}}],["call",{"2":{"74":1}}],["case",{"0":{"57":1},"2":{"31":1,"37":1,"57":1,"58":1,"60":1,"68":1,"81":2}}],["casesensitivemapper",{"0":{"68":1}}],["casesensitive",{"0":{"81":1},"2":{"13":1,"50":2,"68":1,"80":1,"81":1}}],["camel",{"2":{"31":1,"37":1}}],["can",{"2":{"0":1,"1":2,"2":1,"5":1,"6":1,"7":2,"9":2,"11":1,"13":1,"15":2,"16":1,"17":3,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"37":1,"48":1,"51":2,"56":1,"57":1,"59":1,"60":1,"63":1,"65":1,"68":1,"69":1,"71":1,"72":1,"73":1,"74":2,"76":1,"77":2,"81":1,"84":1,"86":1,"87":1,"89":1,"90":1,"92":1,"95":1,"96":3,"97":3}}],["customoperators",{"0":{"72":1},"2":{"60":4,"72":1}}],["custom",{"0":{"36":1,"60":1},"2":{"37":1,"60":2,"72":3,"73":1,"89":2,"92":1}}],["customelasticsearchnamingaction",{"0":{"31":1,"37":1},"1":{"32":1,"33":1},"2":{"33":1,"37":1}}],["customized",{"0":{"33":1},"2":{"37":1}}],["customize",{"2":{"13":1}}],["current",{"2":{"3":1,"50":1,"79":1}}],["clr",{"2":{"31":3}}],["cli",{"0":{"29":1,"42":1}}],["clients",{"2":{"26":1,"31":1}}],["client",{"0":{"48":1},"1":{"49":1,"50":1,"51":1,"52":1},"2":{"1":1,"17":1,"26":1,"32":1,"33":1,"35":1,"36":1,"37":1,"48":2,"49":2,"50":1,"52":2,"61":4,"62":2,"92":1}}],["cleaner",{"2":{"11":1}}],["classes",{"2":{"13":1,"16":1,"63":1,"74":3}}],["class",{"2":{"3":1,"4":1,"6":1,"9":1,"13":1,"15":2,"60":1,"65":1,"73":2,"88":1,"97":1}}],["csharppersonsrepo",{"2":{"96":1}}],["csharppublic",{"2":{"2":1,"3":1,"8":1,"13":1,"15":1}}],["csharplambdaexpression",{"2":{"87":1}}],["csharpexpression",{"2":{"86":1}}],["csharpmapper",{"2":{"77":1}}],["csharpclass",{"2":{"60":3}}],["csharpfunc",{"2":{"37":1}}],["csharpgridifyglobalconfiguration",{"2":{"33":1,"43":1}}],["csharpawait",{"2":{"32":1}}],["csharpvar",{"2":{"17":2,"18":2,"19":2,"35":1,"36":1,"54":2,"57":1,"58":1,"59":1,"73":1,"74":3,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"88":1,"89":4,"90":1,"95":1,"96":2,"97":1}}],["csharpusing",{"2":{"14":1,"63":1}}],["csharp",{"2":{"1":1,"7":2,"8":1,"9":3,"58":1,"60":1,"72":1,"73":1,"94":1,"95":2}}],["could",{"2":{"58":1}}],["count",{"2":{"3":2,"7":1,"8":2,"23":1}}],["corresponding",{"2":{"15":1}}],["cores",{"2":{"94":1}}],["core",{"2":{"0":1,"94":1}}],["comma",{"2":{"95":1}}],["coming",{"2":{"93":1}}],["compares",{"2":{"94":1}}],["compatibility",{"0":{"43":1},"2":{"43":2,"45":1}}],["compatible",{"2":{"7":1,"43":1,"45":1,"61":1,"92":3}}],["compilation",{"2":{"92":1}}],["compiles",{"2":{"97":2}}],["compiledexpression",{"2":{"9":4}}],["compiled",{"2":{"9":4,"10":1,"97":2}}],["compile",{"0":{"9":1},"1":{"10":1},"2":{"9":2}}],["component",{"2":{"24":1}}],["completely",{"2":{"7":1,"17":1,"18":1,"19":1,"24":1}}],["complexity",{"2":{"2":1}}],["complex",{"2":{"1":1,"56":1,"58":1}}],["com",{"2":{"5":2,"32":2,"33":2}}],["comes",{"2":{"1":1}}],["codedsl",{"2":{"35":1,"36":1,"37":1}}],["code",{"2":{"1":1,"2":1,"11":1,"17":1}}],["collections",{"0":{"84":1,"85":1},"2":{"59":2,"71":1,"84":2,"92":1,"97":1}}],["collection",{"2":{"0":1,"18":1,"19":1,"20":1,"21":1,"22":1,"92":2,"97":3}}],["conversion",{"2":{"92":1}}],["converting",{"2":{"91":1}}],["convertor",{"0":{"77":1},"2":{"76":1}}],["converts",{"2":{"37":1}}],["convert",{"2":{"26":1,"76":1,"77":2}}],["condition",{"2":{"71":1,"97":1}}],["conditionaloperator",{"2":{"51":1,"52":1}}],["conditional",{"0":{"51":1,"54":1},"2":{"58":1}}],["conditions",{"2":{"0":1,"50":2,"97":1}}],["considering",{"2":{"74":1}}],["consider",{"2":{"73":1}}],["considered",{"2":{"68":1}}],["const",{"2":{"52":1}}],["constructor",{"2":{"74":1}}],["constructs",{"2":{"52":1}}],["constructed",{"2":{"50":1}}],["constructing",{"2":{"50":2}}],["construction",{"2":{"48":1}}],["console",{"2":{"17":1,"52":1}}],["configuring",{"2":{"88":1,"97":1}}],["configuredefaultmapper",{"2":{"97":1}}],["configurepaging",{"2":{"97":1}}],["configureservices",{"2":{"14":1}}],["configure",{"2":{"13":1,"97":2}}],["configuration",{"0":{"44":1},"1":{"45":1,"46":1,"47":1},"2":{"13":4,"37":1,"60":1,"65":1}}],["configurations",{"0":{"30":1,"66":1},"1":{"31":1,"32":1,"33":1,"67":1,"68":1,"69":1,"70":1,"71":1},"2":{"11":2}}],["configurationprovider",{"2":{"8":2}}],["concerns",{"2":{"11":1}}],["concepts",{"2":{"0":1}}],["contact",{"2":{"73":6}}],["contain",{"2":{"51":1}}],["container",{"2":{"11":1,"12":1}}],["contains",{"2":{"3":1,"51":2,"54":1,"60":1}}],["controllerbase",{"2":{"15":2}}],["controllers",{"0":{"0":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"2":{"15":1,"93":1}}],["control",{"2":{"6":1,"73":1,"74":2}}],["context",{"2":{"1":2,"2":1,"97":5}}],["ts",{"2":{"61":1,"62":1}}],["tsimport",{"2":{"52":1}}],["tsource>",{"2":{"8":4}}],["tsource",{"2":{"8":2}}],["tweaks",{"2":{"43":1}}],["two",{"2":{"3":1,"7":1,"39":1,"64":1,"84":1}}],["text",{"2":{"91":1}}],["terms",{"2":{"94":1}}],["term",{"2":{"32":1,"33":1,"35":1,"36":4,"37":1}}],["test2",{"2":{"58":2}}],["testclass>",{"2":{"37":1}}],["test",{"2":{"32":4,"33":4,"58":2}}],["temperaturec",{"2":{"13":1}}],["temp",{"2":{"13":1}}],["targettype>",{"2":{"59":1,"85":1}}],["table",{"2":{"50":1}}],["take",{"2":{"19":1}}],["task",{"2":{"8":1}}],["true",{"2":{"13":2,"37":1,"45":1,"46":1,"50":1,"52":2,"68":1,"69":1,"70":1,"71":1,"74":2,"80":1,"81":1,"82":2,"83":1,"89":2}}],["transfer",{"2":{"3":1}}],["times",{"2":{"9":1}}],["tip",{"2":{"6":1,"16":1,"54":1,"60":1,"61":2,"74":1}}],["tdestination>>",{"2":{"8":1}}],["tdestination>",{"2":{"8":7}}],["t",{"2":{"8":1,"13":2,"15":1,"23":1,"24":1,"54":1,"70":1,"71":1,"73":1,"75":1,"82":1,"83":1,"84":1,"90":1,"95":1,"97":2}}],["t>",{"2":{"3":1}}],["third",{"2":{"76":1,"77":1,"84":1}}],["this",{"2":{"1":2,"5":1,"8":2,"10":1,"11":1,"17":2,"18":2,"19":2,"20":2,"21":2,"22":2,"24":2,"45":1,"48":1,"52":1,"54":1,"57":2,"58":1,"60":1,"61":1,"65":1,"68":2,"69":2,"71":3,"72":1,"73":2,"74":4,"75":2,"76":1,"77":1,"78":1,"79":1,"81":1,"82":1,"83":1,"84":1,"86":1,"87":1,"89":2,"90":1,"94":1,"96":1}}],["throw",{"2":{"82":2}}],["through",{"2":{"17":1,"60":1}}],["three",{"2":{"61":1}}],["than",{"2":{"51":4,"60":1}}],["that",{"2":{"1":1,"3":1,"4":1,"5":1,"11":1,"23":2,"25":1,"26":1,"37":1,"48":1,"60":1,"73":1,"75":1,"76":1,"77":1,"85":1,"86":1,"87":1,"89":1,"90":1,"92":1,"94":1,"97":4}}],["thenbydescending",{"2":{"18":1}}],["then",{"2":{"12":1,"60":1}}],["them",{"2":{"5":1,"12":1,"58":1}}],["these",{"2":{"1":1,"7":1,"12":1,"13":1,"16":1,"51":1,"58":1,"95":1,"96":1}}],["there",{"2":{"1":1,"61":1,"64":1}}],["the",{"0":{"1":1,"3":1},"2":{"0":3,"1":6,"2":3,"3":6,"4":2,"5":2,"6":3,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":2,"14":3,"15":4,"16":3,"17":8,"18":2,"19":1,"26":1,"31":1,"32":1,"33":1,"37":1,"39":1,"43":4,"45":2,"46":1,"47":1,"48":5,"49":1,"50":13,"51":2,"52":2,"53":1,"54":2,"57":2,"59":4,"60":5,"61":6,"63":3,"64":1,"65":2,"67":2,"69":4,"70":1,"71":1,"72":1,"73":8,"74":7,"75":2,"76":7,"77":7,"78":2,"82":1,"83":1,"84":2,"85":1,"86":1,"87":1,"89":3,"90":3,"91":1,"94":2,"95":1,"96":3,"97":4}}],["types",{"0":{"96":1},"2":{"96":2}}],["typescript",{"2":{"48":1,"52":1,"61":1,"92":1}}],["typeof",{"2":{"14":1}}],["type",{"2":{"0":1,"13":1,"45":1,"67":1,"68":1,"69":1,"70":1,"71":1,"81":1,"82":1,"83":1}}],["top",{"2":{"74":4}}],["tolower",{"2":{"73":1,"77":1}}],["tolistasync",{"2":{"8":1}}],["tolist",{"2":{"1":1,"7":2,"8":1}}],["tostring",{"2":{"60":5}}],["totalsum",{"2":{"36":2}}],["totalorderprice",{"2":{"36":1}}],["totalorderprice=45",{"2":{"36":1}}],["total",{"2":{"1":1,"3":1}}],["tool",{"2":{"0":1}}],["to",{"0":{"64":1},"2":{"0":3,"1":8,"4":1,"5":2,"6":3,"8":3,"11":2,"12":1,"13":1,"14":2,"15":1,"16":3,"17":4,"18":2,"19":2,"20":1,"21":1,"22":1,"24":1,"25":1,"26":2,"37":2,"43":2,"45":2,"46":1,"47":1,"48":1,"49":1,"51":2,"54":1,"58":2,"59":2,"60":4,"61":4,"63":1,"64":1,"68":2,"69":2,"70":1,"71":2,"72":1,"73":7,"74":8,"75":2,"76":4,"77":4,"82":1,"83":1,"84":3,"85":1,"89":2,"90":1,"91":2,"92":2,"93":1,"95":3,"96":3,"97":13}}],["fast",{"2":{"92":1}}],["familiar",{"2":{"73":1}}],["facilitates",{"2":{"48":1}}],["false",{"2":{"13":1,"45":1,"47":1,"68":1,"70":1,"71":1,"80":2,"81":1,"82":1,"83":2,"89":4}}],["fkguid",{"2":{"43":1}}],["function",{"2":{"77":1}}],["functions",{"2":{"60":2}}],["functionality",{"2":{"0":1,"61":1,"93":1}}],["func",{"2":{"9":2,"86":1,"90":1}}],["fop",{"2":{"94":1}}],["followed",{"2":{"95":1}}],["follow",{"2":{"12":1}}],["following",{"2":{"0":1,"43":1,"50":1,"53":1,"73":2,"94":1}}],["for",{"2":{"6":1,"7":2,"12":1,"13":1,"16":1,"17":3,"18":1,"23":1,"37":1,"50":4,"52":1,"54":1,"57":1,"59":1,"60":2,"61":2,"67":1,"68":1,"69":4,"70":1,"74":6,"78":1,"82":2,"83":1,"85":1,"88":1,"89":1,"96":2,"97":4}}],["friendly",{"2":{"92":1}}],["freetextoperator>",{"2":{"60":1}}],["freetextoperator",{"2":{"60":2}}],["freetext",{"2":{"60":2}}],["from",{"2":{"13":1,"31":1,"35":1,"36":1,"37":1,"43":1,"52":1,"75":1,"92":2,"97":1}}],["fromquery",{"2":{"2":1,"15":2}}],["framework",{"0":{"38":1},"1":{"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1},"2":{"1":1,"9":1,"43":2,"45":1,"61":2,"92":1}}],["felipe",{"2":{"60":1}}],["feature",{"2":{"11":1,"77":1,"94":1}}],["features",{"0":{"92":1},"2":{"1":1,"2":1,"37":1,"43":1,"48":1,"92":1,"94":1}}],["fetching",{"2":{"1":1}}],["few",{"2":{"1":1,"2":1,"93":1}}],["five",{"2":{"58":1}}],["firstname=",{"2":{"56":1}}],["firstname=value|lastname=value2",{"2":{"56":1}}],["firstname=john",{"2":{"35":1,"37":1,"57":1,"88":1}}],["firstname",{"2":{"35":1,"36":2,"37":1,"56":2,"73":1,"95":3}}],["first",{"2":{"16":1,"76":1}}],["filters",{"2":{"26":1}}],["filter=age>10",{"2":{"5":1}}],["filter",{"2":{"1":1,"9":1,"17":1,"35":1,"36":1,"37":1,"52":1,"59":2,"84":1,"85":2,"88":2,"89":6,"90":3}}],["filtering",{"0":{"53":1,"84":1},"1":{"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1},"2":{"0":1,"6":2,"7":3,"8":1,"17":2,"20":1,"22":1,"24":1,"50":1,"52":1,"53":1,"69":1,"70":1,"73":1,"75":1,"77":2,"84":1,"88":1,"91":1,"92":1,"94":2,"97":8}}],["fieldname",{"2":{"54":12}}],["fields",{"2":{"6":1,"17":1,"37":1}}],["field",{"2":{"0":1,"31":3,"50":3,"69":1,"70":1,"71":2,"73":3,"76":1,"78":1,"82":1,"95":1}}],["i7",{"2":{"94":1}}],["id",{"2":{"43":1,"95":12,"97":1}}],["iqueriable",{"2":{"17":1,"18":1}}],["iqueryable",{"2":{"8":2,"15":1,"16":1,"19":1,"20":1,"21":1,"22":1}}],["igridifyoperator",{"2":{"60":4}}],["igridifymapper",{"2":{"8":2,"15":5}}],["igridifyquery",{"2":{"8":2,"20":1,"21":1,"22":1,"24":1}}],["ignorenotmappedfields",{"0":{"70":1,"82":1},"2":{"13":1,"70":1,"80":1,"82":1}}],["ignore",{"2":{"5":1,"73":1,"75":1}}],["i",{"0":{"57":1},"2":{"8":1,"49":1,"57":2,"58":4,"62":1}}],["if",{"2":{"1":2,"6":2,"8":2,"9":2,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"31":2,"37":1,"43":1,"50":1,"54":1,"58":1,"60":1,"61":2,"69":1,"70":1,"73":1,"77":1,"78":1,"81":1,"84":1,"89":2,"95":1,"97":2}}],["ienumerable",{"2":{"1":1,"3":1,"15":1,"16":1}}],["impact",{"2":{"94":1}}],["improved",{"2":{"11":1}}],["improvement",{"2":{"10":1}}],["implements",{"2":{"60":1}}],["implement",{"2":{"2":1}}],["implementation",{"2":{"0":1}}],["implementing",{"2":{"0":1,"1":1}}],["imapper",{"2":{"8":2}}],["imagine",{"2":{"1":1}}],["its",{"2":{"84":1,"95":3}}],["it",{"2":{"0":1,"9":1,"23":1,"24":1,"37":2,"43":2,"49":1,"60":1,"61":2,"74":1,"86":1,"87":1,"90":1,"91":2,"94":1}}],["isvalid",{"0":{"89":1},"2":{"89":8,"97":1}}],["ismatch",{"2":{"60":1}}],["isactive=true",{"2":{"52":1}}],["isactive",{"2":{"52":1}}],["iservicecollection",{"2":{"14":2}}],["is",{"0":{"3":1,"4":1},"2":{"0":1,"1":3,"3":1,"4":1,"5":1,"7":1,"10":1,"12":1,"17":1,"18":1,"19":1,"24":2,"25":1,"48":1,"50":3,"52":1,"54":2,"61":1,"67":1,"70":1,"73":2,"74":1,"76":3,"81":1,"82":1,"88":1,"89":5,"91":1,"94":2,"97":1}}],["including",{"2":{"74":1}}],["include",{"2":{"14":1}}],["inoperator>",{"2":{"60":1}}],["inoperator",{"2":{"60":2}}],["instead",{"2":{"61":1}}],["installing",{"2":{"63":1}}],["install",{"2":{"49":1,"61":2}}],["installation",{"0":{"27":1,"40":1,"49":1,"62":1},"1":{"28":1,"29":1,"41":1,"42":1}}],["installed",{"2":{"8":1}}],["instance",{"2":{"6":1,"82":1}}],["insensitive",{"0":{"57":1},"2":{"57":1,"58":1,"68":1,"81":1}}],["inequality",{"2":{"51":1}}],["initialized",{"0":{"35":1,"37":1}}],["indexes",{"0":{"59":1,"85":1},"2":{"59":2,"85":1,"92":1}}],["index",{"2":{"32":1,"33":1,"35":1,"36":1,"37":1,"59":4,"85":4}}],["indicates",{"2":{"3":1}}],["inferred",{"2":{"31":3}}],["information",{"0":{"6":1},"2":{"16":1,"17":1,"18":1,"59":1,"85":1}}],["inputs",{"2":{"76":1}}],["input",{"2":{"17":1,"77":1}}],["inject",{"0":{"15":1},"2":{"15":1}}],["injection",{"0":{"11":1},"1":{"12":1,"13":1,"14":1,"15":1},"2":{"11":1}}],["inheriting",{"2":{"13":1}}],["introduction",{"0":{"91":1},"1":{"92":1,"93":1,"94":1}}],["into",{"2":{"15":1,"49":1,"91":1}}],["intel",{"2":{"94":1}}],["integrate",{"2":{"49":1}}],["integrated",{"2":{"48":1}}],["integrating",{"2":{"11":1}}],["interestingly",{"2":{"94":1}}],["interface",{"2":{"50":2,"60":1}}],["interfaces",{"2":{"15":1}}],["internally",{"2":{"73":1}}],["internal",{"2":{"43":1}}],["int",{"2":{"3":1,"23":1,"67":1,"73":1}}],["in",{"0":{"0":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"2":{"0":2,"1":2,"2":1,"8":2,"11":1,"12":1,"17":1,"24":1,"50":2,"52":1,"58":1,"59":1,"60":4,"61":4,"69":1,"70":1,"73":4,"74":1,"76":1,"77":1,"82":1,"84":1,"85":1,"86":1,"87":1,"90":1,"93":1,"94":4,"97":1}}],["own",{"2":{"60":1,"72":1}}],["our",{"2":{"59":1,"85":1}}],["outperforms",{"2":{"94":1}}],["output",{"2":{"52":1}}],["out",{"2":{"16":1,"17":1,"18":1}}],["operation",{"2":{"77":2}}],["operations",{"2":{"61":1,"69":1,"70":1}}],["operatorhandler",{"2":{"60":3}}],["operatorparameter>",{"2":{"60":3}}],["operator",{"0":{"57":1},"2":{"50":3,"51":1,"54":1,"56":1,"57":2,"58":1,"60":2,"72":1}}],["operators",{"0":{"51":1,"54":1,"55":1,"56":1,"60":1},"1":{"56":1,"57":1},"2":{"17":1,"51":2,"53":1,"54":1,"56":1,"58":1,"60":3,"72":2,"92":1}}],["op",{"2":{"52":4}}],["option",{"2":{"69":2,"71":1}}],["optional",{"2":{"50":1,"76":1}}],["optionally",{"2":{"13":1,"89":1}}],["optimization",{"2":{"43":1}}],["optimized",{"2":{"24":1}}],["overload",{"2":{"85":1}}],["over",{"2":{"74":1}}],["overview",{"2":{"11":1}}],["overheads",{"2":{"9":1}}],["object>>",{"2":{"86":1}}],["objects",{"2":{"16":1,"92":1}}],["object",{"2":{"3":1,"16":1,"24":1,"92":1,"97":1}}],["other",{"2":{"1":2,"7":1,"14":1,"94":1}}],["offer",{"2":{"61":1}}],["offers",{"2":{"11":1,"91":1}}],["of",{"0":{"34":1},"1":{"35":1,"36":1,"37":1},"2":{"0":2,"1":6,"3":1,"9":2,"11":2,"16":1,"25":1,"26":1,"37":1,"48":3,"50":1,"51":1,"52":1,"59":1,"61":1,"65":1,"72":1,"73":1,"74":3,"76":1,"77":1,"79":1,"84":1,"85":1,"89":1,"91":2,"92":1,"93":1,"94":1,"95":1}}],["orms",{"2":{"71":1,"92":1}}],["orm",{"2":{"9":1}}],["ordered",{"2":{"95":1}}],["order",{"0":{"96":1},"2":{"35":1,"36":3,"37":1,"50":1,"61":1,"96":1}}],["orderby",{"2":{"18":1,"35":1,"36":1,"37":1,"52":1,"88":1,"89":5,"95":3,"96":3,"97":1}}],["orderby=firstname",{"2":{"5":1}}],["orderings",{"2":{"95":3}}],["ordering",{"0":{"95":1},"1":{"96":1},"2":{"6":2,"7":1,"8":1,"18":2,"20":1,"21":1,"22":1,"24":1,"50":2,"52":1,"70":1,"75":1,"88":1,"95":5,"97":7}}],["or",{"2":{"0":1,"1":3,"6":1,"9":1,"15":1,"17":3,"18":1,"19":1,"20":1,"21":1,"22":1,"50":2,"51":2,"52":1,"54":1,"56":1,"60":1,"61":1,"73":1,"74":1,"75":1,"89":2,"95":1,"96":1,"97":2}}],["one",{"2":{"24":1}}],["once",{"2":{"15":1}}],["only",{"2":{"7":1,"8":1,"9":3,"17":1,"18":1,"19":1,"57":1,"74":1,"84":1,"96":1}}],["on",{"0":{"84":1,"85":1},"2":{"0":1,"3":1,"14":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"48":1,"50":1,"59":1,"61":1,"71":1,"73":1,"83":1,"94":1,"96":1}}],["nhibernate",{"2":{"71":1}}],["nonexist",{"2":{"89":1}}],["nonexist=john",{"2":{"89":1}}],["no",{"2":{"67":1,"74":1}}],["notable",{"2":{"92":1}}],["notlike",{"2":{"54":1}}],["notstartswith",{"2":{"51":1,"54":1}}],["notcontains",{"2":{"51":1,"54":1}}],["notendswith",{"2":{"51":1,"54":1}}],["notequal",{"2":{"51":1,"54":1}}],["note",{"2":{"5":1}}],["not",{"2":{"0":1,"1":2,"5":1,"8":1,"9":1,"37":1,"51":4,"60":1,"69":1,"70":1,"82":2,"89":3,"97":1}}],["npm",{"2":{"49":1}}],["nvarchar",{"2":{"43":1}}],["native",{"2":{"94":2}}],["nativelinq",{"2":{"10":1}}],["namingaction",{"2":{"37":2}}],["naming",{"2":{"37":1}}],["nameof",{"2":{"73":1,"86":1,"87":1}}],["name=null",{"2":{"69":1}}],["name=",{"2":{"54":1,"89":1}}],["name=john",{"2":{"9":3,"36":1,"68":2,"89":2,"90":1,"97":1}}],["name",{"2":{"1":2,"15":2,"17":2,"18":2,"31":2,"36":1,"43":2,"52":3,"54":3,"56":1,"60":1,"69":1,"76":1,"78":1,"82":1,"86":1,"87":1,"89":2,"96":1}}],["namespace",{"0":{"63":1},"2":{"14":1,"63":1}}],["names",{"2":{"0":1,"31":3,"37":1,"73":2,"95":1}}],["nuget",{"2":{"61":1}}],["nullable",{"0":{"96":1},"2":{"96":3}}],["null",{"2":{"8":2,"31":1,"54":2,"69":4,"71":3,"83":2}}],["number",{"2":{"1":1,"3":1,"50":3}}],["nicely",{"2":{"7":1}}],["n",{"2":{"1":1,"43":1}}],["nesting",{"2":{"74":4,"84":1}}],["nested",{"0":{"84":1},"2":{"71":1,"74":3,"84":2,"92":1}}],["nestedfiltering",{"2":{"37":1}}],["next",{"2":{"32":1,"33":1}}],["necessary",{"2":{"14":1,"37":1,"61":1}}],["new",{"2":{"7":1,"8":2,"9":3,"15":1,"35":1,"36":2,"37":2,"52":1,"59":2,"73":1,"74":3,"80":2,"81":1,"82":1,"83":1,"84":1,"85":3,"88":1,"89":5,"90":1,"95":4,"97":2}}],["need",{"2":{"0":1,"1":3,"60":3,"61":1,"69":1,"77":1,"81":1,"84":1,"95":1,"96":1}}],["net",{"0":{"29":1,"42":1},"2":{"0":3,"26":1,"94":2}}],["sdk",{"2":{"94":1}}],["same",{"2":{"61":1}}],["sample",{"0":{"5":1},"2":{"73":1}}],["speed",{"2":{"94":1}}],["special",{"0":{"55":1},"1":{"56":1,"57":1},"2":{"58":1,"96":1}}],["specific",{"2":{"73":1}}],["specified",{"2":{"67":1,"74":1}}],["specifies",{"2":{"31":1}}],["specify",{"2":{"54":1,"74":1}}],["split",{"2":{"60":1}}],["sqldeclare",{"2":{"43":1}}],["smith",{"2":{"36":1}}],["shellnpm",{"2":{"49":1,"62":1}}],["shelldotnet",{"2":{"29":1,"42":1,"62":3}}],["shellinstall",{"2":{"28":1,"41":1}}],["should",{"2":{"9":1,"43":1,"57":1,"58":1,"61":1}}],["skip",{"2":{"19":1}}],["scripting",{"2":{"94":1}}],["scan",{"2":{"14":1}}],["scenes",{"2":{"2":1}}],["scenario",{"0":{"1":1}}],["sensitive",{"2":{"81":1}}],["see",{"2":{"72":1}}],["second",{"2":{"51":1,"76":1}}],["section",{"2":{"11":1,"17":1,"18":1}}],["server",{"2":{"48":1,"61":1}}],["serviceprovidercaching",{"2":{"43":1}}],["service",{"2":{"14":1}}],["services",{"2":{"14":2,"15":1}}],["seamlessly",{"2":{"48":1}}],["searching",{"2":{"82":1,"83":1}}],["searches",{"2":{"57":1,"58":1,"69":1}}],["search",{"2":{"32":1,"33":1,"35":1,"36":1,"37":1,"54":1,"57":1,"69":1,"73":1,"77":1}}],["searchasync",{"2":{"32":1,"33":1,"35":1,"36":1,"37":1}}],["selectmany",{"2":{"84":3}}],["selector",{"2":{"76":1,"86":2,"87":2}}],["select",{"2":{"43":1,"84":2}}],["separation",{"2":{"11":1}}],["setup",{"2":{"97":1}}],["setpagesize",{"2":{"50":1,"52":1}}],["setpage",{"2":{"50":1,"52":1}}],["sets",{"2":{"46":1,"47":1}}],["setting",{"2":{"45":1,"68":1,"71":1,"82":1,"83":1}}],["set",{"2":{"3":2,"50":2,"73":7,"74":1}}],["sunvalley2",{"2":{"94":1}}],["subcollection",{"2":{"59":2,"85":2}}],["sub",{"0":{"85":1},"2":{"59":2,"92":1}}],["surname",{"2":{"36":1}}],["surname=smith",{"2":{"36":1}}],["sure",{"2":{"6":1,"14":1,"16":1,"73":1}}],["summary",{"2":{"13":2}}],["supports",{"2":{"53":1,"92":5}}],["supported",{"2":{"6":1,"17":1,"51":1,"75":1}}],["support",{"2":{"1":1,"37":1,"43":1,"59":1,"71":1,"73":1,"96":1}}],["syntax",{"2":{"6":1}}],["stddev",{"2":{"94":1}}],["starts",{"2":{"51":1}}],["startswith",{"2":{"51":1,"52":1,"54":1}}],["start",{"2":{"50":1,"51":1,"60":1,"64":1}}],["startgroup",{"2":{"50":1,"52":1}}],["started",{"0":{"61":1},"1":{"62":1,"63":1,"64":1},"2":{"12":1}}],["static",{"2":{"8":2,"63":1}}],["statements",{"2":{"1":1}}],["steps",{"2":{"12":1}}],["straightforward",{"2":{"12":1}}],["streamline",{"2":{"11":1}}],["string>",{"2":{"37":1}}],["stringsplitoptions",{"2":{"60":1}}],["strings",{"2":{"5":1,"91":1,"92":2}}],["string",{"0":{"5":1},"2":{"0":1,"17":1,"37":1,"50":1,"51":6,"54":1,"57":1,"60":3,"69":2,"73":6,"76":1,"97":2}}],["store",{"2":{"9":1}}],["storing",{"2":{"9":1}}],["soon",{"2":{"93":1}}],["some",{"2":{"71":1,"75":1,"92":1}}],["sometimes",{"2":{"60":1,"73":1,"96":1}}],["someprop",{"2":{"59":1,"85":1}}],["solving",{"0":{"2":1}}],["so",{"2":{"1":1}}],["sort",{"2":{"1":1,"35":1,"36":1,"37":1,"88":1}}],["sortings",{"2":{"26":1}}],["sorting",{"2":{"0":1,"7":1,"73":1,"91":1,"92":1,"94":1}}],["single",{"2":{"97":2}}],["since",{"2":{"59":1,"85":1}}],["sieve",{"2":{"94":1}}],["simply",{"2":{"46":1,"47":1}}],["simplify",{"2":{"2":1,"48":1,"91":1}}],["simple",{"2":{"0":1,"88":1}}],["size",{"2":{"1":1,"35":1,"36":1,"37":1,"50":1,"67":2}}],["side",{"2":{"1":1,"48":2,"61":2}}],["s",{"2":{"0":1,"32":2,"33":2,"35":2,"36":2,"37":4,"61":1,"93":1,"94":1}}],["your",{"2":{"1":1,"2":1,"5":1,"8":2,"11":3,"12":1,"13":2,"14":1,"15":1,"48":1,"49":1,"58":1,"60":1,"61":1,"72":1,"73":2,"77":1,"84":1,"97":1}}],["you",{"2":{"0":1,"1":6,"2":1,"5":1,"6":3,"8":3,"9":6,"10":1,"11":2,"12":1,"13":2,"15":3,"16":1,"17":2,"18":2,"19":2,"20":2,"21":2,"22":2,"43":2,"54":1,"57":1,"58":2,"60":6,"61":3,"63":1,"65":1,"68":1,"69":2,"71":1,"72":1,"73":2,"74":2,"75":3,"76":3,"77":3,"81":2,"84":3,"86":1,"87":1,"89":1,"90":1,"95":2,"96":3,"97":2}}],["avx2",{"2":{"94":1}}],["available",{"2":{"14":1,"50":2,"61":1,"94":1}}],["arguments",{"2":{"74":1}}],["are",{"2":{"1":1,"5":1,"6":1,"8":2,"9":1,"31":1,"50":1,"60":2,"61":2,"64":1,"68":2,"73":1,"92":1,"97":1}}],["amp",{"2":{"71":2}}],["after",{"2":{"54":1,"57":2,"58":1,"63":1,"75":1,"96":1}}],["advanced",{"2":{"37":1}}],["address",{"2":{"73":4}}],["added",{"2":{"60":1,"74":1}}],["addorderby",{"2":{"50":1,"52":1,"95":3,"97":2}}],["additional",{"2":{"39":1}}],["adds",{"2":{"16":1,"71":1,"76":1,"97":2}}],["addquery",{"2":{"15":1,"97":1}}],["addgridifymappers",{"2":{"14":2}}],["addmapper",{"2":{"97":1}}],["addmap",{"0":{"76":1},"1":{"77":1},"2":{"13":2,"36":4,"59":1,"73":3,"77":2,"84":1,"85":2,"89":1,"97":1}}],["addcondition",{"2":{"9":2,"50":1,"51":1,"52":3,"97":2}}],["add",{"2":{"1":1,"8":1,"29":1,"42":1,"50":4,"58":1,"62":3,"72":1,"95":1,"97":1}}],["auto",{"2":{"73":1,"89":1,"97":1}}],["autogeneratemappings",{"2":{"37":1}}],["automapper",{"0":{"7":1},"1":{"8":1},"2":{"7":4,"8":6,"92":1}}],["above",{"2":{"73":1,"77":1,"82":1}}],["about",{"2":{"4":1,"6":1,"72":1}}],["ability",{"2":{"25":1}}],["actions",{"2":{"75":1}}],["actual",{"2":{"73":1}}],["achieve",{"2":{"11":1,"96":1}}],["access",{"2":{"9":1,"51":1,"63":1}}],["accepts",{"2":{"20":1,"21":1,"22":1,"24":1,"77":1,"85":1,"97":2}}],["accept",{"2":{"6":1,"16":1}}],["await",{"2":{"8":2,"33":1,"35":1,"36":1,"37":1}}],["assumes",{"2":{"95":1}}],["assembly",{"2":{"14":2}}],["ascending",{"2":{"50":1,"95":4}}],["asc",{"2":{"35":1,"36":1,"37":1,"95":10}}],["asqueryable",{"2":{"16":1}}],["async",{"2":{"8":1}}],["as",{"2":{"6":1,"16":1,"31":2,"43":1,"52":1,"61":1}}],["asp",{"2":{"0":2}}],["alternative",{"2":{"74":1}}],["alternatively",{"2":{"5":1}}],["alongside",{"2":{"9":1}}],["always",{"2":{"5":1,"17":1,"73":1}}],["alloc",{"2":{"94":1}}],["allocated",{"2":{"10":1,"94":1}}],["allows",{"2":{"92":1}}],["allow",{"2":{"26":1,"83":1}}],["allownullsearch",{"0":{"69":1,"83":1},"2":{"13":1,"69":1,"80":1,"83":1}}],["all",{"2":{"2":1,"6":1,"8":1,"14":1,"16":1,"24":1,"37":1,"69":1,"97":1}}],["also",{"2":{"1":1,"7":1,"9":1,"37":1,"61":1}}],["age=30",{"2":{"36":1}}],["age",{"2":{"1":2,"18":2,"35":2,"36":5,"37":2,"52":2,"56":2,"88":1,"89":5,"97":1}}],["at",{"2":{"0":1}}],["another",{"2":{"74":1}}],["an",{"2":{"1":1,"9":2,"11":1,"16":1,"17":2,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":2,"60":1,"73":1,"76":1,"82":2,"91":1,"97":5}}],["and",{"0":{"9":1,"15":1},"1":{"10":1},"2":{"0":1,"1":1,"2":1,"5":2,"6":1,"7":2,"8":1,"11":2,"12":1,"14":1,"16":1,"20":1,"21":1,"22":2,"24":2,"26":1,"39":1,"48":1,"50":4,"52":2,"54":1,"56":1,"58":1,"61":1,"63":1,"65":1,"68":1,"70":1,"73":1,"74":2,"84":1,"88":2,"89":1,"91":2,"92":3,"94":2,"96":1,"97":12}}],["anything",{"2":{"76":1}}],["any",{"2":{"0":2,"1":2,"9":1,"24":1,"54":1,"70":1,"74":1,"92":1}}],["a",{"2":{"0":2,"1":6,"2":1,"3":1,"4":1,"6":2,"8":1,"9":3,"10":1,"11":1,"12":1,"16":1,"17":1,"23":1,"24":1,"26":1,"37":1,"48":1,"50":2,"52":3,"58":1,"60":3,"61":2,"69":1,"70":1,"71":1,"73":3,"74":1,"76":2,"77":1,"78":1,"82":1,"85":2,"88":1,"89":4,"90":1,"93":2,"95":1,"97":15}}],["applies",{"2":{"24":1,"97":3}}],["application",{"2":{"1":1,"11":1}}],["applying",{"2":{"97":2}}],["applypaging",{"0":{"19":1},"2":{"19":1,"35":1}}],["applyorderingandpaging",{"0":{"21":1}}],["applyordering",{"0":{"18":1},"2":{"18":1,"35":1,"95":3,"96":2}}],["applyfilteringorderingpaging",{"0":{"22":1},"2":{"23":1,"36":1,"37":1}}],["applyfilteringandordering",{"0":{"20":1}}],["applyfiltering",{"0":{"17":1},"2":{"7":1,"17":2,"32":1,"33":1,"35":1,"54":1,"57":1,"60":1,"84":1}}],["apply",{"2":{"0":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"37":1,"84":1,"88":1,"91":1}}],["apis",{"2":{"0":1,"5":1,"48":1}}],["api",{"0":{"0":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"2":{"1":2,"5":2,"17":1,"93":1}}],["windows",{"2":{"94":1}}],["wildcards",{"2":{"60":1}}],["will",{"2":{"31":2,"32":1,"33":1,"73":1,"74":1,"75":1,"82":1,"84":1,"96":1}}],["within",{"2":{"13":1}}],["without",{"0":{"35":1},"2":{"9":1,"74":2,"97":1}}],["with",{"0":{"12":1,"36":1,"37":1},"2":{"0":2,"1":1,"2":1,"7":1,"8":1,"11":3,"12":1,"24":1,"43":2,"48":1,"51":4,"57":1,"60":2,"61":2,"69":1,"73":1,"74":1,"89":1,"92":4,"95":1}}],["ways",{"2":{"64":1}}],["warning",{"2":{"9":1,"37":1,"96":1}}],["want",{"2":{"1":4,"6":2,"8":1,"13":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"43":1,"58":1,"59":1,"60":1,"73":3,"75":1,"76":2,"77":1,"85":1,"97":2}}],["weatherforecastcontroller",{"2":{"15":4}}],["weatherforecast>",{"2":{"13":1,"15":8}}],["weatherforecastgridifymapper",{"2":{"13":2}}],["we",{"2":{"7":1,"8":1,"17":2,"51":2,"56":1,"59":2,"73":3,"77":1,"84":1,"85":1,"93":1,"96":1,"97":1}}],["write",{"2":{"1":1}}],["worth",{"2":{"94":1}}],["works",{"2":{"73":1}}],["work",{"2":{"37":1,"96":1}}],["working",{"2":{"0":1}}],["would",{"2":{"1":1}}],["whit",{"2":{"45":1}}],["which",{"2":{"5":1,"6":1,"17":1}}],["while",{"2":{"3":1}}],["what",{"0":{"3":1,"4":1},"2":{"73":2}}],["whatever",{"2":{"1":1}}],["where",{"2":{"1":1,"9":4,"13":1,"17":2,"43":1,"54":1,"90":2}}],["when",{"2":{"0":2,"10":1,"60":1,"67":1,"70":1,"82":1,"97":2}}]],"serializationVersion":2}';export{e as default}; diff --git a/assets/chunks/VPLocalSearchBox.-MOopR_s.js b/assets/chunks/VPLocalSearchBox.-MOopR_s.js new file mode 100644 index 00000000..d9001b8d --- /dev/null +++ b/assets/chunks/VPLocalSearchBox.-MOopR_s.js @@ -0,0 +1,13 @@ +import{X as pt,h as oe,y as Ve,ah as kt,ai as Nt,d as It,G as xe,aj as et,g as Fe,ak as Dt,al as Ot,z as _t,am as Rt,j as Oe,R as he,P as Ee,an as Mt,ao as Lt,Y as Pt,v as zt,ap as Bt,o as ee,b as Vt,k as E,a1 as $t,m as U,aq as Wt,ar as jt,as as Kt,c as re,n as tt,e as Se,E as rt,F as nt,a as ve,t as pe,at as Jt,p as Ut,q as Ht,au as at,av as Gt,a7 as qt,ad as Qt,_ as Yt}from"./framework.BZkFhLI2.js";import{u as Zt,c as Xt,L as er}from"./theme.nKR3Z4U4.js";const tr={root:()=>pt(()=>import("./@localSearchIndexroot.ClQ3OA1c.js"),__vite__mapDeps([]))};/*! +* 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])"],Ce=mt.join(","),yt=typeof Element>"u",ue=yt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,ke=!yt&&Element.prototype.getRootNode?function(o){var e;return o==null||(e=o.getRootNode)===null||e===void 0?void 0:e.call(o)}:function(o){return o==null?void 0:o.ownerDocument},Ne=function o(e,t){var r;t===void 0&&(t=!0);var a=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),n=a===""||a==="true",i=n||t&&e&&o(e.parentNode);return i},rr=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},gt=function(e,t,r){if(Ne(e))return[];var a=Array.prototype.slice.apply(e.querySelectorAll(Ce));return t&&ue.call(e,Ce)&&a.unshift(e),a=a.filter(r),a},bt=function o(e,t,r){for(var a=[],n=Array.from(e);n.length;){var i=n.shift();if(!Ne(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?a.push.apply(a,l):a.push({scopeParent:i,candidates:l})}else{var d=ue.call(i,Ce);d&&r.filter(i)&&(t||!e.includes(i))&&a.push(i);var h=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!Ne(h,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(h&&v){var m=o(h===!0?i.children:h.children,!0,r);r.flatten?a.push.apply(a,m):a.push({scopeParent:i,candidates:m})}else n.unshift.apply(n,i.children)}}return a},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},se=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||rr(e))&&!wt(e)?0:e.tabIndex},nr=function(e,t){var r=se(e);return r<0&&t&&!wt(e)?0:r},ar=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},ir=function(e){return xt(e)&&e.type==="hidden"},or=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},sr=function(e,t){for(var r=0;rsummary:first-of-type"),i=n?e.parentElement:e;if(ue.call(i,"details:not([open]) *"))return!0;if(!r||r==="full"||r==="legacy-full"){if(typeof a=="function"){for(var s=e;e;){var u=e.parentElement,l=ke(e);if(u&&!u.shadowRoot&&a(u)===!0)return it(e);e.assignedSlot?e=e.assignedSlot:!u&&l!==e.ownerDocument?e=l.host:e=u}e=s}if(fr(e))return!e.getClientRects().length;if(r!=="legacy-full")return!0}else if(r==="non-zero-area")return it(e);return!1},hr=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var r=0;r=0)},pr=function o(e){var t=[],r=[];return e.forEach(function(a,n){var i=!!a.scopeParent,s=i?a.scopeParent:a,u=nr(s,i),l=i?o(a.candidates):s;u===0?i?t.push.apply(t,l):t.push(s):r.push({documentOrder:n,tabIndex:u,item:a,isScope:i,content:l})}),r.sort(ar).reduce(function(a,n){return n.isScope?a.push.apply(a,n.content):a.push(n.content),a},[]).concat(t)},mr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=bt([e],t.includeContainer,{filter:$e.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:vr}):r=gt(e,t.includeContainer,$e.bind(null,t)),pr(r)},yr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=bt([e],t.includeContainer,{filter:Ie.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=gt(e,t.includeContainer,Ie.bind(null,t)),r},le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,Ce)===!1?!1:$e(t,e)},gr=mt.concat("iframe").join(","),_e=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,gr)===!1?!1:Ie(t,e)};/*! +* focus-trap 7.5.4 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function ot(o,e){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(o);e&&(r=r.filter(function(a){return Object.getOwnPropertyDescriptor(o,a).enumerable})),t.push.apply(t,r)}return t}function st(o){for(var e=1;e0){var r=e[e.length-1];r!==t&&r.pause()}var a=e.indexOf(t);a===-1||e.splice(a,1),e.push(t)},deactivateTrap:function(e,t){var r=e.indexOf(t);r!==-1&&e.splice(r,1),e.length>0&&e[e.length-1].unpause()}},Fr=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Er=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},Sr=function(e){return ge(e)&&!e.shiftKey},Ar=function(e){return ge(e)&&e.shiftKey},lt=function(e){return setTimeout(e,0)},ct=function(e,t){var r=-1;return e.every(function(a,n){return t(a)?(r=n,!1):!0}),r},me=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),a=1;a1?p-1:0),I=1;I=0)c=r.activeElement;else{var f=i.tabbableGroups[0],p=f&&f.firstTabbableNode;c=p||d("fallbackFocus")}if(!c)throw new Error("Your focus-trap needs to have at least one focusable element");return c},v=function(){if(i.containerGroups=i.containers.map(function(c){var f=mr(c,n.tabbableOptions),p=yr(c,n.tabbableOptions),N=f.length>0?f[0]:void 0,I=f.length>0?f[f.length-1]:void 0,M=p.find(function(y){return le(y)}),P=p.slice().reverse().find(function(y){return le(y)}),z=!!f.find(function(y){return se(y)>0});return{container:c,tabbableNodes:f,focusableNodes:p,posTabIndexesFound:z,firstTabbableNode:N,lastTabbableNode:I,firstDomTabbableNode:M,lastDomTabbableNode:P,nextTabbableNode:function(x){var $=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,j=f.indexOf(x);return j<0?$?p.slice(p.indexOf(x)+1).find(function(G){return le(G)}):p.slice(0,p.indexOf(x)).reverse().find(function(G){return le(G)}):f[j+($?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(c){return c.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!d("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(c){return c.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.")},m=function w(c){var f=c.activeElement;if(f)return f.shadowRoot&&f.shadowRoot.activeElement!==null?w(f.shadowRoot):f},b=function w(c){if(c!==!1&&c!==m(document)){if(!c||!c.focus){w(h());return}c.focus({preventScroll:!!n.preventScroll}),i.mostRecentlyFocusedNode=c,Fr(c)&&c.select()}},S=function(c){var f=d("setReturnFocus",c);return f||(f===!1?!1:c)},g=function(c){var f=c.target,p=c.event,N=c.isBackward,I=N===void 0?!1:N;f=f||Ae(p),v();var M=null;if(i.tabbableGroups.length>0){var P=l(f,p),z=P>=0?i.containerGroups[P]:void 0;if(P<0)I?M=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:M=i.tabbableGroups[0].firstTabbableNode;else if(I){var y=ct(i.tabbableGroups,function(B){var J=B.firstTabbableNode;return f===J});if(y<0&&(z.container===f||_e(f,n.tabbableOptions)&&!le(f,n.tabbableOptions)&&!z.nextTabbableNode(f,!1))&&(y=P),y>=0){var x=y===0?i.tabbableGroups.length-1:y-1,$=i.tabbableGroups[x];M=se(f)>=0?$.lastTabbableNode:$.lastDomTabbableNode}else ge(p)||(M=z.nextTabbableNode(f,!1))}else{var j=ct(i.tabbableGroups,function(B){var J=B.lastTabbableNode;return f===J});if(j<0&&(z.container===f||_e(f,n.tabbableOptions)&&!le(f,n.tabbableOptions)&&!z.nextTabbableNode(f))&&(j=P),j>=0){var G=j===i.tabbableGroups.length-1?0:j+1,q=i.tabbableGroups[G];M=se(f)>=0?q.firstTabbableNode:q.firstDomTabbableNode}else ge(p)||(M=z.nextTabbableNode(f))}}else M=d("fallbackFocus");return M},A=function(c){var f=Ae(c);if(!(l(f,c)>=0)){if(me(n.clickOutsideDeactivates,c)){s.deactivate({returnFocus:n.returnFocusOnDeactivate});return}me(n.allowOutsideClick,c)||c.preventDefault()}},C=function(c){var f=Ae(c),p=l(f,c)>=0;if(p||f instanceof Document)p&&(i.mostRecentlyFocusedNode=f);else{c.stopImmediatePropagation();var N,I=!0;if(i.mostRecentlyFocusedNode)if(se(i.mostRecentlyFocusedNode)>0){var M=l(i.mostRecentlyFocusedNode),P=i.containerGroups[M].tabbableNodes;if(P.length>0){var z=P.findIndex(function(y){return y===i.mostRecentlyFocusedNode});z>=0&&(n.isKeyForward(i.recentNavEvent)?z+1=0&&(N=P[z-1],I=!1))}}else i.containerGroups.some(function(y){return y.tabbableNodes.some(function(x){return se(x)>0})})||(I=!1);else I=!1;I&&(N=g({target:i.mostRecentlyFocusedNode,isBackward:n.isKeyBackward(i.recentNavEvent)})),b(N||i.mostRecentlyFocusedNode||h())}i.recentNavEvent=void 0},F=function(c){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=c;var p=g({event:c,isBackward:f});p&&(ge(c)&&c.preventDefault(),b(p))},L=function(c){if(Er(c)&&me(n.escapeDeactivates,c)!==!1){c.preventDefault(),s.deactivate();return}(n.isKeyForward(c)||n.isKeyBackward(c))&&F(c,n.isKeyBackward(c))},R=function(c){var f=Ae(c);l(f,c)>=0||me(n.clickOutsideDeactivates,c)||me(n.allowOutsideClick,c)||(c.preventDefault(),c.stopImmediatePropagation())},V=function(){if(i.active)return ut.activateTrap(a,s),i.delayInitialFocusTimer=n.delayInitialFocus?lt(function(){b(h())}):b(h()),r.addEventListener("focusin",C,!0),r.addEventListener("mousedown",A,{capture:!0,passive:!1}),r.addEventListener("touchstart",A,{capture:!0,passive:!1}),r.addEventListener("click",R,{capture:!0,passive:!1}),r.addEventListener("keydown",L,{capture:!0,passive:!1}),s},k=function(){if(i.active)return r.removeEventListener("focusin",C,!0),r.removeEventListener("mousedown",A,!0),r.removeEventListener("touchstart",A,!0),r.removeEventListener("click",R,!0),r.removeEventListener("keydown",L,!0),s},_=function(c){var f=c.some(function(p){var N=Array.from(p.removedNodes);return N.some(function(I){return I===i.mostRecentlyFocusedNode})});f&&b(h())},T=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(_):void 0,O=function(){T&&(T.disconnect(),i.active&&!i.paused&&i.containers.map(function(c){T.observe(c,{subtree:!0,childList:!0})}))};return s={get active(){return i.active},get paused(){return i.paused},activate:function(c){if(i.active)return this;var f=u(c,"onActivate"),p=u(c,"onPostActivate"),N=u(c,"checkCanFocusTrap");N||v(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=r.activeElement,f==null||f();var I=function(){N&&v(),V(),O(),p==null||p()};return N?(N(i.containers.concat()).then(I,I),this):(I(),this)},deactivate:function(c){if(!i.active)return this;var f=st({onDeactivate:n.onDeactivate,onPostDeactivate:n.onPostDeactivate,checkCanReturnFocus:n.checkCanReturnFocus},c);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,k(),i.active=!1,i.paused=!1,O(),ut.deactivateTrap(a,s);var p=u(f,"onDeactivate"),N=u(f,"onPostDeactivate"),I=u(f,"checkCanReturnFocus"),M=u(f,"returnFocus","returnFocusOnDeactivate");p==null||p();var P=function(){lt(function(){M&&b(S(i.nodeFocusedBeforeActivation)),N==null||N()})};return M&&I?(I(S(i.nodeFocusedBeforeActivation)).then(P,P),this):(P(),this)},pause:function(c){if(i.paused||!i.active)return this;var f=u(c,"onPause"),p=u(c,"onPostPause");return i.paused=!0,f==null||f(),k(),O(),p==null||p(),this},unpause:function(c){if(!i.paused||!i.active)return this;var f=u(c,"onUnpause"),p=u(c,"onPostUnpause");return i.paused=!1,f==null||f(),v(),V(),O(),p==null||p(),this},updateContainerElements:function(c){var f=[].concat(c).filter(Boolean);return i.containers=f.map(function(p){return typeof p=="string"?r.querySelector(p):p}),i.active&&v(),O(),this}},s.updateContainerElements(e),s};function kr(o,e={}){let t;const{immediate:r,...a}=e,n=oe(!1),i=oe(!1),s=h=>t&&t.activate(h),u=h=>t&&t.deactivate(h),l=()=>{t&&(t.pause(),i.value=!0)},d=()=>{t&&(t.unpause(),i.value=!1)};return Ve(()=>kt(o),h=>{h&&(t=Cr(h,{...a,onActivate(){n.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){n.value=!1,e.onDeactivate&&e.onDeactivate()}}),r&&s())},{flush:"post"}),Nt(()=>u()),{hasFocus:n,isPaused:i,activate:s,deactivate:u,pause:l,unpause:d}}class fe{constructor(e,t=!0,r=[],a=5e3){this.ctx=e,this.iframes=t,this.exclude=r,this.iframesTimeout=a}static matches(e,t){const r=typeof t=="string"?[t]:t,a=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(a){let n=!1;return r.every(i=>a.call(e,i)?(n=!0,!1):!0),n}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(r=>{const a=t.filter(n=>n.contains(r)).length>0;t.indexOf(r)===-1&&!a&&t.push(r)}),t}getIframeContents(e,t,r=()=>{}){let a;try{const n=e.contentWindow;if(a=n.document,!n||!a)throw new Error("iframe inaccessible")}catch{r()}a&&t(a)}isIframeBlank(e){const t="about:blank",r=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&r!==t&&r}observeIframeLoad(e,t,r){let a=!1,n=null;const i=()=>{if(!a){a=!0,clearTimeout(n);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,r))}catch{r()}}};e.addEventListener("load",i),n=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,r){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,r):this.getIframeContents(e,t,r):this.observeIframeLoad(e,t,r)}catch{r()}}waitForIframes(e,t){let r=0;this.forEachIframe(e,()=>!0,a=>{r++,this.waitForIframes(a.querySelector("html"),()=>{--r||t()})},a=>{a||t()})}forEachIframe(e,t,r,a=()=>{}){let n=e.querySelectorAll("iframe"),i=n.length,s=0;n=Array.prototype.slice.call(n);const u=()=>{--i<=0&&a(s)};i||u(),n.forEach(l=>{fe.matches(l,this.exclude)?u():this.onIframeReady(l,d=>{t(l)&&(s++,r(d)),u()},u)})}createIterator(e,t,r){return document.createNodeIterator(e,t,r,!1)}createInstanceOnIframe(e){return new fe(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,r){const a=e.compareDocumentPosition(r),n=Node.DOCUMENT_POSITION_PRECEDING;if(a&n)if(t!==null){const i=t.compareDocumentPosition(r),s=Node.DOCUMENT_POSITION_FOLLOWING;if(i&s)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let r;return t===null?r=e.nextNode():r=e.nextNode()&&e.nextNode(),{prevNode:t,node:r}}checkIframeFilter(e,t,r,a){let n=!1,i=!1;return a.forEach((s,u)=>{s.val===r&&(n=u,i=s.handled)}),this.compareNodeIframe(e,t,r)?(n===!1&&!i?a.push({val:r,handled:!0}):n!==!1&&!i&&(a[n].handled=!0),!0):(n===!1&&a.push({val:r,handled:!1}),!1)}handleOpenIframes(e,t,r,a){e.forEach(n=>{n.handled||this.getIframeContents(n.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,r,a)})})}iterateThroughNodes(e,t,r,a,n){const i=this.createIterator(t,e,a);let s=[],u=[],l,d,h=()=>({prevNode:d,node:l}=this.getIteratorNode(i),l);for(;h();)this.iframes&&this.forEachIframe(t,v=>this.checkIframeFilter(l,d,v,s),v=>{this.createInstanceOnIframe(v).forEachNode(e,m=>u.push(m),a)}),u.push(l);u.forEach(v=>{r(v)}),this.iframes&&this.handleOpenIframes(s,e,r,a),n()}forEachNode(e,t,r,a=()=>{}){const n=this.getContexts();let i=n.length;i||a(),n.forEach(s=>{const u=()=>{this.iterateThroughNodes(e,s,t,r,()=>{--i<=0&&a()})};this.iframes?this.waitForIframes(s,u):u()})}}let Nr=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 fe(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const r=this.opt.log;this.opt.debug&&typeof r=="object"&&typeof r[t]=="function"&&r[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,r=this.opt.caseSensitive?"":"i",a=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let n in t)if(t.hasOwnProperty(n)){const i=t[n],s=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(n):this.escapeStr(n),u=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);s!==""&&u!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(s)}|${this.escapeStr(u)})`,`gm${r}`),a+`(${this.processSynomyms(s)}|${this.processSynomyms(u)})`+a))}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,r,a)=>{let n=a.charAt(r+1);return/[(|)\\]/.test(n)||n===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const r=this.opt.ignorePunctuation;return Array.isArray(r)&&r.length&&t.push(this.escapeStr(r.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",r=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 a=[];return e.split("").forEach(n=>{r.every(i=>{if(i.indexOf(n)!==-1){if(a.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),a.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let r=this.opt.accuracy,a=typeof r=="string"?r:r.value,n=typeof r=="string"?[]:r.limiters,i="";switch(n.forEach(s=>{i+=`|${this.escapeStr(s)}`}),a){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(r=>{this.opt.separateWordSearch?r.split(" ").forEach(a=>{a.trim()&&t.indexOf(a)===-1&&t.push(a)}):r.trim()&&t.indexOf(r)===-1&&t.push(r)}),{keywords:t.sort((r,a)=>a.length-r.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 r=0;return e.sort((a,n)=>a.start-n.start).forEach(a=>{let{start:n,end:i,valid:s}=this.callNoMatchOnInvalidRanges(a,r);s&&(a.start=n,a.length=i-n,t.push(a),r=i)}),t}callNoMatchOnInvalidRanges(e,t){let r,a,n=!1;return e&&typeof e.start<"u"?(r=parseInt(e.start,10),a=r+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&a-t>0&&a-r>0?n=!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:r,end:a,valid:n}}checkWhitespaceRanges(e,t,r){let a,n=!0,i=r.length,s=t-i,u=parseInt(e.start,10)-s;return u=u>i?i:u,a=u+parseInt(e.length,10),a>i&&(a=i,this.log(`End range automatically set to the max value of ${i}`)),u<0||a-u<0||u>i||a>i?(n=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):r.substring(u,a).replace(/\s+/g,"")===""&&(n=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:u,end:a,valid:n}}getTextNodes(e){let t="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,a=>{r.push({start:t.length,end:(t+=a.textContent).length,node:a})},a=>this.matchesExclude(a.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:r})})}matchesExclude(e){return fe.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,r){const a=this.opt.element?this.opt.element:"mark",n=e.splitText(t),i=n.splitText(r-t);let s=document.createElement(a);return s.setAttribute("data-markjs","true"),this.opt.className&&s.setAttribute("class",this.opt.className),s.textContent=n.textContent,n.parentNode.replaceChild(s,n),i}wrapRangeInMappedTextNode(e,t,r,a,n){e.nodes.every((i,s)=>{const u=e.nodes[s+1];if(typeof u>"u"||u.start>t){if(!a(i.node))return!1;const l=t-i.start,d=(r>i.end?i.end:r)-i.start,h=e.value.substr(0,i.start),v=e.value.substr(d+i.start);if(i.node=this.wrapRangeInTextNode(i.node,l,d),e.value=h+v,e.nodes.forEach((m,b)=>{b>=s&&(e.nodes[b].start>0&&b!==s&&(e.nodes[b].start-=d),e.nodes[b].end-=d)}),r-=d,n(i.node.previousSibling,i.start),r>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,r,a,n){const i=t===0?0:t+1;this.getTextNodes(s=>{s.nodes.forEach(u=>{u=u.node;let l;for(;(l=e.exec(u.textContent))!==null&&l[i]!=="";){if(!r(l[i],u))continue;let d=l.index;if(i!==0)for(let h=1;h{let u;for(;(u=e.exec(s.value))!==null&&u[i]!=="";){let l=u.index;if(i!==0)for(let h=1;hr(u[i],h),(h,v)=>{e.lastIndex=v,a(h)})}n()})}wrapRangeFromIndex(e,t,r,a){this.getTextNodes(n=>{const i=n.value.length;e.forEach((s,u)=>{let{start:l,end:d,valid:h}=this.checkWhitespaceRanges(s,i,n.value);h&&this.wrapRangeInMappedTextNode(n,l,d,v=>t(v,s,n.value.substring(l,d),u),v=>{r(v,s)})}),a()})}unwrapMatches(e){const t=e.parentNode;let r=document.createDocumentFragment();for(;e.firstChild;)r.appendChild(e.removeChild(e.firstChild));t.replaceChild(r,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 r=0,a="wrapMatches";const n=i=>{r++,this.opt.each(i)};this.opt.acrossElements&&(a="wrapMatchesAcrossElements"),this[a](e,this.opt.ignoreGroups,(i,s)=>this.opt.filter(s,i,r),n,()=>{r===0&&this.opt.noMatch(e),this.opt.done(r)})}mark(e,t){this.opt=t;let r=0,a="wrapMatches";const{keywords:n,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),s=this.opt.caseSensitive?"":"i",u=l=>{let d=new RegExp(this.createRegExp(l),`gm${s}`),h=0;this.log(`Searching with expression "${d}"`),this[a](d,1,(v,m)=>this.opt.filter(m,l,r,h),v=>{h++,r++,this.opt.each(v)},()=>{h===0&&this.opt.noMatch(l),n[i-1]===l?this.opt.done(r):u(n[n.indexOf(l)+1])})};this.opt.acrossElements&&(a="wrapMatchesAcrossElements"),i===0?this.opt.done(r):u(n[0])}markRanges(e,t){this.opt=t;let r=0,a=this.checkRanges(e);a&&a.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(a)),this.wrapRangeFromIndex(a,(n,i,s,u)=>this.opt.filter(n,i,s,u),(n,i)=>{r++,this.opt.each(n,i)},()=>{this.opt.done(r)})):this.opt.done(r)}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,r=>{this.unwrapMatches(r)},r=>{const a=fe.matches(r,t),n=this.matchesExclude(r);return!a||n?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Ir(o){const e=new Nr(o);return this.mark=(t,r)=>(e.mark(t,r),this),this.markRegExp=(t,r)=>(e.markRegExp(t,r),this),this.markRanges=(t,r)=>(e.markRanges(t,r),this),this.unmark=t=>(e.unmark(t),this),this}var W=function(){return W=Object.assign||function(e){for(var t,r=1,a=arguments.length;r0&&n[n.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!n||l[1]>n[0]&&l[1]=o.length&&(o=void 0),{value:o&&o[r++],done:!o}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function K(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var r=t.call(o),a,n=[],i;try{for(;(e===void 0||e-- >0)&&!(a=r.next()).done;)n.push(a.value)}catch(s){i={error:s}}finally{try{a&&!a.done&&(t=r.return)&&t.call(r)}finally{if(i)throw i.error}}return n}var _r="ENTRIES",Ft="KEYS",Et="VALUES",H="",Re=function(){function o(e,t){var r=e._tree,a=Array.from(r.keys());this.set=e,this._type=t,this._path=a.length>0?[{node:r,keys:a}]:[]}return o.prototype.next=function(){var e=this.dive();return this.backtrack(),e},o.prototype.dive=function(){if(this._path.length===0)return{done:!0,value:void 0};var e=ce(this._path),t=e.node,r=e.keys;if(ce(r)===H)return{done:!1,value:this.result()};var a=t.get(ce(r));return this._path.push({node:a,keys:Array.from(a.keys())}),this.dive()},o.prototype.backtrack=function(){if(this._path.length!==0){var e=ce(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}},o.prototype.key=function(){return this.set._prefix+this._path.map(function(e){var t=e.keys;return ce(t)}).filter(function(e){return e!==H}).join("")},o.prototype.value=function(){return ce(this._path).node.get(H)},o.prototype.result=function(){switch(this._type){case Et:return this.value();case Ft:return this.key();default:return[this.key(),this.value()]}},o.prototype[Symbol.iterator]=function(){return this},o}(),ce=function(o){return o[o.length-1]},Rr=function(o,e,t){var r=new Map;if(e===void 0)return r;for(var a=e.length+1,n=a+t,i=new Uint8Array(n*a).fill(t+1),s=0;st)continue e}St(o.get(m),e,t,r,a,S,i,s+m)}}}catch(f){u={error:f}}finally{try{v&&!v.done&&(l=h.return)&&l.call(h)}finally{if(u)throw u.error}}},Me=function(){function o(e,t){e===void 0&&(e=new Map),t===void 0&&(t=""),this._size=void 0,this._tree=e,this._prefix=t}return o.prototype.atPrefix=function(e){var t,r;if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");var a=K(De(this._tree,e.slice(this._prefix.length)),2),n=a[0],i=a[1];if(n===void 0){var s=K(Je(i),2),u=s[0],l=s[1];try{for(var d=D(u.keys()),h=d.next();!h.done;h=d.next()){var v=h.value;if(v!==H&&v.startsWith(l)){var m=new Map;return m.set(v.slice(l.length),u.get(v)),new o(m,e)}}}catch(b){t={error:b}}finally{try{h&&!h.done&&(r=d.return)&&r.call(d)}finally{if(t)throw t.error}}}return new o(n,e)},o.prototype.clear=function(){this._size=void 0,this._tree.clear()},o.prototype.delete=function(e){return this._size=void 0,Mr(this._tree,e)},o.prototype.entries=function(){return new Re(this,_r)},o.prototype.forEach=function(e){var t,r;try{for(var a=D(this),n=a.next();!n.done;n=a.next()){var i=K(n.value,2),s=i[0],u=i[1];e(s,u,this)}}catch(l){t={error:l}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}},o.prototype.fuzzyGet=function(e,t){return Rr(this._tree,e,t)},o.prototype.get=function(e){var t=We(this._tree,e);return t!==void 0?t.get(H):void 0},o.prototype.has=function(e){var t=We(this._tree,e);return t!==void 0&&t.has(H)},o.prototype.keys=function(){return new Re(this,Ft)},o.prototype.set=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Le(this._tree,e);return r.set(H,t),this},Object.defineProperty(o.prototype,"size",{get:function(){if(this._size)return this._size;this._size=0;for(var e=this.entries();!e.next().done;)this._size+=1;return this._size},enumerable:!1,configurable:!0}),o.prototype.update=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Le(this._tree,e);return r.set(H,t(r.get(H))),this},o.prototype.fetch=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Le(this._tree,e),a=r.get(H);return a===void 0&&r.set(H,a=t()),a},o.prototype.values=function(){return new Re(this,Et)},o.prototype[Symbol.iterator]=function(){return this.entries()},o.from=function(e){var t,r,a=new o;try{for(var n=D(e),i=n.next();!i.done;i=n.next()){var s=K(i.value,2),u=s[0],l=s[1];a.set(u,l)}}catch(d){t={error:d}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return a},o.fromObject=function(e){return o.from(Object.entries(e))},o}(),De=function(o,e,t){var r,a;if(t===void 0&&(t=[]),e.length===0||o==null)return[o,t];try{for(var n=D(o.keys()),i=n.next();!i.done;i=n.next()){var s=i.value;if(s!==H&&e.startsWith(s))return t.push([o,s]),De(o.get(s),e.slice(s.length),t)}}catch(u){r={error:u}}finally{try{i&&!i.done&&(a=n.return)&&a.call(n)}finally{if(r)throw r.error}}return t.push([o,e]),De(void 0,"",t)},We=function(o,e){var t,r;if(e.length===0||o==null)return o;try{for(var a=D(o.keys()),n=a.next();!n.done;n=a.next()){var i=n.value;if(i!==H&&e.startsWith(i))return We(o.get(i),e.slice(i.length))}}catch(s){t={error:s}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}},Le=function(o,e){var t,r,a=e.length;e:for(var n=0;o&&n0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new Me,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}},o.prototype.discard=function(e){var t=this,r=this._idToShortId.get(e);if(r==null)throw new Error("MiniSearch: cannot discard document with ID ".concat(e,": it is not in the index"));this._idToShortId.delete(e),this._documentIds.delete(r),this._storedFields.delete(r),(this._fieldLength.get(r)||[]).forEach(function(a,n){t.removeFieldLength(r,n,t._documentCount,a)}),this._fieldLength.delete(r),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()},o.prototype.maybeAutoVacuum=function(){if(this._options.autoVacuum!==!1){var e=this._options.autoVacuum,t=e.minDirtFactor,r=e.minDirtCount,a=e.batchSize,n=e.batchWait;this.conditionalVacuum({batchSize:a,batchWait:n},{minDirtCount:r,minDirtFactor:t})}},o.prototype.discardAll=function(e){var t,r,a=this._options.autoVacuum;try{this._options.autoVacuum=!1;try{for(var n=D(e),i=n.next();!i.done;i=n.next()){var s=i.value;this.discard(s)}}catch(u){t={error:u}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}}finally{this._options.autoVacuum=a}this.maybeAutoVacuum()},o.prototype.replace=function(e){var t=this._options,r=t.idField,a=t.extractField,n=a(e,r);this.discard(n),this.add(e)},o.prototype.vacuum=function(e){return e===void 0&&(e={}),this.conditionalVacuum(e)},o.prototype.conditionalVacuum=function(e,t){var r=this;return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(function(){var a=r._enqueuedVacuumConditions;return r._enqueuedVacuumConditions=Ke,r.performVacuuming(e,a)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)},o.prototype.performVacuuming=function(e,t){return Dr(this,void 0,void 0,function(){var r,a,n,i,s,u,l,d,h,v,m,b,S,g,A,C,F,L,R,V,k,_,T,O,w;return Or(this,function(c){switch(c.label){case 0:if(r=this._dirtCount,!this.vacuumConditionsMet(t))return[3,10];a=e.batchSize||je.batchSize,n=e.batchWait||je.batchWait,i=1,c.label=1;case 1:c.trys.push([1,7,8,9]),s=D(this._index),u=s.next(),c.label=2;case 2:if(u.done)return[3,6];l=K(u.value,2),d=l[0],h=l[1];try{for(v=(_=void 0,D(h)),m=v.next();!m.done;m=v.next()){b=K(m.value,2),S=b[0],g=b[1];try{for(A=(O=void 0,D(g)),C=A.next();!C.done;C=A.next())F=K(C.value,1),L=F[0],!this._documentIds.has(L)&&(g.size<=1?h.delete(S):g.delete(L))}catch(f){O={error:f}}finally{try{C&&!C.done&&(w=A.return)&&w.call(A)}finally{if(O)throw O.error}}}}catch(f){_={error:f}}finally{try{m&&!m.done&&(T=v.return)&&T.call(v)}finally{if(_)throw _.error}}return this._index.get(d).size===0&&this._index.delete(d),i%a!==0?[3,4]:[4,new Promise(function(f){return setTimeout(f,n)})];case 3:c.sent(),c.label=4;case 4:i+=1,c.label=5;case 5:return u=s.next(),[3,2];case 6:return[3,9];case 7:return R=c.sent(),V={error:R},[3,9];case 8:try{u&&!u.done&&(k=s.return)&&k.call(s)}finally{if(V)throw V.error}return[7];case 9:this._dirtCount-=r,c.label=10;case 10:return[4,null];case 11:return c.sent(),this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null,[2]}})})},o.prototype.vacuumConditionsMet=function(e){if(e==null)return!0;var t=e.minDirtCount,r=e.minDirtFactor;return t=t||Be.minDirtCount,r=r||Be.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=r},Object.defineProperty(o.prototype,"isVacuuming",{get:function(){return this._currentVacuum!=null},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtCount",{get:function(){return this._dirtCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtFactor",{get:function(){return this._dirtCount/(1+this._documentCount+this._dirtCount)},enumerable:!1,configurable:!0}),o.prototype.has=function(e){return this._idToShortId.has(e)},o.prototype.getStoredFields=function(e){var t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)},o.prototype.search=function(e,t){var r,a;t===void 0&&(t={});var n=this.executeQuery(e,t),i=[];try{for(var s=D(n),u=s.next();!u.done;u=s.next()){var l=K(u.value,2),d=l[0],h=l[1],v=h.score,m=h.terms,b=h.match,S=m.length||1,g={id:this._documentIds.get(d),score:v*S,terms:Object.keys(b),queryTerms:m,match:b};Object.assign(g,this._storedFields.get(d)),(t.filter==null||t.filter(g))&&i.push(g)}}catch(A){r={error:A}}finally{try{u&&!u.done&&(a=s.return)&&a.call(s)}finally{if(r)throw r.error}}return e===o.wildcard&&t.boostDocument==null&&this._options.searchOptions.boostDocument==null||i.sort(ht),i},o.prototype.autoSuggest=function(e,t){var r,a,n,i;t===void 0&&(t={}),t=W(W({},this._options.autoSuggestOptions),t);var s=new Map;try{for(var u=D(this.search(e,t)),l=u.next();!l.done;l=u.next()){var d=l.value,h=d.score,v=d.terms,m=v.join(" "),b=s.get(m);b!=null?(b.score+=h,b.count+=1):s.set(m,{score:h,terms:v,count:1})}}catch(R){r={error:R}}finally{try{l&&!l.done&&(a=u.return)&&a.call(u)}finally{if(r)throw r.error}}var S=[];try{for(var g=D(s),A=g.next();!A.done;A=g.next()){var C=K(A.value,2),b=C[0],F=C[1],h=F.score,v=F.terms,L=F.count;S.push({suggestion:b,terms:v,score:h/L})}}catch(R){n={error:R}}finally{try{A&&!A.done&&(i=g.return)&&i.call(g)}finally{if(n)throw n.error}}return S.sort(ht),S},Object.defineProperty(o.prototype,"documentCount",{get:function(){return this._documentCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"termCount",{get:function(){return this._index.size},enumerable:!1,configurable:!0}),o.loadJSON=function(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)},o.getDefault=function(e){if(ze.hasOwnProperty(e))return Pe(ze,e);throw new Error('MiniSearch: unknown option "'.concat(e,'"'))},o.loadJS=function(e,t){var r,a,n,i,s,u,l=e.index,d=e.documentCount,h=e.nextId,v=e.documentIds,m=e.fieldIds,b=e.fieldLength,S=e.averageFieldLength,g=e.storedFields,A=e.dirtCount,C=e.serializationVersion;if(C!==1&&C!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");var F=new o(t);F._documentCount=d,F._nextId=h,F._documentIds=Te(v),F._idToShortId=new Map,F._fieldIds=m,F._fieldLength=Te(b),F._avgFieldLength=S,F._storedFields=Te(g),F._dirtCount=A||0,F._index=new Me;try{for(var L=D(F._documentIds),R=L.next();!R.done;R=L.next()){var V=K(R.value,2),k=V[0],_=V[1];F._idToShortId.set(_,k)}}catch(z){r={error:z}}finally{try{R&&!R.done&&(a=L.return)&&a.call(L)}finally{if(r)throw r.error}}try{for(var T=D(l),O=T.next();!O.done;O=T.next()){var w=K(O.value,2),c=w[0],f=w[1],p=new Map;try{for(var N=(s=void 0,D(Object.keys(f))),I=N.next();!I.done;I=N.next()){var M=I.value,P=f[M];C===1&&(P=P.ds),p.set(parseInt(M,10),Te(P))}}catch(z){s={error:z}}finally{try{I&&!I.done&&(u=N.return)&&u.call(N)}finally{if(s)throw s.error}}F._index.set(c,p)}}catch(z){n={error:z}}finally{try{O&&!O.done&&(i=T.return)&&i.call(T)}finally{if(n)throw n.error}}return F},o.prototype.executeQuery=function(e,t){var r=this;if(t===void 0&&(t={}),e===o.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){var a=W(W(W({},t),e),{queries:void 0}),n=e.queries.map(function(g){return r.executeQuery(g,a)});return this.combineResults(n,a.combineWith)}var i=this._options,s=i.tokenize,u=i.processTerm,l=i.searchOptions,d=W(W({tokenize:s,processTerm:u},l),t),h=d.tokenize,v=d.processTerm,m=h(e).flatMap(function(g){return v(g)}).filter(function(g){return!!g}),b=m.map($r(d)),S=b.map(function(g){return r.executeQuerySpec(g,d)});return this.combineResults(S,d.combineWith)},o.prototype.executeQuerySpec=function(e,t){var r,a,n,i,s=W(W({},this._options.searchOptions),t),u=(s.fields||this._options.fields).reduce(function(M,P){var z;return W(W({},M),(z={},z[P]=Pe(s.boost,P)||1,z))},{}),l=s.boostDocument,d=s.weights,h=s.maxFuzzy,v=s.bm25,m=W(W({},ft.weights),d),b=m.fuzzy,S=m.prefix,g=this._index.get(e.term),A=this.termResults(e.term,e.term,1,g,u,l,v),C,F;if(e.prefix&&(C=this._index.atPrefix(e.term)),e.fuzzy){var L=e.fuzzy===!0?.2:e.fuzzy,R=L<1?Math.min(h,Math.round(e.term.length*L)):L;R&&(F=this._index.fuzzyGet(e.term,R))}if(C)try{for(var V=D(C),k=V.next();!k.done;k=V.next()){var _=K(k.value,2),T=_[0],O=_[1],w=T.length-e.term.length;if(w){F==null||F.delete(T);var c=S*T.length/(T.length+.3*w);this.termResults(e.term,T,c,O,u,l,v,A)}}}catch(M){r={error:M}}finally{try{k&&!k.done&&(a=V.return)&&a.call(V)}finally{if(r)throw r.error}}if(F)try{for(var f=D(F.keys()),p=f.next();!p.done;p=f.next()){var T=p.value,N=K(F.get(T),2),I=N[0],w=N[1];if(w){var c=b*T.length/(T.length+w);this.termResults(e.term,T,c,I,u,l,v,A)}}}catch(M){n={error:M}}finally{try{p&&!p.done&&(i=f.return)&&i.call(f)}finally{if(n)throw n.error}}return A},o.prototype.executeWildcardQuery=function(e){var t,r,a=new Map,n=W(W({},this._options.searchOptions),e);try{for(var i=D(this._documentIds),s=i.next();!s.done;s=i.next()){var u=K(s.value,2),l=u[0],d=u[1],h=n.boostDocument?n.boostDocument(d,"",this._storedFields.get(l)):1;a.set(l,{score:h,terms:[],match:{}})}}catch(v){t={error:v}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}return a},o.prototype.combineResults=function(e,t){if(t===void 0&&(t=Ue),e.length===0)return new Map;var r=t.toLowerCase();return e.reduce(zr[r])||new Map},o.prototype.toJSON=function(){var e,t,r,a,n=[];try{for(var i=D(this._index),s=i.next();!s.done;s=i.next()){var u=K(s.value,2),l=u[0],d=u[1],h={};try{for(var v=(r=void 0,D(d)),m=v.next();!m.done;m=v.next()){var b=K(m.value,2),S=b[0],g=b[1];h[S]=Object.fromEntries(g)}}catch(A){r={error:A}}finally{try{m&&!m.done&&(a=v.return)&&a.call(v)}finally{if(r)throw r.error}}n.push([l,h])}}catch(A){e={error:A}}finally{try{s&&!s.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}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:n,serializationVersion:2}},o.prototype.termResults=function(e,t,r,a,n,i,s,u){var l,d,h,v,m;if(u===void 0&&(u=new Map),a==null)return u;try{for(var b=D(Object.keys(n)),S=b.next();!S.done;S=b.next()){var g=S.value,A=n[g],C=this._fieldIds[g],F=a.get(C);if(F!=null){var L=F.size,R=this._avgFieldLength[C];try{for(var V=(h=void 0,D(F.keys())),k=V.next();!k.done;k=V.next()){var _=k.value;if(!this._documentIds.has(_)){this.removeTerm(C,_,t),L-=1;continue}var T=i?i(this._documentIds.get(_),t,this._storedFields.get(_)):1;if(T){var O=F.get(_),w=this._fieldLength.get(_)[C],c=Vr(O,L,this._documentCount,w,R,s),f=r*A*T*c,p=u.get(_);if(p){p.score+=f,jr(p.terms,e);var N=Pe(p.match,t);N?N.push(g):p.match[t]=[g]}else u.set(_,{score:f,terms:[e],match:(m={},m[t]=[g],m)})}}}catch(I){h={error:I}}finally{try{k&&!k.done&&(v=V.return)&&v.call(V)}finally{if(h)throw h.error}}}}}catch(I){l={error:I}}finally{try{S&&!S.done&&(d=b.return)&&d.call(b)}finally{if(l)throw l.error}}return u},o.prototype.addTerm=function(e,t,r){var a=this._index.fetch(r,vt),n=a.get(e);if(n==null)n=new Map,n.set(t,1),a.set(e,n);else{var i=n.get(t);n.set(t,(i||0)+1)}},o.prototype.removeTerm=function(e,t,r){if(!this._index.has(r)){this.warnDocumentChanged(t,e,r);return}var a=this._index.fetch(r,vt),n=a.get(e);n==null||n.get(t)==null?this.warnDocumentChanged(t,e,r):n.get(t)<=1?n.size<=1?a.delete(e):n.delete(t):n.set(t,n.get(t)-1),this._index.get(r).size===0&&this._index.delete(r)},o.prototype.warnDocumentChanged=function(e,t,r){var a,n;try{for(var i=D(Object.keys(this._fieldIds)),s=i.next();!s.done;s=i.next()){var u=s.value;if(this._fieldIds[u]===t){this._options.logger("warn","MiniSearch: document with ID ".concat(this._documentIds.get(e),' has changed before removal: term "').concat(r,'" was not present in field "').concat(u,'". Removing a document after it has changed can corrupt the index!'),"version_conflict");return}}}catch(l){a={error:l}}finally{try{s&&!s.done&&(n=i.return)&&n.call(i)}finally{if(a)throw a.error}}},o.prototype.addDocumentId=function(e){var t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t},o.prototype.addFields=function(e){for(var t=0;t(Ut("data-v-23c6f8fc"),o=o(),Ht(),o),Jr=["aria-owns"],Ur={class:"shell"},Hr=["title"],Gr=Y(()=>E("svg",{class:"search-icon",width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[E("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[E("circle",{cx:"11",cy:"11",r:"8"}),E("path",{d:"m21 21l-4.35-4.35"})])],-1)),qr=[Gr],Qr={class:"search-actions before"},Yr=["title"],Zr=Y(()=>E("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[E("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 12H5m7 7l-7-7l7-7"})],-1)),Xr=[Zr],en=["placeholder"],tn={class:"search-actions"},rn=["title"],nn=Y(()=>E("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[E("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 14h7v7H3zM3 3h7v7H3zm11 1h7m-7 5h7m-7 6h7m-7 5h7"})],-1)),an=[nn],on=["disabled","title"],sn=Y(()=>E("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[E("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 5H9l-7 7l7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2Zm-2 4l-6 6m0-6l6 6"})],-1)),un=[sn],ln=["id","role","aria-labelledby"],cn=["aria-selected"],fn=["href","aria-label","onMouseenter","onFocusin"],dn={class:"titles"},hn=Y(()=>E("span",{class:"title-icon"},"#",-1)),vn=["innerHTML"],pn=Y(()=>E("svg",{width:"18",height:"18",viewBox:"0 0 24 24"},[E("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"m9 18l6-6l-6-6"})],-1)),mn={class:"title main"},yn=["innerHTML"],gn={key:0,class:"excerpt-wrapper"},bn={key:0,class:"excerpt",inert:""},wn=["innerHTML"],xn=Y(()=>E("div",{class:"excerpt-gradient-bottom"},null,-1)),Fn=Y(()=>E("div",{class:"excerpt-gradient-top"},null,-1)),En={key:0,class:"no-results"},Sn={class:"search-keyboard-shortcuts"},An=["aria-label"],Tn=Y(()=>E("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[E("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 19V5m-7 7l7-7l7 7"})],-1)),Cn=[Tn],kn=["aria-label"],Nn=Y(()=>E("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[E("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 5v14m7-7l-7 7l-7-7"})],-1)),In=[Nn],Dn=["aria-label"],On=Y(()=>E("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[E("g",{fill:"none",stroke:"currentcolor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[E("path",{d:"m9 10l-5 5l5 5"}),E("path",{d:"M20 4v7a4 4 0 0 1-4 4H4"})])],-1)),_n=[On],Rn=["aria-label"],Mn=It({__name:"VPLocalSearchBox",emits:["close"],setup(o,{emit:e}){var P,z;const t=e,r=xe(),a=xe(),n=xe(tr),i=Zt(),{activate:s}=kr(r,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:u,theme:l}=i,d=et(async()=>{var y,x,$,j,G,q,B,J,Z;return at(Pr.loadJSON(($=await((x=(y=n.value)[u.value])==null?void 0:x.call(y)))==null?void 0:$.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((j=l.value.search)==null?void 0:j.provider)==="local"&&((q=(G=l.value.search.options)==null?void 0:G.miniSearch)==null?void 0:q.searchOptions)},...((B=l.value.search)==null?void 0:B.provider)==="local"&&((Z=(J=l.value.search.options)==null?void 0:J.miniSearch)==null?void 0:Z.options)}))}),v=Fe(()=>{var y,x;return((y=l.value.search)==null?void 0:y.provider)==="local"&&((x=l.value.search.options)==null?void 0:x.disableQueryPersistence)===!0}).value?oe(""):Dt("vitepress:local-search-filter",""),m=Ot("vitepress:local-search-detailed-list",((P=l.value.search)==null?void 0:P.provider)==="local"&&((z=l.value.search.options)==null?void 0:z.detailedView)===!0),b=Fe(()=>{var y,x,$;return((y=l.value.search)==null?void 0:y.provider)==="local"&&(((x=l.value.search.options)==null?void 0:x.disableDetailedView)===!0||(($=l.value.search.options)==null?void 0:$.detailedView)===!1)}),S=Fe(()=>{var x,$,j,G,q,B,J;const y=((x=l.value.search)==null?void 0:x.options)??l.value.algolia;return((q=(G=(j=($=y==null?void 0:y.locales)==null?void 0:$[u.value])==null?void 0:j.translations)==null?void 0:G.button)==null?void 0:q.buttonText)||((J=(B=y==null?void 0:y.translations)==null?void 0:B.button)==null?void 0:J.buttonText)||"Search"});_t(()=>{b.value&&(m.value=!1)});const g=xe([]),A=oe(!1);Ve(v,()=>{A.value=!1});const C=et(async()=>{if(a.value)return at(new Ir(a.value))},null),F=new er(16);Rt(()=>[d.value,v.value,m.value],async([y,x,$],j,G)=>{var be,He,Ge,qe;(j==null?void 0:j[0])!==y&&F.clear();let q=!1;if(G(()=>{q=!0}),!y)return;g.value=y.search(x).slice(0,16),A.value=!0;const B=$?await Promise.all(g.value.map(Q=>L(Q.id))):[];if(q)return;for(const{id:Q,mod:ne}of B){const ae=Q.slice(0,Q.indexOf("#"));let te=F.get(ae);if(te)continue;te=new Map,F.set(ae,te);const X=ne.default??ne;if(X!=null&&X.render||X!=null&&X.setup){const ie=Gt(X);ie.config.warnHandler=()=>{},ie.provide(qt,i),Object.defineProperties(ie.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Qe=document.createElement("div");ie.mount(Qe),Qe.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(de=>{var Xe;const we=(Xe=de.querySelector("a"))==null?void 0:Xe.getAttribute("href"),Ye=(we==null?void 0:we.startsWith("#"))&&we.slice(1);if(!Ye)return;let Ze="";for(;(de=de.nextElementSibling)&&!/^h[1-6]$/i.test(de.tagName);)Ze+=de.outerHTML;te.set(Ye,Ze)}),ie.unmount()}if(q)return}const J=new Set;if(g.value=g.value.map(Q=>{const[ne,ae]=Q.id.split("#"),te=F.get(ne),X=(te==null?void 0:te.get(ae))??"";for(const ie in Q.match)J.add(ie);return{...Q,text:X}}),await he(),q)return;await new Promise(Q=>{var ne;(ne=C.value)==null||ne.unmark({done:()=>{var ae;(ae=C.value)==null||ae.markRegExp(M(J),{done:Q})}})});const Z=((be=r.value)==null?void 0:be.querySelectorAll(".result .excerpt"))??[];for(const Q of Z)(He=Q.querySelector('mark[data-markjs="true"]'))==null||He.scrollIntoView({block:"center"});(qe=(Ge=a.value)==null?void 0:Ge.firstElementChild)==null||qe.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function L(y){const x=Qt(y.slice(0,y.indexOf("#")));try{if(!x)throw new Error(`Cannot find file for id: ${y}`);return{id:y,mod:await pt(()=>import(x),__vite__mapDeps([]))}}catch($){return console.error($),{id:y,mod:{}}}}const R=oe(),V=Fe(()=>{var y;return((y=v.value)==null?void 0:y.length)<=0});function k(y=!0){var x,$;(x=R.value)==null||x.focus(),y&&(($=R.value)==null||$.select())}Oe(()=>{k()});function _(y){y.pointerType==="mouse"&&k()}const T=oe(-1),O=oe(!1);Ve(g,y=>{T.value=y.length?0:-1,w()});function w(){he(()=>{const y=document.querySelector(".result.selected");y&&y.scrollIntoView({block:"nearest"})})}Ee("ArrowUp",y=>{y.preventDefault(),T.value--,T.value<0&&(T.value=g.value.length-1),O.value=!0,w()}),Ee("ArrowDown",y=>{y.preventDefault(),T.value++,T.value>=g.value.length&&(T.value=0),O.value=!0,w()});const c=Mt();Ee("Enter",y=>{if(y.target instanceof HTMLButtonElement&&y.target.type!=="submit")return;const x=g.value[T.value];if(y.target instanceof HTMLInputElement&&!x){y.preventDefault();return}x&&(c.go(x.id),t("close"))}),Ee("Escape",()=>{t("close")});const p=Xt({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"}}});Oe(()=>{window.history.pushState(null,"",null)}),Lt("popstate",y=>{y.preventDefault(),t("close")});const N=Pt(zt?document.body:null);Oe(()=>{he(()=>{N.value=!0,he().then(()=>s())})}),Bt(()=>{N.value=!1});function I(){v.value="",he().then(()=>k(!1))}function M(y){return new RegExp([...y].sort((x,$)=>$.length-x.length).map(x=>`(${x.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")})`).join("|"),"gi")}return(y,x)=>{var $,j,G,q;return ee(),Vt(Jt,{to:"body"},[E("div",{ref_key:"el",ref:r,role:"button","aria-owns":($=g.value)!=null&&$.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[E("div",{class:"backdrop",onClick:x[0]||(x[0]=B=>y.$emit("close"))}),E("div",Ur,[E("form",{class:"search-bar",onPointerup:x[4]||(x[4]=B=>_(B)),onSubmit:x[5]||(x[5]=$t(()=>{},["prevent"]))},[E("label",{title:S.value,id:"localsearch-label",for:"localsearch-input"},qr,8,Hr),E("div",Qr,[E("button",{class:"back-button",title:U(p)("modal.backButtonTitle"),onClick:x[1]||(x[1]=B=>y.$emit("close"))},Xr,8,Yr)]),Wt(E("input",{ref_key:"searchInput",ref:R,"onUpdate:modelValue":x[2]||(x[2]=B=>Kt(v)?v.value=B:null),placeholder:S.value,id:"localsearch-input","aria-labelledby":"localsearch-label",class:"search-input"},null,8,en),[[jt,U(v)]]),E("div",tn,[b.value?Se("",!0):(ee(),re("button",{key:0,class:tt(["toggle-layout-button",{"detailed-list":U(m)}]),type:"button",title:U(p)("modal.displayDetails"),onClick:x[3]||(x[3]=B=>T.value>-1&&(m.value=!U(m)))},an,10,rn)),E("button",{class:"clear-button",type:"reset",disabled:V.value,title:U(p)("modal.resetButtonTitle"),onClick:I},un,8,on)])],32),E("ul",{ref_key:"resultsEl",ref:a,id:(j=g.value)!=null&&j.length?"localsearch-list":void 0,role:(G=g.value)!=null&&G.length?"listbox":void 0,"aria-labelledby":(q=g.value)!=null&&q.length?"localsearch-label":void 0,class:"results",onMousemove:x[7]||(x[7]=B=>O.value=!1)},[(ee(!0),re(nt,null,rt(g.value,(B,J)=>(ee(),re("li",{key:B.id,role:"option","aria-selected":T.value===J?"true":"false"},[E("a",{href:B.id,class:tt(["result",{selected:T.value===J}]),"aria-label":[...B.titles,B.title].join(" > "),onMouseenter:Z=>!O.value&&(T.value=J),onFocusin:Z=>T.value=J,onClick:x[6]||(x[6]=Z=>y.$emit("close"))},[E("div",null,[E("div",dn,[hn,(ee(!0),re(nt,null,rt(B.titles,(Z,be)=>(ee(),re("span",{key:be,class:"title"},[E("span",{class:"text",innerHTML:Z},null,8,vn),pn]))),128)),E("span",mn,[E("span",{class:"text",innerHTML:B.title},null,8,yn)])]),U(m)?(ee(),re("div",gn,[B.text?(ee(),re("div",bn,[E("div",{class:"vp-doc",innerHTML:B.text},null,8,wn)])):Se("",!0),xn,Fn])):Se("",!0)])],42,fn)],8,cn))),128)),U(v)&&!g.value.length&&A.value?(ee(),re("li",En,[ve(pe(U(p)("modal.noResultsText"))+' "',1),E("strong",null,pe(U(v)),1),ve('" ')])):Se("",!0)],40,ln),E("div",Sn,[E("span",null,[E("kbd",{"aria-label":U(p)("modal.footer.navigateUpKeyAriaLabel")},Cn,8,An),E("kbd",{"aria-label":U(p)("modal.footer.navigateDownKeyAriaLabel")},In,8,kn),ve(" "+pe(U(p)("modal.footer.navigateText")),1)]),E("span",null,[E("kbd",{"aria-label":U(p)("modal.footer.selectKeyAriaLabel")},_n,8,Dn),ve(" "+pe(U(p)("modal.footer.selectText")),1)]),E("span",null,[E("kbd",{"aria-label":U(p)("modal.footer.closeKeyAriaLabel")},"esc",8,Rn),ve(" "+pe(U(p)("modal.footer.closeText")),1)])])])],8,Jr)])}}}),Vn=Yt(Mn,[["__scopeId","data-v-23c6f8fc"]]);export{Vn as default}; +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = [] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} \ No newline at end of file diff --git a/assets/chunks/framework.BZkFhLI2.js b/assets/chunks/framework.BZkFhLI2.js new file mode 100644 index 00000000..c25d85fe --- /dev/null +++ b/assets/chunks/framework.BZkFhLI2.js @@ -0,0 +1 @@ +function _i(e,t){const n=new Set(e.split(","));return t?i=>n.has(i.toLowerCase()):i=>n.has(i)}const ee={},_t=[],Ee=()=>{},br=()=>!1,Wt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),bi=e=>e.startsWith("onUpdate:"),ae=Object.assign,wi=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},wr=Object.prototype.hasOwnProperty,J=(e,t)=>wr.call(e,t),U=Array.isArray,bt=e=>An(e)==="[object Map]",zs=e=>An(e)==="[object Set]",W=e=>typeof e=="function",ne=e=>typeof e=="string",Rt=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",Gs=e=>(Z(e)||W(e))&&W(e.then)&&W(e.catch),Ys=Object.prototype.toString,An=e=>Ys.call(e),Cr=e=>An(e).slice(8,-1),Js=e=>An(e)==="[object Object]",Ci=e=>ne(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,It=_i(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Sn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Er=/-(\w)/g,Fe=Sn(e=>e.replace(Er,(t,n)=>n?n.toUpperCase():"")),Tr=/\B([A-Z])/g,pt=Sn(e=>e.replace(Tr,"-$1").toLowerCase()),jn=Sn(e=>e.charAt(0).toUpperCase()+e.slice(1)),dn=Sn(e=>e?`on${jn(e)}`:""),et=(e,t)=>!Object.is(e,t),mn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},ii=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Ar=e=>{const t=ne(e)?Number(e):NaN;return isNaN(t)?e:t};let Xi;const Xs=()=>Xi||(Xi=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ei(e){if(U(e)){const t={};for(let n=0;n{if(n){const i=n.split(jr);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function Ti(e){let t="";if(ne(e))t=e;else if(U(e))for(let n=0;nne(e)?e:e==null?"":U(e)||Z(e)&&(e.toString===Ys||!W(e.toString))?JSON.stringify(e,Zs,2):String(e),Zs=(e,t)=>t&&t.__v_isRef?Zs(e,t.value):bt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[i,s],o)=>(n[Kn(i,o)+" =>"]=s,n),{})}:zs(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Kn(n))}:Rt(t)?Kn(t):Z(t)&&!U(t)&&!Js(t)?String(t):t,Kn=(e,t="")=>{var n;return Rt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let ve;class Pr{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=ve,!t&&ve&&(this.index=(ve.scopes||(ve.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=ve;try{return ve=this,t()}finally{ve=n}}}on(){ve=this}off(){ve=this.parent}stop(t){if(this._active){let n,i;for(n=0,i=this.effects.length;n=2))break;mt(),this._queryings--}return this._dirtyLevel>=2}set dirty(t){this._dirtyLevel=t?3:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Ye,n=at;try{return Ye=!0,at=this,this._runnings++,Qi(this),this.fn()}finally{Zi(this),this._runnings--,at=n,Ye=t}}stop(){var t;this.active&&(Qi(this),Zi(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function Nr(e){return e.value}function Qi(e){e._trackId++,e._depsLength=0}function Zi(e){if(e.deps&&e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},yn=new WeakMap,ct=Symbol(""),ri=Symbol("");function xe(e,t,n){if(Ye&&at){let i=yn.get(e);i||yn.set(e,i=new Map);let s=i.get(n);s||i.set(n,s=oo(()=>i.delete(n))),io(at,s)}}function Ve(e,t,n,i,s,o){const r=yn.get(e);if(!r)return;let l=[];if(t==="clear")l=[...r.values()];else if(n==="length"&&U(e)){const a=Number(i);r.forEach((c,f)=>{(f==="length"||!Rt(f)&&f>=a)&&l.push(c)})}else switch(n!==void 0&&l.push(r.get(n)),t){case"add":U(e)?Ci(n)&&l.push(r.get("length")):(l.push(r.get(ct)),bt(e)&&l.push(r.get(ri)));break;case"delete":U(e)||(l.push(r.get(ct)),bt(e)&&l.push(r.get(ri)));break;case"set":bt(e)&&l.push(r.get(ct));break}Si();for(const a of l)a&&so(a,3);ji()}function kr(e,t){var n;return(n=yn.get(e))==null?void 0:n.get(t)}const $r=_i("__proto__,__v_isRef,__isVue"),ro=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Rt)),es=Hr();function Hr(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const i=X(this);for(let o=0,r=this.length;o{e[t]=function(...n){dt(),Si();const i=X(this)[t].apply(this,n);return ji(),mt(),i}}),e}function Vr(e){const t=X(this);return xe(t,"has",e),t.hasOwnProperty(e)}class lo{constructor(t=!1,n=!1){this._isReadonly=t,this._shallow=n}get(t,n,i){const s=this._isReadonly,o=this._shallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return i===(s?o?Zr:fo:o?uo:co).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(i)?t:void 0;const r=U(t);if(!s){if(r&&J(es,n))return Reflect.get(es,n,i);if(n==="hasOwnProperty")return Vr}const l=Reflect.get(t,n,i);return(Rt(n)?ro.has(n):$r(n))||(s||xe(t,"get",n),o)?l:pe(l)?r&&Ci(n)?l:l.value:Z(l)?s?Mn(l):Ln(l):l}}class ao extends lo{constructor(t=!1){super(!1,t)}set(t,n,i,s){let o=t[n];if(!this._shallow){const a=At(o);if(!yt(i)&&!At(i)&&(o=X(o),i=X(i)),!U(t)&&pe(o)&&!pe(i))return a?!1:(o.value=i,!0)}const r=U(t)&&Ci(n)?Number(n)e,Rn=e=>Reflect.getPrototypeOf(e);function Qt(e,t,n=!1,i=!1){e=e.__v_raw;const s=X(e),o=X(t);n||(et(t,o)&&xe(s,"get",t),xe(s,"get",o));const{has:r}=Rn(s),l=i?Ri:n?Oi:Dt;if(r.call(s,t))return l(e.get(t));if(r.call(s,o))return l(e.get(o));e!==s&&e.get(t)}function Zt(e,t=!1){const n=this.__v_raw,i=X(n),s=X(e);return t||(et(e,s)&&xe(i,"has",e),xe(i,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function en(e,t=!1){return e=e.__v_raw,!t&&xe(X(e),"iterate",ct),Reflect.get(e,"size",e)}function ts(e){e=X(e);const t=X(this);return Rn(t).has.call(t,e)||(t.add(e),Ve(t,"add",e,e)),this}function ns(e,t){t=X(t);const n=X(this),{has:i,get:s}=Rn(n);let o=i.call(n,e);o||(e=X(e),o=i.call(n,e));const r=s.call(n,e);return n.set(e,t),o?et(t,r)&&Ve(n,"set",e,t):Ve(n,"add",e,t),this}function is(e){const t=X(this),{has:n,get:i}=Rn(t);let s=n.call(t,e);s||(e=X(e),s=n.call(t,e)),i&&i.call(t,e);const o=t.delete(e);return s&&Ve(t,"delete",e,void 0),o}function ss(){const e=X(this),t=e.size!==0,n=e.clear();return t&&Ve(e,"clear",void 0,void 0),n}function tn(e,t){return function(i,s){const o=this,r=o.__v_raw,l=X(r),a=t?Ri:e?Oi:Dt;return!e&&xe(l,"iterate",ct),r.forEach((c,f)=>i.call(s,a(c),a(f),o))}}function nn(e,t,n){return function(...i){const s=this.__v_raw,o=X(s),r=bt(o),l=e==="entries"||e===Symbol.iterator&&r,a=e==="keys"&&r,c=s[e](...i),f=n?Ri:t?Oi:Dt;return!t&&xe(o,"iterate",a?ri:ct),{next(){const{value:d,done:m}=c.next();return m?{value:d,done:m}:{value:l?[f(d[0]),f(d[1])]:f(d),done:m}},[Symbol.iterator](){return this}}}}function Be(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function qr(){const e={get(o){return Qt(this,o)},get size(){return en(this)},has:Zt,add:ts,set:ns,delete:is,clear:ss,forEach:tn(!1,!1)},t={get(o){return Qt(this,o,!1,!0)},get size(){return en(this)},has:Zt,add:ts,set:ns,delete:is,clear:ss,forEach:tn(!1,!0)},n={get(o){return Qt(this,o,!0)},get size(){return en(this,!0)},has(o){return Zt.call(this,o,!0)},add:Be("add"),set:Be("set"),delete:Be("delete"),clear:Be("clear"),forEach:tn(!0,!1)},i={get(o){return Qt(this,o,!0,!0)},get size(){return en(this,!0)},has(o){return Zt.call(this,o,!0)},add:Be("add"),set:Be("set"),delete:Be("delete"),clear:Be("clear"),forEach:tn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=nn(o,!1,!1),n[o]=nn(o,!0,!1),t[o]=nn(o,!1,!0),i[o]=nn(o,!0,!0)}),[e,n,t,i]}const[Wr,zr,Gr,Yr]=qr();function Li(e,t){const n=t?e?Yr:Gr:e?zr:Wr;return(i,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?i:Reflect.get(J(n,s)&&s in i?n:i,s,o)}const Jr={get:Li(!1,!1)},Xr={get:Li(!1,!0)},Qr={get:Li(!0,!1)},co=new WeakMap,uo=new WeakMap,fo=new WeakMap,Zr=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(Cr(e))}function Ln(e){return At(e)?e:Mi(e,!1,Br,Jr,co)}function nl(e){return Mi(e,!1,Kr,Xr,uo)}function Mn(e){return Mi(e,!0,Ur,Qr,fo)}function Mi(e,t,n,i,s){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const r=tl(e);if(r===0)return e;const l=new Proxy(e,r===2?i:n);return s.set(e,l),l}function wt(e){return At(e)?wt(e.__v_raw):!!(e&&e.__v_isReactive)}function At(e){return!!(e&&e.__v_isReadonly)}function yt(e){return!!(e&&e.__v_isShallow)}function po(e){return wt(e)||At(e)}function X(e){const t=e&&e.__v_raw;return t?X(t):e}function Ft(e){return xn(e,"__v_skip",!0),e}const Dt=e=>Z(e)?Ln(e):e,Oi=e=>Z(e)?Mn(e):e;class mo{constructor(t,n,i,s){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Ai(()=>t(this._value),()=>vn(this,1)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=i}get value(){const t=X(this);return Pi(t),(!t._cacheable||t.effect.dirty)&&et(t._value,t._value=t.effect.run())&&vn(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function il(e,t,n=!1){let i,s;const o=W(e);return o?(i=e,s=Ee):(i=e.get,s=e.set),new mo(i,s,o||!s,n)}function Pi(e){Ye&&at&&(e=X(e),io(at,e.dep||(e.dep=oo(()=>e.dep=void 0,e instanceof mo?e:void 0))))}function vn(e,t=3,n){e=X(e);const i=e.dep;i&&so(i,t)}function pe(e){return!!(e&&e.__v_isRef===!0)}function le(e){return ho(e,!1)}function Ii(e){return ho(e,!0)}function ho(e,t){return pe(e)?e:new sl(e,t)}class sl{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:X(t),this._value=n?t:Dt(t)}get value(){return Pi(this),this._value}set value(t){const n=this.__v_isShallow||yt(t)||At(t);t=n?t:X(t),et(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Dt(t),vn(this,3))}}function go(e){return pe(e)?e.value:e}const ol={get:(e,t,n)=>go(Reflect.get(e,t,n)),set:(e,t,n,i)=>{const s=e[t];return pe(s)&&!pe(n)?(s.value=n,!0):Reflect.set(e,t,n,i)}};function xo(e){return wt(e)?e:new Proxy(e,ol)}class rl{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:i}=t(()=>Pi(this),()=>vn(this));this._get=n,this._set=i}get value(){return this._get()}set value(t){this._set(t)}}function ll(e){return new rl(e)}class al{constructor(t,n,i){this._object=t,this._key=n,this._defaultValue=i,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return kr(X(this._object),this._key)}}class cl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function ul(e,t,n){return pe(e)?e:W(e)?new cl(e):Z(e)&&arguments.length>1?fl(e,t,n):le(e)}function fl(e,t,n){const i=e[t];return pe(i)?i:new al(e,t,n)}function Je(e,t,n,i){let s;try{s=i?e(...i):e()}catch(o){zt(o,t,n)}return s}function Te(e,t,n,i){if(W(e)){const o=Je(e,t,n,i);return o&&Gs(o)&&o.catch(r=>{zt(r,t,n)}),o}const s=[];for(let o=0;o>>1,s=de[i],o=Ut(s);oPe&&de.splice(t,1)}function hl(e){U(e)?Ct.push(...e):(!$e||!$e.includes(e,e.allowRecurse?rt+1:rt))&&Ct.push(e),vo()}function os(e,t,n=Bt?Pe+1:0){for(;nUt(n)-Ut(i)),rt=0;rt<$e.length;rt++)$e[rt]();$e=null,rt=0}}const Ut=e=>e.id==null?1/0:e.id,gl=(e,t)=>{const n=Ut(e)-Ut(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function _o(e){li=!1,Bt=!0,de.sort(gl);try{for(Pe=0;Pene(x)?x.trim():x)),d&&(s=n.map(ii))}let l,a=i[l=dn(t)]||i[l=dn(Fe(t))];!a&&o&&(a=i[l=dn(pt(t))]),a&&Te(a,e,6,s);const c=i[l+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Te(c,e,6,s)}}function bo(e,t,n=!1){const i=t.emitsCache,s=i.get(e);if(s!==void 0)return s;const o=e.emits;let r={},l=!1;if(!W(e)){const a=c=>{const f=bo(c,t,!0);f&&(l=!0,ae(r,f))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!o&&!l?(Z(e)&&i.set(e,null),null):(U(o)?o.forEach(a=>r[a]=null):ae(r,o),Z(e)&&i.set(e,r),r)}function In(e,t){return!e||!Wt(t)?!1:(t=t.slice(2).replace(/Once$/,""),J(e,t[0].toLowerCase()+t.slice(1))||J(e,pt(t))||J(e,t))}let fe=null,Fn=null;function bn(e){const t=fe;return fe=e,Fn=e&&e.type.__scopeId||null,t}function Wc(e){Fn=e}function zc(){Fn=null}function yl(e,t=fe,n){if(!t||e._n)return e;const i=(...s)=>{i._d&&vs(-1);const o=bn(t);let r;try{r=e(...s)}finally{bn(o),i._d&&vs(1)}return r};return i._n=!0,i._c=!0,i._d=!0,i}function qn(e){const{type:t,vnode:n,proxy:i,withProxy:s,props:o,propsOptions:[r],slots:l,attrs:a,emit:c,render:f,renderCache:d,data:m,setupState:x,ctx:b,inheritAttrs:j}=e;let I,D;const B=bn(e);try{if(n.shapeFlag&4){const y=s||i,C=y;I=Se(f.call(C,y,d,o,x,m,b)),D=a}else{const y=t;I=Se(y.length>1?y(o,{attrs:a,slots:l,emit:c}):y(o,null)),D=t.props?a:vl(a)}}catch(y){Ht.length=0,zt(y,e,1),I=se(_e)}let h=I;if(D&&j!==!1){const y=Object.keys(D),{shapeFlag:C}=h;y.length&&C&7&&(r&&y.some(bi)&&(D=_l(D,r)),h=tt(h,D))}return n.dirs&&(h=tt(h),h.dirs=h.dirs?h.dirs.concat(n.dirs):n.dirs),n.transition&&(h.transition=n.transition),I=h,bn(B),I}const vl=e=>{let t;for(const n in e)(n==="class"||n==="style"||Wt(n))&&((t||(t={}))[n]=e[n]);return t},_l=(e,t)=>{const n={};for(const i in e)(!bi(i)||!(i.slice(9)in t))&&(n[i]=e[i]);return n};function bl(e,t,n){const{props:i,children:s,component:o}=e,{props:r,children:l,patchFlag:a}=t,c=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return i?rs(i,r,c):!!r;if(a&8){const f=t.dynamicProps;for(let d=0;de.__isSuspense;function Eo(e,t){t&&t.pendingBranch?U(e)?t.effects.push(...e):t.effects.push(e):hl(e)}const El=Symbol.for("v-scx"),Tl=()=>Tt(El);function ki(e,t){return Nn(e,null,t)}function Jc(e,t){return Nn(e,null,{flush:"post"})}const sn={};function Xe(e,t,n){return Nn(e,t,n)}function Nn(e,t,{immediate:n,deep:i,flush:s,once:o,onTrack:r,onTrigger:l}=ee){var a;if(t&&o){const C=t;t=(...$)=>{C(...$),y()}}const c=eo()===((a=re)==null?void 0:a.scope)?re:null;let f,d=!1,m=!1;if(pe(e)?(f=()=>e.value,d=yt(e)):wt(e)?(f=yt(e)||i===!1?()=>He(e,1):()=>He(e),d=!0):U(e)?(m=!0,d=e.some(C=>wt(C)||yt(C)),f=()=>e.map(C=>{if(pe(C))return C.value;if(wt(C))return He(C,yt(C)||i===!1?1:void 0);if(W(C))return Je(C,c,2)})):W(e)?t?f=()=>Je(e,c,2):f=()=>{if(!(c&&c.isUnmounted))return x&&x(),Te(e,c,3,[b])}:f=Ee,t&&i){const C=f;f=()=>He(C())}let x,b=C=>{x=h.onStop=()=>{Je(C,c,4),x=h.onStop=void 0}},j;if(Yt)if(b=Ee,t?n&&Te(t,c,3,[f(),m?[]:void 0,b]):f(),s==="sync"){const C=Tl();j=C.__watcherHandles||(C.__watcherHandles=[])}else return Ee;let I=m?new Array(e.length).fill(sn):sn;const D=()=>{if(!(!h.active||!h.dirty))if(t){const C=h.run();(i||d||(m?C.some(($,F)=>et($,I[F])):et(C,I)))&&(x&&x(),Te(t,c,3,[C,I===sn?void 0:m&&I[0]===sn?[]:I,b]),I=C)}else h.run()};D.allowRecurse=!!t;let B;s==="sync"?B=D:s==="post"?B=()=>he(D,c&&c.suspense):(D.pre=!0,c&&(D.id=c.uid),B=()=>Pn(D));const h=new Ai(f,Ee,B),y=()=>{h.stop(),c&&c.scope&&wi(c.scope.effects,h)};return t?n?D():I=h.run():s==="post"?he(h.run.bind(h),c&&c.suspense):h.run(),j&&j.push(y),y}function Al(e,t,n){const i=this.proxy,s=ne(e)?e.includes(".")?To(i,e):()=>i[e]:e.bind(i,i);let o;W(t)?o=t:(o=t.handler,n=t);const r=re;jt(this);const l=Nn(s,o.bind(i),n);return r?jt(r):ut(),l}function To(e,t){const n=t.split(".");return()=>{let i=e;for(let s=0;s0){if(n>=t)return e;n++}if(i=i||new Set,i.has(e))return e;if(i.add(e),pe(e))He(e.value,t,n,i);else if(U(e))for(let s=0;s{He(s,t,n,i)});else if(Js(e))for(const s in e)He(e[s],t,n,i);return e}function Xc(e,t){const n=fe;if(n===null)return e;const i=Dn(n)||n.proxy,s=e.dirs||(e.dirs=[]);for(let o=0;o{e.isMounted=!0}),Lo(()=>{e.isUnmounting=!0}),e}const be=[Function,Array],Ao={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:be,onEnter:be,onAfterEnter:be,onEnterCancelled:be,onBeforeLeave:be,onLeave:be,onAfterLeave:be,onLeaveCancelled:be,onBeforeAppear:be,onAppear:be,onAfterAppear:be,onAppearCancelled:be},jl={name:"BaseTransition",props:Ao,setup(e,{slots:t}){const n=Vn(),i=Sl();let s;return()=>{const o=t.default&&jo(t.default(),!0);if(!o||!o.length)return;let r=o[0];if(o.length>1){for(const j of o)if(j.type!==_e){r=j;break}}const l=X(e),{mode:a}=l;if(i.isLeaving)return Wn(r);const c=as(r);if(!c)return Wn(r);const f=ai(c,l,i,n);ci(c,f);const d=n.subTree,m=d&&as(d);let x=!1;const{getTransitionKey:b}=c.type;if(b){const j=b();s===void 0?s=j:j!==s&&(s=j,x=!0)}if(m&&m.type!==_e&&(!lt(c,m)||x)){const j=ai(m,l,i,n);if(ci(m,j),a==="out-in")return i.isLeaving=!0,j.afterLeave=()=>{i.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},Wn(r);a==="in-out"&&c.type!==_e&&(j.delayLeave=(I,D,B)=>{const h=So(i,m);h[String(m.key)]=m,I[We]=()=>{D(),I[We]=void 0,delete f.delayedLeave},f.delayedLeave=B})}return r}}},Rl=jl;function So(e,t){const{leavingVNodes:n}=e;let i=n.get(t.type);return i||(i=Object.create(null),n.set(t.type,i)),i}function ai(e,t,n,i){const{appear:s,mode:o,persisted:r=!1,onBeforeEnter:l,onEnter:a,onAfterEnter:c,onEnterCancelled:f,onBeforeLeave:d,onLeave:m,onAfterLeave:x,onLeaveCancelled:b,onBeforeAppear:j,onAppear:I,onAfterAppear:D,onAppearCancelled:B}=t,h=String(e.key),y=So(n,e),C=(L,A)=>{L&&Te(L,i,9,A)},$=(L,A)=>{const S=A[1];C(L,A),U(L)?L.every(K=>K.length<=1)&&S():L.length<=1&&S()},F={mode:o,persisted:r,beforeEnter(L){let A=l;if(!n.isMounted)if(s)A=j||l;else return;L[We]&&L[We](!0);const S=y[h];S&<(e,S)&&S.el[We]&&S.el[We](),C(A,[L])},enter(L){let A=a,S=c,K=f;if(!n.isMounted)if(s)A=I||a,S=D||c,K=B||f;else return;let O=!1;const z=L[on]=oe=>{O||(O=!0,oe?C(K,[L]):C(S,[L]),F.delayedLeave&&F.delayedLeave(),L[on]=void 0)};A?$(A,[L,z]):z()},leave(L,A){const S=String(e.key);if(L[on]&&L[on](!0),n.isUnmounting)return A();C(d,[L]);let K=!1;const O=L[We]=z=>{K||(K=!0,A(),z?C(b,[L]):C(x,[L]),L[We]=void 0,y[S]===e&&delete y[S])};y[S]=e,m?$(m,[L,O]):O()},clone(L){return ai(L,t,n,i)}};return F}function Wn(e){if(Gt(e))return e=tt(e),e.children=null,e}function as(e){return Gt(e)?e.children?e.children[0]:void 0:e}function ci(e,t){e.shapeFlag&6&&e.component?ci(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 jo(e,t=!1,n){let i=[],s=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function Qc(e){W(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:i,delay:s=200,timeout:o,suspensible:r=!0,onError:l}=e;let a=null,c,f=0;const d=()=>(f++,a=null,m()),m=()=>{let x;return a||(x=a=t().catch(b=>{if(b=b instanceof Error?b:new Error(String(b)),l)return new Promise((j,I)=>{l(b,()=>j(d()),()=>I(b),f+1)});throw b}).then(b=>x!==a&&a?a:(b&&(b.__esModule||b[Symbol.toStringTag]==="Module")&&(b=b.default),c=b,b)))};return $i({name:"AsyncComponentWrapper",__asyncLoader:m,get __asyncResolved(){return c},setup(){const x=re;if(c)return()=>zn(c,x);const b=B=>{a=null,zt(B,x,13,!i)};if(r&&x.suspense||Yt)return m().then(B=>()=>zn(B,x)).catch(B=>(b(B),()=>i?se(i,{error:B}):null));const j=le(!1),I=le(),D=le(!!s);return s&&setTimeout(()=>{D.value=!1},s),o!=null&&setTimeout(()=>{if(!j.value&&!I.value){const B=new Error(`Async component timed out after ${o}ms.`);b(B),I.value=B}},o),m().then(()=>{j.value=!0,x.parent&&Gt(x.parent.vnode)&&(x.parent.effect.dirty=!0,Pn(x.parent.update))}).catch(B=>{b(B),I.value=B}),()=>{if(j.value&&c)return zn(c,x);if(I.value&&i)return se(i,{error:I.value});if(n&&!D.value)return se(n)}}})}function zn(e,t){const{ref:n,props:i,children:s,ce:o}=t.vnode,r=se(e,i,s);return r.ref=n,r.ce=o,delete t.vnode.ce,r}const Gt=e=>e.type.__isKeepAlive;function Ll(e,t){Ro(e,"a",t)}function Ml(e,t){Ro(e,"da",t)}function Ro(e,t,n=re){const i=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(kn(t,i,n),n){let s=n.parent;for(;s&&s.parent;)Gt(s.parent.vnode)&&Ol(i,t,n,s),s=s.parent}}function Ol(e,t,n,i){const s=kn(t,e,i,!0);$n(()=>{wi(i[t],s)},n)}function kn(e,t,n=re,i=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...r)=>{if(n.isUnmounted)return;dt(),jt(n);const l=Te(t,n,e,r);return ut(),mt(),l});return i?s.unshift(o):s.push(o),o}}const De=e=>(t,n=re)=>(!Yt||e==="sp")&&kn(e,(...i)=>t(...i),n),Pl=De("bm"),Lt=De("m"),Il=De("bu"),Fl=De("u"),Lo=De("bum"),$n=De("um"),Nl=De("sp"),kl=De("rtg"),$l=De("rtc");function Hl(e,t=re){kn("ec",e,t)}function Zc(e,t,n,i){let s;const o=n&&n[i];if(U(e)||ne(e)){s=new Array(e.length);for(let r=0,l=e.length;rt(r,l,void 0,o&&o[l]));else{const r=Object.keys(e);s=new Array(r.length);for(let l=0,a=r.length;lTn(t)?!(t.type===_e||t.type===ge&&!Mo(t.children)):!0)?e:null}function tu(e,t){const n={};for(const i in e)n[t&&/[A-Z]/.test(i)?`on:${i}`:dn(i)]=e[i];return n}const ui=e=>e?Yo(e)?Dn(e)||e.proxy:ui(e.parent):null,Nt=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=>ui(e.parent),$root:e=>ui(e.root),$emit:e=>e.emit,$options:e=>Hi(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Pn(e.update)}),$nextTick:e=>e.n||(e.n=On.bind(e.proxy)),$watch:e=>Al.bind(e)}),Gn=(e,t)=>e!==ee&&!e.__isScriptSetup&&J(e,t),Vl={get({_:e},t){const{ctx:n,setupState:i,data:s,props:o,accessCache:r,type:l,appContext:a}=e;let c;if(t[0]!=="$"){const x=r[t];if(x!==void 0)switch(x){case 1:return i[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(Gn(i,t))return r[t]=1,i[t];if(s!==ee&&J(s,t))return r[t]=2,s[t];if((c=e.propsOptions[0])&&J(c,t))return r[t]=3,o[t];if(n!==ee&&J(n,t))return r[t]=4,n[t];fi&&(r[t]=0)}}const f=Nt[t];let d,m;if(f)return t==="$attrs"&&xe(e,"get",t),f(e);if((d=l.__cssModules)&&(d=d[t]))return d;if(n!==ee&&J(n,t))return r[t]=4,n[t];if(m=a.config.globalProperties,J(m,t))return m[t]},set({_:e},t,n){const{data:i,setupState:s,ctx:o}=e;return Gn(s,t)?(s[t]=n,!0):i!==ee&&J(i,t)?(i[t]=n,!0):J(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:i,appContext:s,propsOptions:o}},r){let l;return!!n[r]||e!==ee&&J(e,r)||Gn(t,r)||(l=o[0])&&J(l,r)||J(i,r)||J(Nt,r)||J(s.config.globalProperties,r)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:J(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function nu(){return Dl().slots}function Dl(){const e=Vn();return e.setupContext||(e.setupContext=Xo(e))}function cs(e){return U(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let fi=!0;function Bl(e){const t=Hi(e),n=e.proxy,i=e.ctx;fi=!1,t.beforeCreate&&us(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:r,watch:l,provide:a,inject:c,created:f,beforeMount:d,mounted:m,beforeUpdate:x,updated:b,activated:j,deactivated:I,beforeDestroy:D,beforeUnmount:B,destroyed:h,unmounted:y,render:C,renderTracked:$,renderTriggered:F,errorCaptured:L,serverPrefetch:A,expose:S,inheritAttrs:K,components:O,directives:z,filters:oe}=t;if(c&&Ul(c,i,null),r)for(const Y in r){const k=r[Y];W(k)&&(i[Y]=k.bind(n))}if(s){const Y=s.call(n,n);Z(Y)&&(e.data=Ln(Y))}if(fi=!0,o)for(const Y in o){const k=o[Y],Ne=W(k)?k.bind(n,n):W(k.get)?k.get.bind(n,n):Ee,Jt=!W(k)&&W(k.set)?k.set.bind(n):Ee,nt=ie({get:Ne,set:Jt});Object.defineProperty(i,Y,{enumerable:!0,configurable:!0,get:()=>nt.value,set:Le=>nt.value=Le})}if(l)for(const Y in l)Oo(l[Y],i,n,Y);if(a){const Y=W(a)?a.call(n):a;Reflect.ownKeys(Y).forEach(k=>{Yl(k,Y[k])})}f&&us(f,e,"c");function H(Y,k){U(k)?k.forEach(Ne=>Y(Ne.bind(n))):k&&Y(k.bind(n))}if(H(Pl,d),H(Lt,m),H(Il,x),H(Fl,b),H(Ll,j),H(Ml,I),H(Hl,L),H($l,$),H(kl,F),H(Lo,B),H($n,y),H(Nl,A),U(S))if(S.length){const Y=e.exposed||(e.exposed={});S.forEach(k=>{Object.defineProperty(Y,k,{get:()=>n[k],set:Ne=>n[k]=Ne})})}else e.exposed||(e.exposed={});C&&e.render===Ee&&(e.render=C),K!=null&&(e.inheritAttrs=K),O&&(e.components=O),z&&(e.directives=z)}function Ul(e,t,n=Ee){U(e)&&(e=pi(e));for(const i in e){const s=e[i];let o;Z(s)?"default"in s?o=Tt(s.from||i,s.default,!0):o=Tt(s.from||i):o=Tt(s),pe(o)?Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>o.value,set:r=>o.value=r}):t[i]=o}}function us(e,t,n){Te(U(e)?e.map(i=>i.bind(t.proxy)):e.bind(t.proxy),t,n)}function Oo(e,t,n,i){const s=i.includes(".")?To(n,i):()=>n[i];if(ne(e)){const o=t[e];W(o)&&Xe(s,o)}else if(W(e))Xe(s,e.bind(n));else if(Z(e))if(U(e))e.forEach(o=>Oo(o,t,n,i));else{const o=W(e.handler)?e.handler.bind(n):t[e.handler];W(o)&&Xe(s,o,e)}}function Hi(e){const t=e.type,{mixins:n,extends:i}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:r}}=e.appContext,l=o.get(t);let a;return l?a=l:!s.length&&!n&&!i?a=t:(a={},s.length&&s.forEach(c=>wn(a,c,r,!0)),wn(a,t,r)),Z(t)&&o.set(t,a),a}function wn(e,t,n,i=!1){const{mixins:s,extends:o}=t;o&&wn(e,o,n,!0),s&&s.forEach(r=>wn(e,r,n,!0));for(const r in t)if(!(i&&r==="expose")){const l=Kl[r]||n&&n[r];e[r]=l?l(e[r],t[r]):t[r]}return e}const Kl={data:fs,props:ps,emits:ps,methods:Pt,computed:Pt,beforeCreate:me,created:me,beforeMount:me,mounted:me,beforeUpdate:me,updated:me,beforeDestroy:me,beforeUnmount:me,destroyed:me,unmounted:me,activated:me,deactivated:me,errorCaptured:me,serverPrefetch:me,components:Pt,directives:Pt,watch:Wl,provide:fs,inject:ql};function fs(e,t){return t?e?function(){return ae(W(e)?e.call(this,this):e,W(t)?t.call(this,this):t)}:t:e}function ql(e,t){return Pt(pi(e),pi(t))}function pi(e){if(U(e)){const t={};for(let n=0;n1)return n&&W(t)?t.call(i&&i.proxy):t}}function Jl(e,t,n,i=!1){const s={},o={};xn(o,Hn,1),e.propsDefaults=Object.create(null),Io(e,t,s,o);for(const r in e.propsOptions[0])r in s||(s[r]=void 0);n?e.props=i?s:nl(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function Xl(e,t,n,i){const{props:s,attrs:o,vnode:{patchFlag:r}}=e,l=X(s),[a]=e.propsOptions;let c=!1;if((i||r>0)&&!(r&16)){if(r&8){const f=e.vnode.dynamicProps;for(let d=0;d{a=!0;const[m,x]=Fo(d,t,!0);ae(r,m),x&&l.push(...x)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!a)return Z(e)&&i.set(e,_t),_t;if(U(o))for(let f=0;f-1,x[1]=j<0||b-1||J(x,"default"))&&l.push(d)}}}const c=[r,l];return Z(e)&&i.set(e,c),c}function ds(e){return e[0]!=="$"}function ms(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function hs(e,t){return ms(e)===ms(t)}function gs(e,t){return U(t)?t.findIndex(n=>hs(n,e)):W(t)&&hs(t,e)?0:-1}const No=e=>e[0]==="_"||e==="$stable",Vi=e=>U(e)?e.map(Se):[Se(e)],Ql=(e,t,n)=>{if(t._n)return t;const i=yl((...s)=>Vi(t(...s)),n);return i._c=!1,i},ko=(e,t,n)=>{const i=e._ctx;for(const s in e){if(No(s))continue;const o=e[s];if(W(o))t[s]=Ql(s,o,i);else if(o!=null){const r=Vi(o);t[s]=()=>r}}},$o=(e,t)=>{const n=Vi(t);e.slots.default=()=>n},Zl=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=X(t),xn(t,"_",n)):ko(t,e.slots={})}else e.slots={},t&&$o(e,t);xn(e.slots,Hn,1)},ea=(e,t,n)=>{const{vnode:i,slots:s}=e;let o=!0,r=ee;if(i.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(ae(s,t),!n&&l===1&&delete s._):(o=!t.$stable,ko(t,s)),r=t}else t&&($o(e,t),r={default:1});if(o)for(const l in s)!No(l)&&r[l]==null&&delete s[l]};function En(e,t,n,i,s=!1){if(U(e)){e.forEach((m,x)=>En(m,t&&(U(t)?t[x]:t),n,i,s));return}if(Et(i)&&!s)return;const o=i.shapeFlag&4?Dn(i.component)||i.component.proxy:i.el,r=s?null:o,{i:l,r:a}=e,c=t&&t.r,f=l.refs===ee?l.refs={}:l.refs,d=l.setupState;if(c!=null&&c!==a&&(ne(c)?(f[c]=null,J(d,c)&&(d[c]=null)):pe(c)&&(c.value=null)),W(a))Je(a,l,12,[r,f]);else{const m=ne(a),x=pe(a);if(m||x){const b=()=>{if(e.f){const j=m?J(d,a)?d[a]:f[a]:a.value;s?U(j)&&wi(j,o):U(j)?j.includes(o)||j.push(o):m?(f[a]=[o],J(d,a)&&(d[a]=f[a])):(a.value=[o],e.k&&(f[e.k]=a.value))}else m?(f[a]=r,J(d,a)&&(d[a]=r)):x&&(a.value=r,e.k&&(f[e.k]=r))};r?(b.id=-1,he(b,n)):b()}}}let Ue=!1;const ta=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",na=e=>e.namespaceURI.includes("MathML"),rn=e=>{if(ta(e))return"svg";if(na(e))return"mathml"},ln=e=>e.nodeType===8;function ia(e){const{mt:t,p:n,o:{patchProp:i,createText:s,nextSibling:o,parentNode:r,remove:l,insert:a,createComment:c}}=e,f=(h,y)=>{if(!y.hasChildNodes()){n(null,h,y),_n(),y._vnode=h;return}Ue=!1,d(y.firstChild,h,null,null,null),_n(),y._vnode=h,Ue&&console.error("Hydration completed but contains mismatches.")},d=(h,y,C,$,F,L=!1)=>{const A=ln(h)&&h.data==="[",S=()=>j(h,y,C,$,F,A),{type:K,ref:O,shapeFlag:z,patchFlag:oe}=y;let ue=h.nodeType;y.el=h,oe===-2&&(L=!1,y.dynamicChildren=null);let H=null;switch(K){case St:ue!==3?y.children===""?(a(y.el=s(""),r(h),h),H=h):H=S():(h.data!==y.children&&(Ue=!0,h.data=y.children),H=o(h));break;case _e:B(h)?(H=o(h),D(y.el=h.content.firstChild,h,C)):ue!==8||A?H=S():H=o(h);break;case $t:if(A&&(h=o(h),ue=h.nodeType),ue===1||ue===3){H=h;const Y=!y.children.length;for(let k=0;k{L=L||!!y.dynamicChildren;const{type:A,props:S,patchFlag:K,shapeFlag:O,dirs:z,transition:oe}=y,ue=A==="input"||A==="option";if(ue||K!==-1){z&&Oe(y,null,C,"created");let H=!1;if(B(h)){H=Vo($,oe)&&C&&C.vnode.props&&C.vnode.props.appear;const k=h.content.firstChild;H&&oe.beforeEnter(k),D(k,h,C),y.el=h=k}if(O&16&&!(S&&(S.innerHTML||S.textContent))){let k=x(h.firstChild,y,h,C,$,F,L);for(;k;){Ue=!0;const Ne=k;k=k.nextSibling,l(Ne)}}else O&8&&h.textContent!==y.children&&(Ue=!0,h.textContent=y.children);if(S)if(ue||!L||K&48)for(const k in S)(ue&&(k.endsWith("value")||k==="indeterminate")||Wt(k)&&!It(k)||k[0]===".")&&i(h,k,null,S[k],void 0,void 0,C);else S.onClick&&i(h,"onClick",null,S.onClick,void 0,void 0,C);let Y;(Y=S&&S.onVnodeBeforeMount)&&we(Y,C,y),z&&Oe(y,null,C,"beforeMount"),((Y=S&&S.onVnodeMounted)||z||H)&&Eo(()=>{Y&&we(Y,C,y),H&&oe.enter(h),z&&Oe(y,null,C,"mounted")},$)}return h.nextSibling},x=(h,y,C,$,F,L,A)=>{A=A||!!y.dynamicChildren;const S=y.children,K=S.length;for(let O=0;O{const{slotScopeIds:A}=y;A&&(F=F?F.concat(A):A);const S=r(h),K=x(o(h),y,S,C,$,F,L);return K&&ln(K)&&K.data==="]"?o(y.anchor=K):(Ue=!0,a(y.anchor=c("]"),S,K),K)},j=(h,y,C,$,F,L)=>{if(Ue=!0,y.el=null,L){const K=I(h);for(;;){const O=o(h);if(O&&O!==K)l(O);else break}}const A=o(h),S=r(h);return l(h),n(null,y,S,A,C,$,rn(S),F),A},I=(h,y="[",C="]")=>{let $=0;for(;h;)if(h=o(h),h&&ln(h)&&(h.data===y&&$++,h.data===C)){if($===0)return o(h);$--}return h},D=(h,y,C)=>{const $=y.parentNode;$&&$.replaceChild(h,y);let F=C;for(;F;)F.vnode.el===y&&(F.vnode.el=F.subTree.el=h),F=F.parent},B=h=>h.nodeType===1&&h.tagName.toLowerCase()==="template";return[f,d]}const he=Eo;function sa(e){return Ho(e)}function oa(e){return Ho(e,ia)}function Ho(e,t){const n=Xs();n.__VUE__=!0;const{insert:i,remove:s,patchProp:o,createElement:r,createText:l,createComment:a,setText:c,setElementText:f,parentNode:d,nextSibling:m,setScopeId:x=Ee,insertStaticContent:b}=e,j=(u,p,g,v=null,_=null,T=null,M=void 0,E=null,R=!!p.dynamicChildren)=>{if(u===p)return;u&&!lt(u,p)&&(v=Xt(u),Le(u,_,T,!0),u=null),p.patchFlag===-2&&(R=!1,p.dynamicChildren=null);const{type:w,ref:P,shapeFlag:V}=p;switch(w){case St:I(u,p,g,v);break;case _e:D(u,p,g,v);break;case $t:u==null&&B(p,g,v,M);break;case ge:O(u,p,g,v,_,T,M,E,R);break;default:V&1?C(u,p,g,v,_,T,M,E,R):V&6?z(u,p,g,v,_,T,M,E,R):(V&64||V&128)&&w.process(u,p,g,v,_,T,M,E,R,ht)}P!=null&&_&&En(P,u&&u.ref,T,p||u,!p)},I=(u,p,g,v)=>{if(u==null)i(p.el=l(p.children),g,v);else{const _=p.el=u.el;p.children!==u.children&&c(_,p.children)}},D=(u,p,g,v)=>{u==null?i(p.el=a(p.children||""),g,v):p.el=u.el},B=(u,p,g,v)=>{[u.el,u.anchor]=b(u.children,p,g,v,u.el,u.anchor)},h=({el:u,anchor:p},g,v)=>{let _;for(;u&&u!==p;)_=m(u),i(u,g,v),u=_;i(p,g,v)},y=({el:u,anchor:p})=>{let g;for(;u&&u!==p;)g=m(u),s(u),u=g;s(p)},C=(u,p,g,v,_,T,M,E,R)=>{p.type==="svg"?M="svg":p.type==="math"&&(M="mathml"),u==null?$(p,g,v,_,T,M,E,R):A(u,p,_,T,M,E,R)},$=(u,p,g,v,_,T,M,E)=>{let R,w;const{props:P,shapeFlag:V,transition:N,dirs:q}=u;if(R=u.el=r(u.type,T,P&&P.is,P),V&8?f(R,u.children):V&16&&L(u.children,R,null,v,_,Yn(u,T),M,E),q&&Oe(u,null,v,"created"),F(R,u,u.scopeId,M,v),P){for(const Q in P)Q!=="value"&&!It(Q)&&o(R,Q,null,P[Q],T,u.children,v,_,ke);"value"in P&&o(R,"value",null,P.value,T),(w=P.onVnodeBeforeMount)&&we(w,v,u)}q&&Oe(u,null,v,"beforeMount");const G=Vo(_,N);G&&N.beforeEnter(R),i(R,p,g),((w=P&&P.onVnodeMounted)||G||q)&&he(()=>{w&&we(w,v,u),G&&N.enter(R),q&&Oe(u,null,v,"mounted")},_)},F=(u,p,g,v,_)=>{if(g&&x(u,g),v)for(let T=0;T{for(let w=R;w{const E=p.el=u.el;let{patchFlag:R,dynamicChildren:w,dirs:P}=p;R|=u.patchFlag&16;const V=u.props||ee,N=p.props||ee;let q;if(g&&it(g,!1),(q=N.onVnodeBeforeUpdate)&&we(q,g,p,u),P&&Oe(p,u,g,"beforeUpdate"),g&&it(g,!0),w?S(u.dynamicChildren,w,E,g,v,Yn(p,_),T):M||k(u,p,E,null,g,v,Yn(p,_),T,!1),R>0){if(R&16)K(E,p,V,N,g,v,_);else if(R&2&&V.class!==N.class&&o(E,"class",null,N.class,_),R&4&&o(E,"style",V.style,N.style,_),R&8){const G=p.dynamicProps;for(let Q=0;Q{q&&we(q,g,p,u),P&&Oe(p,u,g,"updated")},v)},S=(u,p,g,v,_,T,M)=>{for(let E=0;E{if(g!==v){if(g!==ee)for(const E in g)!It(E)&&!(E in v)&&o(u,E,g[E],null,M,p.children,_,T,ke);for(const E in v){if(It(E))continue;const R=v[E],w=g[E];R!==w&&E!=="value"&&o(u,E,w,R,M,p.children,_,T,ke)}"value"in v&&o(u,"value",g.value,v.value,M)}},O=(u,p,g,v,_,T,M,E,R)=>{const w=p.el=u?u.el:l(""),P=p.anchor=u?u.anchor:l("");let{patchFlag:V,dynamicChildren:N,slotScopeIds:q}=p;q&&(E=E?E.concat(q):q),u==null?(i(w,g,v),i(P,g,v),L(p.children,g,P,_,T,M,E,R)):V>0&&V&64&&N&&u.dynamicChildren?(S(u.dynamicChildren,N,g,_,T,M,E),(p.key!=null||_&&p===_.subTree)&&Di(u,p,!0)):k(u,p,g,P,_,T,M,E,R)},z=(u,p,g,v,_,T,M,E,R)=>{p.slotScopeIds=E,u==null?p.shapeFlag&512?_.ctx.activate(p,g,v,M,R):oe(p,g,v,_,T,M,R):ue(u,p,R)},oe=(u,p,g,v,_,T,M)=>{const E=u.component=ga(u,v,_);if(Gt(u)&&(E.ctx.renderer=ht),xa(E),E.asyncDep){if(_&&_.registerDep(E,H),!u.el){const R=E.subTree=se(_e);D(null,R,p,g)}}else H(E,u,p,g,_,T,M)},ue=(u,p,g)=>{const v=p.component=u.component;if(bl(u,p,g))if(v.asyncDep&&!v.asyncResolved){Y(v,p,g);return}else v.next=p,ml(v.update),v.effect.dirty=!0,v.update();else p.el=u.el,v.vnode=p},H=(u,p,g,v,_,T,M)=>{const E=()=>{if(u.isMounted){let{next:P,bu:V,u:N,parent:q,vnode:G}=u;{const gt=Do(u);if(gt){P&&(P.el=G.el,Y(u,P,M)),gt.asyncDep.then(()=>{u.isUnmounted||E()});return}}let Q=P,te;it(u,!1),P?(P.el=G.el,Y(u,P,M)):P=G,V&&mn(V),(te=P.props&&P.props.onVnodeBeforeUpdate)&&we(te,q,P,G),it(u,!0);const ce=qn(u),Ae=u.subTree;u.subTree=ce,j(Ae,ce,d(Ae.el),Xt(Ae),u,_,T),P.el=ce.el,Q===null&&wl(u,ce.el),N&&he(N,_),(te=P.props&&P.props.onVnodeUpdated)&&he(()=>we(te,q,P,G),_)}else{let P;const{el:V,props:N}=p,{bm:q,m:G,parent:Q}=u,te=Et(p);if(it(u,!1),q&&mn(q),!te&&(P=N&&N.onVnodeBeforeMount)&&we(P,Q,p),it(u,!0),V&&Un){const ce=()=>{u.subTree=qn(u),Un(V,u.subTree,u,_,null)};te?p.type.__asyncLoader().then(()=>!u.isUnmounted&&ce()):ce()}else{const ce=u.subTree=qn(u);j(null,ce,g,v,u,_,T),p.el=ce.el}if(G&&he(G,_),!te&&(P=N&&N.onVnodeMounted)){const ce=p;he(()=>we(P,Q,ce),_)}(p.shapeFlag&256||Q&&Et(Q.vnode)&&Q.vnode.shapeFlag&256)&&u.a&&he(u.a,_),u.isMounted=!0,p=g=v=null}},R=u.effect=new Ai(E,Ee,()=>Pn(w),u.scope),w=u.update=()=>{R.dirty&&R.run()};w.id=u.uid,it(u,!0),w()},Y=(u,p,g)=>{p.component=u;const v=u.vnode.props;u.vnode=p,u.next=null,Xl(u,p.props,v,g),ea(u,p.children,g),dt(),os(u),mt()},k=(u,p,g,v,_,T,M,E,R=!1)=>{const w=u&&u.children,P=u?u.shapeFlag:0,V=p.children,{patchFlag:N,shapeFlag:q}=p;if(N>0){if(N&128){Jt(w,V,g,v,_,T,M,E,R);return}else if(N&256){Ne(w,V,g,v,_,T,M,E,R);return}}q&8?(P&16&&ke(w,_,T),V!==w&&f(g,V)):P&16?q&16?Jt(w,V,g,v,_,T,M,E,R):ke(w,_,T,!0):(P&8&&f(g,""),q&16&&L(V,g,v,_,T,M,E,R))},Ne=(u,p,g,v,_,T,M,E,R)=>{u=u||_t,p=p||_t;const w=u.length,P=p.length,V=Math.min(w,P);let N;for(N=0;NP?ke(u,_,T,!0,!1,V):L(p,g,v,_,T,M,E,R,V)},Jt=(u,p,g,v,_,T,M,E,R)=>{let w=0;const P=p.length;let V=u.length-1,N=P-1;for(;w<=V&&w<=N;){const q=u[w],G=p[w]=R?ze(p[w]):Se(p[w]);if(lt(q,G))j(q,G,g,null,_,T,M,E,R);else break;w++}for(;w<=V&&w<=N;){const q=u[V],G=p[N]=R?ze(p[N]):Se(p[N]);if(lt(q,G))j(q,G,g,null,_,T,M,E,R);else break;V--,N--}if(w>V){if(w<=N){const q=N+1,G=qN)for(;w<=V;)Le(u[w],_,T,!0),w++;else{const q=w,G=w,Q=new Map;for(w=G;w<=N;w++){const ye=p[w]=R?ze(p[w]):Se(p[w]);ye.key!=null&&Q.set(ye.key,w)}let te,ce=0;const Ae=N-G+1;let gt=!1,Gi=0;const Mt=new Array(Ae);for(w=0;w=Ae){Le(ye,_,T,!0);continue}let Me;if(ye.key!=null)Me=Q.get(ye.key);else for(te=G;te<=N;te++)if(Mt[te-G]===0&<(ye,p[te])){Me=te;break}Me===void 0?Le(ye,_,T,!0):(Mt[Me-G]=w+1,Me>=Gi?Gi=Me:gt=!0,j(ye,p[Me],g,null,_,T,M,E,R),ce++)}const Yi=gt?ra(Mt):_t;for(te=Yi.length-1,w=Ae-1;w>=0;w--){const ye=G+w,Me=p[ye],Ji=ye+1{const{el:T,type:M,transition:E,children:R,shapeFlag:w}=u;if(w&6){nt(u.component.subTree,p,g,v);return}if(w&128){u.suspense.move(p,g,v);return}if(w&64){M.move(u,p,g,ht);return}if(M===ge){i(T,p,g);for(let V=0;VE.enter(T),_);else{const{leave:V,delayLeave:N,afterLeave:q}=E,G=()=>i(T,p,g),Q=()=>{V(T,()=>{G(),q&&q()})};N?N(T,G,Q):Q()}else i(T,p,g)},Le=(u,p,g,v=!1,_=!1)=>{const{type:T,props:M,ref:E,children:R,dynamicChildren:w,shapeFlag:P,patchFlag:V,dirs:N}=u;if(E!=null&&En(E,null,g,u,!0),P&256){p.ctx.deactivate(u);return}const q=P&1&&N,G=!Et(u);let Q;if(G&&(Q=M&&M.onVnodeBeforeUnmount)&&we(Q,p,u),P&6)_r(u.component,g,v);else{if(P&128){u.suspense.unmount(g,v);return}q&&Oe(u,null,p,"beforeUnmount"),P&64?u.type.remove(u,p,g,_,ht,v):w&&(T!==ge||V>0&&V&64)?ke(w,p,g,!1,!0):(T===ge&&V&384||!_&&P&16)&&ke(R,p,g),v&&Wi(u)}(G&&(Q=M&&M.onVnodeUnmounted)||q)&&he(()=>{Q&&we(Q,p,u),q&&Oe(u,null,p,"unmounted")},g)},Wi=u=>{const{type:p,el:g,anchor:v,transition:_}=u;if(p===ge){vr(g,v);return}if(p===$t){y(u);return}const T=()=>{s(g),_&&!_.persisted&&_.afterLeave&&_.afterLeave()};if(u.shapeFlag&1&&_&&!_.persisted){const{leave:M,delayLeave:E}=_,R=()=>M(g,T);E?E(u.el,T,R):R()}else T()},vr=(u,p)=>{let g;for(;u!==p;)g=m(u),s(u),u=g;s(p)},_r=(u,p,g)=>{const{bum:v,scope:_,update:T,subTree:M,um:E}=u;v&&mn(v),_.stop(),T&&(T.active=!1,Le(M,u,p,g)),E&&he(E,p),he(()=>{u.isUnmounted=!0},p),p&&p.pendingBranch&&!p.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===p.pendingId&&(p.deps--,p.deps===0&&p.resolve())},ke=(u,p,g,v=!1,_=!1,T=0)=>{for(let M=T;Mu.shapeFlag&6?Xt(u.component.subTree):u.shapeFlag&128?u.suspense.next():m(u.anchor||u.el),zi=(u,p,g)=>{u==null?p._vnode&&Le(p._vnode,null,null,!0):j(p._vnode||null,u,p,null,null,null,g),os(),_n(),p._vnode=u},ht={p:j,um:Le,m:nt,r:Wi,mt:oe,mc:L,pc:k,pbc:S,n:Xt,o:e};let Bn,Un;return t&&([Bn,Un]=t(ht)),{render:zi,hydrate:Bn,createApp:Gl(zi,Bn)}}function Yn({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 it({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Vo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Di(e,t,n=!1){const i=e.children,s=t.children;if(U(i)&&U(s))for(let o=0;o>1,e[n[l]]0&&(t[i]=n[o-1]),n[o]=i)}}for(o=n.length,r=n[o-1];o-- >0;)n[o]=r,r=t[r];return n}function Do(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Do(t)}const la=e=>e.__isTeleport,kt=e=>e&&(e.disabled||e.disabled===""),xs=e=>typeof SVGElement<"u"&&e instanceof SVGElement,ys=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,mi=(e,t)=>{const n=e&&e.to;return ne(n)?t?t(n):null:n},aa={name:"Teleport",__isTeleport:!0,process(e,t,n,i,s,o,r,l,a,c){const{mc:f,pc:d,pbc:m,o:{insert:x,querySelector:b,createText:j,createComment:I}}=c,D=kt(t.props);let{shapeFlag:B,children:h,dynamicChildren:y}=t;if(e==null){const C=t.el=j(""),$=t.anchor=j("");x(C,n,i),x($,n,i);const F=t.target=mi(t.props,b),L=t.targetAnchor=j("");F&&(x(L,F),r==="svg"||xs(F)?r="svg":(r==="mathml"||ys(F))&&(r="mathml"));const A=(S,K)=>{B&16&&f(h,S,K,s,o,r,l,a)};D?A(n,$):F&&A(F,L)}else{t.el=e.el;const C=t.anchor=e.anchor,$=t.target=e.target,F=t.targetAnchor=e.targetAnchor,L=kt(e.props),A=L?n:$,S=L?C:F;if(r==="svg"||xs($)?r="svg":(r==="mathml"||ys($))&&(r="mathml"),y?(m(e.dynamicChildren,y,A,s,o,r,l),Di(e,t,!0)):a||d(e,t,A,S,s,o,r,l,!1),D)L?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):an(t,n,C,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const K=t.target=mi(t.props,b);K&&an(t,K,null,c,0)}else L&&an(t,$,F,c,1)}Bo(t)},remove(e,t,n,i,{um:s,o:{remove:o}},r){const{shapeFlag:l,children:a,anchor:c,targetAnchor:f,target:d,props:m}=e;if(d&&o(f),r&&o(c),l&16){const x=r||!kt(m);for(let b=0;b0?je||_t:null,ua(),Kt>0&&je&&je.push(e),e}function su(e,t,n,i,s,o){return Ko(zo(e,t,n,i,s,o,!0))}function qo(e,t,n,i,s){return Ko(se(e,t,n,i,s,!0))}function Tn(e){return e?e.__v_isVNode===!0:!1}function lt(e,t){return e.type===t.type&&e.key===t.key}const Hn="__vInternal",Wo=({key:e})=>e??null,hn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ne(e)||pe(e)||W(e)?{i:fe,r:e,k:t,f:!!n}:e:null);function zo(e,t=null,n=null,i=0,s=null,o=e===ge?0:1,r=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Wo(t),ref:t&&hn(t),scopeId:Fn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:i,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:fe};return l?(Bi(a,n),o&128&&e.normalize(a)):n&&(a.shapeFlag|=ne(n)?8:16),Kt>0&&!r&&je&&(a.patchFlag>0||o&6)&&a.patchFlag!==32&&je.push(a),a}const se=fa;function fa(e,t=null,n=null,i=0,s=null,o=!1){if((!e||e===wo)&&(e=_e),Tn(e)){const l=tt(e,t,!0);return n&&Bi(l,n),Kt>0&&!o&&je&&(l.shapeFlag&6?je[je.indexOf(e)]=l:je.push(l)),l.patchFlag|=-2,l}if(ba(e)&&(e=e.__vccOpts),t){t=pa(t);let{class:l,style:a}=t;l&&!ne(l)&&(t.class=Ti(l)),Z(a)&&(po(a)&&!U(a)&&(a=ae({},a)),t.style=Ei(a))}const r=ne(e)?1:Cl(e)?128:la(e)?64:Z(e)?4:W(e)?2:0;return zo(e,t,n,i,s,r,o,!0)}function pa(e){return e?po(e)||Hn in e?ae({},e):e:null}function tt(e,t,n=!1){const{props:i,ref:s,patchFlag:o,children:r}=e,l=t?da(i||{},t):i;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Wo(l),ref:t&&t.ref?n&&s?U(s)?s.concat(hn(t)):[s,hn(t)]:hn(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:r,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ge?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&tt(e.ssContent),ssFallback:e.ssFallback&&tt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Go(e=" ",t=0){return se(St,null,e,t)}function ou(e,t){const n=se($t,null,e);return n.staticCount=t,n}function ru(e="",t=!1){return t?(Uo(),qo(_e,null,e)):se(_e,null,e)}function Se(e){return e==null||typeof e=="boolean"?se(_e):U(e)?se(ge,null,e.slice()):typeof e=="object"?ze(e):se(St,null,String(e))}function ze(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:tt(e)}function Bi(e,t){let n=0;const{shapeFlag:i}=e;if(t==null)t=null;else if(U(t))n=16;else if(typeof t=="object")if(i&65){const s=t.default;s&&(s._c&&(s._d=!1),Bi(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!(Hn in t)?t._ctx=fe:s===3&&fe&&(fe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else W(t)?(t={default:t,_ctx:fe},n=32):(t=String(t),i&64?(n=16,t=[Go(t)]):n=8);e.children=t,e.shapeFlag|=n}function da(...e){const t={};for(let n=0;nre||fe;let Ui,hi;{const e=Xs(),t=(n,i)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(i),o=>{s.length>1?s.forEach(r=>r(o)):s[0](o)}};Ui=t("__VUE_INSTANCE_SETTERS__",n=>re=n),hi=t("__VUE_SSR_SETTERS__",n=>Yt=n)}const jt=e=>{Ui(e),e.scope.on()},ut=()=>{re&&re.scope.off(),Ui(null)};function Yo(e){return e.vnode.shapeFlag&4}let Yt=!1;function xa(e,t=!1){t&&hi(t);const{props:n,children:i}=e.vnode,s=Yo(e);Jl(e,n,s,t),Zl(e,i);const o=s?ya(e,t):void 0;return t&&hi(!1),o}function ya(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Ft(new Proxy(e.ctx,Vl));const{setup:i}=n;if(i){const s=e.setupContext=i.length>1?Xo(e):null;jt(e),dt();const o=Je(i,e,0,[e.props,s]);if(mt(),ut(),Gs(o)){if(o.then(ut,ut),t)return o.then(r=>{_s(e,r,t)}).catch(r=>{zt(r,e,0)});e.asyncDep=o}else _s(e,o,t)}else Jo(e,t)}function _s(e,t,n){W(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=xo(t)),Jo(e,n)}let bs;function Jo(e,t,n){const i=e.type;if(!e.render){if(!t&&bs&&!i.render){const s=i.template||Hi(e).template;if(s){const{isCustomElement:o,compilerOptions:r}=e.appContext.config,{delimiters:l,compilerOptions:a}=i,c=ae(ae({isCustomElement:o,delimiters:l},r),a);i.render=bs(s,c)}}e.render=i.render||Ee}{jt(e),dt();try{Bl(e)}finally{mt(),ut()}}}function va(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return xe(e,"get","$attrs"),t[n]}}))}function Xo(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return va(e)},slots:e.slots,emit:e.emit,expose:t}}function Dn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(xo(Ft(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Nt)return Nt[n](e)},has(t,n){return n in t||n in Nt}}))}function _a(e,t=!0){return W(e)?e.displayName||e.name:e.name||t&&e.__name}function ba(e){return W(e)&&"__vccOpts"in e}const ie=(e,t)=>il(e,t,Yt);function gi(e,t,n){const i=arguments.length;return i===2?Z(t)&&!U(t)?Tn(t)?se(e,null,[t]):se(e,t):se(e,null,t):(i>3?n=Array.prototype.slice.call(arguments,2):i===3&&Tn(n)&&(n=[n]),se(e,t,n))}const wa="3.4.3",Ca="http://www.w3.org/2000/svg",Ea="http://www.w3.org/1998/Math/MathML",Ge=typeof document<"u"?document:null,ws=Ge&&Ge.createElement("template"),Ta={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,i)=>{const s=t==="svg"?Ge.createElementNS(Ca,e):t==="mathml"?Ge.createElementNS(Ea,e):Ge.createElement(e,n?{is:n}:void 0);return e==="select"&&i&&i.multiple!=null&&s.setAttribute("multiple",i.multiple),s},createText:e=>Ge.createTextNode(e),createComment:e=>Ge.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ge.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,i,s,o){const r=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{ws.innerHTML=i==="svg"?`${e}`:i==="mathml"?`${e}`:e;const l=ws.content;if(i==="svg"||i==="mathml"){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[r?r.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ke="transition",Ot="animation",qt=Symbol("_vtc"),Qo=(e,{slots:t})=>gi(Rl,Aa(e),t);Qo.displayName="Transition";const Zo={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};Qo.props=ae({},Ao,Zo);const st=(e,t=[])=>{U(e)?e.forEach(n=>n(...t)):e&&e(...t)},Cs=e=>e?U(e)?e.some(t=>t.length>1):e.length>1:!1;function Aa(e){const t={};for(const O in e)O in Zo||(t[O]=e[O]);if(e.css===!1)return t;const{name:n="v",type:i,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:r=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:a=o,appearActiveClass:c=r,appearToClass:f=l,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:x=`${n}-leave-to`}=e,b=Sa(s),j=b&&b[0],I=b&&b[1],{onBeforeEnter:D,onEnter:B,onEnterCancelled:h,onLeave:y,onLeaveCancelled:C,onBeforeAppear:$=D,onAppear:F=B,onAppearCancelled:L=h}=t,A=(O,z,oe)=>{ot(O,z?f:l),ot(O,z?c:r),oe&&oe()},S=(O,z)=>{O._isLeaving=!1,ot(O,d),ot(O,x),ot(O,m),z&&z()},K=O=>(z,oe)=>{const ue=O?F:B,H=()=>A(z,O,oe);st(ue,[z,H]),Es(()=>{ot(z,O?a:o),qe(z,O?f:l),Cs(ue)||Ts(z,i,j,H)})};return ae(t,{onBeforeEnter(O){st(D,[O]),qe(O,o),qe(O,r)},onBeforeAppear(O){st($,[O]),qe(O,a),qe(O,c)},onEnter:K(!1),onAppear:K(!0),onLeave(O,z){O._isLeaving=!0;const oe=()=>S(O,z);qe(O,d),La(),qe(O,m),Es(()=>{O._isLeaving&&(ot(O,d),qe(O,x),Cs(y)||Ts(O,i,I,oe))}),st(y,[O,oe])},onEnterCancelled(O){A(O,!1),st(h,[O])},onAppearCancelled(O){A(O,!0),st(L,[O])},onLeaveCancelled(O){S(O),st(C,[O])}})}function Sa(e){if(e==null)return null;if(Z(e))return[Jn(e.enter),Jn(e.leave)];{const t=Jn(e);return[t,t]}}function Jn(e){return Ar(e)}function qe(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[qt]||(e[qt]=new Set)).add(t)}function ot(e,t){t.split(/\s+/).forEach(i=>i&&e.classList.remove(i));const n=e[qt];n&&(n.delete(t),n.size||(e[qt]=void 0))}function Es(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let ja=0;function Ts(e,t,n,i){const s=e._endId=++ja,o=()=>{s===e._endId&&i()};if(n)return setTimeout(o,n);const{type:r,timeout:l,propCount:a}=Ra(e,t);if(!r)return i();const c=r+"end";let f=0;const d=()=>{e.removeEventListener(c,m),o()},m=x=>{x.target===e&&++f>=a&&d()};setTimeout(()=>{f(n[b]||"").split(", "),s=i(`${Ke}Delay`),o=i(`${Ke}Duration`),r=As(s,o),l=i(`${Ot}Delay`),a=i(`${Ot}Duration`),c=As(l,a);let f=null,d=0,m=0;t===Ke?r>0&&(f=Ke,d=r,m=o.length):t===Ot?c>0&&(f=Ot,d=c,m=a.length):(d=Math.max(r,c),f=d>0?r>c?Ke:Ot:null,m=f?f===Ke?o.length:a.length:0);const x=f===Ke&&/\b(transform|all)(,|$)/.test(i(`${Ke}Property`).toString());return{type:f,timeout:d,propCount:m,hasTransform:x}}function As(e,t){for(;e.lengthSs(n)+Ss(e[i])))}function Ss(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function La(){return document.body.offsetHeight}function Ma(e,t,n){const i=e[qt];i&&(t=(t?[t,...i]:[...i]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Oa=Symbol("_vod"),Pa=Symbol("");function Ia(e,t,n){const i=e.style,s=ne(n);if(n&&!s){if(t&&!ne(t))for(const o in t)n[o]==null&&xi(i,o,"");for(const o in n)xi(i,o,n[o])}else{const o=i.display;if(s){if(t!==n){const r=i[Pa];r&&(n+=";"+r),i.cssText=n}}else t&&e.removeAttribute("style");Oa in e&&(i.display=o)}}const js=/\s*!important$/;function xi(e,t,n){if(U(n))n.forEach(i=>xi(e,t,i));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const i=Fa(e,t);js.test(n)?e.setProperty(pt(i),n.replace(js,""),"important"):e[i]=n}}const Rs=["Webkit","Moz","ms"],Xn={};function Fa(e,t){const n=Xn[t];if(n)return n;let i=Fe(t);if(i!=="filter"&&i in e)return Xn[t]=i;i=jn(i);for(let s=0;sQn||(Da.then(()=>Qn=0),Qn=Date.now());function Ua(e,t){const n=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=n.attached)return;Te(Ka(i,n.value),t,5,[i])};return n.value=e,n.attached=Ba(),n}function Ka(e,t){if(U(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(i=>s=>!s._stopped&&i&&i(s))}else return t}const Ps=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,qa=(e,t,n,i,s,o,r,l,a)=>{const c=s==="svg";t==="class"?Ma(e,i,c):t==="style"?Ia(e,n,i):Wt(t)?bi(t)||Ha(e,t,n,i,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Wa(e,t,i,c))?ka(e,t,i,o,r,l,a):(t==="true-value"?e._trueValue=i:t==="false-value"&&(e._falseValue=i),Na(e,t,i,c))};function Wa(e,t,n,i){if(i)return!!(t==="innerHTML"||t==="textContent"||t in e&&Ps(t)&&W(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 s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Ps(t)&&ne(n)?!1:t in e}const Is=e=>{const t=e.props["onUpdate:modelValue"]||!1;return U(t)?n=>mn(t,n):t};function za(e){e.target.composing=!0}function Fs(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Zn=Symbol("_assign"),lu={created(e,{modifiers:{lazy:t,trim:n,number:i}},s){e[Zn]=Is(s);const o=i||s.props&&s.props.type==="number";xt(e,t?"change":"input",r=>{if(r.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=ii(l)),e[Zn](l)}),n&&xt(e,"change",()=>{e.value=e.value.trim()}),t||(xt(e,"compositionstart",za),xt(e,"compositionend",Fs),xt(e,"change",Fs))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:i,number:s}},o){if(e[Zn]=Is(o),e.composing)return;const r=s||e.type==="number"?ii(e.value):e.value,l=t??"";r!==l&&(document.activeElement===e&&e.type!=="range"&&(n||i&&e.value.trim()===l)||(e.value=l))}},Ga=["ctrl","shift","alt","meta"],Ya={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)=>Ga.some(n=>e[`${n}Key`]&&!t.includes(n))},au=(e,t)=>{const n=e._withMods||(e._withMods={}),i=t.join(".");return n[i]||(n[i]=(s,...o)=>{for(let r=0;r{const n=e._withKeys||(e._withKeys={}),i=t.join(".");return n[i]||(n[i]=s=>{if(!("key"in s))return;const o=pt(s.key);if(t.some(r=>r===o||Ja[r]===o))return e(s)})},er=ae({patchProp:qa},Ta);let Vt,Ns=!1;function Xa(){return Vt||(Vt=sa(er))}function Qa(){return Vt=Ns?Vt:oa(er),Ns=!0,Vt}const uu=(...e)=>{const t=Xa().createApp(...e),{mount:n}=t;return t.mount=i=>{const s=nr(i);if(!s)return;const o=t._component;!W(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.innerHTML="";const r=n(s,!1,tr(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),r},t},fu=(...e)=>{const t=Qa().createApp(...e),{mount:n}=t;return t.mount=i=>{const s=nr(i);if(s)return n(s,!0,tr(s))},t};function tr(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function nr(e){return ne(e)?document.querySelector(e):e}const pu=(e,t)=>{const n=e.__vccOpts||e;for(const[i,s]of t)n[i]=s;return n},Za="modulepreload",ec=function(e){return"/Gridify/"+e},ks={},du=function(t,n,i){let s=Promise.resolve();if(n&&n.length>0){const o=document.getElementsByTagName("link");s=Promise.all(n.map(r=>{if(r=ec(r),r in ks)return;ks[r]=!0;const l=r.endsWith(".css"),a=l?'[rel="stylesheet"]':"";if(!!i)for(let d=o.length-1;d>=0;d--){const m=o[d];if(m.href===r&&(!l||m.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${r}"]${a}`))return;const f=document.createElement("link");if(f.rel=l?"stylesheet":Za,l||(f.as="script",f.crossOrigin=""),f.href=r,document.head.appendChild(f),l)return new Promise((d,m)=>{f.addEventListener("load",d),f.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${r}`)))})}))}return s.then(()=>t()).catch(o=>{const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=o,window.dispatchEvent(r),!r.defaultPrevented)throw o})},tc=window.__VP_SITE_DATA__;function Ki(e){return eo()?(Fr(e),!0):!1}function Ie(e){return typeof e=="function"?e():go(e)}const ir=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const nc=Object.prototype.toString,ic=e=>nc.call(e)==="[object Object]",Qe=()=>{},yi=sc();function sc(){var e,t;return ir&&((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 oc(e,t){function n(...i){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,i),{fn:t,thisArg:this,args:i})).then(s).catch(o)})}return n}const sr=e=>e();function rc(e,t={}){let n,i,s=Qe;const o=l=>{clearTimeout(l),s(),s=Qe};return l=>{const a=Ie(e),c=Ie(t.maxWait);return n&&o(n),a<=0||c!==void 0&&c<=0?(i&&(o(i),i=null),Promise.resolve(l())):new Promise((f,d)=>{s=t.rejectOnCancel?d:f,c&&!i&&(i=setTimeout(()=>{n&&o(n),i=null,f(l())},c)),n=setTimeout(()=>{i&&o(i),i=null,f(l())},a)})}}function lc(e=sr){const t=le(!0);function n(){t.value=!1}function i(){t.value=!0}const s=(...o)=>{t.value&&e(...o)};return{isActive:Mn(t),pause:n,resume:i,eventFilter:s}}function ac(e){return e||Vn()}function or(...e){if(e.length!==1)return ul(...e);const t=e[0];return typeof t=="function"?Mn(ll(()=>({get:t,set:Qe}))):le(t)}function rr(e,t,n={}){const{eventFilter:i=sr,...s}=n;return Xe(e,oc(i,t),s)}function cc(e,t,n={}){const{eventFilter:i,...s}=n,{eventFilter:o,pause:r,resume:l,isActive:a}=lc(i);return{stop:rr(e,t,{...s,eventFilter:o}),pause:r,resume:l,isActive:a}}function lr(e,t=!0,n){ac()?Lt(e,n):t?e():On(e)}function mu(e,t,n={}){const{debounce:i=0,maxWait:s=void 0,...o}=n;return rr(e,t,{...o,eventFilter:rc(i,{maxWait:s})})}function hu(e,t,n){let i;pe(n)?i={evaluating:n}:i=n||{};const{lazy:s=!1,evaluating:o=void 0,shallow:r=!0,onError:l=Qe}=i,a=le(!s),c=r?Ii(t):le(t);let f=0;return ki(async d=>{if(!a.value)return;f++;const m=f;let x=!1;o&&Promise.resolve().then(()=>{o.value=!0});try{const b=await e(j=>{d(()=>{o&&(o.value=!1),x||j()})});m===f&&(c.value=b)}catch(b){l(b)}finally{o&&m===f&&(o.value=!1),x=!0}}),s?ie(()=>(a.value=!0,c.value)):c}function vt(e){var t;const n=Ie(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Re=ir?window:void 0;function Ze(...e){let t,n,i,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,i,s]=e,t=Re):[t,n,i,s]=e,!t)return Qe;Array.isArray(n)||(n=[n]),Array.isArray(i)||(i=[i]);const o=[],r=()=>{o.forEach(f=>f()),o.length=0},l=(f,d,m,x)=>(f.addEventListener(d,m,x),()=>f.removeEventListener(d,m,x)),a=Xe(()=>[vt(t),Ie(s)],([f,d])=>{if(r(),!f)return;const m=ic(d)?{...d}:d;o.push(...n.flatMap(x=>i.map(b=>l(f,x,b,m))))},{immediate:!0,flush:"post"}),c=()=>{a(),r()};return Ki(c),c}let $s=!1;function gu(e,t,n={}){const{window:i=Re,ignore:s=[],capture:o=!0,detectIframe:r=!1}=n;if(!i)return Qe;yi&&!$s&&($s=!0,Array.from(i.document.body.children).forEach(m=>m.addEventListener("click",Qe)),i.document.documentElement.addEventListener("click",Qe));let l=!0;const a=m=>s.some(x=>{if(typeof x=="string")return Array.from(i.document.querySelectorAll(x)).some(b=>b===m.target||m.composedPath().includes(b));{const b=vt(x);return b&&(m.target===b||m.composedPath().includes(b))}}),f=[Ze(i,"click",m=>{const x=vt(e);if(!(!x||x===m.target||m.composedPath().includes(x))){if(m.detail===0&&(l=!a(m)),!l){l=!0;return}t(m)}},{passive:!0,capture:o}),Ze(i,"pointerdown",m=>{const x=vt(e);l=!a(m)&&!!(x&&!m.composedPath().includes(x))},{passive:!0}),r&&Ze(i,"blur",m=>{setTimeout(()=>{var x;const b=vt(e);((x=i.document.activeElement)==null?void 0:x.tagName)==="IFRAME"&&!(b!=null&&b.contains(i.document.activeElement))&&t(m)},0)})].filter(Boolean);return()=>f.forEach(m=>m())}function uc(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function xu(...e){let t,n,i={};e.length===3?(t=e[0],n=e[1],i=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],i=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=Re,eventName:o="keydown",passive:r=!1,dedupe:l=!1}=i,a=uc(t);return Ze(s,o,f=>{f.repeat&&Ie(l)||a(f)&&n(f)},r)}function fc(){const e=le(!1);return Vn()&&Lt(()=>{e.value=!0}),e}function pc(e){const t=fc();return ie(()=>(t.value,!!e()))}function dc(e,t={}){const{window:n=Re}=t,i=pc(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const o=le(!1),r=c=>{o.value=c.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",r):s.removeListener(r))},a=ki(()=>{i.value&&(l(),s=n.matchMedia(Ie(e)),"addEventListener"in s?s.addEventListener("change",r):s.addListener(r),o.value=s.matches)});return Ki(()=>{a(),l(),s=void 0}),o}const cn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},un="__vueuse_ssr_handlers__",mc=hc();function hc(){return un in cn||(cn[un]=cn[un]||{}),cn[un]}function ar(e,t){return mc[e]||t}function gc(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 xc={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()}},Hs="vueuse-storage";function qi(e,t,n,i={}){var s;const{flush:o="pre",deep:r=!0,listenToStorageChanges:l=!0,writeDefaults:a=!0,mergeDefaults:c=!1,shallow:f,window:d=Re,eventFilter:m,onError:x=A=>{console.error(A)},initOnMounted:b}=i,j=(f?Ii:le)(typeof t=="function"?t():t);if(!n)try{n=ar("getDefaultStorage",()=>{var A;return(A=Re)==null?void 0:A.localStorage})()}catch(A){x(A)}if(!n)return j;const I=Ie(t),D=gc(I),B=(s=i.serializer)!=null?s:xc[D],{pause:h,resume:y}=cc(j,()=>C(j.value),{flush:o,deep:r,eventFilter:m});return d&&l&&lr(()=>{Ze(d,"storage",L),Ze(d,Hs,F),b&&L()}),b||L(),j;function C(A){try{if(A==null)n.removeItem(e);else{const S=B.write(A),K=n.getItem(e);K!==S&&(n.setItem(e,S),d&&d.dispatchEvent(new CustomEvent(Hs,{detail:{key:e,oldValue:K,newValue:S,storageArea:n}})))}}catch(S){x(S)}}function $(A){const S=A?A.newValue:n.getItem(e);if(S==null)return a&&I!=null&&n.setItem(e,B.write(I)),I;if(!A&&c){const K=B.read(S);return typeof c=="function"?c(K,I):D==="object"&&!Array.isArray(K)?{...I,...K}:K}else return typeof S!="string"?S:B.read(S)}function F(A){L(A.detail)}function L(A){if(!(A&&A.storageArea!==n)){if(A&&A.key==null){j.value=I;return}if(!(A&&A.key!==e)){h();try{(A==null?void 0:A.newValue)!==B.write(j.value)&&(j.value=$(A))}catch(S){x(S)}finally{A?On(y):y()}}}}}function cr(e){return dc("(prefers-color-scheme: dark)",e)}function yc(e={}){const{selector:t="html",attribute:n="class",initialValue:i="auto",window:s=Re,storage:o,storageKey:r="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:a,emitAuto:c,disableTransition:f=!0}=e,d={auto:"",light:"light",dark:"dark",...e.modes||{}},m=cr({window:s}),x=ie(()=>m.value?"dark":"light"),b=a||(r==null?or(i):qi(r,i,o,{window:s,listenToStorageChanges:l})),j=ie(()=>b.value==="auto"?x.value:b.value),I=ar("updateHTMLAttrs",(y,C,$)=>{const F=typeof y=="string"?s==null?void 0:s.document.querySelector(y):vt(y);if(!F)return;let L;if(f&&(L=s.document.createElement("style"),L.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),s.document.head.appendChild(L)),C==="class"){const A=$.split(/\s/g);Object.values(d).flatMap(S=>(S||"").split(/\s/g)).filter(Boolean).forEach(S=>{A.includes(S)?F.classList.add(S):F.classList.remove(S)})}else F.setAttribute(C,$);f&&(s.getComputedStyle(L).opacity,document.head.removeChild(L))});function D(y){var C;I(t,n,(C=d[y])!=null?C:y)}function B(y){e.onChanged?e.onChanged(y,D):D(y)}Xe(j,B,{flush:"post",immediate:!0}),lr(()=>B(j.value));const h=ie({get(){return c?b.value:j.value},set(y){b.value=y}});try{return Object.assign(h,{store:b,system:x,state:j})}catch{return h}}function vc(e={}){const{valueDark:t="dark",valueLight:n="",window:i=Re}=e,s=yc({...e,onChanged:(l,a)=>{var c;e.onChanged?(c=e.onChanged)==null||c.call(e,l==="dark",a,l):a(l)},modes:{dark:t,light:n}}),o=ie(()=>s.system?s.system.value:cr({window:i}).value?"dark":"light");return ie({get(){return s.value==="dark"},set(l){const a=l?"dark":"light";o.value===a?s.value="auto":s.value=a}})}function ei(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function yu(e,t,n={}){const{window:i=Re}=n;return qi(e,t,i==null?void 0:i.localStorage,n)}function ur(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 fn=new WeakMap;function vu(e,t=!1){const n=le(t);let i=null,s;Xe(or(e),l=>{const a=ei(Ie(l));if(a){const c=a;fn.get(c)||fn.set(c,s),n.value&&(c.style.overflow="hidden")}},{immediate:!0});const o=()=>{const l=ei(Ie(e));!l||n.value||(yi&&(i=Ze(l,"touchmove",a=>{_c(a)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},r=()=>{var l;const a=ei(Ie(e));!a||!n.value||(yi&&(i==null||i()),a.style.overflow=(l=fn.get(a))!=null?l:"",fn.delete(a),n.value=!1)};return Ki(r),ie({get(){return n.value},set(l){l?o():r()}})}function _u(e,t,n={}){const{window:i=Re}=n;return qi(e,t,i==null?void 0:i.sessionStorage,n)}function bu(e={}){const{window:t=Re,behavior:n="auto"}=e;if(!t)return{x:le(0),y:le(0)};const i=le(t.scrollX),s=le(t.scrollY),o=ie({get(){return i.value},set(l){scrollTo({left:l,behavior:n})}}),r=ie({get(){return s.value},set(l){scrollTo({top:l,behavior:n})}});return Ze(t,"scroll",()=>{i.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:o,y:r}}const fr=/^(?:[a-z]+:|\/\/)/i,bc="vitepress-theme-appearance",pr=/#.*$/,wc=/(index)?\.(md|html)$/,Ce=typeof document<"u",dr={relativePath:"",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Cc(e,t,n=!1){if(t===void 0)return!1;if(e=Vs(`/${e}`),n)return new RegExp(t).test(e);if(Vs(t)!==e)return!1;const i=t.match(pr);return i?(Ce?location.hash:"")===i[0]:!0}function Vs(e){return decodeURI(e).replace(pr,"").replace(wc,"")}function Ec(e){return fr.test(e)}function Tc(e,t){var i,s,o,r,l,a,c;const n=Object.keys(e.locales).find(f=>f!=="root"&&!Ec(f)&&Cc(t,`/${f}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((i=e.locales[n])==null?void 0:i.lang)??e.lang,dir:((s=e.locales[n])==null?void 0:s.dir)??e.dir,title:((o=e.locales[n])==null?void 0:o.title)??e.title,titleTemplate:((r=e.locales[n])==null?void 0:r.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:hr(e.head,((a=e.locales[n])==null?void 0:a.head)??[]),themeConfig:{...e.themeConfig,...(c=e.locales[n])==null?void 0:c.themeConfig}})}function mr(e,t){const n=t.title||e.title,i=t.titleTemplate??e.titleTemplate;if(typeof i=="string"&&i.includes(":title"))return i.replace(/:title/g,n);const s=Ac(e.title,i);return n===s.slice(3)?n:`${n}${s}`}function Ac(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Sc(e,t){const[n,i]=t;if(n!=="meta")return!1;const s=Object.entries(i)[0];return s==null?!1:e.some(([o,r])=>o===n&&r[s[0]]===s[1])}function hr(e,t){return[...e.filter(n=>!Sc(t,n)),...t]}const jc=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Rc=/^[a-z]:/i;function Ds(e){const t=Rc.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(jc,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const Lc=Symbol(),ft=Ii(tc);function wu(e){const t=ie(()=>Tc(ft.value,e.data.relativePath)),n=t.value.appearance,i=n==="force-dark"?le(!0):n?vc({storageKey:bc,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):le(!1);return{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||"ltr"),localeIndex:ie(()=>t.value.localeIndex||"root"),title:ie(()=>mr(t.value,e.data)),description:ie(()=>e.data.description||t.value.description),isDark:i}}function Mc(){const e=Tt(Lc);if(!e)throw new Error("vitepress data not properly injected in app");return e}const Oc={"3g2":"video/3gpp2","3gp":"video/3gpp","3gpp":"video/3gpp","3mf":"model/3mf",aac:"audio/aac",ac:"application/pkix-attr-cert",adp:"audio/adpcm",adts:"audio/aac",ai:"application/postscript",aml:"application/automationml-aml+xml",amlx:"application/automationml-amlx+zip",amr:"audio/amr",apng:"image/apng",appcache:"text/cache-manifest",appinstaller:"application/appinstaller",appx:"application/appx",appxbundle:"application/appxbundle",asc:"application/pgp-keys",atom:"application/atom+xml",atomcat:"application/atomcat+xml",atomdeleted:"application/atomdeleted+xml",atomsvc:"application/atomsvc+xml",au:"audio/basic",avci:"image/avci",avcs:"image/avcs",avif:"image/avif",aw:"application/applixware",bdoc:"application/bdoc",bin:"application/octet-stream",bmp:"image/bmp",bpk:"application/octet-stream",btf:"image/prs.btif",btif:"image/prs.btif",buffer:"application/octet-stream",ccxml:"application/ccxml+xml",cdfx:"application/cdfx+xml",cdmia:"application/cdmi-capability",cdmic:"application/cdmi-container",cdmid:"application/cdmi-domain",cdmio:"application/cdmi-object",cdmiq:"application/cdmi-queue",cer:"application/pkix-cert",cgm:"image/cgm",cjs:"application/node",class:"application/java-vm",coffee:"text/coffeescript",conf:"text/plain",cpl:"application/cpl+xml",cpt:"application/mac-compactpro",crl:"application/pkix-crl",css:"text/css",csv:"text/csv",cu:"application/cu-seeme",cwl:"application/cwl",cww:"application/prs.cww",davmount:"application/davmount+xml",dbk:"application/docbook+xml",deb:"application/octet-stream",def:"text/plain",deploy:"application/octet-stream",dib:"image/bmp","disposition-notification":"message/disposition-notification",dist:"application/octet-stream",distz:"application/octet-stream",dll:"application/octet-stream",dmg:"application/octet-stream",dms:"application/octet-stream",doc:"application/msword",dot:"application/msword",dpx:"image/dpx",drle:"image/dicom-rle",dsc:"text/prs.lines.tag",dssc:"application/dssc+der",dtd:"application/xml-dtd",dump:"application/octet-stream",dwd:"application/atsc-dwd+xml",ear:"application/java-archive",ecma:"application/ecmascript",elc:"application/octet-stream",emf:"image/emf",eml:"message/rfc822",emma:"application/emma+xml",emotionml:"application/emotionml+xml",eps:"application/postscript",epub:"application/epub+zip",exe:"application/octet-stream",exi:"application/exi",exp:"application/express",exr:"image/aces",ez:"application/andrew-inset",fdf:"application/fdf",fdt:"application/fdt+xml",fits:"image/fits",g3:"image/g3fax",gbr:"application/rpki-ghostbusters",geojson:"application/geo+json",gif:"image/gif",glb:"model/gltf-binary",gltf:"model/gltf+json",gml:"application/gml+xml",gpx:"application/gpx+xml",gram:"application/srgs",grxml:"application/srgs+xml",gxf:"application/gxf",gz:"application/gzip",h261:"video/h261",h263:"video/h263",h264:"video/h264",heic:"image/heic",heics:"image/heic-sequence",heif:"image/heif",heifs:"image/heif-sequence",hej2:"image/hej2k",held:"application/atsc-held+xml",hjson:"application/hjson",hlp:"application/winhlp",hqx:"application/mac-binhex40",hsj2:"image/hsj2",htm:"text/html",html:"text/html",ics:"text/calendar",ief:"image/ief",ifb:"text/calendar",iges:"model/iges",igs:"model/iges",img:"application/octet-stream",in:"text/plain",ini:"text/plain",ink:"application/inkml+xml",inkml:"application/inkml+xml",ipfix:"application/ipfix",iso:"application/octet-stream",its:"application/its+xml",jade:"text/jade",jar:"application/java-archive",jhc:"image/jphc",jls:"image/jls",jp2:"image/jp2",jpe:"image/jpeg",jpeg:"image/jpeg",jpf:"image/jpx",jpg:"image/jpeg",jpg2:"image/jp2",jpgm:"image/jpm",jpgv:"video/jpeg",jph:"image/jph",jpm:"image/jpm",jpx:"image/jpx",js:"text/javascript",json:"application/json",json5:"application/json5",jsonld:"application/ld+json",jsonml:"application/jsonml+json",jsx:"text/jsx",jt:"model/jt",jxr:"image/jxr",jxra:"image/jxra",jxrs:"image/jxrs",jxs:"image/jxs",jxsc:"image/jxsc",jxsi:"image/jxsi",jxss:"image/jxss",kar:"audio/midi",ktx:"image/ktx",ktx2:"image/ktx2",less:"text/less",lgr:"application/lgr+xml",list:"text/plain",litcoffee:"text/coffeescript",log:"text/plain",lostxml:"application/lost+xml",lrf:"application/octet-stream",m1v:"video/mpeg",m21:"application/mp21",m2a:"audio/mpeg",m2v:"video/mpeg",m3a:"audio/mpeg",m4a:"audio/mp4",m4p:"application/mp4",m4s:"video/iso.segment",ma:"application/mathematica",mads:"application/mads+xml",maei:"application/mmt-aei+xml",man:"text/troff",manifest:"text/cache-manifest",map:"application/json",mar:"application/octet-stream",markdown:"text/markdown",mathml:"application/mathml+xml",mb:"application/mathematica",mbox:"application/mbox",md:"text/markdown",mdx:"text/mdx",me:"text/troff",mesh:"model/mesh",meta4:"application/metalink4+xml",metalink:"application/metalink+xml",mets:"application/mets+xml",mft:"application/rpki-manifest",mid:"audio/midi",midi:"audio/midi",mime:"message/rfc822",mj2:"video/mj2",mjp2:"video/mj2",mjs:"text/javascript",mml:"text/mathml",mods:"application/mods+xml",mov:"video/quicktime",mp2:"audio/mpeg",mp21:"application/mp21",mp2a:"audio/mpeg",mp3:"audio/mpeg",mp4:"video/mp4",mp4a:"audio/mp4",mp4s:"application/mp4",mp4v:"video/mp4",mpd:"application/dash+xml",mpe:"video/mpeg",mpeg:"video/mpeg",mpf:"application/media-policy-dataset+xml",mpg:"video/mpeg",mpg4:"video/mp4",mpga:"audio/mpeg",mpp:"application/dash-patch+xml",mrc:"application/marc",mrcx:"application/marcxml+xml",ms:"text/troff",mscml:"application/mediaservercontrol+xml",msh:"model/mesh",msi:"application/octet-stream",msix:"application/msix",msixbundle:"application/msixbundle",msm:"application/octet-stream",msp:"application/octet-stream",mtl:"model/mtl",musd:"application/mmt-usd+xml",mxf:"application/mxf",mxmf:"audio/mobile-xmf",mxml:"application/xv+xml",n3:"text/n3",nb:"application/mathematica",nq:"application/n-quads",nt:"application/n-triples",obj:"model/obj",oda:"application/oda",oga:"audio/ogg",ogg:"audio/ogg",ogv:"video/ogg",ogx:"application/ogg",omdoc:"application/omdoc+xml",onepkg:"application/onenote",onetmp:"application/onenote",onetoc:"application/onenote",onetoc2:"application/onenote",opf:"application/oebps-package+xml",opus:"audio/ogg",otf:"font/otf",owl:"application/rdf+xml",oxps:"application/oxps",p10:"application/pkcs10",p7c:"application/pkcs7-mime",p7m:"application/pkcs7-mime",p7s:"application/pkcs7-signature",p8:"application/pkcs8",pdf:"application/pdf",pfr:"application/font-tdpfr",pgp:"application/pgp-encrypted",pkg:"application/octet-stream",pki:"application/pkixcmp",pkipath:"application/pkix-pkipath",pls:"application/pls+xml",png:"image/png",prc:"model/prc",prf:"application/pics-rules",provx:"application/provenance+xml",ps:"application/postscript",pskcxml:"application/pskc+xml",pti:"image/prs.pti",qt:"video/quicktime",raml:"application/raml+yaml",rapd:"application/route-apd+xml",rdf:"application/rdf+xml",relo:"application/p2p-overlay+xml",rif:"application/reginfo+xml",rl:"application/resource-lists+xml",rld:"application/resource-lists-diff+xml",rmi:"audio/midi",rnc:"application/relax-ng-compact-syntax",rng:"application/xml",roa:"application/rpki-roa",roff:"text/troff",rq:"application/sparql-query",rs:"application/rls-services+xml",rsat:"application/atsc-rsat+xml",rsd:"application/rsd+xml",rsheet:"application/urc-ressheet+xml",rss:"application/rss+xml",rtf:"text/rtf",rtx:"text/richtext",rusd:"application/route-usd+xml",s3m:"audio/s3m",sbml:"application/sbml+xml",scq:"application/scvp-cv-request",scs:"application/scvp-cv-response",sdp:"application/sdp",senmlx:"application/senml+xml",sensmlx:"application/sensml+xml",ser:"application/java-serialized-object",setpay:"application/set-payment-initiation",setreg:"application/set-registration-initiation",sgi:"image/sgi",sgm:"text/sgml",sgml:"text/sgml",shex:"text/shex",shf:"application/shf+xml",shtml:"text/html",sieve:"application/sieve",sig:"application/pgp-signature",sil:"audio/silk",silo:"model/mesh",siv:"application/sieve",slim:"text/slim",slm:"text/slim",sls:"application/route-s-tsid+xml",smi:"application/smil+xml",smil:"application/smil+xml",snd:"audio/basic",so:"application/octet-stream",spdx:"text/spdx",spp:"application/scvp-vp-response",spq:"application/scvp-vp-request",spx:"audio/ogg",sql:"application/sql",sru:"application/sru+xml",srx:"application/sparql-results+xml",ssdl:"application/ssdl+xml",ssml:"application/ssml+xml",stk:"application/hyperstudio",stl:"model/stl",stpx:"model/step+xml",stpxz:"model/step-xml+zip",stpz:"model/step+zip",styl:"text/stylus",stylus:"text/stylus",svg:"image/svg+xml",svgz:"image/svg+xml",swidtag:"application/swid+xml",t:"text/troff",t38:"image/t38",td:"application/urc-targetdesc+xml",tei:"application/tei+xml",teicorpus:"application/tei+xml",text:"text/plain",tfi:"application/thraud+xml",tfx:"image/tiff-fx",tif:"image/tiff",tiff:"image/tiff",toml:"application/toml",tr:"text/troff",trig:"application/trig",ts:"video/mp2t",tsd:"application/timestamped-data",tsv:"text/tab-separated-values",ttc:"font/collection",ttf:"font/ttf",ttl:"text/turtle",ttml:"application/ttml+xml",txt:"text/plain",u3d:"model/u3d",u8dsn:"message/global-delivery-status",u8hdr:"message/global-headers",u8mdn:"message/global-disposition-notification",u8msg:"message/global",ubj:"application/ubjson",uri:"text/uri-list",uris:"text/uri-list",urls:"text/uri-list",vcard:"text/vcard",vrml:"model/vrml",vtt:"text/vtt",vxml:"application/voicexml+xml",war:"application/java-archive",wasm:"application/wasm",wav:"audio/wav",weba:"audio/webm",webm:"video/webm",webmanifest:"application/manifest+json",webp:"image/webp",wgsl:"text/wgsl",wgt:"application/widget",wif:"application/watcherinfo+xml",wmf:"image/wmf",woff:"font/woff",woff2:"font/woff2",wrl:"model/vrml",wsdl:"application/wsdl+xml",wspolicy:"application/wspolicy+xml",x3d:"model/x3d+xml",x3db:"model/x3d+fastinfoset",x3dbz:"model/x3d+binary",x3dv:"model/x3d-vrml",x3dvz:"model/x3d+vrml",x3dz:"model/x3d+xml",xaml:"application/xaml+xml",xav:"application/xcap-att+xml",xca:"application/xcap-caps+xml",xcs:"application/calendar+xml",xdf:"application/xcap-diff+xml",xdssc:"application/dssc+xml",xel:"application/xcap-el+xml",xenc:"application/xenc+xml",xer:"application/patch-ops-error+xml",xfdf:"application/xfdf",xht:"application/xhtml+xml",xhtml:"application/xhtml+xml",xhvml:"application/xv+xml",xlf:"application/xliff+xml",xm:"audio/xm",xml:"text/xml",xns:"application/xcap-ns+xml",xop:"application/xop+xml",xpl:"application/xproc+xml",xsd:"application/xml",xsf:"application/prs.xsf+xml",xsl:"application/xml",xslt:"application/xml",xspf:"application/xspf+xml",xvm:"application/xv+xml",xvml:"application/xv+xml",yaml:"text/yaml",yang:"application/yang",yin:"application/yin+xml",yml:"text/yaml",zip:"application/zip"};function Pc(e){let t=(""+e).trim().toLowerCase(),n=t.lastIndexOf(".");return Oc[~n?t.substring(++n):t]}function Ic(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Bs(e){return fr.test(e)||!e.startsWith("/")?e:Ic(ft.value.base,e)}function Fc(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),Ce){const n="/Gridify/";t=Ds(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let i=__VP_HASH_MAP__[t.toLowerCase()];if(i||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",i=__VP_HASH_MAP__[t.toLowerCase()]),!i)return null;t=`${n}assets/${t}.${i}.js`}else t=`./${Ds(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let gn=[];function Cu(e){gn.push(e),$n(()=>{gn=gn.filter(t=>t!==e)})}const Nc=Symbol(),gr="http://a.com",kc=()=>({path:"/",component:null,data:dr});function Eu(e,t){const n=Ln(kc()),i={route:n,go:s};async function s(l=Ce?location.href:"/"){var a,c;l=vi(l),await((a=i.onBeforeRouteChange)==null?void 0:a.call(i,l))!==!1&&(qs(l),await r(l),await((c=i.onAfterRouteChanged)==null?void 0:c.call(i,l)))}let o=null;async function r(l,a=0,c=!1){var m;if(await((m=i.onBeforePageLoad)==null?void 0:m.call(i,l))===!1)return;const f=new URL(l,gr),d=o=f.pathname;try{let x=await e(d);if(!x)throw new Error(`Page not found: ${d}`);if(o===d){o=null;const{default:b,__pageData:j}=x;if(!b)throw new Error(`Invalid route component: ${b}`);n.path=Ce?d:Bs(d),n.component=Ft(b),n.data=Ft(j),Ce&&On(()=>{let I=ft.value.base+j.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ft.value.cleanUrls&&!I.endsWith("/")&&(I+=".html"),I!==f.pathname&&(f.pathname=I,l=I+f.search+f.hash,history.replaceState(null,"",l)),f.hash&&!a){let D=null;try{D=document.getElementById(decodeURIComponent(f.hash).slice(1))}catch(B){console.warn(B)}if(D){Us(D,f.hash);return}}window.scrollTo(0,a)})}}catch(x){if(!/fetch|Page not found/.test(x.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(x),!c)try{const b=await fetch(ft.value.base+"hashmap.json");window.__VP_HASH_MAP__=await b.json(),await r(l,a,!0);return}catch{}o===d&&(o=null,n.path=Ce?d:Bs(d),n.component=t?Ft(t):null,n.data=dr)}}return Ce&&(window.addEventListener("click",l=>{if(l.target.closest("button"))return;const c=l.target.closest("a");if(c&&!c.closest(".vp-raw")&&(c instanceof SVGElement||!c.download)){const{target:f}=c,{href:d,origin:m,pathname:x,hash:b,search:j}=new URL(c.href instanceof SVGAnimatedString?c.href.animVal:c.href,c.baseURI),I=window.location,D=Pc(x);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!f&&m===I.origin&&(!D||D==="text/html")&&(l.preventDefault(),x===I.pathname&&j===I.search?(b!==I.hash&&(history.pushState(null,"",b),window.dispatchEvent(new Event("hashchange"))),b?Us(c,b,c.classList.contains("header-anchor")):(qs(d),window.scrollTo(0,0))):s(d))}},{capture:!0}),window.addEventListener("popstate",async l=>{var a;await r(vi(location.href),l.state&&l.state.scrollPosition||0),(a=i.onAfterRouteChanged)==null||a.call(i,location.href)}),window.addEventListener("hashchange",l=>{l.preventDefault()})),i}function $c(){const e=Tt(Nc);if(!e)throw new Error("useRouter() is called without provider.");return e}function xr(){return $c().route}function Us(e,t,n=!1){let i=null;try{i=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(s){console.warn(s)}if(i){let s=function(){!n||Math.abs(c-window.scrollY)>window.innerHeight?window.scrollTo(0,c):window.scrollTo({left:0,top:c,behavior:"smooth"})},o=ft.value.scrollOffset,r=0,l=24;if(typeof o=="object"&&"padding"in o&&(l=o.padding,o=o.selector),typeof o=="number")r=o;else if(typeof o=="string")r=Ks(o,l);else if(Array.isArray(o))for(const f of o){const d=Ks(f,l);if(d){r=d;break}}const a=parseInt(window.getComputedStyle(i).paddingTop,10),c=window.scrollY+i.getBoundingClientRect().top-r+a;requestAnimationFrame(s)}}function Ks(e,t){const n=document.querySelector(e);if(!n)return 0;const i=n.getBoundingClientRect().bottom;return i<0?0:i+t}function qs(e){Ce&&e!==vi(location.href)&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",e))}function vi(e){const t=new URL(e,gr);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),ft.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 ti=()=>gn.forEach(e=>e()),Tu=$i({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=xr(),{site:n}=Mc();return()=>gi(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?gi(t.component,{onVnodeMounted:ti,onVnodeUpdated:ti,onVnodeUnmounted:ti}):"404 Page Not Found"])}}),Au=$i({setup(e,{slots:t}){const n=le(!1);return Lt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Su(){Ce&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const i=(n=t.parentElement)==null?void 0:n.parentElement;if(!i)return;const s=Array.from(i.querySelectorAll("input")).indexOf(t);if(s<0)return;const o=i.querySelector(".blocks");if(!o)return;const r=Array.from(o.children).find(c=>c.classList.contains("active"));if(!r)return;const l=o.children[s];if(!l||r===l)return;r.classList.remove("active"),l.classList.add("active");const a=i==null?void 0:i.querySelector(`label[for="${t.id}"]`);a==null||a.scrollIntoView({block:"nearest"})}})}function ju(){if(Ce){const e=new WeakMap;window.addEventListener("click",t=>{var i;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const s=n.parentElement,o=(i=n.nextElementSibling)==null?void 0:i.nextElementSibling;if(!s||!o)return;const r=/language-(shellscript|shell|bash|sh|zsh)/.test(s.className),l=[".vp-copy-ignore",".diff.remove"],a=o.cloneNode(!0);a.querySelectorAll(l.join(",")).forEach(f=>f.remove());let c=a.textContent||"";r&&(c=c.replace(/^ *(\$|>) /gm,"").trim()),Hc(c).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const f=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,f)})}})}}async function Hc(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 i=document.getSelection(),s=i?i.rangeCount>0&&i.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),s&&(i.removeAllRanges(),i.addRange(s)),n&&n.focus()}}function Ru(e,t){let n=[],i=!0;const s=o=>{if(i){i=!1;return}const r=o.map(Ws);n.forEach((l,a)=>{const c=r.findIndex(f=>f==null?void 0:f.isEqualNode(l??null));c!==-1?delete r[c]:(l==null||l.remove(),delete n[a])}),r.forEach(l=>l&&document.head.appendChild(l)),n=[...n,...r].filter(Boolean)};ki(()=>{const o=e.data,r=t.value,l=o&&o.description,a=o&&o.frontmatter.head||[],c=mr(r,o);c!==document.title&&(document.title=c);const f=l||r.description;let d=document.querySelector("meta[name=description]");d?d.getAttribute("content")!==f&&d.setAttribute("content",f):Ws(["meta",{name:"description",content:f}]),s(hr(r.head,Dc(a)))})}function Ws([e,t,n]){const i=document.createElement(e);for(const s in t)i.setAttribute(s,t[s]);return n&&(i.innerHTML=n),e==="script"&&!t.async&&(i.async=!1),i}function Vc(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Dc(e){return e.filter(t=>!Vc(t))}const ni=new Set,yr=()=>document.createElement("link"),Bc=e=>{const t=yr();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Uc=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let pn;const Kc=Ce&&(pn=yr())&&pn.relList&&pn.relList.supports&&pn.relList.supports("prefetch")?Bc:Uc;function Lu(){if(!Ce||!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 i=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(r=>{if(r.isIntersecting){const l=r.target;n.unobserve(l);const{pathname:a}=l;if(!ni.has(a)){ni.add(a);const c=Fc(a);c&&Kc(c)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{hostname:r,pathname:l}=new URL(o.href instanceof SVGAnimatedString?o.href.animVal:o.href,o.baseURI),a=l.match(/\.\w+$/);a&&a[0]!==".html"||o.target!=="_blank"&&r===location.hostname&&(l!==location.pathname?n.observe(o):ni.add(l))})})};Lt(i);const s=xr();Xe(()=>s.path,i),$n(()=>{n&&n.disconnect()})}export{cu as $,$n as A,Jc as B,Fl as C,Gc as D,Zc as E,ge as F,Ii as G,Cu as H,se as I,Yc as J,fr as K,xr as L,da as M,Tt as N,gu as O,xu as P,Ei as Q,On as R,bu as S,Qo as T,ou as U,Mn as V,Qc as W,du as X,vu as Y,Yl as Z,pu as _,Go as a,tu as a0,au as a1,nu as a2,gi as a3,Ru as a4,Nc as a5,wu as a6,Lc as a7,Tu as a8,Au as a9,ft as aa,fu as ab,Eu as ac,Fc as ad,Lu as ae,ju as af,Su as ag,vt as ah,Ki as ai,hu as aj,_u as ak,yu as al,mu as am,$c as an,Ze as ao,Lo as ap,Xc as aq,lu as ar,pe as as,iu as at,Ft as au,uu as av,qo as b,su as c,$i as d,ru as e,Bs as f,ie as g,le as h,Ec as i,Lt as j,zo as k,Pc as l,go as m,Ti as n,Uo as o,Wc as p,zc as q,eu as r,Cc as s,qc as t,Mc as u,Ce as v,yl as w,dc as x,Xe as y,ki as z}; diff --git a/assets/chunks/theme.nKR3Z4U4.js b/assets/chunks/theme.nKR3Z4U4.js new file mode 100644 index 00000000..6b013995 --- /dev/null +++ b/assets/chunks/theme.nKR3Z4U4.js @@ -0,0 +1,7 @@ +var xe=Object.defineProperty;var Ue=(s,e,t)=>e in s?xe(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var re=(s,e,t)=>(Ue(s,typeof e!="symbol"?e+"":e,t),t);import{d as g,o,c as l,r as d,n as I,a as H,t as S,b as $,w as h,T as ve,e as f,_ as m,u as Ge,i as je,l as Re,f as he,g as b,h as T,j as G,k as c,m as r,p as E,q as F,s as U,v as W,x as le,y as j,z as Q,A as pe,B as Pe,C as qe,D as R,F as C,E as B,G as we,H as ee,I as _,J as x,K as Ve,L as te,M as J,N as se,O as Ke,P as ce,Q as We,R as Ye,S as Le,U as Je,V as Xe,W as Ze,X as Qe,Y as Se,Z as Me,$ as et,a0 as tt,a1 as st,a2 as nt}from"./framework.BZkFhLI2.js";const at=g({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(o(),l("span",{class:I(["VPBadge",e.type])},[d(e.$slots,"default",{},()=>[H(S(e.text),1)])],2))}}),ot={key:0,class:"VPBackdrop"},rt=g({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(o(),$(ve,{name:"fade"},{default:h(()=>[e.show?(o(),l("div",ot)):f("",!0)]),_:1}))}}),it=m(rt,[["__scopeId","data-v-c79a1216"]]),w=Ge;function lt(s,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(s,e):(s(),(n=!0)&&setTimeout(()=>n=!1,e))}}function ue(s){return/^\//.test(s)?s:`/${s}`}function _e(s){const{pathname:e,search:t,hash:n,protocol:a}=new URL(s,"http://a.com");if(je(s)||s.startsWith("#")||!a.startsWith("http")||/\.(?!html|md)\w+($|\?)/i.test(s)&&Re(s))return s;const{site:i}=w(),u=e.endsWith("/")||e.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${n}`);return he(u)}function Y({removeCurrent:s=!0,correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:a,theme:i}=w(),u=b(()=>{var v,k;return{label:(v=t.value.locales[n.value])==null?void 0:v.label,link:((k=t.value.locales[n.value])==null?void 0:k.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:b(()=>Object.entries(t.value.locales).flatMap(([v,k])=>s&&u.value.label===k.label?[]:{text:k.label,link:ct(k.link||(v==="root"?"/":`/${v}/`),i.value.i18nRouting!==!1&&e,a.value.relativePath.slice(u.value.link.length-1),!t.value.cleanUrls)})),currentLang:u}}function ct(s,e,t,n){return e?s.replace(/\/$/,"")+ue(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):s}const ut=s=>(E("data-v-f87ff6e4"),s=s(),F(),s),dt={class:"NotFound"},vt={class:"code"},ht={class:"title"},pt=ut(()=>c("div",{class:"divider"},null,-1)),_t={class:"quote"},ft={class:"action"},mt=["href","aria-label"],gt=g({__name:"NotFound",setup(s){const{site:e,theme:t}=w(),{localeLinks:n}=Y({removeCurrent:!1}),a=T("/");return G(()=>{var u;const i=window.location.pathname.replace(e.value.base,"").replace(/(^.*?\/).*$/,"/$1");n.value.length&&(a.value=((u=n.value.find(({link:p})=>p.startsWith(i)))==null?void 0:u.link)||n.value[0].link)}),(i,u)=>{var p,v,k,P,y;return o(),l("div",dt,[c("p",vt,S(((p=r(t).notFound)==null?void 0:p.code)??"404"),1),c("h1",ht,S(((v=r(t).notFound)==null?void 0:v.title)??"PAGE NOT FOUND"),1),pt,c("blockquote",_t,S(((k=r(t).notFound)==null?void 0:k.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),c("div",ft,[c("a",{class:"link",href:r(he)(a.value),"aria-label":((P=r(t).notFound)==null?void 0:P.linkLabel)??"go to home"},S(((y=r(t).notFound)==null?void 0:y.linkText)??"Take me home"),9,mt)])])}}}),$t=m(gt,[["__scopeId","data-v-f87ff6e4"]]);function Te(s,e){if(Array.isArray(s))return X(s);if(s==null)return[];e=ue(e);const t=Object.keys(s).sort((a,i)=>i.split("/").length-a.split("/").length).find(a=>e.startsWith(ue(a))),n=t?s[t]:[];return Array.isArray(n)?X(n):X(n.items,n.base)}function kt(s){const e=[];let t=0;for(const n in s){const a=s[n];if(a.items){t=e.push(a);continue}e[t]||e.push({items:[]}),e[t].items.push(a)}return e}function bt(s){const e=[];function t(n){for(const a of n)a.text&&a.link&&e.push({text:a.text,link:a.link,docFooterText:a.docFooterText}),a.items&&t(a.items)}return t(s),e}function de(s,e){return Array.isArray(e)?e.some(t=>de(s,t)):U(s,e.link)?!0:e.items?de(s,e.items):!1}function X(s,e){return[...s].map(t=>{const n={...t},a=n.base||e;return a&&n.link&&(n.link=a+n.link),n.items&&(n.items=X(n.items,a)),n})}function D(){const{frontmatter:s,page:e,theme:t}=w(),n=le("(min-width: 960px)"),a=T(!1),i=b(()=>{const N=t.value.sidebar,M=e.value.relativePath;return N?Te(N,M):[]}),u=T(i.value);j(i,(N,M)=>{JSON.stringify(N)!==JSON.stringify(M)&&(u.value=i.value)});const p=b(()=>s.value.sidebar!==!1&&u.value.length>0&&s.value.layout!=="home"),v=b(()=>k?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),k=b(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),P=b(()=>p.value&&n.value),y=b(()=>p.value?kt(u.value):[]);function V(){a.value=!0}function L(){a.value=!1}function A(){a.value?L():V()}return{isOpen:a,sidebar:u,sidebarGroups:y,hasSidebar:p,hasAside:k,leftAside:v,isSidebarEnabled:P,open:V,close:L,toggle:A}}function yt(s,e){let t;Q(()=>{t=s.value?document.activeElement:void 0}),G(()=>{window.addEventListener("keyup",n)}),pe(()=>{window.removeEventListener("keyup",n)});function n(a){a.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}const Ce=T(W?location.hash:"");W&&window.addEventListener("hashchange",()=>{Ce.value=location.hash});function Pt(s){const{page:e}=w(),t=T(!1),n=b(()=>s.value.collapsed!=null),a=b(()=>!!s.value.link),i=T(!1),u=()=>{i.value=U(e.value.relativePath,s.value.link)};j([e,s,Ce],u),G(u);const p=b(()=>i.value?!0:s.value.items?de(e.value.relativePath,s.value.items):!1),v=b(()=>!!(s.value.items&&s.value.items.length));Q(()=>{t.value=!!(n.value&&s.value.collapsed)}),Pe(()=>{(i.value||p.value)&&(t.value=!1)});function k(){n.value&&(t.value=!t.value)}return{collapsed:t,collapsible:n,isLink:a,isActiveLink:i,hasActiveLink:p,hasChildren:v,toggle:k}}function wt(){const{hasSidebar:s}=D(),e=le("(min-width: 960px)"),t=le("(min-width: 1280px)");return{isAsideEnabled:b(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const Vt=71;function Ie(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function fe(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{title:Lt(t),link:"#"+t.id,level:n}});return St(e,s)}function Lt(s){let e="";for(const t of s.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function St(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,a]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;s=s.filter(u=>u.level>=n&&u.level<=a);const i=[];e:for(let u=0;u=0;v--){const k=s[v];if(k.level{requestAnimationFrame(i),window.addEventListener("scroll",n)}),qe(()=>{u(location.hash)}),pe(()=>{window.removeEventListener("scroll",n)});function i(){if(!t.value)return;const p=[].slice.call(s.value.querySelectorAll(".outline-link")),v=[].slice.call(document.querySelectorAll(".content .header-anchor")).filter(L=>p.some(A=>A.hash===L.hash&&L.offsetParent!==null)),k=window.scrollY,P=window.innerHeight,y=document.body.offsetHeight,V=Math.abs(k+P-y)<1;if(v.length&&V){u(v[v.length-1].hash);return}for(let L=0;L{const a=R("VPDocOutlineItem",!0);return o(),l("ul",{class:I(["VPDocOutlineItem",t.root?"root":"nested"])},[(o(!0),l(C,null,B(t.headers,({children:i,link:u,title:p})=>(o(),l("li",null,[c("a",{class:"outline-link",href:u,onClick:e,title:p},S(p),9,Ct),i!=null&&i.length?(o(),$(a,{key:0,headers:i},null,8,["headers"])):f("",!0)]))),256))],2)}}}),Ne=m(It,[["__scopeId","data-v-b933a997"]]),Nt=s=>(E("data-v-935f8a84"),s=s(),F(),s),At={class:"content"},Bt={class:"outline-title",role:"heading","aria-level":"2"},Ht={"aria-labelledby":"doc-outline-aria-label"},zt=Nt(()=>c("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),Et=g({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=w(),n=we([]);ee(()=>{n.value=fe(e.value.outline??t.value.outline)});const a=T(),i=T();return Mt(a,i),(u,p)=>(o(),l("div",{class:I(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:a,role:"navigation"},[c("div",At,[c("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),c("div",Bt,S(r(Ie)(r(t))),1),c("nav",Ht,[zt,_(Ne,{headers:n.value,root:!0},null,8,["headers"])])])],2))}}),Ft=m(Et,[["__scopeId","data-v-935f8a84"]]),Dt={class:"VPDocAsideCarbonAds"},Ot=g({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,n)=>(o(),l("div",Dt,[_(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),xt=s=>(E("data-v-3f215769"),s=s(),F(),s),Ut={class:"VPDocAside"},Gt=xt(()=>c("div",{class:"spacer"},null,-1)),jt=g({__name:"VPDocAside",setup(s){const{theme:e}=w();return(t,n)=>(o(),l("div",Ut,[d(t.$slots,"aside-top",{},void 0,!0),d(t.$slots,"aside-outline-before",{},void 0,!0),_(Ft),d(t.$slots,"aside-outline-after",{},void 0,!0),Gt,d(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(o(),$(Ot,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):f("",!0),d(t.$slots,"aside-ads-after",{},void 0,!0),d(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Rt=m(jt,[["__scopeId","data-v-3f215769"]]);function qt(){const{theme:s,page:e}=w();return b(()=>{const{text:t="Edit this page",pattern:n=""}=s.value.editLink||{};let a;return typeof n=="function"?a=n(e.value):a=n.replace(/:path/g,e.value.filePath),{url:a,text:t}})}function Kt(){const{page:s,theme:e,frontmatter:t}=w();return b(()=>{var v,k,P,y,V,L,A,N;const n=Te(e.value.sidebar,s.value.relativePath),a=bt(n),i=a.findIndex(M=>U(s.value.relativePath,M.link)),u=((v=e.value.docFooter)==null?void 0:v.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((k=e.value.docFooter)==null?void 0:k.next)===!1&&!t.value.next||t.value.next===!1;return{prev:u?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((P=a[i-1])==null?void 0:P.docFooterText)??((y=a[i-1])==null?void 0:y.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((V=a[i-1])==null?void 0:V.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((L=a[i+1])==null?void 0:L.docFooterText)??((A=a[i+1])==null?void 0:A.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((N=a[i+1])==null?void 0:N.link)}}})}const Wt={},Yt={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Jt=c("path",{d:"M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"},null,-1),Xt=c("path",{d:"M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"},null,-1),Zt=[Jt,Xt];function Qt(s,e){return o(),l("svg",Yt,Zt)}const es=m(Wt,[["render",Qt]]),z=g({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=b(()=>e.tag??(e.href?"a":"span")),n=b(()=>e.href&&Ve.test(e.href));return(a,i)=>(o(),$(x(t.value),{class:I(["VPLink",{link:a.href,"vp-external-link-icon":n.value,"no-icon":a.noIcon}]),href:a.href?r(_e)(a.href):void 0,target:a.target??(n.value?"_blank":void 0),rel:a.rel??(n.value?"noreferrer":void 0)},{default:h(()=>[d(a.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),ts={class:"VPLastUpdated"},ss=["datetime"],ns=g({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,frontmatter:n,lang:a}=w(),i=b(()=>new Date(n.value.lastUpdated??t.value.lastUpdated)),u=b(()=>i.value.toISOString()),p=T("");return G(()=>{Q(()=>{var v,k,P;p.value=new Intl.DateTimeFormat((k=(v=e.value.lastUpdated)==null?void 0:v.formatOptions)!=null&&k.forceLocale?a.value:void 0,((P=e.value.lastUpdated)==null?void 0:P.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(i.value)})}),(v,k)=>{var P;return o(),l("p",ts,[H(S(((P=r(e).lastUpdated)==null?void 0:P.text)||r(e).lastUpdatedText||"Last updated")+": ",1),c("time",{datetime:u.value},S(p.value),9,ss)])}}}),as=m(ns,[["__scopeId","data-v-7e05ebdb"]]),os={key:0,class:"VPDocFooter"},rs={key:0,class:"edit-info"},is={key:0,class:"edit-link"},ls={key:1,class:"last-updated"},cs={key:1,class:"prev-next"},us={class:"pager"},ds=["innerHTML"],vs=["innerHTML"],hs={class:"pager"},ps=["innerHTML"],_s=["innerHTML"],fs=g({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:n}=w(),a=qt(),i=Kt(),u=b(()=>e.value.editLink&&n.value.editLink!==!1),p=b(()=>t.value.lastUpdated&&n.value.lastUpdated!==!1),v=b(()=>u.value||p.value||i.value.prev||i.value.next);return(k,P)=>{var y,V,L,A;return v.value?(o(),l("footer",os,[d(k.$slots,"doc-footer-before",{},void 0,!0),u.value||p.value?(o(),l("div",rs,[u.value?(o(),l("div",is,[_(z,{class:"edit-link-button",href:r(a).url,"no-icon":!0},{default:h(()=>[_(es,{class:"edit-link-icon","aria-label":"edit icon"}),H(" "+S(r(a).text),1)]),_:1},8,["href"])])):f("",!0),p.value?(o(),l("div",ls,[_(as)])):f("",!0)])):f("",!0),(y=r(i).prev)!=null&&y.link||(V=r(i).next)!=null&&V.link?(o(),l("nav",cs,[c("div",us,[(L=r(i).prev)!=null&&L.link?(o(),$(z,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:h(()=>{var N;return[c("span",{class:"desc",innerHTML:((N=r(e).docFooter)==null?void 0:N.prev)||"Previous page"},null,8,ds),c("span",{class:"title",innerHTML:r(i).prev.text},null,8,vs)]}),_:1},8,["href"])):f("",!0)]),c("div",hs,[(A=r(i).next)!=null&&A.link?(o(),$(z,{key:0,class:"pager-link next",href:r(i).next.link},{default:h(()=>{var N;return[c("span",{class:"desc",innerHTML:((N=r(e).docFooter)==null?void 0:N.next)||"Next page"},null,8,ps),c("span",{class:"title",innerHTML:r(i).next.text},null,8,_s)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),ms=m(fs,[["__scopeId","data-v-48f9bb55"]]),gs=s=>(E("data-v-ad5bd23b"),s=s(),F(),s),$s={class:"container"},ks=gs(()=>c("div",{class:"aside-curtain"},null,-1)),bs={class:"aside-container"},ys={class:"aside-content"},Ps={class:"content"},ws={class:"content-container"},Vs={class:"main"},Ls=g({__name:"VPDoc",setup(s){const{theme:e}=w(),t=te(),{hasSidebar:n,hasAside:a,leftAside:i}=D(),u=b(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(p,v)=>{const k=R("Content");return o(),l("div",{class:I(["VPDoc",{"has-sidebar":r(n),"has-aside":r(a)}])},[d(p.$slots,"doc-top",{},void 0,!0),c("div",$s,[r(a)?(o(),l("div",{key:0,class:I(["aside",{"left-aside":r(i)}])},[ks,c("div",bs,[c("div",ys,[_(Rt,null,{"aside-top":h(()=>[d(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[d(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[d(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[d(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[d(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[d(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),c("div",Ps,[c("div",ws,[d(p.$slots,"doc-before",{},void 0,!0),c("main",Vs,[_(k,{class:I(["vp-doc",[u.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),_(ms,null,{"doc-footer-before":h(()=>[d(p.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),d(p.$slots,"doc-after",{},void 0,!0)])])]),d(p.$slots,"doc-bottom",{},void 0,!0)],2)}}}),Ss=m(Ls,[["__scopeId","data-v-ad5bd23b"]]),Ms=g({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{}},setup(s){const e=s,t=b(()=>e.href&&Ve.test(e.href)),n=b(()=>e.tag||e.href?"a":"button");return(a,i)=>(o(),$(x(n.value),{class:I(["VPButton",[a.size,a.theme]]),href:a.href?r(_e)(a.href):void 0,target:t.value?"_blank":void 0,rel:t.value?"noreferrer":void 0},{default:h(()=>[H(S(a.text),1)]),_:1},8,["class","href","target","rel"]))}}),Ts=m(Ms,[["__scopeId","data-v-c1c5efc1"]]),Cs=["src","alt"],Is=g({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const n=R("VPImage",!0);return e.image?(o(),l(C,{key:0},[typeof e.image=="string"||"src"in e.image?(o(),l("img",J({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(he)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,Cs)):(o(),l(C,{key:1},[_(n,J({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),_(n,J({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),Z=m(Is,[["__scopeId","data-v-8426fc1a"]]),Ns=s=>(E("data-v-da5d1713"),s=s(),F(),s),As={class:"container"},Bs={class:"main"},Hs={key:0,class:"name"},zs=["innerHTML"],Es=["innerHTML"],Fs=["innerHTML"],Ds={key:0,class:"actions"},Os={key:0,class:"image"},xs={class:"image-container"},Us=Ns(()=>c("div",{class:"image-bg"},null,-1)),Gs=g({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=se("hero-image-slot-exists");return(t,n)=>(o(),l("div",{class:I(["VPHero",{"has-image":t.image||r(e)}])},[c("div",As,[c("div",Bs,[d(t.$slots,"home-hero-info",{},()=>[t.name?(o(),l("h1",Hs,[c("span",{innerHTML:t.name,class:"clip"},null,8,zs)])):f("",!0),t.text?(o(),l("p",{key:1,innerHTML:t.text,class:"text"},null,8,Es)):f("",!0),t.tagline?(o(),l("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Fs)):f("",!0)],!0),t.actions?(o(),l("div",Ds,[(o(!0),l(C,null,B(t.actions,a=>(o(),l("div",{key:a.link,class:"action"},[_(Ts,{tag:"a",size:"medium",theme:a.theme,text:a.text,href:a.link},null,8,["theme","text","href"])]))),128))])):f("",!0)]),t.image||r(e)?(o(),l("div",Os,[c("div",xs,[Us,d(t.$slots,"home-hero-image",{},()=>[t.image?(o(),$(Z,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),js=m(Gs,[["__scopeId","data-v-da5d1713"]]),Rs=g({__name:"VPHomeHero",setup(s){const{frontmatter:e}=w();return(t,n)=>r(e).hero?(o(),$(js,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info":h(()=>[d(t.$slots,"home-hero-info")]),"home-hero-image":h(()=>[d(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),qs={},Ks={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Ws=c("path",{d:"M19.9,12.4c0.1-0.2,0.1-0.5,0-0.8c-0.1-0.1-0.1-0.2-0.2-0.3l-7-7c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l5.3,5.3H5c-0.6,0-1,0.4-1,1s0.4,1,1,1h11.6l-5.3,5.3c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l7-7C19.8,12.6,19.9,12.5,19.9,12.4z"},null,-1),Ys=[Ws];function Js(s,e){return o(),l("svg",Ks,Ys)}const Xs=m(qs,[["render",Js]]),Zs={class:"box"},Qs={key:0,class:"icon"},en=["innerHTML"],tn=["innerHTML"],sn=["innerHTML"],nn={key:4,class:"link-text"},an={class:"link-text-value"},on=g({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(o(),$(z,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:h(()=>[c("article",Zs,[typeof e.icon=="object"&&e.icon.wrap?(o(),l("div",Qs,[_(Z,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(o(),$(Z,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(o(),l("div",{key:2,class:"icon",innerHTML:e.icon},null,8,en)):f("",!0),c("h2",{class:"title",innerHTML:e.title},null,8,tn),e.details?(o(),l("p",{key:3,class:"details",innerHTML:e.details},null,8,sn)):f("",!0),e.linkText?(o(),l("div",nn,[c("p",an,[H(S(e.linkText)+" ",1),_(Xs,{class:"link-text-icon"})])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),rn=m(on,[["__scopeId","data-v-33204567"]]),ln={key:0,class:"VPFeatures"},cn={class:"container"},un={class:"items"},dn=g({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=b(()=>{const n=e.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,a)=>n.features?(o(),l("div",ln,[c("div",cn,[c("div",un,[(o(!0),l(C,null,B(n.features,i=>(o(),l("div",{key:i.title,class:I(["item",[t.value]])},[_(rn,{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))])])])):f("",!0)}}),vn=m(dn,[["__scopeId","data-v-a6181336"]]),hn=g({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=w();return(t,n)=>r(e).features?(o(),$(vn,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):f("",!0)}}),pn={class:"VPHome"},_n=g({__name:"VPHome",setup(s){return(e,t)=>{const n=R("Content");return o(),l("div",pn,[d(e.$slots,"home-hero-before",{},void 0,!0),_(Rs,null,{"home-hero-info":h(()=>[d(e.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":h(()=>[d(e.$slots,"home-hero-image",{},void 0,!0)]),_:3}),d(e.$slots,"home-hero-after",{},void 0,!0),d(e.$slots,"home-features-before",{},void 0,!0),_(hn),d(e.$slots,"home-features-after",{},void 0,!0),_(n)])}}}),fn=m(_n,[["__scopeId","data-v-d82743a8"]]),mn={},gn={class:"VPPage"};function $n(s,e){const t=R("Content");return o(),l("div",gn,[d(s.$slots,"page-top"),_(t),d(s.$slots,"page-bottom")])}const kn=m(mn,[["render",$n]]),bn=g({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=w(),{hasSidebar:n}=D();return(a,i)=>(o(),l("div",{class:I(["VPContent",{"has-sidebar":r(n),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?d(a.$slots,"not-found",{key:0},()=>[_($t)],!0):r(t).layout==="page"?(o(),$(kn,{key:1},{"page-top":h(()=>[d(a.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[d(a.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(o(),$(fn,{key:2},{"home-hero-before":h(()=>[d(a.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":h(()=>[d(a.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":h(()=>[d(a.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[d(a.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[d(a.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[d(a.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(o(),$(x(r(t).layout),{key:3})):(o(),$(Ss,{key:4},{"doc-top":h(()=>[d(a.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[d(a.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":h(()=>[d(a.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[d(a.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[d(a.$slots,"doc-after",{},void 0,!0)]),"aside-top":h(()=>[d(a.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":h(()=>[d(a.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[d(a.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[d(a.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[d(a.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":h(()=>[d(a.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),yn=m(bn,[["__scopeId","data-v-669faec9"]]),Pn={class:"container"},wn=["innerHTML"],Vn=["innerHTML"],Ln=g({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=w(),{hasSidebar:n}=D();return(a,i)=>r(e).footer&&r(t).footer!==!1?(o(),l("footer",{key:0,class:I(["VPFooter",{"has-sidebar":r(n)}])},[c("div",Pn,[r(e).footer.message?(o(),l("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,wn)):f("",!0),r(e).footer.copyright?(o(),l("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,Vn)):f("",!0)])],2)):f("",!0)}}),Sn=m(Ln,[["__scopeId","data-v-e315a0ad"]]);function Ae(){const{theme:s,frontmatter:e}=w(),t=we([]),n=b(()=>t.value.length>0);return ee(()=>{t.value=fe(e.value.outline??s.value.outline)}),{headers:t,hasLocalNav:n}}const Mn={},Tn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Cn=c("path",{d:"M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"},null,-1),In=[Cn];function Nn(s,e){return o(),l("svg",Tn,In)}const Be=m(Mn,[["render",Nn]]),An={class:"header"},Bn={class:"outline"},Hn=g({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=w(),n=T(!1),a=T(0),i=T(),u=T();Ke(i,()=>{n.value=!1}),ce("Escape",()=>{n.value=!1}),ee(()=>{n.value=!1});function p(){n.value=!n.value,a.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function v(P){P.target.classList.contains("outline-link")&&(u.value&&(u.value.style.transition="none"),Ye(()=>{n.value=!1}))}function k(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(P,y)=>(o(),l("div",{class:"VPLocalNavOutlineDropdown",style:We({"--vp-vh":a.value+"px"}),ref_key:"main",ref:i},[P.headers.length>0?(o(),l("button",{key:0,onClick:p,class:I({open:n.value})},[H(S(r(Ie)(r(t)))+" ",1),_(Be,{class:"icon"})],2)):(o(),l("button",{key:1,onClick:k},S(r(t).returnToTopLabel||"Return to top"),1)),_(ve,{name:"flyout"},{default:h(()=>[n.value?(o(),l("div",{key:0,ref_key:"items",ref:u,class:"items",onClick:v},[c("div",An,[c("a",{class:"top-link",href:"#",onClick:k},S(r(t).returnToTopLabel||"Return to top"),1)]),c("div",Bn,[_(Ne,{headers:P.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),zn=m(Hn,[["__scopeId","data-v-af18c0d5"]]),En={},Fn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Dn=c("path",{d:"M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"},null,-1),On=c("path",{d:"M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"},null,-1),xn=c("path",{d:"M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"},null,-1),Un=c("path",{d:"M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"},null,-1),Gn=[Dn,On,xn,Un];function jn(s,e){return o(),l("svg",Fn,Gn)}const Rn=m(En,[["render",jn]]),qn={class:"container"},Kn=["aria-expanded"],Wn={class:"menu-text"},Yn=g({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=w(),{hasSidebar:n}=D(),{headers:a}=Ae(),{y:i}=Le(),u=T(0);G(()=>{u.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),ee(()=>{a.value=fe(t.value.outline??e.value.outline)});const p=b(()=>a.value.length===0),v=b(()=>p.value&&!n.value),k=b(()=>({VPLocalNav:!0,"has-sidebar":n.value,empty:p.value,fixed:v.value}));return(P,y)=>r(t).layout!=="home"&&(!v.value||r(i)>=u.value)?(o(),l("div",{key:0,class:I(k.value)},[c("div",qn,[r(n)?(o(),l("button",{key:0,class:"menu","aria-expanded":P.open,"aria-controls":"VPSidebarNav",onClick:y[0]||(y[0]=V=>P.$emit("open-menu"))},[_(Rn,{class:"menu-icon"}),c("span",Wn,S(r(e).sidebarMenuLabel||"Menu"),1)],8,Kn)):f("",!0),_(zn,{headers:r(a),navHeight:u.value},null,8,["headers","navHeight"])])],2)):f("",!0)}}),Jn=m(Yn,[["__scopeId","data-v-0282ae07"]]);function Xn(){const s=T(!1);function e(){s.value=!0,window.addEventListener("resize",a)}function t(){s.value=!1,window.removeEventListener("resize",a)}function n(){s.value?t():e()}function a(){window.outerWidth>=768&&t()}const i=te();return j(()=>i.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:n}}const Zn={},Qn={class:"VPSwitch",type:"button",role:"switch"},ea={class:"check"},ta={key:0,class:"icon"};function sa(s,e){return o(),l("button",Qn,[c("span",ea,[s.$slots.default?(o(),l("span",ta,[d(s.$slots,"default",{},void 0,!0)])):f("",!0)])])}const na=m(Zn,[["render",sa],["__scopeId","data-v-b1685198"]]),aa={},oa={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ra=c("path",{d:"M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"},null,-1),ia=[ra];function la(s,e){return o(),l("svg",oa,ia)}const ca=m(aa,[["render",la]]),ua={},da={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},va=Je('',9),ha=[va];function pa(s,e){return o(),l("svg",da,ha)}const _a=m(ua,[["render",pa]]),fa=g({__name:"VPSwitchAppearance",setup(s){const{isDark:e,theme:t}=w(),n=se("toggle-appearance",()=>{e.value=!e.value}),a=b(()=>e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme");return(i,u)=>(o(),$(na,{title:a.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(n)},{default:h(()=>[_(_a,{class:"sun"}),_(ca,{class:"moon"})]),_:1},8,["title","aria-checked","onClick"]))}}),me=m(fa,[["__scopeId","data-v-1736f215"]]),ma={key:0,class:"VPNavBarAppearance"},ga=g({__name:"VPNavBarAppearance",setup(s){const{site:e}=w();return(t,n)=>r(e).appearance&&r(e).appearance!=="force-dark"?(o(),l("div",ma,[_(me)])):f("",!0)}}),$a=m(ga,[["__scopeId","data-v-e6aabb21"]]),ge=T();let He=!1,ie=0;function ka(s){const e=T(!1);if(W){!He&&ba(),ie++;const t=j(ge,n=>{var a,i,u;n===s.el.value||(a=s.el.value)!=null&&a.contains(n)?(e.value=!0,(i=s.onFocus)==null||i.call(s)):(e.value=!1,(u=s.onBlur)==null||u.call(s))});pe(()=>{t(),ie--,ie||ya()})}return Xe(e)}function ba(){document.addEventListener("focusin",ze),He=!0,ge.value=document.activeElement}function ya(){document.removeEventListener("focusin",ze)}function ze(){ge.value=document.activeElement}const Pa={},wa={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Va=c("path",{d:"M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"},null,-1),La=[Va];function Sa(s,e){return o(),l("svg",wa,La)}const Ee=m(Pa,[["render",Sa]]),Ma={},Ta={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Ca=c("circle",{cx:"12",cy:"12",r:"2"},null,-1),Ia=c("circle",{cx:"19",cy:"12",r:"2"},null,-1),Na=c("circle",{cx:"5",cy:"12",r:"2"},null,-1),Aa=[Ca,Ia,Na];function Ba(s,e){return o(),l("svg",Ta,Aa)}const Ha=m(Ma,[["render",Ba]]),za={class:"VPMenuLink"},Ea=g({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=w();return(t,n)=>(o(),l("div",za,[_(z,{class:I({active:r(U)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:h(()=>[H(S(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),ne=m(Ea,[["__scopeId","data-v-43f1e123"]]),Fa={class:"VPMenuGroup"},Da={key:0,class:"title"},Oa=g({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(o(),l("div",Fa,[e.text?(o(),l("p",Da,S(e.text),1)):f("",!0),(o(!0),l(C,null,B(e.items,n=>(o(),l(C,null,["link"in n?(o(),$(ne,{key:0,item:n},null,8,["item"])):f("",!0)],64))),256))]))}}),xa=m(Oa,[["__scopeId","data-v-69e747b5"]]),Ua={class:"VPMenu"},Ga={key:0,class:"items"},ja=g({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(o(),l("div",Ua,[e.items?(o(),l("div",Ga,[(o(!0),l(C,null,B(e.items,n=>(o(),l(C,{key:n.text},["link"in n?(o(),$(ne,{key:0,item:n},null,8,["item"])):(o(),$(xa,{key:1,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0),d(e.$slots,"default",{},void 0,!0)]))}}),Ra=m(ja,[["__scopeId","data-v-e7ea1737"]]),qa=["aria-expanded","aria-label"],Ka={key:0,class:"text"},Wa=["innerHTML"],Ya={class:"menu"},Ja=g({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=T(!1),t=T();ka({el:t,onBlur:n});function n(){e.value=!1}return(a,i)=>(o(),l("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=u=>e.value=!0),onMouseleave:i[2]||(i[2]=u=>e.value=!1)},[c("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":a.label,onClick:i[0]||(i[0]=u=>e.value=!e.value)},[a.button||a.icon?(o(),l("span",Ka,[a.icon?(o(),$(x(a.icon),{key:0,class:"option-icon"})):f("",!0),a.button?(o(),l("span",{key:1,innerHTML:a.button},null,8,Wa)):f("",!0),_(Ee,{class:"text-icon"})])):(o(),$(Ha,{key:1,class:"icon"}))],8,qa),c("div",Ya,[_(Ra,{items:a.items},{default:h(()=>[d(a.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),$e=m(Ja,[["__scopeId","data-v-9c007e85"]]),Xa={discord:'Discord',facebook:'Facebook',github:'GitHub',instagram:'Instagram',linkedin:'LinkedIn',mastodon:'Mastodon',slack:'Slack',twitter:'Twitter',x:'X',youtube:'YouTube'},Za=["href","aria-label","innerHTML"],Qa=g({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=b(()=>typeof e.icon=="object"?e.icon.svg:Xa[e.icon]);return(n,a)=>(o(),l("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,Za))}}),eo=m(Qa,[["__scopeId","data-v-f80f8133"]]),to={class:"VPSocialLinks"},so=g({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(o(),l("div",to,[(o(!0),l(C,null,B(e.links,({link:n,icon:a,ariaLabel:i})=>(o(),$(eo,{key:n,icon:a,link:n,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),ke=m(so,[["__scopeId","data-v-7bc22406"]]),no={key:0,class:"group translations"},ao={class:"trans-title"},oo={key:1,class:"group"},ro={class:"item appearance"},io={class:"label"},lo={class:"appearance-action"},co={key:2,class:"group"},uo={class:"item social-links"},vo=g({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=w(),{localeLinks:n,currentLang:a}=Y({correspondingLink:!0}),i=b(()=>n.value.length&&a.value.label||e.value.appearance||t.value.socialLinks);return(u,p)=>i.value?(o(),$($e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:h(()=>[r(n).length&&r(a).label?(o(),l("div",no,[c("p",ao,S(r(a).label),1),(o(!0),l(C,null,B(r(n),v=>(o(),$(ne,{key:v.link,item:v},null,8,["item"]))),128))])):f("",!0),r(e).appearance&&r(e).appearance!=="force-dark"?(o(),l("div",oo,[c("div",ro,[c("p",io,S(r(t).darkModeSwitchLabel||"Appearance"),1),c("div",lo,[_(me)])])])):f("",!0),r(t).socialLinks?(o(),l("div",co,[c("div",uo,[_(ke,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),ho=m(vo,[["__scopeId","data-v-d0bd9dde"]]),po=s=>(E("data-v-e5dd9c1c"),s=s(),F(),s),_o=["aria-expanded"],fo=po(()=>c("span",{class:"container"},[c("span",{class:"top"}),c("span",{class:"middle"}),c("span",{class:"bottom"})],-1)),mo=[fo],go=g({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(o(),l("button",{type:"button",class:I(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},mo,10,_o))}}),$o=m(go,[["__scopeId","data-v-e5dd9c1c"]]),ko=["innerHTML"],bo=g({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=w();return(t,n)=>(o(),$(z,{class:I({VPNavBarMenuLink:!0,active:r(U)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:h(()=>[c("span",{innerHTML:t.item.text},null,8,ko)]),_:1},8,["class","href","target","rel"]))}}),yo=m(bo,[["__scopeId","data-v-42ef59de"]]),Po=g({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=w(),n=i=>"link"in i?U(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(n),a=b(()=>n(e.item));return(i,u)=>(o(),$($e,{class:I({VPNavBarMenuGroup:!0,active:r(U)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||a.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),wo=s=>(E("data-v-7f418b0f"),s=s(),F(),s),Vo={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Lo=wo(()=>c("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),So=g({__name:"VPNavBarMenu",setup(s){const{theme:e}=w();return(t,n)=>r(e).nav?(o(),l("nav",Vo,[Lo,(o(!0),l(C,null,B(r(e).nav,a=>(o(),l(C,{key:a.text},["link"in a?(o(),$(yo,{key:0,item:a},null,8,["item"])):(o(),$(Po,{key:1,item:a},null,8,["item"]))],64))),128))])):f("",!0)}}),Mo=m(So,[["__scopeId","data-v-7f418b0f"]]);function To(s){const{localeIndex:e,theme:t}=w();function n(a){var A,N,M;const i=a.split("."),u=(A=t.value.search)==null?void 0:A.options,p=u&&typeof u=="object",v=p&&((M=(N=u.locales)==null?void 0:N[e.value])==null?void 0:M.translations)||null,k=p&&u.translations||null;let P=v,y=k,V=s;const L=i.pop();for(const q of i){let O=null;const K=V==null?void 0:V[q];K&&(O=V=K);const ae=y==null?void 0:y[q];ae&&(O=y=ae);const oe=P==null?void 0:P[q];oe&&(O=P=oe),K||(V=O),ae||(y=O),oe||(P=O)}return(P==null?void 0:P[L])??(y==null?void 0:y[L])??(V==null?void 0:V[L])??""}return n}const Co=["aria-label"],Io={class:"DocSearch-Button-Container"},No=c("svg",{class:"DocSearch-Search-Icon",width:"20",height:"20",viewBox:"0 0 20 20","aria-label":"search icon"},[c("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1),Ao={class:"DocSearch-Button-Placeholder"},Bo=c("span",{class:"DocSearch-Button-Keys"},[c("kbd",{class:"DocSearch-Button-Key"}),c("kbd",{class:"DocSearch-Button-Key"},"K")],-1),ye=g({__name:"VPNavBarSearchButton",setup(s){const t=To({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(n,a)=>(o(),l("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[c("span",Io,[No,c("span",Ao,S(r(t)("button.buttonText")),1)]),Bo],8,Co))}}),Ho={class:"VPNavBarSearch"},zo={id:"local-search"},Eo={key:1,id:"docsearch"},Fo=g({__name:"VPNavBarSearch",setup(s){const e=Ze(()=>Qe(()=>import("./VPLocalSearchBox.-MOopR_s.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:n}=w(),a=T(!1),i=T(!1);G(()=>{});function u(){a.value||(a.value=!0,setTimeout(p,16))}function p(){const y=new Event("keydown");y.key="k",y.metaKey=!0,window.dispatchEvent(y),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||p()},16)}function v(y){const V=y.target,L=V.tagName;return V.isContentEditable||L==="INPUT"||L==="SELECT"||L==="TEXTAREA"}const k=T(!1);ce("k",y=>{(y.ctrlKey||y.metaKey)&&(y.preventDefault(),k.value=!0)}),ce("/",y=>{v(y)||(y.preventDefault(),k.value=!0)});const P="local";return(y,V)=>{var L;return o(),l("div",Ho,[r(P)==="local"?(o(),l(C,{key:0},[k.value?(o(),$(r(e),{key:0,onClose:V[0]||(V[0]=A=>k.value=!1)})):f("",!0),c("div",zo,[_(ye,{onClick:V[1]||(V[1]=A=>k.value=!0)})])],64)):r(P)==="algolia"?(o(),l(C,{key:1},[a.value?(o(),$(r(t),{key:0,algolia:((L=r(n).search)==null?void 0:L.options)??r(n).algolia,onVnodeBeforeMount:V[2]||(V[2]=A=>i.value=!0)},null,8,["algolia"])):f("",!0),i.value?f("",!0):(o(),l("div",Eo,[_(ye,{onClick:u})]))],64)):f("",!0)])}}}),Do=g({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=w();return(t,n)=>r(e).socialLinks?(o(),$(ke,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Oo=m(Do,[["__scopeId","data-v-0394ad82"]]),xo=["href"],Uo=g({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=w(),{hasSidebar:n}=D(),{currentLang:a}=Y();return(i,u)=>(o(),l("div",{class:I(["VPNavBarTitle",{"has-sidebar":r(n)}])},[c("a",{class:"title",href:r(t).logoLink??r(_e)(r(a).link)},[d(i.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(o(),$(Z,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):f("",!0),r(t).siteTitle?(o(),l(C,{key:1},[H(S(r(t).siteTitle),1)],64)):r(t).siteTitle===void 0?(o(),l(C,{key:2},[H(S(r(e).title),1)],64)):f("",!0),d(i.$slots,"nav-bar-title-after",{},void 0,!0)],8,xo)],2))}}),Go=m(Uo,[["__scopeId","data-v-86d1bed8"]]),jo={},Ro={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},qo=c("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),Ko=c("path",{d:" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z ",class:"css-c4d79v"},null,-1),Wo=[qo,Ko];function Yo(s,e){return o(),l("svg",Ro,Wo)}const Fe=m(jo,[["render",Yo]]),Jo={class:"items"},Xo={class:"title"},Zo=g({__name:"VPNavBarTranslations",setup(s){const{theme:e}=w(),{localeLinks:t,currentLang:n}=Y({correspondingLink:!0});return(a,i)=>r(t).length&&r(n).label?(o(),$($e,{key:0,class:"VPNavBarTranslations",icon:Fe,label:r(e).langMenuLabel||"Change language"},{default:h(()=>[c("div",Jo,[c("p",Xo,S(r(n).label),1),(o(!0),l(C,null,B(r(t),u=>(o(),$(ne,{key:u.link,item:u},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),Qo=m(Zo,[["__scopeId","data-v-74abcbb9"]]),er=s=>(E("data-v-19c990f1"),s=s(),F(),s),tr={class:"wrapper"},sr={class:"container"},nr={class:"title"},ar={class:"content"},or={class:"content-body"},rr=er(()=>c("div",{class:"divider"},[c("div",{class:"divider-line"})],-1)),ir=g({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const{y:e}=Le(),{hasSidebar:t}=D(),{hasLocalNav:n}=Ae(),{frontmatter:a}=w(),i=T({});return Pe(()=>{i.value={"has-sidebar":t.value,"has-local-nav":n.value,top:a.value.layout==="home"&&e.value===0}}),(u,p)=>(o(),l("div",{class:I(["VPNavBar",i.value])},[c("div",tr,[c("div",sr,[c("div",nr,[_(Go,null,{"nav-bar-title-before":h(()=>[d(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[d(u.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),c("div",ar,[c("div",or,[d(u.$slots,"nav-bar-content-before",{},void 0,!0),_(Fo,{class:"search"}),_(Mo,{class:"menu"}),_(Qo,{class:"translations"}),_($a,{class:"appearance"}),_(Oo,{class:"social-links"}),_(ho,{class:"extra"}),d(u.$slots,"nav-bar-content-after",{},void 0,!0),_($o,{class:"hamburger",active:u.isScreenOpen,onClick:p[0]||(p[0]=v=>u.$emit("toggle-screen"))},null,8,["active"])])])])]),rr],2))}}),lr=m(ir,[["__scopeId","data-v-19c990f1"]]),cr={key:0,class:"VPNavScreenAppearance"},ur={class:"text"},dr=g({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=w();return(n,a)=>r(e).appearance&&r(e).appearance!=="force-dark"?(o(),l("div",cr,[c("p",ur,S(r(t).darkModeSwitchLabel||"Appearance"),1),_(me)])):f("",!0)}}),vr=m(dr,[["__scopeId","data-v-2d7af913"]]),hr=g({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=se("close-screen");return(t,n)=>(o(),$(z,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:h(()=>[H(S(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),pr=m(hr,[["__scopeId","data-v-05f27b2a"]]),_r={},fr={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},mr=c("path",{d:"M18.9,10.9h-6v-6c0-0.6-0.4-1-1-1s-1,0.4-1,1v6h-6c-0.6,0-1,0.4-1,1s0.4,1,1,1h6v6c0,0.6,0.4,1,1,1s1-0.4,1-1v-6h6c0.6,0,1-0.4,1-1S19.5,10.9,18.9,10.9z"},null,-1),gr=[mr];function $r(s,e){return o(),l("svg",fr,gr)}const kr=m(_r,[["render",$r]]),br=g({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=se("close-screen");return(t,n)=>(o(),$(z,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:h(()=>[H(S(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),De=m(br,[["__scopeId","data-v-19976ae1"]]),yr={class:"VPNavScreenMenuGroupSection"},Pr={key:0,class:"title"},wr=g({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(o(),l("div",yr,[e.text?(o(),l("p",Pr,S(e.text),1)):f("",!0),(o(!0),l(C,null,B(e.items,n=>(o(),$(De,{key:n.text,item:n},null,8,["item"]))),128))]))}}),Vr=m(wr,[["__scopeId","data-v-8133b170"]]),Lr=["aria-controls","aria-expanded"],Sr=["innerHTML"],Mr=["id"],Tr={key:1,class:"group"},Cr=g({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=T(!1),n=b(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function a(){t.value=!t.value}return(i,u)=>(o(),l("div",{class:I(["VPNavScreenMenuGroup",{open:t.value}])},[c("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:a},[c("span",{class:"button-text",innerHTML:i.text},null,8,Sr),_(kr,{class:"button-icon"})],8,Lr),c("div",{id:n.value,class:"items"},[(o(!0),l(C,null,B(i.items,p=>(o(),l(C,{key:p.text},["link"in p?(o(),l("div",{key:p.text,class:"item"},[_(De,{item:p},null,8,["item"])])):(o(),l("div",Tr,[_(Vr,{text:p.text,items:p.items},null,8,["text","items"])]))],64))),128))],8,Mr)],2))}}),Ir=m(Cr,[["__scopeId","data-v-65ef89ca"]]),Nr={key:0,class:"VPNavScreenMenu"},Ar=g({__name:"VPNavScreenMenu",setup(s){const{theme:e}=w();return(t,n)=>r(e).nav?(o(),l("nav",Nr,[(o(!0),l(C,null,B(r(e).nav,a=>(o(),l(C,{key:a.text},["link"in a?(o(),$(pr,{key:0,item:a},null,8,["item"])):(o(),$(Ir,{key:1,text:a.text||"",items:a.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Br=g({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=w();return(t,n)=>r(e).socialLinks?(o(),$(ke,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Hr={class:"list"},zr=g({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=Y({correspondingLink:!0}),n=T(!1);function a(){n.value=!n.value}return(i,u)=>r(e).length&&r(t).label?(o(),l("div",{key:0,class:I(["VPNavScreenTranslations",{open:n.value}])},[c("button",{class:"title",onClick:a},[_(Fe,{class:"icon lang"}),H(" "+S(r(t).label)+" ",1),_(Ee,{class:"icon chevron"})]),c("ul",Hr,[(o(!0),l(C,null,B(r(e),p=>(o(),l("li",{key:p.link,class:"item"},[_(z,{class:"link",href:p.link},{default:h(()=>[H(S(p.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),Er=m(zr,[["__scopeId","data-v-d72aa483"]]),Fr={class:"container"},Dr=g({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=T(null),t=Se(W?document.body:null);return(n,a)=>(o(),$(ve,{name:"fade",onEnter:a[0]||(a[0]=i=>t.value=!0),onAfterLeave:a[1]||(a[1]=i=>t.value=!1)},{default:h(()=>[n.open?(o(),l("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[c("div",Fr,[d(n.$slots,"nav-screen-content-before",{},void 0,!0),_(Ar,{class:"menu"}),_(Er,{class:"translations"}),_(vr,{class:"appearance"}),_(Br,{class:"social-links"}),d(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),Or=m(Dr,[["__scopeId","data-v-cc5739dd"]]),xr={key:0,class:"VPNav"},Ur=g({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=Xn(),{frontmatter:a}=w(),i=b(()=>a.value.navbar!==!1);return Me("close-screen",t),Q(()=>{W&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(u,p)=>i.value?(o(),l("header",xr,[_(lr,{"is-screen-open":r(e),onToggleScreen:r(n)},{"nav-bar-title-before":h(()=>[d(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[d(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[d(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[d(u.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),_(Or,{open:r(e)},{"nav-screen-content-before":h(()=>[d(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[d(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}}),Gr=m(Ur,[["__scopeId","data-v-ae24b3ad"]]),jr=s=>(E("data-v-e31bd47b"),s=s(),F(),s),Rr=["role","tabindex"],qr=jr(()=>c("div",{class:"indicator"},null,-1)),Kr={key:1,class:"items"},Wr=g({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:n,isLink:a,isActiveLink:i,hasActiveLink:u,hasChildren:p,toggle:v}=Pt(b(()=>e.item)),k=b(()=>p.value?"section":"div"),P=b(()=>a.value?"a":"div"),y=b(()=>p.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),V=b(()=>a.value?void 0:"button"),L=b(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":a.value},{"is-active":i.value},{"has-active":u.value}]);function A(M){"key"in M&&M.key!=="Enter"||!e.item.link&&v()}function N(){e.item.link&&v()}return(M,q)=>{const O=R("VPSidebarItem",!0);return o(),$(x(k.value),{class:I(["VPSidebarItem",L.value])},{default:h(()=>[M.item.text?(o(),l("div",J({key:0,class:"item",role:V.value},tt(M.item.items?{click:A,keydown:A}:{},!0),{tabindex:M.item.items&&0}),[qr,M.item.link?(o(),$(z,{key:0,tag:P.value,class:"link",href:M.item.link,rel:M.item.rel,target:M.item.target},{default:h(()=>[(o(),$(x(y.value),{class:"text",innerHTML:M.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(o(),$(x(y.value),{key:1,class:"text",innerHTML:M.item.text},null,8,["innerHTML"])),M.item.collapsed!=null?(o(),l("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:N,onKeydown:et(N,["enter"]),tabindex:"0"},[_(Be,{class:"caret-icon"})],32)):f("",!0)],16,Rr)):f("",!0),M.item.items&&M.item.items.length?(o(),l("div",Kr,[M.depth<5?(o(!0),l(C,{key:0},B(M.item.items,K=>(o(),$(O,{key:K.text,item:K,depth:M.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),Yr=m(Wr,[["__scopeId","data-v-e31bd47b"]]),Oe=s=>(E("data-v-575e6a36"),s=s(),F(),s),Jr=Oe(()=>c("div",{class:"curtain"},null,-1)),Xr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Zr=Oe(()=>c("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),Qr=g({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const{sidebarGroups:e,hasSidebar:t}=D(),n=s,a=T(null),i=Se(W?document.body:null);return j([n,a],()=>{var u;n.open?(i.value=!0,(u=a.value)==null||u.focus()):i.value=!1},{immediate:!0,flush:"post"}),(u,p)=>r(t)?(o(),l("aside",{key:0,class:I(["VPSidebar",{open:u.open}]),ref_key:"navEl",ref:a,onClick:p[0]||(p[0]=st(()=>{},["stop"]))},[Jr,c("nav",Xr,[Zr,d(u.$slots,"sidebar-nav-before",{},void 0,!0),(o(!0),l(C,null,B(r(e),v=>(o(),l("div",{key:v.text,class:"group"},[_(Yr,{item:v,depth:0},null,8,["item"])]))),128)),d(u.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),ei=m(Qr,[["__scopeId","data-v-575e6a36"]]),ti=g({__name:"VPSkipLink",setup(s){const e=te(),t=T();j(()=>e.path,()=>t.value.focus());function n({target:a}){const i=document.getElementById(decodeURIComponent(a.hash).slice(1));if(i){const u=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",u)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",u),i.focus(),window.scrollTo(0,0)}}return(a,i)=>(o(),l(C,null,[c("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),c("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}}),si=m(ti,[["__scopeId","data-v-0f60ec36"]]),ni=g({__name:"Layout",setup(s){const{isOpen:e,open:t,close:n}=D(),a=te();j(()=>a.path,n),yt(e,n);const{frontmatter:i}=w(),u=nt(),p=b(()=>!!u["home-hero-image"]);return Me("hero-image-slot-exists",p),(v,k)=>{const P=R("Content");return r(i).layout!==!1?(o(),l("div",{key:0,class:I(["Layout",r(i).pageClass])},[d(v.$slots,"layout-top",{},void 0,!0),_(si),_(it,{class:"backdrop",show:r(e),onClick:r(n)},null,8,["show","onClick"]),_(Gr,null,{"nav-bar-title-before":h(()=>[d(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[d(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[d(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[d(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":h(()=>[d(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[d(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),_(Jn,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),_(ei,{open:r(e)},{"sidebar-nav-before":h(()=>[d(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":h(()=>[d(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),_(yn,null,{"page-top":h(()=>[d(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[d(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":h(()=>[d(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":h(()=>[d(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":h(()=>[d(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":h(()=>[d(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[d(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[d(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[d(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":h(()=>[d(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[d(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[d(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":h(()=>[d(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[d(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":h(()=>[d(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[d(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[d(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[d(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[d(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[d(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),_(Sn),d(v.$slots,"layout-bottom",{},void 0,!0)],2)):(o(),$(P,{key:1}))}}}),ai=m(ni,[["__scopeId","data-v-5a346dfe"]]),ii={Layout:ai,enhanceApp:({app:s})=>{s.component("Badge",at)}};class li{constructor(e=10){re(this,"max");re(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()}}export{li as L,To as c,ii as t,w as u}; +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = ["assets/chunks/VPLocalSearchBox.-MOopR_s.js","assets/chunks/framework.BZkFhLI2.js"] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} \ No newline at end of file diff --git a/assets/contribution_index.md.xSz8e9wz.js b/assets/contribution_index.md.xSz8e9wz.js new file mode 100644 index 00000000..95ccdcbd --- /dev/null +++ b/assets/contribution_index.md.xSz8e9wz.js @@ -0,0 +1,3 @@ +import{_ as t,c as e,o as i,U as a}from"./chunks/framework.BZkFhLI2.js";const k=JSON.parse('{"title":"Contribute to the project","description":"","frontmatter":{"search":false},"headers":[],"relativePath":"contribution/index.md","filePath":"contribution/index.md"}'),o={name:"contribution/index.md"},s=a(`

Contribute to the project

Any kind of contribution is welcome.

start contributing to the project by submitting pull requests

Todos

  • ⚡ Resolve open issues
  • ⚡ Improve the documentation site
  • ⚡ Improve code documentation (summary)
  • ⚡ Add project Security Policy

Documentation

Gridify documentation is powered by vuePress, All the markdown source files are placed in docs directory.

by running the following commands, you can check the documentation site locally:

shell
yarn install
+yarn dev
shell
npm install
+npm run dev

How to contribute

check out the github contributing guide

Contributors

Thank you to everyone who has contributed to the Gridify codebase. We appreciate you!

`,14),n=[s];function r(l,c,h,d,p,u){return i(),e("div",null,n)}const m=t(o,[["render",r]]);export{k as __pageData,m as default}; diff --git a/assets/contribution_index.md.xSz8e9wz.lean.js b/assets/contribution_index.md.xSz8e9wz.lean.js new file mode 100644 index 00000000..cb32d6e3 --- /dev/null +++ b/assets/contribution_index.md.xSz8e9wz.lean.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as i,U as a}from"./chunks/framework.BZkFhLI2.js";const k=JSON.parse('{"title":"Contribute to the project","description":"","frontmatter":{"search":false},"headers":[],"relativePath":"contribution/index.md","filePath":"contribution/index.md"}'),o={name:"contribution/index.md"},s=a("",14),n=[s];function r(l,c,h,d,p,u){return i(),e("div",null,n)}const m=t(o,[["render",r]]);export{k as __pageData,m as default}; diff --git a/assets/example_api-controller.md.XBwemvty.js b/assets/example_api-controller.md.XBwemvty.js new file mode 100644 index 00000000..826a5e1e --- /dev/null +++ b/assets/example_api-controller.md.XBwemvty.js @@ -0,0 +1,15 @@ +import{_ as i,c as s,o as e,U as a}from"./chunks/framework.BZkFhLI2.js";const u=JSON.parse('{"title":"Using Gridify in API Controllers","description":"","frontmatter":{},"headers":[],"relativePath":"example/api-controller.md","filePath":"example/api-controller.md"}'),t={name:"example/api-controller.md"},n=a(`

Using Gridify in API Controllers

When working with ASP.NET APIs, especially when you need to apply string-based filtering conditions, sorting based on field names, or implementing pagination functionality, the Gridify library is a valuable tool. It can be used in any .NET project and with any type of collection, not just limited to ASP.NET projects.

To demonstrate the core concepts of Gridify, let's look at a simple implementation in the following example.

Describing the Scenario

Imagine you have an API that returns a list of users. You want to use this API in your client-side application to display a list of users.

csharp
// UserController
+// ...
+public IEnumerable<User> GetUsers()
+{
+    // context can be Entity Framework, a repository, or whatever.
+    return context.Users.ToList();
+}

However, there are a few challenges:

  • The end-user may want to sort the list by name, age, or any other property.
  • The end-user may want to filter the list by name, age, or any other property.
  • Fetching the entire list of users is not efficient, so you need to add pagination.
  • Returning a list of page size N is not enough. You also need to know the total number of users.

Implementing these features can be complex and messy. If you want to support multiple properties, you would need to write a lot of code with if-else statements. This is where Gridify comes in.

Solving Problems Using Gridify

With Gridify, you can simplify your code and implement the required features in just a few lines:

csharp
public Paging<User> GetUsers([FromQuery] GridifyQuery query)
+{
+    return context.Users.Gridify(query);
+}

Gridify handles all the complexity behind the scenes.

What is the Paging Return Value?

The Paging class is a generic Data Transfer Object (DTO) that has two properties:

csharp
public int Count { get; set; }
+public IEnumerable<T> Data { get; set; }

The Count property indicates the total number of records, while the Data property contains the records on the current page.

What is GridifyQuery?

GridifyQuery is a class that represents the query parameters passed to the Gridify method.

Learn more about GridifyQuery.

Sample Request Query String

Please note that this URL is not encoded. Always remember to encode query strings before passing them to your APIs.

http://exampleDomain.com/api/GetUsers?
+          pageSize=100&
+          page=1&
+          orderBy=FirstName&
+          filter=Age>10

Alternatively, you can ignore the GridifyQuery and use the default pagination values, which are pageSize=20 and page=1.

http://exampleDomain.com/api/GetUsers

More Information

TIP

  • If you want to control which fields are supported for filtering or ordering, you can use the GridifyMapper class.
  • All Gridify extension methods accept a GridifyMapper instance as a parameter.
  • If you want to learn more about the filtering and ordering syntax, be sure to read the related documentation.
`,27),r=[n];function l(p,o,h,d,c,g){return e(),s("div",null,r)}const y=i(t,[["render",l]]);export{u as __pageData,y as default}; diff --git a/assets/example_api-controller.md.XBwemvty.lean.js b/assets/example_api-controller.md.XBwemvty.lean.js new file mode 100644 index 00000000..984c74c1 --- /dev/null +++ b/assets/example_api-controller.md.XBwemvty.lean.js @@ -0,0 +1 @@ +import{_ as i,c as s,o as e,U as a}from"./chunks/framework.BZkFhLI2.js";const u=JSON.parse('{"title":"Using Gridify in API Controllers","description":"","frontmatter":{},"headers":[],"relativePath":"example/api-controller.md","filePath":"example/api-controller.md"}'),t={name:"example/api-controller.md"},n=a("",27),r=[n];function l(p,o,h,d,c,g){return e(),s("div",null,r)}const y=i(t,[["render",l]]);export{u as __pageData,y as default}; diff --git a/assets/guide_autoMapper.md.UB8WcRi7.js b/assets/guide_autoMapper.md.UB8WcRi7.js new file mode 100644 index 00000000..c874bbfe --- /dev/null +++ b/assets/guide_autoMapper.md.UB8WcRi7.js @@ -0,0 +1,16 @@ +import{_ as i,c as s,o as a,U as h}from"./chunks/framework.BZkFhLI2.js";const o=JSON.parse('{"title":"AutoMapper","description":"","frontmatter":{},"headers":[],"relativePath":"guide/autoMapper.md","filePath":"guide/autoMapper.md"}'),t={name:"guide/autoMapper.md"},n=h(`

AutoMapper

Gridify is completely compatible with AutoMapper. Also, these two packages can help each other nicely. We can use Gridify for filtering, sorting, and paging and AutoMapper for the projection.

csharp
// AutoMapper ProjectTo + Filtering Only, example
+var query = personRepo.ApplyFiltering(gridifyQuery);
+var result = query.ProjectTo<PersonDTO>().ToList();
csharp
// AutoMapper ProjectTo + Filtering + Ordering + Paging, example
+QueryablePaging<Person> qp = personRepo.GridifyQueryable(gridifyQuery);
+var result = new Paging<Person>(qp.Count, qp.Query.ProjectTo<PersonDTO>().ToList());

GridifyTo!

Filtering, Ordering, Paging, and Projection are all done with GridifyTo.

Gridify library does not have a built-in GridifyTo extension method because we don't want to have AutoMapper dependency. but if you are using AutoMapper in your project, I recommend you to add the bellow extension method to your project.

csharp
public static Paging<TDestination> GridifyTo<TSource, TDestination>(
+   this IQueryable<TSource> query, IMapper autoMapper, IGridifyQuery gridifyQuery, IGridifyMapper<TSource> mapper = null)
+{
+   var res = query.GridifyQueryable(gridifyQuery, mapper);
+   return new Paging<TDestination>(res.Count, res.Query.ProjectTo<TDestination>(autoMapper.ConfigurationProvider).ToList());
+}
csharp
// only if you have Gridify.EntityFramework package installed.
+public static async Task<Paging<TDestination>> GridifyToAsync<TSource, TDestination>(
+   this IQueryable<TSource> query, IMapper autoMapper, IGridifyQuery gridifyQuery, IGridifyMapper<TSource> mapper = null)
+{
+   var res = await query.GridifyQueryableAsync(gridifyQuery, mapper);
+   return new Paging<TDestination>(res.Count, await res.Query.ProjectTo<TDestination>(autoMapper.ConfigurationProvider).ToListAsync());
+}
`,9),p=[n];function k(l,e,r,d,E,g){return a(),s("div",null,p)}const F=i(t,[["render",k]]);export{o as __pageData,F as default}; diff --git a/assets/guide_autoMapper.md.UB8WcRi7.lean.js b/assets/guide_autoMapper.md.UB8WcRi7.lean.js new file mode 100644 index 00000000..45583f11 --- /dev/null +++ b/assets/guide_autoMapper.md.UB8WcRi7.lean.js @@ -0,0 +1 @@ +import{_ as i,c as s,o as a,U as h}from"./chunks/framework.BZkFhLI2.js";const o=JSON.parse('{"title":"AutoMapper","description":"","frontmatter":{},"headers":[],"relativePath":"guide/autoMapper.md","filePath":"guide/autoMapper.md"}'),t={name:"guide/autoMapper.md"},n=h("",9),p=[n];function k(l,e,r,d,E,g){return a(),s("div",null,p)}const F=i(t,[["render",k]]);export{o as __pageData,F as default}; diff --git a/assets/guide_compile.md.cinpU56c.js b/assets/guide_compile.md.cinpU56c.js new file mode 100644 index 00000000..9b65d1cf --- /dev/null +++ b/assets/guide_compile.md.cinpU56c.js @@ -0,0 +1,14 @@ +import{_ as s,c as i,o as t,U as a}from"./chunks/framework.BZkFhLI2.js";const E=JSON.parse('{"title":"Compile and Reuse","description":"","frontmatter":{},"headers":[],"relativePath":"guide/compile.md","filePath":"guide/compile.md"}'),e={name:"guide/compile.md"},n=a(`

Compile and Reuse

You can access Gridify generated expressions using the GetFilteringExpression of GridifyQuery or BuildCompiled methods of QueryBuilder class, by storing an expression you can use it multiple times without having any overheads, also if you store a compiled expression you get a massive performance boost.

WARNING

You should only use a compiled expression (delegate) if you are not using Gridify alongside an ORM like Entity-Framework.

csharp
// eg.1 - using GridifyQuery - Compiled - where only
+var gq = new GridifyQuery() { Filter = "name=John" };
+var expression = gq.GetFilteringExpression<Person>();
+var compiledExpression = expression.Compile();
+var result = persons.Where(compiledExpression);
csharp
// eg.2 - using QueryBuilder - Compiled - where only
+var compiledExpression = new QueryBuilder<Person>()
+                         .AddCondition("name=John")
+                         .BuildFilteringExpression()
+                         .Compile();
+var result = persons.Where(compiledExpression);
csharp
// eg.3 - using QueryBuilder - BuildCompiled
+var func = new QueryBuilder<Person>()
+          .AddCondition("name=John")
+          .BuildCompiled();
+var result = func(persons);

Performance

This is the performance improvement example when you use a compiled expression.

MethodMeanRatioRatioSDGen 0Gen 1Allocated
GridifyCompiled1.008 us0.0010.000.1564-984 B
Gridify689.329 us1.0000.005.85942.929739,924 B
NativeLINQ736.854 us1.0190.015.85942.929737,392 B
`,9),l=[n];function h(p,k,r,d,g,o){return t(),i("div",null,l)}const c=s(e,[["render",h]]);export{E as __pageData,c as default}; diff --git a/assets/guide_compile.md.cinpU56c.lean.js b/assets/guide_compile.md.cinpU56c.lean.js new file mode 100644 index 00000000..e9ff16fe --- /dev/null +++ b/assets/guide_compile.md.cinpU56c.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as t,U as a}from"./chunks/framework.BZkFhLI2.js";const E=JSON.parse('{"title":"Compile and Reuse","description":"","frontmatter":{},"headers":[],"relativePath":"guide/compile.md","filePath":"guide/compile.md"}'),e={name:"guide/compile.md"},n=a("",9),l=[n];function h(p,k,r,d,g,o){return t(),i("div",null,l)}const c=s(e,[["render",h]]);export{E as __pageData,c as default}; diff --git a/assets/guide_dependency-injection.md.qVniEsVf.js b/assets/guide_dependency-injection.md.qVniEsVf.js new file mode 100644 index 00000000..13161bbd --- /dev/null +++ b/assets/guide_dependency-injection.md.qVniEsVf.js @@ -0,0 +1,60 @@ +import{_ as s,c as i,o as a,U as n}from"./chunks/framework.BZkFhLI2.js";const y=JSON.parse('{"title":"Dependency Injection","description":"","frontmatter":{},"headers":[],"relativePath":"guide/dependency-injection.md","filePath":"guide/dependency-injection.md"}'),e={name:"guide/dependency-injection.md"},p=n(`

Dependency Injection

Gridify offers a powerful feature that enables you to streamline data mapping and configurations in your application by integrating with the Dependency Injection (DI) container. By registering your mapping profiles with DI, you can achieve cleaner, more maintainable code and improved separation of concerns. This section provides an overview of how to register your GridifyMapper configurations with DI.

Register GridifyMapper with DI

Registering Gridify mapping with DI is a straightforward process. You'll define mapping profiles for your models and then register them in the DI container. Follow these steps to get started:

1. Define Mapping Profiles

Create mapping profiles by inheriting from GridifyMapper<T>, where T represents the type you want to map. Configure your mappings within these profile classes.

Example:

csharp
public class WeatherForecastGridifyMapper : GridifyMapper<WeatherForecast>
+{
+    public WeatherForecastGridifyMapper()
+    {
+        // Define your mappings here
+        AddMap("summary", q => q.Summary);
+        AddMap("temp", q => q.TemperatureC);
+
+        // optionally you can customize the configuration for each mapper
+        Configuration.CaseSensitive = false;
+        Configuration.AllowNullSearch = true;
+        Configuration.IgnoreNotMappedFields = true;
+
+    }
+}

2. Register Mapping Profiles

Utilize the AddGridifyMappers extension method available on the IServiceCollection to scan your assembly and register all mapping profiles.

Example:

csharp
using Gridify; // Make sure to include the necessary namespace
+// ...
+
+public void ConfigureServices(IServiceCollection services)
+{
+    // Other service registrations
+
+    services.AddGridifyMappers(typeof(Program).Assembly);
+}

3. Inject and Use Mappers

Once you've registered the mapping profiles, you can inject the corresponding IGridifyMapper<T> interfaces into your services or controllers.

Example:

csharp
public class WeatherForecastController : ControllerBase
+{
+    private readonly IGridifyMapper<WeatherForecast> _mapper;
+
+    public WeatherForecastController(IGridifyMapper<WeatherForecast> mapper)
+    {
+        _mapper = mapper;
+    }
+
+   [HttpGet(Name = "GetWeatherForecast")]
+    public Paging<WeatherForecast> Get([FromQuery] GridifyQuery query)
+    {
+        IQueryable<WeatherForecast> result = GetWeatherForecasts();
+
+        // You can pass the mapper to the GridifyExtension
+        return result.Gridify(query, _mapper);
+    }
+}
csharp
public class WeatherForecastController : ControllerBase
+{
+    private readonly IGridifyMapper<WeatherForecast> _mapper;
+
+    public WeatherForecastController(IGridifyMapper<WeatherForecast> mapper)
+    {
+        _mapper = mapper;
+    }
+
+  [HttpGet(Name = "GetWeatherForecast")]
+    public IEnumerable<WeatherForecast> Get([FromQuery] GridifyQuery query)
+    {
+        var result = GetWeatherForecasts();
+
+        var queryBuilder = new QueryBuilder<WeatherForecast>()
+            .UseCustomMapper(_mapper)
+            .AddQuery(query);
+
+        return queryBuilder.Build(result);
+    }
+}
`,16),l=[p];function h(t,k,r,d,E,g){return a(),i("div",null,l)}const o=s(e,[["render",h]]);export{y as __pageData,o as default}; diff --git a/assets/guide_dependency-injection.md.qVniEsVf.lean.js b/assets/guide_dependency-injection.md.qVniEsVf.lean.js new file mode 100644 index 00000000..6274e543 --- /dev/null +++ b/assets/guide_dependency-injection.md.qVniEsVf.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,U as n}from"./chunks/framework.BZkFhLI2.js";const y=JSON.parse('{"title":"Dependency Injection","description":"","frontmatter":{},"headers":[],"relativePath":"guide/dependency-injection.md","filePath":"guide/dependency-injection.md"}'),e={name:"guide/dependency-injection.md"},p=n("",16),l=[p];function h(t,k,r,d,E,g){return a(),i("div",null,l)}const o=s(e,[["render",h]]);export{y as __pageData,o as default}; diff --git a/assets/guide_extensions.md.05kIhNxA.js b/assets/guide_extensions.md.05kIhNxA.js new file mode 100644 index 00000000..85092e53 --- /dev/null +++ b/assets/guide_extensions.md.05kIhNxA.js @@ -0,0 +1 @@ +import{_ as i,c as s,o as a,U as e}from"./chunks/framework.BZkFhLI2.js";const y=JSON.parse('{"title":"Extensions","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extensions.md","filePath":"guide/extensions.md"}'),t={name:"guide/extensions.md"},n=e('

Extensions

The Gridify library adds the below extension methods to IQueryable objects.

All Gridify extension methods can accept GridifyQuery and GridifyMapper as a parameter. Make sure to check out the documentation of these classes for more information.

TIP

If you want to use Gridify extension methods on an IEnumerable object, use .AsQueryable() first.

ApplyFiltering

You can use this method if you want to only apply filtering on an IQueriable or DbSet.

csharp
var query = personsRepo.ApplyFiltering("name = John");

this is completely equivalent to the below LINQ query:

csharp
var query = personsRepo.Where(p => p.Name == "John");

In the ApplyFiltering method, we can use a raw string to filter the data, which can be generated dynamically or passed by the end-user for example through an API client or console input, but using the Linq Where method, we always have to hard code the query for the supported fields.

Check out the Filtering Operators section for more information.

ApplyOrdering

You can use this method if you want to only apply ordering on an IQueriable collection or DbSet.

csharp
var query = personsRepo.ApplyOrdering("name, age desc");

this is completely equivalent to the below LINQ query:

csharp
var query = personsRepo.OrderBy(x => x.Name).ThenByDescending(x => x.Age);

Check out the Ordering section for more information.

ApplyPaging

You can use this method if you want to only apply paging on an IQueryable collection or DbSet.

csharp
var query = personsRepo.ApplyPaging(3, 20);

this is completely equivalent to the below LINQ query:

csharp
var query = personsRepo.Skip((3-1) * 20).Take(20);

ApplyFilteringAndOrdering

You can use this method if you want to apply filtering and ordering on an IQueryable collection or DbSet. This method accepts IGridifyQuery.

ApplyOrderingAndPaging

You can use this method if you want to apply ordering and paging on an IQueryable collection or DbSet. This method accepts IGridifyQuery.

ApplyFilteringOrderingPaging

You can use this method if you want to apply filtering and ordering and paging on an IQueryable collection or DbSet. This method accepts IGridifyQuery.

GridifyQueryable

Like ApplyFilteringOrderingPaging but it returns a QueryablePaging<T> that has an extra int Count value that can be used for pagination.

Gridify

This is an ALL-IN-ONE package, it accepts IGridifyQuery, applies filtering, ordering, and paging, and returns a Paging<T> object. This method is completely optimized to be used with any Grid component.

',32),p=[n];function h(r,l,o,d,k,g){return a(),s("div",null,p)}const u=i(t,[["render",h]]);export{y as __pageData,u as default}; diff --git a/assets/guide_extensions.md.05kIhNxA.lean.js b/assets/guide_extensions.md.05kIhNxA.lean.js new file mode 100644 index 00000000..8d496327 --- /dev/null +++ b/assets/guide_extensions.md.05kIhNxA.lean.js @@ -0,0 +1 @@ +import{_ as i,c as s,o as a,U as e}from"./chunks/framework.BZkFhLI2.js";const y=JSON.parse('{"title":"Extensions","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extensions.md","filePath":"guide/extensions.md"}'),t={name:"guide/extensions.md"},n=e("",32),p=[n];function h(r,l,o,d,k,g){return a(),s("div",null,p)}const u=i(t,[["render",h]]);export{y as __pageData,u as default}; diff --git a/assets/guide_extensions_elasticsearch.md.rYnqRIzY.js b/assets/guide_extensions_elasticsearch.md.rYnqRIzY.js new file mode 100644 index 00000000..b81b9957 --- /dev/null +++ b/assets/guide_extensions_elasticsearch.md.rYnqRIzY.js @@ -0,0 +1,148 @@ +import{_ as l,c as p,k as s,t as n,U as i,a as e,o as t}from"./chunks/framework.BZkFhLI2.js";const N=JSON.parse('{"title":"Elasticsearch","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extensions/elasticsearch.md","filePath":"guide/extensions/elasticsearch.md"}'),h={name:"guide/extensions/elasticsearch.md"},k=i('

Elasticsearch

Gridify.Elasticsearch is an extension of Gridify, that provides an ability to generate Elasticsearch DSL queries.

Gridify.Elasticsearch Package

The Gridify.Elasticsearch package has a bunch of extension methods that allow to convert Gridify filters and sortings to Elasticsearch DSL queries using Elastic.Clients.Elasticsearch .NET client.

Installation

Package Manager

',6),r={class:"language-shell vp-adaptive-theme"},E=s("button",{title:"Copy Code",class:"copy"},null,-1),d=s("span",{class:"lang"},"shell",-1),c={class:"shiki shiki-themes github-light github-dark vp-code"},g={class:"line"},o=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"Install-Package",-1),u=s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}}," Gridify.Elasticsearch",-1),y=s("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," -Version",-1),b={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},F=s("h3",{id:"net-cli",tabindex:"-1"},[e(".NET CLI "),s("a",{class:"header-anchor",href:"#net-cli","aria-label":'Permalink to ".NET CLI"'},"​")],-1),m={class:"language-shell vp-adaptive-theme"},C=s("button",{title:"Copy Code",class:"copy"},null,-1),q=s("span",{class:"lang"},"shell",-1),B={class:"shiki shiki-themes github-light github-dark vp-code"},v={class:"line"},A=i('dotnet add package Gridify.Elasticsearch --version',5),_={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},f=i(`

Configurations

CustomElasticsearchNamingAction

Specifies how field names are inferred from CLR property names. By default, Elastic.Clients.Elasticsearch uses camel-case property names.

  • If null (default behavior) CLR property EmailAddress will be inferred as emailAddress Elasticsearch document field name.
  • If, e.g., p => p, the CLR property EmailAddress will be inferred as EmailAddress Elasticsearch document field name.

Default

csharp
await client.SearchAsync<User>(s => s
+    .Index("users")
+    .ApplyFiltering("emailAddress = test@test.com"));

this will make the next Elasticsearch query:

json
GET users/_search
+{
+  "query": {
+    "term": {
+      "emailAddress.keyword": {
+        "value": "test@test.com"
+      }
+    }
+  }
+}

Customized:

csharp
GridifyGlobalConfiguration.CustomElasticsearchNamingAction = p => $"_{p}_";
+
+await client.SearchAsync<User>(s => s
+    .Index("users")
+    .ApplyFiltering("emailAddress = test@test.com"));

this will make the next Elasticsearch query:

json
GET users/_search
+{
+  "query": {
+    "term": {
+      "_EmailAddress_.keyword": {
+        "value": "test@test.com"
+      }
+    }
+  }
+}

Examples of usage

Without pre-initialized mapper

csharp
var gq = new GridifyQuery()
+{
+    Filter = "FirstName=John",
+    Page = 1,
+    PageSize = 20,
+    OrderBy = "Age"
+};
+
+var response = await client.SearchAsync<User>(s => s
+    .Index("users")
+    .ApplyPaging(gq)
+    .ApplyFiltering(gp)
+    .ApplyOrdering(gp));
+
+return response.Documents;
json
GET users/_search
+{
+  "query": {
+    "term": {
+      "firstName.keyword": {
+        "value": "John"
+      }
+    }
+  },
+  "from": 0,
+  "size": 20,
+  "sort": [{
+    "age": {
+      "order": "asc"
+    }
+  }]
+}

With custom mapping

csharp
var gq = new GridifyQuery()
+{
+    Filter = "name=John, surname=Smith, age=30, totalOrderPrice=45",
+    Page = 1,
+    PageSize = 20,
+    OrderBy = "Age"
+};
+
+var mapper = new GridifyMapper<User>()
+     .AddMap("name", x => x.FirstName)
+     .AddMap("surname", x => x.LastName)
+     .AddMap("age", x => x.Age)
+     .AddMap("totalOrderPrice", x => x.Order.TotalSum);
+
+var response = await client.SearchAsync<User>(s => s
+    .Index("users")
+    .ApplyFilteringOrderingPaging(gq));
+
+return response.Documents;
json
GET users/_search
+{
+  "query": {
+    "bool": {
+      "must": [
+        {
+          "term": {
+            "firstName.keyword": {
+              "value": "John"
+            }
+          }
+        },
+        {
+          "term": {
+            "lastName.keyword": {
+              "value": "Smith"
+            }
+          }
+        },
+        {
+          "term": {
+            "age": {
+              "value": 30
+            }
+          }
+        },
+        {
+          "term": {
+            "order.totalSum": {
+              "value": 45
+            }
+          }
+        }
+      ]
+    }
+  },
+  "from": 0,
+  "size": 20,
+  "sort": [{
+    "age": {
+      "order": "asc"
+    }
+  }]
+}

With CustomElasticsearchNamingAction initialized

By default, Elasticsearch converts property names to camel-case for document fields. That's Gridify.Elasticsearch extensions work by default. But if it's necessary to apply a custom naming policy, it can also be customized.

csharp
Func<string, string>? namingAction = p => $"_{p}_";
+var mapper = new GridifyMapper<TestClass>(autoGenerateMappings: true)
+{
+   Configuration = { CustomElasticsearchNamingAction = namingAction }
+};
+
+var gq = new GridifyQuery()
+{
+    Filter = "FirstName=John",
+    Page = 1,
+    PageSize = 20,
+    OrderBy = "Age"
+};
+
+var response = await client.SearchAsync<User>(s => s
+    .Index("users")
+    .ApplyFilteringOrderingPaging(gq));
json
GET users/_search
+{
+  "query": {
+    "term": {
+      "_FirstName_.keyword": {
+        "value": "John"
+      }
+    }
+  },
+  "from": 0,
+  "size": 20,
+  "sort": [{
+    "_Age_": {
+      "order": "asc"
+    }
+  }]
+}

WARNING

Gridify.Elasticsearch package does not support all of the advanced Gridify features like NestedFiltering

`,21);function D(a,w,x,P,T,S){return t(),p("div",null,[k,s("div",r,[E,d,s("pre",c,[s("code",null,[s("span",g,[o,u,y,s("span",b," "+n(a.$version),1)])])])]),F,s("div",m,[C,q,s("pre",B,[s("code",null,[s("span",v,[A,s("span",_," "+n(a.$version),1)])])])]),f])}const z=l(h,[["render",D]]);export{N as __pageData,z as default}; diff --git a/assets/guide_extensions_elasticsearch.md.rYnqRIzY.lean.js b/assets/guide_extensions_elasticsearch.md.rYnqRIzY.lean.js new file mode 100644 index 00000000..516bab5f --- /dev/null +++ b/assets/guide_extensions_elasticsearch.md.rYnqRIzY.lean.js @@ -0,0 +1 @@ +import{_ as l,c as p,k as s,t as n,U as i,a as e,o as t}from"./chunks/framework.BZkFhLI2.js";const N=JSON.parse('{"title":"Elasticsearch","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extensions/elasticsearch.md","filePath":"guide/extensions/elasticsearch.md"}'),h={name:"guide/extensions/elasticsearch.md"},k=i("",6),r={class:"language-shell vp-adaptive-theme"},E=s("button",{title:"Copy Code",class:"copy"},null,-1),d=s("span",{class:"lang"},"shell",-1),c={class:"shiki shiki-themes github-light github-dark vp-code"},g={class:"line"},o=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"Install-Package",-1),u=s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}}," Gridify.Elasticsearch",-1),y=s("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," -Version",-1),b={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},F=s("h3",{id:"net-cli",tabindex:"-1"},[e(".NET CLI "),s("a",{class:"header-anchor",href:"#net-cli","aria-label":'Permalink to ".NET CLI"'},"​")],-1),m={class:"language-shell vp-adaptive-theme"},C=s("button",{title:"Copy Code",class:"copy"},null,-1),q=s("span",{class:"lang"},"shell",-1),B={class:"shiki shiki-themes github-light github-dark vp-code"},v={class:"line"},A=i("",5),_={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},f=i("",21);function D(a,w,x,P,T,S){return t(),p("div",null,[k,s("div",r,[E,d,s("pre",c,[s("code",null,[s("span",g,[o,u,y,s("span",b," "+n(a.$version),1)])])])]),F,s("div",m,[C,q,s("pre",B,[s("code",null,[s("span",v,[A,s("span",_," "+n(a.$version),1)])])])]),f])}const z=l(h,[["render",D]]);export{N as __pageData,z as default}; diff --git a/assets/guide_extensions_entityframework.md.WR0AOgc0.js b/assets/guide_extensions_entityframework.md.WR0AOgc0.js new file mode 100644 index 00000000..72c0d65b --- /dev/null +++ b/assets/guide_extensions_entityframework.md.WR0AOgc0.js @@ -0,0 +1,5 @@ +import{_ as s,c as l,k as i,t,U as a,a as n,o as r}from"./chunks/framework.BZkFhLI2.js";const L=JSON.parse('{"title":"Entity Framework","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extensions/entityframework.md","filePath":"guide/extensions/entityframework.md"}'),o={name:"guide/extensions/entityframework.md"},h=a('

Entity Framework

Gridify.EntityFramework Package

The Gridify.EntityFramework package has two additional GridifyAsync() and GridifyQueryableAsync() methods.

Installation

Package Manager

',5),p={class:"language-shell vp-adaptive-theme"},k=i("button",{title:"Copy Code",class:"copy"},null,-1),d=i("span",{class:"lang"},"shell",-1),y={class:"shiki shiki-themes github-light github-dark vp-code"},c={class:"line"},m=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"Install-Package",-1),E=i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}}," Gridify.EntityFramework",-1),g=i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," -Version",-1),_={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},u=i("h3",{id:"net-cli",tabindex:"-1"},[n(".NET CLI "),i("a",{class:"header-anchor",href:"#net-cli","aria-label":'Permalink to ".NET CLI"'},"​")],-1),b={class:"language-shell vp-adaptive-theme"},F=i("button",{title:"Copy Code",class:"copy"},null,-1),f=i("span",{class:"lang"},"shell",-1),C={class:"shiki shiki-themes github-light github-dark vp-code"},w={class:"line"},v=a('dotnet add package Gridify.EntityFramework --version',5),P={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},T=a(`

Compatibility layer

If you want to use gridify with Entity Framework, you should enable the compatibility layer:

csharp
GridifyGlobalConfiguration.EnableEntityFrameworkCompatibilityLayer();

Enabling the compatibility layer provides the following features:

  • It tweaks the internal expression builder to make it compatible with Entity Framework.
  • EF query optimization
  • EF ServiceProviderCaching support
  • Creates parameterized queries
sql
DECLARE @__Value_0 nvarchar(4000) = N'vahid';
+
+SELECT [u].[Id], [u].[CreateDate], [u].[FkGuid], [u].[Name]
+FROM [Users] AS [u]
+WHERE [u].[Name] = @__Value_0

Configuration

EntityFrameworkCompatibilityLayer

Setting this property to true Enables the EntityFramework Compatibility layer to make the generated expressions compatible whit entity framework.

  • type: bool
  • default: false

EnableEntityFrameworkCompatibilityLayer()

Simply sets the EntityFrameworkCompatibilityLayer property to true.

DisableEntityFrameworkCompatibilityLayer()

Simply sets the EntityFrameworkCompatibilityLayer property to false.

`,14);function q(e,A,S,x,D,B){return r(),l("div",null,[h,i("div",p,[k,d,i("pre",y,[i("code",null,[i("span",c,[m,E,g,i("span",_," "+t(e.$version),1)])])])]),u,i("div",b,[F,f,i("pre",C,[i("code",null,[i("span",w,[v,i("span",P," "+t(e.$version),1)])])])]),T])}const N=s(o,[["render",q]]);export{L as __pageData,N as default}; diff --git a/assets/guide_extensions_entityframework.md.WR0AOgc0.lean.js b/assets/guide_extensions_entityframework.md.WR0AOgc0.lean.js new file mode 100644 index 00000000..4b6468c0 --- /dev/null +++ b/assets/guide_extensions_entityframework.md.WR0AOgc0.lean.js @@ -0,0 +1 @@ +import{_ as s,c as l,k as i,t,U as a,a as n,o as r}from"./chunks/framework.BZkFhLI2.js";const L=JSON.parse('{"title":"Entity Framework","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extensions/entityframework.md","filePath":"guide/extensions/entityframework.md"}'),o={name:"guide/extensions/entityframework.md"},h=a("",5),p={class:"language-shell vp-adaptive-theme"},k=i("button",{title:"Copy Code",class:"copy"},null,-1),d=i("span",{class:"lang"},"shell",-1),y={class:"shiki shiki-themes github-light github-dark vp-code"},c={class:"line"},m=i("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"Install-Package",-1),E=i("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}}," Gridify.EntityFramework",-1),g=i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," -Version",-1),_={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},u=i("h3",{id:"net-cli",tabindex:"-1"},[n(".NET CLI "),i("a",{class:"header-anchor",href:"#net-cli","aria-label":'Permalink to ".NET CLI"'},"​")],-1),b={class:"language-shell vp-adaptive-theme"},F=i("button",{title:"Copy Code",class:"copy"},null,-1),f=i("span",{class:"lang"},"shell",-1),C={class:"shiki shiki-themes github-light github-dark vp-code"},w={class:"line"},v=a("",5),P={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},T=a("",14);function q(e,A,S,x,D,B){return r(),l("div",null,[h,i("div",p,[k,d,i("pre",y,[i("code",null,[i("span",c,[m,E,g,i("span",_," "+t(e.$version),1)])])])]),u,i("div",b,[F,f,i("pre",C,[i("code",null,[i("span",w,[v,i("span",P," "+t(e.$version),1)])])])]),T])}const N=s(o,[["render",q]]);export{L as __pageData,N as default}; diff --git a/assets/guide_extensions_gridify-client.md.GNaIHB85.js b/assets/guide_extensions_gridify-client.md.GNaIHB85.js new file mode 100644 index 00000000..be5b7b81 --- /dev/null +++ b/assets/guide_extensions_gridify-client.md.GNaIHB85.js @@ -0,0 +1,21 @@ +import{_ as i,c as s,o as t,U as a}from"./chunks/framework.BZkFhLI2.js";const c=JSON.parse('{"title":"Gridify Client Library","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extensions/gridify-client.md","filePath":"guide/extensions/gridify-client.md"}'),e={name:"guide/extensions/gridify-client.md"},n=a(`

Gridify Client Library

The Gridify Client library is a lightweight JavaScript and TypeScript library designed to simplify the creation of dynamic queries on the client side. This library facilitates the construction of queries that can be seamlessly integrated with your server-side APIs, leveraging the powerful features of Gridify.

Installation

To integrate the Gridify Client library into your project, install it using npm:

shell
npm i gridify-client

GridifyQueryBuilder

The GridifyQueryBuilder interface represents the methods available for constructing dynamic queries using the Gridify Client library.

The following table describes the methods available in the GridifyQueryBuilder interface for constructing dynamic queries.

MethodParameterDescription
setPagepage: numberSet the page number for pagination.
setPageSizepageSize: numberSet the page size for pagination.
addOrderByfield: string, descending?: booleanAdd ordering based on a field. If descending is true, the ordering is in descending order (default is ascending).
addConditionfield, operator, value, caseSensitive, escapeValueAdd filtering conditions. caseSensitive and escapeValue are optional parameters.
startGroup-Start a logical grouping of conditions.
endGroup-End the current logical group.
and-Add the logical AND operator.
or-Add the logical OR operator.
build-Build and retrieve the constructed query.

Conditional Operators

We can use the ConditionalOperator enum to access supported operators. we can pass these operators to the second parameter of addCondition method

OperatorDescription
EqualEquality
NotEqualInequality
LessThanLess Than
GreaterThanGreater Than
GreaterThanOrEqualGreater Than or Equal
LessThanOrEqualLess Than or Equal
ContainsString Contains (LIKE)
NotContainsString Does Not Contain (NOT LIKE)
StartsWithString Starts With
NotStartsWithString Does Not Start With
EndsWithString Ends With
NotEndsWithString Does Not End With

Usage Example

Below is a basic example demonstrating the usage of the Gridify Client library in TypeScript. This example constructs a dynamic query for pagination, ordering, and filtering:

ts
import { GridifyQueryBuilder, ConditionalOperator as op } from "gridify-client";
+
+const query = new GridifyQueryBuilder()
+  .setPage(2)
+  .setPageSize(10)
+  .addOrderBy("name", true)
+  .startGroup()
+    .addCondition("age", op.LessThan, 50)
+    .or()
+    .addCondition("name", op.StartsWith, "A")
+  .endGroup()
+  .and()
+  .addCondition("isActive", op.Equal, true)
+  .build();
+
+console.log(query);

Output:

json
{
+  "page": 2,
+  "pageSize": 10,
+  "orderBy": "name desc",
+  "filter": "(age<50|name^A),isActive=true"
+}
`,17),d=[n];function l(h,r,p,k,o,E){return t(),s("div",null,d)}const y=i(e,[["render",l]]);export{c as __pageData,y as default}; diff --git a/assets/guide_extensions_gridify-client.md.GNaIHB85.lean.js b/assets/guide_extensions_gridify-client.md.GNaIHB85.lean.js new file mode 100644 index 00000000..ee228db9 --- /dev/null +++ b/assets/guide_extensions_gridify-client.md.GNaIHB85.lean.js @@ -0,0 +1 @@ +import{_ as i,c as s,o as t,U as a}from"./chunks/framework.BZkFhLI2.js";const c=JSON.parse('{"title":"Gridify Client Library","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extensions/gridify-client.md","filePath":"guide/extensions/gridify-client.md"}'),e={name:"guide/extensions/gridify-client.md"},n=a("",17),d=[n];function l(h,r,p,k,o,E){return t(),s("div",null,d)}const y=i(e,[["render",l]]);export{c as __pageData,y as default}; diff --git a/assets/guide_filtering.md.TD7rR8FX.js b/assets/guide_filtering.md.TD7rR8FX.js new file mode 100644 index 00000000..c1c79346 --- /dev/null +++ b/assets/guide_filtering.md.TD7rR8FX.js @@ -0,0 +1,42 @@ +import{_ as s,c as i,o as a,U as t}from"./chunks/framework.BZkFhLI2.js";const c=JSON.parse('{"title":"Filtering","description":"","frontmatter":{},"headers":[],"relativePath":"guide/filtering.md","filePath":"guide/filtering.md"}'),e={name:"guide/filtering.md"},n=t(`

Filtering

Gridify supports the following filtering operators:

Conditional Operators

NameOperatorUsage example
Equal="FieldName = Value"
NotEqual!="FieldName !=Value"
LessThan<"FieldName < Value"
GreaterThan>"FieldName > Value"
GreaterThanOrEqual>="FieldName >=Value"
LessThanOrEqual<="FieldName <=Value"
Contains - Like=*"FieldName =*Value"
NotContains - NotLike!*"FieldName !*Value"
StartsWith^"FieldName ^ Value"
NotStartsWith!^"FieldName !^ Value"
EndsWith$"FieldName $ Value"
NotEndsWith!$"FieldName !$ Value"

TIP

If you don't specify any value after = or != operators, Gridify search for the default and null values.

csharp
var x = personsRepo.ApplyFiltering("name=");

this is equivalent to the bellow LINQ query:

csharp
var x = personsRepo.Where(p =>
+             p.Name is null ||
+             p.Name == string.Empty );

Special Operators

Logical Operators

Using logical operators we easily can create complex queries.

NameOperatorUsage example
AND,"FirstName = Value, LastName = Value2"
OR|"FirstName=Value|LastName=Value2"
Parenthesis()"(FirstName=*Jo,Age<30)|(FirstName!=Hn,Age>30)"

Case Insensitive Operator - /i

The '/i' operator can be use after string values for case insensitive searches. You should only use this operator after the search value.

Example:

csharp
var x = personsRepo.ApplyFiltering("FirstName=John/i");

this query matches with JOHN - john - John - jOHn ...

Escaping

Gridify have five special operators , | ( ) /i to handle complex queries and case-insensitive searches. If you want to use these characters in your query values (after conditional operator), you should add a backslash \\ before them. having this regex could be helpful ([(),|]|\\/i).

JavaScript escape example:

javascript
let esc = (v) => v.replace(/([(),|\\\\]|\\/i)/g, '\\\\$1')

Csharp escape example:

csharp
var value = "(test,test2)";
+var esc = Regex.Replace(value, "([(),|\\\\]|\\/i)", "\\\\$1" );
+// esc = \\(test\\,test2\\)

Passing Indexes

Since version v2.3.0, Gridify support passing indexes to the sub collections. We can pass the index using the [ ] brackets. In the bellow example we want to filter data using 8th index of our SubCollection.

csharp
var gm = new GridifyMapper<TargetType>()
+      .AddMap("prop", (x , index) => x.SubCollection[index].SomeProp);
+
+var gq = new GridifyQuery
+{
+    Filter = "prop[8] > 10"
+};

Checkout Use Indexes on Sub-Collections for more information.

Custom Operators

Sometimes the default Gridify operators are not enough, For example, if you need an operator for regex matching or when you are using the EntityFramework, you may want to use EF.Functions.FreeText rather than a LIKE with wildcards. In this case, you can define your own operators. (added in v2.6.0)

To define a custom operator, you need to create a class that implements the IGridifyOperator interface. then you need to register it through the global CustomOperators configuration.

TIP

Custom operators must be start with the # character.

  • FreeTextOperator Example:
csharp
class FreeTextOperator : IGridifyOperator
+{
+   public string GetOperator() => "#=";
+   public Expression<OperatorParameter> OperatorHandler()
+   {
+      return (prop, value) => EF.Functions.FreeText(prop, value.ToString());
+   }
+}
  • RegexMatchOperator Example:
csharp
class RegexMatchOperator : IGridifyOperator
+{
+   public string GetOperator() => "#%";
+   public Expression<OperatorParameter> OperatorHandler()
+   {
+      return (prop, value) => Regex.IsMatch(prop.ToString(), value.ToString());
+   }
+}
  • InOperator Example:
csharp
class InOperator: IGridifyOperator
+{
+   public string GetOperator()
+   {
+      return "#In";
+   }
+
+   public Expression<OperatorParameter> OperatorHandler()
+   {
+      return (prop, value) => value.ToString()
+         .Split(";",StringSplitOptions.RemoveEmptyEntries)
+         .Contains(prop.ToString());
+   }
+}
+
+// usage: .ApplyFiltering("name #In John;David;Felipe")

Registration Example:

csharp
 GridifyGlobalConfiguration.CustomOperators.Register<FreeTextOperator>();
+ GridifyGlobalConfiguration.CustomOperators.Register<RegexMatchOperator>();
+ GridifyGlobalConfiguration.CustomOperators.Register<InOperator>();
`,36),h=[n];function l(p,k,r,d,o,E){return a(),i("div",null,h)}const y=s(e,[["render",l]]);export{c as __pageData,y as default}; diff --git a/assets/guide_filtering.md.TD7rR8FX.lean.js b/assets/guide_filtering.md.TD7rR8FX.lean.js new file mode 100644 index 00000000..ae500bc5 --- /dev/null +++ b/assets/guide_filtering.md.TD7rR8FX.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,U as t}from"./chunks/framework.BZkFhLI2.js";const c=JSON.parse('{"title":"Filtering","description":"","frontmatter":{},"headers":[],"relativePath":"guide/filtering.md","filePath":"guide/filtering.md"}'),e={name:"guide/filtering.md"},n=t("",36),h=[n];function l(p,k,r,d,o,E){return a(),i("div",null,h)}const y=s(e,[["render",l]]);export{c as __pageData,y as default}; diff --git a/assets/guide_getting-started.md.FWeU4sXV.js b/assets/guide_getting-started.md.FWeU4sXV.js new file mode 100644 index 00000000..133a6f63 --- /dev/null +++ b/assets/guide_getting-started.md.FWeU4sXV.js @@ -0,0 +1 @@ +import{_ as a,c as l,k as i,t,U as e,o as n}from"./chunks/framework.BZkFhLI2.js";const K=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started.md","filePath":"guide/getting-started.md"}'),o={name:"guide/getting-started.md"},r=e('

Getting Started

There are three packages available for gridify in the nuget repository.

TIP

If you are using the Entity framework in your project, you should install the Gridify.EntityFramework package instead of Gridify.

This package has the same functionality as the Gridify package, but it is designed to be more compatible with Entity Framework.


TIP

In order to use Gridify with Elasticsearch it's necessary to install Gridify.Elasticsearch.


If you're developing in a JavaScript or TypeScript environment and need to create dynamic queries on the client side for server-side operations, Gridify also offer a lightweight client library. gridify-client

Installation

',11),h={class:"vp-code-group vp-adaptive-theme"},d=e('
',1),c={class:"blocks"},p={class:"language-shell vp-adaptive-theme active"},_=i("button",{title:"Copy Code",class:"copy"},null,-1),k=i("span",{class:"lang"},"shell",-1),g={class:"shiki shiki-themes github-light github-dark vp-code"},u={class:"line"},y=e('dotnet add package Gridify --version',5),f={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},F={class:"language-shell vp-adaptive-theme"},b=i("button",{title:"Copy Code",class:"copy"},null,-1),m=i("span",{class:"lang"},"shell",-1),C={class:"shiki shiki-themes github-light github-dark vp-code"},T={class:"line"},v=e('dotnet add package Gridify.EntityFramework --version',5),E={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},S={class:"language-shell vp-adaptive-theme"},G=i("button",{title:"Copy Code",class:"copy"},null,-1),w=i("span",{class:"lang"},"shell",-1),B={class:"shiki shiki-themes github-light github-dark vp-code"},P={class:"line"},A=e('dotnet add package Gridify.Elasticsearch --version',5),I={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},V=e('
shell
npm i gridify-client
',1),N=e('

Namespace

After installing the package, you can use the Gridify namespace to access the package classes and static Extension methods.

csharp
using Gridify;

How to use

There are two ways to start using Gridify:

',6);function x(s,q,D,R,$,z){return n(),l("div",null,[r,i("div",h,[d,i("div",c,[i("div",p,[_,k,i("pre",g,[i("code",null,[i("span",u,[y,i("span",f," "+t(s.$version),1)])])])]),i("div",F,[b,m,i("pre",C,[i("code",null,[i("span",T,[v,i("span",E," "+t(s.$version),1)])])])]),i("div",S,[G,w,i("pre",B,[i("code",null,[i("span",P,[A,i("span",I," "+t(s.$version),1)])])])]),V])]),N])}const X=a(o,[["render",x]]);export{K as __pageData,X as default}; diff --git a/assets/guide_getting-started.md.FWeU4sXV.lean.js b/assets/guide_getting-started.md.FWeU4sXV.lean.js new file mode 100644 index 00000000..62d8aa9b --- /dev/null +++ b/assets/guide_getting-started.md.FWeU4sXV.lean.js @@ -0,0 +1 @@ +import{_ as a,c as l,k as i,t,U as e,o as n}from"./chunks/framework.BZkFhLI2.js";const K=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started.md","filePath":"guide/getting-started.md"}'),o={name:"guide/getting-started.md"},r=e("",11),h={class:"vp-code-group vp-adaptive-theme"},d=e("",1),c={class:"blocks"},p={class:"language-shell vp-adaptive-theme active"},_=i("button",{title:"Copy Code",class:"copy"},null,-1),k=i("span",{class:"lang"},"shell",-1),g={class:"shiki shiki-themes github-light github-dark vp-code"},u={class:"line"},y=e("",5),f={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},F={class:"language-shell vp-adaptive-theme"},b=i("button",{title:"Copy Code",class:"copy"},null,-1),m=i("span",{class:"lang"},"shell",-1),C={class:"shiki shiki-themes github-light github-dark vp-code"},T={class:"line"},v=e("",5),E={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},S={class:"language-shell vp-adaptive-theme"},G=i("button",{title:"Copy Code",class:"copy"},null,-1),w=i("span",{class:"lang"},"shell",-1),B={class:"shiki shiki-themes github-light github-dark vp-code"},P={class:"line"},A=e("",5),I={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},V=e("",1),N=e("",6);function x(s,q,D,R,$,z){return n(),l("div",null,[r,i("div",h,[d,i("div",c,[i("div",p,[_,k,i("pre",g,[i("code",null,[i("span",u,[y,i("span",f," "+t(s.$version),1)])])])]),i("div",F,[b,m,i("pre",C,[i("code",null,[i("span",T,[v,i("span",E," "+t(s.$version),1)])])])]),i("div",S,[G,w,i("pre",B,[i("code",null,[i("span",P,[A,i("span",I," "+t(s.$version),1)])])])]),V])]),N])}const X=a(o,[["render",x]]);export{K as __pageData,X as default}; diff --git a/assets/guide_gridifyGlobalConfiguration.md.UeTwzC58.js b/assets/guide_gridifyGlobalConfiguration.md.UeTwzC58.js new file mode 100644 index 00000000..fdbb7c30 --- /dev/null +++ b/assets/guide_gridifyGlobalConfiguration.md.UeTwzC58.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as i,U as o}from"./chunks/framework.BZkFhLI2.js";const g=JSON.parse('{"title":"GridifyGlobalConfiguration","description":"","frontmatter":{},"headers":[],"relativePath":"guide/gridifyGlobalConfiguration.md","filePath":"guide/gridifyGlobalConfiguration.md"}'),t={name:"guide/gridifyGlobalConfiguration.md"},l=o('

GridifyGlobalConfiguration

Using this class you can change the default behavior and configuration of the Gridify library.

General configurations

DefaultPageSize

The default page size for the paging methods when no page size is specified.

  • type: int
  • default: 20

CaseSensitiveMapper

By default mappings are case insensitive. For example, name=John and Name=John are considered equal. You can change this behavior by setting this property to true.

AllowNullSearch

This option enables the null keyword in filtering operations, for example, name=null searches for all records with a null value for the name field not the string "null". if you need to search for the string "null" you can disable this option.

IgnoreNotMappedFields

If true, in filtering and ordering operations, gridify doesn't return any exceptions when a mapping is not defined for the given field.

DisableNullChecks

On nested collections by default gridify adds a null checking condition to prevent the null reference exceptions

e.g () => field != null && field....

some ORMs like NHibernate don't support this. You can disable this behavior by setting this option to true.

  • type: bool
  • default: false

CustomOperators

Using the Register method of this property you can add your own custom operators.

csharp
 GridifyGlobalConfiguration.CustomOperators.Register<MyCustomOperator>();

To learn more about custom operators, see Custom operator

',24),r=[l];function s(n,d,c,p,h,u){return i(),a("div",null,r)}const b=e(t,[["render",s]]);export{g as __pageData,b as default}; diff --git a/assets/guide_gridifyGlobalConfiguration.md.UeTwzC58.lean.js b/assets/guide_gridifyGlobalConfiguration.md.UeTwzC58.lean.js new file mode 100644 index 00000000..5dc75d62 --- /dev/null +++ b/assets/guide_gridifyGlobalConfiguration.md.UeTwzC58.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as i,U as o}from"./chunks/framework.BZkFhLI2.js";const g=JSON.parse('{"title":"GridifyGlobalConfiguration","description":"","frontmatter":{},"headers":[],"relativePath":"guide/gridifyGlobalConfiguration.md","filePath":"guide/gridifyGlobalConfiguration.md"}'),t={name:"guide/gridifyGlobalConfiguration.md"},l=o("",24),r=[l];function s(n,d,c,p,h,u){return i(),a("div",null,r)}const b=e(t,[["render",s]]);export{g as __pageData,b as default}; diff --git a/assets/guide_gridifyMapper.md.pzrB12Km.js b/assets/guide_gridifyMapper.md.pzrB12Km.js new file mode 100644 index 00000000..65f51303 --- /dev/null +++ b/assets/guide_gridifyMapper.md.pzrB12Km.js @@ -0,0 +1,38 @@ +import{_ as s,c as i,o as a,U as e}from"./chunks/framework.BZkFhLI2.js";const y=JSON.parse('{"title":"GridifyMapper","description":"","frontmatter":{},"headers":[],"relativePath":"guide/gridifyMapper.md","filePath":"guide/gridifyMapper.md"}'),t={name:"guide/gridifyMapper.md"},n=e(`

GridifyMapper

Internally Gridify is using an auto generated mapper that maps your string base field names to actual properties in your entities, but sometimes we don't want to support filtering or sorting on a specific field. If you want to control what field names are mapped to what properties, you can create a custom mapper.

To get a better understanding of how this works, consider the following example:

csharp
// sample Entities
+public class Person
+{
+    public string UserName { get; set; }
+    public string FirstName { get; set; }
+    public string LastName { get; set; }
+    public string Password { get; set; }
+    public Contact Contact { get; set; }
+}
+
+public class Contact
+{
+    public string Address { get; set; }
+    public int PhoneNumber { get; set; }
+}

In this example we want to:

  • Generate default mappings
  • Ignore the Password property
  • Map the address and mobile to the Contact property
  • Make sure the userName value is always lowercase in the search
csharp
var mapper = new GridifyMapper<Person>()
+            .GenerateMappings()
+            .RemoveMap(nameof(Person.Password))
+            .AddMap("address", p => p.Contact.Address)
+            .AddMap("mobile", p => p.Contact.PhoneNumber)
+            .AddMap("userName", p => p.UserName, v => v.ToLower());

In the following, we will become more familiar with the above methods

GenerateMappings

This method generates mappings for the properties of the entity, including top-level public properties and properties of nested classes up to the specified nesting depth.

  • To generate mappings for top-level public properties only, you can call this method without passing any arguments:
csharp
var mapper = new GridifyMapper<Person>()
+               .GenerateMappings();
  • To generate mappings with control over nesting depth, you can specify the maxNestingDepth parameter. This parameter limits how deep the mappings will be generated for nested classes. Set it to 0 for no nesting or a positive value to control the depth (added in v2.11.0):
csharp
var mapper = new GridifyMapper<Person>()
+      // Generates mappings for top-level properties and properties of nested classes up to 2 levels deep.
+     .GenerateMappings(2);

TIP

Another alternative to generate default mappings for top-level public properties is by passing true to the GridifyMapper constructor. This generates mappings without considering nesting depth.

csharp
var mapper = new GridifyMapper<Person>(true);

RemoveMap

This method removes mapping from the mapper. Usually you will use this method after you have generated the mappings to ignore some properties that you don't want to be supported by Gridify filtering or ordering actions.

AddMap

This method adds a mapping to the mapper.

  • the first parameter is the name of the field you want to use in the string query
  • the second parameter is a property selector expression
  • the third parameter is an optional value convertor expression that you can use to convert user inputs to anything you want

Value convertor

If you need to change your search values before the filtering operation you can use this feature, the third parameter of the GridifyMapper AddMap method accepts a function that you can use to convert the input values.

in the above example we want to convert the userName value to lowercase before the filtering operation.

csharp
mapper = mapper.AddMap("userName", p => p.UserName, v => v.ToLower());

HasMap

This method checks if the mapper has a mapping for the given field name.

GetCurrentMaps

This method returns list of current mappings.

GridifyMapperConfiguration

csharp
var mapperConfig = new GridifyMapperConfiguration()
+{
+   CaseSensitive = false,
+   AllowNullSearch = true,
+   IgnoreNotMappedFields = false
+};
+
+var mapper = new GridifyMapper<Person>(mapperConfig);

CaseSensitive

By default mapper is Case-insensitive but you can change this behavior if you need Case-Sensitive mappings.

  • Type: bool
  • Default: false
csharp
var mapper = new GridifyMapper<Person>(q => q.CaseSensitive = true);

IgnoreNotMappedFields

By setting this to true Gridify don't throw an exception when a field name is not mapped. for instance, in the above example, searching for password will not throw an exception.

  • Type: bool
  • Default: false
csharp
var mapper = new GridifyMapper<Person>(q => q.IgnoreNotMappedFields = true);

AllowNullSearch

By setting this to false, Gridify don't allow searching on null values using the null keyword for values.

  • Type: bool
  • Default: true
csharp
var mapper = new GridifyMapper<Person>(q => q.AllowNullSearch = false);

Filtering on Nested Collections

You can use LINQ Select and SelectMany methods to filter your data using its nested collections.

In this example, we have 3 nested collections, but filtering will apply to the Property1 of the third level.

csharp
var mapper = new GridifyMapper<Level1>()
+    .AddMap("prop1", l1 => l1.Level2List
+            .SelectMany(l2 => l2.Level3List)
+            .Select(l3 => l3.Property1));
+// ...
+var query = level1List.ApplyFiltering("prop1 = 123", mapper);

if you have only two-level nesting, you don't need to use SelectMany.

Use Indexes on Sub-Collections

Since version v2.3.0, GridifyMapper AddMap method has a new overload that accepts a index parameter. In the bellow example we want to filter data using 8th index of our SubCollection.

csharp
var gq = new GridifyQuery { Filter = "prop[8] > 10" };
+
+var gm = new GridifyMapper<TargetType>()
+      .AddMap("prop", (x , index) => x.SubCollection[index].SomeProp);

checkout Passing Indexes for more information.

GetExpression

This method returns the selector expression that you can use it in LINQ queries.

csharp
Expression<Func<Person, object>> selector = mapper.GetExpression(nameof(Person.Name));

GetLambdaExpression

This method returns the selector expression that you can use it in LINQ queries.

csharp
LambdaExpression selector = mapper.GetLambdaExpression(nameof(Person.Name));
`,57),h=[n];function p(l,k,r,d,o,g){return a(),i("div",null,h)}const c=s(t,[["render",p]]);export{y as __pageData,c as default}; diff --git a/assets/guide_gridifyMapper.md.pzrB12Km.lean.js b/assets/guide_gridifyMapper.md.pzrB12Km.lean.js new file mode 100644 index 00000000..276c0812 --- /dev/null +++ b/assets/guide_gridifyMapper.md.pzrB12Km.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,U as e}from"./chunks/framework.BZkFhLI2.js";const y=JSON.parse('{"title":"GridifyMapper","description":"","frontmatter":{},"headers":[],"relativePath":"guide/gridifyMapper.md","filePath":"guide/gridifyMapper.md"}'),t={name:"guide/gridifyMapper.md"},n=e("",57),h=[n];function p(l,k,r,d,o,g){return a(),i("div",null,h)}const c=s(t,[["render",p]]);export{y as __pageData,c as default}; diff --git a/assets/guide_gridifyQuery.md.ILlAAeUX.js b/assets/guide_gridifyQuery.md.ILlAAeUX.js new file mode 100644 index 00000000..5484856a --- /dev/null +++ b/assets/guide_gridifyQuery.md.ILlAAeUX.js @@ -0,0 +1,23 @@ +import{_ as s,c as i,o as a,U as h}from"./chunks/framework.BZkFhLI2.js";const o=JSON.parse('{"title":"GridifyQuery","description":"","frontmatter":{},"headers":[],"relativePath":"guide/gridifyQuery.md","filePath":"guide/gridifyQuery.md"}'),n={name:"guide/gridifyQuery.md"},t=h(`

GridifyQuery

GridifyQuery is a simple class for configuring Filtering, Ordering and Paging.

csharp
var gq = new GridifyQuery()
+{
+    Filter = "FirstName=John",
+    Page = 1,
+    PageSize = 20,
+    OrderBy = "Age"
+};
+
+// Apply Filter, Sort and Paging
+Paging<Person> result = personsRepo.Gridify(gq);

IsValid

This extension method, checks if the GridifyQuery (Filter, OrderBy) is valid to use with a custom mapper or the auto generated mapper and returns true or false.

csharp
var gq = new GridifyQuery() { Filter = "name=John" , OrderBy = "Age" };
+// true
+bool isValid = gq.IsValid<Person>();
csharp
var gq = new GridifyQuery() { Filter = "NonExist=John" , OrderBy = "Age" };
+// false (NonExist is not a property of Person)
+bool isValid = gq.IsValid<Person>();
csharp
var gq = new GridifyQuery() { Filter = "@name=!" , OrderBy = "Age" };
+// false (this is not a valid filter)
+bool isValid = gq.IsValid<Person>();

Optionally you can pass a custom mapper to check if the GridifyQuery is valid for that mapper.

csharp
var mapper = new GridifyMapper<Person>()
+      .AddMap("name", q => q.Name);
+var gq = new GridifyQuery() { Filter = "name=John" , OrderBy = "Age" };
+
+// false (Age is not mapped)
+bool isValid = gq.IsValid(mapper);

GetFilteringExpression

This extension method, creates a lambda expression using the GridifyQuery.Filter property that you can use it in the LINQ Where method to filter the data.

csharp
var gq = new GridifyQuery() { Filter = "name=John" };
+Expression<Func<T, bool>> expression = gq.GetFilteringExpression<Person>();
+var result = personsRepo.Where(expression);
`,13),k=[t];function l(p,e,r,d,g,E){return a(),i("div",null,k)}const F=s(n,[["render",l]]);export{o as __pageData,F as default}; diff --git a/assets/guide_gridifyQuery.md.ILlAAeUX.lean.js b/assets/guide_gridifyQuery.md.ILlAAeUX.lean.js new file mode 100644 index 00000000..35e3fa26 --- /dev/null +++ b/assets/guide_gridifyQuery.md.ILlAAeUX.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,U as h}from"./chunks/framework.BZkFhLI2.js";const o=JSON.parse('{"title":"GridifyQuery","description":"","frontmatter":{},"headers":[],"relativePath":"guide/gridifyQuery.md","filePath":"guide/gridifyQuery.md"}'),n={name:"guide/gridifyQuery.md"},t=h("",13),k=[t];function l(p,e,r,d,g,E){return a(),i("div",null,k)}const F=s(n,[["render",l]]);export{o as __pageData,F as default}; diff --git a/assets/guide_index.md.dsHjDx2f.js b/assets/guide_index.md.dsHjDx2f.js new file mode 100644 index 00000000..e66ae6c2 --- /dev/null +++ b/assets/guide_index.md.dsHjDx2f.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as e,U as d}from"./chunks/framework.BZkFhLI2.js";const p=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"guide/index.md","filePath":"guide/index.md"}'),i={name:"guide/index.md"},f=d('

Introduction

Greetings!

Gridify is an exceptional dynamic LINQ library designed to simplify the process of converting strings into LINQ queries. It offers remarkable performance and ease-of-use, making it effortless to apply filtering, sorting, and pagination utilizing text-based data.

Features

Here are some notable features of Gridify:

  • Fast and user-friendly
  • Supports filtering, sorting, and pagination
  • Enables conversion from strings to LINQ queries
  • Supports nested queries and sub-collections
  • Allows mapping from strings to objects
  • Supports query compilation
  • Compatible with collection indexes
  • Custom operators
  • Can be used with any collection that supports LINQ
  • Compatible with object-mappers like AutoMapper
  • Compatible with ORMs, particularly Entity Framework
  • Supports Elasticsearch DSL query
  • Javascript/Typescript gridify-client

Examples

To provide a better understanding of Gridify's functionality, we have prepared a few examples:

Performance

Filtering is the most expensive feature in Gridify. The following benchmark compares filtering in various popular dynamic LINQ libraries. Interestingly, Gridify outperforms even Native LINQ in terms of speed. It's worth mentioning that other features like Pagination and Sorting in Gridify have minimal impact on performance.

MethodMeanErrorStdDevRatioAllocatedAlloc Ratio
Gridify599.8 us2.76 us2.45 us0.9236.36 KB1.11
Native_LINQ649.9 us2.55 us2.38 us1.0032.74 KB1.00
DynamicLinq734.8 us13.90 us13.01 us1.13119.4 KB3.65
Sieve1,190.9 us7.41 us6.93 us1.8353.05 KB1.62
Fop2,637.6 us8.59 us7.61 us4.06321.57 KB9.82
CSharp_Scripting216,863.8 us4,295.66 us6,021.92 us336.6423660.26 KB722.71
Details

BenchmarkDotNet v0.13.10, Windows 11 (10.0.22621.2715/22H2/2022Update/SunValley2) 12th Gen Intel Core i7-12800H, 1 CPU, 20 logical and 14 physical cores .NET SDK 8.0.100 [Host] : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2

This Benchmark is available Here

',13),r=[f];function l(s,n,o,b,g,h){return e(),a("div",null,r)}const c=t(i,[["render",l],["__scopeId","data-v-e97fd3fb"]]);export{p as __pageData,c as default}; diff --git a/assets/guide_index.md.dsHjDx2f.lean.js b/assets/guide_index.md.dsHjDx2f.lean.js new file mode 100644 index 00000000..15cfc1d5 --- /dev/null +++ b/assets/guide_index.md.dsHjDx2f.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as e,U as d}from"./chunks/framework.BZkFhLI2.js";const p=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"guide/index.md","filePath":"guide/index.md"}'),i={name:"guide/index.md"},f=d("",13),r=[f];function l(s,n,o,b,g,h){return e(),a("div",null,r)}const c=t(i,[["render",l],["__scopeId","data-v-e97fd3fb"]]);export{p as __pageData,c as default}; diff --git a/assets/guide_ordering.md.l6koKC3p.js b/assets/guide_ordering.md.l6koKC3p.js new file mode 100644 index 00000000..39371695 --- /dev/null +++ b/assets/guide_ordering.md.l6koKC3p.js @@ -0,0 +1,17 @@ +import{_ as s,c as i,o as a,U as e}from"./chunks/framework.BZkFhLI2.js";const y=JSON.parse('{"title":"Ordering","description":"","frontmatter":{},"headers":[],"relativePath":"guide/ordering.md","filePath":"guide/ordering.md"}'),t={name:"guide/ordering.md"},n=e(`

Ordering

The ordering query expression can be built with a comma-delimited ordered list of field/property names followed by asc or desc keywords.

By default, if you don't add these keywords, Gridify assumes you need Ascending ordering.

csharp
// asc - desc
+var x = personsRepo.ApplyOrdering("Id"); // default ascending its equal to "Id asc"
+var x = personsRepo.ApplyOrdering("Id desc"); // use descending ordering
+
+// multiple orderings example
+var x = personsRepo.ApplyOrdering("Id desc, FirstName asc, LastName");
csharp
// asc - desc
+var gq = new GridifyQuery() { OrderBy = "Id" }; // default ascending its equal to "Id asc"
+var gq = new GridifyQuery() { OrderBy = "Id desc" }; // use descending ordering
+
+// multiple orderings example
+var gq = new GridifyQuery() { OrderBy = "Id desc, FirstName asc, LastName" };
csharp
var builder = new QueryBuilder<Person>();
+// asc - desc
+builder.AddOrderBy("Id"); // default ascending its equal to "Id asc"
+builder.AddOrderBy("Id desc"); // use descending ordering
+
+// multiple orderings example
+builder.AddOrderBy("Id desc, FirstName asc, LastName");

Order By Nullable types

Sometimes we need to order by nullable types, for example:

csharp
personsRepo.OrderBy(p => p.BirthDate.HasValue)

to support this behavior, you can use Gridify special characters (? or !) after the property name.

e.g:

To achieve the personsRepo.OrderBy(p => p.BirthDate.HasValue) query, you can use ?:

csharp
var x = personsRepo.ApplyOrdering("BirthDate?");

and for personsRepo.OrderBy(p => !p.BirthDate.HasValue), you can use !:

csharp
var x = personsRepo.ApplyOrdering("BirthDate!");

WARNING

These nullable characters will only work on the nullable types.

`,14),p=[n];function h(l,k,r,d,o,g){return a(),i("div",null,p)}const E=s(t,[["render",h]]);export{y as __pageData,E as default}; diff --git a/assets/guide_ordering.md.l6koKC3p.lean.js b/assets/guide_ordering.md.l6koKC3p.lean.js new file mode 100644 index 00000000..61527ea7 --- /dev/null +++ b/assets/guide_ordering.md.l6koKC3p.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,U as e}from"./chunks/framework.BZkFhLI2.js";const y=JSON.parse('{"title":"Ordering","description":"","frontmatter":{},"headers":[],"relativePath":"guide/ordering.md","filePath":"guide/ordering.md"}'),t={name:"guide/ordering.md"},n=e("",14),p=[n];function h(l,k,r,d,o,g){return a(),i("div",null,p)}const E=s(t,[["render",h]]);export{y as __pageData,E as default}; diff --git a/assets/guide_queryBuilder.md.vfz1Uidr.js b/assets/guide_queryBuilder.md.vfz1Uidr.js new file mode 100644 index 00000000..af787aee --- /dev/null +++ b/assets/guide_queryBuilder.md.vfz1Uidr.js @@ -0,0 +1,5 @@ +import{_ as t,c as e,o as i,U as a}from"./chunks/framework.BZkFhLI2.js";const c=JSON.parse('{"title":"QueryBuilder","description":"","frontmatter":{},"headers":[],"relativePath":"guide/queryBuilder.md","filePath":"guide/queryBuilder.md"}'),s={name:"guide/queryBuilder.md"},d=a(`

QueryBuilder

The QueryBuilder class is really useful if you want to manually build your query Or when you don't want to use the extension methods.

MethodDescription
AddConditionAdds a string base Filtering query
AddOrderByAdds a string base Ordering query
ConfigurePagingConfigure Page and PageSize
AddQueryAccepts a GridifyQuery object to configure filtering,ordering and paging
UseCustomMapperAccepts a GridifyMapper to use in build methods
UseEmptyMapperSetup an Empty new GridifyMapper without auto generated mappings
AddMapAdd a single Map to existing mapper
RemoveMapRemove a single Map from existing mapper
ConfigureDefaultMapperConfiguring default mapper when we didn't use AddMapper method
IsValidValidates Condition, OrderBy, Query , Mapper and returns a bool
BuildApplies filtering ordering and paging to a queryable context
BuildCompiledCompiles the expressions and returns a delegate for applying filtering ordering and paging to a enumerable collection
BuildFilteringExpressionReturns filtering expression that can be compiled for later use for enumerable collections
BuildEvaluatorReturns an evaluator delegate that can be use to evaluate an queryable context
BuildCompiledEvaluatorReturns an compiled evaluator delegate that can be use to evaluate an enumerable collection
BuildWithPagingApplies filtering ordering and paging to a context, and returns paging result
BuildWithPagingCompiledCompiles the expressions and returns a delegate for applying filtering ordering and paging to a enumerable collection, that returns paging result
BuildWithQueryablePagingApplies filtering ordering and paging to a context, and returns queryable paging result
EvaluateDirectly Evaluate a context to check if all conditions are valid or not
csharp
var builder = new QueryBuilder<Person>()
+        .AddCondition("name=John")
+        .AddOrderBy("age, id");
+
+var query = builder.Build(persons);
`,4),r=[d];function n(l,p,o,h,u,g){return i(),e("div",null,r)}const y=t(s,[["render",n]]);export{c as __pageData,y as default}; diff --git a/assets/guide_queryBuilder.md.vfz1Uidr.lean.js b/assets/guide_queryBuilder.md.vfz1Uidr.lean.js new file mode 100644 index 00000000..f5cb081c --- /dev/null +++ b/assets/guide_queryBuilder.md.vfz1Uidr.lean.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as i,U as a}from"./chunks/framework.BZkFhLI2.js";const c=JSON.parse('{"title":"QueryBuilder","description":"","frontmatter":{},"headers":[],"relativePath":"guide/queryBuilder.md","filePath":"guide/queryBuilder.md"}'),s={name:"guide/queryBuilder.md"},d=a("",4),r=[d];function n(l,p,o,h,u,g){return i(),e("div",null,r)}const y=t(s,[["render",n]]);export{c as __pageData,y as default}; diff --git a/assets/index.md.u0-vC_kO.js b/assets/index.md.u0-vC_kO.js new file mode 100644 index 00000000..ceec95fd --- /dev/null +++ b/assets/index.md.u0-vC_kO.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.BZkFhLI2.js";const p=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Gridify","text":"Documentation","tagline":"A powerful dynamic LINQ library for .NET","actions":[{"theme":"brand","text":"Get Started","link":"/guide/getting-started"},{"theme":"alt","text":"Introduction","link":"/guide/"}]},"features":[{"title":"Simple and Easy to Use","details":"Gridify offers a powerful string-based dynamic LINQ query language that is both simple and easy to use."},{"title":"Exceptional Performance","details":"Gridify has been designed with performance as a top priority and can outperform other dynamic LINQ libraries."},{"title":"Compatibility","details":"Gridify can be seamlessly integrated into any .NET Core or .NET Framework project, ensuring high compatibility. It can also be used alongside Entity Framework and other ORMs."}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),i={name:"index.md"};function r(n,o,s,d,l,c){return a(),t("div")}const f=e(i,[["render",r]]);export{p as __pageData,f as default}; diff --git a/assets/index.md.u0-vC_kO.lean.js b/assets/index.md.u0-vC_kO.lean.js new file mode 100644 index 00000000..ceec95fd --- /dev/null +++ b/assets/index.md.u0-vC_kO.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.BZkFhLI2.js";const p=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Gridify","text":"Documentation","tagline":"A powerful dynamic LINQ library for .NET","actions":[{"theme":"brand","text":"Get Started","link":"/guide/getting-started"},{"theme":"alt","text":"Introduction","link":"/guide/"}]},"features":[{"title":"Simple and Easy to Use","details":"Gridify offers a powerful string-based dynamic LINQ query language that is both simple and easy to use."},{"title":"Exceptional Performance","details":"Gridify has been designed with performance as a top priority and can outperform other dynamic LINQ libraries."},{"title":"Compatibility","details":"Gridify can be seamlessly integrated into any .NET Core or .NET Framework project, ensuring high compatibility. It can also be used alongside Entity Framework and other ORMs."}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),i={name:"index.md"};function r(n,o,s,d,l,c){return a(),t("div")}const f=e(i,[["render",r]]);export{p as __pageData,f as default}; diff --git a/assets/inter-italic-cyrillic-ext.OVycGSDq.woff2 b/assets/inter-italic-cyrillic-ext.OVycGSDq.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2a687296748f6b8bc8076cd11bde49cd27e4442b GIT binary patch literal 28332 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 HNCp4^t1hY; literal 0 HcmV?d00001 diff --git a/assets/inter-italic-cyrillic.-nLMcIwj.woff2 b/assets/inter-italic-cyrillic.-nLMcIwj.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f64035158d7e4c01654e3f23dcd6e8299928a28c GIT binary patch literal 17824 zcmV(|K+(TGZYzoV0yihRy3;{L*Bm;yv3xXa1 z1Rw>42nQe=C3zL>7I?PUshK)MG!ta^L3b^d$O{#w!;WOi#caU z9epdi^~z}FXC1zMc;nw||B-~iJKZ7-`H(Kn3lKjZ5N5RqaHof~Lr#JsXW1jml58&> zQGi~|0cnL4zB|P8}0t5&U@c|JdMvNGlmzMw!d_sgsBSwh~ z<3uKERMdzOA;C{wc9u@*KWk~1ZrQFoOIvrA?XoRxnU;2`Lr2EaDbuDiOouv|*;F%- z#gKPJ>8fl=HUf*mFq&P*op#SRB5uMwrI5O=D|BV|t7*jYszMn6_y=vT5wbG)8zDBN(kmfH1b)al)=7_XtiK52#|ESncdAW0QK2HvRY`_;WiO>pz_-Xk zH!T)&YR`MAJa7J@pNA;Ve=XlUuY2Z4Y1bh`Bcza^p&9I}QLUiMj74g|4NyqjXq$hi zG1}j&v`P|}Bqr@5l@eV;qy>fq`v}SgHrfA#@*v!mV~$a+B6D&Jh-sRueXL+`%jr?vt30*Vq&Bs(79VL�!Z1%E;0yxE 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 literal 0 HcmV?d00001 diff --git a/assets/inter-italic-latin-ext.RnFly65-.woff2 b/assets/inter-italic-latin-ext.RnFly65-.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9c1b9440ed419d4a71ba46b0db3951164f9e10df GIT binary patch literal 63552 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 literal 0 HcmV?d00001 diff --git a/assets/inter-italic-latin.27E69YJn.woff2 b/assets/inter-italic-latin.27E69YJn.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..01fcf20724f915f68a974ef2fb85f86f3039b1d8 GIT binary patch literal 46048 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 literal 0 HcmV?d00001 diff --git a/assets/inter-italic-vietnamese.xzQHe1q1.woff2 b/assets/inter-italic-vietnamese.xzQHe1q1.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e4f788ee02bb687bc1d5045483ff0d381e7654e0 GIT binary patch literal 8784 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 G0002QVTgqQ literal 0 HcmV?d00001 diff --git a/assets/inter-roman-cyrillic-ext.8T9wMG5w.woff2 b/assets/inter-roman-cyrillic-ext.8T9wMG5w.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..28593ccb8a4d849a746f2b970678fe426cb136e8 GIT binary patch literal 26600 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 literal 0 HcmV?d00001 diff --git a/assets/inter-roman-cyrillic.jIZ9REo5.woff2 b/assets/inter-roman-cyrillic.jIZ9REo5.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a20adc161f433a7c4e3d92306301b9228bcf9fb4 GIT binary patch literal 16780 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

KZ;k8ywA} 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 O1{o}0SRMEP0000Yp_Hru literal 0 HcmV?d00001 diff --git a/assets/inter-roman-greek.Cb5wWeGA.woff2 b/assets/inter-roman-greek.Cb5wWeGA.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f790e047daa346583880da2be470431e35aa6054 GIT binary patch literal 21776 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 De!(H( literal 0 HcmV?d00001 diff --git a/assets/inter-roman-latin-ext.GZWE-KO4.woff2 b/assets/inter-roman-latin-ext.GZWE-KO4.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..715bd903b9b14d22a056f10e6d13b8d7e0acce57 GIT binary patch literal 59608 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

Gridify (v1)

DANGER

Gridify version 1.x.x is no longer maintained. you should consider upgrading to the latest version.

The source code of this version is available on version-1.x

Introduction

Easy and optimized way to apply Filtering, Sorting and pagination using text-based data.

The best use case of this library is Asp-net APIs. when you need to get some string base filtering conditions to filter data or sort it by a field name or apply pagination concepts to your lists and return a pageable, data grid ready information, from any repository or database.


WebApi Simple Usage example

c#
// ApiController
+
+[Produces(typeof(Paging<Person>))]
+public IActionResult GetPersons([FromQuery] GridifyQuery gQuery)
+{
+    // Gridify => Filter,Sort & Apply Paging
+    // in short, Gridify returns data especially for data Grids.
+    return myDbContext.Persons.Gridify(gQuery);
+}

complete request sample:

txt
http://exampleDomain.com/api/GetPersons?pageSize=100&page=1&sortBy=FirstName&isSortAsc=false&filter=Age%3D%3D10

also we can totally ignore GridifyQuery

txt
http://exampleDomain.com/api/GetPersons

What is GridifyQuery (basic usage example)

GridifyQuery is a simple class for configuring Filtering,Paging,Sorting.

c#
// usually, we don't need to create this object manually
+// for example, we get this object as a parameter from our API Controller
+var gQuery = new GridifyQuery()
+{
+    Filter = "FirstName==John",
+    IsSortAsc = false,
+    Page = 1,
+    PageSize = 20,
+    SortBy = "LastName"
+};
+
+Paging<Person> pData =
+         myDbContext.Persons  // we can use Any list or repository or EntityFramework context
+          .Gridify(gQuery); // Filter,Sort & Apply Paging
+
+
+// pData.TotalItems => Count persons with 'John', First name
+// pData.Items      => First 20 Persons with 'John', First Name

ApplyFiltering

Also, if you don't need paging and sorting features simply use ApplyFiltering extension instead of Gridify.

c#
var query = myDbContext.Persons.ApplyFiltering("name == John");
+// this is equal to :
+// myDbContext.Persons.Where(p => p.Name == "John");

see more examples in the tests


Performance comparison

Filtering is the most expensive feature in gridify. the below benchmark is comparing filtering in the most known dynamic linq libraries. as you can see, gridify has the closest result to the native linq. also, I Should note other features like Pagination and Sorting has almost zero overhead in Gridify.

BenchmarkDotNet=v0.13.0, OS=Windows 10.0.19043.1110 (21H1/May2021Update) 11th Gen Intel Core i5-11400F 2.60GHz, 1 CPU, 12 logical and 6 physical cores .NET SDK=5.0.301 [Host] : .NET 5.0.7 (5.0.721.25508), X64 RyuJIT

MethodMeanErrorStdDevRatioRatioSDGen 0Gen 1Allocated
Native Linq869.3 us10.54 us9.86 us1.000.005.85942.929736 KB
Gridify928.1 us13.41 us11.89 us1.070.026.83592.929746 KB
Dynamic Linq1,068.5 us10.66 us9.97 us1.230.0219.53139.7656122 KB
Sieve1,126.8 us10.73 us10.04 us1.300.028.78913.906354 KB

Installation

Install the Gridify NuGet Package.

Package Manager Console

Install-Package Gridify

.NET Core CLI

dotnet add package Gridify

Extensions

The library adds below extension methods to IQueryable:

ExtensionDescription
ApplyFiltering (string)Apply Filtering using a raw string and returns an IQueryable<T>
ApplyFiltering (GridifyQuery)Apply Filtering using string Filter property of GridifyQuery class and returns an IQueryable<T>
ApplyOrderingApply Ordering using string SortBy and bool IsSortAsc properties of GridifyQuery class and returns an IQueryable<T>
ApplyPagingApply paging using short Page and int PageSize properties of GridifyQuery class and returns an IQueryable<T>
ApplyOrderingAndPagingApply Both Ordering and paging and returns an IQueryable<T>
ApplyFilterAndOrderingApply Both Filtering and Ordering and returns an IQueryable<T>
ApplyEverythingApply Filtering,Ordering and paging and returns an IQueryable<T>
GridifyQueryableLike ApplyEverything but it returns a QueryablePaging<T> that have an extra int totalItems property to use for pagination
GridifyReceives a GridifyQuery ,Load All requested data and returns Paging<T>

TIP:

Gridify function is an ALL-IN-ONE package, that applies filtering and ordering and paging to your data and returns a Paging<T>,

but for example, if you need to just filter your data without paging or sorting options you can use ApplyFiltering function instead.


Supported Filtering Operators

NameOperatorUsage example
Equal=="FieldName ==Value"
NotEqual!="FieldName !=Value"
LessThan<"FieldName < Value"
GreaterThan>"FieldName > Value"
GreaterThanOrEqual>="FieldName >=Value"
LessThanOrEqual<="FieldName <=Value"
Contains - Like=*"FieldName =*Value"
NotContains - NotLike!*"FieldName !*Value"
StartsWith^"FieldName ^ Value"
NotStartsWith!^"FieldName !^ Value"
EndsWith$"FieldName $ Value"
NotEndsWith!$"FieldName !$ Value"
AND - &&,"FirstName ==Value, LastName ==Value2"
OR - |||"FirstName==Value|LastName==Value2"
Parenthesis()"(FirstName=*Jo,Age<30)|(FirstName!=Hn,Age>30)"

we can easily create complex queries using Parenthesis() with AND (,) + OR (|) operators.

Escape character hint:

Filtering has four special character , | ( ) to handle complex queries. if you want to use these characters in your query values (after ==), you should add a backslash \\ before them.

JavaScript escape example:

javascript
let esc = (v) => v.replace(/([(),|])/g, '\\\\$1')

Csharp escape example:

csharp
var value = "(test,test2)";
+var esc = Regex.Replace(value, "([(),|])", "\\\\$1" ); // esc = \\(test\\,test2\\)

Custom Mapping Support

By default Gridify is using a GridifyMapper object that automatically maps your string based field names to actual properties in your Entities but if you have a custom DTO (Data Transfer Object) you can create a custom instance of GridifyMapper and use it to create your mappings.

c#
// example Entities
+public class Person
+{
+    public string FirstName {get;set;}
+    public string LastName {get;set;}
+    public Contact Contact {get;set;}
+
+}
+public class Contact
+{
+    public string Address {get;set;}
+    public int PhoneNumber {get;set;}
+}
+
+// example DTO
+public class PersonDTO
+{
+   public string FirstName {get;set;}
+   public string LastName {get;set;}
+
+   public string Address {get;set;}
+   public int PhoneNumber {get;set;}
+}
+
+//// GridifyMapper Usage example -------------
+
+var customMappings = new GridifyMapper<Person>()
+        // because FirstName and LastName is exists in both DTO and Entity classes we can Generate them
+        .GenerateMappings()
+        // add custom mappings
+        .AddMap("address", q => q.Contact.Address )
+        .AddMap("PhoneNumber", q => q.Contact.PhoneNumber );
+
+
+// as i mentioned before. usually we don't need create this object manually.
+var gQuery = new GridifyQuery()
+{
+    Filter = "FirstName==John,Address=*st",
+    IsSortAsc = true,
+    SortBy = "PhoneNumber"
+};
+
+// myRepository: could be entity framework context or any other collections
+var gridifiedData = myRepository.Persons.Gridify(gQuery, customMappings);

by default GridifyMapper is Case-insensitive but you can change this behavior if you need Case-Sensitive mappings.

c#
var customMappings = new GridifyMapper<Person>(true); // mapper is case-sensitive now.

Combine Gridify with AutoMapper

c#
//AutoMapper ProjectTo + Filtering Only, example
+var query = myDbContext.Persons.ApplyFiltering(gridifyQuery);
+var result = query.ProjectTo<PersonDTO>().ToList();
+
+// AutoMapper ProjectTo + Filtering + Ordering + Paging, example
+QueryablePaging<Person> qp = myDbContext.Persons.GridifyQueryable(gridifyQuery);
+var result = new Paging<Person> () { Items = qp.Query.ProjectTo<PersonDTO>().ToList (), TotalItems = qp.TotalItems };

EntityFramework integration

if you need to use gridify async feature for entityFramework Core, use Gridify.EntityFramework package instead.

this package have two additional GridifyAsync() and GridifyQueryableAsync() functions.

shell
dotnet add package Gridify.EntityFramework

Contribution

Any Contribution to improve documentation and library is appreciated feel free to send pull-Request. ❤️

`,66),l=[n];function h(p,r,k,d,o,g){return a(),i("div",null,l)}const E=s(e,[["render",h]]);export{c as __pageData,E as default}; diff --git a/assets/v1_index.md.utgFH8vB.lean.js b/assets/v1_index.md.utgFH8vB.lean.js new file mode 100644 index 00000000..cfc5b2e6 --- /dev/null +++ b/assets/v1_index.md.utgFH8vB.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,U as t}from"./chunks/framework.BZkFhLI2.js";const c=JSON.parse('{"title":"Gridify (v1)","description":"","frontmatter":{"search":false},"headers":[],"relativePath":"v1/index.md","filePath":"v1/index.md"}'),e={name:"v1/index.md"},n=t("",66),l=[n];function h(p,r,k,d,o,g){return a(),i("div",null,l)}const E=s(e,[["render",h]]);export{c as __pageData,E as default}; diff --git a/contribution/index.html b/contribution/index.html new file mode 100644 index 00000000..eabfdd27 --- /dev/null +++ b/contribution/index.html @@ -0,0 +1,39 @@ + + + + + + Contribute to the project | Gridify + + + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Contribute to the project

Any kind of contribution is welcome.

start contributing to the project by submitting pull requests

Todos

  • ⚡ Resolve open issues
  • ⚡ Improve the documentation site
  • ⚡ Improve code documentation (summary)
  • ⚡ Add project Security Policy

Documentation

Gridify documentation is powered by vuePress, All the markdown source files are placed in docs directory.

by running the following commands, you can check the documentation site locally:

shell
yarn install
+yarn dev
shell
npm install
+npm run dev

How to contribute

check out the github contributing guide

Contributors

Thank you to everyone who has contributed to the Gridify codebase. We appreciate you!

+ + + + \ No newline at end of file diff --git a/example/api-controller.html b/example/api-controller.html new file mode 100644 index 00000000..d04b7fc3 --- /dev/null +++ b/example/api-controller.html @@ -0,0 +1,51 @@ + + + + + + Using Gridify in API Controllers | Gridify + + + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Using Gridify in API Controllers

When working with ASP.NET APIs, especially when you need to apply string-based filtering conditions, sorting based on field names, or implementing pagination functionality, the Gridify library is a valuable tool. It can be used in any .NET project and with any type of collection, not just limited to ASP.NET projects.

To demonstrate the core concepts of Gridify, let's look at a simple implementation in the following example.

Describing the Scenario

Imagine you have an API that returns a list of users. You want to use this API in your client-side application to display a list of users.

csharp
// UserController
+// ...
+public IEnumerable<User> GetUsers()
+{
+    // context can be Entity Framework, a repository, or whatever.
+    return context.Users.ToList();
+}

However, there are a few challenges:

  • The end-user may want to sort the list by name, age, or any other property.
  • The end-user may want to filter the list by name, age, or any other property.
  • Fetching the entire list of users is not efficient, so you need to add pagination.
  • Returning a list of page size N is not enough. You also need to know the total number of users.

Implementing these features can be complex and messy. If you want to support multiple properties, you would need to write a lot of code with if-else statements. This is where Gridify comes in.

Solving Problems Using Gridify

With Gridify, you can simplify your code and implement the required features in just a few lines:

csharp
public Paging<User> GetUsers([FromQuery] GridifyQuery query)
+{
+    return context.Users.Gridify(query);
+}

Gridify handles all the complexity behind the scenes.

What is the Paging Return Value?

The Paging class is a generic Data Transfer Object (DTO) that has two properties:

csharp
public int Count { get; set; }
+public IEnumerable<T> Data { get; set; }

The Count property indicates the total number of records, while the Data property contains the records on the current page.

What is GridifyQuery?

GridifyQuery is a class that represents the query parameters passed to the Gridify method.

Learn more about GridifyQuery.

Sample Request Query String

Please note that this URL is not encoded. Always remember to encode query strings before passing them to your APIs.

http://exampleDomain.com/api/GetUsers?
+          pageSize=100&
+          page=1&
+          orderBy=FirstName&
+          filter=Age>10

Alternatively, you can ignore the GridifyQuery and use the default pagination values, which are pageSize=20 and page=1.

http://exampleDomain.com/api/GetUsers

More Information

TIP

  • If you want to control which fields are supported for filtering or ordering, you can use the GridifyMapper class.
  • All Gridify extension methods accept a GridifyMapper instance as a parameter.
  • If you want to learn more about the filtering and ordering syntax, be sure to read the related documentation.
+ + + + \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..e281f58126020991cbd2ac418ede2a41fe80a53a GIT binary patch literal 15406 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 literal 0 HcmV?d00001 diff --git a/gridify-dark-logo.svg b/gridify-dark-logo.svg new file mode 100644 index 00000000..5591240a --- /dev/null +++ b/gridify-dark-logo.svg @@ -0,0 +1 @@ +gridify-dark-logo \ No newline at end of file diff --git a/gridify-dark-logo2.svg b/gridify-dark-logo2.svg new file mode 100644 index 00000000..955bad8a --- /dev/null +++ b/gridify-dark-logo2.svg @@ -0,0 +1 @@ +gridify-dark-logo \ No newline at end of file diff --git a/gridify-light-logo.svg b/gridify-light-logo.svg new file mode 100644 index 00000000..6661a164 --- /dev/null +++ b/gridify-light-logo.svg @@ -0,0 +1 @@ +gridify-light-logo \ No newline at end of file diff --git a/gridify-light-logo2.svg b/gridify-light-logo2.svg new file mode 100644 index 00000000..935f315f --- /dev/null +++ b/gridify-light-logo2.svg @@ -0,0 +1 @@ +gridify-light-logo \ No newline at end of file diff --git a/gridify-readme-logo.svg b/gridify-readme-logo.svg new file mode 100644 index 00000000..30162c95 --- /dev/null +++ b/gridify-readme-logo.svg @@ -0,0 +1 @@ +gridify-readme-logo \ No newline at end of file diff --git a/guide/autoMapper.html b/guide/autoMapper.html new file mode 100644 index 00000000..ee5fae93 --- /dev/null +++ b/guide/autoMapper.html @@ -0,0 +1,52 @@ + + + + + + AutoMapper | Gridify + + + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

AutoMapper

Gridify is completely compatible with AutoMapper. Also, these two packages can help each other nicely. We can use Gridify for filtering, sorting, and paging and AutoMapper for the projection.

csharp
// AutoMapper ProjectTo + Filtering Only, example
+var query = personRepo.ApplyFiltering(gridifyQuery);
+var result = query.ProjectTo<PersonDTO>().ToList();
csharp
// AutoMapper ProjectTo + Filtering + Ordering + Paging, example
+QueryablePaging<Person> qp = personRepo.GridifyQueryable(gridifyQuery);
+var result = new Paging<Person>(qp.Count, qp.Query.ProjectTo<PersonDTO>().ToList());

GridifyTo!

Filtering, Ordering, Paging, and Projection are all done with GridifyTo.

Gridify library does not have a built-in GridifyTo extension method because we don't want to have AutoMapper dependency. but if you are using AutoMapper in your project, I recommend you to add the bellow extension method to your project.

csharp
public static Paging<TDestination> GridifyTo<TSource, TDestination>(
+   this IQueryable<TSource> query, IMapper autoMapper, IGridifyQuery gridifyQuery, IGridifyMapper<TSource> mapper = null)
+{
+   var res = query.GridifyQueryable(gridifyQuery, mapper);
+   return new Paging<TDestination>(res.Count, res.Query.ProjectTo<TDestination>(autoMapper.ConfigurationProvider).ToList());
+}
csharp
// only if you have Gridify.EntityFramework package installed.
+public static async Task<Paging<TDestination>> GridifyToAsync<TSource, TDestination>(
+   this IQueryable<TSource> query, IMapper autoMapper, IGridifyQuery gridifyQuery, IGridifyMapper<TSource> mapper = null)
+{
+   var res = await query.GridifyQueryableAsync(gridifyQuery, mapper);
+   return new Paging<TDestination>(res.Count, await res.Query.ProjectTo<TDestination>(autoMapper.ConfigurationProvider).ToListAsync());
+}
+ + + + \ No newline at end of file diff --git a/guide/compile.html b/guide/compile.html new file mode 100644 index 00000000..fd3b634d --- /dev/null +++ b/guide/compile.html @@ -0,0 +1,50 @@ + + + + + + Compile and Reuse | Gridify + + + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Compile and Reuse

You can access Gridify generated expressions using the GetFilteringExpression of GridifyQuery or BuildCompiled methods of QueryBuilder class, by storing an expression you can use it multiple times without having any overheads, also if you store a compiled expression you get a massive performance boost.

WARNING

You should only use a compiled expression (delegate) if you are not using Gridify alongside an ORM like Entity-Framework.

csharp
// eg.1 - using GridifyQuery - Compiled - where only
+var gq = new GridifyQuery() { Filter = "name=John" };
+var expression = gq.GetFilteringExpression<Person>();
+var compiledExpression = expression.Compile();
+var result = persons.Where(compiledExpression);
csharp
// eg.2 - using QueryBuilder - Compiled - where only
+var compiledExpression = new QueryBuilder<Person>()
+                         .AddCondition("name=John")
+                         .BuildFilteringExpression()
+                         .Compile();
+var result = persons.Where(compiledExpression);
csharp
// eg.3 - using QueryBuilder - BuildCompiled
+var func = new QueryBuilder<Person>()
+          .AddCondition("name=John")
+          .BuildCompiled();
+var result = func(persons);

Performance

This is the performance improvement example when you use a compiled expression.

MethodMeanRatioRatioSDGen 0Gen 1Allocated
GridifyCompiled1.008 us0.0010.000.1564-984 B
Gridify689.329 us1.0000.005.85942.929739,924 B
NativeLINQ736.854 us1.0190.015.85942.929737,392 B
+ + + + \ No newline at end of file diff --git a/guide/dependency-injection.html b/guide/dependency-injection.html new file mode 100644 index 00000000..db93a028 --- /dev/null +++ b/guide/dependency-injection.html @@ -0,0 +1,96 @@ + + + + + + Dependency Injection | Gridify + + + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Dependency Injection

Gridify offers a powerful feature that enables you to streamline data mapping and configurations in your application by integrating with the Dependency Injection (DI) container. By registering your mapping profiles with DI, you can achieve cleaner, more maintainable code and improved separation of concerns. This section provides an overview of how to register your GridifyMapper configurations with DI.

Register GridifyMapper with DI

Registering Gridify mapping with DI is a straightforward process. You'll define mapping profiles for your models and then register them in the DI container. Follow these steps to get started:

1. Define Mapping Profiles

Create mapping profiles by inheriting from GridifyMapper<T>, where T represents the type you want to map. Configure your mappings within these profile classes.

Example:

csharp
public class WeatherForecastGridifyMapper : GridifyMapper<WeatherForecast>
+{
+    public WeatherForecastGridifyMapper()
+    {
+        // Define your mappings here
+        AddMap("summary", q => q.Summary);
+        AddMap("temp", q => q.TemperatureC);
+
+        // optionally you can customize the configuration for each mapper
+        Configuration.CaseSensitive = false;
+        Configuration.AllowNullSearch = true;
+        Configuration.IgnoreNotMappedFields = true;
+
+    }
+}

2. Register Mapping Profiles

Utilize the AddGridifyMappers extension method available on the IServiceCollection to scan your assembly and register all mapping profiles.

Example:

csharp
using Gridify; // Make sure to include the necessary namespace
+// ...
+
+public void ConfigureServices(IServiceCollection services)
+{
+    // Other service registrations
+
+    services.AddGridifyMappers(typeof(Program).Assembly);
+}

3. Inject and Use Mappers

Once you've registered the mapping profiles, you can inject the corresponding IGridifyMapper<T> interfaces into your services or controllers.

Example:

csharp
public class WeatherForecastController : ControllerBase
+{
+    private readonly IGridifyMapper<WeatherForecast> _mapper;
+
+    public WeatherForecastController(IGridifyMapper<WeatherForecast> mapper)
+    {
+        _mapper = mapper;
+    }
+
+   [HttpGet(Name = "GetWeatherForecast")]
+    public Paging<WeatherForecast> Get([FromQuery] GridifyQuery query)
+    {
+        IQueryable<WeatherForecast> result = GetWeatherForecasts();
+
+        // You can pass the mapper to the GridifyExtension
+        return result.Gridify(query, _mapper);
+    }
+}
csharp
public class WeatherForecastController : ControllerBase
+{
+    private readonly IGridifyMapper<WeatherForecast> _mapper;
+
+    public WeatherForecastController(IGridifyMapper<WeatherForecast> mapper)
+    {
+        _mapper = mapper;
+    }
+
+  [HttpGet(Name = "GetWeatherForecast")]
+    public IEnumerable<WeatherForecast> Get([FromQuery] GridifyQuery query)
+    {
+        var result = GetWeatherForecasts();
+
+        var queryBuilder = new QueryBuilder<WeatherForecast>()
+            .UseCustomMapper(_mapper)
+            .AddQuery(query);
+
+        return queryBuilder.Build(result);
+    }
+}
+ + + + \ No newline at end of file diff --git a/guide/extensions.html b/guide/extensions.html new file mode 100644 index 00000000..99ccb0c9 --- /dev/null +++ b/guide/extensions.html @@ -0,0 +1,37 @@ + + + + + + Extensions | Gridify + + + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Extensions

The Gridify library adds the below extension methods to IQueryable objects.

All Gridify extension methods can accept GridifyQuery and GridifyMapper as a parameter. Make sure to check out the documentation of these classes for more information.

TIP

If you want to use Gridify extension methods on an IEnumerable object, use .AsQueryable() first.

ApplyFiltering

You can use this method if you want to only apply filtering on an IQueriable or DbSet.

csharp
var query = personsRepo.ApplyFiltering("name = John");

this is completely equivalent to the below LINQ query:

csharp
var query = personsRepo.Where(p => p.Name == "John");

In the ApplyFiltering method, we can use a raw string to filter the data, which can be generated dynamically or passed by the end-user for example through an API client or console input, but using the Linq Where method, we always have to hard code the query for the supported fields.

Check out the Filtering Operators section for more information.

ApplyOrdering

You can use this method if you want to only apply ordering on an IQueriable collection or DbSet.

csharp
var query = personsRepo.ApplyOrdering("name, age desc");

this is completely equivalent to the below LINQ query:

csharp
var query = personsRepo.OrderBy(x => x.Name).ThenByDescending(x => x.Age);

Check out the Ordering section for more information.

ApplyPaging

You can use this method if you want to only apply paging on an IQueryable collection or DbSet.

csharp
var query = personsRepo.ApplyPaging(3, 20);

this is completely equivalent to the below LINQ query:

csharp
var query = personsRepo.Skip((3-1) * 20).Take(20);

ApplyFilteringAndOrdering

You can use this method if you want to apply filtering and ordering on an IQueryable collection or DbSet. This method accepts IGridifyQuery.

ApplyOrderingAndPaging

You can use this method if you want to apply ordering and paging on an IQueryable collection or DbSet. This method accepts IGridifyQuery.

ApplyFilteringOrderingPaging

You can use this method if you want to apply filtering and ordering and paging on an IQueryable collection or DbSet. This method accepts IGridifyQuery.

GridifyQueryable

Like ApplyFilteringOrderingPaging but it returns a QueryablePaging<T> that has an extra int Count value that can be used for pagination.

Gridify

This is an ALL-IN-ONE package, it accepts IGridifyQuery, applies filtering, ordering, and paging, and returns a Paging<T> object. This method is completely optimized to be used with any Grid component.

+ + + + \ No newline at end of file diff --git a/guide/extensions/elasticsearch.html b/guide/extensions/elasticsearch.html new file mode 100644 index 00000000..d4556296 --- /dev/null +++ b/guide/extensions/elasticsearch.html @@ -0,0 +1,184 @@ + + + + + + Elasticsearch | Gridify + + + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Elasticsearch

Gridify.Elasticsearch is an extension of Gridify, that provides an ability to generate Elasticsearch DSL queries.

Gridify.Elasticsearch Package

The Gridify.Elasticsearch package has a bunch of extension methods that allow to convert Gridify filters and sortings to Elasticsearch DSL queries using Elastic.Clients.Elasticsearch .NET client.

Installation

Package Manager

shell
Install-Package Gridify.Elasticsearch -Version 2.14.2

.NET CLI

shell
dotnet add package Gridify.Elasticsearch --version 2.14.2

Configurations

CustomElasticsearchNamingAction

Specifies how field names are inferred from CLR property names. By default, Elastic.Clients.Elasticsearch uses camel-case property names.

  • If null (default behavior) CLR property EmailAddress will be inferred as emailAddress Elasticsearch document field name.
  • If, e.g., p => p, the CLR property EmailAddress will be inferred as EmailAddress Elasticsearch document field name.

Default

csharp
await client.SearchAsync<User>(s => s
+    .Index("users")
+    .ApplyFiltering("emailAddress = test@test.com"));

this will make the next Elasticsearch query:

json
GET users/_search
+{
+  "query": {
+    "term": {
+      "emailAddress.keyword": {
+        "value": "test@test.com"
+      }
+    }
+  }
+}

Customized:

csharp
GridifyGlobalConfiguration.CustomElasticsearchNamingAction = p => $"_{p}_";
+
+await client.SearchAsync<User>(s => s
+    .Index("users")
+    .ApplyFiltering("emailAddress = test@test.com"));

this will make the next Elasticsearch query:

json
GET users/_search
+{
+  "query": {
+    "term": {
+      "_EmailAddress_.keyword": {
+        "value": "test@test.com"
+      }
+    }
+  }
+}

Examples of usage

Without pre-initialized mapper

csharp
var gq = new GridifyQuery()
+{
+    Filter = "FirstName=John",
+    Page = 1,
+    PageSize = 20,
+    OrderBy = "Age"
+};
+
+var response = await client.SearchAsync<User>(s => s
+    .Index("users")
+    .ApplyPaging(gq)
+    .ApplyFiltering(gp)
+    .ApplyOrdering(gp));
+
+return response.Documents;
json
GET users/_search
+{
+  "query": {
+    "term": {
+      "firstName.keyword": {
+        "value": "John"
+      }
+    }
+  },
+  "from": 0,
+  "size": 20,
+  "sort": [{
+    "age": {
+      "order": "asc"
+    }
+  }]
+}

With custom mapping

csharp
var gq = new GridifyQuery()
+{
+    Filter = "name=John, surname=Smith, age=30, totalOrderPrice=45",
+    Page = 1,
+    PageSize = 20,
+    OrderBy = "Age"
+};
+
+var mapper = new GridifyMapper<User>()
+     .AddMap("name", x => x.FirstName)
+     .AddMap("surname", x => x.LastName)
+     .AddMap("age", x => x.Age)
+     .AddMap("totalOrderPrice", x => x.Order.TotalSum);
+
+var response = await client.SearchAsync<User>(s => s
+    .Index("users")
+    .ApplyFilteringOrderingPaging(gq));
+
+return response.Documents;
json
GET users/_search
+{
+  "query": {
+    "bool": {
+      "must": [
+        {
+          "term": {
+            "firstName.keyword": {
+              "value": "John"
+            }
+          }
+        },
+        {
+          "term": {
+            "lastName.keyword": {
+              "value": "Smith"
+            }
+          }
+        },
+        {
+          "term": {
+            "age": {
+              "value": 30
+            }
+          }
+        },
+        {
+          "term": {
+            "order.totalSum": {
+              "value": 45
+            }
+          }
+        }
+      ]
+    }
+  },
+  "from": 0,
+  "size": 20,
+  "sort": [{
+    "age": {
+      "order": "asc"
+    }
+  }]
+}

With CustomElasticsearchNamingAction initialized

By default, Elasticsearch converts property names to camel-case for document fields. That's Gridify.Elasticsearch extensions work by default. But if it's necessary to apply a custom naming policy, it can also be customized.

csharp
Func<string, string>? namingAction = p => $"_{p}_";
+var mapper = new GridifyMapper<TestClass>(autoGenerateMappings: true)
+{
+   Configuration = { CustomElasticsearchNamingAction = namingAction }
+};
+
+var gq = new GridifyQuery()
+{
+    Filter = "FirstName=John",
+    Page = 1,
+    PageSize = 20,
+    OrderBy = "Age"
+};
+
+var response = await client.SearchAsync<User>(s => s
+    .Index("users")
+    .ApplyFilteringOrderingPaging(gq));
json
GET users/_search
+{
+  "query": {
+    "term": {
+      "_FirstName_.keyword": {
+        "value": "John"
+      }
+    }
+  },
+  "from": 0,
+  "size": 20,
+  "sort": [{
+    "_Age_": {
+      "order": "asc"
+    }
+  }]
+}

WARNING

Gridify.Elasticsearch package does not support all of the advanced Gridify features like NestedFiltering

+ + + + \ No newline at end of file diff --git a/guide/extensions/entityframework.html b/guide/extensions/entityframework.html new file mode 100644 index 00000000..1efd4b6e --- /dev/null +++ b/guide/extensions/entityframework.html @@ -0,0 +1,41 @@ + + + + + + Entity Framework | Gridify + + + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Entity Framework

Gridify.EntityFramework Package

The Gridify.EntityFramework package has two additional GridifyAsync() and GridifyQueryableAsync() methods.

Installation

Package Manager

shell
Install-Package Gridify.EntityFramework -Version 2.14.2

.NET CLI

shell
dotnet add package Gridify.EntityFramework --version 2.14.2

Compatibility layer

If you want to use gridify with Entity Framework, you should enable the compatibility layer:

csharp
GridifyGlobalConfiguration.EnableEntityFrameworkCompatibilityLayer();

Enabling the compatibility layer provides the following features:

  • It tweaks the internal expression builder to make it compatible with Entity Framework.
  • EF query optimization
  • EF ServiceProviderCaching support
  • Creates parameterized queries
sql
DECLARE @__Value_0 nvarchar(4000) = N'vahid';
+
+SELECT [u].[Id], [u].[CreateDate], [u].[FkGuid], [u].[Name]
+FROM [Users] AS [u]
+WHERE [u].[Name] = @__Value_0

Configuration

EntityFrameworkCompatibilityLayer

Setting this property to true Enables the EntityFramework Compatibility layer to make the generated expressions compatible whit entity framework.

  • type: bool
  • default: false

EnableEntityFrameworkCompatibilityLayer()

Simply sets the EntityFrameworkCompatibilityLayer property to true.

DisableEntityFrameworkCompatibilityLayer()

Simply sets the EntityFrameworkCompatibilityLayer property to false.

+ + + + \ No newline at end of file diff --git a/guide/extensions/gridify-client.html b/guide/extensions/gridify-client.html new file mode 100644 index 00000000..3cec58f8 --- /dev/null +++ b/guide/extensions/gridify-client.html @@ -0,0 +1,57 @@ + + + + + + Gridify Client Library | Gridify + + + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Gridify Client Library

The Gridify Client library is a lightweight JavaScript and TypeScript library designed to simplify the creation of dynamic queries on the client side. This library facilitates the construction of queries that can be seamlessly integrated with your server-side APIs, leveraging the powerful features of Gridify.

Installation

To integrate the Gridify Client library into your project, install it using npm:

shell
npm i gridify-client

GridifyQueryBuilder

The GridifyQueryBuilder interface represents the methods available for constructing dynamic queries using the Gridify Client library.

The following table describes the methods available in the GridifyQueryBuilder interface for constructing dynamic queries.

MethodParameterDescription
setPagepage: numberSet the page number for pagination.
setPageSizepageSize: numberSet the page size for pagination.
addOrderByfield: string, descending?: booleanAdd ordering based on a field. If descending is true, the ordering is in descending order (default is ascending).
addConditionfield, operator, value, caseSensitive, escapeValueAdd filtering conditions. caseSensitive and escapeValue are optional parameters.
startGroup-Start a logical grouping of conditions.
endGroup-End the current logical group.
and-Add the logical AND operator.
or-Add the logical OR operator.
build-Build and retrieve the constructed query.

Conditional Operators

We can use the ConditionalOperator enum to access supported operators. we can pass these operators to the second parameter of addCondition method

OperatorDescription
EqualEquality
NotEqualInequality
LessThanLess Than
GreaterThanGreater Than
GreaterThanOrEqualGreater Than or Equal
LessThanOrEqualLess Than or Equal
ContainsString Contains (LIKE)
NotContainsString Does Not Contain (NOT LIKE)
StartsWithString Starts With
NotStartsWithString Does Not Start With
EndsWithString Ends With
NotEndsWithString Does Not End With

Usage Example

Below is a basic example demonstrating the usage of the Gridify Client library in TypeScript. This example constructs a dynamic query for pagination, ordering, and filtering:

ts
import { GridifyQueryBuilder, ConditionalOperator as op } from "gridify-client";
+
+const query = new GridifyQueryBuilder()
+  .setPage(2)
+  .setPageSize(10)
+  .addOrderBy("name", true)
+  .startGroup()
+    .addCondition("age", op.LessThan, 50)
+    .or()
+    .addCondition("name", op.StartsWith, "A")
+  .endGroup()
+  .and()
+  .addCondition("isActive", op.Equal, true)
+  .build();
+
+console.log(query);

Output:

json
{
+  "page": 2,
+  "pageSize": 10,
+  "orderBy": "name desc",
+  "filter": "(age<50|name^A),isActive=true"
+}
+ + + + \ No newline at end of file diff --git a/guide/filtering.html b/guide/filtering.html new file mode 100644 index 00000000..54ff29e8 --- /dev/null +++ b/guide/filtering.html @@ -0,0 +1,78 @@ + + + + + + Filtering | Gridify + + + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Filtering

Gridify supports the following filtering operators:

Conditional Operators

NameOperatorUsage example
Equal="FieldName = Value"
NotEqual!="FieldName !=Value"
LessThan<"FieldName < Value"
GreaterThan>"FieldName > Value"
GreaterThanOrEqual>="FieldName >=Value"
LessThanOrEqual<="FieldName <=Value"
Contains - Like=*"FieldName =*Value"
NotContains - NotLike!*"FieldName !*Value"
StartsWith^"FieldName ^ Value"
NotStartsWith!^"FieldName !^ Value"
EndsWith$"FieldName $ Value"
NotEndsWith!$"FieldName !$ Value"

TIP

If you don't specify any value after = or != operators, Gridify search for the default and null values.

csharp
var x = personsRepo.ApplyFiltering("name=");

this is equivalent to the bellow LINQ query:

csharp
var x = personsRepo.Where(p =>
+             p.Name is null ||
+             p.Name == string.Empty );

Special Operators

Logical Operators

Using logical operators we easily can create complex queries.

NameOperatorUsage example
AND,"FirstName = Value, LastName = Value2"
OR|"FirstName=Value|LastName=Value2"
Parenthesis()"(FirstName=*Jo,Age<30)|(FirstName!=Hn,Age>30)"

Case Insensitive Operator - /i

The '/i' operator can be use after string values for case insensitive searches. You should only use this operator after the search value.

Example:

csharp
var x = personsRepo.ApplyFiltering("FirstName=John/i");

this query matches with JOHN - john - John - jOHn ...

Escaping

Gridify have five special operators , | ( ) /i to handle complex queries and case-insensitive searches. If you want to use these characters in your query values (after conditional operator), you should add a backslash \ before them. having this regex could be helpful ([(),|]|\/i).

JavaScript escape example:

javascript
let esc = (v) => v.replace(/([(),|\\]|\/i)/g, '\\$1')

Csharp escape example:

csharp
var value = "(test,test2)";
+var esc = Regex.Replace(value, "([(),|\\]|\/i)", "\\$1" );
+// esc = \(test\,test2\)

Passing Indexes

Since version v2.3.0, Gridify support passing indexes to the sub collections. We can pass the index using the [ ] brackets. In the bellow example we want to filter data using 8th index of our SubCollection.

csharp
var gm = new GridifyMapper<TargetType>()
+      .AddMap("prop", (x , index) => x.SubCollection[index].SomeProp);
+
+var gq = new GridifyQuery
+{
+    Filter = "prop[8] > 10"
+};

Checkout Use Indexes on Sub-Collections for more information.

Custom Operators

Sometimes the default Gridify operators are not enough, For example, if you need an operator for regex matching or when you are using the EntityFramework, you may want to use EF.Functions.FreeText rather than a LIKE with wildcards. In this case, you can define your own operators. (added in v2.6.0)

To define a custom operator, you need to create a class that implements the IGridifyOperator interface. then you need to register it through the global CustomOperators configuration.

TIP

Custom operators must be start with the # character.

  • FreeTextOperator Example:
csharp
class FreeTextOperator : IGridifyOperator
+{
+   public string GetOperator() => "#=";
+   public Expression<OperatorParameter> OperatorHandler()
+   {
+      return (prop, value) => EF.Functions.FreeText(prop, value.ToString());
+   }
+}
  • RegexMatchOperator Example:
csharp
class RegexMatchOperator : IGridifyOperator
+{
+   public string GetOperator() => "#%";
+   public Expression<OperatorParameter> OperatorHandler()
+   {
+      return (prop, value) => Regex.IsMatch(prop.ToString(), value.ToString());
+   }
+}
  • InOperator Example:
csharp
class InOperator: IGridifyOperator
+{
+   public string GetOperator()
+   {
+      return "#In";
+   }
+
+   public Expression<OperatorParameter> OperatorHandler()
+   {
+      return (prop, value) => value.ToString()
+         .Split(";",StringSplitOptions.RemoveEmptyEntries)
+         .Contains(prop.ToString());
+   }
+}
+
+// usage: .ApplyFiltering("name #In John;David;Felipe")

Registration Example:

csharp
 GridifyGlobalConfiguration.CustomOperators.Register<FreeTextOperator>();
+ GridifyGlobalConfiguration.CustomOperators.Register<RegexMatchOperator>();
+ GridifyGlobalConfiguration.CustomOperators.Register<InOperator>();
+ + + + \ No newline at end of file diff --git a/guide/getting-started.html b/guide/getting-started.html new file mode 100644 index 00000000..ca9c55df --- /dev/null +++ b/guide/getting-started.html @@ -0,0 +1,37 @@ + + + + + + Getting Started | Gridify + + + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Getting Started

There are three packages available for gridify in the nuget repository.

TIP

If you are using the Entity framework in your project, you should install the Gridify.EntityFramework package instead of Gridify.

This package has the same functionality as the Gridify package, but it is designed to be more compatible with Entity Framework.


TIP

In order to use Gridify with Elasticsearch it's necessary to install Gridify.Elasticsearch.


If you're developing in a JavaScript or TypeScript environment and need to create dynamic queries on the client side for server-side operations, Gridify also offer a lightweight client library. gridify-client

Installation

shell
dotnet add package Gridify --version 2.14.2
shell
dotnet add package Gridify.EntityFramework --version 2.14.2
shell
dotnet add package Gridify.Elasticsearch --version 2.14.2
shell
npm i gridify-client

Namespace

After installing the package, you can use the Gridify namespace to access the package classes and static Extension methods.

csharp
using Gridify;

How to use

There are two ways to start using Gridify:

+ + + + \ No newline at end of file diff --git a/guide/gridifyGlobalConfiguration.html b/guide/gridifyGlobalConfiguration.html new file mode 100644 index 00000000..39a130aa --- /dev/null +++ b/guide/gridifyGlobalConfiguration.html @@ -0,0 +1,37 @@ + + + + + + GridifyGlobalConfiguration | Gridify + + + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

GridifyGlobalConfiguration

Using this class you can change the default behavior and configuration of the Gridify library.

General configurations

DefaultPageSize

The default page size for the paging methods when no page size is specified.

  • type: int
  • default: 20

CaseSensitiveMapper

By default mappings are case insensitive. For example, name=John and Name=John are considered equal. You can change this behavior by setting this property to true.

AllowNullSearch

This option enables the null keyword in filtering operations, for example, name=null searches for all records with a null value for the name field not the string "null". if you need to search for the string "null" you can disable this option.

IgnoreNotMappedFields

If true, in filtering and ordering operations, gridify doesn't return any exceptions when a mapping is not defined for the given field.

DisableNullChecks

On nested collections by default gridify adds a null checking condition to prevent the null reference exceptions

e.g () => field != null && field....

some ORMs like NHibernate don't support this. You can disable this behavior by setting this option to true.

  • type: bool
  • default: false

CustomOperators

Using the Register method of this property you can add your own custom operators.

csharp
 GridifyGlobalConfiguration.CustomOperators.Register<MyCustomOperator>();

To learn more about custom operators, see Custom operator

+ + + + \ No newline at end of file diff --git a/guide/gridifyMapper.html b/guide/gridifyMapper.html new file mode 100644 index 00000000..6a9e95fa --- /dev/null +++ b/guide/gridifyMapper.html @@ -0,0 +1,74 @@ + + + + + + GridifyMapper | Gridify + + + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

GridifyMapper

Internally Gridify is using an auto generated mapper that maps your string base field names to actual properties in your entities, but sometimes we don't want to support filtering or sorting on a specific field. If you want to control what field names are mapped to what properties, you can create a custom mapper.

To get a better understanding of how this works, consider the following example:

csharp
// sample Entities
+public class Person
+{
+    public string UserName { get; set; }
+    public string FirstName { get; set; }
+    public string LastName { get; set; }
+    public string Password { get; set; }
+    public Contact Contact { get; set; }
+}
+
+public class Contact
+{
+    public string Address { get; set; }
+    public int PhoneNumber { get; set; }
+}

In this example we want to:

  • Generate default mappings
  • Ignore the Password property
  • Map the address and mobile to the Contact property
  • Make sure the userName value is always lowercase in the search
csharp
var mapper = new GridifyMapper<Person>()
+            .GenerateMappings()
+            .RemoveMap(nameof(Person.Password))
+            .AddMap("address", p => p.Contact.Address)
+            .AddMap("mobile", p => p.Contact.PhoneNumber)
+            .AddMap("userName", p => p.UserName, v => v.ToLower());

In the following, we will become more familiar with the above methods

GenerateMappings

This method generates mappings for the properties of the entity, including top-level public properties and properties of nested classes up to the specified nesting depth.

  • To generate mappings for top-level public properties only, you can call this method without passing any arguments:
csharp
var mapper = new GridifyMapper<Person>()
+               .GenerateMappings();
  • To generate mappings with control over nesting depth, you can specify the maxNestingDepth parameter. This parameter limits how deep the mappings will be generated for nested classes. Set it to 0 for no nesting or a positive value to control the depth (added in v2.11.0):
csharp
var mapper = new GridifyMapper<Person>()
+      // Generates mappings for top-level properties and properties of nested classes up to 2 levels deep.
+     .GenerateMappings(2);

TIP

Another alternative to generate default mappings for top-level public properties is by passing true to the GridifyMapper constructor. This generates mappings without considering nesting depth.

csharp
var mapper = new GridifyMapper<Person>(true);

RemoveMap

This method removes mapping from the mapper. Usually you will use this method after you have generated the mappings to ignore some properties that you don't want to be supported by Gridify filtering or ordering actions.

AddMap

This method adds a mapping to the mapper.

  • the first parameter is the name of the field you want to use in the string query
  • the second parameter is a property selector expression
  • the third parameter is an optional value convertor expression that you can use to convert user inputs to anything you want

Value convertor

If you need to change your search values before the filtering operation you can use this feature, the third parameter of the GridifyMapper AddMap method accepts a function that you can use to convert the input values.

in the above example we want to convert the userName value to lowercase before the filtering operation.

csharp
mapper = mapper.AddMap("userName", p => p.UserName, v => v.ToLower());

HasMap

This method checks if the mapper has a mapping for the given field name.

GetCurrentMaps

This method returns list of current mappings.

GridifyMapperConfiguration

csharp
var mapperConfig = new GridifyMapperConfiguration()
+{
+   CaseSensitive = false,
+   AllowNullSearch = true,
+   IgnoreNotMappedFields = false
+};
+
+var mapper = new GridifyMapper<Person>(mapperConfig);

CaseSensitive

By default mapper is Case-insensitive but you can change this behavior if you need Case-Sensitive mappings.

  • Type: bool
  • Default: false
csharp
var mapper = new GridifyMapper<Person>(q => q.CaseSensitive = true);

IgnoreNotMappedFields

By setting this to true Gridify don't throw an exception when a field name is not mapped. for instance, in the above example, searching for password will not throw an exception.

  • Type: bool
  • Default: false
csharp
var mapper = new GridifyMapper<Person>(q => q.IgnoreNotMappedFields = true);

AllowNullSearch

By setting this to false, Gridify don't allow searching on null values using the null keyword for values.

  • Type: bool
  • Default: true
csharp
var mapper = new GridifyMapper<Person>(q => q.AllowNullSearch = false);

Filtering on Nested Collections

You can use LINQ Select and SelectMany methods to filter your data using its nested collections.

In this example, we have 3 nested collections, but filtering will apply to the Property1 of the third level.

csharp
var mapper = new GridifyMapper<Level1>()
+    .AddMap("prop1", l1 => l1.Level2List
+            .SelectMany(l2 => l2.Level3List)
+            .Select(l3 => l3.Property1));
+// ...
+var query = level1List.ApplyFiltering("prop1 = 123", mapper);

if you have only two-level nesting, you don't need to use SelectMany.

Use Indexes on Sub-Collections

Since version v2.3.0, GridifyMapper AddMap method has a new overload that accepts a index parameter. In the bellow example we want to filter data using 8th index of our SubCollection.

csharp
var gq = new GridifyQuery { Filter = "prop[8] > 10" };
+
+var gm = new GridifyMapper<TargetType>()
+      .AddMap("prop", (x , index) => x.SubCollection[index].SomeProp);

checkout Passing Indexes for more information.

GetExpression

This method returns the selector expression that you can use it in LINQ queries.

csharp
Expression<Func<Person, object>> selector = mapper.GetExpression(nameof(Person.Name));

GetLambdaExpression

This method returns the selector expression that you can use it in LINQ queries.

csharp
LambdaExpression selector = mapper.GetLambdaExpression(nameof(Person.Name));
+ + + + \ No newline at end of file diff --git a/guide/gridifyQuery.html b/guide/gridifyQuery.html new file mode 100644 index 00000000..cc74ce1b --- /dev/null +++ b/guide/gridifyQuery.html @@ -0,0 +1,59 @@ + + + + + + GridifyQuery | Gridify + + + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

GridifyQuery

GridifyQuery is a simple class for configuring Filtering, Ordering and Paging.

csharp
var gq = new GridifyQuery()
+{
+    Filter = "FirstName=John",
+    Page = 1,
+    PageSize = 20,
+    OrderBy = "Age"
+};
+
+// Apply Filter, Sort and Paging
+Paging<Person> result = personsRepo.Gridify(gq);

IsValid

This extension method, checks if the GridifyQuery (Filter, OrderBy) is valid to use with a custom mapper or the auto generated mapper and returns true or false.

csharp
var gq = new GridifyQuery() { Filter = "name=John" , OrderBy = "Age" };
+// true
+bool isValid = gq.IsValid<Person>();
csharp
var gq = new GridifyQuery() { Filter = "NonExist=John" , OrderBy = "Age" };
+// false (NonExist is not a property of Person)
+bool isValid = gq.IsValid<Person>();
csharp
var gq = new GridifyQuery() { Filter = "@name=!" , OrderBy = "Age" };
+// false (this is not a valid filter)
+bool isValid = gq.IsValid<Person>();

Optionally you can pass a custom mapper to check if the GridifyQuery is valid for that mapper.

csharp
var mapper = new GridifyMapper<Person>()
+      .AddMap("name", q => q.Name);
+var gq = new GridifyQuery() { Filter = "name=John" , OrderBy = "Age" };
+
+// false (Age is not mapped)
+bool isValid = gq.IsValid(mapper);

GetFilteringExpression

This extension method, creates a lambda expression using the GridifyQuery.Filter property that you can use it in the LINQ Where method to filter the data.

csharp
var gq = new GridifyQuery() { Filter = "name=John" };
+Expression<Func<T, bool>> expression = gq.GetFilteringExpression<Person>();
+var result = personsRepo.Where(expression);
+ + + + \ No newline at end of file diff --git a/guide/index.html b/guide/index.html new file mode 100644 index 00000000..e3c5e395 --- /dev/null +++ b/guide/index.html @@ -0,0 +1,37 @@ + + + + + + Introduction | Gridify + + + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Introduction

Greetings!

Gridify is an exceptional dynamic LINQ library designed to simplify the process of converting strings into LINQ queries. It offers remarkable performance and ease-of-use, making it effortless to apply filtering, sorting, and pagination utilizing text-based data.

Features

Here are some notable features of Gridify:

  • Fast and user-friendly
  • Supports filtering, sorting, and pagination
  • Enables conversion from strings to LINQ queries
  • Supports nested queries and sub-collections
  • Allows mapping from strings to objects
  • Supports query compilation
  • Compatible with collection indexes
  • Custom operators
  • Can be used with any collection that supports LINQ
  • Compatible with object-mappers like AutoMapper
  • Compatible with ORMs, particularly Entity Framework
  • Supports Elasticsearch DSL query
  • Javascript/Typescript gridify-client

Examples

To provide a better understanding of Gridify's functionality, we have prepared a few examples:

Performance

Filtering is the most expensive feature in Gridify. The following benchmark compares filtering in various popular dynamic LINQ libraries. Interestingly, Gridify outperforms even Native LINQ in terms of speed. It's worth mentioning that other features like Pagination and Sorting in Gridify have minimal impact on performance.

MethodMeanErrorStdDevRatioAllocatedAlloc Ratio
Gridify599.8 us2.76 us2.45 us0.9236.36 KB1.11
Native_LINQ649.9 us2.55 us2.38 us1.0032.74 KB1.00
DynamicLinq734.8 us13.90 us13.01 us1.13119.4 KB3.65
Sieve1,190.9 us7.41 us6.93 us1.8353.05 KB1.62
Fop2,637.6 us8.59 us7.61 us4.06321.57 KB9.82
CSharp_Scripting216,863.8 us4,295.66 us6,021.92 us336.6423660.26 KB722.71
Details

BenchmarkDotNet v0.13.10, Windows 11 (10.0.22621.2715/22H2/2022Update/SunValley2) 12th Gen Intel Core i7-12800H, 1 CPU, 20 logical and 14 physical cores .NET SDK 8.0.100 [Host] : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2

This Benchmark is available Here

+ + + + \ No newline at end of file diff --git a/guide/ordering.html b/guide/ordering.html new file mode 100644 index 00000000..95b77953 --- /dev/null +++ b/guide/ordering.html @@ -0,0 +1,53 @@ + + + + + + Ordering | Gridify + + + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Ordering

The ordering query expression can be built with a comma-delimited ordered list of field/property names followed by asc or desc keywords.

By default, if you don't add these keywords, Gridify assumes you need Ascending ordering.

csharp
// asc - desc
+var x = personsRepo.ApplyOrdering("Id"); // default ascending its equal to "Id asc"
+var x = personsRepo.ApplyOrdering("Id desc"); // use descending ordering
+
+// multiple orderings example
+var x = personsRepo.ApplyOrdering("Id desc, FirstName asc, LastName");
csharp
// asc - desc
+var gq = new GridifyQuery() { OrderBy = "Id" }; // default ascending its equal to "Id asc"
+var gq = new GridifyQuery() { OrderBy = "Id desc" }; // use descending ordering
+
+// multiple orderings example
+var gq = new GridifyQuery() { OrderBy = "Id desc, FirstName asc, LastName" };
csharp
var builder = new QueryBuilder<Person>();
+// asc - desc
+builder.AddOrderBy("Id"); // default ascending its equal to "Id asc"
+builder.AddOrderBy("Id desc"); // use descending ordering
+
+// multiple orderings example
+builder.AddOrderBy("Id desc, FirstName asc, LastName");

Order By Nullable types

Sometimes we need to order by nullable types, for example:

csharp
personsRepo.OrderBy(p => p.BirthDate.HasValue)

to support this behavior, you can use Gridify special characters (? or !) after the property name.

e.g:

To achieve the personsRepo.OrderBy(p => p.BirthDate.HasValue) query, you can use ?:

csharp
var x = personsRepo.ApplyOrdering("BirthDate?");

and for personsRepo.OrderBy(p => !p.BirthDate.HasValue), you can use !:

csharp
var x = personsRepo.ApplyOrdering("BirthDate!");

WARNING

These nullable characters will only work on the nullable types.

+ + + + \ No newline at end of file diff --git a/guide/queryBuilder.html b/guide/queryBuilder.html new file mode 100644 index 00000000..fda4801d --- /dev/null +++ b/guide/queryBuilder.html @@ -0,0 +1,41 @@ + + + + + + QueryBuilder | Gridify + + + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

QueryBuilder

The QueryBuilder class is really useful if you want to manually build your query Or when you don't want to use the extension methods.

MethodDescription
AddConditionAdds a string base Filtering query
AddOrderByAdds a string base Ordering query
ConfigurePagingConfigure Page and PageSize
AddQueryAccepts a GridifyQuery object to configure filtering,ordering and paging
UseCustomMapperAccepts a GridifyMapper to use in build methods
UseEmptyMapperSetup an Empty new GridifyMapper without auto generated mappings
AddMapAdd a single Map to existing mapper
RemoveMapRemove a single Map from existing mapper
ConfigureDefaultMapperConfiguring default mapper when we didn't use AddMapper method
IsValidValidates Condition, OrderBy, Query , Mapper and returns a bool
BuildApplies filtering ordering and paging to a queryable context
BuildCompiledCompiles the expressions and returns a delegate for applying filtering ordering and paging to a enumerable collection
BuildFilteringExpressionReturns filtering expression that can be compiled for later use for enumerable collections
BuildEvaluatorReturns an evaluator delegate that can be use to evaluate an queryable context
BuildCompiledEvaluatorReturns an compiled evaluator delegate that can be use to evaluate an enumerable collection
BuildWithPagingApplies filtering ordering and paging to a context, and returns paging result
BuildWithPagingCompiledCompiles the expressions and returns a delegate for applying filtering ordering and paging to a enumerable collection, that returns paging result
BuildWithQueryablePagingApplies filtering ordering and paging to a context, and returns queryable paging result
EvaluateDirectly Evaluate a context to check if all conditions are valid or not
csharp
var builder = new QueryBuilder<Person>()
+        .AddCondition("name=John")
+        .AddOrderBy("age, id");
+
+var query = builder.Build(persons);
+ + + + \ No newline at end of file diff --git a/hashmap.json b/hashmap.json new file mode 100644 index 00000000..73c0d96f --- /dev/null +++ b/hashmap.json @@ -0,0 +1 @@ +{"example_api-controller.md":"XBwemvty","guide_extensions_gridify-client.md":"GNaIHB85","guide_getting-started.md":"FWeU4sXV","guide_gridifyglobalconfiguration.md":"UeTwzC58","guide_gridifyquery.md":"ILlAAeUX","guide_extensions.md":"05kIhNxA","guide_ordering.md":"l6koKC3p","contribution_index.md":"xSz8e9wz","v1_index.md":"utgFH8vB","index.md":"u0-vC_kO","guide_gridifymapper.md":"pzrB12Km","guide_filtering.md":"TD7rR8FX","guide_automapper.md":"UB8WcRi7","guide_extensions_entityframework.md":"WR0AOgc0","guide_dependency-injection.md":"qVniEsVf","guide_index.md":"dsHjDx2f","guide_extensions_elasticsearch.md":"rYnqRIzY","guide_querybuilder.md":"vfz1Uidr","guide_compile.md":"cinpU56c"} diff --git a/index.html b/index.html new file mode 100644 index 00000000..a27b479b --- /dev/null +++ b/index.html @@ -0,0 +1,37 @@ + + + + + + Gridify + + + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Gridify

Documentation

A powerful dynamic LINQ library for .NET

+ + + + \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..28704298 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1 @@ +https://alirezanet.github.io/Gridify/contribution/https://alirezanet.github.io/Gridify/example/api-controllerhttps://alirezanet.github.io/Gridify/guide/autoMapperhttps://alirezanet.github.io/Gridify/guide/compilehttps://alirezanet.github.io/Gridify/guide/dependency-injectionhttps://alirezanet.github.io/Gridify/guide/extensionshttps://alirezanet.github.io/Gridify/guide/extensions/elasticsearchhttps://alirezanet.github.io/Gridify/guide/extensions/entityframeworkhttps://alirezanet.github.io/Gridify/guide/extensions/gridify-clienthttps://alirezanet.github.io/Gridify/guide/filteringhttps://alirezanet.github.io/Gridify/guide/getting-startedhttps://alirezanet.github.io/Gridify/guide/gridifyGlobalConfigurationhttps://alirezanet.github.io/Gridify/guide/gridifyMapperhttps://alirezanet.github.io/Gridify/guide/gridifyQueryhttps://alirezanet.github.io/Gridify/guide/https://alirezanet.github.io/Gridify/guide/orderinghttps://alirezanet.github.io/Gridify/guide/queryBuilderhttps://alirezanet.github.io/Gridify/https://alirezanet.github.io/Gridify/v1/ \ No newline at end of file diff --git a/social-logo.png b/social-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0a6cf163a93e139ea1339364752ade40d40e2dde GIT binary patch literal 41019 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 + + + + + Gridify (v1) | Gridify + + + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Gridify (v1)

DANGER

Gridify version 1.x.x is no longer maintained. you should consider upgrading to the latest version.

The source code of this version is available on version-1.x

Introduction

Easy and optimized way to apply Filtering, Sorting and pagination using text-based data.

The best use case of this library is Asp-net APIs. when you need to get some string base filtering conditions to filter data or sort it by a field name or apply pagination concepts to your lists and return a pageable, data grid ready information, from any repository or database.


WebApi Simple Usage example

c#
// ApiController
+
+[Produces(typeof(Paging<Person>))]
+public IActionResult GetPersons([FromQuery] GridifyQuery gQuery)
+{
+    // Gridify => Filter,Sort & Apply Paging
+    // in short, Gridify returns data especially for data Grids.
+    return myDbContext.Persons.Gridify(gQuery);
+}

complete request sample:

txt
http://exampleDomain.com/api/GetPersons?pageSize=100&page=1&sortBy=FirstName&isSortAsc=false&filter=Age%3D%3D10

also we can totally ignore GridifyQuery

txt
http://exampleDomain.com/api/GetPersons

What is GridifyQuery (basic usage example)

GridifyQuery is a simple class for configuring Filtering,Paging,Sorting.

c#
// usually, we don't need to create this object manually
+// for example, we get this object as a parameter from our API Controller
+var gQuery = new GridifyQuery()
+{
+    Filter = "FirstName==John",
+    IsSortAsc = false,
+    Page = 1,
+    PageSize = 20,
+    SortBy = "LastName"
+};
+
+Paging<Person> pData =
+         myDbContext.Persons  // we can use Any list or repository or EntityFramework context
+          .Gridify(gQuery); // Filter,Sort & Apply Paging
+
+
+// pData.TotalItems => Count persons with 'John', First name
+// pData.Items      => First 20 Persons with 'John', First Name

ApplyFiltering

Also, if you don't need paging and sorting features simply use ApplyFiltering extension instead of Gridify.

c#
var query = myDbContext.Persons.ApplyFiltering("name == John");
+// this is equal to :
+// myDbContext.Persons.Where(p => p.Name == "John");

see more examples in the tests


Performance comparison

Filtering is the most expensive feature in gridify. the below benchmark is comparing filtering in the most known dynamic linq libraries. as you can see, gridify has the closest result to the native linq. also, I Should note other features like Pagination and Sorting has almost zero overhead in Gridify.

BenchmarkDotNet=v0.13.0, OS=Windows 10.0.19043.1110 (21H1/May2021Update) 11th Gen Intel Core i5-11400F 2.60GHz, 1 CPU, 12 logical and 6 physical cores .NET SDK=5.0.301 [Host] : .NET 5.0.7 (5.0.721.25508), X64 RyuJIT

MethodMeanErrorStdDevRatioRatioSDGen 0Gen 1Allocated
Native Linq869.3 us10.54 us9.86 us1.000.005.85942.929736 KB
Gridify928.1 us13.41 us11.89 us1.070.026.83592.929746 KB
Dynamic Linq1,068.5 us10.66 us9.97 us1.230.0219.53139.7656122 KB
Sieve1,126.8 us10.73 us10.04 us1.300.028.78913.906354 KB

Installation

Install the Gridify NuGet Package.

Package Manager Console

Install-Package Gridify

.NET Core CLI

dotnet add package Gridify

Extensions

The library adds below extension methods to IQueryable:

ExtensionDescription
ApplyFiltering (string)Apply Filtering using a raw string and returns an IQueryable<T>
ApplyFiltering (GridifyQuery)Apply Filtering using string Filter property of GridifyQuery class and returns an IQueryable<T>
ApplyOrderingApply Ordering using string SortBy and bool IsSortAsc properties of GridifyQuery class and returns an IQueryable<T>
ApplyPagingApply paging using short Page and int PageSize properties of GridifyQuery class and returns an IQueryable<T>
ApplyOrderingAndPagingApply Both Ordering and paging and returns an IQueryable<T>
ApplyFilterAndOrderingApply Both Filtering and Ordering and returns an IQueryable<T>
ApplyEverythingApply Filtering,Ordering and paging and returns an IQueryable<T>
GridifyQueryableLike ApplyEverything but it returns a QueryablePaging<T> that have an extra int totalItems property to use for pagination
GridifyReceives a GridifyQuery ,Load All requested data and returns Paging<T>

TIP:

Gridify function is an ALL-IN-ONE package, that applies filtering and ordering and paging to your data and returns a Paging<T>,

but for example, if you need to just filter your data without paging or sorting options you can use ApplyFiltering function instead.


Supported Filtering Operators

NameOperatorUsage example
Equal=="FieldName ==Value"
NotEqual!="FieldName !=Value"
LessThan<"FieldName < Value"
GreaterThan>"FieldName > Value"
GreaterThanOrEqual>="FieldName >=Value"
LessThanOrEqual<="FieldName <=Value"
Contains - Like=*"FieldName =*Value"
NotContains - NotLike!*"FieldName !*Value"
StartsWith^"FieldName ^ Value"
NotStartsWith!^"FieldName !^ Value"
EndsWith$"FieldName $ Value"
NotEndsWith!$"FieldName !$ Value"
AND - &&,"FirstName ==Value, LastName ==Value2"
OR - |||"FirstName==Value|LastName==Value2"
Parenthesis()"(FirstName=*Jo,Age<30)|(FirstName!=Hn,Age>30)"

we can easily create complex queries using Parenthesis() with AND (,) + OR (|) operators.

Escape character hint:

Filtering has four special character , | ( ) to handle complex queries. if you want to use these characters in your query values (after ==), you should add a backslash \ before them.

JavaScript escape example:

javascript
let esc = (v) => v.replace(/([(),|])/g, '\\$1')

Csharp escape example:

csharp
var value = "(test,test2)";
+var esc = Regex.Replace(value, "([(),|])", "\\$1" ); // esc = \(test\,test2\)

Custom Mapping Support

By default Gridify is using a GridifyMapper object that automatically maps your string based field names to actual properties in your Entities but if you have a custom DTO (Data Transfer Object) you can create a custom instance of GridifyMapper and use it to create your mappings.

c#
// example Entities
+public class Person
+{
+    public string FirstName {get;set;}
+    public string LastName {get;set;}
+    public Contact Contact {get;set;}
+
+}
+public class Contact
+{
+    public string Address {get;set;}
+    public int PhoneNumber {get;set;}
+}
+
+// example DTO
+public class PersonDTO
+{
+   public string FirstName {get;set;}
+   public string LastName {get;set;}
+
+   public string Address {get;set;}
+   public int PhoneNumber {get;set;}
+}
+
+//// GridifyMapper Usage example -------------
+
+var customMappings = new GridifyMapper<Person>()
+        // because FirstName and LastName is exists in both DTO and Entity classes we can Generate them
+        .GenerateMappings()
+        // add custom mappings
+        .AddMap("address", q => q.Contact.Address )
+        .AddMap("PhoneNumber", q => q.Contact.PhoneNumber );
+
+
+// as i mentioned before. usually we don't need create this object manually.
+var gQuery = new GridifyQuery()
+{
+    Filter = "FirstName==John,Address=*st",
+    IsSortAsc = true,
+    SortBy = "PhoneNumber"
+};
+
+// myRepository: could be entity framework context or any other collections
+var gridifiedData = myRepository.Persons.Gridify(gQuery, customMappings);

by default GridifyMapper is Case-insensitive but you can change this behavior if you need Case-Sensitive mappings.

c#
var customMappings = new GridifyMapper<Person>(true); // mapper is case-sensitive now.

Combine Gridify with AutoMapper

c#
//AutoMapper ProjectTo + Filtering Only, example
+var query = myDbContext.Persons.ApplyFiltering(gridifyQuery);
+var result = query.ProjectTo<PersonDTO>().ToList();
+
+// AutoMapper ProjectTo + Filtering + Ordering + Paging, example
+QueryablePaging<Person> qp = myDbContext.Persons.GridifyQueryable(gridifyQuery);
+var result = new Paging<Person> () { Items = qp.Query.ProjectTo<PersonDTO>().ToList (), TotalItems = qp.TotalItems };

EntityFramework integration

if you need to use gridify async feature for entityFramework Core, use Gridify.EntityFramework package instead.

this package have two additional GridifyAsync() and GridifyQueryableAsync() functions.

shell
dotnet add package Gridify.EntityFramework

Contribution

Any Contribution to improve documentation and library is appreciated feel free to send pull-Request. ❤️

+ + + + \ No newline at end of file

ZW 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�zBE;A6`RoYnYVbGchb9$^iIU2 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 literal 0 HcmV?d00001 diff --git a/assets/inter-roman-vietnamese.paY3CzEB.woff2 b/assets/inter-roman-vietnamese.paY3CzEB.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5a9f9cb9ca0cd78b6ea2f3e5c9d2838dc8895598 GIT binary patch literal 8492 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 a!Vc~9U7SGB8$q3Ii#9CnAx#qS0RRAsKuhfa literal 0 HcmV?d00001 diff --git a/assets/style.O8TM59vS.css b/assets/style.O8TM59vS.css new file mode 100644 index 00000000..84c399eb --- /dev/null +++ b/assets/style.O8TM59vS.css @@ -0,0 +1 @@ +@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Gridify/assets/inter-roman-cyrillic.jIZ9REo5.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Gridify/assets/inter-roman-cyrillic-ext.8T9wMG5w.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 var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Gridify/assets/inter-roman-greek.Cb5wWeGA.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Gridify/assets/inter-roman-greek-ext.9JiNzaSO.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Gridify/assets/inter-roman-latin.bvIUbFQP.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Gridify/assets/inter-roman-latin-ext.GZWE-KO4.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Gridify/assets/inter-roman-vietnamese.paY3CzEB.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Gridify/assets/inter-italic-cyrillic.-nLMcIwj.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Gridify/assets/inter-italic-cyrillic-ext.OVycGSDq.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 var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Gridify/assets/inter-italic-greek.PSfer2Kc.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Gridify/assets/inter-italic-greek-ext.hznxWNZO.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Gridify/assets/inter-italic-latin.27E69YJn.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Gridify/assets/inter-italic-latin-ext.RnFly65-.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/Gridify/assets/inter-italic-vietnamese.xzQHe1q1.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chinese Quotes;src:local("PingFang SC Regular"),local("PingFang SC"),local("SimHei"),local("Source Han Sans SC");unicode-range:U+2018,U+2019,U+201C,U+201D}: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-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)}:root{--vp-font-family-base: "Chinese Quotes", "Inter var", "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}: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-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E")}: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-green-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-green-1);--vp-code-line-diff-remove-color: var(--vp-c-red-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-red-1);--vp-code-line-warning-color: var(--vp-c-yellow-soft);--vp-code-line-error-color: var(--vp-c-red-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-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-brand-soft);--vp-custom-block-tip-code-bg: var(--vp-c-brand-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-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-gray-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-brand-1);--vp-badge-tip-bg: var(--vp-c-brand-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{display:inline-block;margin:auto 2px -2px}mjx-container>svg{margin:auto}.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{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-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-brand-1)}.custom-block.tip a:hover{color:var(--vp-c-brand-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-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{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{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-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{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}.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 .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}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);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{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;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:""}.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-bottom:4px;text-align:center;letter-spacing:1px;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:11px}.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-f87ff6e4]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-f87ff6e4]{padding:96px 32px 168px}}.code[data-v-f87ff6e4]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-f87ff6e4]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-f87ff6e4]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-f87ff6e4]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-f87ff6e4]{padding-top:20px}.link[data-v-f87ff6e4]{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-f87ff6e4]: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-935f8a84]{display:none}.VPDocAsideOutline.has-outline[data-v-935f8a84]{display:block}.content[data-v-935f8a84]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-935f8a84]{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-935f8a84]{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-7e05ebdb]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-7e05ebdb]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-48f9bb55]{margin-top:64px}.edit-info[data-v-48f9bb55]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-48f9bb55]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-48f9bb55]{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-48f9bb55]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-48f9bb55]{margin-right:8px;width:14px;height:14px;fill:currentColor}.prev-next[data-v-48f9bb55]{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-48f9bb55]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-48f9bb55]{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-48f9bb55]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-48f9bb55]{margin-left:auto;text-align:right}.desc[data-v-48f9bb55]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-48f9bb55]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-ad5bd23b]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-ad5bd23b]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-ad5bd23b]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-ad5bd23b]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-ad5bd23b]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-ad5bd23b]{display:flex;justify-content:center}.VPDoc .aside[data-v-ad5bd23b]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-ad5bd23b]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-ad5bd23b]{max-width:1104px}}.container[data-v-ad5bd23b]{margin:0 auto;width:100%}.aside[data-v-ad5bd23b]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-ad5bd23b]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-ad5bd23b]{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-ad5bd23b]::-webkit-scrollbar{display:none}.aside-curtain[data-v-ad5bd23b]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-ad5bd23b]{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-ad5bd23b]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-ad5bd23b]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-ad5bd23b]{order:1;margin:0;min-width:640px}}.content-container[data-v-ad5bd23b]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-ad5bd23b]{max-width:688px}.external-link-icon-enabled :is(.vp-doc a[href*="://"][data-v-ad5bd23b],.vp-doc a[target=_blank][data-v-ad5bd23b]):after{content:"";color:currentColor}.VPButton[data-v-c1c5efc1]{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-c1c5efc1]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-c1c5efc1]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-c1c5efc1]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-c1c5efc1]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-c1c5efc1]: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-c1c5efc1]: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-c1c5efc1]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-c1c5efc1]: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-c1c5efc1]: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-c1c5efc1]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-c1c5efc1]: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-c1c5efc1]: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-da5d1713]{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-da5d1713]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-da5d1713]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-da5d1713]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-da5d1713]{flex-direction:row}}.main[data-v-da5d1713]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-da5d1713]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-da5d1713]{text-align:left}}@media (min-width: 960px){.main[data-v-da5d1713]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-da5d1713]{max-width:592px}}.name[data-v-da5d1713],.text[data-v-da5d1713]{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-da5d1713],.VPHero.has-image .text[data-v-da5d1713]{margin:0 auto}.name[data-v-da5d1713]{color:var(--vp-home-hero-name-color)}.clip[data-v-da5d1713]{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-da5d1713],.text[data-v-da5d1713]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-da5d1713],.text[data-v-da5d1713]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-da5d1713],.VPHero.has-image .text[data-v-da5d1713]{margin:0}}.tagline[data-v-da5d1713]{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-da5d1713]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-da5d1713]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-da5d1713]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-da5d1713]{margin:0}}.actions[data-v-da5d1713]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-da5d1713]{justify-content:center}@media (min-width: 640px){.actions[data-v-da5d1713]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-da5d1713]{justify-content:flex-start}}.action[data-v-da5d1713]{flex-shrink:0;padding:6px}.image[data-v-da5d1713]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-da5d1713]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-da5d1713]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-da5d1713]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-da5d1713]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-da5d1713]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-da5d1713]{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-da5d1713]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-da5d1713]{width:320px;height:320px}}[data-v-da5d1713] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-da5d1713] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-da5d1713] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-33204567]{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-33204567]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-33204567]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-33204567]>.VPImage{margin-bottom:20px}.icon[data-v-33204567]{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-33204567]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-33204567]{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-33204567]{padding-top:8px}.link-text-value[data-v-33204567]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-33204567]{display:inline-block;margin-left:6px;width:14px;height:14px;fill:currentColor}.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%}}.VPHome[data-v-d82743a8]{padding-bottom:96px}.VPHome[data-v-d82743a8] .VPHomeSponsors{margin-top:112px;margin-bottom:-128px}@media (min-width: 768px){.VPHome[data-v-d82743a8]{padding-bottom:128px}}.VPContent[data-v-669faec9]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-669faec9]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-669faec9]{margin:0}@media (min-width: 960px){.VPContent[data-v-669faec9]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-669faec9]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-669faec9]{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-af18c0d5]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-af18c0d5]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-af18c0d5]{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-af18c0d5]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-af18c0d5]{color:var(--vp-c-text-1)}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-af18c0d5]{font-size:14px}}.icon[data-v-af18c0d5]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}.open>.icon[data-v-af18c0d5]{transform:rotate(90deg)}.items[data-v-af18c0d5]{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-af18c0d5]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-af18c0d5]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-af18c0d5]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-af18c0d5]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-af18c0d5]{transition:all .2s ease-out}.flyout-leave-active[data-v-af18c0d5]{transition:all .15s ease-in}.flyout-enter-from[data-v-af18c0d5],.flyout-leave-to[data-v-af18c0d5]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-0282ae07]{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-0282ae07]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-0282ae07]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-0282ae07]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-0282ae07]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-0282ae07]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-0282ae07]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-0282ae07]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-0282ae07]{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-0282ae07]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-0282ae07]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-0282ae07]{display:none}}.menu-icon[data-v-0282ae07]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPOutlineDropdown[data-v-0282ae07]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-0282ae07]{padding:12px 32px 11px}}.VPSwitch[data-v-b1685198]{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-b1685198]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-b1685198]{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-b1685198]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-b1685198] svg{position:absolute;top:3px;left:3px;width:12px;height:12px;fill:var(--vp-c-text-2)}.dark .icon[data-v-b1685198] svg{fill:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-1736f215]{opacity:1}.moon[data-v-1736f215],.dark .sun[data-v-1736f215]{opacity:0}.dark .moon[data-v-1736f215]{opacity:1}.dark .VPSwitchAppearance[data-v-1736f215] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-e6aabb21]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-e6aabb21]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-43f1e123]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-43f1e123]{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-43f1e123]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-43f1e123]{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-e7ea1737]{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-e7ea1737] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-e7ea1737] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-e7ea1737] .group:last-child{padding-bottom:0}.VPMenu[data-v-e7ea1737] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-e7ea1737] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-e7ea1737] .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-e7ea1737] .action{padding-left:24px}.VPFlyout[data-v-9c007e85]{position:relative}.VPFlyout[data-v-9c007e85]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-9c007e85]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-9c007e85]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-9c007e85]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-9c007e85]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-9c007e85],.button[aria-expanded=true]+.menu[data-v-9c007e85]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-9c007e85]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-9c007e85]{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-9c007e85]{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-9c007e85]{margin-right:0;width:16px;height:16px;fill:currentColor}.text-icon[data-v-9c007e85]{margin-left:4px;width:14px;height:14px;fill:currentColor}.icon[data-v-9c007e85]{width:20px;height:20px;fill:currentColor;transition:fill .25s}.menu[data-v-9c007e85]{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-f80f8133]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-f80f8133]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-f80f8133]>svg{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-7bc22406]{display:flex;justify-content:center}.VPNavBarExtra[data-v-d0bd9dde]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-d0bd9dde]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-d0bd9dde]{display:none}}.trans-title[data-v-d0bd9dde]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-d0bd9dde],.item.social-links[data-v-d0bd9dde]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-d0bd9dde]{min-width:176px}.appearance-action[data-v-d0bd9dde]{margin-right:-2px}.social-links-list[data-v-d0bd9dde]{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-42ef59de]{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-42ef59de],.VPNavBarMenuLink[data-v-42ef59de]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-7f418b0f]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-7f418b0f]{display:flex}}/*! @docsearch/css 3.5.2 | 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-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-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-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}@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-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] .DocSearch-Hit-Tree,.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-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}@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: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}.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-86d1bed8]{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-86d1bed8]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-86d1bed8]{border-bottom-color:var(--vp-c-divider)}}[data-v-86d1bed8] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-74abcbb9]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-74abcbb9]{display:flex;align-items:center}}.title[data-v-74abcbb9]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-19c990f1]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .5s}.VPNavBar.has-local-nav[data-v-19c990f1]{background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar.has-local-nav[data-v-19c990f1]{background-color:transparent}.VPNavBar[data-v-19c990f1]:not(.has-sidebar):not(.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-19c990f1]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-19c990f1]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-19c990f1]{padding:0}}.container[data-v-19c990f1]{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-19c990f1],.container>.content[data-v-19c990f1]{pointer-events:none}.container[data-v-19c990f1] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-19c990f1]{max-width:100%}}.title[data-v-19c990f1]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-19c990f1]{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-19c990f1]{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-19c990f1]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-19c990f1]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-19c990f1]{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-19c990f1]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.top) .content-body[data-v-19c990f1]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.top) .content-body[data-v-19c990f1]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-19c990f1]{column-gap:.5rem}}.menu+.translations[data-v-19c990f1]:before,.menu+.appearance[data-v-19c990f1]:before,.menu+.social-links[data-v-19c990f1]:before,.translations+.appearance[data-v-19c990f1]:before,.appearance+.social-links[data-v-19c990f1]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-19c990f1]:before,.translations+.appearance[data-v-19c990f1]:before{margin-right:16px}.appearance+.social-links[data-v-19c990f1]:before{margin-left:16px}.social-links[data-v-19c990f1]{margin-right:-8px}.divider[data-v-19c990f1]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-19c990f1]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-19c990f1]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-19c990f1]{width:100%;height:1px;transition:background-color .5s}.VPNavBar.has-local-nav .divider-line[data-v-19c990f1]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.top) .divider-line[data-v-19c990f1]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.top) .divider[data-v-19c990f1]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-2d7af913]{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-2d7af913]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-05f27b2a]{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-05f27b2a]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-19976ae1]{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-19976ae1]: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-65ef89ca]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-65ef89ca]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-65ef89ca]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-65ef89ca]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-65ef89ca]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-65ef89ca]{transform:rotate(45deg)}.button[data-v-65ef89ca]{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-65ef89ca]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-65ef89ca]{width:14px;height:14px;fill:var(--vp-c-text-2);transition:fill .5s,transform .25s}.group[data-v-65ef89ca]:first-child{padding-top:0}.group+.group[data-v-65ef89ca],.group+.item[data-v-65ef89ca]{padding-top:4px}.VPNavScreenTranslations[data-v-d72aa483]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-d72aa483]{height:auto}.title[data-v-d72aa483]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-d72aa483]{width:16px;height:16px;fill:currentColor}.icon.lang[data-v-d72aa483]{margin-right:8px}.icon.chevron[data-v-d72aa483]{margin-left:4px}.list[data-v-d72aa483]{padding:4px 0 0 24px}.link[data-v-d72aa483]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-cc5739dd]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);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 .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-cc5739dd],.VPNavScreen.fade-leave-active[data-v-cc5739dd]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-cc5739dd],.VPNavScreen.fade-leave-active .container[data-v-cc5739dd]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-cc5739dd],.VPNavScreen.fade-leave-to[data-v-cc5739dd]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-cc5739dd],.VPNavScreen.fade-leave-to .container[data-v-cc5739dd]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-cc5739dd]{display:none}}.container[data-v-cc5739dd]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-cc5739dd],.menu+.appearance[data-v-cc5739dd],.translations+.appearance[data-v-cc5739dd]{margin-top:24px}.menu+.social-links[data-v-cc5739dd]{margin-top:16px}.appearance+.social-links[data-v-cc5739dd]{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-e31bd47b]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-e31bd47b]{padding-bottom:10px}.item[data-v-e31bd47b]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-e31bd47b]{cursor:pointer}.indicator[data-v-e31bd47b]{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-e31bd47b],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-e31bd47b],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-e31bd47b],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-e31bd47b]{background-color:var(--vp-c-brand-1)}.link[data-v-e31bd47b]{display:flex;align-items:center;flex-grow:1}.text[data-v-e31bd47b]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-e31bd47b]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-e31bd47b],.VPSidebarItem.level-2 .text[data-v-e31bd47b],.VPSidebarItem.level-3 .text[data-v-e31bd47b],.VPSidebarItem.level-4 .text[data-v-e31bd47b],.VPSidebarItem.level-5 .text[data-v-e31bd47b]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-e31bd47b]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-1.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-2.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-3.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-4.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-5.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-e31bd47b]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-e31bd47b]{color:var(--vp-c-brand-1)}.caret[data-v-e31bd47b]{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-e31bd47b]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-e31bd47b]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-e31bd47b]{width:18px;height:18px;fill:currentColor;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-e31bd47b]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-e31bd47b],.VPSidebarItem.level-2 .items[data-v-e31bd47b],.VPSidebarItem.level-3 .items[data-v-e31bd47b],.VPSidebarItem.level-4 .items[data-v-e31bd47b],.VPSidebarItem.level-5 .items[data-v-e31bd47b]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-e31bd47b]{display:none}.VPSidebar[data-v-575e6a36]{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-575e6a36]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-575e6a36]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-575e6a36]{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-575e6a36]{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-575e6a36]{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-575e6a36]{outline:0}.group+.group[data-v-575e6a36]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-575e6a36]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.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-5a346dfe]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-96bd69d5]{border-top:1px solid var(--vp-c-gutter);padding:88px 24px 96px;background-color:var(--vp-c-bg)}.container[data-v-96bd69d5]{margin:0 auto;max-width:1152px}.love[data-v-96bd69d5]{margin:0 auto;width:28px;height:28px;color:var(--vp-c-text-3)}.icon[data-v-96bd69d5]{width:28px;height:28px;fill:currentColor}.message[data-v-96bd69d5]{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-96bd69d5]{padding-top:32px}.action[data-v-96bd69d5]{padding-top:40px;text-align:center}.VPTeamPage[data-v-10b00018]{padding-bottom:96px}@media (min-width: 768px){.VPTeamPage[data-v-10b00018]{padding-bottom:128px}}.VPTeamPageSection+.VPTeamPageSection[data-v-10b00018-s],.VPTeamMembers+.VPTeamPageSection[data-v-10b00018-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-10b00018-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-10b00018-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-10b00018-s],.VPTeamMembers+.VPTeamPageSection[data-v-10b00018-s]{margin-top:96px}}.VPTeamMembers[data-v-10b00018-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-10b00018-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-10b00018-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-0d3d0d4d]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-0d3d0d4d]{padding:32px}.VPTeamMembersItem.small .data[data-v-0d3d0d4d]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-0d3d0d4d]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-0d3d0d4d]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-0d3d0d4d]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-0d3d0d4d]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-0d3d0d4d]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-0d3d0d4d]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-0d3d0d4d]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-0d3d0d4d]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-0d3d0d4d]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-0d3d0d4d]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-0d3d0d4d]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-0d3d0d4d]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-0d3d0d4d]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-0d3d0d4d]{text-align:center}.avatar[data-v-0d3d0d4d]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-0d3d0d4d]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-0d3d0d4d]{margin:0;font-weight:600}.affiliation[data-v-0d3d0d4d]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-0d3d0d4d]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-0d3d0d4d]:hover{color:var(--vp-c-brand-1)}.desc[data-v-0d3d0d4d]{margin:0 auto}.desc[data-v-0d3d0d4d] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-0d3d0d4d]{display:flex;justify-content:center;height:56px}.sp-link[data-v-0d3d0d4d]{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-0d3d0d4d]:hover,.sp .sp-link.link[data-v-0d3d0d4d]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-0d3d0d4d]{margin-right:8px;width:16px;height:16px;fill:currentColor}.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}tr[data-v-e97fd3fb]:nth-child(1){color:#a8b1ff}: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-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-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-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-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)}: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)}:root{--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient( 120deg, #bd34fe 30%, #41d1ff );--vp-home-hero-image-background-image: linear-gradient( -45deg, #bd34fe 50%, #47caff 50% );--vp-home-hero-image-filter: blur(44px)}@media (min-width: 640px){:root{--vp-home-hero-image-filter: blur(56px)}}@media (min-width: 960px){:root{--vp-home-hero-image-filter: blur(68px)}}:root{--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-brand-soft);--vp-custom-block-tip-code-bg: var(--vp-c-brand-soft)}.DocSearch{--docsearch-primary-color: var(--vp-c-brand-1) !important}.VPLocalSearchBox[data-v-23c6f8fc]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-23c6f8fc]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-23c6f8fc]{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-23c6f8fc]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-23c6f8fc]{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-23c6f8fc]{padding:0 8px}}.search-bar[data-v-23c6f8fc]:focus-within{border-color:var(--vp-c-brand-1)}.search-icon[data-v-23c6f8fc]{margin:8px}@media (max-width: 767px){.search-icon[data-v-23c6f8fc]{display:none}}.search-input[data-v-23c6f8fc]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-23c6f8fc]{padding:6px 4px}}.search-actions[data-v-23c6f8fc]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-23c6f8fc]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-23c6f8fc]{display:none}}.search-actions button[data-v-23c6f8fc]{padding:8px}.search-actions button[data-v-23c6f8fc]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-23c6f8fc]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-23c6f8fc]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-23c6f8fc]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-23c6f8fc]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-23c6f8fc]{display:none}}.search-keyboard-shortcuts kbd[data-v-23c6f8fc]{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-23c6f8fc]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-23c6f8fc]{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-23c6f8fc]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-23c6f8fc]{margin:8px}}.titles[data-v-23c6f8fc]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-23c6f8fc]{display:flex;align-items:center;gap:4px}.title.main[data-v-23c6f8fc]{font-weight:500}.title-icon[data-v-23c6f8fc]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-23c6f8fc]{opacity:.5}.result.selected[data-v-23c6f8fc]{--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-23c6f8fc]{position:relative}.excerpt[data-v-23c6f8fc]{opacity:75%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;opacity:.5;margin-top:4px}.result.selected .excerpt[data-v-23c6f8fc]{opacity:1}.excerpt[data-v-23c6f8fc] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-23c6f8fc] mark,.excerpt[data-v-23c6f8fc] 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-23c6f8fc] .vp-code-group .tabs{display:none}.excerpt[data-v-23c6f8fc] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-23c6f8fc]{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-23c6f8fc]{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-23c6f8fc],.result.selected .title-icon[data-v-23c6f8fc]{color:var(--vp-c-brand-1)!important}.no-results[data-v-23c6f8fc]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-23c6f8fc]{flex:none} diff --git a/assets/v1_index.md.utgFH8vB.js b/assets/v1_index.md.utgFH8vB.js new file mode 100644 index 00000000..11919c52 --- /dev/null +++ b/assets/v1_index.md.utgFH8vB.js @@ -0,0 +1,78 @@ +import{_ as s,c as i,o as a,U as t}from"./chunks/framework.BZkFhLI2.js";const c=JSON.parse('{"title":"Gridify (v1)","description":"","frontmatter":{"search":false},"headers":[],"relativePath":"v1/index.md","filePath":"v1/index.md"}'),e={name:"v1/index.md"},n=t(`