diff --git a/404.html b/404.html index 14e588c..4f3b681 100644 --- a/404.html +++ b/404.html @@ -7,8 +7,8 @@ - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

diff --git a/assets/js/046e2194.726f4717.js b/assets/js/046e2194.726f4717.js deleted file mode 100644 index 73d2edb..0000000 --- a/assets/js/046e2194.726f4717.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[568],{7607:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>l,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var s=t(4848),r=t(8453),o=t(1470),a=t(9365);const i={sidebar_position:1,sidebar_label:"Installation & Setup"},l="Installation",c={id:"install",title:"Installation",description:"There are two ways to consume the document picker package:",source:"@site/docs/install.mdx",sourceDirName:".",slug:"/install",permalink:"/docs/install",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,sidebar_label:"Installation & Setup"},sidebar:"guidesSidebar",next:{title:"Public document picker",permalink:"/docs/public/document-picker"}},u={},d=[{value:"Sponsor-Only Version",id:"sponsor-only-version",level:3},{value:"Public Version",id:"public-version",level:3},{value:"Accessing the private packages for sponsors",id:"accessing-the-private-packages-for-sponsors",level:2},{value:"Installing",id:"installing",level:2},{value:"Setting up",id:"setting-up",level:2},{value:"Expo",id:"expo",level:3},{value:"React Native",id:"react-native",level:3},{value:"Invitation Note",id:"invitation-note",level:5}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",h5:"h5",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"installation",children:"Installation"}),"\n",(0,s.jsx)(n.p,{children:"There are two ways to consume the document picker package:"}),"\n",(0,s.jsx)(n.h3,{id:"sponsor-only-version",children:"Sponsor-Only Version"}),"\n",(0,s.jsxs)(n.p,{children:["Available only to GitHub sponsors, this version offers a ton of improvements over the public version. Full list of changes is ",(0,s.jsx)(n.a,{href:"/docs/sponsor-only/intro#whats-new-in-the-sponsor-only-packages",children:"here"}),". To mention a few:"]}),"\n",(0,s.jsxs)(n.p,{children:["\u2705 New: ",(0,s.jsx)(n.a,{href:"/docs/sponsor-only/picker/limiting-selectable-files#isknowntype",children:(0,s.jsx)(n.code,{children:"isKnownType"})})," utility"]}),"\n",(0,s.jsxs)(n.p,{children:["\u2705 New: ",(0,s.jsx)(n.code,{children:"open"})," mode support for both platforms"]}),"\n",(0,s.jsx)(n.p,{children:"\u2705 New: long-term file access permissions on both platforms"}),"\n",(0,s.jsxs)(n.p,{children:["\u2705 New: ",(0,s.jsx)(n.code,{children:"keepLocalCopy"})," function that separates picking a file and copying it to a local directory, which makes your app more responsive."]}),"\n",(0,s.jsxs)(n.p,{children:["... and ",(0,s.jsx)(n.a,{href:"/docs/sponsor-only/intro#whats-new-in-the-sponsor-only-packages",children:"much more"})]}),"\n",(0,s.jsx)(n.p,{children:"Your sponsorship enables continued maintenance and development of the module. Thank you for supporting this project! \u2764\ufe0f"}),"\n",(0,s.jsx)(n.h3,{id:"public-version",children:"Public Version"}),"\n",(0,s.jsx)(n.p,{children:"Available on the public npm registry, this version does not include the new features, updates and bugfixes found in the sponsor-only version."}),"\n",(0,s.jsx)(n.h2,{id:"accessing-the-private-packages-for-sponsors",children:"Accessing the private packages for sponsors"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"https://github.com/sponsors/vonovak",children:"Upon sponsoring"})," (please use specifically the tiers that mention this project!), you will get ",(0,s.jsx)(n.a,{href:"#invitation-note",children:"immediate access *"})," to the private packages and to the private monorepo with the sources and examples."]}),"\n",(0,s.jsxs)(n.p,{children:["Three steps are needed to access the sponsored packages, which are hosted on ",(0,s.jsx)(n.a,{href:"https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm-registry",children:"GitHub npm packages registry"}),"."]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"https://github.com/sponsors/vonovak",children:"Become a sponsor"})," and accept private repository ",(0,s.jsx)(n.a,{href:"#invitation-note",children:"invitation *"})," - it takes just a few clicks."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"https://github.com/settings/tokens",children:"Obtain here"})," a Personal Access Token with ",(0,s.jsx)(n.code,{children:"packages:read"})," permission."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Set up your package manager so that it fetches the packages from the GH packages registry. In this example, we're using an ",(0,s.jsx)(n.code,{children:"NPM_TOKEN"})," environment variable."]}),"\n"]}),"\n"]}),"\n","\n","\n",(0,s.jsxs)(o.A,{className:"unique-tabs",children:[(0,s.jsxs)(a.A,{value:"classic",label:"npm / yarn v1",children:[(0,s.jsxs)(n.p,{children:["create a ",(0,s.jsx)(n.code,{children:".npmrc"})," file in your project root with the following content:"]}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"//npm.pkg.github.com/:_authToken=${NPM_TOKEN}\n\n@react-native-documents:registry=https://npm.pkg.github.com/\n"})})]}),(0,s.jsxs)(a.A,{value:"yarn v3+",label:"yarn v3+",children:[(0,s.jsxs)(n.p,{children:["create a ",(0,s.jsx)(n.code,{children:".yarnrc.yml"})," file in your project root with the following content:"]}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yml",children:"npmScopes:\n react-native-documents:\n npmRegistryServer: https://npm.pkg.github.com\n npmAuthToken: '${NPM_TOKEN}'\n"})})]})]}),"\n",(0,s.jsxs)(n.p,{children:["If you use another package manager (",(0,s.jsx)(n.a,{href:"https://bun.sh/docs/install/registries",children:"such as bun"}),"), please refer to its documentation on how to set up a custom registry."]}),"\n",(0,s.jsx)(n.h2,{id:"installing",children:"Installing"}),"\n",(0,s.jsxs)(o.A,{className:"unique-tabs",children:[(0,s.jsx)(a.A,{value:"sponsor",label:"For sponsors",children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"yarn add @react-native-documents/picker\nyarn add @react-native-documents/viewer\n"})})}),(0,s.jsxs)(a.A,{value:"classic",label:"Public package",children:[(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:"viewer"})," package is not available in the public version."]}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"yarn add react-native-document-picker\n"})})]})]}),"\n",(0,s.jsx)(n.h2,{id:"setting-up",children:"Setting up"}),"\n",(0,s.jsxs)(n.admonition,{type:"warning",children:[(0,s.jsxs)(n.p,{children:["The sponsor-only document picker package requires iOS 14 or later. If you use Expo, use ",(0,s.jsx)(n.a,{href:"https://docs.expo.dev/versions/latest/sdk/build-properties/#example-appjson-with-config-plugin",children:"Expo build properties"})," to update the ",(0,s.jsx)(n.code,{children:"deploymentTarget"})," to ",(0,s.jsx)(n.code,{children:"14"}),"."]}),(0,s.jsxs)(n.p,{children:["In regular React Native projects, update the ",(0,s.jsx)(n.a,{href:"https://stackoverflow.com/a/66798215/2070942",children:"settings in Xcode"}),"."]})]}),"\n",(0,s.jsx)(n.h3,{id:"expo",children:"Expo"}),"\n",(0,s.jsxs)(n.admonition,{type:"info",children:[(0,s.jsxs)(n.p,{children:['This package cannot be used in the "Expo Go" app because ',(0,s.jsx)(n.a,{href:"https://docs.expo.io/workflow/customizing/",children:"it requires custom native code"}),". However, you can add custom native code to Expo by following the commands below."]}),(0,s.jsxs)(n.p,{children:["Read Expo's ",(0,s.jsx)(n.a,{href:"https://docs.expo.io/workflow/customizing/",children:'"Adding custom native code"'})," guide for detailed information."]})]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"# install the package first\n\n# Build the app locally\nexpo prebuild --clean\nexpo run:ios\nexpo run:android\n\n# Or create a development build (provided you have expo-dev-client installed and set up)\neas build\n"})}),"\n",(0,s.jsx)(n.h3,{id:"react-native",children:"React Native"}),"\n",(0,s.jsxs)(n.p,{children:["Install the package and then run ",(0,s.jsx)(n.code,{children:"pod install"})," from the ios directory. Then rebuild your project with Xcode."]}),"\n",(0,s.jsx)(n.p,{children:"The packages were tested with RN 0.73 but they most likely support older RN versions as well, all the way to 0.60."}),"\n",(0,s.jsxs)(n.p,{children:["If you're using the ",(0,s.jsx)(n.a,{href:"https://reactnative.dev/docs/new-architecture-intro",children:"New Architecture"}),", you need to be on React Native 0.72 or higher."]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h5,{id:"invitation-note",children:"Invitation Note"}),"\n",(0,s.jsxs)(n.p,{children:["As a sponsor, you will be added automatically if you sponsor from a personal account. If you sponsor from an organization account, please let me know and I'll invite you manually. This is because of how ",(0,s.jsx)(n.a,{href:"https://docs.github.com/en/sponsors/receiving-sponsorships-through-github-sponsors/managing-your-sponsorship-tiers#about-adding-repositories-to-a-sponsorship-tier",children:"GitHub handles this case"}),"."]})]})}function p(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>a});t(6540);var s=t(4164);const r={tabItem:"tabItem_Ymn6"};var o=t(4848);function a(e){let{children:n,hidden:t,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,s.A)(r.tabItem,a),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var s=t(6540),r=t(4164),o=t(3104),a=t(6347),i=t(205),l=t(7485),c=t(1682),u=t(9466);function d(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:s,default:r}}=e;return{value:n,label:t,attributes:s,default:r}}))}(t);return function(e){const n=(0,c.X)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const r=(0,a.W6)(),o=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(o),(0,s.useCallback)((e=>{if(!o)return;const n=new URLSearchParams(r.location.search);n.set(o,e),r.replace({...r.location,search:n.toString()})}),[o,r])]}function f(e){const{defaultValue:n,queryString:t=!1,groupId:r}=e,o=h(e),[a,l]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const s=t.find((e=>e.default))??t[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:o}))),[c,d]=m({queryString:t,groupId:r}),[f,g]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,o]=(0,u.Dv)(t);return[r,(0,s.useCallback)((e=>{t&&o.set(e)}),[t,o])]}({groupId:r}),v=(()=>{const e=c??f;return p({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{v&&l(v)}),[v]);return{selectedValue:a,selectValue:(0,s.useCallback)((e=>{if(!p({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),g(e)}),[d,g,o]),tabValues:o}}var g=t(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=t(4848);function x(e){let{className:n,block:t,selectedValue:s,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const n=e.currentTarget,t=l.indexOf(n),r=i[t].value;r!==s&&(c(n),a(r))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:o}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,r.A)("tabs__item",v.tabItem,o?.className,{"tabs__item--active":s===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const o=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,s.cloneElement)(e,{className:"margin-top--md"}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function y(e){const n=f(e);return(0,b.jsxs)("div",{className:(0,r.A)("tabs-container",v.tabList),children:[(0,b.jsx)(x,{...e,...n}),(0,b.jsx)(j,{...e,...n})]})}function w(e){const n=(0,g.A)();return(0,b.jsx)(y,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>i});var s=t(6540);const r={},o=s.createContext(r);function a(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/046e2194.ff0b14ad.js b/assets/js/046e2194.ff0b14ad.js new file mode 100644 index 0000000..597b047 --- /dev/null +++ b/assets/js/046e2194.ff0b14ad.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[568],{7607:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>l,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var s=t(4848),r=t(8453),o=t(1470),a=t(9365);const i={sidebar_position:1,sidebar_label:"Installation & Setup"},l="Installation",c={id:"install",title:"Installation",description:"There are two ways to consume the document picker package:",source:"@site/docs/install.mdx",sourceDirName:".",slug:"/install",permalink:"/docs/install",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,sidebar_label:"Installation & Setup"},sidebar:"guidesSidebar",next:{title:"Document picker",permalink:"/docs/public/document-picker"}},u={},d=[{value:"Sponsor-Only Version",id:"sponsor-only-version",level:3},{value:"Public Version",id:"public-version",level:3},{value:"Accessing the private packages for sponsors",id:"accessing-the-private-packages-for-sponsors",level:2},{value:"Installing",id:"installing",level:2},{value:"Setting up",id:"setting-up",level:2},{value:"Expo",id:"expo",level:3},{value:"React Native",id:"react-native",level:3},{value:"Invitation Note",id:"invitation-note",level:5}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",h5:"h5",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"installation",children:"Installation"}),"\n",(0,s.jsx)(n.p,{children:"There are two ways to consume the document picker package:"}),"\n",(0,s.jsx)(n.h3,{id:"sponsor-only-version",children:"Sponsor-Only Version"}),"\n",(0,s.jsxs)(n.p,{children:["Available only to GitHub sponsors, this version offers a ton of improvements over the public version. Full list of changes is ",(0,s.jsx)(n.a,{href:"/docs/sponsor-only/intro#whats-new-in-the-sponsor-only-packages",children:"here"}),". To mention a few:"]}),"\n",(0,s.jsxs)(n.p,{children:["\u2705 New: ",(0,s.jsx)(n.a,{href:"/docs/sponsor-only/picker/limiting-selectable-files#isknowntype",children:(0,s.jsx)(n.code,{children:"isKnownType"})})," utility"]}),"\n",(0,s.jsxs)(n.p,{children:["\u2705 New: ",(0,s.jsx)(n.code,{children:"open"})," mode support for both platforms"]}),"\n",(0,s.jsx)(n.p,{children:"\u2705 New: long-term file access permissions on both platforms"}),"\n",(0,s.jsxs)(n.p,{children:["\u2705 New: ",(0,s.jsx)(n.code,{children:"keepLocalCopy"})," function that separates picking a file and copying it to a local directory, which makes your app more responsive."]}),"\n",(0,s.jsxs)(n.p,{children:["... and ",(0,s.jsx)(n.a,{href:"/docs/sponsor-only/intro#whats-new-in-the-sponsor-only-packages",children:"much more"})]}),"\n",(0,s.jsx)(n.p,{children:"Your sponsorship enables continued maintenance and development of the module. Thank you for supporting this project! \u2764\ufe0f"}),"\n",(0,s.jsx)(n.h3,{id:"public-version",children:"Public Version"}),"\n",(0,s.jsx)(n.p,{children:"Available on the public npm registry, this version does not include the new features, updates and bugfixes found in the sponsor-only version."}),"\n",(0,s.jsx)(n.h2,{id:"accessing-the-private-packages-for-sponsors",children:"Accessing the private packages for sponsors"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"https://github.com/sponsors/vonovak",children:"Upon sponsoring"})," (please use specifically the tiers that mention this project!), you will get ",(0,s.jsx)(n.a,{href:"#invitation-note",children:"immediate access *"})," to the private packages and to the private monorepo with the sources and examples."]}),"\n",(0,s.jsxs)(n.p,{children:["Three steps are needed to access the sponsored packages, which are hosted on ",(0,s.jsx)(n.a,{href:"https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm-registry",children:"GitHub npm packages registry"}),"."]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"https://github.com/sponsors/vonovak",children:"Become a sponsor"})," and accept private repository ",(0,s.jsx)(n.a,{href:"#invitation-note",children:"invitation *"})," - it takes just a few clicks."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"https://github.com/settings/tokens",children:"Obtain here"})," a Personal Access Token with ",(0,s.jsx)(n.code,{children:"packages:read"})," permission."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Set up your package manager so that it fetches the packages from the GH packages registry. In this example, we're using an ",(0,s.jsx)(n.code,{children:"NPM_TOKEN"})," environment variable."]}),"\n"]}),"\n"]}),"\n","\n","\n",(0,s.jsxs)(o.A,{className:"unique-tabs",children:[(0,s.jsxs)(a.A,{value:"classic",label:"npm / yarn v1",children:[(0,s.jsxs)(n.p,{children:["create a ",(0,s.jsx)(n.code,{children:".npmrc"})," file in your project root with the following content:"]}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"//npm.pkg.github.com/:_authToken=${NPM_TOKEN}\n\n@react-native-documents:registry=https://npm.pkg.github.com/\n"})})]}),(0,s.jsxs)(a.A,{value:"yarn v3+",label:"yarn v3+",children:[(0,s.jsxs)(n.p,{children:["create a ",(0,s.jsx)(n.code,{children:".yarnrc.yml"})," file in your project root with the following content:"]}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yml",children:"npmScopes:\n react-native-documents:\n npmRegistryServer: https://npm.pkg.github.com\n npmAuthToken: '${NPM_TOKEN}'\n"})})]})]}),"\n",(0,s.jsxs)(n.p,{children:["If you use another package manager (",(0,s.jsx)(n.a,{href:"https://bun.sh/docs/install/registries",children:"such as bun"}),"), please refer to its documentation on how to set up a custom registry."]}),"\n",(0,s.jsx)(n.h2,{id:"installing",children:"Installing"}),"\n",(0,s.jsxs)(o.A,{className:"unique-tabs",children:[(0,s.jsx)(a.A,{value:"sponsor",label:"For sponsors",children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"yarn add @react-native-documents/picker\nyarn add @react-native-documents/viewer\n"})})}),(0,s.jsxs)(a.A,{value:"classic",label:"Public package",children:[(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:"viewer"})," package is not available in the public version."]}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"yarn add react-native-document-picker\n"})})]})]}),"\n",(0,s.jsx)(n.h2,{id:"setting-up",children:"Setting up"}),"\n",(0,s.jsxs)(n.admonition,{type:"warning",children:[(0,s.jsxs)(n.p,{children:["The sponsor-only document picker package requires iOS 14 or later. If you use Expo, use ",(0,s.jsx)(n.a,{href:"https://docs.expo.dev/versions/latest/sdk/build-properties/#example-appjson-with-config-plugin",children:"Expo build properties"})," to update the ",(0,s.jsx)(n.code,{children:"deploymentTarget"})," to ",(0,s.jsx)(n.code,{children:"14"}),"."]}),(0,s.jsxs)(n.p,{children:["In regular React Native projects, update the ",(0,s.jsx)(n.a,{href:"https://stackoverflow.com/a/66798215/2070942",children:"settings in Xcode"}),"."]})]}),"\n",(0,s.jsx)(n.h3,{id:"expo",children:"Expo"}),"\n",(0,s.jsxs)(n.admonition,{type:"info",children:[(0,s.jsxs)(n.p,{children:['This package cannot be used in the "Expo Go" app because ',(0,s.jsx)(n.a,{href:"https://docs.expo.io/workflow/customizing/",children:"it requires custom native code"}),". However, you can add custom native code to Expo by following the commands below."]}),(0,s.jsxs)(n.p,{children:["Read Expo's ",(0,s.jsx)(n.a,{href:"https://docs.expo.io/workflow/customizing/",children:'"Adding custom native code"'})," guide for detailed information."]})]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"# install the package first\n\n# Build the app locally\nexpo prebuild --clean\nexpo run:ios\nexpo run:android\n\n# Or create a development build (provided you have expo-dev-client installed and set up)\neas build\n"})}),"\n",(0,s.jsx)(n.h3,{id:"react-native",children:"React Native"}),"\n",(0,s.jsxs)(n.p,{children:["Install the package and then run ",(0,s.jsx)(n.code,{children:"pod install"})," from the ios directory. Then rebuild your project with Xcode."]}),"\n",(0,s.jsx)(n.p,{children:"The packages were tested with RN 0.73 but they most likely support older RN versions as well, all the way to 0.60."}),"\n",(0,s.jsxs)(n.p,{children:["If you're using the ",(0,s.jsx)(n.a,{href:"https://reactnative.dev/docs/new-architecture-intro",children:"New Architecture"}),", you need to be on React Native 0.72 or higher."]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h5,{id:"invitation-note",children:"Invitation Note"}),"\n",(0,s.jsxs)(n.p,{children:["As a sponsor, you will be added automatically if you sponsor from a personal account. If you sponsor from an organization account, please let me know and I'll invite you manually. This is because of how ",(0,s.jsx)(n.a,{href:"https://docs.github.com/en/sponsors/receiving-sponsorships-through-github-sponsors/managing-your-sponsorship-tiers#about-adding-repositories-to-a-sponsorship-tier",children:"GitHub handles this case"}),"."]})]})}function p(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>a});t(6540);var s=t(4164);const r={tabItem:"tabItem_Ymn6"};var o=t(4848);function a(e){let{children:n,hidden:t,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,s.A)(r.tabItem,a),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var s=t(6540),r=t(4164),o=t(3104),a=t(6347),i=t(205),l=t(7485),c=t(1682),u=t(9466);function d(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:s,default:r}}=e;return{value:n,label:t,attributes:s,default:r}}))}(t);return function(e){const n=(0,c.X)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const r=(0,a.W6)(),o=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(o),(0,s.useCallback)((e=>{if(!o)return;const n=new URLSearchParams(r.location.search);n.set(o,e),r.replace({...r.location,search:n.toString()})}),[o,r])]}function f(e){const{defaultValue:n,queryString:t=!1,groupId:r}=e,o=h(e),[a,l]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const s=t.find((e=>e.default))??t[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:o}))),[c,d]=m({queryString:t,groupId:r}),[f,g]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,o]=(0,u.Dv)(t);return[r,(0,s.useCallback)((e=>{t&&o.set(e)}),[t,o])]}({groupId:r}),v=(()=>{const e=c??f;return p({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{v&&l(v)}),[v]);return{selectedValue:a,selectValue:(0,s.useCallback)((e=>{if(!p({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),g(e)}),[d,g,o]),tabValues:o}}var g=t(2303);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=t(4848);function x(e){let{className:n,block:t,selectedValue:s,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const n=e.currentTarget,t=l.indexOf(n),r=i[t].value;r!==s&&(c(n),a(r))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:o}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,r.A)("tabs__item",v.tabItem,o?.className,{"tabs__item--active":s===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const o=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,s.cloneElement)(e,{className:"margin-top--md"}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function y(e){const n=f(e);return(0,b.jsxs)("div",{className:(0,r.A)("tabs-container",v.tabList),children:[(0,b.jsx)(x,{...e,...n}),(0,b.jsx)(j,{...e,...n})]})}function w(e){const n=(0,g.A)();return(0,b.jsx)(y,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>i});var s=t(6540);const r={},o=s.createContext(r);function a(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/25a44f33.4306913d.js b/assets/js/25a44f33.4306913d.js deleted file mode 100644 index c2e7eab..0000000 --- a/assets/js/25a44f33.4306913d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[279],{7490:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>t,metadata:()=>a,toc:()=>c});var i=n(4848),s=n(8453);const t={sidebar_position:0},r="Introduction",a={id:"sponsor-only/intro",title:"Introduction",description:"Welcome to the documentation for @react-native-documents/picker and @react-native-documents/viewer packages available to sponsors. These packages provide a way to pick and view documents on the device's file system or remote locations.",source:"@site/docs/sponsor-only/intro.md",sourceDirName:"sponsor-only",slug:"/sponsor-only/intro",permalink:"/docs/sponsor-only/intro",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:0,frontMatter:{sidebar_position:0},sidebar:"guidesSidebar",previous:{title:"Public document picker",permalink:"/docs/public/document-picker"},next:{title:"Migrating from the old document-picker",permalink:"/docs/sponsor-only/migration"}},d={},c=[{value:"What's new in the sponsor-only packages?",id:"whats-new-in-the-sponsor-only-packages",level:2},{value:"TypeScript",id:"typescript",level:3},{value:"iOS",id:"ios",level:3},{value:"Android",id:"android",level:3},{value:"Windows",id:"windows",level:3},{value:"How do I know it works?",id:"how-do-i-know-it-works",level:3},{value:"Why do I ask for sponsorship?",id:"why-do-i-ask-for-sponsorship",level:2},{value:"Migrating from the old package",id:"migrating-from-the-old-package",level:2}];function l(e){const o={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(o.h1,{id:"introduction",children:"Introduction"}),"\n",(0,i.jsxs)(o.p,{children:["Welcome to the documentation for ",(0,i.jsx)(o.code,{children:"@react-native-documents/picker"})," and ",(0,i.jsx)(o.code,{children:"@react-native-documents/viewer"})," packages available to ",(0,i.jsx)(o.a,{href:"/docs/install",children:"sponsors"}),". These packages provide a way to pick and view documents on the device's file system or remote locations."]}),"\n",(0,i.jsx)(o.h2,{id:"whats-new-in-the-sponsor-only-packages",children:"What's new in the sponsor-only packages?"}),"\n",(0,i.jsxs)(o.p,{children:["Firstly, there's the completely new ",(0,i.jsx)(o.code,{children:"@react-native-documents/viewer"})," package which is designed to work well together with the updated ",(0,i.jsx)(o.code,{children:"@react-native-documents/picker"}),". The updated Picker module has an api very similar to the ",(0,i.jsx)(o.a,{href:"https://github.com/rnmods/react-native-document-picker",children:"original"}),", and contains the following improvements:"]}),"\n",(0,i.jsx)(o.h3,{id:"typescript",children:"TypeScript"}),"\n",(0,i.jsxs)(o.ul,{children:["\n",(0,i.jsxs)(o.li,{children:["highly improved type definitions that make use of ",(0,i.jsx)(o.a,{href:"https://basarat.gitbook.io/typescript/type-system/discriminated-unions",children:"Discriminated Unions"})," and other goodies so that you don't try to read fields that are not there, and nullable fields are also reduced. (You can use vanilla JS too if you like.)."]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.a,{href:"/docs/sponsor-only/jest-mocks",children:"mocks"})," for testing"]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.code,{children:"pickSingle"})," method was removed. You can instead use ",(0,i.jsx)(o.code,{children:"const [result] = pick()"})]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.code,{children:"releaseSecureAccess"})," was removed. I believe it's not necessary anymore because both the picker and the viewer module handle access in a way that does not require manual secure access management. Please open an issue if you need this method back."]}),"\n"]}),"\n",(0,i.jsx)(o.h3,{id:"ios",children:"iOS"}),"\n",(0,i.jsxs)(o.ul,{children:["\n",(0,i.jsxs)(o.li,{children:["new: ",(0,i.jsx)(o.a,{href:"/docs/sponsor-only/picker/limiting-selectable-files#isknowntype",children:(0,i.jsx)(o.code,{children:"isKnownType"})})," utility"]}),"\n",(0,i.jsxs)(o.li,{children:["new: support for long-term file access permissions - across app and even device reboots! (",(0,i.jsx)(o.a,{href:"/docs/sponsor-only/picker/open-mode",children:(0,i.jsx)(o.code,{children:"requestLongTermAccess"})}),")"]}),"\n",(0,i.jsxs)(o.li,{children:["new: ",(0,i.jsx)(o.a,{href:"/docs/sponsor-only/picker/import-mode#keepLocalCopy",children:(0,i.jsx)(o.code,{children:"keepLocalCopy"})})," function that separates picking a file and copying it to a local directory. This makes your app more responsive: previously you'd use the ",(0,i.jsx)(o.code,{children:"copyTo"})," option and before the resulting ",(0,i.jsx)(o.code,{children:"Promise"})," resolved, you needed to wait not only for user to pick the file, but also for the file to be copied to your app's directory. For large files or with slow network, this could be a problem that you, as a dev don't see, but your users do."]}),"\n",(0,i.jsx)(o.li,{children:"improved: the majority of the code is now written in Swift. The code is more readable and safer."}),"\n",(0,i.jsxs)(o.li,{children:["improved: all the code on iOS would previously run on the main thread. Now, the suitable parts are handled on a background thread or using Swift's ",(0,i.jsx)(o.a,{href:"https://www.hackingwithswift.com/swift/5.5/async-await",children:"concurrency methods"}),". You don't want to do file I/O on the main thread."]}),"\n",(0,i.jsxs)(o.li,{children:["improved: using the new ",(0,i.jsx)(o.code,{children:"UIDocumentPickerViewController"})," apis instead of those deprecated in iOS 14"]}),"\n",(0,i.jsxs)(o.li,{children:["improved: instead of the old ",(0,i.jsx)(o.code,{children:"copyTo"})," parameter making unnecessary copies, the new ",(0,i.jsx)(o.code,{children:"keepLocalCopy"})," function just moves the imported file."]}),"\n"]}),"\n",(0,i.jsx)(o.h3,{id:"android",children:"Android"}),"\n",(0,i.jsxs)(o.ul,{children:["\n",(0,i.jsxs)(o.li,{children:["new: support for ",(0,i.jsx)(o.a,{href:"/docs/sponsor-only/picker/open-mode",children:"open mode"})]}),"\n",(0,i.jsxs)(o.li,{children:["new: support for long-term file access permissions - across app and even device reboots! (",(0,i.jsx)(o.a,{href:"/docs/sponsor-only/picker/open-mode",children:(0,i.jsx)(o.code,{children:"requestLongTermAccess"})}),")"]}),"\n",(0,i.jsxs)(o.li,{children:["new: ",(0,i.jsx)(o.a,{href:"/docs/sponsor-only/picker/import-mode#keepLocalCopy",children:(0,i.jsx)(o.code,{children:"keepLocalCopy"})})," function that separates picking a file and copying it to a local directory. This makes your app more responsive: previously you'd use the ",(0,i.jsx)(o.code,{children:"copyTo"})," option and before the resulting ",(0,i.jsx)(o.code,{children:"Promise"})," resolved, you needed to wait not only for user to pick the file, but also for the file to be copied to your app's directory. For large files or with slow network, this could be a problem that you, as a dev don't see, but your users do."]}),"\n",(0,i.jsxs)(o.li,{children:["new: support for ",(0,i.jsx)(o.a,{href:"/docs/sponsor-only/picker/virtual-files",children:"virtual files"})]}),"\n",(0,i.jsxs)(o.li,{children:["improved: I have removed the deprecated ",(0,i.jsx)(o.a,{href:"https://developer.android.com/reference/android/os/AsyncTask",children:"AsyncTask"})," usage and replaced it with Kotlin Coroutines."]}),"\n",(0,i.jsxs)(o.li,{children:["improved: the code is better at operating with I/O, for example ",(0,i.jsx)(o.a,{href:"https://github.com/rnmods/react-native-document-picker/blob/27fddb9d9a88fff09a41ce654f7008cfd33cb4c4/android/src/main/java/com/reactnativedocumentpicker/RNDocumentPickerModule.java#L337",children:"byte buffer use"})," is replaced with a potentially much more efficient alternative from ",(0,i.jsx)(o.code,{children:"java.nio"})]}),"\n",(0,i.jsxs)(o.li,{children:["improved: reading file metadata is more defensive and efficient because only the necessary columns are queried from ",(0,i.jsx)(o.a,{href:"https://developer.android.com/reference/android/content/ContentResolver#query(android.net.Uri,%20java.lang.String%5B%5D,%20android.os.Bundle,%20android.os.CancellationSignal)",children:"ContentResolver"}),". The native Android apis are full of calls that can return null or throw so extra care is taken to handle these cases."]}),"\n"]}),"\n",(0,i.jsx)(o.h3,{id:"windows",children:"Windows"}),"\n",(0,i.jsx)(o.p,{children:"Windows is not supported at the moment. While there is Windows-related code in the public module, it's not maintained and probably does not work."}),"\n",(0,i.jsx)(o.h3,{id:"how-do-i-know-it-works",children:"How do I know it works?"}),"\n",(0,i.jsx)(o.p,{children:"With so many changes, you might wonder if the new package is stable - especially with Android because... well, we know Android \ud83d\ude1c."}),"\n",(0,i.jsx)(o.p,{children:"To prove the new code is solid, I have written an e2e test suite using Appium that covers the majority of the features:"}),"\n",(0,i.jsxs)(o.ul,{children:["\n",(0,i.jsx)(o.li,{children:"import mode"}),"\n",(0,i.jsx)(o.li,{children:"open mode"}),"\n",(0,i.jsx)(o.li,{children:"viewing files, including long-term permissions"}),"\n"]}),"\n",(0,i.jsx)("iframe",{width:"560",height:"315",src:"https://www.youtube.com/embed/tE3WMA4nxGE?si=N8p535owAFnenBwz",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),"\n",(0,i.jsx)(o.p,{children:"The test suite focuses on Android, and was executed on real devices from Samsung, Google and Huawei, with Android versions ranging between 8 and 14. iOS tests were done manually on a real device with iOS 17."}),"\n",(0,i.jsx)(o.p,{children:"As a result, I have greater confidence in the new package than in the old one!"}),"\n",(0,i.jsx)(o.h2,{id:"why-do-i-ask-for-sponsorship",children:"Why do I ask for sponsorship?"}),"\n",(0,i.jsxs)(o.p,{children:["I (",(0,i.jsx)(o.a,{href:"https://github.com/vonovak",children:"vonovak"}),") have been maintaining the original ",(0,i.jsx)(o.a,{href:"https://github.com/rnmods/react-native-document-picker",children:(0,i.jsx)(o.code,{children:"react-native-document-picker"})})," package more or less since 2020. The package has been used by thousands of devs, but I could see that it had a lot of issues. The codebase was old and there was a lot to improve."]}),"\n",(0,i.jsxs)(o.p,{children:["on Nov 26, 2022 I opened an ",(0,i.jsx)(o.a,{href:"https://github.com/rnmods/react-native-document-picker/issues/603",children:"issue"})," on the original package, asking for sponsorships for new features and improvements, but I received very little support for this task - and I understand: why would a company or an individual spend money if they get ",(0,i.jsx)(o.strong,{children:"nothing but a vague promise in return"}),"? If you follow me on ",(0,i.jsx)(o.a,{href:"https://twitter.com/vonovak",children:"Twitter"}),", you know I occasionally rant about open source (un)sustainability."]}),"\n",(0,i.jsxs)(o.p,{children:["In January 2024 I decided to rewrite the package from scratch and make it better! The new package has a new name: ",(0,i.jsx)(o.code,{children:"@react-native-documents/picker"})," and is hosted on the ",(0,i.jsx)(o.a,{href:"https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm-registry",children:"Github packages npm registry"})," - not the ",(0,i.jsx)(o.a,{href:"https://www.npmjs.com/",children:"public npm registry"}),", and it is available to ",(0,i.jsx)(o.a,{href:"/docs/install",children:"sponsors"}),"."]}),"\n",(0,i.jsxs)(o.p,{children:["While I was at it, I also created a new ",(0,i.jsx)(o.code,{children:"viewer"})," package which is available to ",(0,i.jsx)(o.a,{href:"/docs/install",children:"sponsors"})," as well."]}),"\n",(0,i.jsx)(o.p,{children:"So how to make OSS sustainable? My take is this: rather than asking for support, I provide full-featured packages and ask for a fee in return. I believe that the new packages are worth it."}),"\n",(0,i.jsxs)(o.blockquote,{children:["\n",(0,i.jsxs)(o.p,{children:["I'd like to thank my long-term GitHub sponsors ",(0,i.jsx)(o.a,{href:"https://www.litentry.com/",children:"Litentry"}),", ",(0,i.jsx)(o.a,{href:"https://www.callstack.com/",children:"Callstack"})," and ",(0,i.jsx)(o.a,{href:"https://expo.dev/",children:"Expo"}),"."]}),"\n"]}),"\n",(0,i.jsx)(o.h2,{id:"migrating-from-the-old-package",children:"Migrating from the old package"}),"\n",(0,i.jsxs)(o.p,{children:["See ",(0,i.jsx)(o.a,{href:"/docs/sponsor-only/migration",children:"the migration guide"})," - it's not difficult!"]})]})}function h(e={}){const{wrapper:o}={...(0,s.R)(),...e.components};return o?(0,i.jsx)(o,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,o,n)=>{n.d(o,{R:()=>r,x:()=>a});var i=n(6540);const s={},t=i.createContext(s);function r(e){const o=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function a(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),i.createElement(t.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/25a44f33.c5c3d1d0.js b/assets/js/25a44f33.c5c3d1d0.js new file mode 100644 index 0000000..f6e9a36 --- /dev/null +++ b/assets/js/25a44f33.c5c3d1d0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[279],{7490:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>t,metadata:()=>a,toc:()=>c});var i=n(4848),s=n(8453);const t={sidebar_position:0},r="Introduction",a={id:"sponsor-only/intro",title:"Introduction",description:"Welcome to the documentation for @react-native-documents/picker and @react-native-documents/viewer packages available to sponsors. These packages provide a way to pick and view documents on the device's file system or remote locations.",source:"@site/docs/sponsor-only/intro.md",sourceDirName:"sponsor-only",slug:"/sponsor-only/intro",permalink:"/docs/sponsor-only/intro",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:0,frontMatter:{sidebar_position:0},sidebar:"guidesSidebar",previous:{title:"Document picker",permalink:"/docs/public/document-picker"},next:{title:"Migrating from the old document-picker",permalink:"/docs/sponsor-only/migration"}},d={},c=[{value:"What's new in the sponsor-only packages?",id:"whats-new-in-the-sponsor-only-packages",level:2},{value:"TypeScript",id:"typescript",level:3},{value:"iOS",id:"ios",level:3},{value:"Android",id:"android",level:3},{value:"Windows",id:"windows",level:3},{value:"How do I know it works?",id:"how-do-i-know-it-works",level:3},{value:"Why do I ask for sponsorship?",id:"why-do-i-ask-for-sponsorship",level:2},{value:"Migrating from the old package",id:"migrating-from-the-old-package",level:2}];function l(e){const o={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(o.h1,{id:"introduction",children:"Introduction"}),"\n",(0,i.jsxs)(o.p,{children:["Welcome to the documentation for ",(0,i.jsx)(o.code,{children:"@react-native-documents/picker"})," and ",(0,i.jsx)(o.code,{children:"@react-native-documents/viewer"})," packages available to ",(0,i.jsx)(o.a,{href:"/docs/install",children:"sponsors"}),". These packages provide a way to pick and view documents on the device's file system or remote locations."]}),"\n",(0,i.jsx)(o.h2,{id:"whats-new-in-the-sponsor-only-packages",children:"What's new in the sponsor-only packages?"}),"\n",(0,i.jsxs)(o.p,{children:["Firstly, there's the completely new ",(0,i.jsx)(o.code,{children:"@react-native-documents/viewer"})," package which is designed to work well together with the updated ",(0,i.jsx)(o.code,{children:"@react-native-documents/picker"}),". The updated Picker module has an api very similar to the ",(0,i.jsx)(o.a,{href:"https://github.com/rnmods/react-native-document-picker",children:"original"}),", and contains the following improvements:"]}),"\n",(0,i.jsx)(o.h3,{id:"typescript",children:"TypeScript"}),"\n",(0,i.jsxs)(o.ul,{children:["\n",(0,i.jsxs)(o.li,{children:["highly improved type definitions that make use of ",(0,i.jsx)(o.a,{href:"https://basarat.gitbook.io/typescript/type-system/discriminated-unions",children:"Discriminated Unions"})," and other goodies so that you don't try to read fields that are not there, and nullable fields are also reduced. (You can use vanilla JS too if you like.)."]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.a,{href:"/docs/sponsor-only/jest-mocks",children:"mocks"})," for testing"]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.code,{children:"pickSingle"})," method was removed. You can instead use ",(0,i.jsx)(o.code,{children:"const [result] = pick()"})]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.code,{children:"releaseSecureAccess"})," was removed. I believe it's not necessary anymore because both the picker and the viewer module handle access in a way that does not require manual secure access management. Please open an issue if you need this method back."]}),"\n"]}),"\n",(0,i.jsx)(o.h3,{id:"ios",children:"iOS"}),"\n",(0,i.jsxs)(o.ul,{children:["\n",(0,i.jsxs)(o.li,{children:["new: ",(0,i.jsx)(o.a,{href:"/docs/sponsor-only/picker/limiting-selectable-files#isknowntype",children:(0,i.jsx)(o.code,{children:"isKnownType"})})," utility"]}),"\n",(0,i.jsxs)(o.li,{children:["new: support for long-term file access permissions - across app and even device reboots! (",(0,i.jsx)(o.a,{href:"/docs/sponsor-only/picker/open-mode",children:(0,i.jsx)(o.code,{children:"requestLongTermAccess"})}),")"]}),"\n",(0,i.jsxs)(o.li,{children:["new: ",(0,i.jsx)(o.a,{href:"/docs/sponsor-only/picker/import-mode#keepLocalCopy",children:(0,i.jsx)(o.code,{children:"keepLocalCopy"})})," function that separates picking a file and copying it to a local directory. This makes your app more responsive: previously you'd use the ",(0,i.jsx)(o.code,{children:"copyTo"})," option and before the resulting ",(0,i.jsx)(o.code,{children:"Promise"})," resolved, you needed to wait not only for user to pick the file, but also for the file to be copied to your app's directory. For large files or with slow network, this could be a problem that you, as a dev don't see, but your users do."]}),"\n",(0,i.jsx)(o.li,{children:"improved: the majority of the code is now written in Swift. The code is more readable and safer."}),"\n",(0,i.jsxs)(o.li,{children:["improved: all the code on iOS would previously run on the main thread. Now, the suitable parts are handled on a background thread or using Swift's ",(0,i.jsx)(o.a,{href:"https://www.hackingwithswift.com/swift/5.5/async-await",children:"concurrency methods"}),". You don't want to do file I/O on the main thread."]}),"\n",(0,i.jsxs)(o.li,{children:["improved: using the new ",(0,i.jsx)(o.code,{children:"UIDocumentPickerViewController"})," apis instead of those deprecated in iOS 14"]}),"\n",(0,i.jsxs)(o.li,{children:["improved: instead of the old ",(0,i.jsx)(o.code,{children:"copyTo"})," parameter making unnecessary copies, the new ",(0,i.jsx)(o.code,{children:"keepLocalCopy"})," function just moves the imported file."]}),"\n"]}),"\n",(0,i.jsx)(o.h3,{id:"android",children:"Android"}),"\n",(0,i.jsxs)(o.ul,{children:["\n",(0,i.jsxs)(o.li,{children:["new: support for ",(0,i.jsx)(o.a,{href:"/docs/sponsor-only/picker/open-mode",children:"open mode"})]}),"\n",(0,i.jsxs)(o.li,{children:["new: support for long-term file access permissions - across app and even device reboots! (",(0,i.jsx)(o.a,{href:"/docs/sponsor-only/picker/open-mode",children:(0,i.jsx)(o.code,{children:"requestLongTermAccess"})}),")"]}),"\n",(0,i.jsxs)(o.li,{children:["new: ",(0,i.jsx)(o.a,{href:"/docs/sponsor-only/picker/import-mode#keepLocalCopy",children:(0,i.jsx)(o.code,{children:"keepLocalCopy"})})," function that separates picking a file and copying it to a local directory. This makes your app more responsive: previously you'd use the ",(0,i.jsx)(o.code,{children:"copyTo"})," option and before the resulting ",(0,i.jsx)(o.code,{children:"Promise"})," resolved, you needed to wait not only for user to pick the file, but also for the file to be copied to your app's directory. For large files or with slow network, this could be a problem that you, as a dev don't see, but your users do."]}),"\n",(0,i.jsxs)(o.li,{children:["new: support for ",(0,i.jsx)(o.a,{href:"/docs/sponsor-only/picker/virtual-files",children:"virtual files"})]}),"\n",(0,i.jsxs)(o.li,{children:["improved: I have removed the deprecated ",(0,i.jsx)(o.a,{href:"https://developer.android.com/reference/android/os/AsyncTask",children:"AsyncTask"})," usage and replaced it with Kotlin Coroutines."]}),"\n",(0,i.jsxs)(o.li,{children:["improved: the code is better at operating with I/O, for example ",(0,i.jsx)(o.a,{href:"https://github.com/rnmods/react-native-document-picker/blob/27fddb9d9a88fff09a41ce654f7008cfd33cb4c4/android/src/main/java/com/reactnativedocumentpicker/RNDocumentPickerModule.java#L337",children:"byte buffer use"})," is replaced with a potentially much more efficient alternative from ",(0,i.jsx)(o.code,{children:"java.nio"})]}),"\n",(0,i.jsxs)(o.li,{children:["improved: reading file metadata is more defensive and efficient because only the necessary columns are queried from ",(0,i.jsx)(o.a,{href:"https://developer.android.com/reference/android/content/ContentResolver#query(android.net.Uri,%20java.lang.String%5B%5D,%20android.os.Bundle,%20android.os.CancellationSignal)",children:"ContentResolver"}),". The native Android apis are full of calls that can return null or throw so extra care is taken to handle these cases."]}),"\n"]}),"\n",(0,i.jsx)(o.h3,{id:"windows",children:"Windows"}),"\n",(0,i.jsx)(o.p,{children:"Windows is not supported at the moment. While there is Windows-related code in the public module, it's not maintained and probably does not work."}),"\n",(0,i.jsx)(o.h3,{id:"how-do-i-know-it-works",children:"How do I know it works?"}),"\n",(0,i.jsx)(o.p,{children:"With so many changes, you might wonder if the new package is stable - especially with Android because... well, we know Android \ud83d\ude1c."}),"\n",(0,i.jsx)(o.p,{children:"To prove the new code is solid, I have written an e2e test suite using Appium that covers the majority of the features:"}),"\n",(0,i.jsxs)(o.ul,{children:["\n",(0,i.jsx)(o.li,{children:"import mode"}),"\n",(0,i.jsx)(o.li,{children:"open mode"}),"\n",(0,i.jsx)(o.li,{children:"viewing files, including long-term permissions"}),"\n"]}),"\n",(0,i.jsx)("iframe",{width:"560",height:"315",src:"https://www.youtube.com/embed/tE3WMA4nxGE?si=N8p535owAFnenBwz",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),"\n",(0,i.jsx)(o.p,{children:"The test suite focuses on Android, and was executed on real devices from Samsung, Google and Huawei, with Android versions ranging between 8 and 14. iOS tests were done manually on a real device with iOS 17."}),"\n",(0,i.jsx)(o.p,{children:"As a result, I have greater confidence in the new package than in the old one!"}),"\n",(0,i.jsx)(o.h2,{id:"why-do-i-ask-for-sponsorship",children:"Why do I ask for sponsorship?"}),"\n",(0,i.jsxs)(o.p,{children:["I (",(0,i.jsx)(o.a,{href:"https://github.com/vonovak",children:"vonovak"}),") have been maintaining the original ",(0,i.jsx)(o.a,{href:"https://github.com/rnmods/react-native-document-picker",children:(0,i.jsx)(o.code,{children:"react-native-document-picker"})})," package more or less since 2020. The package has been used by thousands of devs, but I could see that there was a lot to improve."]}),"\n",(0,i.jsxs)(o.p,{children:["In November 2022 I opened an ",(0,i.jsx)(o.a,{href:"https://github.com/rnmods/react-native-document-picker/issues/603",children:"issue"})," on the original package, asking for sponsorships for new features and improvements, but I received very little support for this - and I understand: why would a company or an individual spend money if they get ",(0,i.jsx)(o.strong,{children:"nothing but a vague promise in return"}),"? If you follow me on ",(0,i.jsx)(o.a,{href:"https://twitter.com/vonovak",children:"Twitter"}),", you know I occasionally rant about open source (un)sustainability."]}),"\n",(0,i.jsxs)(o.p,{children:["In January 2024 I decided to rewrite the package from scratch and make it better! The new package has a new name: ",(0,i.jsx)(o.code,{children:"@react-native-documents/picker"})," and is hosted on the ",(0,i.jsx)(o.a,{href:"https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm-registry",children:"Github packages npm registry"})," - not the ",(0,i.jsx)(o.a,{href:"https://www.npmjs.com/",children:"public npm registry"}),", and it is available to ",(0,i.jsx)(o.a,{href:"/docs/install",children:"sponsors"}),"."]}),"\n",(0,i.jsxs)(o.p,{children:["While I was at it, I also created a new ",(0,i.jsx)(o.code,{children:"viewer"})," package which is available to ",(0,i.jsx)(o.a,{href:"/docs/install",children:"sponsors"})," as well."]}),"\n",(0,i.jsx)(o.p,{children:"So how to make OSS sustainable? My take is this: rather than asking for support, I provide full-featured packages and ask for a fee in return. I believe that the new packages are worth it."}),"\n",(0,i.jsxs)(o.blockquote,{children:["\n",(0,i.jsxs)(o.p,{children:["I'd like to thank my long-term GitHub sponsors ",(0,i.jsx)(o.a,{href:"https://www.litentry.com/",children:"Litentry"}),", ",(0,i.jsx)(o.a,{href:"https://www.callstack.com/",children:"Callstack"})," and ",(0,i.jsx)(o.a,{href:"https://expo.dev/",children:"Expo"}),"."]}),"\n"]}),"\n",(0,i.jsx)(o.h2,{id:"migrating-from-the-old-package",children:"Migrating from the old package"}),"\n",(0,i.jsxs)(o.p,{children:["See ",(0,i.jsx)(o.a,{href:"/docs/sponsor-only/migration",children:"the migration guide"})," - it's not difficult!"]})]})}function h(e={}){const{wrapper:o}={...(0,s.R)(),...e.components};return o?(0,i.jsx)(o,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,o,n)=>{n.d(o,{R:()=>r,x:()=>a});var i=n(6540);const s={},t=i.createContext(s);function r(e){const o=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function a(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),i.createElement(t.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/78a358ce.15059253.js b/assets/js/78a358ce.15059253.js deleted file mode 100644 index f0b3b03..0000000 --- a/assets/js/78a358ce.15059253.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[666],{4461:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>d,contentTitle:()=>o,default:()=>a,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var s=n(4848),t=n(8453);const r={sidebar_position:3},o="Limiting selectable file types",l={id:"sponsor-only/picker/limiting-selectable-files",title:"Limiting selectable file types",description:"Video introduction",source:"@site/docs/sponsor-only/picker/limiting-selectable-files.md",sourceDirName:"sponsor-only/picker",slug:"/sponsor-only/picker/limiting-selectable-files",permalink:"/docs/sponsor-only/picker/limiting-selectable-files",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"guidesSidebar",previous:{title:"Open mode",permalink:"/docs/sponsor-only/picker/open-mode"},next:{title:"Directory Picker",permalink:"/docs/sponsor-only/picker/directory-picker"}},d={},c=[{value:"isKnownType",id:"isknowntype",level:3},{value:"Predefined File Types",id:"predefined-file-types",level:3}];function p(e){const i={a:"a",admonition:"admonition",code:"code",h1:"h1",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components},{Details:n}=i;return n||function(e,i){throw new Error("Expected "+(i?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.h1,{id:"limiting-selectable-file-types",children:"Limiting selectable file types"}),"\n",(0,s.jsxs)(n,{children:[(0,s.jsx)("summary",{children:"Video introduction"}),(0,s.jsx)("iframe",{width:"560",height:"315",src:"https://www.youtube.com/embed/CUNDpURFx4U?si=xr3jHKpWRDo3uFLi&start=206",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0})]}),"\n",(0,s.jsxs)(i.p,{children:["The default document picker allows any file to be selected (except ",(0,s.jsx)(i.a,{href:"/docs/sponsor-only/picker/virtual-files",children:"virtual files"}),"). Use the ",(0,s.jsx)(i.code,{children:"type"})," parameter to restrict selectable file types."]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:["On iOS, these are Apple ",(0,s.jsx)(i.a,{href:"https://developer.apple.com/documentation/uniformtypeidentifiers/system-declared_uniform_type_identifiers",children:"Uniform Type Identifiers"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:["On Android, these are MIME types such as ",(0,s.jsx)(i.code,{children:"text/plain"})," or partial MIME types such as ",(0,s.jsx)(i.code,{children:"image/*"}),". See ",(0,s.jsx)(i.a,{href:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types",children:"common MIME types"})," or a more comprehensive ",(0,s.jsx)(i.a,{href:"https://www.iana.org/assignments/media-types/media-types.xhtml",children:"IANA Media Types listing"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(i.p,{children:["Figuring out the correct MIME type or UTType identifier for a file type can be a bit of a hassle. To make it easy, the module exports the ",(0,s.jsx)(i.a,{href:"#isknowntype",children:(0,s.jsx)(i.code,{children:"isKnownType"})})," utility and several ",(0,s.jsx)(i.a,{href:"#predefined-file-types",children:"predefined file types"})," that you can use."]}),"\n",(0,s.jsxs)(i.admonition,{type:"warning",children:[(0,s.jsxs)(i.p,{children:["On Android, some ",(0,s.jsx)(i.a,{href:"https://developer.android.com/guide/topics/providers/content-provider-basics",children:"Document Providers"})," (this seems to be a problem especially in China) ignore the ",(0,s.jsx)(i.code,{children:"type"})," parameter and allow any file to be selected. This is a problem with the Document Provider, not this module."]}),(0,s.jsxs)(i.p,{children:["To detect this case, check the ",(0,s.jsx)(i.a,{href:"../../doc-picker-api#documentpickerresponse",children:(0,s.jsx)(i.code,{children:"hasRequestedType"})})," field and handle the situation in your app."]})]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-tsx",metastring:'title="Example.tsx"',children:"import { pick, types } from '@react-native-documents/picker'\n\nreturn (\n {\n pick({\n allowMultiSelection: true,\n type: [types.pdf, types.docx],\n })\n .then((res) => {\n const allFilesArePdfOrDocx = res.every((file) => file.hasRequestedType)\n if (!allFilesArePdfOrDocx) {\n // tell the user they selected a file that is not a pdf or docx\n }\n addResult(res)\n })\n .catch(handleError)\n }}\n />\n)\n"})}),"\n",(0,s.jsx)(i.h3,{id:"isknowntype",children:"isKnownType"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.code,{children:"isKnownType"})," is a handy utility function that given one of:"]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"UTType identifier string"}),"\n",(0,s.jsx)(i.li,{children:"MIME type string"}),"\n",(0,s.jsx)(i.li,{children:"File extension string"}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"tells you if the device recognizes it, and returns the corresponding MIME type, file extension, and UTType identifier."}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-ts",children:"import { isKnownType } from '@react-native-documents/picker'\n\nconst { isKnown, mime, preferredFilenameExtension } = isKnownType({\n kind: 'extension',\n value: 'pdf',\n})\n"})}),"\n",(0,s.jsx)(i.p,{children:"This is currently only implemented on iOS, but it's useful on Android too: If your task is to allow selecting only some specific file type, you need to know what identifier (UTType on iOS, MIME type on Android) to use."}),"\n",(0,s.jsxs)(i.p,{children:["If you know the file extension (or the MIME, or the UTType), then use ",(0,s.jsx)(i.code,{children:"isKnownType"})," to find the corresponding MIME type for Android or UTType for iOS."]}),"\n",(0,s.jsx)(i.admonition,{type:"note",children:(0,s.jsx)(i.p,{children:"Different devices, based on the installed apps, may recognize different file types."})}),"\n",(0,s.jsx)(i.h3,{id:"predefined-file-types",children:"Predefined File Types"}),"\n",(0,s.jsxs)(i.p,{children:["These are the most common file types, and are available in the ",(0,s.jsx)(i.code,{children:"types"})," export. See the usage example above."]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-ts",children:"import { types } from '@react-native-documents/picker'\n"})}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"types.allFiles"}),": All document types, on Android this is ",(0,s.jsx)(i.code,{children:"*/*"}),", on iOS it's ",(0,s.jsx)(i.code,{children:"public.item"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"types.images"}),": All image types"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"types.plainText"}),": Plain text files"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"types.audio"}),": All audio types"]}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"types.pdf"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"types.zip"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"types.csv"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"types.doc"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"types.docx"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"types.ppt"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"types.pptx"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"types.xls"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"types.xlsx"})}),"\n"]})]})}function a(e={}){const{wrapper:i}={...(0,t.R)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}},8453:(e,i,n)=>{n.d(i,{R:()=>o,x:()=>l});var s=n(6540);const t={},r=s.createContext(t);function o(e){const i=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function l(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),s.createElement(r.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/78a358ce.46a3ccad.js b/assets/js/78a358ce.46a3ccad.js new file mode 100644 index 0000000..9661d79 --- /dev/null +++ b/assets/js/78a358ce.46a3ccad.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[666],{4461:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>d,contentTitle:()=>o,default:()=>a,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var s=n(4848),t=n(8453);const r={sidebar_position:3},o="Limiting selectable file types",l={id:"sponsor-only/picker/limiting-selectable-files",title:"Limiting selectable file types",description:"Video introduction",source:"@site/docs/sponsor-only/picker/limiting-selectable-files.md",sourceDirName:"sponsor-only/picker",slug:"/sponsor-only/picker/limiting-selectable-files",permalink:"/docs/sponsor-only/picker/limiting-selectable-files",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"guidesSidebar",previous:{title:"Open mode",permalink:"/docs/sponsor-only/picker/open-mode"},next:{title:"Directory Picker",permalink:"/docs/sponsor-only/picker/directory-picker"}},d={},c=[{value:"isKnownType",id:"isknowntype",level:3},{value:"Predefined File Types",id:"predefined-file-types",level:3}];function p(e){const i={a:"a",admonition:"admonition",code:"code",h1:"h1",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components},{Details:n}=i;return n||function(e,i){throw new Error("Expected "+(i?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.h1,{id:"limiting-selectable-file-types",children:"Limiting selectable file types"}),"\n",(0,s.jsxs)(n,{children:[(0,s.jsx)("summary",{children:"Video introduction"}),(0,s.jsx)("iframe",{width:"560",height:"315",src:"https://www.youtube.com/embed/CUNDpURFx4U?si=xr3jHKpWRDo3uFLi&start=206",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0})]}),"\n",(0,s.jsxs)(i.p,{children:["The default document picker allows any file to be selected (except ",(0,s.jsx)(i.a,{href:"/docs/sponsor-only/picker/virtual-files",children:"virtual files"}),"). Use the ",(0,s.jsx)(i.code,{children:"type"})," parameter of ",(0,s.jsx)(i.code,{children:"pick()"})," to restrict selectable file types."]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:["On iOS, these are Apple ",(0,s.jsx)(i.a,{href:"https://developer.apple.com/documentation/uniformtypeidentifiers/system-declared_uniform_type_identifiers",children:"Uniform Type Identifiers"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:["On Android, these are MIME types such as ",(0,s.jsx)(i.code,{children:"text/plain"})," or partial MIME types such as ",(0,s.jsx)(i.code,{children:"image/*"}),". See ",(0,s.jsx)(i.a,{href:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types",children:"common MIME types"})," or a more comprehensive ",(0,s.jsx)(i.a,{href:"https://www.iana.org/assignments/media-types/media-types.xhtml",children:"IANA Media Types listing"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(i.p,{children:["Figuring out the correct MIME type or UTType identifier for a file type can be a bit of a hassle. To make it easy, the module exports the ",(0,s.jsx)(i.a,{href:"#isknowntype",children:(0,s.jsx)(i.code,{children:"isKnownType"})})," utility and several ",(0,s.jsx)(i.a,{href:"#predefined-file-types",children:"predefined file types"})," that you can use."]}),"\n",(0,s.jsxs)(i.admonition,{type:"warning",children:[(0,s.jsxs)(i.p,{children:["On Android, some ",(0,s.jsx)(i.a,{href:"https://developer.android.com/guide/topics/providers/content-provider-basics",children:"Document Providers"})," (this seems to be a problem especially in China) ignore the ",(0,s.jsx)(i.code,{children:"type"})," parameter and allow any file to be selected. This is a problem with the Document Provider, not this module."]}),(0,s.jsxs)(i.p,{children:["To detect this case, check the ",(0,s.jsx)(i.a,{href:"../../doc-picker-api#documentpickerresponse",children:(0,s.jsx)(i.code,{children:"hasRequestedType"})})," field and handle the situation in your app."]})]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-tsx",metastring:'title="Example.tsx"',children:"import { pick, types } from '@react-native-documents/picker'\n\nreturn (\n {\n pick({\n allowMultiSelection: true,\n // highlight-next-line\n type: [types.pdf, types.docx],\n })\n .then((res) => {\n const allFilesArePdfOrDocx = res.every((file) => file.hasRequestedType)\n if (!allFilesArePdfOrDocx) {\n // tell the user they selected a file that is not a pdf or docx\n }\n addResult(res)\n })\n .catch(handleError)\n }}\n />\n)\n"})}),"\n",(0,s.jsx)(i.h3,{id:"isknowntype",children:"isKnownType"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.code,{children:"isKnownType"})," is a handy utility function that given one of:"]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"UTType identifier string"}),"\n",(0,s.jsx)(i.li,{children:"MIME type string"}),"\n",(0,s.jsx)(i.li,{children:"File extension string"}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"tells you if the device recognizes it, and returns the corresponding MIME type, file extension, and UTType identifier."}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-ts",children:"import { isKnownType } from '@react-native-documents/picker'\n\nconst { isKnown, mime, preferredFilenameExtension } = isKnownType({\n kind: 'extension',\n value: 'pdf',\n})\n"})}),"\n",(0,s.jsxs)(i.p,{children:["This is currently only implemented on iOS, but it's useful on Android too: If you know the file extension (or the MIME, or the UTType), then use ",(0,s.jsx)(i.code,{children:"isKnownType"})," to find the corresponding MIME type for Android or UTType for iOS. then pass the result to the ",(0,s.jsx)(i.code,{children:"type"})," parameter."]}),"\n",(0,s.jsx)(i.admonition,{type:"note",children:(0,s.jsx)(i.p,{children:"Different devices, based on the installed apps, may recognize different file types."})}),"\n",(0,s.jsx)(i.h3,{id:"predefined-file-types",children:"Predefined File Types"}),"\n",(0,s.jsxs)(i.p,{children:["These are the most common file types, and are available in the ",(0,s.jsx)(i.code,{children:"types"})," export. See the usage example above."]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-ts",children:"import { types } from '@react-native-documents/picker'\n"})}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"types.allFiles"}),": All document types, on Android this is ",(0,s.jsx)(i.code,{children:"*/*"}),", on iOS it's ",(0,s.jsx)(i.code,{children:"public.item"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"types.images"}),": All image types"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"types.plainText"}),": Plain text files"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"types.audio"}),": All audio types"]}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"types.pdf"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"types.zip"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"types.csv"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"types.doc"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"types.docx"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"types.ppt"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"types.pptx"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"types.xls"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"types.xlsx"})}),"\n"]})]})}function a(e={}){const{wrapper:i}={...(0,t.R)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}},8453:(e,i,n)=>{n.d(i,{R:()=>o,x:()=>l});var s=n(6540);const t={},r=s.createContext(t);function o(e){const i=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function l(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),s.createElement(r.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.53c03c0f.js b/assets/js/935f2afb.53c03c0f.js deleted file mode 100644 index 2417704..0000000 --- a/assets/js/935f2afb.53c03c0f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[581],{5610:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"guidesSidebar":[{"type":"link","label":"Installation & Setup","href":"/docs/install","docId":"install","unlisted":false},{"type":"category","label":"Public module","collapsible":false,"items":[{"type":"link","label":"Public document picker","href":"/docs/public/document-picker","docId":"public/document-picker","unlisted":false}],"collapsed":false},{"type":"category","label":"Premium modules","collapsible":false,"items":[{"type":"link","label":"Introduction","href":"/docs/sponsor-only/intro","docId":"sponsor-only/intro","unlisted":false},{"type":"link","label":"Migrating from the old document-picker","href":"/docs/sponsor-only/migration","docId":"sponsor-only/migration","unlisted":false},{"type":"category","label":"Document Picker","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Import mode","href":"/docs/sponsor-only/picker/import-mode","docId":"sponsor-only/picker/import-mode","unlisted":false},{"type":"link","label":"Open mode","href":"/docs/sponsor-only/picker/open-mode","docId":"sponsor-only/picker/open-mode","unlisted":false},{"type":"link","label":"Limiting selectable file types","href":"/docs/sponsor-only/picker/limiting-selectable-files","docId":"sponsor-only/picker/limiting-selectable-files","unlisted":false},{"type":"link","label":"Directory Picker","href":"/docs/sponsor-only/picker/directory-picker","docId":"sponsor-only/picker/directory-picker","unlisted":false},{"type":"link","label":"Virtual files","href":"/docs/sponsor-only/picker/virtual-files","docId":"sponsor-only/picker/virtual-files","unlisted":false}],"href":"/docs/category/document-picker"},{"type":"link","label":"Document Viewer","href":"/docs/sponsor-only/viewer","className":"larger-heading","docId":"sponsor-only/viewer","unlisted":false},{"type":"link","label":"Jest module mocks","href":"/docs/sponsor-only/jest-mocks","docId":"sponsor-only/jest-mocks","unlisted":false},{"type":"link","label":"Error handling","href":"/docs/sponsor-only/errors","docId":"sponsor-only/errors","unlisted":false},{"type":"link","label":"License","href":"/docs/sponsor-only/license","docId":"sponsor-only/license","unlisted":false},{"type":"link","label":"Roadmap and Changelog","href":"/docs/sponsor-only/roadmap-and-changelog","docId":"sponsor-only/roadmap-and-changelog","unlisted":false},{"type":"link","label":"Other libraries","href":"/docs/sponsor-only/other-libs","docId":"sponsor-only/other-libs","unlisted":false}],"collapsed":false}],"docPickerApiSidebar":[{"type":"link","label":"Document Picker API","href":"/docs/doc-picker-api/","docId":"doc-picker-api/index","unlisted":false}],"docViewerApiSidebar":[{"type":"link","label":"Document Viewer API","href":"/docs/doc-viewer-api/","docId":"doc-viewer-api/index","unlisted":false}]},"docs":{"doc-picker-api/index":{"id":"doc-picker-api/index","title":"Document Picker API","description":"Type Aliases","sidebar":"docPickerApiSidebar"},"doc-viewer-api/index":{"id":"doc-viewer-api/index","title":"Document Viewer API","description":"Type Aliases","sidebar":"docViewerApiSidebar"},"install":{"id":"install","title":"Installation","description":"There are two ways to consume the document picker package:","sidebar":"guidesSidebar"},"public/document-picker":{"id":"public/document-picker","title":"Public document picker","description":"react-native-document-picker is a React Native wrapper for:","sidebar":"guidesSidebar"},"sponsor-only/errors":{"id":"sponsor-only/errors","title":"Error handling","description":"This page describes the case when calling any of the modules\' method rejects. Keep in mind other errors can also happen in pick (see error and hasRequestedType) and keepLocalCopy (see copyError).","sidebar":"guidesSidebar"},"sponsor-only/intro":{"id":"sponsor-only/intro","title":"Introduction","description":"Welcome to the documentation for @react-native-documents/picker and @react-native-documents/viewer packages available to sponsors. These packages provide a way to pick and view documents on the device\'s file system or remote locations.","sidebar":"guidesSidebar"},"sponsor-only/jest-mocks":{"id":"sponsor-only/jest-mocks","title":"Jest module mocks","description":"You will need to mock the functionality of the native modules once you require them from your test files - otherwise you\'ll get this error.","sidebar":"guidesSidebar"},"sponsor-only/license":{"id":"sponsor-only/license","title":"license","description":"The original module is licensed as MIT, the module for sponsors has the following license.","sidebar":"guidesSidebar"},"sponsor-only/migration":{"id":"sponsor-only/migration","title":"Migrating from the old document-picker","description":"The new package has a new name (@react-native-documents/picker), so you need to update your import statements. You also need to tell your package manager where to find the new package. This is covered in the installation guide.","sidebar":"guidesSidebar"},"sponsor-only/other-libs":{"id":"sponsor-only/other-libs","title":"Other libraries","description":"This is a non-exhaustive list of other libraries which are authored / maintained by the author of this library. Maybe you\'ll find something useful :).","sidebar":"guidesSidebar"},"sponsor-only/picker/directory-picker":{"id":"sponsor-only/picker/directory-picker","title":"Directory Picker","description":"This module allows you to pick a directory from the file system. The chosen directory can then be used for file I/O operations.","sidebar":"guidesSidebar"},"sponsor-only/picker/import-mode":{"id":"sponsor-only/picker/import-mode","title":"Import mode","description":"Video introduction","sidebar":"guidesSidebar"},"sponsor-only/picker/limiting-selectable-files":{"id":"sponsor-only/picker/limiting-selectable-files","title":"Limiting selectable file types","description":"Video introduction","sidebar":"guidesSidebar"},"sponsor-only/picker/open-mode":{"id":"sponsor-only/picker/open-mode","title":"Open mode","description":"Video introduction","sidebar":"guidesSidebar"},"sponsor-only/picker/virtual-files":{"id":"sponsor-only/picker/virtual-files","title":"Virtual files","description":"Virtual files are an Android-only concept. You have almost surely encountered them in your Google Drive - all the Google Docs, Sheets, Presentations and etc. are virtual files and cannot normally be selected.","sidebar":"guidesSidebar"},"sponsor-only/roadmap-and-changelog":{"id":"sponsor-only/roadmap-and-changelog","title":"Roadmap","description":"What are the upcoming features and improvements for the project?","sidebar":"guidesSidebar"},"sponsor-only/viewer":{"id":"sponsor-only/viewer","title":"Document Viewer","description":"The viewer module is designed to work with the files that the document picker module returns. It supports both uri and bookmark coming from open and import modes, also supports virtual files and long-term access to the files.","sidebar":"guidesSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.93845f91.js b/assets/js/935f2afb.93845f91.js new file mode 100644 index 0000000..52e15be --- /dev/null +++ b/assets/js/935f2afb.93845f91.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[581],{5610:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"guidesSidebar":[{"type":"link","label":"Installation & Setup","href":"/docs/install","docId":"install","unlisted":false},{"type":"category","label":"Public module","collapsible":false,"items":[{"type":"link","label":"Document picker","href":"/docs/public/document-picker","docId":"public/document-picker","unlisted":false}],"collapsed":false},{"type":"category","label":"Premium modules","collapsible":false,"items":[{"type":"link","label":"Introduction","href":"/docs/sponsor-only/intro","docId":"sponsor-only/intro","unlisted":false},{"type":"link","label":"Migrating from the old document-picker","href":"/docs/sponsor-only/migration","docId":"sponsor-only/migration","unlisted":false},{"type":"category","label":"Document Picker","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Import mode","href":"/docs/sponsor-only/picker/import-mode","docId":"sponsor-only/picker/import-mode","unlisted":false},{"type":"link","label":"Open mode","href":"/docs/sponsor-only/picker/open-mode","docId":"sponsor-only/picker/open-mode","unlisted":false},{"type":"link","label":"Limiting selectable file types","href":"/docs/sponsor-only/picker/limiting-selectable-files","docId":"sponsor-only/picker/limiting-selectable-files","unlisted":false},{"type":"link","label":"Directory Picker","href":"/docs/sponsor-only/picker/directory-picker","docId":"sponsor-only/picker/directory-picker","unlisted":false},{"type":"link","label":"Virtual files","href":"/docs/sponsor-only/picker/virtual-files","docId":"sponsor-only/picker/virtual-files","unlisted":false}],"href":"/docs/category/document-picker"},{"type":"link","label":"Document Viewer","href":"/docs/sponsor-only/viewer","className":"larger-heading","docId":"sponsor-only/viewer","unlisted":false},{"type":"link","label":"Jest module mocks","href":"/docs/sponsor-only/jest-mocks","docId":"sponsor-only/jest-mocks","unlisted":false},{"type":"link","label":"Error handling","href":"/docs/sponsor-only/errors","docId":"sponsor-only/errors","unlisted":false},{"type":"link","label":"License","href":"/docs/sponsor-only/license","docId":"sponsor-only/license","unlisted":false},{"type":"link","label":"Roadmap and Changelog","href":"/docs/sponsor-only/roadmap-and-changelog","docId":"sponsor-only/roadmap-and-changelog","unlisted":false},{"type":"link","label":"Other libraries","href":"/docs/sponsor-only/other-libs","docId":"sponsor-only/other-libs","unlisted":false}],"collapsed":false}],"docPickerApiSidebar":[{"type":"link","label":"Document Picker API","href":"/docs/doc-picker-api/","docId":"doc-picker-api/index","unlisted":false}],"docViewerApiSidebar":[{"type":"link","label":"Document Viewer API","href":"/docs/doc-viewer-api/","docId":"doc-viewer-api/index","unlisted":false}]},"docs":{"doc-picker-api/index":{"id":"doc-picker-api/index","title":"Document Picker API","description":"Type Aliases","sidebar":"docPickerApiSidebar"},"doc-viewer-api/index":{"id":"doc-viewer-api/index","title":"Document Viewer API","description":"Type Aliases","sidebar":"docViewerApiSidebar"},"install":{"id":"install","title":"Installation","description":"There are two ways to consume the document picker package:","sidebar":"guidesSidebar"},"public/document-picker":{"id":"public/document-picker","title":"Document picker","description":"react-native-document-picker is a React Native wrapper for:","sidebar":"guidesSidebar"},"sponsor-only/errors":{"id":"sponsor-only/errors","title":"Error handling","description":"This page describes the case when calling any of the modules\' method rejects. Keep in mind other errors can also happen in pick (see error and hasRequestedType) and keepLocalCopy (see copyError).","sidebar":"guidesSidebar"},"sponsor-only/intro":{"id":"sponsor-only/intro","title":"Introduction","description":"Welcome to the documentation for @react-native-documents/picker and @react-native-documents/viewer packages available to sponsors. These packages provide a way to pick and view documents on the device\'s file system or remote locations.","sidebar":"guidesSidebar"},"sponsor-only/jest-mocks":{"id":"sponsor-only/jest-mocks","title":"Jest module mocks","description":"You will need to mock the functionality of the native modules once you require them from your test files - otherwise you\'ll get this error.","sidebar":"guidesSidebar"},"sponsor-only/license":{"id":"sponsor-only/license","title":"license","description":"The original module is licensed as MIT, the module for sponsors has the following license.","sidebar":"guidesSidebar"},"sponsor-only/migration":{"id":"sponsor-only/migration","title":"Migrating from the old document-picker","description":"The new package has a new name (@react-native-documents/picker), so you need to update your import statements. You also need to tell your package manager where to find the new package. This is covered in the installation guide.","sidebar":"guidesSidebar"},"sponsor-only/other-libs":{"id":"sponsor-only/other-libs","title":"Other libraries","description":"This is a non-exhaustive list of other libraries which are authored / maintained by the author of this library. Maybe you\'ll find something useful :).","sidebar":"guidesSidebar"},"sponsor-only/picker/directory-picker":{"id":"sponsor-only/picker/directory-picker","title":"Directory Picker","description":"This module allows you to pick a directory from the file system. The chosen directory can then be used for file I/O operations.","sidebar":"guidesSidebar"},"sponsor-only/picker/import-mode":{"id":"sponsor-only/picker/import-mode","title":"Import mode","description":"Video introduction","sidebar":"guidesSidebar"},"sponsor-only/picker/limiting-selectable-files":{"id":"sponsor-only/picker/limiting-selectable-files","title":"Limiting selectable file types","description":"Video introduction","sidebar":"guidesSidebar"},"sponsor-only/picker/open-mode":{"id":"sponsor-only/picker/open-mode","title":"Open mode","description":"Video introduction","sidebar":"guidesSidebar"},"sponsor-only/picker/virtual-files":{"id":"sponsor-only/picker/virtual-files","title":"Virtual files","description":"Virtual files are an Android-only concept. You have almost surely encountered them in your Google Drive - all the Google Docs, Sheets, Presentations and etc. are virtual files and cannot normally be selected.","sidebar":"guidesSidebar"},"sponsor-only/roadmap-and-changelog":{"id":"sponsor-only/roadmap-and-changelog","title":"Roadmap","description":"What are the upcoming features and improvements for the project?","sidebar":"guidesSidebar"},"sponsor-only/viewer":{"id":"sponsor-only/viewer","title":"Document Viewer","description":"The viewer module is designed to work with the files that the document picker module returns. It supports both uri and bookmark coming from open and import modes, also supports virtual files and long-term access to the files.","sidebar":"guidesSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/ebd183cd.415e0685.js b/assets/js/ebd183cd.415e0685.js deleted file mode 100644 index 8b31b1e..0000000 --- a/assets/js/ebd183cd.415e0685.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[961],{3816:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>t,contentTitle:()=>r,default:()=>h,frontMatter:()=>c,metadata:()=>l,toc:()=>d});var o=n(4848),s=n(8453);const c={},r="Public document picker",l={id:"public/document-picker",title:"Public document picker",description:"react-native-document-picker is a React Native wrapper for:",source:"@site/docs/public/document-picker.md",sourceDirName:"public",slug:"/public/document-picker",permalink:"/docs/public/document-picker",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"guidesSidebar",previous:{title:"Installation & Setup",permalink:"/docs/install"},next:{title:"Introduction",permalink:"/docs/sponsor-only/intro"}},t={},d=[{value:"Maintenance status",id:"maintenance-status",level:3},{value:"API",id:"api",level:2},{value:"pickSingle(options) / pick(options)",id:"picksingleoptions--pickoptions",level:3},{value:"pickDirectory()",id:"pickdirectory",level:3},{value:"Options",id:"options",level:2},{value:"allowMultiSelection:boolean",id:"allowmultiselectionboolean",level:4},{value:"type:string|Array<string>",id:"typestringarraystring",level:4},{value:"[iOS and Android only] copyTo:"cachesDirectory" | "documentDirectory"",id:"ios-and-android-only-copytocachesdirectory--documentdirectory",level:4},{value:"[iOS only] presentationStyle:'fullScreen' | 'pageSheet' | 'formSheet' | 'overFullScreen'",id:"ios-only-presentationstylefullscreen--pagesheet--formsheet--overfullscreen",level:4},{value:"[iOS only] transitionStyle:'coverVertical' | 'flipHorizontal' | 'crossDissolve' | 'partialCurl'",id:"ios-only-transitionstylecoververtical--fliphorizontal--crossdissolve--partialcurl",level:4},{value:"[iOS only] mode:"import" | "open"",id:"ios-only-modeimport--open",level:4},{value:"[Windows only] readContent:boolean",id:"windows-only-readcontentboolean",level:4},{value:"Result",id:"result",level:2},{value:"uri",id:"uri",level:4},{value:"fileCopyUri",id:"filecopyuri",level:4},{value:"type",id:"type",level:4},{value:"name",id:"name",level:4},{value:"size",id:"size",level:4},{value:"[Windows only] content",id:"windows-only-content",level:4},{value:"types.*",id:"types",level:2},{value:"isCancel(err)",id:"iscancelerr",level:4},{value:"isInProgress(err)",id:"isinprogresserr",level:4},{value:"[iOS only] releaseSecureAccess(uris: Array<string>)",id:"ios-only-releasesecureaccessuris-arraystring",level:4},{value:"Example",id:"example",level:2},{value:"How to upload picked files?",id:"how-to-upload-picked-files",level:2}];function a(e){const i={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(i.h1,{id:"public-document-picker",children:"Public document picker"}),"\n",(0,o.jsxs)(i.p,{children:[(0,o.jsx)(i.code,{children:"react-native-document-picker"})," is a React Native wrapper for:"]}),"\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsxs)(i.li,{children:["Apple's ",(0,o.jsx)(i.code,{children:"UIDocumentPickerViewController"})]}),"\n",(0,o.jsxs)(i.li,{children:["Android's ",(0,o.jsx)(i.code,{children:"Intent.ACTION_GET_CONTENT"})]}),"\n",(0,o.jsxs)(i.li,{children:["Windows ",(0,o.jsx)(i.code,{children:"Windows.Storage.Pickers"})]}),"\n"]}),"\n",(0,o.jsx)(i.h3,{id:"maintenance-status",children:"Maintenance status"}),"\n",(0,o.jsxs)(i.p,{children:["Currently, the maintainer is focusing on the ",(0,o.jsx)(i.a,{href:"/docs/sponsor-only/intro",children:"sponsor-only version"})," of the library. The public version will receive security / critical bug fixes from the maintainer but major new feature development is not planned at the moment. I expect bugfixes from the sponsor-only version to make their way into the public package as well."]}),"\n",(0,o.jsx)(i.h2,{id:"api",children:"API"}),"\n",(0,o.jsxs)(i.h3,{id:"picksingleoptions--pickoptions",children:[(0,o.jsx)(i.code,{children:"pickSingle(options)"})," / ",(0,o.jsx)(i.code,{children:"pick(options)"})]}),"\n",(0,o.jsxs)(i.p,{children:["Use ",(0,o.jsx)(i.code,{children:"pickSingle"})," or ",(0,o.jsx)(i.code,{children:"pick"})," to open a document picker for the user to select file(s)."]}),"\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsxs)(i.li,{children:["\n",(0,o.jsxs)(i.p,{children:["with ",(0,o.jsx)(i.code,{children:"pick"}),", you can use ",(0,o.jsx)(i.code,{children:"allowMultiSelection"})," param to control whether user can select multiple files (",(0,o.jsx)(i.code,{children:"false"})," by default). Returns a ",(0,o.jsx)(i.code,{children:"Promise>"})]}),"\n"]}),"\n",(0,o.jsxs)(i.li,{children:["\n",(0,o.jsxs)(i.p,{children:[(0,o.jsx)(i.code,{children:"pickSingle"}),' is "sugar function" on top of ',(0,o.jsx)(i.code,{children:"pick"})," and only allows a single selection returns ",(0,o.jsx)(i.code,{children:"Promise"})]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(i.h3,{id:"pickdirectory",children:(0,o.jsx)(i.code,{children:"pickDirectory()"})}),"\n",(0,o.jsxs)(i.p,{children:["Open a system directory picker. Returns a promise that resolves to (",(0,o.jsx)(i.code,{children:"{ uri: string }"}),") of the directory selected by user."]}),"\n",(0,o.jsx)(i.h2,{id:"options",children:"Options"}),"\n",(0,o.jsx)(i.p,{children:"All the options are optional"}),"\n",(0,o.jsxs)(i.h4,{id:"allowmultiselectionboolean",children:[(0,o.jsx)(i.code,{children:"allowMultiSelection"}),":",(0,o.jsx)(i.code,{children:"boolean"})]}),"\n",(0,o.jsxs)(i.p,{children:["Whether selecting multiple files is allowed. For ",(0,o.jsx)(i.code,{children:"pick"}),", this is ",(0,o.jsx)(i.code,{children:"false"})," by default. ",(0,o.jsx)(i.code,{children:"allowMultiSelection"})," is ",(0,o.jsx)(i.code,{children:"false"})," for ",(0,o.jsx)(i.code,{children:"pickSingle"})," and cannot be overridden."]}),"\n",(0,o.jsxs)(i.h4,{id:"typestringarraystring",children:[(0,o.jsx)(i.code,{children:"type"}),":",(0,o.jsx)(i.code,{children:"string|Array"})]}),"\n",(0,o.jsx)(i.p,{children:"The type or types of documents to allow selection of. An array of strings or single string."}),"\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsxs)(i.li,{children:["On Android, these are MIME types such as ",(0,o.jsx)(i.code,{children:"text/plain"})," or partial MIME types such as ",(0,o.jsx)(i.code,{children:"image/*"}),". See ",(0,o.jsx)(i.a,{href:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types",children:"common MIME types"}),"."]}),"\n",(0,o.jsxs)(i.li,{children:["On iOS, these must be Apple ",(0,o.jsx)(i.a,{href:"https://developer.apple.com/documentation/uniformtypeidentifiers/system-declared_uniform_type_identifiers?language=objc",children:"Uniform Type Identifiers"})]}),"\n",(0,o.jsxs)(i.li,{children:["If ",(0,o.jsx)(i.code,{children:"type"})," is omitted it will be treated as ",(0,o.jsx)(i.code,{children:"*/*"})," or ",(0,o.jsx)(i.code,{children:"public.item"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(i.h4,{id:"ios-and-android-only-copytocachesdirectory--documentdirectory",children:["[iOS and Android only] ",(0,o.jsx)(i.code,{children:"copyTo"}),":",(0,o.jsx)(i.code,{children:'"cachesDirectory" | "documentDirectory"'})]}),"\n",(0,o.jsxs)(i.p,{children:["If specified, the picked file is copied to ",(0,o.jsx)(i.code,{children:"NSCachesDirectory"})," / ",(0,o.jsx)(i.code,{children:"NSDocumentDirectory"})," (iOS) or ",(0,o.jsx)(i.code,{children:"getCacheDir"})," / ",(0,o.jsx)(i.code,{children:"getFilesDir"})," (Android). The uri of the copy will be available in result's ",(0,o.jsx)(i.code,{children:"fileCopyUri"}),". If copying the file fails (e.g. due to lack of free space), ",(0,o.jsx)(i.code,{children:"fileCopyUri"})," will be ",(0,o.jsx)(i.code,{children:"null"}),", and more details about the error will be available in ",(0,o.jsx)(i.code,{children:"copyError"})," field in the result."]}),"\n",(0,o.jsxs)(i.p,{children:["This should help if you need to work with the file(s) later on, because by default, ",(0,o.jsx)(i.a,{href:"https://developer.apple.com/documentation/uikit/uidocumentpickerdelegate/2902364-documentpicker",children:"the picked documents are temporary files. They remain available only until your application terminates"}),". This may impact performance for large files, so keep this in mind if you expect users to pick particularly large files and your app does not need immediate read access."]}),"\n",(0,o.jsx)(i.p,{children:"On Android, this can be used to obtain local, on-device copy of the file (e.g. if user picks a document from Google Drive, this will download it locally to the phone)."}),"\n",(0,o.jsxs)(i.h4,{id:"ios-only-presentationstylefullscreen--pagesheet--formsheet--overfullscreen",children:["[iOS only] ",(0,o.jsx)(i.code,{children:"presentationStyle"}),":",(0,o.jsx)(i.code,{children:"'fullScreen' | 'pageSheet' | 'formSheet' | 'overFullScreen'"})]}),"\n",(0,o.jsxs)(i.p,{children:["Controls how the picker is presented, e.g. on an iPad you may want to present it fullscreen. Defaults to ",(0,o.jsx)(i.code,{children:"pageSheet"}),"."]}),"\n",(0,o.jsxs)(i.h4,{id:"ios-only-transitionstylecoververtical--fliphorizontal--crossdissolve--partialcurl",children:["[iOS only] ",(0,o.jsx)(i.code,{children:"transitionStyle"}),":",(0,o.jsx)(i.code,{children:"'coverVertical' | 'flipHorizontal' | 'crossDissolve' | 'partialCurl'"})]}),"\n",(0,o.jsxs)(i.p,{children:["Configure the transition style of the picker. Defaults to ",(0,o.jsx)(i.code,{children:"coverVertical"}),", when the picker is presented, its view slides up from the bottom of the screen."]}),"\n",(0,o.jsxs)(i.h4,{id:"ios-only-modeimport--open",children:["[iOS only] ",(0,o.jsx)(i.code,{children:"mode"}),":",(0,o.jsx)(i.code,{children:'"import" | "open"'})]}),"\n",(0,o.jsxs)(i.p,{children:["Defaults to ",(0,o.jsx)(i.code,{children:"import"}),". If ",(0,o.jsx)(i.code,{children:"mode"})," is set to ",(0,o.jsx)(i.code,{children:"import"})," the document picker imports the file from outside to inside the sandbox, otherwise if ",(0,o.jsx)(i.code,{children:"mode"})," is set to ",(0,o.jsx)(i.code,{children:"open"})," the document picker opens the file in-place."]}),"\n",(0,o.jsxs)(i.h4,{id:"windows-only-readcontentboolean",children:["[Windows only] ",(0,o.jsx)(i.code,{children:"readContent"}),":",(0,o.jsx)(i.code,{children:"boolean"})]}),"\n",(0,o.jsxs)(i.p,{children:["Defaults to ",(0,o.jsx)(i.code,{children:"false"}),". If ",(0,o.jsx)(i.code,{children:"readContent"})," is set to true the content of the picked file/files will be read and supplied in the result object."]}),"\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsxs)(i.li,{children:["\n",(0,o.jsx)(i.p,{children:"Be aware that this can introduce a huge performance hit in case of big files. (The files are read completely and into the memory and encoded to base64 afterwards to add them to the result object)"}),"\n"]}),"\n",(0,o.jsxs)(i.li,{children:["\n",(0,o.jsx)(i.p,{children:"However, reading the file directly from within the Thread which managed the picker can be necessary on Windows: Windows Apps can only read the Downloads folder and their own app folder by default and If a file is outside of these locations it cannot be acessed directly. However if the user picks the file through a file picker permissions to that file are granted implicitly."}),"\n",(0,o.jsx)(i.pre,{children:(0,o.jsx)(i.code,{children:"In addition to the default locations, an app can access additional files and folders by declaring capabilities in the app manifest (see App capability declarations), or by calling a file picker to let the user pick files and folders for the app to access (see Open files and folders with a picker).\n"})}),"\n",(0,o.jsx)(i.p,{children:(0,o.jsx)(i.a,{href:"https://docs.microsoft.com/en-us/windows/uwp/files/file-access-permissions",children:"https://docs.microsoft.com/en-us/windows/uwp/files/file-access-permissions"})}),"\n",(0,o.jsx)(i.p,{children:"Unfortunately that permission is not granted to the whole app, but only the Thread which handled the filepicker. Therefore, it can be useful to read the file directly."}),"\n"]}),"\n",(0,o.jsxs)(i.li,{children:["\n",(0,o.jsxs)(i.p,{children:["You can use ",(0,o.jsx)(i.code,{children:"react-native-fs"})," on Android and IOS to read the picked file."]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(i.h2,{id:"result",children:"Result"}),"\n",(0,o.jsxs)(i.p,{children:["The ",(0,o.jsx)(i.code,{children:"pick"})," Promise resolves to an array of objects with the following keys."]}),"\n",(0,o.jsx)(i.h4,{id:"uri",children:(0,o.jsx)(i.code,{children:"uri"})}),"\n",(0,o.jsxs)(i.p,{children:["The URI representing the document picked by the user. ",(0,o.jsxs)(i.em,{children:["On iOS this will be a ",(0,o.jsx)(i.code,{children:"file://"})," URI for a temporary file in your app's container if ",(0,o.jsx)(i.code,{children:"mode"})," is not specified or set at ",(0,o.jsx)(i.code,{children:"import"})," otherwise it will be the original ",(0,o.jsx)(i.code,{children:"file://"})," URI. On Android this will be a ",(0,o.jsx)(i.code,{children:"content://"})," URI for a document provided by a DocumentProvider that must be accessed with a ContentResolver."]})]}),"\n",(0,o.jsx)(i.h4,{id:"filecopyuri",children:(0,o.jsx)(i.code,{children:"fileCopyUri"})}),"\n",(0,o.jsxs)(i.p,{children:["If ",(0,o.jsx)(i.code,{children:"copyTo"})," option is specified, this will point to a local copy of picked file. Otherwise, this is ",(0,o.jsx)(i.code,{children:"null"}),"."]}),"\n",(0,o.jsx)(i.h4,{id:"type",children:(0,o.jsx)(i.code,{children:"type"})}),"\n",(0,o.jsxs)(i.p,{children:["The MIME type of the file. ",(0,o.jsx)(i.em,{children:'On Android some DocumentProviders may not provide MIME types for their documents. On iOS this MIME type is based on the best MIME type for the file extension according to Apple\'s internal "Uniform Type Identifiers" database.'})]}),"\n",(0,o.jsx)(i.h4,{id:"name",children:(0,o.jsx)(i.code,{children:"name"})}),"\n",(0,o.jsxs)(i.p,{children:["The display name of the file. ",(0,o.jsx)(i.em,{children:"This is normally the filename of the file, but Android does not guarantee that this will be a filename from all DocumentProviders."})]}),"\n",(0,o.jsx)(i.h4,{id:"size",children:(0,o.jsx)(i.code,{children:"size"})}),"\n",(0,o.jsxs)(i.p,{children:["The file size of the document. ",(0,o.jsx)(i.em,{children:"On Android some DocumentProviders may not provide this information for a document."})]}),"\n",(0,o.jsxs)(i.h4,{id:"windows-only-content",children:["[Windows only] ",(0,o.jsx)(i.code,{children:"content"})]}),"\n",(0,o.jsxs)(i.p,{children:["The base64 encoded content of the picked file if the option ",(0,o.jsx)(i.code,{children:"readContent"})," was set to ",(0,o.jsx)(i.code,{children:"true"}),"."]}),"\n",(0,o.jsx)(i.h2,{id:"types",children:(0,o.jsx)(i.code,{children:"types.*"})}),"\n",(0,o.jsxs)(i.p,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.*"})," provides a few common types for use as ",(0,o.jsx)(i.code,{children:"type"})," values, these types will use the correct format for each platform (MIME types on Android, UTIs on iOS)."]}),"\n",(0,o.jsx)(i.p,{children:"If you need to provide your own file type filtering:"}),"\n",(0,o.jsxs)(i.p,{children:["For Android, see ",(0,o.jsx)(i.a,{href:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types",children:"common MIME types"}),"."]}),"\n",(0,o.jsxs)(i.p,{children:["For iOS ",(0,o.jsx)(i.a,{href:"https://developer.apple.com/documentation/uniformtypeidentifiers/system-declared_uniform_type_identifiers?language=objc",children:"Uniform Type Identifiers"}),"."]}),"\n",(0,o.jsx)(i.p,{children:"Also, searching Google usually helps."}),"\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.allFiles"}),": All document types, on Android this is ",(0,o.jsx)(i.code,{children:"*/*"}),", on iOS is ",(0,o.jsx)(i.code,{children:"public.item"})]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.images"}),": All image types"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.plainText"}),": Plain text files"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.audio"}),": All audio types"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.pdf"}),": PDF documents"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.zip"}),": Zip files"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.csv"}),": Csv files"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.doc"}),": doc files"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.docx"}),": docx files"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.ppt"}),": ppt files"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.pptx"}),": pptx files"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.xls"}),": xls files"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.xlsx"}),": xlsx files"]}),"\n"]}),"\n",(0,o.jsx)(i.h4,{id:"iscancelerr",children:(0,o.jsx)(i.code,{children:"isCancel(err)"})}),"\n",(0,o.jsxs)(i.p,{children:["If the user cancels the document picker without choosing a file (by pressing the system back button on Android or the Cancel button on iOS), the Promise will be rejected with a cancellation error. You can check for this error using ",(0,o.jsx)(i.code,{children:"DocumentPicker.isCancel(err)"})," allowing you to ignore it and cleanup any parts of your interface that may not be needed anymore."]}),"\n",(0,o.jsx)(i.h4,{id:"isinprogresserr",children:(0,o.jsx)(i.code,{children:"isInProgress(err)"})}),"\n",(0,o.jsxs)(i.p,{children:["If the user somehow manages to open multiple file pickers (e.g. due the app being unresponsive), then only the picked result from the last opened picker will be considered and the promises from previous opened pickers will be rejected with an error that you can check using ",(0,o.jsx)(i.code,{children:"DocumentPicker.isInProgress()"}),"."]}),"\n",(0,o.jsx)(i.p,{children:"This behavior might change in future to allow opening only a single picker at a time. The internal logic is currently implemented only on iOS."}),"\n",(0,o.jsxs)(i.h4,{id:"ios-only-releasesecureaccessuris-arraystring",children:["[iOS only] ",(0,o.jsx)(i.code,{children:"releaseSecureAccess(uris: Array)"})]}),"\n",(0,o.jsxs)(i.p,{children:["If ",(0,o.jsx)(i.code,{children:"mode"})," is set to ",(0,o.jsx)(i.code,{children:"open"}),", iOS is giving you secure access to a file located outside from your sandbox.\nIn that case Apple is asking you to release the access as soon as you finish using the resource."]}),"\n",(0,o.jsx)(i.h2,{id:"example",children:"Example"}),"\n",(0,o.jsxs)(i.p,{children:["See the example app in ",(0,o.jsx)(i.code,{children:"example"})," folder."]}),"\n",(0,o.jsx)(i.h2,{id:"how-to-upload-picked-files",children:"How to upload picked files?"}),"\n",(0,o.jsxs)(i.p,{children:["Use blob support that is built into react native - ",(0,o.jsx)(i.a,{href:"https://github.com/rnmods/react-native-document-picker/issues/70#issuecomment-384335402",children:"see comment"}),".\nIf you need to track upload progress, use ",(0,o.jsx)(i.code,{children:"XMLHttpRequest"})," ",(0,o.jsx)(i.a,{href:"https://gist.github.com/Tamal/9231005f0c62e1a3f23f60dc2f46ae35",children:"see here"})]}),"\n",(0,o.jsxs)(i.p,{children:["Alternatively, use ",(0,o.jsx)(i.a,{href:"https://github.com/johanneslumpe/react-native-fs",children:"https://github.com/johanneslumpe/react-native-fs"})]})]})}function h(e={}){const{wrapper:i}={...(0,s.R)(),...e.components};return i?(0,o.jsx)(i,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},8453:(e,i,n)=>{n.d(i,{R:()=>r,x:()=>l});var o=n(6540);const s={},c=o.createContext(s);function r(e){const i=o.useContext(c);return o.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function l(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(c.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ebd183cd.91ddb7c0.js b/assets/js/ebd183cd.91ddb7c0.js new file mode 100644 index 0000000..b9c5fd1 --- /dev/null +++ b/assets/js/ebd183cd.91ddb7c0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[961],{3816:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>t,contentTitle:()=>r,default:()=>h,frontMatter:()=>c,metadata:()=>l,toc:()=>d});var o=n(4848),s=n(8453);const c={},r="Document picker",l={id:"public/document-picker",title:"Document picker",description:"react-native-document-picker is a React Native wrapper for:",source:"@site/docs/public/document-picker.md",sourceDirName:"public",slug:"/public/document-picker",permalink:"/docs/public/document-picker",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"guidesSidebar",previous:{title:"Installation & Setup",permalink:"/docs/install"},next:{title:"Introduction",permalink:"/docs/sponsor-only/intro"}},t={},d=[{value:"Maintenance status",id:"maintenance-status",level:3},{value:"API",id:"api",level:2},{value:"pickSingle(options) / pick(options)",id:"picksingleoptions--pickoptions",level:3},{value:"pickDirectory()",id:"pickdirectory",level:3},{value:"Options",id:"options",level:2},{value:"allowMultiSelection:boolean",id:"allowmultiselectionboolean",level:4},{value:"type:string|Array<string>",id:"typestringarraystring",level:4},{value:"[iOS and Android only] copyTo:"cachesDirectory" | "documentDirectory"",id:"ios-and-android-only-copytocachesdirectory--documentdirectory",level:4},{value:"[iOS only] presentationStyle:'fullScreen' | 'pageSheet' | 'formSheet' | 'overFullScreen'",id:"ios-only-presentationstylefullscreen--pagesheet--formsheet--overfullscreen",level:4},{value:"[iOS only] transitionStyle:'coverVertical' | 'flipHorizontal' | 'crossDissolve' | 'partialCurl'",id:"ios-only-transitionstylecoververtical--fliphorizontal--crossdissolve--partialcurl",level:4},{value:"[iOS only] mode:"import" | "open"",id:"ios-only-modeimport--open",level:4},{value:"[Windows only] readContent:boolean",id:"windows-only-readcontentboolean",level:4},{value:"Result",id:"result",level:2},{value:"uri",id:"uri",level:4},{value:"fileCopyUri",id:"filecopyuri",level:4},{value:"type",id:"type",level:4},{value:"name",id:"name",level:4},{value:"size",id:"size",level:4},{value:"[Windows only] content",id:"windows-only-content",level:4},{value:"types.*",id:"types",level:2},{value:"isCancel(err)",id:"iscancelerr",level:4},{value:"isInProgress(err)",id:"isinprogresserr",level:4},{value:"[iOS only] releaseSecureAccess(uris: Array<string>)",id:"ios-only-releasesecureaccessuris-arraystring",level:4},{value:"Example",id:"example",level:2},{value:"How to upload picked files?",id:"how-to-upload-picked-files",level:2}];function a(e){const i={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(i.h1,{id:"document-picker",children:"Document picker"}),"\n",(0,o.jsxs)(i.p,{children:[(0,o.jsx)(i.code,{children:"react-native-document-picker"})," is a React Native wrapper for:"]}),"\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsxs)(i.li,{children:["Apple's ",(0,o.jsx)(i.code,{children:"UIDocumentPickerViewController"})]}),"\n",(0,o.jsxs)(i.li,{children:["Android's ",(0,o.jsx)(i.code,{children:"Intent.ACTION_GET_CONTENT"})]}),"\n",(0,o.jsxs)(i.li,{children:["Windows ",(0,o.jsx)(i.code,{children:"Windows.Storage.Pickers"})]}),"\n"]}),"\n",(0,o.jsx)(i.h3,{id:"maintenance-status",children:"Maintenance status"}),"\n",(0,o.jsxs)(i.p,{children:["Currently, the maintainer is focusing on the ",(0,o.jsx)(i.a,{href:"/docs/sponsor-only/intro",children:"sponsor-only version"})," of the library - see ",(0,o.jsx)(i.a,{href:"/docs/sponsor-only/roadmap-and-changelog",children:"roadmap"}),". The public version will receive security / critical bug fixes from the maintainer but major new feature development is not planned at the moment. I expect bugfixes from the sponsor-only version to make their way into the public package as well."]}),"\n",(0,o.jsx)(i.h2,{id:"api",children:"API"}),"\n",(0,o.jsxs)(i.h3,{id:"picksingleoptions--pickoptions",children:[(0,o.jsx)(i.code,{children:"pickSingle(options)"})," / ",(0,o.jsx)(i.code,{children:"pick(options)"})]}),"\n",(0,o.jsxs)(i.p,{children:["Use ",(0,o.jsx)(i.code,{children:"pickSingle"})," or ",(0,o.jsx)(i.code,{children:"pick"})," to open a document picker for the user to select file(s)."]}),"\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsxs)(i.li,{children:["\n",(0,o.jsxs)(i.p,{children:["with ",(0,o.jsx)(i.code,{children:"pick"}),", you can use ",(0,o.jsx)(i.code,{children:"allowMultiSelection"})," param to control whether user can select multiple files (",(0,o.jsx)(i.code,{children:"false"})," by default). Returns a ",(0,o.jsx)(i.code,{children:"Promise>"})]}),"\n"]}),"\n",(0,o.jsxs)(i.li,{children:["\n",(0,o.jsxs)(i.p,{children:[(0,o.jsx)(i.code,{children:"pickSingle"}),' is "sugar function" on top of ',(0,o.jsx)(i.code,{children:"pick"})," and only allows a single selection returns ",(0,o.jsx)(i.code,{children:"Promise"})]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(i.h3,{id:"pickdirectory",children:(0,o.jsx)(i.code,{children:"pickDirectory()"})}),"\n",(0,o.jsxs)(i.p,{children:["Open a system directory picker. Returns a promise that resolves to (",(0,o.jsx)(i.code,{children:"{ uri: string }"}),") of the directory selected by user."]}),"\n",(0,o.jsx)(i.h2,{id:"options",children:"Options"}),"\n",(0,o.jsx)(i.p,{children:"All the options are optional"}),"\n",(0,o.jsxs)(i.h4,{id:"allowmultiselectionboolean",children:[(0,o.jsx)(i.code,{children:"allowMultiSelection"}),":",(0,o.jsx)(i.code,{children:"boolean"})]}),"\n",(0,o.jsxs)(i.p,{children:["Whether selecting multiple files is allowed. For ",(0,o.jsx)(i.code,{children:"pick"}),", this is ",(0,o.jsx)(i.code,{children:"false"})," by default. ",(0,o.jsx)(i.code,{children:"allowMultiSelection"})," is ",(0,o.jsx)(i.code,{children:"false"})," for ",(0,o.jsx)(i.code,{children:"pickSingle"})," and cannot be overridden."]}),"\n",(0,o.jsxs)(i.h4,{id:"typestringarraystring",children:[(0,o.jsx)(i.code,{children:"type"}),":",(0,o.jsx)(i.code,{children:"string|Array"})]}),"\n",(0,o.jsx)(i.p,{children:"The type or types of documents to allow selection of. An array of strings or single string."}),"\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsxs)(i.li,{children:["On Android, these are MIME types such as ",(0,o.jsx)(i.code,{children:"text/plain"})," or partial MIME types such as ",(0,o.jsx)(i.code,{children:"image/*"}),". See ",(0,o.jsx)(i.a,{href:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types",children:"common MIME types"}),"."]}),"\n",(0,o.jsxs)(i.li,{children:["On iOS, these must be Apple ",(0,o.jsx)(i.a,{href:"https://developer.apple.com/documentation/uniformtypeidentifiers/system-declared_uniform_type_identifiers?language=objc",children:"Uniform Type Identifiers"})]}),"\n",(0,o.jsxs)(i.li,{children:["If ",(0,o.jsx)(i.code,{children:"type"})," is omitted it will be treated as ",(0,o.jsx)(i.code,{children:"*/*"})," or ",(0,o.jsx)(i.code,{children:"public.item"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(i.h4,{id:"ios-and-android-only-copytocachesdirectory--documentdirectory",children:["[iOS and Android only] ",(0,o.jsx)(i.code,{children:"copyTo"}),":",(0,o.jsx)(i.code,{children:'"cachesDirectory" | "documentDirectory"'})]}),"\n",(0,o.jsxs)(i.p,{children:["If specified, the picked file is copied to ",(0,o.jsx)(i.code,{children:"NSCachesDirectory"})," / ",(0,o.jsx)(i.code,{children:"NSDocumentDirectory"})," (iOS) or ",(0,o.jsx)(i.code,{children:"getCacheDir"})," / ",(0,o.jsx)(i.code,{children:"getFilesDir"})," (Android). The uri of the copy will be available in result's ",(0,o.jsx)(i.code,{children:"fileCopyUri"}),". If copying the file fails (e.g. due to lack of free space), ",(0,o.jsx)(i.code,{children:"fileCopyUri"})," will be ",(0,o.jsx)(i.code,{children:"null"}),", and more details about the error will be available in ",(0,o.jsx)(i.code,{children:"copyError"})," field in the result."]}),"\n",(0,o.jsxs)(i.p,{children:["This should help if you need to work with the file(s) later on, because by default, ",(0,o.jsx)(i.a,{href:"https://developer.apple.com/documentation/uikit/uidocumentpickerdelegate/2902364-documentpicker",children:"the picked documents are temporary files. They remain available only until your application terminates"}),". This may impact performance for large files, so keep this in mind if you expect users to pick particularly large files and your app does not need immediate read access."]}),"\n",(0,o.jsx)(i.p,{children:"On Android, this can be used to obtain local, on-device copy of the file (e.g. if user picks a document from Google Drive, this will download it locally to the phone)."}),"\n",(0,o.jsxs)(i.h4,{id:"ios-only-presentationstylefullscreen--pagesheet--formsheet--overfullscreen",children:["[iOS only] ",(0,o.jsx)(i.code,{children:"presentationStyle"}),":",(0,o.jsx)(i.code,{children:"'fullScreen' | 'pageSheet' | 'formSheet' | 'overFullScreen'"})]}),"\n",(0,o.jsxs)(i.p,{children:["Controls how the picker is presented, e.g. on an iPad you may want to present it fullscreen. Defaults to ",(0,o.jsx)(i.code,{children:"pageSheet"}),"."]}),"\n",(0,o.jsxs)(i.h4,{id:"ios-only-transitionstylecoververtical--fliphorizontal--crossdissolve--partialcurl",children:["[iOS only] ",(0,o.jsx)(i.code,{children:"transitionStyle"}),":",(0,o.jsx)(i.code,{children:"'coverVertical' | 'flipHorizontal' | 'crossDissolve' | 'partialCurl'"})]}),"\n",(0,o.jsxs)(i.p,{children:["Configure the transition style of the picker. Defaults to ",(0,o.jsx)(i.code,{children:"coverVertical"}),", when the picker is presented, its view slides up from the bottom of the screen."]}),"\n",(0,o.jsxs)(i.h4,{id:"ios-only-modeimport--open",children:["[iOS only] ",(0,o.jsx)(i.code,{children:"mode"}),":",(0,o.jsx)(i.code,{children:'"import" | "open"'})]}),"\n",(0,o.jsxs)(i.p,{children:["Defaults to ",(0,o.jsx)(i.code,{children:"import"}),". If ",(0,o.jsx)(i.code,{children:"mode"})," is set to ",(0,o.jsx)(i.code,{children:"import"})," the document picker imports the file from outside to inside the sandbox, otherwise if ",(0,o.jsx)(i.code,{children:"mode"})," is set to ",(0,o.jsx)(i.code,{children:"open"})," the document picker opens the file in-place."]}),"\n",(0,o.jsxs)(i.h4,{id:"windows-only-readcontentboolean",children:["[Windows only] ",(0,o.jsx)(i.code,{children:"readContent"}),":",(0,o.jsx)(i.code,{children:"boolean"})]}),"\n",(0,o.jsxs)(i.p,{children:["Defaults to ",(0,o.jsx)(i.code,{children:"false"}),". If ",(0,o.jsx)(i.code,{children:"readContent"})," is set to true the content of the picked file/files will be read and supplied in the result object."]}),"\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsxs)(i.li,{children:["\n",(0,o.jsx)(i.p,{children:"Be aware that this can introduce a huge performance hit in case of big files. (The files are read completely and into the memory and encoded to base64 afterwards to add them to the result object)"}),"\n"]}),"\n",(0,o.jsxs)(i.li,{children:["\n",(0,o.jsx)(i.p,{children:"However, reading the file directly from within the Thread which managed the picker can be necessary on Windows: Windows Apps can only read the Downloads folder and their own app folder by default and If a file is outside of these locations it cannot be acessed directly. However if the user picks the file through a file picker permissions to that file are granted implicitly."}),"\n",(0,o.jsx)(i.pre,{children:(0,o.jsx)(i.code,{children:"In addition to the default locations, an app can access additional files and folders by declaring capabilities in the app manifest (see App capability declarations), or by calling a file picker to let the user pick files and folders for the app to access (see Open files and folders with a picker).\n"})}),"\n",(0,o.jsx)(i.p,{children:(0,o.jsx)(i.a,{href:"https://docs.microsoft.com/en-us/windows/uwp/files/file-access-permissions",children:"https://docs.microsoft.com/en-us/windows/uwp/files/file-access-permissions"})}),"\n",(0,o.jsx)(i.p,{children:"Unfortunately that permission is not granted to the whole app, but only the Thread which handled the filepicker. Therefore, it can be useful to read the file directly."}),"\n"]}),"\n",(0,o.jsxs)(i.li,{children:["\n",(0,o.jsxs)(i.p,{children:["You can use ",(0,o.jsx)(i.code,{children:"react-native-fs"})," on Android and IOS to read the picked file."]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(i.h2,{id:"result",children:"Result"}),"\n",(0,o.jsxs)(i.p,{children:["The ",(0,o.jsx)(i.code,{children:"pick"})," Promise resolves to an array of objects with the following keys."]}),"\n",(0,o.jsx)(i.h4,{id:"uri",children:(0,o.jsx)(i.code,{children:"uri"})}),"\n",(0,o.jsxs)(i.p,{children:["The URI representing the document picked by the user. ",(0,o.jsxs)(i.em,{children:["On iOS this will be a ",(0,o.jsx)(i.code,{children:"file://"})," URI for a temporary file in your app's container if ",(0,o.jsx)(i.code,{children:"mode"})," is not specified or set at ",(0,o.jsx)(i.code,{children:"import"})," otherwise it will be the original ",(0,o.jsx)(i.code,{children:"file://"})," URI. On Android this will be a ",(0,o.jsx)(i.code,{children:"content://"})," URI for a document provided by a DocumentProvider that must be accessed with a ContentResolver."]})]}),"\n",(0,o.jsx)(i.h4,{id:"filecopyuri",children:(0,o.jsx)(i.code,{children:"fileCopyUri"})}),"\n",(0,o.jsxs)(i.p,{children:["If ",(0,o.jsx)(i.code,{children:"copyTo"})," option is specified, this will point to a local copy of picked file. Otherwise, this is ",(0,o.jsx)(i.code,{children:"null"}),"."]}),"\n",(0,o.jsx)(i.h4,{id:"type",children:(0,o.jsx)(i.code,{children:"type"})}),"\n",(0,o.jsxs)(i.p,{children:["The MIME type of the file. ",(0,o.jsx)(i.em,{children:'On Android some DocumentProviders may not provide MIME types for their documents. On iOS this MIME type is based on the best MIME type for the file extension according to Apple\'s internal "Uniform Type Identifiers" database.'})]}),"\n",(0,o.jsx)(i.h4,{id:"name",children:(0,o.jsx)(i.code,{children:"name"})}),"\n",(0,o.jsxs)(i.p,{children:["The display name of the file. ",(0,o.jsx)(i.em,{children:"This is normally the filename of the file, but Android does not guarantee that this will be a filename from all DocumentProviders."})]}),"\n",(0,o.jsx)(i.h4,{id:"size",children:(0,o.jsx)(i.code,{children:"size"})}),"\n",(0,o.jsxs)(i.p,{children:["The file size of the document. ",(0,o.jsx)(i.em,{children:"On Android some DocumentProviders may not provide this information for a document."})]}),"\n",(0,o.jsxs)(i.h4,{id:"windows-only-content",children:["[Windows only] ",(0,o.jsx)(i.code,{children:"content"})]}),"\n",(0,o.jsxs)(i.p,{children:["The base64 encoded content of the picked file if the option ",(0,o.jsx)(i.code,{children:"readContent"})," was set to ",(0,o.jsx)(i.code,{children:"true"}),"."]}),"\n",(0,o.jsx)(i.h2,{id:"types",children:(0,o.jsx)(i.code,{children:"types.*"})}),"\n",(0,o.jsxs)(i.p,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.*"})," provides a few common types for use as ",(0,o.jsx)(i.code,{children:"type"})," values, these types will use the correct format for each platform (MIME types on Android, UTIs on iOS)."]}),"\n",(0,o.jsx)(i.p,{children:"If you need to provide your own file type filtering:"}),"\n",(0,o.jsxs)(i.p,{children:["For Android, see ",(0,o.jsx)(i.a,{href:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types",children:"common MIME types"}),"."]}),"\n",(0,o.jsxs)(i.p,{children:["For iOS ",(0,o.jsx)(i.a,{href:"https://developer.apple.com/documentation/uniformtypeidentifiers/system-declared_uniform_type_identifiers?language=objc",children:"Uniform Type Identifiers"}),"."]}),"\n",(0,o.jsx)(i.p,{children:"Also, searching Google usually helps."}),"\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.allFiles"}),": All document types, on Android this is ",(0,o.jsx)(i.code,{children:"*/*"}),", on iOS is ",(0,o.jsx)(i.code,{children:"public.item"})]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.images"}),": All image types"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.plainText"}),": Plain text files"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.audio"}),": All audio types"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.pdf"}),": PDF documents"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.zip"}),": Zip files"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.csv"}),": Csv files"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.doc"}),": doc files"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.docx"}),": docx files"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.ppt"}),": ppt files"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.pptx"}),": pptx files"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.xls"}),": xls files"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"DocumentPicker.types.xlsx"}),": xlsx files"]}),"\n"]}),"\n",(0,o.jsx)(i.h4,{id:"iscancelerr",children:(0,o.jsx)(i.code,{children:"isCancel(err)"})}),"\n",(0,o.jsxs)(i.p,{children:["If the user cancels the document picker without choosing a file (by pressing the system back button on Android or the Cancel button on iOS), the Promise will be rejected with a cancellation error. You can check for this error using ",(0,o.jsx)(i.code,{children:"DocumentPicker.isCancel(err)"})," allowing you to ignore it and cleanup any parts of your interface that may not be needed anymore."]}),"\n",(0,o.jsx)(i.h4,{id:"isinprogresserr",children:(0,o.jsx)(i.code,{children:"isInProgress(err)"})}),"\n",(0,o.jsxs)(i.p,{children:["If the user somehow manages to open multiple file pickers (e.g. due the app being unresponsive), then only the picked result from the last opened picker will be considered and the promises from previous opened pickers will be rejected with an error that you can check using ",(0,o.jsx)(i.code,{children:"DocumentPicker.isInProgress()"}),"."]}),"\n",(0,o.jsx)(i.p,{children:"This behavior might change in future to allow opening only a single picker at a time. The internal logic is currently implemented only on iOS."}),"\n",(0,o.jsxs)(i.h4,{id:"ios-only-releasesecureaccessuris-arraystring",children:["[iOS only] ",(0,o.jsx)(i.code,{children:"releaseSecureAccess(uris: Array)"})]}),"\n",(0,o.jsxs)(i.p,{children:["If ",(0,o.jsx)(i.code,{children:"mode"})," is set to ",(0,o.jsx)(i.code,{children:"open"}),", iOS is giving you secure access to a file located outside from your sandbox.\nIn that case Apple is asking you to release the access as soon as you finish using the resource."]}),"\n",(0,o.jsx)(i.h2,{id:"example",children:"Example"}),"\n",(0,o.jsxs)(i.p,{children:["See the example app in ",(0,o.jsx)(i.code,{children:"example"})," folder."]}),"\n",(0,o.jsx)(i.h2,{id:"how-to-upload-picked-files",children:"How to upload picked files?"}),"\n",(0,o.jsxs)(i.p,{children:["Use blob support that is built into react native - ",(0,o.jsx)(i.a,{href:"https://github.com/rnmods/react-native-document-picker/issues/70#issuecomment-384335402",children:"see comment"}),".\nIf you need to track upload progress, use ",(0,o.jsx)(i.code,{children:"XMLHttpRequest"})," ",(0,o.jsx)(i.a,{href:"https://gist.github.com/Tamal/9231005f0c62e1a3f23f60dc2f46ae35",children:"see here"})]}),"\n",(0,o.jsxs)(i.p,{children:["Alternatively, use ",(0,o.jsx)(i.a,{href:"https://github.com/johanneslumpe/react-native-fs",children:"https://github.com/johanneslumpe/react-native-fs"})]})]})}function h(e={}){const{wrapper:i}={...(0,s.R)(),...e.components};return i?(0,o.jsx)(i,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},8453:(e,i,n)=>{n.d(i,{R:()=>r,x:()=>l});var o=n(6540);const s={},c=o.createContext(s);function r(e){const i=o.useContext(c);return o.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function l(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(c.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.0e19c8eb.js b/assets/js/main.730e6bee.js similarity index 99% rename from assets/js/main.0e19c8eb.js rename to assets/js/main.730e6bee.js index 1bdebf9..8747fe0 100644 --- a/assets/js/main.0e19c8eb.js +++ b/assets/js/main.730e6bee.js @@ -1,2 +1,2 @@ -/*! For license information please see main.0e19c8eb.js.LICENSE.txt */ -(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[792],{8328:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});n(6540);var r=n(3259),o=n.n(r),a=n(4054);const i={"046e2194":[()=>Promise.all([n.e(869),n.e(568)]).then(n.bind(n,7607)),"@site/docs/install.mdx",7607],"14eb3368":[()=>Promise.all([n.e(869),n.e(969)]).then(n.bind(n,4136)),"@theme/DocCategoryGeneratedIndexPage",4136],17896441:[()=>Promise.all([n.e(869),n.e(794),n.e(401)]).then(n.bind(n,3761)),"@theme/DocItem",3761],"1df93b7f":[()=>Promise.all([n.e(869),n.e(583)]).then(n.bind(n,5579)),"@site/src/pages/index.tsx",5579],"1f391b9e":[()=>Promise.all([n.e(869),n.e(794),n.e(61)]).then(n.bind(n,7973)),"@theme/MDXPage",7973],"205321fa":[()=>n.e(285).then(n.bind(n,4947)),"@site/src/pages/example.md",4947],"25a44f33":[()=>n.e(279).then(n.bind(n,7490)),"@site/docs/sponsor-only/intro.md",7490],"2a98b8c8":[()=>n.e(844).then(n.t.bind(n,4061,19)),"/home/runner/work/sponsors-only/sponsors-only/docs/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",4061],"3ccf8207":[()=>n.e(35).then(n.bind(n,4049)),"@site/docs/doc-picker-api/index.md",4049],"4f380f9a":[()=>n.e(796).then(n.bind(n,9059)),"@site/docs/sponsor-only/license.md",9059],"5e95c892":[()=>n.e(647).then(n.bind(n,7121)),"@theme/DocsRoot",7121],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,4784)),"@generated/docusaurus.config",4784],"6163308a":[()=>n.e(809).then(n.bind(n,7345)),"@site/docs/doc-viewer-api/index.md",7345],"78a358ce":[()=>n.e(666).then(n.bind(n,4461)),"@site/docs/sponsor-only/picker/limiting-selectable-files.md",4461],"795fd6e1":[()=>n.e(658).then(n.bind(n,6722)),"@site/docs/sponsor-only/jest-mocks.md",6722],"797b41dc":[()=>n.e(286).then(n.bind(n,8469)),"@site/docs/sponsor-only/errors.md",8469],"7ec93d99":[()=>Promise.all([n.e(869),n.e(736)]).then(n.bind(n,225)),"@site/docs/sponsor-only/picker/open-mode.mdx",225],"8a883598":[()=>n.e(782).then(n.t.bind(n,4082,19)),"~docs/default/category-docs-guidessidebar-category-document-picker-f5b.json",4082],"930a80de":[()=>Promise.all([n.e(869),n.e(127)]).then(n.bind(n,2176)),"@site/docs/sponsor-only/viewer.mdx",2176],"935f2afb":[()=>n.e(581).then(n.t.bind(n,5610,19)),"~docs/default/version-current-metadata-prop-751.json",5610],"9639ef0a":[()=>n.e(826).then(n.bind(n,4339)),"@site/docs/sponsor-only/other-libs.md",4339],"99ff280a":[()=>Promise.all([n.e(869),n.e(974)]).then(n.bind(n,7957)),"@site/docs/sponsor-only/picker/directory-picker.mdx",7957],a7bd4aaa:[()=>n.e(98).then(n.bind(n,4532)),"@theme/DocVersionRoot",4532],a94703ab:[()=>Promise.all([n.e(869),n.e(48)]).then(n.bind(n,2559)),"@theme/DocRoot",2559],bea09abd:[()=>n.e(855).then(n.bind(n,8519)),"@site/src/pages/github-repo.md",8519],c7518c2f:[()=>n.e(463).then(n.t.bind(n,1966,19)),"/home/runner/work/sponsors-only/sponsors-only/docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",1966],cb404a92:[()=>n.e(548).then(n.bind(n,1620)),"@site/docs/sponsor-only/migration.md",1620],d76c8c88:[()=>Promise.all([n.e(869),n.e(318)]).then(n.bind(n,5908)),"@site/docs/sponsor-only/picker/import-mode.mdx",5908],e694986d:[()=>n.e(340).then(n.bind(n,1855)),"@site/docs/sponsor-only/roadmap-and-changelog.md",1855],ebd183cd:[()=>n.e(961).then(n.bind(n,3816)),"@site/docs/public/document-picker.md",3816],ef48bc6b:[()=>n.e(59).then(n.bind(n,8350)),"@site/docs/sponsor-only/picker/virtual-files.md",8350]};var l=n(4848);function s(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var c=n(6921),u=n(3102);function d(e,t){if("*"===e)return o()({loading:s,loader:()=>n.e(237).then(n.bind(n,2237)),modules:["@theme/NotFound"],webpack:()=>[2237],render(e,t){const n=e.default;return(0,l.jsx)(u.W,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=a[`${e}-${t}`],d={},p=[],f=[],m=(0,c.A)(r);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),o().Map({loading:s,loader:d,modules:p,webpack:()=>f,render(t,n){const o=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let i=o;const l=n.split(".");l.slice(0,-1).forEach((e=>{i=i[e]})),i[l[l.length-1]]=a}));const a=o.__comp;delete o.__comp;const i=o.__context;return delete o.__context,(0,l.jsx)(u.W,{value:i,children:(0,l.jsx)(a,{...o,...n})})}})}const p=[{path:"/example",component:d("/example","0c7"),exact:!0},{path:"/github-repo",component:d("/github-repo","4e2"),exact:!0},{path:"/docs",component:d("/docs","63f"),routes:[{path:"/docs",component:d("/docs","86a"),routes:[{path:"/docs",component:d("/docs","757"),routes:[{path:"/docs/category/document-picker",component:d("/docs/category/document-picker","101"),exact:!0,sidebar:"guidesSidebar"},{path:"/docs/doc-picker-api",component:d("/docs/doc-picker-api","a88"),exact:!0,sidebar:"docPickerApiSidebar"},{path:"/docs/doc-viewer-api",component:d("/docs/doc-viewer-api","caa"),exact:!0,sidebar:"docViewerApiSidebar"},{path:"/docs/install",component:d("/docs/install","6a6"),exact:!0,sidebar:"guidesSidebar"},{path:"/docs/public/document-picker",component:d("/docs/public/document-picker","6be"),exact:!0,sidebar:"guidesSidebar"},{path:"/docs/sponsor-only/errors",component:d("/docs/sponsor-only/errors","92e"),exact:!0,sidebar:"guidesSidebar"},{path:"/docs/sponsor-only/intro",component:d("/docs/sponsor-only/intro","2a0"),exact:!0,sidebar:"guidesSidebar"},{path:"/docs/sponsor-only/jest-mocks",component:d("/docs/sponsor-only/jest-mocks","3bd"),exact:!0,sidebar:"guidesSidebar"},{path:"/docs/sponsor-only/license",component:d("/docs/sponsor-only/license","2d6"),exact:!0,sidebar:"guidesSidebar"},{path:"/docs/sponsor-only/migration",component:d("/docs/sponsor-only/migration","fcf"),exact:!0,sidebar:"guidesSidebar"},{path:"/docs/sponsor-only/other-libs",component:d("/docs/sponsor-only/other-libs","713"),exact:!0,sidebar:"guidesSidebar"},{path:"/docs/sponsor-only/picker/directory-picker",component:d("/docs/sponsor-only/picker/directory-picker","6f5"),exact:!0,sidebar:"guidesSidebar"},{path:"/docs/sponsor-only/picker/import-mode",component:d("/docs/sponsor-only/picker/import-mode","fd2"),exact:!0,sidebar:"guidesSidebar"},{path:"/docs/sponsor-only/picker/limiting-selectable-files",component:d("/docs/sponsor-only/picker/limiting-selectable-files","53e"),exact:!0,sidebar:"guidesSidebar"},{path:"/docs/sponsor-only/picker/open-mode",component:d("/docs/sponsor-only/picker/open-mode","b61"),exact:!0,sidebar:"guidesSidebar"},{path:"/docs/sponsor-only/picker/virtual-files",component:d("/docs/sponsor-only/picker/virtual-files","5c7"),exact:!0,sidebar:"guidesSidebar"},{path:"/docs/sponsor-only/roadmap-and-changelog",component:d("/docs/sponsor-only/roadmap-and-changelog","2c3"),exact:!0,sidebar:"guidesSidebar"},{path:"/docs/sponsor-only/viewer",component:d("/docs/sponsor-only/viewer","f61"),exact:!0,sidebar:"guidesSidebar"}]}]}]},{path:"/",component:d("/","dbf"),exact:!0},{path:"*",component:d("*")}]},6125:(e,t,n)=>{"use strict";n.d(t,{o:()=>a,x:()=>i});var r=n(6540),o=n(4848);const a=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,o.jsx)(a.Provider,{value:n,children:t})}},8536:(e,t,n)=>{"use strict";var r=n(6540),o=n(5338),a=n(4625),i=n(545),l=n(8193);const s=[n(1911),n(119),n(6134),n(6294),n(1043)];var c=n(8328),u=n(6347),d=n(2831),p=n(4848);function f(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var m=n(5260),h=n(4586),g=n(6025),y=n(6342),b=n(1003),v=n(2131),w=n(4090),k=n(2967),x=n(440),S=n(1463);function E(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,h.A)(),r=(0,v.o)(),o=n[e].htmlLang,a=e=>e.replace("-","_");return(0,p.jsxs)(m.A,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:a(o)}),Object.values(n).filter((e=>o!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:a(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function C(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.A)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.A)(),{pathname:r}=(0,u.zy)();return e+(0,x.applyTrailingSlash)((0,g.A)(r),{trailingSlash:n,baseUrl:t})}(),o=t?`${n}${t}`:r;return(0,p.jsxs)(m.A,{children:[(0,p.jsx)("meta",{property:"og:url",content:o}),(0,p.jsx)("link",{rel:"canonical",href:o})]})}function A(){const{i18n:{currentLocale:e}}=(0,h.A)(),{metadata:t,image:n}=(0,y.p)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(m.A,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:w.w})]}),n&&(0,p.jsx)(b.be,{image:n}),(0,p.jsx)(C,{}),(0,p.jsx)(E,{}),(0,p.jsx)(S.A,{tag:k.Cy,locale:e}),(0,p.jsx)(m.A,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const _=new Map;function T(e){if(_.has(e.pathname))return{...e,pathname:_.get(e.pathname)};if((0,d.u)(c.A,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return _.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return _.set(e.pathname,t),{...e,pathname:t}}var N=n(6125),j=n(6988),R=n(205);function L(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>o.forEach((e=>e?.()))}const P=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,R.A)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,o=t.hash===n.hash,a=t.search===n.search;if(r&&o&&!a)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),L("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.u)(c.A,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class I extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.A.canUseDOM?L("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=L("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(P,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(u.qh,{location:t,render:()=>e})})}}const D=I,M="__docusaurus-base-url-issue-banner-container",F="__docusaurus-base-url-issue-banner",z="__docusaurus-base-url-issue-banner-suggestion-container";function B(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${M}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;o?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var Y=n(6921);const Z=new Set,J=new Set,X=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!X()&&!J.has(e)&&!Z.has(e))(e))return!1;Z.add(e);const t=(0,d.u)(c.A,e).flatMap((e=>{return t=e.route.path,Object.entries(Q).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,Y.A)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?K(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!X()&&!J.has(e))(e)&&(J.add(e),O(e))},te=Object.freeze(ee),ne=Boolean(!0);if(l.A.canUseDOM){window.docusaurus=te;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(i.vd,{children:(0,p.jsx)(a.Kd,{children:(0,p.jsx)(W,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},l=()=>{if(ne)r.startTransition((()=>{o.hydrateRoot(e,t,{onRecoverableError:n})}));else{const a=o.createRoot(e,{onRecoverableError:n});r.startTransition((()=>{a.render(t)}))}};O(window.location.pathname).then(l)}},6988:(e,t,n)=>{"use strict";n.d(t,{o:()=>d,l:()=>p});var r=n(6540),o=n(4784);const a=JSON.parse('{"docusaurus-lunr-search":{"default":{"fileNames":{"searchDoc":"search-doc-1710854369473.json","lunrIndex":"lunr-index-1710854369473.json"}}},"docusaurus-plugin-google-gtag":{"default":{"trackingID":["G-V1JZZG12TG"],"anonymizeIP":true,"id":"default"}},"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"install","docs":[{"id":"doc-picker-api/index","path":"/docs/doc-picker-api/","sidebar":"docPickerApiSidebar"},{"id":"doc-viewer-api/index","path":"/docs/doc-viewer-api/","sidebar":"docViewerApiSidebar"},{"id":"install","path":"/docs/install","sidebar":"guidesSidebar"},{"id":"public/document-picker","path":"/docs/public/document-picker","sidebar":"guidesSidebar"},{"id":"sponsor-only/errors","path":"/docs/sponsor-only/errors","sidebar":"guidesSidebar"},{"id":"sponsor-only/intro","path":"/docs/sponsor-only/intro","sidebar":"guidesSidebar"},{"id":"sponsor-only/jest-mocks","path":"/docs/sponsor-only/jest-mocks","sidebar":"guidesSidebar"},{"id":"sponsor-only/license","path":"/docs/sponsor-only/license","sidebar":"guidesSidebar"},{"id":"sponsor-only/migration","path":"/docs/sponsor-only/migration","sidebar":"guidesSidebar"},{"id":"sponsor-only/other-libs","path":"/docs/sponsor-only/other-libs","sidebar":"guidesSidebar"},{"id":"sponsor-only/picker/directory-picker","path":"/docs/sponsor-only/picker/directory-picker","sidebar":"guidesSidebar"},{"id":"sponsor-only/picker/import-mode","path":"/docs/sponsor-only/picker/import-mode","sidebar":"guidesSidebar"},{"id":"sponsor-only/picker/limiting-selectable-files","path":"/docs/sponsor-only/picker/limiting-selectable-files","sidebar":"guidesSidebar"},{"id":"sponsor-only/picker/open-mode","path":"/docs/sponsor-only/picker/open-mode","sidebar":"guidesSidebar"},{"id":"sponsor-only/picker/virtual-files","path":"/docs/sponsor-only/picker/virtual-files","sidebar":"guidesSidebar"},{"id":"sponsor-only/roadmap-and-changelog","path":"/docs/sponsor-only/roadmap-and-changelog","sidebar":"guidesSidebar"},{"id":"sponsor-only/viewer","path":"/docs/sponsor-only/viewer","sidebar":"guidesSidebar"},{"id":"/category/document-picker","path":"/docs/category/document-picker","sidebar":"guidesSidebar"}],"draftIds":[],"sidebars":{"guidesSidebar":{"link":{"path":"/docs/install","label":"Installation"}},"docPickerApiSidebar":{"link":{"path":"/docs/doc-picker-api/","label":"doc-picker-api/index"}},"docViewerApiSidebar":{"link":{"path":"/docs/doc-viewer-api/","label":"doc-viewer-api/index"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(2654);const s=JSON.parse('{"docusaurusVersion":"3.1.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.1.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.1.1"},"docusaurus-plugin-google-gtag":{"type":"package","name":"@docusaurus/plugin-google-gtag","version":"3.1.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.1.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.1.1"},"docusaurus-plugin-typedoc":{"type":"package","name":"docusaurus-plugin-typedoc","version":"0.22.0"},"docusaurus-lunr-search":{"type":"package","name":"docusaurus-lunr-search","version":"3.3.2"}}}');var c=n(4848);const u={siteConfig:o.default,siteMetadata:s,globalData:a,i18n:i,codeTranslations:l},d=r.createContext(u);function p(e){let{children:t}=e;return(0,c.jsx)(d.Provider,{value:u,children:t})}},7489:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var r=n(6540),o=n(8193),a=n(5260),i=n(440),l=n(7907),s=n(4848);function c(e){let{error:t,tryAgain:n}=e;return(0,s.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,s.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,s.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,s.jsx)(u,{error:t})]})}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,s.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function d(e){let{error:t,tryAgain:n}=e;return(0,s.jsxs)(f,{fallback:()=>(0,s.jsx)(c,{error:t,tryAgain:n}),children:[(0,s.jsx)(a.A,{children:(0,s.jsx)("title",{children:"Page Error"})}),(0,s.jsx)(l.A,{children:(0,s.jsx)(c,{error:t,tryAgain:n})})]})}const p=e=>(0,s.jsx)(d,{...e});class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){o.A.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??p)(e)}return e??null}}},8193:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,o={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5260:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(6540);var r=n(545),o=n(4848);function a(e){return(0,o.jsx)(r.mg,{...e})}},8774:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var r=n(6540),o=n(4625),a=n(440),i=n(4586),l=n(6654),s=n(8193),c=n(3427),u=n(6025),d=n(4848);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:h,"data-noBrokenLinkCheck":g,autoAddBaseUrl:y=!0,...b}=e;const{siteConfig:{trailingSlash:v,baseUrl:w}}=(0,i.A)(),{withBaseUrl:k}=(0,u.h)(),x=(0,c.A)(),S=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>S.current));const E=p||f;const C=(0,l.A)(E),A=E?.replace("pathname://","");let _=void 0!==A?(T=A,y&&(e=>e.startsWith("/"))(T)?k(T):T):void 0;var T;_&&C&&(_=(0,a.applyTrailingSlash)(_,{trailingSlash:v,baseUrl:w}));const N=(0,r.useRef)(!1),j=n?o.k2:o.N_,R=s.A.canUseIntersectionObserver,L=(0,r.useRef)(),P=()=>{N.current||null==_||(window.docusaurus.preload(_),N.current=!0)};(0,r.useEffect)((()=>(!R&&C&&null!=_&&window.docusaurus.prefetch(_),()=>{R&&L.current&&L.current.disconnect()})),[L,_,R,C]);const O=_?.startsWith("#")??!1,I=!b.target||"_self"===b.target,D=!_||!C||!I||O;return g||!O&&D||x.collectLink(_),b.id&&x.collectAnchor(b.id),D?(0,d.jsx)("a",{ref:S,href:_,...E&&!C&&{target:"_blank",rel:"noopener noreferrer"},...b}):(0,d.jsx)(j,{...b,onMouseEnter:P,onTouchStart:P,innerRef:e=>{S.current=e,R&&e&&C&&(L.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(L.current.unobserve(e),L.current.disconnect(),null!=_&&window.docusaurus.prefetch(_))}))})),L.current.observe(e))},to:_,...n&&{isActive:h,activeClassName:m}})}const f=r.forwardRef(p)},1312:(e,t,n)=>{"use strict";n.d(t,{A:()=>c,T:()=>s});var r=n(6540),o=n(4848);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(2654);function l(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function s(e,t){let{message:n,id:r}=e;return a(l({message:n,id:r}),t)}function c(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const i=l({message:t,id:n});return(0,o.jsx)(o.Fragment,{children:a(i,r)})}},7065:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});const r="default"},6654:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>o,z:()=>r})},6025:(e,t,n)=>{"use strict";n.d(t,{A:()=>l,h:()=>i});var r=n(6540),o=n(4586),a=n(6654);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,o.A)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:o=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,a.z)(n))return n;if(o)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},3427:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(6540);n(4848);const o=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),a=()=>(0,r.useContext)(o);function i(){return a()}},4586:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540),o=n(6988);function a(){return(0,r.useContext)(o.o)}},6588:(e,t,n)=>{"use strict";n.d(t,{P_:()=>i,kh:()=>a});var r=n(4586),o=n(7065);function a(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,r.A)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}function i(e,t,n){void 0===t&&(t=o.W),void 0===n&&(n={});const r=a(e),i=r?.[t];if(!i&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return i}},2303:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540),o=n(6125);function a(){return(0,r.useContext)(o.o)}},205:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540);const o=n(8193).A.canUseDOM?r.useLayoutEffect:r.useEffect},6921:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function o(e){const t={};return function e(n,o){Object.entries(n).forEach((n=>{let[a,i]=n;const l=o?`${o}.${a}`:a;r(i)?e(i,l):t[l]=i}))}(e),t}},3102:(e,t,n)=>{"use strict";n.d(t,{W:()=>i,o:()=>a});var r=n(6540),o=n(4848);const a=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(a),l=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,o.jsx)(a.Provider,{value:l,children:t})}},8295:(e,t,n)=>{"use strict";n.d(t,{zK:()=>f,vT:()=>u,Gy:()=>s,HW:()=>m,ht:()=>c,r7:()=>p,jh:()=>d});var r=n(6347),o=n(6588);const a=e=>e.versions.find((e=>e.isLast));function i(e,t){const n=function(e,t){const n=a(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),o=n?.docs.find((e=>!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:o,alternateDocVersions:o?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(o.id):{}}}const l={},s=()=>(0,o.kh)("docusaurus-plugin-content-docs")??l,c=e=>(0,o.P_)("docusaurus-plugin-content-docs",e,{failfast:!0});function u(e){void 0===e&&(e={});const t=s(),{pathname:n}=(0,r.zy)();return function(e,t,n){void 0===n&&(n={});const o=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.B6)(t,{path:n.path,exact:!1,strict:!1})})),a=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!a&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return a}(t,n,e)}function d(e){return c(e).versions}function p(e){const t=c(e);return a(t)}function f(e){const t=c(e),{pathname:n}=(0,r.zy)();return i(t,n)}function m(e){const t=c(e),{pathname:n}=(0,r.zy)();return function(e,t){const n=a(e);return{latestDocSuggestion:i(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},1911:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={onRouteDidUpdate(e){let{location:t,previousLocation:n}=e;!n||t.pathname===n.pathname&&t.search===n.search&&t.hash===n.hash||setTimeout((()=>{window.gtag("set","page_path",t.pathname+t.search+t.hash),window.gtag("event","page_view")}))}}},6294:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(5947),o=n.n(r);o().configure({showSpinner:!1});const a={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{o().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){o().done()}}},6134:(e,t,n)=>{"use strict";n.r(t);var r=n(1765),o=n(4784);!function(e){const{themeConfig:{prism:t}}=o.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(9700),n(8692)(`./prism-${e}`)})),delete globalThis.Prism}(r.My)},1107:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(6540);var r=n(4164),o=n(1312),a=n(6342),i=n(8774),l=n(3427);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var c=n(4848);function u(e){let{as:t,id:n,...u}=e;const d=(0,l.A)(),{navbar:{hideOnScroll:p}}=(0,a.p)();if("h1"===t||!n)return(0,c.jsx)(t,{...u,id:void 0});d.collectAnchor(n);const f=(0,o.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return(0,c.jsxs)(t,{...u,className:(0,r.A)("anchor",p?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,u.className),id:n,children:[u.children,(0,c.jsx)(i.A,{className:"hash-link",to:`#${n}`,"aria-label":f,title:f,children:"\u200b"})]})}},3186:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(6540);const r={iconExternalLink:"iconExternalLink_nPIU"};var o=n(4848);function a(e){let{width:t=13.5,height:n=13.5}=e;return(0,o.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,o.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},7907:(e,t,n)=>{"use strict";n.d(t,{A:()=>vt});var r=n(6540),o=n(4164),a=n(7489),i=n(1003),l=n(6347),s=n(1312),c=n(5062),u=n(4848);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,l.W6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,c.$)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,s.T)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function h(e){const t=e.children??m,{containerRef:n,onClick:r}=f();return(0,u.jsx)("div",{ref:n,role:"region","aria-label":m,children:(0,u.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var g=n(7559),y=n(4090);const b={skipToContent:"skipToContent_fXgn"};function v(){return(0,u.jsx)(h,{className:b.skipToContent})}var w=n(6342),k=n(5041);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:o=1.2,className:a,...i}=e;return(0,u.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,u.jsx)("g",{stroke:r,strokeWidth:o,children:(0,u.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function E(e){return(0,u.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,o.A)("clean-btn close",S.closeButton,e.className),children:(0,u.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const C={content:"content_knG7"};function A(e){const{announcementBar:t}=(0,w.p)(),{content:n}=t;return(0,u.jsx)("div",{...e,className:(0,o.A)(C.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const _={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function T(){const{announcementBar:e}=(0,w.p)(),{isActive:t,close:n}=(0,k.Mj)();if(!t)return null;const{backgroundColor:r,textColor:o,isCloseable:a}=e;return(0,u.jsxs)("div",{className:_.announcementBar,style:{backgroundColor:r,color:o},role:"banner",children:[a&&(0,u.jsx)("div",{className:_.announcementBarPlaceholder}),(0,u.jsx)(A,{className:_.announcementBarContent}),a&&(0,u.jsx)(E,{onClick:n,className:_.announcementBarClose})]})}var N=n(2069),j=n(3104);var R=n(9532),L=n(5600);const P=r.createContext(null);function O(e){let{children:t}=e;const n=function(){const e=(0,N.M)(),t=(0,L.YL)(),[n,o]=(0,r.useState)(!1),a=null!==t.component,i=(0,R.ZC)(a);return(0,r.useEffect)((()=>{a&&!i&&o(!0)}),[a,i]),(0,r.useEffect)((()=>{a?e.shown||o(!0):o(!1)}),[e.shown,a]),(0,r.useMemo)((()=>[n,o]),[n])}();return(0,u.jsx)(P.Provider,{value:n,children:t})}function I(e){if(e.component){const t=e.component;return(0,u.jsx)(t,{...e.props})}}function D(){const e=(0,r.useContext)(P);if(!e)throw new R.dV("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,o=(0,r.useCallback)((()=>n(!1)),[n]),a=(0,L.YL)();return(0,r.useMemo)((()=>({shown:t,hide:o,content:I(a)})),[o,a,t])}function M(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:a}=D();return(0,u.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,u.jsxs)("div",{className:(0,o.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":a}),children:[(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var F=n(5293),z=n(2303);function B(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function $(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:r,onChange:a}=e;const i=(0,z.A)(),l=(0,s.T)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,s.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,s.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,u.jsx)("div",{className:(0,o.A)(U.toggle,t),children:(0,u.jsxs)("button",{className:(0,o.A)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>a("dark"===r?"light":"dark"),disabled:!i,title:l,"aria-label":l,"aria-live":"polite",children:[(0,u.jsx)(B,{className:(0,o.A)(U.toggleIcon,U.lightToggleIcon)}),(0,u.jsx)($,{className:(0,o.A)(U.toggleIcon,U.darkToggleIcon)})]})})}const H=r.memo(q),G={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function V(e){let{className:t}=e;const n=(0,w.p)().navbar.style,r=(0,w.p)().colorMode.disableSwitch,{colorMode:o,setColorMode:a}=(0,F.G)();return r?null:(0,u.jsx)(H,{className:t,buttonClassName:"dark"===n?G.darkNavbarColorModeToggle:void 0,value:o,onChange:a})}var W=n(3465);function Q(){return(0,u.jsx)(W.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function K(){const e=(0,N.M)();return(0,u.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,u.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function Y(){return(0,u.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,u.jsx)(Q,{}),(0,u.jsx)(V,{className:"margin-right--md"}),(0,u.jsx)(K,{})]})}var Z=n(8774),J=n(6025),X=n(6654);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(3186);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:o,label:a,html:i,isDropdownLink:l,prependBaseUrlToHref:s,...c}=e;const d=(0,J.A)(r),p=(0,J.A)(t),f=(0,J.A)(o,{forcePrependBaseUrl:!0}),m=a&&o&&!(0,X.A)(o),h=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,u.jsxs)(u.Fragment,{children:[a,m&&(0,u.jsx)(te.A,{...l&&{width:12,height:12}})]})};return o?(0,u.jsx)(Z.A,{href:s?f:o,...c,...h}):(0,u.jsx)(Z.A,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},...c,...h})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const a=(0,u.jsx)(ne,{className:(0,o.A)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,u.jsx)("li",{children:a}):a}function oe(e){let{className:t,isDropdownItem:n,...r}=e;return(0,u.jsx)("li",{className:"menu__list-item",children:(0,u.jsx)(ne,{className:(0,o.A)("menu__link",t),...r})})}function ae(e){let{mobile:t=!1,position:n,...r}=e;const o=t?oe:re;return(0,u.jsx)(o,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(1422),le=n(9169),se=n(4586);const ce={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_S0Fm"};function ue(e,t){return e.some((e=>function(e,t){return!!(0,le.ys)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:a,onClick:i,...l}=e;const s=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{s.current&&!s.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[s]),(0,u.jsxs)("div",{ref:s,className:(0,o.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c}),children:[(0,u.jsx)(ne,{"aria-haspopup":"true","aria-expanded":c,role:"button",href:l.to?void 0:"#",className:(0,o.A)("navbar__link",a),...l,onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))},children:l.children??l.label}),(0,u.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(Re,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){let{items:t,className:n,position:a,onClick:i,...s}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,se.A)(),{pathname:t}=(0,l.zy)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),(0,u.jsxs)("li",{className:(0,o.A)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,u.jsx)(ne,{role:"button",className:(0,o.A)(ce.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...s,onClick:e=>{e.preventDefault(),f()},children:s.children??s.label}),(0,u.jsx)(ie.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(Re,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,u.jsx)(r,{...n})}var me=n(2131);function he(e){let{width:t=20,height:n=20,...r}=e;return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,u.jsx)("path",{fill:"currentColor",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"})})}const ge="iconLanguage_nlXk";function ye(e){var t,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t{if(!e.state?.highlightState||0===e.state.highlightState.wordToHighlight.length)return;a(e.state.highlightState);const{highlightState:n,...r}=e.state;t.replace({...e,state:r})}),[e.state?.highlightState,t,e]),(0,r.useEffect)((()=>{if(0===o.wordToHighlight.length)return;const e=document.getElementsByTagName("article")[0]??document.getElementsByTagName("main")[0];if(!e)return;const t=new(ke())(e),n={ignoreJoiners:!0};return t.mark(o.wordToHighlight,n),()=>t.unmark(n)}),[o,n]),null}const Se=e=>{const t=(0,r.useRef)(!1),o=(0,r.useRef)(null),[a,i]=(0,r.useState)(!1),s=(0,l.W6)(),{siteConfig:c={}}=(0,se.A)(),d=(c.plugins||[]).find((e=>Array.isArray(e)&&"string"==typeof e[0]&&e[0].includes("docusaurus-lunr-search"))),p=(0,z.A)(),{baseUrl:f}=c,m=d&&d[1]?.assetUrl||f,h=(0,ve.P_)("docusaurus-lunr-search"),g=()=>{t.current||(Promise.all([fetch(`${m}${h.fileNames.searchDoc}`).then((e=>e.json())),fetch(`${m}${h.fileNames.lunrIndex}`).then((e=>e.json())),Promise.all([n.e(591),n.e(577)]).then(n.bind(n,5765)),Promise.all([n.e(869),n.e(278)]).then(n.bind(n,9278))]).then((e=>{let[t,n,{default:r}]=e;const{searchDocs:o,options:a}=t;o&&0!==o.length&&(((e,t,n,r)=>{new n({searchDocs:e,searchIndex:t,baseUrl:f,inputSelector:"#search_input_react",handleSelected:(e,t,n)=>{const o=n.url||"/";document.createElement("a").href=o,e.setVal(""),t.target.blur();let a="";if(r.highlightResult)try{const e=(n.text||n.subcategory||n.title).match(new RegExp("\\w*","g"));if(e&&e.length>0){const t=document.createElement("div");t.innerHTML=e[0],a=t.textContent}}catch(i){console.log(i)}s.push(o,{highlightState:{wordToHighlight:a}})},maxHits:r.maxHits})})(o,n,r,a),i(!0))})),t.current=!0)},y=(0,r.useCallback)((t=>{o.current.contains(t.target)||o.current.focus(),e.handleSearchBarToggle&&e.handleSearchBarToggle(!e.isSearchBarExpanded)}),[e.isSearchBarExpanded]);let b;return p&&(g(),b=window.navigator.platform.startsWith("Mac")?"Search \u2318+K":"Search Ctrl+K"),(0,u.jsxs)("div",{className:"navbar__search",children:[(0,u.jsx)("span",{"aria-label":"expand searchbar",role:"button",className:be("search-icon",{"search-icon-hidden":e.isSearchBarExpanded}),onClick:y,onKeyDown:y,tabIndex:0}),(0,u.jsx)("input",{id:"search_input_react",type:"search",placeholder:a?b:"Loading...","aria-label":"Search",className:be("navbar__search-input",{"search-bar-expanded":e.isSearchBarExpanded},{"search-bar":!e.isSearchBarExpanded}),onClick:g,onMouseOver:g,onFocus:y,onBlur:y,ref:o,disabled:!a}),(0,u.jsx)(xe,{})]},"search-box")},Ee={navbarSearchContainer:"navbarSearchContainer_Bca1"};function Ce(e){let{children:t,className:n}=e;return(0,u.jsx)("div",{className:(0,o.A)(n,Ee.navbarSearchContainer),children:t})}var Ae=n(8295),_e=n(4142);var Te=n(5597);const Ne=e=>e.docs.find((t=>t.id===e.mainDocId));const je={default:ae,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:o="",...a}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,se.A)(),p=(0,me.o)(),{search:f,hash:m}=(0,l.zy)(),h=[...n,...c.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}${o}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],g=t?(0,s.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,u.jsx)(fe,{...a,mobile:t,label:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(he,{className:ge}),g]}),items:h})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,u.jsx)(Ce,{className:n,children:(0,u.jsx)(Se,{})})},dropdown:fe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:a=!1}=e;const i=a?"li":"div";return(0,u.jsx)(i,{className:(0,o.A)({navbar__item:!r&&!a,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,Ae.zK)(r),i=(0,_e.QB)(t,r),l=a?.path===i?.path;return null===i||i.unlisted&&!l?null:(0,u.jsx)(ae,{exact:!0,...o,isActive:()=>l||!!a?.sidebar&&a.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,Ae.zK)(r),i=(0,_e.fW)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,u.jsx)(ae,{exact:!0,...o,isActive:()=>a?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...o}=e;const a=(0,_e.Vd)(r)[0],i=t??a.label,l=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(a).path;return(0,u.jsx)(ae,{...o,label:i,to:l})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:o,dropdownItemsAfter:a,...i}=e;const{search:c,hash:d}=(0,l.zy)(),p=(0,Ae.zK)(n),f=(0,Ae.jh)(n),{savePreferredVersionName:m}=(0,Te.g1)(n),h=[...o,...f.map((e=>{const t=p.alternateDocVersions[e.name]??Ne(e);return{label:e.label,to:`${t.path}${c}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>m(e.name)}})),...a],g=(0,_e.Vd)(n)[0],y=t&&h.length>1?(0,s.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):g.label,b=t&&h.length>1?void 0:Ne(g).path;return h.length<=1?(0,u.jsx)(ae,{...i,mobile:t,label:y,to:b,isActive:r?()=>!1:void 0}):(0,u.jsx)(fe,{...i,mobile:t,label:y,to:b,items:h,isActive:r?()=>!1:void 0})}};function Re(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=je[r];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,u.jsx)(o,{...n})}function Le(){const e=(0,N.M)(),t=(0,w.p)().navbar.items;return(0,u.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(Re,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Pe(e){return(0,u.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,u.jsx)(s.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Oe(){const e=0===(0,w.p)().navbar.items.length,t=D();return(0,u.jsxs)(u.Fragment,{children:[!e&&(0,u.jsx)(Pe,{onClick:()=>t.hide()}),t.content]})}function Ie(){const e=(0,N.M)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,u.jsx)(M,{header:(0,u.jsx)(Y,{}),primaryMenu:(0,u.jsx)(Le,{}),secondaryMenu:(0,u.jsx)(Oe,{})}):null}const De={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Me(e){return(0,u.jsx)("div",{role:"presentation",...e,className:(0,o.A)("navbar-sidebar__backdrop",e.className)})}function Fe(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:a}}=(0,w.p)(),i=(0,N.M)(),{navbarRef:l,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),o=(0,r.useRef)(!1),a=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,j.Mq)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+c{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return o.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,u.jsxs)("nav",{ref:l,"aria-label":(0,s.T)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.A)("navbar","navbar--fixed-top",n&&[De.navbarHideable,!d&&De.navbarHidden],{"navbar--dark":"dark"===a,"navbar--primary":"primary"===a,"navbar-sidebar--show":i.shown}),children:[t,(0,u.jsx)(Me,{onClick:i.toggle}),(0,u.jsx)(Ie,{})]})}var ze=n(440);const Be={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};function $e(e){return(0,u.jsx)("button",{type:"button",...e,children:(0,u.jsx)(s.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function Ue(e){let{error:t}=e;const n=(0,ze.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,u.jsx)("p",{className:Be.errorBoundaryError,children:n})}class qe extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const He="right";function Ge(e){let{width:t=30,height:n=30,className:r,...o}=e;return(0,u.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...o,children:(0,u.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function Ve(){const{toggle:e,shown:t}=(0,N.M)();return(0,u.jsx)("button",{onClick:e,"aria-label":(0,s.T)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,u.jsx)(Ge,{})})}const We={colorModeToggle:"colorModeToggle_DEke"};function Qe(e){let{items:t}=e;return(0,u.jsx)(u.Fragment,{children:t.map(((e,t)=>(0,u.jsx)(qe,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,u.jsx)(Re,{...e})},t)))})}function Ke(e){let{left:t,right:n}=e;return(0,u.jsxs)("div",{className:"navbar__inner",children:[(0,u.jsx)("div",{className:"navbar__items",children:t}),(0,u.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function Ye(){const e=(0,N.M)(),t=(0,w.p)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??He)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return(0,u.jsx)(Ke,{left:(0,u.jsxs)(u.Fragment,{children:[!e.disabled&&(0,u.jsx)(Ve,{}),(0,u.jsx)(Q,{}),(0,u.jsx)(Qe,{items:n})]}),right:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Qe,{items:r}),(0,u.jsx)(V,{className:We.colorModeToggle}),!o&&(0,u.jsx)(Ce,{children:(0,u.jsx)(Se,{})})]})})}function Ze(){return(0,u.jsx)(Fe,{children:(0,u.jsx)(Ye,{})})}function Je(e){let{item:t}=e;const{to:n,href:r,label:o,prependBaseUrlToHref:a,...i}=t,l=(0,J.A)(n),s=(0,J.A)(r,{forcePrependBaseUrl:!0});return(0,u.jsxs)(Z.A,{className:"footer__link-item",...r?{href:a?s:r}:{to:l},...i,children:[o,r&&!(0,X.A)(r)&&(0,u.jsx)(te.A,{})]})}function Xe(e){let{item:t}=e;return t.html?(0,u.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)("li",{className:"footer__item",children:(0,u.jsx)(Je,{item:t})},t.href??t.to)}function et(e){let{column:t}=e;return(0,u.jsxs)("div",{className:"col footer__col",children:[(0,u.jsx)("div",{className:"footer__title",children:t.title}),(0,u.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,u.jsx)(Xe,{item:e},t)))})]})}function tt(e){let{columns:t}=e;return(0,u.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,u.jsx)(et,{column:e},t)))})}function nt(){return(0,u.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function rt(e){let{item:t}=e;return t.html?(0,u.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)(Je,{item:t})}function ot(e){let{links:t}=e;return(0,u.jsx)("div",{className:"footer__links text--center",children:(0,u.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,u.jsxs)(r.Fragment,{children:[(0,u.jsx)(rt,{item:e}),t.length!==n+1&&(0,u.jsx)(nt,{})]},n)))})})}function at(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,u.jsx)(tt,{columns:t}):(0,u.jsx)(ot,{links:t})}var it=n(1122);const lt={footerLogoLink:"footerLogoLink_BH7S"};function st(e){let{logo:t}=e;const{withBaseUrl:n}=(0,J.h)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,u.jsx)(it.A,{className:(0,o.A)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function ct(e){let{logo:t}=e;return t.href?(0,u.jsx)(Z.A,{href:t.href,className:lt.footerLogoLink,target:t.target,children:(0,u.jsx)(st,{logo:t})}):(0,u.jsx)(st,{logo:t})}function ut(e){let{copyright:t}=e;return(0,u.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function dt(e){let{style:t,links:n,logo:r,copyright:a}=e;return(0,u.jsx)("footer",{className:(0,o.A)("footer",{"footer--dark":"dark"===t}),children:(0,u.jsxs)("div",{className:"container container-fluid",children:[n,(r||a)&&(0,u.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,u.jsx)("div",{className:"margin-bottom--sm",children:r}),a]})]})})}function pt(){const{footer:e}=(0,w.p)();if(!e)return null;const{copyright:t,links:n,logo:r,style:o}=e;return(0,u.jsx)(dt,{style:o,links:n&&n.length>0&&(0,u.jsx)(at,{links:n}),logo:r&&(0,u.jsx)(ct,{logo:r}),copyright:t&&(0,u.jsx)(ut,{copyright:t})})}const ft=r.memo(pt),mt=(0,R.fM)([F.a,k.oq,j.Tv,Te.VQ,i.Jx,function(e){let{children:t}=e;return(0,u.jsx)(L.y_,{children:(0,u.jsx)(N.e,{children:(0,u.jsx)(O,{children:t})})})}]);function ht(e){let{children:t}=e;return(0,u.jsx)(mt,{children:t})}var gt=n(1107);function yt(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)("main",{className:"container margin-vert--xl",children:(0,u.jsx)("div",{className:"row",children:(0,u.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,u.jsx)(gt.A,{as:"h1",className:"hero__title",children:(0,u.jsx)(s.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,u.jsx)("div",{className:"margin-vert--lg",children:(0,u.jsx)($e,{onClick:n,className:"button button--primary shadow--lw"})}),(0,u.jsx)("hr",{}),(0,u.jsx)("div",{className:"margin-vert--md",children:(0,u.jsx)(Ue,{error:t})})]})})})}const bt={mainWrapper:"mainWrapper_z2l0"};function vt(e){const{children:t,noFooter:n,wrapperClassName:r,title:l,description:s}=e;return(0,y.J)(),(0,u.jsxs)(ht,{children:[(0,u.jsx)(i.be,{title:l,description:s}),(0,u.jsx)(v,{}),(0,u.jsx)(T,{}),(0,u.jsx)(Ze,{}),(0,u.jsx)("div",{id:d,className:(0,o.A)(g.G.wrapper.main,bt.mainWrapper,r),children:(0,u.jsx)(a.A,{fallback:e=>(0,u.jsx)(yt,{...e}),children:t})}),!n&&(0,u.jsx)(ft,{})]})}},3465:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(6540);var r=n(8774),o=n(6025),a=n(4586),i=n(6342),l=n(1122),s=n(4848);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const a={light:(0,o.A)(t.src),dark:(0,o.A)(t.srcDark||t.src)},i=(0,s.jsx)(l.A,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,s.jsx)("div",{className:r,children:i}):i}function u(e){const{siteConfig:{title:t}}=(0,a.A)(),{navbar:{title:n,logo:l}}=(0,i.p)(),{imageClassName:u,titleClassName:d,...p}=e,f=(0,o.A)(l?.href||"/"),m=n?"":t,h=l?.alt??m;return(0,s.jsxs)(r.A,{to:f,...p,...l?.target&&{target:l.target},children:[l&&(0,s.jsx)(c,{logo:l,alt:h,imageClassName:u}),null!=n&&(0,s.jsx)("b",{className:d,children:n})]})}},1463:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(6540);var r=n(5260),o=n(4848);function a(e){let{locale:t,version:n,tag:a}=e;const i=t;return(0,o.jsxs)(r.A,{children:[t&&(0,o.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,o.jsx)("meta",{name:"docusaurus_version",content:n}),a&&(0,o.jsx)("meta",{name:"docusaurus_tag",content:a}),i&&(0,o.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,o.jsx)("meta",{name:"docsearch:version",content:n}),a&&(0,o.jsx)("meta",{name:"docsearch:docusaurus_tag",content:a})]})}},1122:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});var r=n(6540),o=n(4164),a=n(2303),i=n(5293);const l={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var s=n(4848);function c(e){let{className:t,children:n}=e;const c=(0,a.A)(),{colorMode:u}=(0,i.G)();return(0,s.jsx)(s.Fragment,{children:(c?"dark"===u?["dark"]:["light"]:["light","dark"]).map((e=>{const a=n({theme:e,className:(0,o.A)(t,l.themedComponent,l[`themedComponent--${e}`])});return(0,s.jsx)(r.Fragment,{children:a},e)}))})}function u(e){const{sources:t,className:n,alt:r,...o}=e;return(0,s.jsx)(c,{className:n,children:e=>{let{theme:n,className:a}=e;return(0,s.jsx)("img",{src:t[n],alt:r,className:a,...o})}})}},1422:(e,t,n)=>{"use strict";n.d(t,{N:()=>y,u:()=>c});var r=n(6540),o=n(8193),a=n(205),i=n(3109),l=n(4848);const s="ease-in-out";function c(e){let{initialState:t}=e;const[n,o]=(0,r.useState)(t??!1),a=(0,r.useCallback)((()=>{o((e=>!e))}),[]);return{collapsed:n,setCollapsed:o,toggleCollapsed:a}}const u={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?u:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:o}=e;const a=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=o?.duration??function(e){if((0,i.O)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${o?.easing??s}`,height:`${t}px`}}function l(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return p(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(l(),requestAnimationFrame((()=>{e.style.height=u.height,e.style.overflow=u.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,o])}function m(e){if(!o.A.canUseDOM)return e?u:d}function h(e){let{as:t="div",collapsed:n,children:o,animation:a,onCollapseTransitionEnd:i,className:s,disableSSRStyle:c}=e;const u=(0,r.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:a}),(0,l.jsx)(t,{ref:u,style:c?void 0:m(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(u.current,n),i?.(n))},className:s,children:o})}function g(e){let{collapsed:t,...n}=e;const[o,i]=(0,r.useState)(!t),[s,c]=(0,r.useState)(t);return(0,a.A)((()=>{t||i(!0)}),[t]),(0,a.A)((()=>{o&&c(t)}),[o,t]),o?(0,l.jsx)(h,{...n,collapsed:s}):null}function y(e){let{lazy:t,...n}=e;const r=t?g:h;return(0,l.jsx)(r,{...n})}},5041:(e,t,n)=>{"use strict";n.d(t,{Mj:()=>h,oq:()=>m});var r=n(6540),o=n(2303),a=n(9466),i=n(9532),l=n(6342),s=n(4848);const c=(0,a.Wf)("docusaurus.announcement.dismiss"),u=(0,a.Wf)("docusaurus.announcement.id"),d=()=>"true"===c.get(),p=e=>c.set(String(e)),f=r.createContext(null);function m(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.p)(),t=(0,o.A)(),[n,a]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{a(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),a(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&p(!1),!r&&d()||a(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,s.jsx)(f.Provider,{value:n,children:t})}function h(){const e=(0,r.useContext)(f);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},5293:(e,t,n)=>{"use strict";n.d(t,{G:()=>y,a:()=>g});var r=n(6540),o=n(8193),a=n(9532),i=n(9466),l=n(6342),s=n(4848);const c=r.createContext(void 0),u="theme",d=(0,i.Wf)(u),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,m=e=>o.A.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),h=e=>{d.set(f(e))};function g(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.p)(),[o,a]=(0,r.useState)(m(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:o=!0}=r;t?(a(t),o&&h(t)):(a(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(o))}),[o]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:o,setColorMode:i,get isDarkTheme(){return o===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[o,i])}();return(0,s.jsx)(c.Provider,{value:n,children:t})}function y(){const e=(0,r.useContext)(c);if(null==e)throw new a.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},5597:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>y,g1:()=>v});var r=n(6540),o=n(8295),a=n(7065),i=n(6342),l=n(4142),s=n(9532),c=n(9466),u=n(4848);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,c.Wf)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,c.Wf)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,c.Wf)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const m=r.createContext(null);function h(){const e=(0,o.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[a,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function o(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,o(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[a,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=h();return(0,u.jsx)(m.Provider,{value:n,children:t})}function y(e){let{children:t}=e;return l.C5?(0,u.jsx)(g,{children:t}):(0,u.jsx)(u.Fragment,{children:t})}function b(){const e=(0,r.useContext)(m);if(!e)throw new s.dV("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=a.W);const t=(0,o.ht)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},4207:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,t:()=>c});var r=n(6540),o=n(9532),a=n(4848);const i=Symbol("EmptyContext"),l=r.createContext(i);function s(e){let{children:t,name:n,items:o}=e;const i=(0,r.useMemo)((()=>n&&o?{name:n,items:o}:null),[n,o]);return(0,a.jsx)(l.Provider,{value:i,children:t})}function c(){const e=(0,r.useContext)(l);if(e===i)throw new o.dV("DocsSidebarProvider");return e}},2252:(e,t,n)=>{"use strict";n.d(t,{n:()=>l,r:()=>s});var r=n(6540),o=n(9532),a=n(4848);const i=r.createContext(null);function l(e){let{children:t,version:n}=e;return(0,a.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(null===e)throw new o.dV("DocsVersionProvider");return e}},2069:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>p});var r=n(6540),o=n(5600),a=n(4581),i=n(7485),l=n(6342),s=n(9532),c=n(4848);const u=r.createContext(void 0);function d(){const e=function(){const e=(0,o.YL)(),{items:t}=(0,l.p)().navbar;return 0===t.length&&!e.component}(),t=(0,a.l)(),n=!e&&"mobile"===t,[s,c]=(0,r.useState)(!1);(0,i.$Z)((()=>{if(s)return c(!1),!1}));const u=(0,r.useCallback)((()=>{c((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&c(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:s})),[e,n,u,s])}function p(e){let{children:t}=e;const n=d();return(0,c.jsx)(u.Provider,{value:n,children:t})}function f(){const e=r.useContext(u);if(void 0===e)throw new s.dV("NavbarMobileSidebarProvider");return e}},5600:(e,t,n)=>{"use strict";n.d(t,{GX:()=>c,YL:()=>s,y_:()=>l});var r=n(6540),o=n(9532),a=n(4848);const i=r.createContext(null);function l(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,a.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(!e)throw new o.dV("NavbarSecondaryMenuContentProvider");return e[0]}function c(e){let{component:t,props:n}=e;const a=(0,r.useContext)(i);if(!a)throw new o.dV("NavbarSecondaryMenuContentProvider");const[,l]=a,s=(0,o.Be)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},4090:(e,t,n)=>{"use strict";n.d(t,{w:()=>o,J:()=>a});var r=n(6540);const o="navigation-with-keyboard";function a(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(o),"mousedown"===e.type&&document.body.classList.remove(o)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(o),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},4581:(e,t,n)=>{"use strict";n.d(t,{l:()=>l});var r=n(6540),o=n(8193);const a={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,l]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){l(function(e){if(!o.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?a.desktop:a.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},7559:(e,t,n)=>{"use strict";n.d(t,{G:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},3109:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},4142:(e,t,n)=>{"use strict";n.d(t,{$S:()=>h,B5:()=>A,C5:()=>p,Nr:()=>m,OF:()=>x,QB:()=>C,Vd:()=>S,Y:()=>w,cC:()=>f,d1:()=>_,fW:()=>E,w8:()=>b});var r=n(6540),o=n(6347),a=n(2831),i=n(8295),l=n(5597),s=n(2252),c=n(4207),u=n(1682),d=n(9169);const p=!!i.Gy;function f(e){const t=(0,s.r)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function m(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=m(t);if(e)return e}}(e):void 0:e.href}function h(){const{pathname:e}=(0,o.zy)(),t=(0,c.t)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=k({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const g=(e,t)=>void 0!==e&&(0,d.ys)(e,t),y=(e,t)=>e.some((e=>b(e,t)));function b(e,t){return"link"===e.type?g(e.href,t):"category"===e.type&&(g(e.href,t)||y(e.items,t))}function v(e,t){switch(e.type){case"category":return b(e,t)||e.items.some((e=>v(e,t)));case"link":return!e.unlisted||b(e,t);default:return!0}}function w(e,t){return(0,r.useMemo)((()=>e.filter((e=>v(e,t)))),[e,t])}function k(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const o=[];return function e(t){for(const a of t)if("category"===a.type&&((0,d.ys)(a.href,n)||e(a.items))||"link"===a.type&&(0,d.ys)(a.href,n)){return r&&"category"!==a.type||o.unshift(a),!0}return!1}(t),o}function x(){const e=(0,c.t)(),{pathname:t}=(0,o.zy)(),n=(0,i.vT)()?.pluginData.breadcrumbs;return!1!==n&&e?k({sidebarItems:e.items,pathname:t}):null}function S(e){const{activeVersion:t}=(0,i.zK)(e),{preferredVersion:n}=(0,l.g1)(e),o=(0,i.r7)(e);return(0,r.useMemo)((()=>(0,u.s)([t,n,o].filter(Boolean))),[t,n,o])}function E(e,t){const n=S(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function C(e,t){const n=S(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,u.s)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function A(e){let{route:t}=e;const n=(0,o.zy)(),r=(0,s.r)(),i=t.routes,l=i.find((e=>(0,o.B6)(n.pathname,e)));if(!l)return null;const c=l.sidebar,u=c?r.docsSidebars[c]:void 0;return{docElement:(0,a.v)(i),sidebarName:c,sidebarItems:u}}function _(e){return e.filter((e=>!("category"===e.type||"link"===e.type)||!!m(e)))}},7485:(e,t,n)=>{"use strict";n.d(t,{$Z:()=>i,aZ:()=>l});var r=n(6540),o=n(6347),a=n(9532);function i(e){!function(e){const t=(0,o.W6)(),n=(0,a._q)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function l(e){return function(e){const t=(0,o.W6)();return(0,r.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}},1682:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function o(e){return Array.from(new Set(e))}n.d(t,{X:()=>r,s:()=>o})},1003:(e,t,n)=>{"use strict";n.d(t,{e3:()=>f,be:()=>d,Jx:()=>m});var r=n(6540),o=n(4164),a=n(5260),i=n(3102);function l(){const e=r.useContext(i.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(6025),c=n(4586);var u=n(4848);function d(e){let{title:t,description:n,keywords:r,image:o,children:i}=e;const l=function(e){const{siteConfig:t}=(0,c.A)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.h)(),p=o?d(o,{absolute:!0}):void 0;return(0,u.jsxs)(a.A,{children:[t&&(0,u.jsx)("title",{children:l}),t&&(0,u.jsx)("meta",{property:"og:title",content:l}),n&&(0,u.jsx)("meta",{name:"description",content:n}),n&&(0,u.jsx)("meta",{property:"og:description",content:n}),r&&(0,u.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,u.jsx)("meta",{property:"og:image",content:p}),p&&(0,u.jsx)("meta",{name:"twitter:image",content:p}),i]})}const p=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(p),l=(0,o.A)(i,t);return(0,u.jsxs)(p.Provider,{value:l,children:[(0,u.jsx)(a.A,{children:(0,u.jsx)("html",{className:l})}),n]})}function m(e){let{children:t}=e;const n=l(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const a=`plugin-id-${n.plugin.id}`;return(0,u.jsx)(f,{className:(0,o.A)(r,a),children:t})}},9532:(e,t,n)=>{"use strict";n.d(t,{Be:()=>c,ZC:()=>l,_q:()=>i,dV:()=>s,fM:()=>u});var r=n(6540),o=n(205),a=n(4848);function i(e){const t=(0,r.useRef)(e);return(0,o.A)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function l(e){const t=(0,r.useRef)();return(0,o.A)((()=>{t.current=e})),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function c(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return(0,a.jsx)(a.Fragment,{children:e.reduceRight(((e,t)=>(0,a.jsx)(t,{children:e})),n)})}}},9169:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>l,ys:()=>i});var r=n(6540),o=n(8328),a=n(4586);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,a.A)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function o(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(o).flatMap((e=>e.routes??[])))}(n)}({routes:o.A,baseUrl:e})),[e])}},3104:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>f,Tv:()=>u,a_:()=>m,gk:()=>h});var r=n(6540),o=n(8193),a=n(2303),i=n(205),l=n(9532),s=n(4848);const c=r.createContext(void 0);function u(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,s.jsx)(c.Provider,{value:n,children:t})}function d(){const e=(0,r.useContext)(c);if(null==e)throw new l.dV("ScrollControllerProvider");return e}const p=()=>o.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function f(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=d(),o=(0,r.useRef)(p()),a=(0,l._q)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=p();a(e,o.current),o.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[a,n,...t])}function m(){const e=d(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),o=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,i.A)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:o}}function h(){const e=(0,r.useRef)(null),t=(0,a.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const o=document.documentElement.scrollTop;(n&&o>e||!n&&ot&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},2967:(e,t,n)=>{"use strict";n.d(t,{Cy:()=>r,tU:()=>o});n(4586);const r="default";function o(e,t){return`docs-${e}-${t}`}},9466:(e,t,n)=>{"use strict";n.d(t,{Dv:()=>u,Wf:()=>c});var r=n(6540);const o="localStorage";function a(e){let{key:t,oldValue:n,newValue:r,storage:o}=e;if(n===r)return;const a=document.createEvent("StorageEvent");a.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,o),window.dispatchEvent(a)}function i(e){if(void 0===e&&(e=o),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,l||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),l=!0),null}var t}let l=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function c(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=i(t?.persistence);return null===n?s:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),a({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),a({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}function u(e,t){const n=(0,r.useRef)((()=>null===e?s:c(e,t))).current(),o=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,r.useSyncExternalStore)(o,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},2131:(e,t,n)=>{"use strict";n.d(t,{o:()=>i});var r=n(4586),o=n(6347),a=n(440);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.A)(),{pathname:s}=(0,o.zy)(),c=(0,a.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),u=l===i?e:e.replace(`/${l}/`,"/"),d=c.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${u}`:`${u}${e}/`}(n)}${d}`}}}},5062:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(6540),o=n(6347),a=n(9532);function i(e){const t=(0,o.zy)(),n=(0,a.ZC)(t),i=(0,a._q)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6342:(e,t,n)=>{"use strict";n.d(t,{p:()=>o});var r=n(4586);function o(){return(0,r.A)().siteConfig.themeConfig}},2983:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[o]=e.split(/[#?]/),a="/"===o||o===r?o:(i=o,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(o,a)}},253:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},440:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var o=n(2983);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}});var a=n(253);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return a.getErrorCausalChain}})},1513:(e,t,n)=>{"use strict";n.d(t,{zR:()=>w,TM:()=>A,yJ:()=>f,sC:()=>T,AO:()=>p});var r=n(8168);function o(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,o=e.length;r=0;p--){var f=i[p];"."===f?a(i,p):".."===f?(a(i,p),d++):d&&(a(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&o(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(1561);function s(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function f(e,t,n,o){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.A)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(a.key=n),o?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=i(a.pathname,o.pathname)):a.pathname=o.pathname:a.pathname||(a.pathname="/"),a}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,o):n.push(o),d({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=f(e,t,h(),w.location);u.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,d({action:r,location:o}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(4363),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||o}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var o=f(n);o&&o!==m&&e(t,o,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var l=s(t),h=s(n),g=0;g{"use strict";e.exports=function(e,t,n,r,o,a,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,o,a,i,l],u=0;(s=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},4634:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},689:function(e){e.exports=function(){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1])||arguments[1],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;t(this,e),this.ctx=n,this.iframes=r,this.exclude=o,this.iframesTimeout=a}return n(e,[{key:"getContexts",value:function(){var e=[];return(void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:[]).forEach((function(t){var n=e.filter((function(e){return e.contains(t)})).length>0;-1!==e.indexOf(t)||n||e.push(t)})),e}},{key:"getIframeContents",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=void 0;try{var o=e.contentWindow;if(r=o.document,!o||!r)throw new Error("iframe inaccessible")}catch(a){n()}r&&t(r)}},{key:"isIframeBlank",value:function(e){var t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}},{key:"observeIframeLoad",value:function(e,t,n){var r=this,o=!1,a=null,i=function i(){if(!o){o=!0,clearTimeout(a);try{r.isIframeBlank(e)||(e.removeEventListener("load",i),r.getIframeContents(e,t,n))}catch(l){n()}}};e.addEventListener("load",i),a=setTimeout(i,this.iframesTimeout)}},{key:"onIframeReady",value:function(e,t,n){try{"complete"===e.contentWindow.document.readyState?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch(r){n()}}},{key:"waitForIframes",value:function(e,t){var n=this,r=0;this.forEachIframe(e,(function(){return!0}),(function(e){r++,n.waitForIframes(e.querySelector("html"),(function(){--r||t()}))}),(function(e){e||t()}))}},{key:"forEachIframe",value:function(t,n,r){var o=this,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},i=t.querySelectorAll("iframe"),l=i.length,s=0;i=Array.prototype.slice.call(i);var c=function(){--l<=0&&a(s)};l||c(),i.forEach((function(t){e.matches(t,o.exclude)?c():o.onIframeReady(t,(function(e){n(t)&&(s++,r(e)),c()}),c)}))}},{key:"createIterator",value:function(e,t,n){return document.createNodeIterator(e,t,n,!1)}},{key:"createInstanceOnIframe",value:function(t){return new e(t.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(e,t,n){if(e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_PRECEDING){if(null===t)return!0;if(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)return!0}return!1}},{key:"getIteratorNode",value:function(e){var t=e.previousNode();return{prevNode:t,node:(null===t||e.nextNode())&&e.nextNode()}}},{key:"checkIframeFilter",value:function(e,t,n,r){var o=!1,a=!1;return r.forEach((function(e,t){e.val===n&&(o=t,a=e.handled)})),this.compareNodeIframe(e,t,n)?(!1!==o||a?!1===o||a||(r[o].handled=!0):r.push({val:n,handled:!0}),!0):(!1===o&&r.push({val:n,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(e,t,n,r){var o=this;e.forEach((function(e){e.handled||o.getIframeContents(e.val,(function(e){o.createInstanceOnIframe(e).forEachNode(t,n,r)}))}))}},{key:"iterateThroughNodes",value:function(e,t,n,r,o){for(var a=this,i=this.createIterator(t,e,r),l=[],s=[],c=void 0,u=void 0,d=function(){var e=a.getIteratorNode(i);return u=e.prevNode,c=e.node};d();)this.iframes&&this.forEachIframe(t,(function(e){return a.checkIframeFilter(c,u,e,l)}),(function(t){a.createInstanceOnIframe(t).forEachNode(e,(function(e){return s.push(e)}),r)})),s.push(c);s.forEach((function(e){n(e)})),this.iframes&&this.handleOpenIframes(l,e,n,r),o()}},{key:"forEachNode",value:function(e,t,n){var r=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},a=this.getContexts(),i=a.length;i||o(),a.forEach((function(a){var l=function(){r.iterateThroughNodes(e,a,t,n,(function(){--i<=0&&o()}))};r.iframes?r.waitForIframes(a,l):l()}))}}],[{key:"matches",value:function(e,t){var n="string"==typeof t?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){var o=!1;return n.every((function(t){return!r.call(e,t)||(o=!0,!1)})),o}return!1}}]),e}(),a=function(){function a(e){t(this,a),this.ctx=e,this.ie=!1;var n=window.navigator.userAgent;(n.indexOf("MSIE")>-1||n.indexOf("Trident")>-1)&&(this.ie=!0)}return n(a,[{key:"log",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"debug",r=this.opt.log;this.opt.debug&&"object"===(void 0===r?"undefined":e(r))&&"function"==typeof r[n]&&r[n]("mark.js: "+t)}},{key:"escapeStr",value:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(e){return"disabled"!==this.opt.wildcards&&(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)),"disabled"!==this.opt.wildcards&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e)}},{key:"createSynonymsRegExp",value:function(e){var t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",r=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var o in t)if(t.hasOwnProperty(o)){var a=t[o],i="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(o):this.escapeStr(o),l="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(a):this.escapeStr(a);""!==i&&""!==l&&(e=e.replace(new RegExp("("+this.escapeStr(i)+"|"+this.escapeStr(l)+")","gm"+n),r+"("+this.processSynomyms(i)+"|"+this.processSynomyms(l)+")"+r))}return e}},{key:"processSynomyms",value:function(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}},{key:"setupWildcardsRegExp",value:function(e){return(e=e.replace(/(?:\\)*\?/g,(function(e){return"\\"===e.charAt(0)?"?":"\x01"}))).replace(/(?:\\)*\*/g,(function(e){return"\\"===e.charAt(0)?"*":"\x02"}))}},{key:"createWildcardsRegExp",value:function(e){var t="withSpaces"===this.opt.wildcards;return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(e){return e.replace(/[^(|)\\]/g,(function(e,t,n){var r=n.charAt(t+1);return/[(|)\\]/.test(r)||""===r?e:e+"\0"}))}},{key:"createJoinersRegExp",value:function(e){var t=[],n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join("["+t.join("")+"]*"):e}},{key:"createDiacriticsRegExp",value:function(e){var t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105","A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010d","C\xc7\u0106\u010c","d\u0111\u010f","D\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119","E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012b","I\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142","L\u0141","n\xf1\u0148\u0144","N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014d","O\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159","R\u0158","s\u0161\u015b\u0219\u015f","S\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163","T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016b","U\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xff","Y\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017a","Z\u017d\u017b\u0179"]:["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010dC\xc7\u0106\u010c","d\u0111\u010fD\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012bI\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142L\u0141","n\xf1\u0148\u0144N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014dO\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159R\u0158","s\u0161\u015b\u0219\u015fS\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016bU\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xffY\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017aZ\u017d\u017b\u0179"],r=[];return e.split("").forEach((function(o){n.every((function(n){if(-1!==n.indexOf(o)){if(r.indexOf(n)>-1)return!1;e=e.replace(new RegExp("["+n+"]","gm"+t),"["+n+"]"),r.push(n)}return!0}))})),e}},{key:"createMergedBlanksRegExp",value:function(e){return e.replace(/[\s]+/gim,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(e){var t=this,n="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xa1\xbf",r=this.opt.accuracy,o="string"==typeof r?r:r.value,a="string"==typeof r?[]:r.limiters,i="";switch(a.forEach((function(e){i+="|"+t.escapeStr(e)})),o){case"partially":default:return"()("+e+")";case"complementary":return"()([^"+(i="\\s"+(i||this.escapeStr(n)))+"]*"+e+"[^"+i+"]*)";case"exactly":return"(^|\\s"+i+")("+e+")(?=$|\\s"+i+")"}}},{key:"getSeparatedKeywords",value:function(e){var t=this,n=[];return e.forEach((function(e){t.opt.separateWordSearch?e.split(" ").forEach((function(e){e.trim()&&-1===n.indexOf(e)&&n.push(e)})):e.trim()&&-1===n.indexOf(e)&&n.push(e)})),{keywords:n.sort((function(e,t){return t.length-e.length})),length:n.length}}},{key:"isNumeric",value:function(e){return Number(parseFloat(e))==e}},{key:"checkRanges",value:function(e){var t=this;if(!Array.isArray(e)||"[object Object]"!==Object.prototype.toString.call(e[0]))return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];var n=[],r=0;return e.sort((function(e,t){return e.start-t.start})).forEach((function(e){var o=t.callNoMatchOnInvalidRanges(e,r),a=o.start,i=o.end;o.valid&&(e.start=a,e.length=i-a,n.push(e),r=i)})),n}},{key:"callNoMatchOnInvalidRanges",value:function(e,t){var n=void 0,r=void 0,o=!1;return e&&void 0!==e.start?(r=(n=parseInt(e.start,10))+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&r-t>0&&r-n>0?o=!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:n,end:r,valid:o}}},{key:"checkWhitespaceRanges",value:function(e,t,n){var r=void 0,o=!0,a=n.length,i=t-a,l=parseInt(e.start,10)-i;return(r=(l=l>a?a:l)+parseInt(e.length,10))>a&&(r=a,this.log("End range automatically set to the max value of "+a)),l<0||r-l<0||l>a||r>a?(o=!1,this.log("Invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)):""===n.substring(l,r).replace(/\s+/g,"")&&(o=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:r,valid:o}}},{key:"getTextNodes",value:function(e){var t=this,n="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,(function(e){r.push({start:n.length,end:(n+=e.textContent).length,node:e})}),(function(e){return t.matchesExclude(e.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),(function(){e({value:n,nodes:r})}))}},{key:"matchesExclude",value:function(e){return o.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(e,t,n){var r=this.opt.element?this.opt.element:"mark",o=e.splitText(t),a=o.splitText(n-t),i=document.createElement(r);return i.setAttribute("data-markjs","true"),this.opt.className&&i.setAttribute("class",this.opt.className),i.textContent=o.textContent,o.parentNode.replaceChild(i,o),a}},{key:"wrapRangeInMappedTextNode",value:function(e,t,n,r,o){var a=this;e.nodes.every((function(i,l){var s=e.nodes[l+1];if(void 0===s||s.start>t){if(!r(i.node))return!1;var c=t-i.start,u=(n>i.end?i.end:n)-i.start,d=e.value.substr(0,i.start),p=e.value.substr(u+i.start);if(i.node=a.wrapRangeInTextNode(i.node,c,u),e.value=d+p,e.nodes.forEach((function(t,n){n>=l&&(e.nodes[n].start>0&&n!==l&&(e.nodes[n].start-=u),e.nodes[n].end-=u)})),n-=u,o(i.node.previousSibling,i.start),!(n>i.end))return!1;t=i.end}return!0}))}},{key:"wrapMatches",value:function(e,t,n,r,o){var a=this,i=0===t?0:t+1;this.getTextNodes((function(t){t.nodes.forEach((function(t){t=t.node;for(var o=void 0;null!==(o=e.exec(t.textContent))&&""!==o[i];)if(n(o[i],t)){var l=o.index;if(0!==i)for(var s=1;s{"use strict";n.r(t)},1043:(e,t,n)=>{"use strict";n.r(t)},5947:function(e,t,n){var r,o;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function o(e,t,n){return en?n:e}function a(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),c=a.querySelector(r.barSelector),u=r.speed,d=r.easing;return a.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,i(e,u,d)),1===e?(s(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){s(a,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,i=t.querySelector(r.barSelector),l=e?"-100":a(n.status||0),c=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&f(o),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+a)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,o[1],o[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(o="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=o)},6969:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to WebPlatform.org documentation. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},8722:(e,t,n)=>{const r=n(6969),o=n(8380),a=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...a,...Object.keys(Prism.languages)];o(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(3157).resolve(t)],delete Prism.languages[e],n(3157)(t),a.add(e)}))}i.silent=!1,e.exports=i},9700:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,o,a){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof a&&!a(e))return e;for(var o,l=i.length;-1!==n.code.indexOf(o=t(r,l));)++l;return i[l]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,a=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=a.length);s++){var c=l[s];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=a[o],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++o;var h=p.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=p.substring(m+f.length),b=[];h&&b.push.apply(b,i([h])),b.push(g),y&&b.push.apply(b,i([y])),"string"==typeof c?l.splice.apply(l,[s,1].concat(b)):c.content=b}}else c.content&&i(c.content)}return l}(n.tokens)}}}})}(Prism)},8692:(e,t,n)=>{var r={"./":8722};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=8692},3157:(e,t,n)=>{var r={"./":8722};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=3157},8380:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n "));var l={},s=e[r];if(s){function c(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in o(t,a),l[t]=!0,n[t])l[i]=!0}t(s.require,c),t(s.optional,c),t(s.modify,c)}n[r]=l,a.pop()}}return function(e){var t=n[e];return t||(o(e,r),t=n[e]),t}}function o(e){for(var t in e)return!0;return!1}return function(a,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var o in r)if("meta"!=o){var a=r[o];t[o]="string"==typeof a?{title:a}:a}}return t}(a),c=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var o in n={},e){var a=e[o];t(a&&a.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+o+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+o+" because it is a component.");n[t]=o}))}return n[r]||r}}(s);i=i.map(c),l=(l||[]).map(c);var u=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(u[t]=!0,e(t))}))}));for(var p,f=r(s),m=u;o(m);){for(var h in p={},m){var g=s[h];t(g&&g.modify,(function(e){e in d&&(p[e]=!0)}))}for(var y in d)if(!(y in u))for(var b in f(y))if(b in u){p[y]=!0;break}for(var v in m=p)u[v]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,o){var a=o?o.series:void 0,i=o?o.parallel:e,l={},s={};function c(e){if(e in l)return l[e];s[e]=!0;var o,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)o=r(e);else{var p=i(u.map((function(e){var t=c(e);return delete s[e],t})));a?o=a(p,(function(){return r(e)})):r(e)}return l[e]=o}for(var u in n)c(u);var d=[];for(var p in s)d.push(l[p]);return i(d)}(f,u,t,n)}};return w}}();e.exports=t},2694:(e,t,n)=>{"use strict";var r=n(6925);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},2551:(e,t,n)=>{"use strict";var r=n(6540),o=n(9982);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n