diff --git a/docs/.vitepress/dist/404.html b/docs/.vitepress/dist/404.html new file mode 100644 index 0000000..8eddd6b --- /dev/null +++ b/docs/.vitepress/dist/404.html @@ -0,0 +1,31 @@ + + + + + + 404 | PDFObject + + + + + + + + + + + + + + + + + + + + +
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.

PDFObject is released under the MIT License.

+ + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/api/changelog.html b/docs/.vitepress/dist/api/changelog.html new file mode 100644 index 0000000..149df6c --- /dev/null +++ b/docs/.vitepress/dist/api/changelog.html @@ -0,0 +1,34 @@ + + + + + + Changelog | PDFObject + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Changelog

2.3 (February 2024)

  • Removed <embed> in favor of <iframe>. PDFObject had previously defaulted to an <embed> element, but over time it has become apparent the superior solution is <iframe>. It's universally supported, and does not suffer from <embed>'s odd quirks and spotty support. This should make PDFObject more consistent and robust across platforms.
  • As a result of removing <embed> and redefining the detection logic, some PDFObject options have become obsolete. They are safe to keep in your code (will not throw errors), but are no longer used by PDFObject. The deprecated options are: assumptionMode, forceIframe, and supportRedirect.
  • Incorporated support for navigator.pdfViewerEnabled, per #290. As of Spring 2023, navigator.pdfViewerEnabled is supported in all major browsers. This naturally led to redefining PDFObject's PDF support detection logic.
    • If the browser is on a mobile device, PDFObject will automatically assume PDFs are not supported (as of February 2024, no mobile browsers properly support inline PDFs).
    • If not a mobile device, PDFObject will check navigator.pdfViewerEnabled.
    • If the feature is found, but disabled (e.g. the user has intentionally disabled PDF support in the browser), PDFObject will respect this and behave as if inline PDFs are not supported.
    • If navigator.pdfViewerEnabled is found and set to true, PDFObject will embed the PDF.
    • If navigator.pdfViewerEnabled is not found, fallback logic will kick in and check what kind of browser is being used.
    • If the browser is known to support inline PDFs natively (Chrome/Edge/Opera/etc, macOS Safari, Firefox), PDFObject will assume inline PDFs are supported and embed the file.
    • If Internet Explorer, PDFObject will query against ActiveX for known PDF plugins (Acrobat, FoxIt) and act accordingly.
  • Added support for converting Base64 PDFs (string) to a downloadable file, per #243 and #270. This only impacts fallback content on browsers that don't support inline PDFs.
  • Improved handling of PDF Open Parameters. Ensures proper sequencing of parameters in URL string, per Adobe spec. Ensures page is always set if comment, viewrect or highlight are specified.

2.2.12 (June 2023)

Refactored one line of code to restore IE11 compatibility, per #287.

2.2.11 (May 2023)

Typo in version number within PDFObject code. Yup, I'm a bit rusty.

2.2.10 (May 2023)

Version bump for cleaning up docs and aligning on NPM. I'm a bit rusty.

2.2.9 (May 2023)

  • Fixed regression for pdfOpenParams handling, resolves issue #272. Hat tip to Theo Beers.
  • Added ability to specify custom attribute on embed and iframe elements, per #274

2.2.8 (April 2022)

  • Refactored to reduce redundant code. Simplified iframe and PDFJS handling. Subsequently resolves #263 (double scroll bars) and PR #267 (PDFJS_URL param fix). Hat tip to Theo Beers, Sascha Greuel, meier-andersen, and everyone who helped identify and confirm the underlying issues.
  • Fixed fallbackLink handling to ensure false is respected. Hat tip to Theo Beers.

2.2.7 (September 2021)

  • Add title attribute to PDFJS iframe elements per #258

2.2.6 (July 2021)

  • Add title attribute to embed and iframe elements per #248
  • Force Safari desktop to embed via iframe due to freezing bug in macOS 11 (Big Sur) per #243
  • Fixed version number per #247
  • Added note about documentation to readme file per #251

2.2.5 (March 2021)

  • Expanded assumptions to counteract Chrome's deprecation of MIME type checks. Any 'modern' browser will be given a green light regardless of whether assumptionMode is enabled. However assumptionMode will still be available for browsers that are not declared modern.
  • Added allow="fullscreen" attribute to iframe embeds, in case anyone needs their PDFs to be rendered fullscreen.
  • Fixed Firefox user agent sniffing for edge case (thanks to David Novodchuck for the PR)

2.2.4 (October 2020)

Reinstated typeof check for window to play nice with React and NextJS.

2.2.3 (September 2020)

Version bump for NPM. Sigh.

2.2.2 (September 2020)

Fixed typo affecting suppressConsole functionality. Hat tip to John Hunter for the discovery and fix.

2.2.1 (September 2020)

Fixed typo affecting styling of iframe when forcing PDFJS.

2.2.0 (September 2020)

  • New behavior: Dropping support for IE9 and IE10, which have practically 0 marketshare now.
  • New behavior: Now explicitly displaying fallback content for all mobile devices, even "Request Desktop" version of pages in iOS. The reasoning is simple: As of the time of this update, no mobile device (Android, iOS) natively supports embedded PDFs. This change will lead to a consistent experience across all mobile devices. PDFs can be rendered via PDF.js on mobile if embedding on mobile is a critical need. PDF.js is not included with PDFObject.
  • New option: Omit inline styles by setting option omitInlineStyles to true. This helps developers who use strict environments where inline styles are not allowed. Note you will be responsible for applying proper styling via your own CSS.
  • New option: Suppress console logging by setting option suppressConsole to true. PDFObject currently places error messages in the console if the PDF can't be embedded for some reason. This option allows you to mute those alerts.
  • New option: Force PDFObject to embed the PDF in an iframe (instead of an <embed>) by setting forceIframe to true.
  • Refactored to use more modern code conventions, such as let in lieu of var, el.classList.add() in place of el.className = 'foo', and myvar === undefined in place of typeof myvar === "undefined". Implemented a let declaration before each variable instead of the Crockford practice of one var per function.
  • New option: On macOS systems, Safari does not properly embed PDFs that have been requested via 302 URL redirection when embedding using the <embed> element. Setting supportRedirect to true forces PDFObject to use an <iframe> instead of an <embed> for desktop Safari. Hat tip to John Hunter for the discovery and fix.
  • Refactored to make code safer for server-side node.js-based environments.
  • Refactored to eliminate string-based element creation via innerHTML. Replaced with standard DOM methods. This helps alleviate unforeseen issues with file names. Only exception is insertion of fallback content, which is passed as a string via innerHTML.
  • Removed iframe scrollfix for iOS, as it is no longer needed as of iOS13. iOS 12 and lower have ~5-7% marketshare and shrinking fast.
  • Refactored codebase to make it more concise and legible.

2.1.1 (October 2018)

Improved handling of iOS to properly indicate iOS does not support embedded PDFs.

2.1 (October 2018)

Changed assumptionMode default from false to true. This will ensure PDFObject 2.x will work for Firefox users without requiring them to change their codebase to enable assumptionMode. All they need to do is load the latest version of PDFObject, the PDFObject utility will take care of the rest.

2.1 (dev branch January 2017)

Modified to support Mozilla's removal of navigator.mimeTypes inspection. Added assumptionMode for manual override of PDFObject's default navigator.mimeTypes sniffing.

2.0 (April 2016)

Initial release of PDFObject 2.0. Contains breaking changes, and is not compatible with PDFObject 1.x.

PDFObject is released under the MIT License.

+ + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/api/index.html b/docs/.vitepress/dist/api/index.html new file mode 100644 index 0000000..9ae57c5 --- /dev/null +++ b/docs/.vitepress/dist/api/index.html @@ -0,0 +1,67 @@ + + + + + + PDFObject API | PDFObject + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

PDFObject API

PDFObject provides two properties and one method.

PDFObject.supportsPDFs

Property. Returns true or false based on following logic:

  • If the browser is on a mobile device, PDFObject will automatically assume PDFs are not supported and return false. (As of February 2024, no mobile browsers properly support inline PDFs.)
  • If not a mobile device, PDFObject will check navigator.pdfViewerEnabled.
  • If navigator.pdfViewerEnabled is found, but disabled (e.g. the user has intentionally disabled PDF support in the browser), PDFObject will respect this and return false.
  • If navigator.pdfViewerEnabled is found and set to true, PDFObject will return true.
  • If navigator.pdfViewerEnabled is not found, PDFObject will check what kind of browser is being used. If the browser is known to support inline PDFs natively (Chrome/Edge/Opera/etc, macOS Safari, Firefox), PDFObject will assume inline PDFs are supported and return true.
  • If Internet Explorer 11, PDFObject will query against ActiveX for known PDF plugins (Acrobat, FoxIt) and act accordingly.

PDFObject does not perform detection for specific PDF rendering engines (PDFium, PDF.js, Adobe Reader, FoxIt, etc.). Note: For those who wish to target PDF.js, there is an option in PDFObject.embed() to force use of PDF.js. See PDJS_URL for details.

js
if(PDFObject.supportsPDFs){
+    console.log("Yay, this browser supports inline PDFs.");
+} else {
+    console.log("Boo, inline PDFs are not supported by this browser");
+}

PDFObject.pdfobjectversion

Property. Returns the version of PDFObject.

js
console.log(PDFObject.pdfobjectversion); //"2.3.0"

PDFObject.embed

Method. Returns the embedded <iframe>, or false if unable to embed. Expects the following arguments:

PDFObject.embed(url [string], target [mixed], options [object])

  • url [string, required]. The URL of the PDF. Can be relative or absolute. Can also be a Base64 string (be sure to include MIME type as part of string).
  • target [mixed, optional]. The HTML element the PDF will be inserted into.
  • options [object, optional]. Enables you to fine-tune the embed for various scenarios.

If target is omitted, PDFObject will default to document.body, filling the entire page with the embedded PDF.

js
//embeds a PDF and makes it fill the browser window
+PDFObject.embed("myfile.pdf");

Specifying a target

The target parameter can accept a CSS selector, HTML node, or jQuery object.

js
//passes a CSS selector to specify the target
+PDFObject.embed("myfile.pdf", "#my-container");
js
//passes a vanilla HTML node for target
+var mynode = document.getElementById("someID");
+PDFObject.embed("myfile.pdf", mynode);
js
//passes a jQuery object (HTML node) for target
+var $node = $("#someID");
+PDFObject.embed("myfile.pdf", $node);

Options

PDFObject's options parameter provides a lot of flexibility.

js
//embeds a PDF into the element "my-container" with a few options specified
+var options = {
+    title: "My embedded PDF",
+    pdfOpenParams: { view: 'Fit', page: '2' }
+};
+PDFObject.embed("myfile.pdf", "#my-container", options);

page

[string or number]. Default: null

Alias for PDF Open Parameters "page" option. Any number entered here will cause the PDF be opened to the specified page number, if the browser supports it. If left unspecified, the PDF will open on page 1.

js
PDFObject.embed("myfile.pdf", "#my-container", { page: "2" });

Demo: Specifying the page number


[string] or [boolean]. Default: "<p>This browser does not support inline PDFs. Please download the PDF to view it: <a href='[url]'>Download PDF</a></p>"

Any string entered here will be inserted into the target element when the browser doesn't support inline PDFs.

  • If entering a string, HTML is supported.
  • Use the shortcode [url] to insert the URL of the PDF (the string passed in embed(url)).
    js
    var options = {
    +   fallbackLink: "<p>This is a <a href='[url]'>fallback link</a></p>"
    +};
    +PDFObject.embed("myfile.pdf", "#my-container", options);
    +//If browser doesn't support inline PDFs, outputs:
    +//<p>This is a <a href='myfile.pdf'>fallback link</a></p>
  • Entering false will disable the fallback text option and prevent PDFObject from inserting fallback text
    js
    PDFObject.embed("myfile.pdf", "#my-container", {fallbackLink: false});
    +//If browser doesn't support inline PDFs, PDFObject will output nothing

Demo: Specifying a custom fallback

Demo: Declining a fallback


pdfOpenParams

[object]. Default: null

Allows you to specify PDF Open Parameters.

Warning: These are not well supported outside of Adobe Reader and FoxIt PDF Reader. See our Browser Support section for a list of all available PDF Open Parameters, including browser support.

js
PDFObject.embed("myfile.pdf", "#my-container", {pdfOpenParams: { page: 10 }});
+//If supported, the PDF viewer will automatically scroll to page 10 on load

NOTE

PDFObject provides a convenient alias for PDF Open Parameters' page parameter:

js
//These two lines function identically
+PDFObject.embed("myfile.pdf", "#my-container", { page: 2 });
+PDFObject.embed("myfile.pdf", "#my-container", {pdfOpenParams: { page: 2 }});

Demo: PDF Open Parameters Test Page


title

[string]. Default: "Embedded PDF"

Any string entered here will be appended to the generated <iframe> element as the title attribute. If left unspecified, PDFObject will write "Embedded PDF". This improves accessibility, ensuring the purpose of the <iframe> is clear to screen readers.

js
PDFObject.embed("myfile.pdf", "#my-container", { title: "PDF version of your banking statement" });
+//outputs <iframe src="myfile.pdf" title="PDF version of your banking statement">

NOTE

PDFObject does not have the ability to alter the title of the PDF itself, or how the PDF's title is displayed in the PDF reader.

Demo: Setting iframe title


id

[string]. Default: null

Any string entered here will be appended to the generated <iframe> element as the ID. If left unspecified, no ID will be appended.

js
PDFObject.embed("myfile.pdf", "#my-container", { id: "myID" });
+//outputs <iframe src="myfile.pdf" id="myID">

customAttribute

[object]. Default: null

This option allows developers to specify a custom attribute on the <iframe> element. For example, you could specify the loading attribute on the iframe to be "lazy". You could also set a sandbox value, if needed.

Values must be set as key and value, as shown in the following example:

js
var options = {
+    customAttribute: { key: "foo", value: "bar" }
+};
+PDFObject.embed("myfile.pdf", "#my-container", options);

Demo: Specifying a custom attribute

Disallowed tokens are: className, type, title, src, style, id, allow, and frameborder. These are all reserved.

PDFObject will only allow a single custom attribute to be set. However, if you would like to set additional attributes, you can do so by modifying the returned <iframe>:

js
var options = {
+    customAttribute: { key: "foo", value: "bar" }
+};
+let iframe = PDFObject.embed("myfile.pdf", "#my-container", options);
+iframe.setAttribute("pie", "pumpkin");

PDFJS_URL

[string]. Default: null

PDFObject is not affiliated with Mozilla or PDF.js, and the PDF.js code is not included with PDFObject.

If you would like to use PDF.js with PDFObject, you will need to specify the URL of the PDF.js viewer HTML file. PDFObject will automatically pass the PDF's URL to PDF.js.

If you provide the PDFJS_URL, but do not set forcePDFJS to true, PDF.js will only be used as a fallback for browsers that do not offer native support for inline PDFs.

Demo: Using PDF.js as a fallback


forcePDFJS

[boolean]. Default: false

PDFObject is not affiliated with Mozilla or PDF.js, and the PDF.js code is not included with PDFObject.

If set to true and the PDFJS_URL string is not null, PDFObject will attempt to use PDF.js to embed the PDF in the browser, regardless of the browser's default PDF viewer.

Demo: Forcing all embeds to be rendered by PDF.js


height

[string]. Default: "100%"

Will insert the height as an inline style via the style attribute on the the generated <iframe>. If left unspecified, PDFObject will default to 100%. Is standard CSS, supports all units, including px, %, em, and rem.

js
PDFObject.embed("myfile.pdf", "#my-container", { height: "500px" });

TIP

Avoid hard-coding height when possible. It's safer to specify dimensions using your site's CSS.


width

[string]. Default: "100%"

Will insert the width as an inline style via the style attribute on the generated <iframe>. If left unspecified, PDFObject will default to 100%. Is standard CSS, supports all units, including px, %, em, and rem.

js
PDFObject.embed("myfile.pdf", "#my-container", { width: "500px" });

TIP

Avoid hard-coding width when possible. It's safer to specify dimensions using your site's CSS.


omitInlineStyles

[boolean]. Default: false

If set to true, PDFObject will not include any inline styles when generating the <iframe> element.

WARNING

If you choose to omit inline styles, be sure to specify the <iframe> dimensions in your site's CSS. Failure to set dimensions may cause the PDF to be invisible (height 0).

Demo: Omitting inline styles


suppressConsole

[boolean]. Default: false

By default, PDFObject displays error messages in the browser's JavaScript console, such as "URL is not valid" or "This browser does not support embedded PDFs". Set suppressConsole to true to prevent PDFObject from displaying error messages.

PDFObject is released under the MIT License.

+ + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/assets/api_changelog.md.CQiT5cFQ.js b/docs/.vitepress/dist/assets/api_changelog.md.CQiT5cFQ.js new file mode 100644 index 0000000..85098aa --- /dev/null +++ b/docs/.vitepress/dist/assets/api_changelog.md.CQiT5cFQ.js @@ -0,0 +1 @@ +import{_ as e,c as o,o as a,V as t}from"./chunks/framework.BaJ171t2.js";const m=JSON.parse('{"title":"Changelog","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"api/changelog.md","filePath":"api/changelog.md"}'),i={name:"api/changelog.md"},r=t('

Changelog

2.3 (February 2024)

2.2.12 (June 2023)

Refactored one line of code to restore IE11 compatibility, per #287.

2.2.11 (May 2023)

Typo in version number within PDFObject code. Yup, I'm a bit rusty.

2.2.10 (May 2023)

Version bump for cleaning up docs and aligning on NPM. I'm a bit rusty.

2.2.9 (May 2023)

2.2.8 (April 2022)

2.2.7 (September 2021)

2.2.6 (July 2021)

2.2.5 (March 2021)

2.2.4 (October 2020)

Reinstated typeof check for window to play nice with React and NextJS.

2.2.3 (September 2020)

Version bump for NPM. Sigh.

2.2.2 (September 2020)

Fixed typo affecting suppressConsole functionality. Hat tip to John Hunter for the discovery and fix.

2.2.1 (September 2020)

Fixed typo affecting styling of iframe when forcing PDFJS.

2.2.0 (September 2020)

2.1.1 (October 2018)

Improved handling of iOS to properly indicate iOS does not support embedded PDFs.

2.1 (October 2018)

Changed assumptionMode default from false to true. This will ensure PDFObject 2.x will work for Firefox users without requiring them to change their codebase to enable assumptionMode. All they need to do is load the latest version of PDFObject, the PDFObject utility will take care of the rest.

2.1 (dev branch January 2017)

Modified to support Mozilla's removal of navigator.mimeTypes inspection. Added assumptionMode for manual override of PDFObject's default navigator.mimeTypes sniffing.

2.0 (April 2016)

Initial release of PDFObject 2.0. Contains breaking changes, and is not compatible with PDFObject 1.x.

',37),n=[r];function d(l,s,c,h,p,u){return a(),o("div",null,n)}const f=e(i,[["render",d]]);export{m as __pageData,f as default}; diff --git a/docs/.vitepress/dist/assets/api_changelog.md.CQiT5cFQ.lean.js b/docs/.vitepress/dist/assets/api_changelog.md.CQiT5cFQ.lean.js new file mode 100644 index 0000000..890c850 --- /dev/null +++ b/docs/.vitepress/dist/assets/api_changelog.md.CQiT5cFQ.lean.js @@ -0,0 +1 @@ +import{_ as e,c as o,o as a,V as t}from"./chunks/framework.BaJ171t2.js";const m=JSON.parse('{"title":"Changelog","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"api/changelog.md","filePath":"api/changelog.md"}'),i={name:"api/changelog.md"},r=t("",37),n=[r];function d(l,s,c,h,p,u){return a(),o("div",null,n)}const f=e(i,[["render",d]]);export{m as __pageData,f as default}; diff --git a/docs/.vitepress/dist/assets/api_index.md.DVAVUqIM.js b/docs/.vitepress/dist/assets/api_index.md.DVAVUqIM.js new file mode 100644 index 0000000..fa8867b --- /dev/null +++ b/docs/.vitepress/dist/assets/api_index.md.DVAVUqIM.js @@ -0,0 +1,34 @@ +import{_ as s,c as i,o as e,V as a}from"./chunks/framework.BaJ171t2.js";const g=JSON.parse('{"title":"PDFObject API","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"api/index.md","filePath":"api/index.md"}'),t={name:"api/index.md"},n=a(`

PDFObject API

PDFObject provides two properties and one method.

PDFObject.supportsPDFs

Property. Returns true or false based on following logic:

PDFObject does not perform detection for specific PDF rendering engines (PDFium, PDF.js, Adobe Reader, FoxIt, etc.). Note: For those who wish to target PDF.js, there is an option in PDFObject.embed() to force use of PDF.js. See PDJS_URL for details.

js
if(PDFObject.supportsPDFs){
+    console.log("Yay, this browser supports inline PDFs.");
+} else {
+    console.log("Boo, inline PDFs are not supported by this browser");
+}

PDFObject.pdfobjectversion

Property. Returns the version of PDFObject.

js
console.log(PDFObject.pdfobjectversion); //"2.3.0"

PDFObject.embed

Method. Returns the embedded <iframe>, or false if unable to embed. Expects the following arguments:

PDFObject.embed(url [string], target [mixed], options [object])

If target is omitted, PDFObject will default to document.body, filling the entire page with the embedded PDF.

js
//embeds a PDF and makes it fill the browser window
+PDFObject.embed("myfile.pdf");

Specifying a target

The target parameter can accept a CSS selector, HTML node, or jQuery object.

js
//passes a CSS selector to specify the target
+PDFObject.embed("myfile.pdf", "#my-container");
js
//passes a vanilla HTML node for target
+var mynode = document.getElementById("someID");
+PDFObject.embed("myfile.pdf", mynode);
js
//passes a jQuery object (HTML node) for target
+var $node = $("#someID");
+PDFObject.embed("myfile.pdf", $node);

Options

PDFObject's options parameter provides a lot of flexibility.

js
//embeds a PDF into the element "my-container" with a few options specified
+var options = {
+    title: "My embedded PDF",
+    pdfOpenParams: { view: 'Fit', page: '2' }
+};
+PDFObject.embed("myfile.pdf", "#my-container", options);

page

[string or number]. Default: null

Alias for PDF Open Parameters "page" option. Any number entered here will cause the PDF be opened to the specified page number, if the browser supports it. If left unspecified, the PDF will open on page 1.

js
PDFObject.embed("myfile.pdf", "#my-container", { page: "2" });

Demo: Specifying the page number


[string] or [boolean]. Default: "<p>This browser does not support inline PDFs. Please download the PDF to view it: <a href='[url]'>Download PDF</a></p>"

Any string entered here will be inserted into the target element when the browser doesn't support inline PDFs.

Demo: Specifying a custom fallback

Demo: Declining a fallback


pdfOpenParams

[object]. Default: null

Allows you to specify PDF Open Parameters.

Warning: These are not well supported outside of Adobe Reader and FoxIt PDF Reader. See our Browser Support section for a list of all available PDF Open Parameters, including browser support.

js
PDFObject.embed("myfile.pdf", "#my-container", {pdfOpenParams: { page: 10 }});
+//If supported, the PDF viewer will automatically scroll to page 10 on load

NOTE

PDFObject provides a convenient alias for PDF Open Parameters' page parameter:

js
//These two lines function identically
+PDFObject.embed("myfile.pdf", "#my-container", { page: 2 });
+PDFObject.embed("myfile.pdf", "#my-container", {pdfOpenParams: { page: 2 }});

Demo: PDF Open Parameters Test Page


title

[string]. Default: "Embedded PDF"

Any string entered here will be appended to the generated <iframe> element as the title attribute. If left unspecified, PDFObject will write "Embedded PDF". This improves accessibility, ensuring the purpose of the <iframe> is clear to screen readers.

js
PDFObject.embed("myfile.pdf", "#my-container", { title: "PDF version of your banking statement" });
+//outputs <iframe src="myfile.pdf" title="PDF version of your banking statement">

NOTE

PDFObject does not have the ability to alter the title of the PDF itself, or how the PDF's title is displayed in the PDF reader.

Demo: Setting iframe title


id

[string]. Default: null

Any string entered here will be appended to the generated <iframe> element as the ID. If left unspecified, no ID will be appended.

js
PDFObject.embed("myfile.pdf", "#my-container", { id: "myID" });
+//outputs <iframe src="myfile.pdf" id="myID">

customAttribute

[object]. Default: null

This option allows developers to specify a custom attribute on the <iframe> element. For example, you could specify the loading attribute on the iframe to be "lazy". You could also set a sandbox value, if needed.

Values must be set as key and value, as shown in the following example:

js
var options = {
+    customAttribute: { key: "foo", value: "bar" }
+};
+PDFObject.embed("myfile.pdf", "#my-container", options);

Demo: Specifying a custom attribute

Disallowed tokens are: className, type, title, src, style, id, allow, and frameborder. These are all reserved.

PDFObject will only allow a single custom attribute to be set. However, if you would like to set additional attributes, you can do so by modifying the returned <iframe>:

js
var options = {
+    customAttribute: { key: "foo", value: "bar" }
+};
+let iframe = PDFObject.embed("myfile.pdf", "#my-container", options);
+iframe.setAttribute("pie", "pumpkin");

PDFJS_URL

[string]. Default: null

PDFObject is not affiliated with Mozilla or PDF.js, and the PDF.js code is not included with PDFObject.

If you would like to use PDF.js with PDFObject, you will need to specify the URL of the PDF.js viewer HTML file. PDFObject will automatically pass the PDF's URL to PDF.js.

If you provide the PDFJS_URL, but do not set forcePDFJS to true, PDF.js will only be used as a fallback for browsers that do not offer native support for inline PDFs.

Demo: Using PDF.js as a fallback


forcePDFJS

[boolean]. Default: false

PDFObject is not affiliated with Mozilla or PDF.js, and the PDF.js code is not included with PDFObject.

If set to true and the PDFJS_URL string is not null, PDFObject will attempt to use PDF.js to embed the PDF in the browser, regardless of the browser's default PDF viewer.

Demo: Forcing all embeds to be rendered by PDF.js


height

[string]. Default: "100%"

Will insert the height as an inline style via the style attribute on the the generated <iframe>. If left unspecified, PDFObject will default to 100%. Is standard CSS, supports all units, including px, %, em, and rem.

js
PDFObject.embed("myfile.pdf", "#my-container", { height: "500px" });

TIP

Avoid hard-coding height when possible. It's safer to specify dimensions using your site's CSS.


width

[string]. Default: "100%"

Will insert the width as an inline style via the style attribute on the generated <iframe>. If left unspecified, PDFObject will default to 100%. Is standard CSS, supports all units, including px, %, em, and rem.

js
PDFObject.embed("myfile.pdf", "#my-container", { width: "500px" });

TIP

Avoid hard-coding width when possible. It's safer to specify dimensions using your site's CSS.


omitInlineStyles

[boolean]. Default: false

If set to true, PDFObject will not include any inline styles when generating the <iframe> element.

WARNING

If you choose to omit inline styles, be sure to specify the <iframe> dimensions in your site's CSS. Failure to set dimensions may cause the PDF to be invisible (height 0).

Demo: Omitting inline styles


suppressConsole

[boolean]. Default: false

By default, PDFObject displays error messages in the browser's JavaScript console, such as "URL is not valid" or "This browser does not support embedded PDFs". Set suppressConsole to true to prevent PDFObject from displaying error messages.

`,102),l=[n];function p(h,o,d,r,k,c){return e(),i("div",null,l)}const u=s(t,[["render",p]]);export{g as __pageData,u as default}; diff --git a/docs/.vitepress/dist/assets/api_index.md.DVAVUqIM.lean.js b/docs/.vitepress/dist/assets/api_index.md.DVAVUqIM.lean.js new file mode 100644 index 0000000..9bc2b20 --- /dev/null +++ b/docs/.vitepress/dist/assets/api_index.md.DVAVUqIM.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as e,V as a}from"./chunks/framework.BaJ171t2.js";const g=JSON.parse('{"title":"PDFObject API","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"api/index.md","filePath":"api/index.md"}'),t={name:"api/index.md"},n=a("",102),l=[n];function p(h,o,d,r,k,c){return e(),i("div",null,l)}const u=s(t,[["render",p]]);export{g as __pageData,u as default}; diff --git a/docs/.vitepress/dist/assets/app.CpuIjLwv.js b/docs/.vitepress/dist/assets/app.CpuIjLwv.js new file mode 100644 index 0000000..687fa30 --- /dev/null +++ b/docs/.vitepress/dist/assets/app.CpuIjLwv.js @@ -0,0 +1,7 @@ +import{j as o,a7 as p,a8 as u,a9 as c,aa as l,ab as f,ac as d,ad as m,ae as h,af as A,ag as g,Y as v,d as P,u as w,l as y,z as C,ah as R,ai as _,aj as b,ak as E}from"./chunks/framework.BaJ171t2.js";import{R as j}from"./chunks/theme.BAGvGbCH.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(j),D=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=w();return y(()=>{C(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&R(),_(),b(),s.setup&&s.setup(),()=>E(s.Layout)}});async function T(){const e=O(),a=L();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function L(){return h(D)}function O(){let e=o,a;return A(t=>{let n=g(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=v(()=>import(n),__vite__mapDeps([]))),o&&(e=!1),r},s.NotFound)}o&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{T as createApp}; +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = [] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} diff --git a/docs/.vitepress/dist/assets/chunks/@localSearchIndexroot.CW-uRQkK.js b/docs/.vitepress/dist/assets/chunks/@localSearchIndexroot.CW-uRQkK.js new file mode 100644 index 0000000..0cf5bcf --- /dev/null +++ b/docs/.vitepress/dist/assets/chunks/@localSearchIndexroot.CW-uRQkK.js @@ -0,0 +1 @@ +const e=`{"documentCount":82,"nextId":82,"documentIds":{"0":"/api/changelog.html#changelog","1":"/api/changelog.html#_2-3-february-2024","2":"/api/changelog.html#_2-2-12-june-2023","3":"/api/changelog.html#_2-2-11-may-2023","4":"/api/changelog.html#_2-2-10-may-2023","5":"/api/changelog.html#_2-2-9-may-2023","6":"/api/changelog.html#_2-2-8-april-2022","7":"/api/changelog.html#_2-2-7-september-2021","8":"/api/changelog.html#_2-2-6-july-2021","9":"/api/changelog.html#_2-2-5-march-2021","10":"/api/changelog.html#_2-2-4-october-2020","11":"/api/changelog.html#_2-2-3-september-2020","12":"/api/changelog.html#_2-2-2-september-2020","13":"/api/changelog.html#_2-2-1-september-2020","14":"/api/changelog.html#_2-2-0-september-2020","15":"/api/changelog.html#_2-1-1-october-2018","16":"/api/changelog.html#_2-1-october-2018","17":"/api/changelog.html#_2-1-dev-branch-january-2017","18":"/api/changelog.html#_2-0-april-2016","19":"/guide/browser-support.html#browser-support","20":"/guide/browser-support.html#mobile-browsers","21":"/guide/browser-support.html#pdf-rendering-engines","22":"/guide/browser-support.html#pdfium","23":"/guide/browser-support.html#preview","24":"/guide/browser-support.html#pdf-js","25":"/guide/browser-support.html#pdf-browser-plugins","26":"/guide/browser-support.html#pdf-open-parameters","27":"/guide/browser-support.html#browser-support-for-parameters","28":"/guide/cdn.html#npm-and-cdn","29":"/api/#pdfobject-api","30":"/api/#pdfobject-supportspdfs","31":"/api/#pdfobject-pdfobjectversion","32":"/api/#pdfobject-embed","33":"/api/#specifying-a-target","34":"/api/#options","35":"/api/#page","36":"/api/#fallbacklink","37":"/api/#pdfopenparams","38":"/api/#title","39":"/api/#id","40":"/api/#customattribute","41":"/api/#pdfjs-url","42":"/api/#forcepdfjs","43":"/api/#height","44":"/api/#width","45":"/api/#omitinlinestyles","46":"/api/#suppressconsole","47":"/examples/#common-use-cases","48":"/examples/#full-browser-embed","49":"/examples/#passing-an-html-element-instead-of-a-selector","50":"/examples/#setting-the-pdf-size","51":"/examples/#specifying-what-page-to-open","52":"/examples/#custom-fallback-message","53":"/examples/#callback-on-onload-event","54":"/examples/#displaying-base64-pdfs","55":"/examples/#integrating-pdf-js","56":"/guide/#guide","57":"/guide/quick-start.html#quick-start","58":"/guide/quick-start.html#_1-create-a-container-to-hold-your-pdf","59":"/guide/quick-start.html#_2-add-the-pdfobject-script-to-your-page-then-tell-pdfobject-which-pdf-to-embed-and-where-to-embed-it","60":"/guide/quick-start.html#_3-optional-use-css-to-change-the-appearance-of-the-containing-element-such-as-height-width-border-margins-etc","61":"/guide/quick-start.html#_4-optional-specify-additional-parameters-for-displaying-the-pdf","62":"/guide/why-pdfobject.html#why-pdfobject","63":"/guide/why-pdfobject.html#how-pdfobject-can-help-your-project","64":"/guide/why-pdfobject.html#browser-support-detection-for-inline-embedded-pdfs","65":"/guide/why-pdfobject.html#automatic-fallback-links-when-the-browser-does-not-support-inline-pdfs","66":"/guide/why-pdfobject.html#simplified-management-of-pdf-open-parameters","67":"/guide/why-pdfobject.html#plays-well-with-others","68":"/guide/why-pdfobject.html#what-pdfobject-doesn-t-do","69":"/guide/why-pdfobject.html#not-a-pdf-rendering-engine","70":"/guide/why-pdfobject.html#cannot-customize-the-look-and-feel-of-the-pdf-toolbar","71":"/guide/why-pdfobject.html#does-not-validate-that-the-pdf-is-actually-rendered","72":"/guide/why-pdfobject.html#does-not-magically-implement-pdf-open-parameters","73":"/guide/why-pdfobject.html#pdfobject-backstory","74":"/static/#how-to-embed-a-pdf-without-using-javascript","75":"/static/#embed","76":"/static/#iframe","77":"/static/#object","78":"/static/#object-iframe-object","79":"/vue/#pdfobject-for-vue-3","80":"/vue/#build-mode","81":"/vue/#standalone-mode"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,1],"1":[5,1,174],"2":[5,1,12],"3":[5,1,14],"4":[5,1,16],"5":[5,1,26],"6":[5,1,44],"7":[5,1,10],"8":[5,1,35],"9":[5,1,60],"10":[5,1,13],"11":[5,1,6],"12":[4,1,16],"13":[5,1,10],"14":[5,1,215],"15":[5,1,13],"16":[5,1,39],"17":[7,1,19],"18":[5,1,17],"19":[2,1,94],"20":[2,2,102],"21":[3,2,53],"22":[1,5,34],"23":[1,5,23],"24":[2,5,20],"25":[3,2,44],"26":[3,2,128],"27":[4,5,80],"28":[3,1,23],"29":[2,1,8],"30":[2,2,113],"31":[2,2,13],"32":[2,2,75],"33":[3,3,35],"34":[1,2,34],"35":[1,3,43],"36":[1,3,85],"37":[1,3,68],"38":[1,3,67],"39":[1,3,36],"40":[1,3,88],"41":[2,3,57],"42":[1,3,43],"43":[1,3,59],"44":[1,3,59],"45":[1,3,44],"46":[1,3,36],"47":[3,1,12],"48":[3,3,41],"49":[8,3,48],"50":[4,3,98],"51":[5,3,80],"52":[3,3,88],"53":[4,3,53],"54":[3,3,33],"55":[3,3,140],"56":[1,1,45],"57":[2,1,31],"58":[8,2,9],"59":[16,2,18],"60":[19,2,10],"61":[10,2,30],"62":[3,1,1],"63":[6,3,1],"64":[8,7,64],"65":[12,7,64],"66":[6,7,41],"67":[4,7,22],"68":[5,3,1],"69":[6,6,71],"70":[10,6,64],"71":[10,6,41],"72":[8,6,27],"73":[2,3,215],"74":[8,1,39],"75":[4,8,74],"76":[4,8,44],"77":[4,8,76],"78":[5,8,70],"79":[4,1,65],"80":[2,4,58],"81":[2,4,77]},"averageFieldLength":[4.219512195121951,2.878048780487807,50.670731707317074],"storedFields":{"0":{"title":"Changelog","titles":[]},"1":{"title":"2.3 (February 2024)","titles":["Changelog"]},"2":{"title":"2.2.12 (June 2023)","titles":["Changelog"]},"3":{"title":"2.2.11 (May 2023)","titles":["Changelog"]},"4":{"title":"2.2.10 (May 2023)","titles":["Changelog"]},"5":{"title":"2.2.9 (May 2023)","titles":["Changelog"]},"6":{"title":"2.2.8 (April 2022)","titles":["Changelog"]},"7":{"title":"2.2.7 (September 2021)","titles":["Changelog"]},"8":{"title":"2.2.6 (July 2021)","titles":["Changelog"]},"9":{"title":"2.2.5 (March 2021)","titles":["Changelog"]},"10":{"title":"2.2.4 (October 2020)","titles":["Changelog"]},"11":{"title":"2.2.3 (September 2020)","titles":["Changelog"]},"12":{"title":"2.2.2 (September 2020)","titles":["Changelog"]},"13":{"title":"2.2.1 (September 2020)","titles":["Changelog"]},"14":{"title":"2.2.0 (September 2020)","titles":["Changelog"]},"15":{"title":"2.1.1 (October 2018)","titles":["Changelog"]},"16":{"title":"2.1 (October 2018)","titles":["Changelog"]},"17":{"title":"2.1 (dev branch January 2017)","titles":["Changelog"]},"18":{"title":"2.0 (April 2016)","titles":["Changelog"]},"19":{"title":"Browser Support","titles":[]},"20":{"title":"Mobile Browsers","titles":["Browser Support"]},"21":{"title":"PDF Rendering Engines","titles":["Browser Support"]},"22":{"title":"PDFium","titles":["Browser Support","PDF Rendering Engines"]},"23":{"title":"Preview","titles":["Browser Support","PDF Rendering Engines"]},"24":{"title":"PDF.js","titles":["Browser Support","PDF Rendering Engines"]},"25":{"title":"PDF Browser Plugins","titles":["Browser Support"]},"26":{"title":"PDF Open Parameters","titles":["Browser Support"]},"27":{"title":"Browser Support for Parameters","titles":["Browser Support","PDF Open Parameters"]},"28":{"title":"NPM and CDN","titles":[]},"29":{"title":"PDFObject API","titles":[]},"30":{"title":"PDFObject.supportsPDFs","titles":["PDFObject API"]},"31":{"title":"PDFObject.pdfobjectversion","titles":["PDFObject API"]},"32":{"title":"PDFObject.embed","titles":["PDFObject API"]},"33":{"title":"Specifying a target","titles":["PDFObject API","PDFObject.embed"]},"34":{"title":"Options","titles":["PDFObject API"]},"35":{"title":"page","titles":["PDFObject API","Options"]},"36":{"title":"fallbackLink","titles":["PDFObject API","Options"]},"37":{"title":"pdfOpenParams","titles":["PDFObject API","Options"]},"38":{"title":"title","titles":["PDFObject API","Options"]},"39":{"title":"id","titles":["PDFObject API","Options"]},"40":{"title":"customAttribute","titles":["PDFObject API","Options"]},"41":{"title":"PDFJS_URL","titles":["PDFObject API","Options"]},"42":{"title":"forcePDFJS","titles":["PDFObject API","Options"]},"43":{"title":"height","titles":["PDFObject API","Options"]},"44":{"title":"width","titles":["PDFObject API","Options"]},"45":{"title":"omitInlineStyles","titles":["PDFObject API","Options"]},"46":{"title":"suppressConsole","titles":["PDFObject API","Options"]},"47":{"title":"Common Use Cases","titles":[]},"48":{"title":"Full-browser embed","titles":["Common Use Cases"]},"49":{"title":"Passing an HTML element instead of a selector","titles":["Common Use Cases"]},"50":{"title":"Setting the PDF size","titles":["Common Use Cases"]},"51":{"title":"Specifying what page to open","titles":["Common Use Cases"]},"52":{"title":"Custom fallback message","titles":["Common Use Cases"]},"53":{"title":"Callback on onload event","titles":["Common Use Cases"]},"54":{"title":"Displaying Base64 PDFs","titles":["Common Use Cases"]},"55":{"title":"Integrating PDF.js","titles":["Common Use Cases"]},"56":{"title":"Guide","titles":[]},"57":{"title":"Quick start","titles":[]},"58":{"title":"1. Create a container to hold your PDF","titles":["Quick start"]},"59":{"title":"2. Add the PDFObject script to your page, then tell PDFObject which PDF to embed, and where to embed it","titles":["Quick start"]},"60":{"title":"3. Optional: Use CSS to change the appearance of the containing element, such as height, width, border, margins, etc.","titles":["Quick start"]},"61":{"title":"4. Optional: Specify additional parameters for displaying the PDF.","titles":["Quick start"]},"62":{"title":"Why PDFObject?","titles":[]},"63":{"title":"How PDFObject can help your project","titles":["Why PDFObject?"]},"64":{"title":"Browser support detection for inline/embedded PDFs.","titles":["Why PDFObject?","How PDFObject can help your project"]},"65":{"title":"Automatic fallback links when the browser does not support inline PDFs.","titles":["Why PDFObject?","How PDFObject can help your project"]},"66":{"title":"Simplified management of PDF Open Parameters","titles":["Why PDFObject?","How PDFObject can help your project"]},"67":{"title":"Plays well with others","titles":["Why PDFObject?","How PDFObject can help your project"]},"68":{"title":"What PDFObject doesn't do","titles":["Why PDFObject?"]},"69":{"title":"Not a PDF rendering engine.","titles":["Why PDFObject?","What PDFObject doesn't do"]},"70":{"title":"Cannot customize the look and feel of the PDF toolbar.","titles":["Why PDFObject?","What PDFObject doesn't do"]},"71":{"title":"Does not validate that the PDF is actually rendered.","titles":["Why PDFObject?","What PDFObject doesn't do"]},"72":{"title":"Does not magically implement PDF Open Parameters.","titles":["Why PDFObject?","What PDFObject doesn't do"]},"73":{"title":"PDFObject backstory","titles":["Why PDFObject?"]},"74":{"title":"How to embed a PDF without using JavaScript","titles":[]},"75":{"title":"<embed>","titles":["How to embed a PDF without using JavaScript"]},"76":{"title":"<iframe>","titles":["How to embed a PDF without using JavaScript"]},"77":{"title":"<object>","titles":["How to embed a PDF without using JavaScript"]},"78":{"title":"<object><iframe></object>","titles":["How to embed a PDF without using JavaScript"]},"79":{"title":"PDFObject for Vue 3","titles":[]},"80":{"title":"Build mode","titles":["PDFObject for Vue 3"]},"81":{"title":"Standalone mode","titles":["PDFObject for Vue 3"]}},"dirtCount":0,"index":[[">download",{"2":{"77":1,"78":1}}],[">you",{"2":{"52":1}}],[">",{"2":{"38":1,"39":1,"50":4,"57":2,"58":1,"59":1,"75":1,"76":1,"77":1,"78":2,"80":1,"81":4}}],[">fallback",{"2":{"36":2}}],["$container",{"2":{"49":2}}],["$",{"2":{"33":1,"49":1}}],["$node",{"2":{"33":2}}],["zoom",{"2":{"27":2}}],["xqscmvuzhn0cmvhbqplbmrvymokmsawig9iago8pc9uexblic9qywdlcwovs2lkcybbmyawifigxqovq291bnqgmqovtwvkawfcb3ggwzagmca1otuumjggodqxljg5xqo+pgplbmrvymoknsawig9iago8pc9uexblic9gb250ci9cyxnlrm9udcavsgvsdmv0awnhci9tdwj0exblic9uexblmqovrw5jb2rpbmcgl1dpbkfuc2lfbmnvzgluzwo+pgplbmrvymokmiawig9iago8paovuhjvy1nldcbbl1beriavvgv4dcavsw1hz2vcic9jbwfnzumgl0ltywdlsv0kl0zvbnqgpdwkl0yxidugmcbscj4+ci9yt2jqzwn0idw8cj4+cj4+cmvuzg9iago2idagb2jqcjw8ci9qcm9kdwnlciaouhlguergideuny4yigh0dha6ly9wewzwzgyuz29vz2xly29kzs5jb20vkqovq3jlyxrpb25eyxrlicheojiwmjqwmja4mdiymtizkqo+pgplbmrvymoknyawig9iago8paovvhlwzsavq2f0ywxvzwovugfnzxmgmsawifikl09wzw5by3rpb24gwzmgmcbsic9gaxriig51bgxdci9qywdltgf5b3v0ic9pbmvdb2x1bw4kpj4kzw5kb2jqcnhyzwykmca4cjawmdawmdawmdagnju1mzugziakmdawmdawmdi1ocawmdawmcbuiaowmdawmdawndqxidawmdawig4gcjawmdawmdawmdkgmdawmdagbiakmdawmdawmda4nyawmdawmcbuiaowmdawmdawmzq1idawmdawig4gcjawmdawmda1ndugmdawmdagbiakmdawmdawmdy1ncawmdawmcbuiap0cmfpbgvycjw8ci9taxplidgkl1jvb3qgnyawifikl0luzm8gniawifikpj4kc3rhcnr4cmvmcjc1nwoljuvprgo=",{"2":{"54":1}}],["x3c",{"2":{"36":8,"38":1,"39":1,"50":10,"52":2,"57":8,"58":2,"59":4,"61":2,"75":1,"76":2,"77":6,"78":6,"80":1,"81":7}}],["x",{"2":{"16":1,"18":1,"19":1,"67":1}}],["~5",{"2":{"14":1}}],["===",{"2":{"14":2}}],["=",{"2":{"14":1,"33":2,"34":1,"36":1,"40":3,"49":2,"51":2,"52":1,"53":1,"54":1,"61":1,"80":1,"81":2}}],["000",{"2":{"73":1}}],["0",{"0":{"14":1,"18":1},"2":{"14":1,"18":1,"26":1,"31":1,"45":1}}],["jvberi0xljmkmyawig9iago8pc9uexblic9qywdlci9qyxjlbnqgmsawifikl1jlc291cmnlcyayidagugovq29udgvudhmgncawifi+pgplbmrvymokncawig9iago8pc9gawx0zxigl0zsyxrlrgvjb2rlic9mzw5ndgggmtaxpj4kc3ryzwftcnicfcytdoaggebhzlw8uqscu5mvqcfk+g6akf4f2ydj7tvs2z5wfbymekermse0s4ruxajqgykkyahlwkmpxqntqoi6i9zxrryrm38",{"2":{"54":1}}],["jquery",{"2":{"33":2,"49":1,"67":1}}],["javascript",{"0":{"74":1},"1":{"75":1,"76":1,"77":1,"78":1},"2":{"24":1,"46":1,"71":1,"73":3,"74":1,"78":1}}],["january",{"0":{"17":1}}],["jsconst",{"2":{"81":1}}],["jsconsole",{"2":{"31":1}}],["jsimport",{"2":{"80":1}}],["jsif",{"2":{"30":1}}],["jslet",{"2":{"49":2,"52":1,"53":1,"54":1}}],["jsvar",{"2":{"36":1,"40":2,"51":2}}],["jspdfobject",{"2":{"35":1,"37":1,"38":1,"39":1,"43":1,"44":1,"48":2,"50":1,"55":1}}],["jsdelivr",{"2":{"28":1}}],["js",{"0":{"24":1,"55":1},"2":{"14":3,"24":1,"26":1,"27":1,"30":3,"32":1,"33":3,"34":1,"37":1,"41":7,"42":4,"55":12,"61":1,"67":1,"69":4,"70":1,"71":1,"80":1}}],["john",{"2":{"12":1,"14":1}}],["just",{"2":{"52":1,"54":1,"56":1}}],["july",{"0":{"8":1}}],["june",{"0":{"2":1}}],["404",{"2":{"71":1}}],["4",{"0":{"10":1,"61":1}}],["500px",{"2":{"43":1,"44":1,"50":1,"57":1,"60":1}}],["5",{"0":{"9":1}}],["6",{"0":{"8":1}}],["7",{"0":{"7":1},"2":{"14":1,"26":1}}],["8",{"0":{"6":1},"2":{"26":1}}],["9",{"0":{"5":1}}],["yes",{"2":{"64":1}}],["yay",{"2":{"30":1}}],["yandex",{"2":{"21":1}}],["you",{"2":{"14":2,"19":3,"20":1,"26":2,"28":1,"32":1,"37":1,"40":4,"41":3,"45":1,"48":1,"49":1,"50":5,"51":1,"52":4,"55":5,"56":1,"64":5,"65":4,"69":1,"70":1,"71":3,"73":1,"77":2,"78":1,"81":1}}],["yourself",{"2":{"27":1}}],["your",{"0":{"58":1,"59":1,"63":1},"1":{"64":1,"65":1,"66":1,"67":1},"2":{"1":1,"14":1,"38":2,"43":1,"44":1,"45":1,"49":1,"50":3,"55":5,"64":2,"65":3,"66":1,"67":1,"70":1,"77":1,"80":2,"81":2}}],["yup",{"2":{"3":1}}],["vue",{"0":{"79":1},"1":{"80":1,"81":1},"2":{"79":6,"80":9,"81":7}}],["ve",{"2":{"78":1}}],["versus",{"2":{"56":1}}],["version",{"2":{"3":1,"4":1,"8":1,"11":1,"14":1,"16":1,"31":1,"38":2,"81":3}}],["verify",{"2":{"55":1,"71":1,"73":1}}],["very",{"2":{"25":1,"76":1}}],["vastly",{"2":{"73":1}}],["validate",{"0":{"71":1}}],["valid",{"2":{"46":1,"71":2}}],["values",{"2":{"40":1}}],["value",{"2":{"40":4}}],["vanilla",{"2":{"33":1,"49":2}}],["vary",{"2":{"74":1}}],["variation",{"2":{"55":1}}],["variable",{"2":{"14":1}}],["various",{"2":{"32":1,"56":1}}],["var",{"2":{"14":2,"33":2,"34":1}}],["video",{"2":{"73":1}}],["visitor",{"2":{"65":1,"73":1}}],["views",{"2":{"55":1}}],["viewer",{"2":{"37":1,"41":1,"42":1,"55":3}}],["view",{"2":{"34":1,"36":1,"52":1,"77":2,"78":2}}],["viewrect",{"2":{"1":1,"27":1}}],["vivaldi",{"2":{"21":1}}],["via",{"2":{"8":1,"14":5,"43":1,"44":1,"50":1,"70":1,"79":2,"80":4,"81":3}}],["1px",{"2":{"57":1,"60":1}}],["1",{"0":{"13":1,"15":2,"16":1,"17":1,"58":1},"2":{"18":1,"26":1,"35":1}}],["100",{"2":{"43":2,"44":2,"50":3,"73":1,"75":2,"76":2,"77":2,"78":4}}],["10",{"0":{"4":1},"2":{"37":2}}],["11",{"0":{"3":1},"2":{"8":1,"19":1,"30":1}}],["12",{"0":{"2":1},"2":{"14":1}}],["hyphenated",{"2":{"81":2}}],["hutchison",{"2":{"73":1}}],["hunter",{"2":{"12":1,"14":1}}],["hiccuped",{"2":{"73":1}}],["his",{"2":{"73":2}}],["hide",{"2":{"70":1}}],["highlight",{"2":{"1":1,"27":1}}],["https",{"2":{"57":1,"59":1,"79":2,"81":3}}],["html5",{"2":{"75":2}}],["html",{"0":{"49":1},"2":{"20":1,"32":1,"33":3,"36":1,"41":1,"49":3,"50":1,"55":1,"57":1,"58":1,"59":1,"73":2,"74":1,"75":2,"76":1,"77":1,"78":2,"81":1}}],["href=",{"2":{"36":3,"52":2,"77":1,"78":1}}],["he",{"2":{"73":1}}],["height=",{"2":{"75":1,"76":1,"77":1,"78":2}}],["height",{"0":{"43":1,"60":1},"2":{"43":3,"45":1,"50":4,"57":1,"60":1}}],["here",{"2":{"26":2,"35":1,"36":1,"38":1,"39":1,"47":1,"55":1}}],["help",{"0":{"63":1},"1":{"64":1,"65":1,"66":1,"67":1},"2":{"26":1}}],["helps",{"2":{"14":2,"50":1,"64":1}}],["helped",{"2":{"6":1}}],["hood",{"2":{"79":1}}],["hosting",{"2":{"55":1}}],["hosted",{"2":{"28":1,"55":1}}],["how",{"0":{"63":1,"74":1},"1":{"64":1,"65":1,"66":1,"67":1,"75":1,"76":1,"77":1,"78":1},"2":{"38":1,"77":1,"78":1}}],["however",{"2":{"9":1,"40":1,"51":1,"70":1,"76":1}}],["hold",{"0":{"58":1},"2":{"25":1}}],["happens",{"2":{"75":1}}],["having",{"2":{"73":2}}],["have",{"2":{"1":1,"14":3,"26":1,"38":1,"48":1,"55":2,"65":1}}],["handle",{"2":{"73":1}}],["handling",{"2":{"1":1,"5":1,"6":2,"15":1}}],["handy",{"2":{"51":1}}],["hard",{"2":{"26":3,"43":1,"44":1}}],["hat",{"2":{"5":1,"6":2,"12":1,"14":1}}],["hassle",{"2":{"66":1}}],["has",{"2":{"1":2,"26":2,"30":1,"53":3,"55":1,"73":2,"77":1}}],["had",{"2":{"1":1}}],["questionmark",{"2":{"27":1}}],["queryselector",{"2":{"49":1}}],["query",{"2":{"1":1,"30":1}}],["quick",{"0":{"57":1},"1":{"58":1,"59":1,"60":1,"61":1},"2":{"56":2}}],["quickly",{"2":{"20":1}}],["quirks",{"2":{"1":1}}],["quot",{"2":{"9":2,"14":4,"19":8,"35":2,"36":2,"38":4,"40":2,"43":2,"44":2,"46":4,"65":8}}],["write",{"2":{"38":1,"69":1}}],["week",{"2":{"73":1}}],["well",{"0":{"67":1},"2":{"37":1,"69":1}}],["we",{"2":{"26":1,"69":1}}],["websites",{"2":{"73":1}}],["webpages",{"2":{"64":1}}],["webpage",{"2":{"55":1}}],["webkit",{"2":{"21":1,"23":1}}],["web",{"2":{"21":1,"26":1,"55":1,"73":2}}],["were",{"2":{"19":1,"25":1,"26":1,"65":1,"73":1}}],["want",{"2":{"55":2}}],["wasn",{"2":{"73":1}}],["was",{"2":{"23":1,"73":10}}],["warning",{"2":{"21":1,"37":1,"45":1}}],["ways",{"2":{"76":1,"79":1}}],["way",{"2":{"20":2,"66":1}}],["worry",{"2":{"66":1}}],["working",{"2":{"73":1}}],["workaround",{"2":{"53":1}}],["works",{"2":{"51":1,"67":1,"78":1}}],["worked",{"2":{"26":1}}],["work",{"2":{"16":1,"74":2}}],["would",{"2":{"26":1,"28":1,"40":1,"41":1,"52":1,"73":1}}],["wondering",{"2":{"19":1,"65":1}}],["why",{"0":{"62":1},"1":{"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1},"2":{"56":1}}],["while",{"2":{"25":1,"51":1}}],["which",{"0":{"59":1},"2":{"14":2,"21":3,"23":1,"26":1,"48":1,"51":1,"71":1,"73":2,"75":1,"79":2}}],["where",{"0":{"59":1},"2":{"14":1,"49":1,"55":1,"56":1}}],["when",{"0":{"65":1},"2":{"13":1,"14":1,"19":1,"20":1,"26":2,"36":1,"43":1,"44":1,"45":1,"51":2,"52":2,"55":1,"61":1,"66":1,"73":1,"75":1,"76":1}}],["whether",{"2":{"9":1,"53":2,"64":1,"71":1}}],["who",{"2":{"6":1,"14":1,"30":1}}],["what",{"0":{"51":1,"68":1},"1":{"69":1,"70":1,"71":1,"72":1},"2":{"1":1,"30":1,"78":1}}],["widely",{"2":{"51":1,"72":1,"76":1}}],["width=",{"2":{"75":1,"76":1,"77":1,"78":2}}],["width",{"0":{"44":1,"60":1},"2":{"44":3,"50":4}}],["wish",{"2":{"30":1}}],["without",{"0":{"74":1},"1":{"75":1,"76":1,"77":1,"78":1},"2":{"16":1,"66":1,"74":1}}],["with",{"0":{"67":1},"2":{"10":1,"14":3,"18":1,"19":1,"20":1,"21":1,"22":1,"24":1,"27":5,"32":1,"34":1,"41":3,"42":2,"50":1,"51":1,"52":1,"53":1,"55":1,"67":3,"73":3,"75":2,"78":3}}],["within",{"2":{"3":1,"20":1,"51":2}}],["window",{"2":{"10":1,"32":1,"48":1}}],["will",{"2":{"1":8,"9":2,"14":2,"16":3,"19":1,"20":1,"22":1,"30":7,"32":2,"35":2,"36":3,"37":1,"38":2,"39":2,"40":1,"41":3,"42":1,"43":2,"44":2,"45":1,"48":2,"50":4,"51":1,"52":1,"55":2,"64":1,"65":2,"66":1,"74":1,"75":1}}],["know",{"2":{"49":1,"64":1}}],["known",{"2":{"1":2,"30":2}}],["key",{"2":{"19":1,"40":3}}],["keep",{"2":{"1":1}}],["kind",{"2":{"1":1,"30":1}}],["kick",{"2":{"1":1}}],["gotchas",{"2":{"73":1}}],["google",{"2":{"19":1,"21":1}}],["gap",{"2":{"73":1}}],["guide",{"0":{"56":1}}],["github",{"2":{"26":1,"79":2}}],["give",{"2":{"20":1}}],["given",{"2":{"9":1}}],["ghostery",{"2":{"21":1}}],["generally",{"2":{"73":1}}],["general",{"2":{"70":1}}],["generates",{"2":{"50":1}}],["generated",{"2":{"38":1,"39":1,"43":1,"44":1,"54":1}}],["generating",{"2":{"45":1}}],["gecko",{"2":{"21":1}}],["getelementbyid",{"2":{"33":1}}],["get",{"2":{"20":1,"56":1,"79":1}}],["grossly",{"2":{"21":1}}],["great",{"2":{"66":1,"67":1}}],["green",{"2":{"9":1,"27":1}}],["greuel",{"2":{"6":1}}],["g",{"2":{"1":1,"30":1}}],["gt",{"0":{"75":1,"76":1,"77":1,"78":3},"2":{"1":6,"14":4,"32":1,"36":4,"38":2,"39":1,"40":2,"43":1,"44":1,"45":2,"50":4,"52":2,"56":1,"64":1,"69":1,"73":9,"75":4,"76":2,"77":4,"78":3,"79":1,"80":1,"81":4}}],["null",{"2":{"35":1,"37":1,"39":1,"40":1,"41":1,"42":1}}],["number",{"2":{"3":1,"8":1,"35":4,"51":2}}],["nightmare",{"2":{"20":1}}],["nice",{"2":{"10":1}}],["network",{"2":{"71":1}}],["networks",{"2":{"28":1}}],["next",{"2":{"23":1}}],["nextjs",{"2":{"10":1}}],["needed",{"2":{"14":1,"40":1,"73":1}}],["need",{"2":{"14":1,"16":1,"41":1,"64":1,"69":1,"70":1}}],["needs",{"2":{"9":1,"49":1,"70":1}}],["new",{"2":{"14":6}}],["npm",{"0":{"28":1},"2":{"4":1,"11":1,"28":2,"56":1,"67":1,"73":1,"80":3}}],["navigate",{"2":{"61":1}}],["navigator",{"2":{"1":5,"17":2,"30":4}}],["navpanes",{"2":{"27":1}}],["nameddest",{"2":{"27":1}}],["names",{"2":{"14":1}}],["native",{"2":{"22":1,"23":1,"24":1,"25":2,"41":1,"55":1,"73":2}}],["natively",{"2":{"1":1,"14":1,"30":1,"73":2}}],["naturally",{"2":{"1":1}}],["none",{"2":{"74":1,"78":1}}],["normally",{"2":{"71":1}}],["node",{"2":{"14":1,"33":3,"49":1}}],["now",{"2":{"14":2,"19":1,"26":1,"73":1,"78":1}}],["novodchuck",{"2":{"9":1}}],["no",{"2":{"1":2,"14":2,"20":1,"26":1,"30":1,"39":1,"48":1,"55":2,"64":1,"73":2}}],["nothing",{"2":{"36":1,"75":1}}],["note",{"2":{"8":1,"14":1,"20":1,"30":1,"37":1,"38":1,"69":1,"74":1,"80":1,"81":1}}],["not",{"0":{"65":1,"69":1,"71":1,"72":1},"2":{"1":6,"9":1,"14":3,"15":1,"18":1,"19":3,"20":1,"26":1,"30":5,"36":1,"37":1,"38":1,"41":4,"42":3,"45":1,"46":2,"51":1,"52":1,"55":5,"64":4,"69":2,"70":1,"71":1,"72":1,"76":1,"77":2,"78":3,"79":1}}],["utilities",{"2":{"73":2}}],["utility",{"2":{"16":1,"64":1,"78":1}}],["ubiquitous",{"2":{"25":1}}],["ushered",{"2":{"73":1}}],["usually",{"2":{"73":1}}],["usability",{"2":{"20":1}}],["using",{"0":{"74":1},"1":{"75":1,"76":1,"77":1,"78":1},"2":{"14":1,"41":1,"43":1,"44":1,"50":3,"51":1,"52":2,"55":2,"56":1,"69":1,"71":2,"73":1,"74":1,"78":1}}],["uses",{"2":{"73":1,"79":1}}],["use",{"0":{"47":1,"60":1},"1":{"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1},"2":{"14":3,"28":1,"30":1,"36":1,"41":1,"42":1,"47":1,"49":1,"55":2,"56":1,"70":1,"73":1,"77":1,"79":1,"80":2,"81":4}}],["users",{"2":{"16":1,"52":1,"65":1}}],["user",{"2":{"1":1,"9":1,"30":1,"52":1,"55":1,"65":1,"66":1,"75":1}}],["used",{"2":{"1":2,"21":3,"30":1,"41":1,"51":1,"71":1,"73":2,"75":1}}],["unlike",{"2":{"77":1}}],["unless",{"2":{"71":1}}],["unofficial",{"2":{"75":1}}],["units",{"2":{"43":1,"44":1}}],["universally",{"2":{"1":1}}],["unspecified",{"2":{"35":1,"38":1,"39":1,"43":1,"44":1}}],["unsupported",{"2":{"27":1,"66":1}}],["unpkg",{"2":{"28":1,"57":1,"59":1,"81":4}}],["untested",{"2":{"27":1}}],["unfortunately",{"2":{"26":1,"75":1}}],["unforeseen",{"2":{"14":1}}],["unable",{"2":{"20":1,"32":1,"52":1}}],["under",{"2":{"69":1,"79":1}}],["underlying",{"2":{"6":1}}],["undefined",{"2":{"14":2}}],["updated",{"2":{"26":2}}],["update",{"2":{"14":1}}],["up",{"2":{"4":1,"56":1}}],["url=",{"2":{"80":1,"81":1}}],["url",{"0":{"41":1},"2":{"1":1,"6":1,"14":1,"19":1,"26":1,"30":1,"32":3,"36":5,"41":3,"42":1,"46":1,"52":5,"54":1,"55":1,"66":1,"71":1,"80":2,"81":2}}],["lazy",{"2":{"40":1}}],["last",{"2":{"26":1}}],["latest",{"2":{"16":1}}],["ll",{"2":{"20":1}}],["lucky",{"2":{"19":1,"65":1}}],["leave",{"2":{"77":1}}],["lead",{"2":{"14":1}}],["left",{"2":{"35":1,"38":1,"39":1,"43":1,"44":1}}],["legible",{"2":{"14":1}}],["let",{"2":{"14":2,"20":1,"40":1,"52":1,"61":1}}],["led",{"2":{"1":1,"73":1}}],["limitations",{"2":{"69":1}}],["links",{"0":{"65":1}}],["link",{"2":{"36":2,"52":4,"65":3}}],["lines",{"2":{"37":1}}],["line",{"2":{"2":1}}],["list",{"2":{"26":1,"37":1}}],["listed",{"2":{"21":1,"27":1}}],["like",{"2":{"20":1,"28":1,"40":1,"41":1,"52":4,"73":1}}],["lieu",{"2":{"14":1}}],["light",{"2":{"9":1}}],["look",{"0":{"70":1},"2":{"55":1}}],["lose",{"2":{"50":1}}],["lot",{"2":{"34":1}}],["loaded",{"2":{"53":2,"81":1}}],["loads",{"2":{"51":1}}],["loading",{"2":{"40":1,"53":1}}],["load",{"2":{"16":1,"37":1,"53":1,"55":2}}],["lower",{"2":{"14":1}}],["log",{"2":{"30":2,"31":1,"53":1}}],["logging",{"2":{"14":1}}],["logic",{"2":{"1":3,"30":1}}],["longer",{"2":{"1":1,"14":1,"73":1}}],["lt",{"0":{"75":1,"76":1,"77":1,"78":3},"2":{"1":6,"14":4,"32":1,"36":4,"38":2,"39":1,"40":2,"43":1,"44":1,"45":2,"50":4,"52":2,"56":1,"64":1,"69":1,"73":9,"75":4,"76":2,"77":4,"78":3,"79":1,"80":1,"81":4}}],["routine",{"2":{"73":1}}],["robust",{"2":{"1":1,"75":1}}],["run",{"2":{"73":1}}],["running",{"2":{"56":1}}],["rules",{"2":{"50":1}}],["russia",{"2":{"21":1}}],["rusty",{"2":{"3":1,"4":1}}],["rewritten",{"2":{"73":1}}],["re",{"2":{"64":1,"71":1}}],["recommended",{"2":{"50":1}}],["reliance",{"2":{"73":1}}],["relative",{"2":{"32":1}}],["release",{"2":{"18":1}}],["returned",{"2":{"40":1}}],["return",{"2":{"30":4}}],["returns",{"2":{"30":1,"31":1,"32":1}}],["reverse",{"2":{"27":1}}],["replace",{"2":{"52":1}}],["replaced",{"2":{"14":1}}],["represents",{"2":{"27":1}}],["rem",{"2":{"43":1,"44":1}}],["reminder",{"2":{"27":1}}],["removal",{"2":{"17":1}}],["removing",{"2":{"1":1,"22":1}}],["removed",{"2":{"1":1,"14":1}}],["referring",{"2":{"20":1}}],["refactored",{"2":{"2":1,"6":1,"14":4}}],["render",{"2":{"55":1,"69":1}}],["rendering",{"0":{"21":1,"69":1},"1":{"22":1,"23":1,"24":1},"2":{"19":1,"21":1,"23":1,"24":1,"30":1,"69":1,"70":1,"72":2,"73":1,"76":1}}],["rendered",{"0":{"71":1},"2":{"9":1,"14":1,"20":1,"42":1,"55":1,"71":1}}],["requires",{"2":{"81":1}}],["require",{"2":{"79":1}}],["required",{"2":{"32":1,"73":1,"81":1}}],["requiring",{"2":{"16":1}}],["requested",{"2":{"14":1}}],["request",{"2":{"14":1}}],["really",{"2":{"70":1}}],["readers",{"2":{"25":1,"38":1}}],["reader",{"2":{"22":2,"25":2,"26":2,"30":1,"37":2,"38":1,"73":1}}],["readme",{"2":{"8":1}}],["reason",{"2":{"14":1}}],["reasoning",{"2":{"14":1}}],["react",{"2":{"10":1}}],["reinstated",{"2":{"10":1}}],["registered",{"2":{"67":1}}],["regardless",{"2":{"9":1,"42":1}}],["regression",{"2":{"5":1}}],["red",{"2":{"27":1}}],["redirection",{"2":{"14":1}}],["redundant",{"2":{"6":1}}],["reduce",{"2":{"6":1}}],["redefining",{"2":{"1":2}}],["reside",{"2":{"55":1}}],["resize",{"2":{"50":1}}],["reserved",{"2":{"40":1}}],["restrictions",{"2":{"69":1}}],["rest",{"2":{"16":1}}],["restore",{"2":{"2":1}}],["responsible",{"2":{"14":1,"69":1}}],["respected",{"2":{"6":1}}],["respect",{"2":{"1":1,"30":1}}],["resolves",{"2":{"5":1,"6":1}}],["results",{"2":{"27":1,"74":1}}],["result",{"2":{"1":1}}],["circumstances",{"2":{"73":1}}],["circa",{"2":{"25":1,"73":1}}],["ccc",{"2":{"57":1,"60":1}}],["cdnjs",{"2":{"28":1}}],["cdns",{"2":{"28":1}}],["cdn",{"0":{"28":1},"2":{"28":3,"56":1,"81":1}}],["center",{"2":{"26":1}}],["createapp",{"2":{"80":2,"81":2}}],["created",{"2":{"73":2}}],["create",{"0":{"58":1}}],["creation",{"2":{"14":1}}],["cross",{"2":{"27":1,"55":1,"69":1}}],["crockford",{"2":{"14":1}}],["critical",{"2":{"14":1}}],["client",{"2":{"79":1}}],["clear",{"2":{"38":1,"73":1}}],["cleaning",{"2":{"4":1}}],["class=",{"2":{"50":2}}],["class",{"2":{"50":1}}],["classname",{"2":{"14":1,"40":1}}],["classlist",{"2":{"14":1}}],["currently",{"2":{"14":1,"20":1}}],["customizing",{"2":{"70":2}}],["customize",{"0":{"70":1},"2":{"70":1}}],["customized",{"2":{"65":1}}],["customers",{"2":{"64":1}}],["customfallback",{"2":{"52":2,"53":1}}],["customattribute",{"0":{"40":1},"2":{"40":2}}],["custom",{"0":{"52":1},"2":{"5":1,"36":1,"40":3,"52":4,"66":1}}],["css",{"0":{"60":1},"2":{"14":1,"33":2,"43":2,"44":2,"45":1,"49":1,"50":5,"60":1}}],["causing",{"2":{"64":1}}],["cause",{"2":{"35":1,"45":1,"48":1}}],["caveats",{"2":{"55":1}}],["callback",{"0":{"53":1},"2":{"53":1}}],["capabilities",{"2":{"25":1}}],["capable",{"2":{"19":1,"20":1,"69":1}}],["care",{"2":{"16":1}}],["cannot",{"0":{"70":1},"2":{"71":1,"72":1}}],["canonical",{"2":{"26":1}}],["can",{"0":{"63":1},"1":{"64":1,"65":1,"66":1,"67":1},"2":{"14":2,"19":1,"26":2,"32":2,"33":1,"40":1,"49":1,"51":1,"52":4,"53":1,"54":1,"55":3,"65":2,"74":1,"79":1,"81":1}}],["cases",{"0":{"47":1},"1":{"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1},"2":{"47":1,"55":1,"56":1}}],["case",{"2":{"9":2,"19":1,"65":1}}],["choice",{"2":{"73":1}}],["choose",{"2":{"45":1}}],["chromium",{"2":{"21":1,"22":2}}],["chrome",{"2":{"1":1,"9":1,"19":1,"21":1,"30":1,"70":1}}],["changes",{"2":{"18":1}}],["changed",{"2":{"16":1}}],["change",{"0":{"60":1},"2":{"14":1,"16":1}}],["changelog",{"0":{"0":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1}}],["checked",{"2":{"53":1}}],["checkmark",{"2":{"27":1}}],["checks",{"2":{"9":1}}],["check",{"2":{"1":2,"10":1,"30":2,"71":1,"78":1}}],["colon",{"2":{"80":1,"81":1}}],["collab",{"2":{"27":1}}],["covers",{"2":{"56":1}}],["correctly",{"2":{"55":1}}],["corporate",{"2":{"25":1}}],["coding",{"2":{"43":1,"44":1}}],["codebase",{"2":{"14":1,"16":1}}],["code",{"2":{"1":1,"2":1,"3":1,"6":1,"14":2,"41":1,"42":1,"56":1}}],["courses",{"2":{"73":1}}],["course",{"2":{"73":1}}],["couldn",{"2":{"73":1}}],["could",{"2":{"40":2}}],["counteract",{"2":{"9":1}}],["coordinates",{"2":{"27":5}}],["component",{"2":{"79":1,"80":1,"81":2}}],["compliant",{"2":{"73":1,"75":1}}],["complications",{"2":{"73":1}}],["completely",{"2":{"70":1}}],["compatible",{"2":{"18":1}}],["compatibility",{"2":{"2":1}}],["com",{"2":{"26":1,"27":1,"57":1,"59":1,"79":2,"81":3}}],["come",{"2":{"26":1}}],["common",{"0":{"47":1},"1":{"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1},"2":{"25":1,"47":1,"52":1,"56":1,"74":1}}],["comment",{"2":{"1":1,"27":1}}],["confusion",{"2":{"64":1}}],["confuse",{"2":{"19":1}}],["configure",{"2":{"81":1}}],["configured",{"2":{"55":1}}],["confirm",{"2":{"6":1}}],["controlled",{"2":{"70":1}}],["controlling",{"2":{"55":1}}],["containing",{"0":{"60":1},"2":{"79":1}}],["container",{"0":{"58":1},"2":{"33":1,"34":2,"35":1,"36":2,"37":3,"38":1,"39":1,"40":2,"43":1,"44":1,"49":3,"50":8,"51":2,"57":1,"60":1}}],["contains",{"2":{"18":1,"53":1}}],["content",{"2":{"1":1,"14":2,"19":1,"20":1,"28":1,"73":3,"75":1,"76":1,"77":3}}],["concise",{"2":{"14":1}}],["convert",{"2":{"65":1}}],["converting",{"2":{"1":1}}],["convenient",{"2":{"37":1}}],["conventions",{"2":{"14":1}}],["const",{"2":{"80":1,"81":1}}],["console",{"2":{"14":2,"30":2,"46":1,"53":1}}],["consistent",{"2":{"1":1,"14":1}}],["much",{"2":{"73":1}}],["multimedia",{"2":{"73":1}}],["must",{"2":{"40":1,"55":2}}],["mute",{"2":{"14":1}}],["myid",{"2":{"39":2}}],["mynode",{"2":{"33":2}}],["my",{"2":{"33":1,"34":3,"35":1,"36":2,"37":3,"38":1,"39":1,"40":2,"43":1,"44":1,"49":3,"50":4,"51":2,"52":1,"53":2,"54":1,"57":2,"58":1,"59":1,"61":1}}],["myfile",{"2":{"32":1,"33":3,"34":1,"35":1,"36":3,"37":3,"38":2,"39":2,"40":2,"43":1,"44":1,"50":3}}],["myvar",{"2":{"14":2}}],["ms",{"2":{"27":1}}],["millions",{"2":{"73":1}}],["mixed",{"2":{"32":2}}],["might",{"2":{"20":1,"64":1}}],["microsoft",{"2":{"19":2,"21":1,"22":1}}],["mimetypes",{"2":{"17":2}}],["mime",{"2":{"9":1,"32":1}}],["media",{"2":{"73":4}}],["member",{"2":{"73":1}}],["meme",{"2":{"26":1}}],["mentioned",{"2":{"72":1}}],["mechanism",{"2":{"70":1,"75":1}}],["message",{"0":{"52":1},"2":{"52":3,"65":1}}],["messages",{"2":{"14":1,"27":1,"46":2,"52":1}}],["method",{"2":{"29":1,"32":1,"73":1}}],["methods",{"2":{"14":1,"79":1}}],["mean",{"2":{"19":1}}],["meier",{"2":{"6":1}}],["m",{"2":{"3":1,"4":1}}],["mount",{"2":{"80":1,"81":1}}],["most",{"2":{"20":1,"47":1,"49":1,"51":1,"52":1,"73":2,"74":2}}],["mozilla",{"2":{"17":1,"19":1,"21":1,"24":1,"41":1,"42":1,"69":1,"70":1}}],["mode",{"0":{"80":1,"81":1},"2":{"79":1}}],["modern",{"2":{"9":2,"14":1,"19":2,"73":1,"74":1,"75":1}}],["modifying",{"2":{"40":1}}],["modified",{"2":{"17":1,"55":1}}],["mobile",{"0":{"20":1},"2":{"1":3,"14":5,"19":1,"20":2,"30":3,"52":1,"55":1,"74":2,"75":1}}],["more",{"2":{"1":1,"14":2,"25":1,"55":1,"73":1}}],["main",{"2":{"80":1}}],["magically",{"0":{"72":1}}],["malfunctioning",{"2":{"55":1}}],["management",{"0":{"66":1}}],["manage",{"2":{"55":1}}],["many",{"2":{"25":1}}],["manual",{"2":{"17":1}}],["markup",{"2":{"75":1,"78":1}}],["marketshare",{"2":{"14":2}}],["margins",{"0":{"60":1}}],["march",{"0":{"9":1}}],["may",{"0":{"3":1,"4":1,"5":1},"2":{"45":1,"55":1}}],["macos",{"2":{"1":1,"8":1,"14":1,"30":1}}],["major",{"2":{"1":1,"73":1}}],["makes",{"2":{"32":1,"66":1}}],["make",{"2":{"1":1,"14":2,"52":1}}],["dramatically",{"2":{"55":1}}],["dropping",{"2":{"14":1}}],["data=",{"2":{"77":1,"78":1}}],["data",{"2":{"54":1}}],["david",{"2":{"9":1}}],["dynamically",{"2":{"54":1}}],["did",{"2":{"73":1}}],["didn",{"2":{"73":1}}],["different",{"2":{"55":1,"70":2}}],["directly",{"2":{"50":2}}],["div>",{"2":{"50":2,"57":1,"58":1}}],["div",{"2":{"50":2,"57":1,"58":1}}],["dimensions",{"2":{"43":1,"44":1,"45":2,"50":4}}],["discrepancies",{"2":{"77":1}}],["discouraged",{"2":{"50":1}}],["discovery",{"2":{"12":1,"14":1}}],["disallowed",{"2":{"40":1}}],["disable",{"2":{"36":1}}],["disabled",{"2":{"1":2,"30":2,"65":1}}],["displays",{"2":{"46":1,"52":1}}],["displayed",{"2":{"38":1,"55":1}}],["display",{"2":{"19":1,"20":2,"51":1,"52":4,"55":1,"64":2,"65":1,"69":1}}],["displaying",{"0":{"54":1,"61":1},"2":{"14":1,"20":1,"46":1,"51":1,"55":1,"64":1}}],["duty",{"2":{"69":1}}],["duckduckgo",{"2":{"21":1}}],["due",{"2":{"8":1}}],["dog",{"2":{"19":1,"65":1}}],["downloaded",{"2":{"79":1}}],["downloads",{"2":{"73":1}}],["download",{"2":{"19":1,"36":2,"52":3,"55":1,"65":2,"73":1,"77":3,"78":3}}],["downloadable",{"2":{"1":1,"65":1}}],["do",{"0":{"68":1},"1":{"69":1,"70":1,"71":1,"72":1},"2":{"16":1,"40":1,"41":2,"70":1}}],["domain",{"2":{"55":4,"69":1}}],["dom",{"2":{"14":1}}],["documents",{"2":{"73":1}}],["document",{"2":{"32":1,"33":1,"48":2,"49":1}}],["documentation",{"2":{"8":1,"26":5,"61":1,"69":1}}],["docs",{"2":{"4":1,"26":1}}],["double",{"2":{"6":1}}],["don",{"2":{"1":1,"19":1,"26":1,"48":1,"53":1,"66":1}}],["doesn",{"0":{"68":1},"1":{"69":1,"70":1,"71":1,"72":1},"2":{"19":1,"26":1,"36":3,"65":1,"66":1,"72":1,"75":2,"76":1,"77":1}}],["does",{"0":{"65":1,"71":1,"72":1},"2":{"1":1,"14":1,"15":1,"19":2,"30":1,"36":1,"38":1,"46":1,"52":1,"55":2,"69":1,"71":1,"77":2,"78":2,"79":1}}],["debate",{"2":{"73":1}}],["depend",{"2":{"73":1}}],["deprecation",{"2":{"9":1}}],["deprecated",{"2":{"1":1}}],["declining",{"2":{"36":1}}],["declaration",{"2":{"14":1}}],["declared",{"2":{"9":1}}],["demo",{"2":{"35":1,"36":2,"37":1,"38":1,"40":1,"41":1,"42":1,"45":1,"48":2,"49":2,"50":1,"51":2,"52":1,"53":1,"54":1,"55":1,"57":1}}],["demonstrate",{"2":{"27":1}}],["detectors",{"2":{"73":1}}],["detect",{"2":{"53":1,"69":1}}],["detecting",{"2":{"53":1,"64":1}}],["detection",{"0":{"64":1},"2":{"1":2,"30":1,"73":1}}],["details",{"2":{"30":1,"61":1}}],["delivery",{"2":{"28":1}}],["deleted",{"2":{"26":1}}],["designer",{"2":{"73":1}}],["designed",{"2":{"26":1,"27":1}}],["desktop",{"2":{"8":1,"14":2,"21":1,"25":1,"27":1,"74":2}}],["default",{"2":{"16":1,"17":1,"20":1,"23":1,"32":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":2,"43":2,"44":2,"45":1,"46":2,"48":1,"50":1,"52":1,"73":1}}],["defaulted",{"2":{"1":1}}],["developer",{"2":{"64":1,"73":2}}],["developers",{"2":{"14":1,"40":1,"73":2}}],["dev",{"0":{"17":1}}],["devices",{"2":{"14":2,"20":1,"52":1,"75":1}}],["device",{"2":{"1":2,"14":1,"20":2,"30":2,"55":1}}],["switched",{"2":{"73":1}}],["switching",{"2":{"73":1}}],["swf",{"2":{"73":1}}],["swfobject",{"2":{"73":2}}],["src",{"2":{"40":1}}],["src=",{"2":{"38":1,"39":1,"50":1,"57":1,"59":1,"75":1,"76":1,"78":1,"81":3}}],["sdk",{"2":{"26":2}}],["scratch",{"2":{"73":1}}],["scripts",{"2":{"81":1}}],["script",{"0":{"59":1},"2":{"57":1,"59":1,"81":3}}],["script>pdfobject",{"2":{"57":1,"59":1}}],["script>",{"2":{"50":2,"57":2,"59":2,"61":2,"81":3}}],["screen",{"2":{"38":1}}],["scrollbar",{"2":{"27":1}}],["scrollfix",{"2":{"14":1}}],["scroll",{"2":{"6":1,"20":1,"37":1,"51":1}}],["scenarios",{"2":{"32":1,"55":1,"56":1,"73":1}}],["scope",{"2":{"20":1,"71":1}}],["shifted",{"2":{"73":1}}],["show",{"2":{"70":1}}],["shown",{"2":{"40":1,"50":1,"51":1}}],["shortcode",{"2":{"36":1,"52":2}}],["shoutout",{"2":{"19":1}}],["should",{"2":{"1":1,"73":1}}],["share",{"2":{"26":1}}],["shrinking",{"2":{"14":1}}],["systems",{"2":{"14":1,"55":1,"77":1}}],["silently",{"2":{"66":1}}],["situations",{"2":{"64":1}}],["sites",{"2":{"26":1}}],["site",{"2":{"26":2,"43":1,"44":1,"45":1,"49":1,"50":1}}],["size",{"0":{"50":1}}],["single",{"2":{"40":1}}],["side",{"2":{"14":1,"79":1}}],["simple",{"2":{"14":1,"49":2}}],["simplified",{"0":{"66":1},"2":{"6":1}}],["sigh",{"2":{"11":1}}],["sniffing",{"2":{"9":1,"17":1}}],["step",{"2":{"79":1}}],["strongly",{"2":{"50":1}}],["strict",{"2":{"14":1}}],["strings",{"2":{"54":2}}],["string",{"2":{"1":2,"14":2,"32":4,"35":1,"36":4,"38":2,"39":2,"41":1,"42":1,"43":1,"44":1,"52":2,"54":1,"65":1,"66":1}}],["standalone",{"0":{"81":1},"2":{"79":1,"81":1}}],["standards",{"2":{"73":2}}],["standard",{"2":{"14":1,"43":1,"44":1,"53":1,"79":1}}],["start",{"0":{"57":1},"1":{"58":1,"59":1,"60":1,"61":1},"2":{"56":1}}],["static",{"2":{"75":1}}],["statement",{"2":{"38":2}}],["statusbar",{"2":{"27":1}}],["style>",{"2":{"50":2,"57":2}}],["style=",{"2":{"50":1,"78":1}}],["style",{"2":{"40":1,"43":2,"44":2}}],["styles",{"2":{"14":2,"45":3,"50":2,"81":1}}],["styling",{"2":{"13":1,"14":1}}],["still",{"2":{"9":1,"20":1,"75":1}}],["sample",{"2":{"48":2,"49":2,"51":2,"52":1,"53":2,"55":1,"56":1,"75":1,"76":1,"77":2,"78":3,"79":1,"80":1,"81":1}}],["same",{"2":{"26":1,"55":3}}],["sandbox",{"2":{"40":1}}],["sad",{"2":{"19":1,"26":1,"65":1}}],["sascha",{"2":{"6":1}}],["safari",{"2":{"1":1,"8":1,"14":2,"19":2,"20":1,"21":1,"23":1,"26":2,"27":1,"30":1,"70":1}}],["safer",{"2":{"14":1,"43":1,"44":1,"50":1}}],["safe",{"2":{"1":1}}],["security",{"2":{"69":1}}],["section",{"2":{"37":1,"56":1}}],["second",{"2":{"20":1}}],["selector",{"0":{"49":1},"2":{"33":2,"48":2,"49":1}}],["several",{"2":{"28":1}}],["search",{"2":{"27":1,"70":1}}],["seen",{"2":{"78":1}}],["see",{"2":{"20":1,"30":1,"37":1,"55":1,"61":1,"75":1}}],["server",{"2":{"14":1,"55":1}}],["september",{"0":{"7":1,"11":1,"12":1,"13":1,"14":1}}],["sequencing",{"2":{"1":1}}],["setattribute",{"2":{"40":1}}],["setting",{"0":{"50":1},"2":{"14":4,"38":1}}],["set",{"2":{"1":2,"30":1,"40":4,"41":1,"42":1,"45":2,"46":1,"50":1,"66":1,"80":1}}],["spurring",{"2":{"73":1}}],["special",{"2":{"73":1}}],["specification",{"2":{"26":1,"75":1}}],["specifically",{"2":{"20":1}}],["specific",{"2":{"21":1,"27":2,"30":1,"51":2,"55":1,"73":2}}],["specified",{"2":{"1":1,"34":1,"35":1,"48":1,"51":1}}],["specifying",{"0":{"33":1,"51":1},"2":{"35":1,"36":1,"40":1,"71":1}}],["specify",{"0":{"61":1},"2":{"5":1,"33":1,"37":1,"40":2,"41":1,"43":1,"44":1,"45":1,"48":1,"50":4,"51":1}}],["spec",{"2":{"1":1}}],["spring",{"2":{"1":1}}],["spotty",{"2":{"1":1}}],["solid",{"2":{"57":1,"60":1}}],["solutions",{"2":{"73":1}}],["solution",{"2":{"1":1}}],["so",{"2":{"19":1,"40":1,"52":1}}],["sometimes",{"2":{"75":1}}],["someid",{"2":{"33":2}}],["some",{"2":{"1":1,"14":1,"20":1,"26":1,"47":1,"51":1,"54":1,"55":1,"64":1,"70":1}}],["suited",{"2":{"73":1}}],["suit",{"2":{"70":1}}],["suggest",{"2":{"69":1}}],["subject",{"2":{"69":1}}],["sub",{"2":{"26":1}}],["subsequently",{"2":{"6":1}}],["summary",{"2":{"21":1}}],["such",{"0":{"60":1},"2":{"14":1,"46":1,"49":1,"55":1,"69":1,"70":1}}],["surprisingly",{"2":{"75":1}}],["sure",{"2":{"32":1,"45":1,"77":1}}],["sur",{"2":{"8":1}}],["suffer",{"2":{"1":1}}],["suppress",{"2":{"14":1}}],["suppressconsole",{"0":{"46":1},"2":{"12":1,"14":1,"46":1}}],["supportspdfs",{"0":{"30":1},"2":{"30":1}}],["supports",{"2":{"14":1,"19":3,"26":1,"30":1,"35":1,"43":1,"44":1,"64":1,"65":1,"72":1}}],["supportredirect",{"2":{"1":1,"14":1}}],["support",{"0":{"19":1,"27":1,"64":1,"65":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"1":8,"14":1,"15":1,"17":1,"19":4,"20":2,"22":1,"23":1,"24":1,"25":1,"26":4,"30":3,"36":4,"37":2,"41":1,"46":1,"51":2,"52":1,"56":2,"64":1,"65":1,"66":1,"69":2,"73":3,"75":3,"77":4,"78":2}}],["supported",{"2":{"1":5,"19":2,"20":1,"26":2,"27":1,"30":3,"36":1,"37":2,"51":1,"64":1,"65":2,"66":1,"72":1,"73":3,"76":2,"78":1}}],["superior",{"2":{"1":1}}],["s",{"2":{"1":3,"9":1,"17":2,"19":1,"20":3,"23":2,"26":8,"34":1,"38":1,"41":1,"42":1,"43":2,"44":2,"45":1,"46":1,"50":2,"51":1,"52":1,"55":2,"69":2,"70":1,"73":2,"77":1,"78":1,"79":1,"80":2,"81":1}}],["audio",{"2":{"73":1}}],["automated",{"2":{"67":1}}],["automatic",{"0":{"65":1}}],["automatically",{"2":{"1":1,"19":2,"30":1,"37":1,"41":1,"50":2}}],["automagically",{"2":{"65":1}}],["auto",{"2":{"51":1}}],["amp",{"2":{"56":1,"80":2}}],["averaging",{"2":{"73":1}}],["avoid",{"2":{"43":1,"44":1,"64":1}}],["available",{"2":{"9":1,"37":1,"79":1}}],["affiliated",{"2":{"41":1,"42":1}}],["affecting",{"2":{"12":1,"13":1}}],["a>",{"2":{"36":2,"52":1,"77":1,"78":1}}],["attitudes",{"2":{"73":1}}],["attempt",{"2":{"42":1}}],["attributes",{"2":{"40":1}}],["attribute",{"2":{"5":1,"7":1,"8":1,"9":1,"38":1,"40":4,"43":1,"44":1,"80":2,"81":2}}],["at",{"2":{"26":1,"79":1}}],["around",{"2":{"73":1}}],["arguments",{"2":{"32":1}}],["arc",{"2":{"21":1}}],["aren",{"2":{"25":1}}],["are",{"2":{"1":7,"9":1,"14":1,"19":1,"20":1,"21":2,"22":1,"25":2,"27":1,"30":3,"37":1,"40":2,"47":1,"51":1,"54":1,"55":2,"66":1,"69":2,"71":2,"72":1,"74":1,"77":1,"79":1}}],["ahead",{"2":{"21":1}}],["agent",{"2":{"9":1}}],["against",{"2":{"1":1,"30":1}}],["above",{"2":{"50":1,"72":1}}],["about",{"2":{"8":1}}],["absolute",{"2":{"32":1}}],["ability",{"2":{"5":1,"38":1,"50":1,"70":1}}],["api",{"0":{"29":1},"1":{"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1},"2":{"53":1,"61":1,"69":1}}],["app",{"2":{"80":8,"81":5}}],["approach",{"2":{"73":1,"76":1}}],["appropriate",{"2":{"26":1}}],["appends",{"2":{"50":1}}],["appended",{"2":{"38":1,"39":2}}],["appearance",{"0":{"60":1}}],["appear",{"2":{"26":2}}],["application",{"2":{"54":1,"75":1,"77":1,"78":1}}],["apple",{"2":{"19":1,"21":1,"23":2}}],["applying",{"2":{"14":1}}],["apparent",{"2":{"1":1}}],["april",{"0":{"6":1,"18":1}}],["alternative",{"2":{"73":1}}],["alter",{"2":{"38":1}}],["although",{"2":{"26":1}}],["alias",{"2":{"35":1,"37":1}}],["aligning",{"2":{"4":1}}],["also",{"2":{"20":1,"26":2,"32":1,"40":1,"49":1,"51":2,"55":1,"67":1,"73":1,"75":1}}],["alerts",{"2":{"14":1}}],["always",{"2":{"1":1,"50":1,"65":1}}],["alleviate",{"2":{"14":1}}],["allow",{"2":{"40":2,"55":1}}],["allows",{"2":{"14":1,"37":1,"40":1,"50":1,"52":1}}],["allowed",{"2":{"14":1}}],["allow=",{"2":{"9":1}}],["all",{"2":{"1":1,"14":2,"16":1,"19":2,"20":1,"37":1,"40":1,"42":1,"43":1,"44":1,"73":2,"75":2,"77":1}}],["addeventlistener",{"2":{"53":2}}],["added",{"2":{"1":1,"5":1,"8":1,"9":1,"17":1}}],["additional",{"0":{"61":1},"2":{"40":1,"61":1}}],["add",{"0":{"59":1},"2":{"7":1,"8":1,"14":1,"52":1,"80":1,"81":1}}],["adobe",{"2":{"1":1,"22":1,"25":1,"26":5,"27":1,"30":1,"37":1,"73":1}}],["accept",{"2":{"33":1,"54":1}}],["accessibility",{"2":{"38":1}}],["access",{"2":{"19":1,"65":1}}],["accordingly",{"2":{"1":1,"30":1}}],["actually",{"0":{"71":1},"2":{"71":1}}],["action",{"2":{"26":1}}],["activex",{"2":{"1":1,"30":1}}],["act",{"2":{"1":1,"30":1}}],["acrobat",{"2":{"1":1,"26":6,"30":1}}],["across",{"2":{"1":1,"14":1,"56":1,"73":2,"77":1}}],["a",{"0":{"33":1,"49":1,"58":1,"69":1,"74":1},"1":{"75":1,"76":1,"77":1,"78":1},"2":{"1":4,"3":1,"4":1,"9":1,"14":4,"19":2,"20":4,"22":2,"24":1,"26":5,"27":1,"30":2,"32":2,"33":4,"34":3,"36":9,"37":2,"40":4,"41":2,"48":1,"49":2,"50":2,"51":3,"52":7,"53":2,"54":1,"55":2,"64":2,"65":5,"66":2,"69":1,"71":2,"73":10,"75":1,"76":1,"77":1,"78":1,"79":3}}],["associated",{"2":{"69":1}}],["assumption",{"2":{"71":1}}],["assumptions",{"2":{"9":1}}],["assumptionmode",{"2":{"1":1,"9":2,"16":2,"17":1}}],["assumes",{"2":{"20":1,"55":1}}],["assume",{"2":{"1":2,"30":2}}],["as",{"0":{"60":1},"2":{"1":4,"14":5,"20":1,"21":1,"25":2,"26":3,"27":1,"30":1,"32":1,"38":1,"39":1,"40":2,"41":2,"43":1,"44":1,"46":1,"49":1,"50":2,"51":2,"52":1,"54":2,"55":3,"69":1,"70":1,"72":1,"73":4}}],["announced",{"2":{"22":1}}],["anywhere",{"2":{"52":1}}],["anyone",{"2":{"9":1}}],["any",{"2":{"9":1,"20":2,"35":1,"36":1,"38":1,"39":1,"45":1,"52":1,"69":1,"70":1,"73":2,"80":1,"81":1}}],["android",{"2":{"14":1,"20":1}}],["andersen",{"2":{"6":1}}],["and",{"0":{"28":1,"59":1,"70":1},"2":{"1":11,"4":1,"5":1,"6":4,"8":1,"10":1,"12":1,"14":6,"18":1,"19":2,"20":1,"21":3,"25":3,"26":3,"28":1,"29":1,"30":5,"32":1,"36":1,"37":1,"40":2,"41":1,"42":2,"43":1,"44":1,"50":4,"55":7,"56":1,"61":1,"64":3,"65":1,"67":1,"69":2,"70":3,"71":2,"73":9,"74":1,"76":1,"77":1,"78":1,"79":1,"80":3,"81":1}}],["an",{"0":{"49":1},"2":{"1":1,"14":4,"20":1,"30":1,"43":1,"44":1,"49":1,"50":1,"53":1,"55":1,"56":1,"64":1,"69":1,"73":2,"75":1,"76":1,"78":2,"79":1}}],["b>",{"2":{"77":1}}],["b>example",{"2":{"77":1}}],["b64",{"2":{"54":2}}],["both",{"2":{"73":1,"79":1,"81":1}}],["border",{"0":{"60":1},"2":{"57":1,"60":1,"78":1}}],["body",{"2":{"32":1,"48":2}}],["boolean",{"2":{"36":1,"42":1,"45":1,"46":1}}],["boo",{"2":{"30":1}}],["blue",{"2":{"27":1}}],["bridged",{"2":{"73":1}}],["brief",{"2":{"26":1}}],["brave",{"2":{"21":1}}],["branch",{"0":{"17":1}}],["breaking",{"2":{"18":1}}],["browser",{"0":{"19":1,"25":1,"27":1,"48":1,"64":1,"65":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"1":4,"9":1,"19":3,"20":1,"21":2,"25":1,"26":1,"30":6,"32":1,"35":1,"36":4,"37":2,"42":2,"46":2,"48":3,"51":1,"52":2,"55":3,"56":1,"64":1,"65":1,"66":1,"69":4,"70":1,"73":2,"75":1,"76":1,"77":4,"78":2}}],["browserstack",{"2":{"19":1}}],["browsers",{"0":{"20":1},"2":{"1":3,"9":1,"19":5,"20":3,"22":1,"25":1,"27":1,"30":1,"41":1,"53":1,"55":1,"56":1,"69":1,"70":2,"73":5,"74":3,"75":4,"77":2}}],["binding",{"2":{"80":1,"81":1}}],["big",{"2":{"8":1,"19":1}}],["bit",{"2":{"3":1,"4":1}}],["backstory",{"0":{"73":1}}],["bar",{"2":{"40":2}}],["bars",{"2":{"6":1}}],["banking",{"2":{"38":2}}],["basic",{"2":{"20":1,"57":1}}],["based",{"2":{"14":2,"20":1,"22":1,"24":1,"30":1,"73":1}}],["base64",{"0":{"54":1},"2":{"1":1,"32":1,"54":4,"65":1}}],["bulletproof",{"2":{"73":1}}],["building",{"2":{"66":1}}],["build",{"0":{"80":1},"2":{"64":1,"67":1,"79":2,"81":1}}],["built",{"2":{"23":1,"24":1}}],["bundled",{"2":{"21":1,"24":1}}],["bug",{"2":{"8":1}}],["bump",{"2":{"4":1,"11":1}}],["but",{"2":{"1":3,"19":1,"20":1,"30":1,"41":1,"49":1,"50":1,"64":2,"73":1,"74":1,"77":1}}],["best",{"2":{"73":1}}],["benefits",{"2":{"56":1}}],["between",{"2":{"55":1}}],["became",{"2":{"73":1,"75":1}}],["because",{"2":{"26":1,"50":1}}],["becoming",{"2":{"73":1}}],["become",{"2":{"1":2,"73":1}}],["began",{"2":{"26":1}}],["below",{"2":{"21":1,"27":1,"74":1}}],["been",{"2":{"14":1,"73":2,"77":1}}],["beers",{"2":{"5":1,"6":2}}],["before",{"2":{"14":1,"55":1,"73":1}}],["behavior",{"2":{"14":2}}],["behave",{"2":{"1":1}}],["be",{"2":{"9":3,"14":3,"19":1,"20":1,"22":1,"26":2,"32":4,"35":1,"36":1,"38":1,"39":2,"40":3,"41":1,"42":1,"45":2,"50":1,"51":1,"52":2,"53":1,"55":3,"64":1,"65":2,"66":1,"71":1,"73":1,"74":1,"77":1,"79":1}}],["being",{"2":{"1":1,"30":1}}],["by",{"2":{"1":1,"14":3,"21":3,"23":2,"24":1,"26":1,"30":1,"40":1,"42":1,"46":1,"50":1,"52":1,"64":1,"70":1,"73":2,"76":1}}],["techniques",{"2":{"74":1}}],["tended",{"2":{"73":1}}],["team",{"2":{"73":1}}],["tell",{"0":{"59":1}}],["textjspdfobject",{"2":{"36":1}}],["text",{"2":{"36":1,"52":1}}],["test",{"2":{"37":1,"77":1,"79":1}}],["tested",{"2":{"26":1}}],["testing",{"2":{"20":2,"27":1}}],["tests",{"2":{"19":1}}],["tune",{"2":{"32":1}}],["trend",{"2":{"73":1}}],["tracking",{"2":{"55":1}}],["trying",{"2":{"55":1}}],["try",{"2":{"27":1,"70":1}}],["trombone",{"2":{"26":1}}],["true",{"2":{"1":1,"14":4,"16":1,"30":4,"41":1,"42":1,"45":1,"46":1,"55":1}}],["two",{"2":{"25":1,"26":2,"29":1,"37":1,"48":1,"79":1}}],["target",{"0":{"33":1},"2":{"30":1,"32":3,"33":4,"36":1,"48":1,"50":3}}],["table",{"2":{"27":2}}],["tablets",{"2":{"20":1}}],["take",{"2":{"16":1,"26":1,"50":1}}],["typically",{"2":{"21":1,"22":1}}],["type=",{"2":{"75":1,"77":1,"78":1}}],["typeof",{"2":{"10":1,"14":1}}],["type",{"2":{"9":1,"32":1,"40":1}}],["typo",{"2":{"3":1,"12":1,"13":1}}],["tickets",{"2":{"64":1}}],["titlecased",{"2":{"81":1}}],["title=",{"2":{"38":1}}],["title",{"0":{"38":1},"2":{"7":1,"8":1,"34":1,"38":5,"40":1}}],["tip",{"2":{"5":1,"6":2,"12":1,"14":1,"43":1,"44":1,"50":1}}],["times",{"2":{"55":1,"73":1}}],["time",{"2":{"1":1,"14":1,"73":1}}],["t",{"0":{"68":1},"1":{"69":1,"70":1,"71":1,"72":1},"2":{"1":1,"14":1,"19":2,"25":1,"26":2,"36":3,"48":1,"52":1,"53":1,"65":1,"66":2,"72":1,"73":3,"75":2,"76":1,"77":1}}],["thoroughly",{"2":{"77":1}}],["though",{"2":{"75":1}}],["thousands",{"2":{"73":1}}],["those",{"2":{"14":1,"30":1}}],["thus",{"2":{"70":1,"73":1}}],["thumbs",{"2":{"51":1,"55":1}}],["thumbnails",{"2":{"51":2}}],["three",{"2":{"21":2}}],["throw",{"2":{"1":1}}],["than",{"2":{"25":1}}],["thanks",{"2":{"9":1}}],["that",{"0":{"71":1},"2":{"1":1,"9":1,"14":1,"20":3,"26":1,"41":1,"50":1,"51":1,"52":1,"53":1,"55":1,"69":1,"71":1,"73":3,"78":1}}],["this",{"2":{"1":4,"14":5,"16":1,"19":2,"20":2,"27":1,"30":3,"36":1,"38":1,"40":1,"46":1,"49":1,"50":2,"51":2,"52":6,"53":1,"55":1,"56":1,"65":2,"73":2,"77":2,"78":2,"81":1}}],["then",{"0":{"59":1},"2":{"23":1,"69":1,"73":1}}],["therefore",{"2":{"50":1}}],["there",{"2":{"20":1,"21":1,"25":1,"26":2,"30":1,"51":1,"55":1,"77":1,"79":2}}],["these",{"2":{"19":1,"26":1,"37":2,"40":1,"64":1,"70":1,"72":2,"73":1,"74":2}}],["them",{"2":{"16":1,"28":1,"72":1}}],["their",{"2":{"9":1,"16":1,"26":2,"52":1}}],["theo",{"2":{"5":1,"6":2}}],["they",{"2":{"1":1,"16":1,"20":1,"22":1,"25":3}}],["the",{"0":{"50":1,"59":1,"60":2,"61":1,"65":1,"70":2,"71":1},"2":{"1":10,"6":1,"9":1,"12":1,"14":8,"16":3,"19":3,"20":10,"21":1,"25":1,"26":10,"27":3,"30":4,"31":1,"32":10,"33":2,"34":1,"35":5,"36":8,"37":1,"38":9,"39":2,"40":5,"41":5,"42":5,"43":4,"44":3,"45":3,"46":1,"47":1,"48":3,"49":1,"50":11,"51":10,"52":7,"53":3,"54":2,"55":15,"56":1,"61":2,"64":4,"65":5,"66":3,"69":7,"70":8,"71":4,"72":2,"73":15,"74":1,"75":6,"76":3,"77":6,"78":3,"79":4,"80":5,"81":11}}],["toggle",{"2":{"70":1}}],["together",{"2":{"69":1}}],["tokens",{"2":{"40":1}}],["toolbars",{"2":{"55":1,"70":1}}],["toolbar",{"0":{"70":1},"2":{"27":1,"70":4}}],["took",{"2":{"25":1}}],["tor",{"2":{"21":1}}],["to",{"0":{"51":1,"58":1,"59":3,"60":1,"74":1},"1":{"75":1,"76":1,"77":1,"78":1},"2":{"1":6,"2":1,"5":2,"6":4,"7":1,"8":4,"9":4,"10":1,"12":1,"14":13,"15":1,"16":4,"17":1,"19":2,"20":7,"26":6,"27":1,"28":1,"30":4,"32":4,"33":1,"35":1,"36":2,"37":2,"38":3,"39":1,"40":4,"41":4,"42":4,"43":2,"44":2,"45":5,"46":2,"48":2,"49":2,"50":5,"51":2,"52":5,"53":1,"55":7,"56":2,"57":1,"59":1,"61":2,"64":1,"65":4,"66":2,"69":6,"70":3,"71":1,"72":1,"73":10,"76":1,"77":4,"78":2,"79":1,"80":1,"81":3}}],["other",{"2":{"50":1}}],["others",{"0":{"67":1},"2":{"21":1}}],["object>",{"2":{"77":1,"78":1}}],["object",{"0":{"77":1,"78":2},"2":{"32":2,"33":2,"37":1,"40":1,"73":3,"77":4,"78":3,"81":4}}],["obsolete",{"2":{"1":1}}],["older",{"2":{"74":1,"75":1}}],["old",{"2":{"26":1}}],["output",{"2":{"36":1}}],["outputs",{"2":{"36":1,"38":1,"39":1,"50":1}}],["outlined",{"2":{"51":1}}],["outline",{"2":{"26":1}}],["outlining",{"2":{"26":1}}],["outside",{"2":{"20":1,"37":1,"71":1}}],["out",{"2":{"20":1,"27":1,"78":1}}],["our",{"2":{"19":1,"20":2,"27":1,"37":1}}],["own",{"2":{"14":1,"55":1,"69":1,"73":1}}],["omitting",{"2":{"45":1}}],["omitted",{"2":{"32":1}}],["omitinlinestyles",{"0":{"45":1},"2":{"14":1}}],["omit",{"2":{"14":1,"45":1}}],["october",{"0":{"10":1,"15":1,"16":1}}],["original",{"2":{"26":2}}],["or",{"2":{"1":1,"20":1,"30":1,"32":2,"33":1,"35":1,"36":1,"38":1,"41":1,"42":1,"46":1,"49":1,"52":1,"55":2,"65":1,"70":2,"72":1,"79":1,"81":1}}],["optional",{"0":{"60":1,"61":1},"2":{"32":2}}],["option",{"2":{"14":7,"30":1,"35":1,"36":1,"40":1,"51":1,"65":1}}],["options=",{"2":{"80":1,"81":1}}],["options",{"0":{"34":1},"1":{"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1},"2":{"1":2,"32":2,"34":4,"36":2,"40":4,"51":4,"61":2,"80":2,"81":2}}],["opening",{"2":{"51":2}}],["opened",{"2":{"26":1,"35":1,"61":1}}],["open",{"0":{"26":1,"51":1,"66":1,"72":1},"1":{"27":1},"2":{"1":1,"26":5,"27":1,"35":2,"37":4,"51":1,"66":2,"70":1}}],["operating",{"2":{"55":1,"77":1}}],["opera",{"2":{"1":1,"21":1,"30":1}}],["onload",{"0":{"53":1},"2":{"53":1}}],["online",{"2":{"26":1,"73":1}}],["only",{"2":{"1":1,"14":1,"26":1,"27":1,"40":1,"41":1}}],["one",{"2":{"2":1,"14":1,"26":1,"29":1,"51":1,"53":1,"73":1,"76":1}}],["on",{"0":{"53":1},"2":{"1":2,"4":1,"5":1,"14":3,"19":1,"20":5,"25":1,"26":3,"28":1,"30":2,"35":1,"37":1,"40":2,"43":1,"44":1,"49":1,"50":2,"51":1,"52":1,"53":1,"55":4,"73":4,"74":1,"75":1}}],["odd",{"2":{"1":1}}],["overview",{"2":{"56":1}}],["oversimplified",{"2":{"21":1}}],["override",{"2":{"17":1}}],["over",{"2":{"1":1,"50":1,"73":2}}],["often",{"2":{"77":1}}],["officially",{"2":{"75":1}}],["official",{"2":{"75":1,"79":1}}],["offer",{"2":{"25":1,"41":1,"73":1,"75":1}}],["of",{"0":{"49":1,"60":1,"66":1,"70":1},"2":{"1":7,"2":1,"9":2,"13":1,"14":12,"15":1,"16":2,"17":2,"18":1,"19":2,"20":6,"22":3,"26":6,"27":3,"30":3,"31":1,"32":2,"34":1,"36":1,"37":2,"38":4,"41":1,"42":1,"47":1,"49":1,"50":1,"55":4,"56":2,"64":1,"66":1,"69":1,"70":1,"71":1,"73":9,"74":2,"75":1,"76":1,"81":2}}],["evolved",{"2":{"73":1}}],["every",{"2":{"55":1}}],["everywhere",{"2":{"51":1,"64":1}}],["everyone",{"2":{"6":1}}],["event",{"0":{"53":1},"2":{"53":1}}],["even",{"2":{"14":1,"19":1,"20":3}}],["ecmascript",{"2":{"73":1}}],["era",{"2":{"73":2}}],["error",{"2":{"14":1,"46":2}}],["errors",{"2":{"1":1,"71":1}}],["either",{"2":{"72":1}}],["embrace",{"2":{"73":1}}],["embedding",{"2":{"14":2,"54":1,"64":1,"73":4,"75":1,"77":1}}],["embedded",{"0":{"64":1},"2":{"14":2,"15":1,"19":3,"20":3,"32":2,"34":1,"38":2,"46":1,"50":1,"52":2,"64":3,"65":1,"69":1,"74":1}}],["embeds",{"2":{"9":1,"32":1,"34":1,"42":1}}],["embed",{"0":{"32":1,"48":1,"59":2,"74":1,"75":1},"1":{"33":1,"75":1,"76":1,"77":1,"78":1},"2":{"1":6,"5":1,"8":2,"14":5,"30":1,"32":4,"33":3,"34":1,"35":1,"36":3,"37":3,"38":1,"39":1,"40":2,"42":1,"43":1,"44":1,"48":4,"49":5,"50":3,"51":2,"52":1,"53":2,"54":1,"55":1,"57":2,"59":1,"61":1,"73":4,"75":5,"76":1,"77":1}}],["em",{"2":{"43":1,"44":1}}],["easiest",{"2":{"76":1}}],["easy",{"2":{"66":1,"67":1}}],["early",{"2":{"26":1}}],["each",{"2":{"14":1,"27":1,"70":1,"77":1}}],["extra",{"2":{"78":1}}],["external",{"2":{"50":1}}],["exclusively",{"2":{"73":1}}],["exception",{"2":{"14":1}}],["examine",{"2":{"26":1}}],["examples",{"2":{"48":1,"49":1,"56":1,"61":1,"69":1,"74":3}}],["example",{"2":{"19":1,"40":2,"51":1,"55":1,"77":1,"80":1,"81":2}}],["expecially",{"2":{"51":1}}],["expects",{"2":{"32":1}}],["experienced",{"2":{"64":1}}],["experience",{"2":{"14":1,"55":1,"66":1}}],["explaining",{"2":{"56":1}}],["explicit",{"2":{"48":1}}],["explicitly",{"2":{"14":1}}],["explorer",{"2":{"1":1,"19":1,"30":1}}],["expanded",{"2":{"9":1,"23":1}}],["else",{"2":{"30":1}}],["eliminated",{"2":{"73":1}}],["eliminate",{"2":{"14":1}}],["el",{"2":{"14":2}}],["elements",{"2":{"5":1,"7":1,"8":1}}],["element",{"0":{"49":1,"60":1},"2":{"1":1,"14":2,"32":1,"34":1,"36":1,"38":1,"39":1,"40":1,"45":1,"48":1,"49":3,"50":6,"69":1,"73":2,"75":3,"77":3}}],["enabling",{"2":{"67":1,"73":1}}],["enables",{"2":{"32":1,"77":1}}],["enable",{"2":{"16":1}}],["enabled",{"2":{"9":1,"73":1}}],["end",{"2":{"65":1,"75":1}}],["ensuring",{"2":{"38":1}}],["ensure",{"2":{"6":1,"16":1,"55":1}}],["ensures",{"2":{"1":2,"65":1}}],["entering",{"2":{"36":2}}],["entered",{"2":{"35":1,"36":1,"38":1,"39":1}}],["entire",{"2":{"32":1,"48":1}}],["engine",{"0":{"69":1},"2":{"23":1,"24":1,"55":1,"72":2}}],["engines",{"0":{"21":1},"1":{"22":1,"23":1,"24":1},"2":{"21":1,"30":1,"51":1,"70":1}}],["environments",{"2":{"14":2,"25":1}}],["etc",{"0":{"60":1},"2":{"1":1,"30":2}}],["edge",{"2":{"1":1,"9":1,"19":1,"21":1,"22":1,"27":1,"30":1}}],["e",{"2":{"1":1,"30":1}}],["pipwerks",{"2":{"79":2}}],["pie",{"2":{"40":1}}],["philip",{"2":{"73":2}}],["potential",{"2":{"53":1}}],["possible",{"2":{"43":1,"44":1,"78":1}}],["popular",{"2":{"21":1}}],["px",{"2":{"43":1,"44":1}}],["purely",{"2":{"79":1}}],["purpose",{"2":{"38":1}}],["pumpkin",{"2":{"40":1}}],["p>",{"2":{"36":2}}],["p>this",{"2":{"36":2}}],["p",{"2":{"36":2}}],["pdjs",{"2":{"30":1}}],["pdfl",{"2":{"26":1}}],["pdfium",{"0":{"22":1},"2":{"22":2,"26":3,"27":1,"30":1}}],["pdfjs",{"0":{"41":1},"2":{"6":2,"7":1,"13":1,"41":1,"42":1,"55":2}}],["pdfopenparams",{"0":{"37":1},"2":{"5":1,"34":1,"37":2,"51":1,"55":1}}],["pdfobjectvueplugin",{"2":{"81":2}}],["pdfobjectversion",{"0":{"31":1},"2":{"31":1}}],["pdfobjectplugin",{"2":{"80":2}}],["pdfobject",{"0":{"29":1,"30":1,"31":1,"32":1,"59":2,"62":1,"63":1,"68":1,"73":1,"79":1},"1":{"30":1,"31":1,"32":1,"33":2,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"63":1,"64":2,"65":2,"66":2,"67":2,"68":1,"69":2,"70":2,"71":2,"72":2,"73":1,"80":1,"81":1},"2":{"1":11,"3":1,"14":4,"16":3,"17":1,"18":2,"19":5,"20":2,"26":1,"27":1,"28":1,"29":1,"30":10,"31":2,"32":3,"33":3,"34":2,"36":3,"37":3,"38":2,"40":3,"41":4,"42":3,"43":1,"44":1,"45":1,"46":2,"47":1,"48":1,"49":3,"50":9,"51":2,"52":3,"53":2,"54":2,"55":3,"56":4,"57":2,"59":1,"60":1,"61":1,"64":1,"65":2,"66":1,"67":2,"69":4,"71":2,"72":1,"73":6,"78":1,"79":5,"80":8,"81":4}}],["pdfs",{"0":{"54":1,"64":1,"65":1},"2":{"1":7,"9":1,"14":3,"15":1,"19":4,"20":5,"25":1,"30":6,"36":4,"41":1,"46":1,"52":2,"54":1,"55":1,"64":1,"65":1,"69":1,"73":5,"74":1,"77":2,"78":2}}],["pdf",{"0":{"21":1,"24":1,"25":1,"26":1,"50":1,"55":1,"58":1,"59":1,"61":1,"66":1,"69":1,"70":1,"71":1,"72":1,"74":1},"1":{"22":1,"23":1,"24":1,"27":1,"75":1,"76":1,"77":1,"78":1},"2":{"1":5,"14":4,"19":3,"20":4,"21":1,"22":1,"23":2,"24":3,"25":3,"26":9,"27":2,"30":6,"32":5,"33":3,"34":3,"35":4,"36":6,"37":9,"38":9,"39":2,"40":2,"41":8,"42":6,"43":1,"44":1,"45":1,"48":5,"49":7,"50":4,"51":10,"52":8,"53":10,"54":3,"55":23,"57":3,"58":1,"59":2,"61":3,"64":5,"65":3,"66":2,"67":1,"69":8,"70":3,"71":3,"72":1,"73":4,"75":4,"76":4,"77":10,"78":11,"80":3,"81":7}}],["pdfviewerenabled",{"2":{"1":5,"30":4}}],["path",{"2":{"57":1,"59":1,"61":1}}],["paired",{"2":{"51":1}}],["passing",{"0":{"49":1},"2":{"49":2}}],["pass",{"2":{"41":1,"49":1,"54":1,"80":1,"81":1}}],["passes",{"2":{"33":3}}],["passed",{"2":{"14":1,"36":1}}],["part",{"2":{"26":1,"32":1,"73":1,"75":1}}],["parameter",{"2":{"26":1,"27":2,"33":1,"34":1,"37":1,"51":4}}],["parameters",{"0":{"26":1,"27":1,"61":1,"66":1,"72":1},"1":{"27":1},"2":{"1":2,"26":10,"27":1,"35":1,"37":4,"51":1,"66":4,"70":1,"72":1}}],["param",{"2":{"6":1}}],["packaged",{"2":{"22":1}}],["pandas",{"2":{"19":1,"65":1}}],["page=2",{"2":{"75":1,"76":1,"77":1,"78":2}}],["pagemode",{"2":{"27":1,"51":2,"55":1}}],["pages",{"2":{"14":1,"74":1}}],["page",{"0":{"35":1,"51":1,"59":1},"2":{"1":1,"20":3,"26":2,"27":2,"32":1,"34":1,"35":5,"37":6,"51":11,"55":1,"61":2,"69":1,"77":1,"80":2,"81":2}}],["plugin",{"2":{"73":3,"79":3}}],["plugins",{"0":{"25":1},"2":{"1":1,"25":1,"30":1,"69":1,"73":4}}],["please",{"2":{"19":1,"36":1,"52":1,"77":2,"78":2}}],["plain",{"2":{"64":1,"78":1}}],["platform",{"2":{"26":1}}],["platforms",{"2":{"1":1,"21":2}}],["place",{"2":{"14":2}}],["places",{"2":{"14":1}}],["plays",{"0":{"67":1}}],["play",{"2":{"10":1,"69":1}}],["pragmatism",{"2":{"73":1}}],["practice",{"2":{"14":1}}],["practically",{"2":{"14":1}}],["prefer",{"2":{"65":1}}],["present",{"2":{"55":1,"65":1,"70":1,"73":1}}],["precedence",{"2":{"50":1}}],["prevent",{"2":{"36":1,"46":1}}],["preview",{"0":{"23":1},"2":{"23":1}}],["previously",{"2":{"1":1}}],["primary",{"2":{"21":1,"25":1,"69":1}}],["process",{"2":{"79":1}}],["processes",{"2":{"67":1}}],["projects",{"2":{"79":1}}],["project",{"0":{"63":1},"1":{"64":1,"65":1,"66":1,"67":1},"2":{"79":1,"80":1}}],["probably",{"2":{"26":1}}],["proprietary",{"2":{"22":1,"73":1}}],["property",{"2":{"30":1,"31":1}}],["properties",{"2":{"29":1}}],["proper",{"2":{"1":1,"14":1}}],["properly",{"2":{"1":1,"14":1,"15":1,"19":1,"30":1,"74":1}}],["provide",{"2":{"41":1,"53":1,"70":2,"75":1,"76":1}}],["provides",{"2":{"26":1,"29":1,"34":1,"37":1,"78":1}}],["provided",{"2":{"20":1,"69":1}}],["providing",{"2":{"19":2}}],["prompt",{"2":{"19":1,"73":1}}],["pr",{"2":{"6":1,"9":1}}],["perform",{"2":{"30":1}}],["perfectly",{"2":{"20":1}}],["per",{"2":{"1":3,"2":1,"5":1,"7":1,"8":4,"14":1}}],["ignored",{"2":{"66":1}}],["ideal",{"2":{"55":1}}],["identical",{"2":{"48":1}}],["identically",{"2":{"37":1}}],["identify",{"2":{"6":1}}],["id=",{"2":{"39":1,"50":2,"57":1,"58":1}}],["id",{"0":{"39":1},"2":{"39":3,"40":1}}],["image",{"2":{"20":1}}],["import",{"2":{"80":3}}],["important",{"2":{"19":1,"55":1,"81":1}}],["implement",{"0":{"72":1},"2":{"72":1}}],["implemented",{"2":{"14":1,"77":1}}],["improve",{"2":{"66":1}}],["improves",{"2":{"38":1}}],["improved",{"2":{"1":1,"15":1,"73":1}}],["impression",{"2":{"20":1}}],["impacts",{"2":{"1":1}}],["ios13",{"2":{"14":1}}],["ios",{"2":{"14":4,"15":2,"19":1,"20":1,"74":1}}],["ie10",{"2":{"14":1}}],["ie11",{"2":{"2":1}}],["ie9",{"2":{"14":1}}],["i",{"2":{"3":1,"4":1}}],["if",{"2":{"1":9,"14":2,"28":1,"30":7,"32":2,"35":2,"36":3,"37":1,"38":1,"39":1,"40":2,"41":2,"42":1,"43":1,"44":1,"45":2,"48":1,"50":1,"51":1,"52":1,"55":1,"64":3,"65":2,"66":1,"69":2,"70":1,"73":1,"75":1,"77":2,"78":1}}],["iframe>",{"2":{"76":1,"78":1}}],["iframe",{"0":{"76":1,"78":1},"2":{"1":2,"5":1,"6":1,"7":1,"8":2,"9":1,"13":1,"14":3,"32":1,"38":4,"39":2,"40":5,"43":1,"44":1,"45":2,"50":6,"53":4,"56":1,"64":1,"69":1,"73":3,"76":3,"78":2}}],["issues",{"2":{"6":1,"14":1}}],["issue",{"2":{"5":1}}],["is",{"0":{"71":1},"2":{"1":9,"6":1,"9":1,"14":6,"16":1,"18":1,"19":1,"20":4,"21":3,"23":1,"24":1,"26":4,"28":1,"30":7,"32":1,"36":3,"38":2,"41":2,"42":3,"43":1,"44":1,"46":1,"50":2,"51":2,"52":3,"53":1,"55":5,"61":1,"64":2,"65":1,"67":1,"69":3,"70":1,"71":3,"76":2,"78":1,"79":2}}],["itch",{"2":{"73":1}}],["its",{"2":{"69":1}}],["itself",{"2":{"38":1}}],["it",{"0":{"59":1},"2":{"1":2,"14":2,"20":2,"27":1,"32":1,"35":1,"36":1,"43":1,"44":1,"50":3,"51":1,"52":2,"55":2,"64":1,"65":1,"66":1,"70":1,"73":3,"77":3,"78":3,"79":1}}],["invisible",{"2":{"45":1}}],["information",{"2":{"26":1}}],["into",{"2":{"32":1,"34":1,"36":1,"73":2,"74":1}}],["introduced",{"2":{"22":1,"23":1,"24":1,"26":1}}],["integration",{"2":{"67":1}}],["integrating",{"0":{"55":1}}],["interact",{"2":{"20":1}}],["internet",{"2":{"1":1,"19":1,"30":1}}],["intentionally",{"2":{"1":1,"30":1}}],["initialize",{"2":{"55":1}}],["initial",{"2":{"18":1}}],["indicates",{"2":{"27":3}}],["indicate",{"2":{"15":1}}],["insurance",{"2":{"78":1}}],["instructional",{"2":{"73":1}}],["instructing",{"2":{"55":1}}],["instance",{"2":{"55":1}}],["installs",{"2":{"79":1}}],["installed",{"2":{"73":1}}],["installation",{"2":{"55":1}}],["install",{"2":{"55":1,"80":3,"81":1}}],["instead",{"0":{"49":1},"2":{"14":3,"55":1}}],["inserting",{"2":{"36":1}}],["insertion",{"2":{"14":1}}],["inserted",{"2":{"32":1,"36":1}}],["insert",{"2":{"26":1,"36":1,"43":1,"44":1,"64":1}}],["inspection",{"2":{"17":1}}],["innerhtml",{"2":{"14":2}}],["increase",{"2":{"55":1}}],["include",{"2":{"32":1,"45":1,"73":1}}],["includes",{"2":{"26":1,"27":1}}],["included",{"2":{"14":1,"26":1,"41":1,"42":1,"55":1}}],["including",{"2":{"19":2,"37":1,"43":1,"44":1,"65":1,"73":1,"74":1}}],["incorporated",{"2":{"1":1}}],["inline",{"0":{"64":1,"65":1},"2":{"1":5,"14":2,"19":1,"20":5,"30":5,"36":4,"41":1,"43":1,"44":1,"45":3,"50":1,"52":1}}],["in",{"2":{"1":6,"3":1,"8":1,"9":1,"14":6,"19":2,"21":1,"22":3,"23":1,"24":1,"25":2,"26":3,"27":1,"30":2,"36":1,"38":1,"40":1,"42":1,"45":1,"46":1,"50":2,"51":1,"52":1,"65":1,"69":1,"70":1,"73":7,"74":2,"75":1,"77":2,"80":1,"81":1}}],["flash",{"2":{"73":2}}],["flexibility",{"2":{"34":1}}],["f5lbktwsji2ubxftun+t16cnbh7l",{"2":{"54":1}}],["fdf",{"2":{"27":1}}],["full",{"0":{"48":1},"2":{"48":2}}],["fullscreen",{"2":{"9":2}}],["functioning",{"2":{"71":1}}],["functional",{"2":{"55":1}}],["functionality",{"2":{"12":1,"48":1}}],["function",{"2":{"14":1,"37":1,"53":1}}],["frustration",{"2":{"64":1}}],["frameborder",{"2":{"40":1}}],["frequently",{"2":{"26":1,"75":1}}],["free",{"2":{"19":1}}],["freezing",{"2":{"8":1}}],["from",{"2":{"1":1,"16":1,"22":1,"36":1,"46":1,"55":1,"79":1,"80":3,"81":1}}],["fight",{"2":{"73":1}}],["field",{"2":{"70":1}}],["fill",{"2":{"32":1,"48":1,"50":1}}],["filling",{"2":{"32":1}}],["files",{"2":{"73":4}}],["file",{"2":{"1":2,"8":1,"14":1,"41":1,"50":1,"57":1,"59":1,"61":1,"65":1,"73":1}}],["finished",{"2":{"53":1}}],["fine",{"2":{"32":1}}],["find",{"2":{"20":1,"26":4,"56":1}}],["fitbv",{"2":{"27":2}}],["fitbh",{"2":{"27":2}}],["fitb",{"2":{"27":1}}],["fitv",{"2":{"27":2}}],["fith",{"2":{"27":2}}],["fit",{"2":{"27":1,"34":1}}],["first",{"2":{"20":1,"22":1}}],["firefox",{"2":{"1":1,"9":1,"16":1,"19":1,"21":1,"24":2,"30":1,"70":1}}],["fix",{"2":{"6":1,"12":1,"14":1}}],["fixed",{"2":{"5":1,"6":1,"8":1,"9":1,"12":1,"13":1}}],["familiar",{"2":{"73":1}}],["failure",{"2":{"45":1}}],["failed",{"2":{"20":1}}],["fail",{"2":{"20":1}}],["fast",{"2":{"14":1}}],["false",{"2":{"6":1,"16":1,"30":3,"32":1,"36":2,"42":1,"45":1,"46":1}}],["fallbacklink",{"0":{"36":1},"2":{"6":1,"36":2,"52":1,"53":1}}],["fallback",{"0":{"52":1,"65":1},"2":{"1":2,"14":2,"19":1,"20":1,"36":4,"41":2,"52":2,"55":1,"65":1,"73":2,"75":1,"76":1,"77":3}}],["favor",{"2":{"1":1,"22":1}}],["four",{"2":{"74":1}}],["found",{"2":{"1":3,"30":3}}],["focus",{"2":{"73":1}}],["following",{"2":{"30":1,"32":1,"40":1,"48":1}}],["foo",{"2":{"14":1,"40":2}}],["foxit",{"2":{"1":1,"22":1,"25":1,"26":3,"27":1,"30":2,"37":1,"73":1}}],["forking",{"2":{"70":1}}],["forks",{"2":{"26":1}}],["fork",{"2":{"22":2,"26":1}}],["forcing",{"2":{"13":1,"42":1,"69":1}}],["forcepdfjs",{"0":{"42":1},"2":{"41":1,"55":1}}],["forces",{"2":{"14":1}}],["force",{"2":{"8":1,"14":1,"30":1,"55":1,"69":1,"72":1}}],["forceiframe",{"2":{"1":1,"14":1}}],["for",{"0":{"27":1,"61":1,"64":1,"79":1},"1":{"80":1,"81":1},"2":{"1":3,"4":1,"5":1,"9":3,"10":1,"11":1,"12":1,"14":8,"16":1,"17":1,"19":5,"20":1,"25":1,"26":3,"27":1,"30":4,"32":1,"33":2,"35":1,"37":2,"40":1,"41":2,"47":1,"53":1,"55":2,"56":1,"61":1,"64":2,"65":1,"69":1,"70":1,"71":1,"73":9,"75":2,"79":1,"80":1,"81":1}}],["fear",{"2":{"64":1}}],["features",{"2":{"25":1,"70":1,"72":1}}],["feature",{"2":{"1":1,"19":1}}],["feel",{"0":{"70":1},"2":{"55":1}}],["few",{"2":{"26":1,"34":1,"73":1}}],["february",{"0":{"1":1},"2":{"1":1,"20":1,"27":1,"30":1}}],["3pp",{"2":{"48":2,"49":2,"51":2,"52":1,"53":2,"55":1,"75":1,"76":1,"77":2,"78":3,"81":1}}],["302",{"2":{"14":1}}],["3",{"0":{"1":1,"11":1,"60":1,"79":1},"1":{"80":1,"81":1},"2":{"31":1,"73":1,"79":1,"81":1}}],["2008",{"2":{"73":2}}],["200px",{"2":{"50":1}}],["2005",{"2":{"26":1}}],["2007",{"2":{"26":1}}],["2000s",{"2":{"25":1,"26":1}}],["2009",{"2":{"23":1}}],["2019",{"2":{"26":1}}],["2010",{"2":{"25":1}}],["2013",{"2":{"24":1}}],["2011",{"2":{"22":1}}],["2016",{"0":{"18":1},"2":{"73":1}}],["2017",{"0":{"17":1}}],["2018",{"0":{"15":1,"16":1}}],["2020",{"0":{"10":1,"11":1,"12":1,"13":1,"14":1},"2":{"73":1}}],["2021",{"0":{"7":1,"8":1,"9":1}}],["2022",{"0":{"6":1}}],["2023",{"0":{"2":1,"3":1,"4":1,"5":1},"2":{"1":1,"22":1}}],["2024",{"0":{"1":1},"2":{"1":1,"20":1,"27":1,"30":1,"73":1}}],["251",{"2":{"8":1}}],["258",{"2":{"7":1}}],["247",{"2":{"8":1}}],["248",{"2":{"8":1}}],["243",{"2":{"1":1,"8":1}}],["267",{"2":{"6":1}}],["263",{"2":{"6":1}}],["274",{"2":{"5":1}}],["272",{"2":{"5":1}}],["270",{"2":{"1":1}}],["287",{"2":{"2":1}}],["290",{"2":{"1":1}}],["2",{"0":{"1":1,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":3,"13":2,"14":2,"15":1,"16":1,"17":1,"18":1,"59":1},"2":{"16":1,"18":1,"19":1,"31":1,"34":1,"35":1,"37":2,"51":2,"55":1,"61":2,"67":1,"73":1,"80":1,"81":1}}]],"serializationVersion":2}`;export{e as default}; diff --git a/docs/.vitepress/dist/assets/chunks/VPLocalSearchBox.CFIO9gVL.js b/docs/.vitepress/dist/assets/chunks/VPLocalSearchBox.CFIO9gVL.js new file mode 100644 index 0000000..ebd82e1 --- /dev/null +++ b/docs/.vitepress/dist/assets/chunks/VPLocalSearchBox.CFIO9gVL.js @@ -0,0 +1,13 @@ +var kt=Object.defineProperty;var It=(o,e,t)=>e in o?kt(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var Oe=(o,e,t)=>(It(o,typeof e!="symbol"?e+"":e,t),t);import{Y as mt,h as oe,y as $e,al as Dt,am as Ot,d as _t,H as xe,an as tt,k as Fe,ao as Rt,ap as Mt,z as Lt,aq as zt,l as _e,S as de,Q as Ee,ar as Pt,as as Bt,Z as Vt,j as $t,at as Wt,o as ee,b as Kt,m as E,a2 as jt,p as U,au as Jt,av as Ut,aw as Ht,c as re,n as rt,e as Se,G as at,F as nt,a as ve,t as pe,ax as Gt,q as qt,s as Qt,ay as it,az as Yt,aa as Zt,ag as Xt,aA as er,_ as tr}from"./framework.BaJ171t2.js";import{u as rr,c as ar}from"./theme.BAGvGbCH.js";const nr={root:()=>mt(()=>import("./@localSearchIndexroot.CW-uRQkK.js"),__vite__mapDeps([]))};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var yt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Te=yt.join(","),gt=typeof Element>"u",ue=gt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ne=!gt&&Element.prototype.getRootNode?function(o){var e;return o==null||(e=o.getRootNode)===null||e===void 0?void 0:e.call(o)}:function(o){return o==null?void 0:o.ownerDocument},ke=function o(e,t){var r;t===void 0&&(t=!0);var n=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),a=n===""||n==="true",i=a||t&&e&&o(e.parentNode);return i},ir=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},bt=function(e,t,r){if(ke(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Te));return t&&ue.call(e,Te)&&n.unshift(e),n=n.filter(r),n},wt=function o(e,t,r){for(var n=[],a=Array.from(e);a.length;){var i=a.shift();if(!ke(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var h=ue.call(i,Te);h&&r.filter(i)&&(t||!e.includes(i))&&n.push(i);var d=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!ke(d,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(d&&v){var m=o(d===!0?i.children:d.children,!0,r);r.flatten?n.push.apply(n,m):n.push({scopeParent:i,candidates:m})}else a.unshift.apply(a,i.children)}}return n},xt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},se=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||ir(e))&&!xt(e)?0:e.tabIndex},or=function(e,t){var r=se(e);return r<0&&t&&!xt(e)?0:r},sr=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},Ft=function(e){return e.tagName==="INPUT"},ur=function(e){return Ft(e)&&e.type==="hidden"},lr=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},cr=function(e,t){for(var r=0;rsummary:first-of-type"),i=a?e.parentElement:e;if(ue.call(i,"details:not([open]) *"))return!0;if(!r||r==="full"||r==="legacy-full"){if(typeof n=="function"){for(var s=e;e;){var u=e.parentElement,l=Ne(e);if(u&&!u.shadowRoot&&n(u)===!0)return ot(e);e.assignedSlot?e=e.assignedSlot:!u&&l!==e.ownerDocument?e=l.host:e=u}e=s}if(vr(e))return!e.getClientRects().length;if(r!=="legacy-full")return!0}else if(r==="non-zero-area")return ot(e);return!1},mr=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var r=0;r=0)},gr=function o(e){var t=[],r=[];return e.forEach(function(n,a){var i=!!n.scopeParent,s=i?n.scopeParent:n,u=or(s,i),l=i?o(n.candidates):s;u===0?i?t.push.apply(t,l):t.push(s):r.push({documentOrder:a,tabIndex:u,item:n,isScope:i,content:l})}),r.sort(sr).reduce(function(n,a){return a.isScope?n.push.apply(n,a.content):n.push(a.content),n},[]).concat(t)},br=function(e,t){t=t||{};var r;return t.getShadowRoot?r=wt([e],t.includeContainer,{filter:We.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:yr}):r=bt(e,t.includeContainer,We.bind(null,t)),gr(r)},wr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=wt([e],t.includeContainer,{filter:Ie.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=bt(e,t.includeContainer,Ie.bind(null,t)),r},le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,Te)===!1?!1:We(t,e)},xr=yt.concat("iframe").join(","),Re=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,xr)===!1?!1:Ie(t,e)};/*! +* focus-trap 7.5.4 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function st(o,e){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(o);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(o,n).enumerable})),t.push.apply(t,r)}return t}function ut(o){for(var e=1;e0){var r=e[e.length-1];r!==t&&r.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var r=e.indexOf(t);r!==-1&&e.splice(r,1),e.length>0&&e[e.length-1].unpause()}},Ar=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Cr=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ge=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Tr=function(e){return ge(e)&&!e.shiftKey},Nr=function(e){return ge(e)&&e.shiftKey},ct=function(e){return setTimeout(e,0)},ft=function(e,t){var r=-1;return e.every(function(n,a){return t(n)?(r=a,!1):!0}),r},me=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n1?p-1:0),I=1;I=0)c=r.activeElement;else{var f=i.tabbableGroups[0],p=f&&f.firstTabbableNode;c=p||h("fallbackFocus")}if(!c)throw new Error("Your focus-trap needs to have at least one focusable element");return c},v=function(){if(i.containerGroups=i.containers.map(function(c){var f=br(c,a.tabbableOptions),p=wr(c,a.tabbableOptions),k=f.length>0?f[0]:void 0,I=f.length>0?f[f.length-1]:void 0,M=p.find(function(y){return le(y)}),z=p.slice().reverse().find(function(y){return le(y)}),P=!!f.find(function(y){return se(y)>0});return{container:c,tabbableNodes:f,focusableNodes:p,posTabIndexesFound:P,firstTabbableNode:k,lastTabbableNode:I,firstDomTabbableNode:M,lastDomTabbableNode:z,nextTabbableNode:function(x){var $=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,K=f.indexOf(x);return K<0?$?p.slice(p.indexOf(x)+1).find(function(G){return le(G)}):p.slice(0,p.indexOf(x)).reverse().find(function(G){return le(G)}):f[K+($?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(c){return c.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(c){return c.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},m=function w(c){var f=c.activeElement;if(f)return f.shadowRoot&&f.shadowRoot.activeElement!==null?w(f.shadowRoot):f},b=function w(c){if(c!==!1&&c!==m(document)){if(!c||!c.focus){w(d());return}c.focus({preventScroll:!!a.preventScroll}),i.mostRecentlyFocusedNode=c,Ar(c)&&c.select()}},S=function(c){var f=h("setReturnFocus",c);return f||(f===!1?!1:c)},g=function(c){var f=c.target,p=c.event,k=c.isBackward,I=k===void 0?!1:k;f=f||Ae(p),v();var M=null;if(i.tabbableGroups.length>0){var z=l(f,p),P=z>=0?i.containerGroups[z]:void 0;if(z<0)I?M=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:M=i.tabbableGroups[0].firstTabbableNode;else if(I){var y=ft(i.tabbableGroups,function(B){var J=B.firstTabbableNode;return f===J});if(y<0&&(P.container===f||Re(f,a.tabbableOptions)&&!le(f,a.tabbableOptions)&&!P.nextTabbableNode(f,!1))&&(y=z),y>=0){var x=y===0?i.tabbableGroups.length-1:y-1,$=i.tabbableGroups[x];M=se(f)>=0?$.lastTabbableNode:$.lastDomTabbableNode}else ge(p)||(M=P.nextTabbableNode(f,!1))}else{var K=ft(i.tabbableGroups,function(B){var J=B.lastTabbableNode;return f===J});if(K<0&&(P.container===f||Re(f,a.tabbableOptions)&&!le(f,a.tabbableOptions)&&!P.nextTabbableNode(f))&&(K=z),K>=0){var G=K===i.tabbableGroups.length-1?0:K+1,q=i.tabbableGroups[G];M=se(f)>=0?q.firstTabbableNode:q.firstDomTabbableNode}else ge(p)||(M=P.nextTabbableNode(f))}}else M=h("fallbackFocus");return M},A=function(c){var f=Ae(c);if(!(l(f,c)>=0)){if(me(a.clickOutsideDeactivates,c)){s.deactivate({returnFocus:a.returnFocusOnDeactivate});return}me(a.allowOutsideClick,c)||c.preventDefault()}},T=function(c){var f=Ae(c),p=l(f,c)>=0;if(p||f instanceof Document)p&&(i.mostRecentlyFocusedNode=f);else{c.stopImmediatePropagation();var k,I=!0;if(i.mostRecentlyFocusedNode)if(se(i.mostRecentlyFocusedNode)>0){var M=l(i.mostRecentlyFocusedNode),z=i.containerGroups[M].tabbableNodes;if(z.length>0){var P=z.findIndex(function(y){return y===i.mostRecentlyFocusedNode});P>=0&&(a.isKeyForward(i.recentNavEvent)?P+1=0&&(k=z[P-1],I=!1))}}else i.containerGroups.some(function(y){return y.tabbableNodes.some(function(x){return se(x)>0})})||(I=!1);else I=!1;I&&(k=g({target:i.mostRecentlyFocusedNode,isBackward:a.isKeyBackward(i.recentNavEvent)})),b(k||i.mostRecentlyFocusedNode||d())}i.recentNavEvent=void 0},F=function(c){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=c;var p=g({event:c,isBackward:f});p&&(ge(c)&&c.preventDefault(),b(p))},L=function(c){if(Cr(c)&&me(a.escapeDeactivates,c)!==!1){c.preventDefault(),s.deactivate();return}(a.isKeyForward(c)||a.isKeyBackward(c))&&F(c,a.isKeyBackward(c))},R=function(c){var f=Ae(c);l(f,c)>=0||me(a.clickOutsideDeactivates,c)||me(a.allowOutsideClick,c)||(c.preventDefault(),c.stopImmediatePropagation())},V=function(){if(i.active)return lt.activateTrap(n,s),i.delayInitialFocusTimer=a.delayInitialFocus?ct(function(){b(d())}):b(d()),r.addEventListener("focusin",T,!0),r.addEventListener("mousedown",A,{capture:!0,passive:!1}),r.addEventListener("touchstart",A,{capture:!0,passive:!1}),r.addEventListener("click",R,{capture:!0,passive:!1}),r.addEventListener("keydown",L,{capture:!0,passive:!1}),s},N=function(){if(i.active)return r.removeEventListener("focusin",T,!0),r.removeEventListener("mousedown",A,!0),r.removeEventListener("touchstart",A,!0),r.removeEventListener("click",R,!0),r.removeEventListener("keydown",L,!0),s},_=function(c){var f=c.some(function(p){var k=Array.from(p.removedNodes);return k.some(function(I){return I===i.mostRecentlyFocusedNode})});f&&b(d())},C=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(_):void 0,O=function(){C&&(C.disconnect(),i.active&&!i.paused&&i.containers.map(function(c){C.observe(c,{subtree:!0,childList:!0})}))};return s={get active(){return i.active},get paused(){return i.paused},activate:function(c){if(i.active)return this;var f=u(c,"onActivate"),p=u(c,"onPostActivate"),k=u(c,"checkCanFocusTrap");k||v(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=r.activeElement,f==null||f();var I=function(){k&&v(),V(),O(),p==null||p()};return k?(k(i.containers.concat()).then(I,I),this):(I(),this)},deactivate:function(c){if(!i.active)return this;var f=ut({onDeactivate:a.onDeactivate,onPostDeactivate:a.onPostDeactivate,checkCanReturnFocus:a.checkCanReturnFocus},c);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,N(),i.active=!1,i.paused=!1,O(),lt.deactivateTrap(n,s);var p=u(f,"onDeactivate"),k=u(f,"onPostDeactivate"),I=u(f,"checkCanReturnFocus"),M=u(f,"returnFocus","returnFocusOnDeactivate");p==null||p();var z=function(){ct(function(){M&&b(S(i.nodeFocusedBeforeActivation)),k==null||k()})};return M&&I?(I(S(i.nodeFocusedBeforeActivation)).then(z,z),this):(z(),this)},pause:function(c){if(i.paused||!i.active)return this;var f=u(c,"onPause"),p=u(c,"onPostPause");return i.paused=!0,f==null||f(),N(),O(),p==null||p(),this},unpause:function(c){if(!i.paused||!i.active)return this;var f=u(c,"onUnpause"),p=u(c,"onPostUnpause");return i.paused=!1,f==null||f(),v(),V(),O(),p==null||p(),this},updateContainerElements:function(c){var f=[].concat(c).filter(Boolean);return i.containers=f.map(function(p){return typeof p=="string"?r.querySelector(p):p}),i.active&&v(),O(),this}},s.updateContainerElements(e),s};function Dr(o,e={}){let t;const{immediate:r,...n}=e,a=oe(!1),i=oe(!1),s=d=>t&&t.activate(d),u=d=>t&&t.deactivate(d),l=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)};return $e(()=>Dt(o),d=>{d&&(t=Ir(d,{...n,onActivate(){a.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){a.value=!1,e.onDeactivate&&e.onDeactivate()}}),r&&s())},{flush:"post"}),Ot(()=>u()),{hasFocus:a,isPaused:i,activate:s,deactivate:u,pause:l,unpause:h}}class fe{constructor(e,t=!0,r=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=r,this.iframesTimeout=n}static matches(e,t){const r=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let a=!1;return r.every(i=>n.call(e,i)?(a=!0,!1):!0),a}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(r=>{const n=t.filter(a=>a.contains(r)).length>0;t.indexOf(r)===-1&&!n&&t.push(r)}),t}getIframeContents(e,t,r=()=>{}){let n;try{const a=e.contentWindow;if(n=a.document,!a||!n)throw new Error("iframe inaccessible")}catch{r()}n&&t(n)}isIframeBlank(e){const t="about:blank",r=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&r!==t&&r}observeIframeLoad(e,t,r){let n=!1,a=null;const i=()=>{if(!n){n=!0,clearTimeout(a);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,r))}catch{r()}}};e.addEventListener("load",i),a=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,r){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,r):this.getIframeContents(e,t,r):this.observeIframeLoad(e,t,r)}catch{r()}}waitForIframes(e,t){let r=0;this.forEachIframe(e,()=>!0,n=>{r++,this.waitForIframes(n.querySelector("html"),()=>{--r||t()})},n=>{n||t()})}forEachIframe(e,t,r,n=()=>{}){let a=e.querySelectorAll("iframe"),i=a.length,s=0;a=Array.prototype.slice.call(a);const u=()=>{--i<=0&&n(s)};i||u(),a.forEach(l=>{fe.matches(l,this.exclude)?u():this.onIframeReady(l,h=>{t(l)&&(s++,r(h)),u()},u)})}createIterator(e,t,r){return document.createNodeIterator(e,t,r,!1)}createInstanceOnIframe(e){return new fe(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,r){const n=e.compareDocumentPosition(r),a=Node.DOCUMENT_POSITION_PRECEDING;if(n&a)if(t!==null){const i=t.compareDocumentPosition(r),s=Node.DOCUMENT_POSITION_FOLLOWING;if(i&s)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let r;return t===null?r=e.nextNode():r=e.nextNode()&&e.nextNode(),{prevNode:t,node:r}}checkIframeFilter(e,t,r,n){let a=!1,i=!1;return n.forEach((s,u)=>{s.val===r&&(a=u,i=s.handled)}),this.compareNodeIframe(e,t,r)?(a===!1&&!i?n.push({val:r,handled:!0}):a!==!1&&!i&&(n[a].handled=!0),!0):(a===!1&&n.push({val:r,handled:!1}),!1)}handleOpenIframes(e,t,r,n){e.forEach(a=>{a.handled||this.getIframeContents(a.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,r,n)})})}iterateThroughNodes(e,t,r,n,a){const i=this.createIterator(t,e,n);let s=[],u=[],l,h,d=()=>({prevNode:h,node:l}=this.getIteratorNode(i),l);for(;d();)this.iframes&&this.forEachIframe(t,v=>this.checkIframeFilter(l,h,v,s),v=>{this.createInstanceOnIframe(v).forEachNode(e,m=>u.push(m),n)}),u.push(l);u.forEach(v=>{r(v)}),this.iframes&&this.handleOpenIframes(s,e,r,n),a()}forEachNode(e,t,r,n=()=>{}){const a=this.getContexts();let i=a.length;i||n(),a.forEach(s=>{const u=()=>{this.iterateThroughNodes(e,s,t,r,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(s,u):u()})}}let Or=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new fe(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const r=this.opt.log;this.opt.debug&&typeof r=="object"&&typeof r[t]=="function"&&r[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,r=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let a in t)if(t.hasOwnProperty(a)){const i=t[a],s=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(a):this.escapeStr(a),u=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);s!==""&&u!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(s)}|${this.escapeStr(u)})`,`gm${r}`),n+`(${this.processSynomyms(s)}|${this.processSynomyms(u)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,r,n)=>{let a=n.charAt(r+1);return/[(|)\\]/.test(a)||a===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const r=this.opt.ignorePunctuation;return Array.isArray(r)&&r.length&&t.push(this.escapeStr(r.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",r=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(a=>{r.every(i=>{if(i.indexOf(a)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let r=this.opt.accuracy,n=typeof r=="string"?r:r.value,a=typeof r=="string"?[]:r.limiters,i="";switch(a.forEach(s=>{i+=`|${this.escapeStr(s)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(r=>{this.opt.separateWordSearch?r.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):r.trim()&&t.indexOf(r)===-1&&t.push(r)}),{keywords:t.sort((r,n)=>n.length-r.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let r=0;return e.sort((n,a)=>n.start-a.start).forEach(n=>{let{start:a,end:i,valid:s}=this.callNoMatchOnInvalidRanges(n,r);s&&(n.start=a,n.length=i-a,t.push(n),r=i)}),t}callNoMatchOnInvalidRanges(e,t){let r,n,a=!1;return e&&typeof e.start<"u"?(r=parseInt(e.start,10),n=r+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-r>0?a=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:r,end:n,valid:a}}checkWhitespaceRanges(e,t,r){let n,a=!0,i=r.length,s=t-i,u=parseInt(e.start,10)-s;return u=u>i?i:u,n=u+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),u<0||n-u<0||u>i||n>i?(a=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):r.substring(u,n).replace(/\s+/g,"")===""&&(a=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:u,end:n,valid:a}}getTextNodes(e){let t="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{r.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:r})})}matchesExclude(e){return fe.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,r){const n=this.opt.element?this.opt.element:"mark",a=e.splitText(t),i=a.splitText(r-t);let s=document.createElement(n);return s.setAttribute("data-markjs","true"),this.opt.className&&s.setAttribute("class",this.opt.className),s.textContent=a.textContent,a.parentNode.replaceChild(s,a),i}wrapRangeInMappedTextNode(e,t,r,n,a){e.nodes.every((i,s)=>{const u=e.nodes[s+1];if(typeof u>"u"||u.start>t){if(!n(i.node))return!1;const l=t-i.start,h=(r>i.end?i.end:r)-i.start,d=e.value.substr(0,i.start),v=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,l,h),e.value=d+v,e.nodes.forEach((m,b)=>{b>=s&&(e.nodes[b].start>0&&b!==s&&(e.nodes[b].start-=h),e.nodes[b].end-=h)}),r-=h,a(i.node.previousSibling,i.start),r>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,r,n,a){const i=t===0?0:t+1;this.getTextNodes(s=>{s.nodes.forEach(u=>{u=u.node;let l;for(;(l=e.exec(u.textContent))!==null&&l[i]!=="";){if(!r(l[i],u))continue;let h=l.index;if(i!==0)for(let d=1;d{let u;for(;(u=e.exec(s.value))!==null&&u[i]!=="";){let l=u.index;if(i!==0)for(let d=1;dr(u[i],d),(d,v)=>{e.lastIndex=v,n(d)})}a()})}wrapRangeFromIndex(e,t,r,n){this.getTextNodes(a=>{const i=a.value.length;e.forEach((s,u)=>{let{start:l,end:h,valid:d}=this.checkWhitespaceRanges(s,i,a.value);d&&this.wrapRangeInMappedTextNode(a,l,h,v=>t(v,s,a.value.substring(l,h),u),v=>{r(v,s)})}),n()})}unwrapMatches(e){const t=e.parentNode;let r=document.createDocumentFragment();for(;e.firstChild;)r.appendChild(e.removeChild(e.firstChild));t.replaceChild(r,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let r=0,n="wrapMatches";const a=i=>{r++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,s)=>this.opt.filter(s,i,r),a,()=>{r===0&&this.opt.noMatch(e),this.opt.done(r)})}mark(e,t){this.opt=t;let r=0,n="wrapMatches";const{keywords:a,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),s=this.opt.caseSensitive?"":"i",u=l=>{let h=new RegExp(this.createRegExp(l),`gm${s}`),d=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(v,m)=>this.opt.filter(m,l,r,d),v=>{d++,r++,this.opt.each(v)},()=>{d===0&&this.opt.noMatch(l),a[i-1]===l?this.opt.done(r):u(a[a.indexOf(l)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(r):u(a[0])}markRanges(e,t){this.opt=t;let r=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(a,i,s,u)=>this.opt.filter(a,i,s,u),(a,i)=>{r++,this.opt.each(a,i)},()=>{this.opt.done(r)})):this.opt.done(r)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,r=>{this.unwrapMatches(r)},r=>{const n=fe.matches(r,t),a=this.matchesExclude(r);return!n||a?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function _r(o){const e=new Or(o);return this.mark=(t,r)=>(e.mark(t,r),this),this.markRegExp=(t,r)=>(e.markRegExp(t,r),this),this.markRanges=(t,r)=>(e.markRanges(t,r),this),this.unmark=t=>(e.unmark(t),this),this}var W=function(){return W=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&a[a.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!a||l[1]>a[0]&&l[1]=o.length&&(o=void 0),{value:o&&o[r++],done:!o}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function j(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var r=t.call(o),n,a=[],i;try{for(;(e===void 0||e-- >0)&&!(n=r.next()).done;)a.push(n.value)}catch(s){i={error:s}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(i)throw i.error}}return a}var Lr="ENTRIES",Et="KEYS",St="VALUES",H="",Me=function(){function o(e,t){var r=e._tree,n=Array.from(r.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:r,keys:n}]:[]}return o.prototype.next=function(){var e=this.dive();return this.backtrack(),e},o.prototype.dive=function(){if(this._path.length===0)return{done:!0,value:void 0};var e=ce(this._path),t=e.node,r=e.keys;if(ce(r)===H)return{done:!1,value:this.result()};var n=t.get(ce(r));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()},o.prototype.backtrack=function(){if(this._path.length!==0){var e=ce(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}},o.prototype.key=function(){return this.set._prefix+this._path.map(function(e){var t=e.keys;return ce(t)}).filter(function(e){return e!==H}).join("")},o.prototype.value=function(){return ce(this._path).node.get(H)},o.prototype.result=function(){switch(this._type){case St:return this.value();case Et:return this.key();default:return[this.key(),this.value()]}},o.prototype[Symbol.iterator]=function(){return this},o}(),ce=function(o){return o[o.length-1]},zr=function(o,e,t){var r=new Map;if(e===void 0)return r;for(var n=e.length+1,a=n+t,i=new Uint8Array(a*n).fill(t+1),s=0;st)continue e}At(o.get(m),e,t,r,n,S,i,s+m)}}}catch(f){u={error:f}}finally{try{v&&!v.done&&(l=d.return)&&l.call(d)}finally{if(u)throw u.error}}},Le=function(){function o(e,t){e===void 0&&(e=new Map),t===void 0&&(t=""),this._size=void 0,this._tree=e,this._prefix=t}return o.prototype.atPrefix=function(e){var t,r;if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");var n=j(De(this._tree,e.slice(this._prefix.length)),2),a=n[0],i=n[1];if(a===void 0){var s=j(Ue(i),2),u=s[0],l=s[1];try{for(var h=D(u.keys()),d=h.next();!d.done;d=h.next()){var v=d.value;if(v!==H&&v.startsWith(l)){var m=new Map;return m.set(v.slice(l.length),u.get(v)),new o(m,e)}}}catch(b){t={error:b}}finally{try{d&&!d.done&&(r=h.return)&&r.call(h)}finally{if(t)throw t.error}}}return new o(a,e)},o.prototype.clear=function(){this._size=void 0,this._tree.clear()},o.prototype.delete=function(e){return this._size=void 0,Pr(this._tree,e)},o.prototype.entries=function(){return new Me(this,Lr)},o.prototype.forEach=function(e){var t,r;try{for(var n=D(this),a=n.next();!a.done;a=n.next()){var i=j(a.value,2),s=i[0],u=i[1];e(s,u,this)}}catch(l){t={error:l}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},o.prototype.fuzzyGet=function(e,t){return zr(this._tree,e,t)},o.prototype.get=function(e){var t=Ke(this._tree,e);return t!==void 0?t.get(H):void 0},o.prototype.has=function(e){var t=Ke(this._tree,e);return t!==void 0&&t.has(H)},o.prototype.keys=function(){return new Me(this,Et)},o.prototype.set=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=ze(this._tree,e);return r.set(H,t),this},Object.defineProperty(o.prototype,"size",{get:function(){if(this._size)return this._size;this._size=0;for(var e=this.entries();!e.next().done;)this._size+=1;return this._size},enumerable:!1,configurable:!0}),o.prototype.update=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=ze(this._tree,e);return r.set(H,t(r.get(H))),this},o.prototype.fetch=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=ze(this._tree,e),n=r.get(H);return n===void 0&&r.set(H,n=t()),n},o.prototype.values=function(){return new Me(this,St)},o.prototype[Symbol.iterator]=function(){return this.entries()},o.from=function(e){var t,r,n=new o;try{for(var a=D(e),i=a.next();!i.done;i=a.next()){var s=j(i.value,2),u=s[0],l=s[1];n.set(u,l)}}catch(h){t={error:h}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return n},o.fromObject=function(e){return o.from(Object.entries(e))},o}(),De=function(o,e,t){var r,n;if(t===void 0&&(t=[]),e.length===0||o==null)return[o,t];try{for(var a=D(o.keys()),i=a.next();!i.done;i=a.next()){var s=i.value;if(s!==H&&e.startsWith(s))return t.push([o,s]),De(o.get(s),e.slice(s.length),t)}}catch(u){r={error:u}}finally{try{i&&!i.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}return t.push([o,e]),De(void 0,"",t)},Ke=function(o,e){var t,r;if(e.length===0||o==null)return o;try{for(var n=D(o.keys()),a=n.next();!a.done;a=n.next()){var i=a.value;if(i!==H&&e.startsWith(i))return Ke(o.get(i),e.slice(i.length))}}catch(s){t={error:s}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},ze=function(o,e){var t,r,n=e.length;e:for(var a=0;o&&a0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new Le,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}},o.prototype.discard=function(e){var t=this,r=this._idToShortId.get(e);if(r==null)throw new Error("MiniSearch: cannot discard document with ID ".concat(e,": it is not in the index"));this._idToShortId.delete(e),this._documentIds.delete(r),this._storedFields.delete(r),(this._fieldLength.get(r)||[]).forEach(function(n,a){t.removeFieldLength(r,a,t._documentCount,n)}),this._fieldLength.delete(r),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()},o.prototype.maybeAutoVacuum=function(){if(this._options.autoVacuum!==!1){var e=this._options.autoVacuum,t=e.minDirtFactor,r=e.minDirtCount,n=e.batchSize,a=e.batchWait;this.conditionalVacuum({batchSize:n,batchWait:a},{minDirtCount:r,minDirtFactor:t})}},o.prototype.discardAll=function(e){var t,r,n=this._options.autoVacuum;try{this._options.autoVacuum=!1;try{for(var a=D(e),i=a.next();!i.done;i=a.next()){var s=i.value;this.discard(s)}}catch(u){t={error:u}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}}finally{this._options.autoVacuum=n}this.maybeAutoVacuum()},o.prototype.replace=function(e){var t=this._options,r=t.idField,n=t.extractField,a=n(e,r);this.discard(a),this.add(e)},o.prototype.vacuum=function(e){return e===void 0&&(e={}),this.conditionalVacuum(e)},o.prototype.conditionalVacuum=function(e,t){var r=this;return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(function(){var n=r._enqueuedVacuumConditions;return r._enqueuedVacuumConditions=Je,r.performVacuuming(e,n)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)},o.prototype.performVacuuming=function(e,t){return Rr(this,void 0,void 0,function(){var r,n,a,i,s,u,l,h,d,v,m,b,S,g,A,T,F,L,R,V,N,_,C,O,w;return Mr(this,function(c){switch(c.label){case 0:if(r=this._dirtCount,!this.vacuumConditionsMet(t))return[3,10];n=e.batchSize||je.batchSize,a=e.batchWait||je.batchWait,i=1,c.label=1;case 1:c.trys.push([1,7,8,9]),s=D(this._index),u=s.next(),c.label=2;case 2:if(u.done)return[3,6];l=j(u.value,2),h=l[0],d=l[1];try{for(v=(_=void 0,D(d)),m=v.next();!m.done;m=v.next()){b=j(m.value,2),S=b[0],g=b[1];try{for(A=(O=void 0,D(g)),T=A.next();!T.done;T=A.next())F=j(T.value,1),L=F[0],!this._documentIds.has(L)&&(g.size<=1?d.delete(S):g.delete(L))}catch(f){O={error:f}}finally{try{T&&!T.done&&(w=A.return)&&w.call(A)}finally{if(O)throw O.error}}}}catch(f){_={error:f}}finally{try{m&&!m.done&&(C=v.return)&&C.call(v)}finally{if(_)throw _.error}}return this._index.get(h).size===0&&this._index.delete(h),i%n!==0?[3,4]:[4,new Promise(function(f){return setTimeout(f,a)})];case 3:c.sent(),c.label=4;case 4:i+=1,c.label=5;case 5:return u=s.next(),[3,2];case 6:return[3,9];case 7:return R=c.sent(),V={error:R},[3,9];case 8:try{u&&!u.done&&(N=s.return)&&N.call(s)}finally{if(V)throw V.error}return[7];case 9:this._dirtCount-=r,c.label=10;case 10:return[4,null];case 11:return c.sent(),this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null,[2]}})})},o.prototype.vacuumConditionsMet=function(e){if(e==null)return!0;var t=e.minDirtCount,r=e.minDirtFactor;return t=t||Ve.minDirtCount,r=r||Ve.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=r},Object.defineProperty(o.prototype,"isVacuuming",{get:function(){return this._currentVacuum!=null},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtCount",{get:function(){return this._dirtCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtFactor",{get:function(){return this._dirtCount/(1+this._documentCount+this._dirtCount)},enumerable:!1,configurable:!0}),o.prototype.has=function(e){return this._idToShortId.has(e)},o.prototype.getStoredFields=function(e){var t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)},o.prototype.search=function(e,t){var r,n;t===void 0&&(t={});var a=this.executeQuery(e,t),i=[];try{for(var s=D(a),u=s.next();!u.done;u=s.next()){var l=j(u.value,2),h=l[0],d=l[1],v=d.score,m=d.terms,b=d.match,S=m.length||1,g={id:this._documentIds.get(h),score:v*S,terms:Object.keys(b),queryTerms:m,match:b};Object.assign(g,this._storedFields.get(h)),(t.filter==null||t.filter(g))&&i.push(g)}}catch(A){r={error:A}}finally{try{u&&!u.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}return e===o.wildcard&&t.boostDocument==null&&this._options.searchOptions.boostDocument==null||i.sort(vt),i},o.prototype.autoSuggest=function(e,t){var r,n,a,i;t===void 0&&(t={}),t=W(W({},this._options.autoSuggestOptions),t);var s=new Map;try{for(var u=D(this.search(e,t)),l=u.next();!l.done;l=u.next()){var h=l.value,d=h.score,v=h.terms,m=v.join(" "),b=s.get(m);b!=null?(b.score+=d,b.count+=1):s.set(m,{score:d,terms:v,count:1})}}catch(R){r={error:R}}finally{try{l&&!l.done&&(n=u.return)&&n.call(u)}finally{if(r)throw r.error}}var S=[];try{for(var g=D(s),A=g.next();!A.done;A=g.next()){var T=j(A.value,2),b=T[0],F=T[1],d=F.score,v=F.terms,L=F.count;S.push({suggestion:b,terms:v,score:d/L})}}catch(R){a={error:R}}finally{try{A&&!A.done&&(i=g.return)&&i.call(g)}finally{if(a)throw a.error}}return S.sort(vt),S},Object.defineProperty(o.prototype,"documentCount",{get:function(){return this._documentCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"termCount",{get:function(){return this._index.size},enumerable:!1,configurable:!0}),o.loadJSON=function(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)},o.getDefault=function(e){if(Be.hasOwnProperty(e))return Pe(Be,e);throw new Error('MiniSearch: unknown option "'.concat(e,'"'))},o.loadJS=function(e,t){var r,n,a,i,s,u,l=e.index,h=e.documentCount,d=e.nextId,v=e.documentIds,m=e.fieldIds,b=e.fieldLength,S=e.averageFieldLength,g=e.storedFields,A=e.dirtCount,T=e.serializationVersion;if(T!==1&&T!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");var F=new o(t);F._documentCount=h,F._nextId=d,F._documentIds=Ce(v),F._idToShortId=new Map,F._fieldIds=m,F._fieldLength=Ce(b),F._avgFieldLength=S,F._storedFields=Ce(g),F._dirtCount=A||0,F._index=new Le;try{for(var L=D(F._documentIds),R=L.next();!R.done;R=L.next()){var V=j(R.value,2),N=V[0],_=V[1];F._idToShortId.set(_,N)}}catch(P){r={error:P}}finally{try{R&&!R.done&&(n=L.return)&&n.call(L)}finally{if(r)throw r.error}}try{for(var C=D(l),O=C.next();!O.done;O=C.next()){var w=j(O.value,2),c=w[0],f=w[1],p=new Map;try{for(var k=(s=void 0,D(Object.keys(f))),I=k.next();!I.done;I=k.next()){var M=I.value,z=f[M];T===1&&(z=z.ds),p.set(parseInt(M,10),Ce(z))}}catch(P){s={error:P}}finally{try{I&&!I.done&&(u=k.return)&&u.call(k)}finally{if(s)throw s.error}}F._index.set(c,p)}}catch(P){a={error:P}}finally{try{O&&!O.done&&(i=C.return)&&i.call(C)}finally{if(a)throw a.error}}return F},o.prototype.executeQuery=function(e,t){var r=this;if(t===void 0&&(t={}),e===o.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){var n=W(W(W({},t),e),{queries:void 0}),a=e.queries.map(function(g){return r.executeQuery(g,n)});return this.combineResults(a,n.combineWith)}var i=this._options,s=i.tokenize,u=i.processTerm,l=i.searchOptions,h=W(W({tokenize:s,processTerm:u},l),t),d=h.tokenize,v=h.processTerm,m=d(e).flatMap(function(g){return v(g)}).filter(function(g){return!!g}),b=m.map(jr(h)),S=b.map(function(g){return r.executeQuerySpec(g,h)});return this.combineResults(S,h.combineWith)},o.prototype.executeQuerySpec=function(e,t){var r,n,a,i,s=W(W({},this._options.searchOptions),t),u=(s.fields||this._options.fields).reduce(function(M,z){var P;return W(W({},M),(P={},P[z]=Pe(s.boost,z)||1,P))},{}),l=s.boostDocument,h=s.weights,d=s.maxFuzzy,v=s.bm25,m=W(W({},ht.weights),h),b=m.fuzzy,S=m.prefix,g=this._index.get(e.term),A=this.termResults(e.term,e.term,1,g,u,l,v),T,F;if(e.prefix&&(T=this._index.atPrefix(e.term)),e.fuzzy){var L=e.fuzzy===!0?.2:e.fuzzy,R=L<1?Math.min(d,Math.round(e.term.length*L)):L;R&&(F=this._index.fuzzyGet(e.term,R))}if(T)try{for(var V=D(T),N=V.next();!N.done;N=V.next()){var _=j(N.value,2),C=_[0],O=_[1],w=C.length-e.term.length;if(w){F==null||F.delete(C);var c=S*C.length/(C.length+.3*w);this.termResults(e.term,C,c,O,u,l,v,A)}}}catch(M){r={error:M}}finally{try{N&&!N.done&&(n=V.return)&&n.call(V)}finally{if(r)throw r.error}}if(F)try{for(var f=D(F.keys()),p=f.next();!p.done;p=f.next()){var C=p.value,k=j(F.get(C),2),I=k[0],w=k[1];if(w){var c=b*C.length/(C.length+w);this.termResults(e.term,C,c,I,u,l,v,A)}}}catch(M){a={error:M}}finally{try{p&&!p.done&&(i=f.return)&&i.call(f)}finally{if(a)throw a.error}}return A},o.prototype.executeWildcardQuery=function(e){var t,r,n=new Map,a=W(W({},this._options.searchOptions),e);try{for(var i=D(this._documentIds),s=i.next();!s.done;s=i.next()){var u=j(s.value,2),l=u[0],h=u[1],d=a.boostDocument?a.boostDocument(h,"",this._storedFields.get(l)):1;n.set(l,{score:d,terms:[],match:{}})}}catch(v){t={error:v}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}return n},o.prototype.combineResults=function(e,t){if(t===void 0&&(t=He),e.length===0)return new Map;var r=t.toLowerCase();return e.reduce($r[r])||new Map},o.prototype.toJSON=function(){var e,t,r,n,a=[];try{for(var i=D(this._index),s=i.next();!s.done;s=i.next()){var u=j(s.value,2),l=u[0],h=u[1],d={};try{for(var v=(r=void 0,D(h)),m=v.next();!m.done;m=v.next()){var b=j(m.value,2),S=b[0],g=b[1];d[S]=Object.fromEntries(g)}}catch(A){r={error:A}}finally{try{m&&!m.done&&(n=v.return)&&n.call(v)}finally{if(r)throw r.error}}a.push([l,d])}}catch(A){e={error:A}}finally{try{s&&!s.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:a,serializationVersion:2}},o.prototype.termResults=function(e,t,r,n,a,i,s,u){var l,h,d,v,m;if(u===void 0&&(u=new Map),n==null)return u;try{for(var b=D(Object.keys(a)),S=b.next();!S.done;S=b.next()){var g=S.value,A=a[g],T=this._fieldIds[g],F=n.get(T);if(F!=null){var L=F.size,R=this._avgFieldLength[T];try{for(var V=(d=void 0,D(F.keys())),N=V.next();!N.done;N=V.next()){var _=N.value;if(!this._documentIds.has(_)){this.removeTerm(T,_,t),L-=1;continue}var C=i?i(this._documentIds.get(_),t,this._storedFields.get(_)):1;if(C){var O=F.get(_),w=this._fieldLength.get(_)[T],c=Kr(O,L,this._documentCount,w,R,s),f=r*A*C*c,p=u.get(_);if(p){p.score+=f,Ur(p.terms,e);var k=Pe(p.match,t);k?k.push(g):p.match[t]=[g]}else u.set(_,{score:f,terms:[e],match:(m={},m[t]=[g],m)})}}}catch(I){d={error:I}}finally{try{N&&!N.done&&(v=V.return)&&v.call(V)}finally{if(d)throw d.error}}}}}catch(I){l={error:I}}finally{try{S&&!S.done&&(h=b.return)&&h.call(b)}finally{if(l)throw l.error}}return u},o.prototype.addTerm=function(e,t,r){var n=this._index.fetch(r,pt),a=n.get(e);if(a==null)a=new Map,a.set(t,1),n.set(e,a);else{var i=a.get(t);a.set(t,(i||0)+1)}},o.prototype.removeTerm=function(e,t,r){if(!this._index.has(r)){this.warnDocumentChanged(t,e,r);return}var n=this._index.fetch(r,pt),a=n.get(e);a==null||a.get(t)==null?this.warnDocumentChanged(t,e,r):a.get(t)<=1?a.size<=1?n.delete(e):a.delete(t):a.set(t,a.get(t)-1),this._index.get(r).size===0&&this._index.delete(r)},o.prototype.warnDocumentChanged=function(e,t,r){var n,a;try{for(var i=D(Object.keys(this._fieldIds)),s=i.next();!s.done;s=i.next()){var u=s.value;if(this._fieldIds[u]===t){this._options.logger("warn","MiniSearch: document with ID ".concat(this._documentIds.get(e),' has changed before removal: term "').concat(r,'" was not present in field "').concat(u,'". Removing a document after it has changed can corrupt the index!'),"version_conflict");return}}}catch(l){n={error:l}}finally{try{s&&!s.done&&(a=i.return)&&a.call(i)}finally{if(n)throw n.error}}},o.prototype.addDocumentId=function(e){var t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t},o.prototype.addFields=function(e){for(var t=0;t(qt("data-v-df273b76"),o=o(),Qt(),o),qr=["aria-owns"],Qr={class:"shell"},Yr=["title"],Zr=Y(()=>E("svg",{class:"search-icon",width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[E("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[E("circle",{cx:"11",cy:"11",r:"8"}),E("path",{d:"m21 21l-4.35-4.35"})])],-1)),Xr=[Zr],ea={class:"search-actions before"},ta=["title"],ra=Y(()=>E("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[E("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 12H5m7 7l-7-7l7-7"})],-1)),aa=[ra],na=["placeholder"],ia={class:"search-actions"},oa=["title"],sa=Y(()=>E("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[E("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 14h7v7H3zM3 3h7v7H3zm11 1h7m-7 5h7m-7 6h7m-7 5h7"})],-1)),ua=[sa],la=["disabled","title"],ca=Y(()=>E("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[E("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 5H9l-7 7l7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2Zm-2 4l-6 6m0-6l6 6"})],-1)),fa=[ca],ha=["id","role","aria-labelledby"],da=["aria-selected"],va=["href","aria-label","onMouseenter","onFocusin"],pa={class:"titles"},ma=Y(()=>E("span",{class:"title-icon"},"#",-1)),ya=["innerHTML"],ga=Y(()=>E("svg",{width:"18",height:"18",viewBox:"0 0 24 24"},[E("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"m9 18l6-6l-6-6"})],-1)),ba={class:"title main"},wa=["innerHTML"],xa={key:0,class:"excerpt-wrapper"},Fa={key:0,class:"excerpt",inert:""},Ea=["innerHTML"],Sa=Y(()=>E("div",{class:"excerpt-gradient-bottom"},null,-1)),Aa=Y(()=>E("div",{class:"excerpt-gradient-top"},null,-1)),Ca={key:0,class:"no-results"},Ta={class:"search-keyboard-shortcuts"},Na=["aria-label"],ka=Y(()=>E("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[E("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 19V5m-7 7l7-7l7 7"})],-1)),Ia=[ka],Da=["aria-label"],Oa=Y(()=>E("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[E("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 5v14m7-7l-7 7l-7-7"})],-1)),_a=[Oa],Ra=["aria-label"],Ma=Y(()=>E("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[E("g",{fill:"none",stroke:"currentcolor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[E("path",{d:"m9 10l-5 5l5 5"}),E("path",{d:"M20 4v7a4 4 0 0 1-4 4H4"})])],-1)),La=[Ma],za=["aria-label"],Pa=_t({__name:"VPLocalSearchBox",emits:["close"],setup(o,{emit:e}){var z,P;const t=e,r=xe(),n=xe(),a=xe(nr),i=rr(),{activate:s}=Dr(r,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:u,theme:l}=i,h=tt(async()=>{var y,x,$,K,G,q,B,J,Z;return it(Vr.loadJSON(($=await((x=(y=a.value)[u.value])==null?void 0:x.call(y)))==null?void 0:$.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((K=l.value.search)==null?void 0:K.provider)==="local"&&((q=(G=l.value.search.options)==null?void 0:G.miniSearch)==null?void 0:q.searchOptions)},...((B=l.value.search)==null?void 0:B.provider)==="local"&&((Z=(J=l.value.search.options)==null?void 0:J.miniSearch)==null?void 0:Z.options)}))}),v=Fe(()=>{var y,x;return((y=l.value.search)==null?void 0:y.provider)==="local"&&((x=l.value.search.options)==null?void 0:x.disableQueryPersistence)===!0}).value?oe(""):Rt("vitepress:local-search-filter",""),m=Mt("vitepress:local-search-detailed-list",((z=l.value.search)==null?void 0:z.provider)==="local"&&((P=l.value.search.options)==null?void 0:P.detailedView)===!0),b=Fe(()=>{var y,x,$;return((y=l.value.search)==null?void 0:y.provider)==="local"&&(((x=l.value.search.options)==null?void 0:x.disableDetailedView)===!0||(($=l.value.search.options)==null?void 0:$.detailedView)===!1)}),S=Fe(()=>{var x,$,K,G,q,B,J;const y=((x=l.value.search)==null?void 0:x.options)??l.value.algolia;return((q=(G=(K=($=y==null?void 0:y.locales)==null?void 0:$[u.value])==null?void 0:K.translations)==null?void 0:G.button)==null?void 0:q.buttonText)||((J=(B=y==null?void 0:y.translations)==null?void 0:B.button)==null?void 0:J.buttonText)||"Search"});Lt(()=>{b.value&&(m.value=!1)});const g=xe([]),A=oe(!1);$e(v,()=>{A.value=!1});const T=tt(async()=>{if(n.value)return it(new _r(n.value))},null),F=new Gr(16);zt(()=>[h.value,v.value,m.value],async([y,x,$],K,G)=>{var be,Ge,qe,Qe;(K==null?void 0:K[0])!==y&&F.clear();let q=!1;if(G(()=>{q=!0}),!y)return;g.value=y.search(x).slice(0,16),A.value=!0;const B=$?await Promise.all(g.value.map(Q=>L(Q.id))):[];if(q)return;for(const{id:Q,mod:ae}of B){const ne=Q.slice(0,Q.indexOf("#"));let te=F.get(ne);if(te)continue;te=new Map,F.set(ne,te);const X=ae.default??ae;if(X!=null&&X.render||X!=null&&X.setup){const ie=Yt(X);ie.config.warnHandler=()=>{},ie.provide(Zt,i),Object.defineProperties(ie.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Ye=document.createElement("div");ie.mount(Ye),Ye.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(he=>{var et;const we=(et=he.querySelector("a"))==null?void 0:et.getAttribute("href"),Ze=(we==null?void 0:we.startsWith("#"))&&we.slice(1);if(!Ze)return;let Xe="";for(;(he=he.nextElementSibling)&&!/^h[1-6]$/i.test(he.tagName);)Xe+=he.outerHTML;te.set(Ze,Xe)}),ie.unmount()}if(q)return}const J=new Set;if(g.value=g.value.map(Q=>{const[ae,ne]=Q.id.split("#"),te=F.get(ae),X=(te==null?void 0:te.get(ne))??"";for(const ie in Q.match)J.add(ie);return{...Q,text:X}}),await de(),q)return;await new Promise(Q=>{var ae;(ae=T.value)==null||ae.unmark({done:()=>{var ne;(ne=T.value)==null||ne.markRegExp(M(J),{done:Q})}})});const Z=((be=r.value)==null?void 0:be.querySelectorAll(".result .excerpt"))??[];for(const Q of Z)(Ge=Q.querySelector('mark[data-markjs="true"]'))==null||Ge.scrollIntoView({block:"center"});(Qe=(qe=n.value)==null?void 0:qe.firstElementChild)==null||Qe.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function L(y){const x=Xt(y.slice(0,y.indexOf("#")));try{if(!x)throw new Error(`Cannot find file for id: ${y}`);return{id:y,mod:await mt(()=>import(x),__vite__mapDeps([]))}}catch($){return console.error($),{id:y,mod:{}}}}const R=oe(),V=Fe(()=>{var y;return((y=v.value)==null?void 0:y.length)<=0});function N(y=!0){var x,$;(x=R.value)==null||x.focus(),y&&(($=R.value)==null||$.select())}_e(()=>{N()});function _(y){y.pointerType==="mouse"&&N()}const C=oe(-1),O=oe(!1);$e(g,y=>{C.value=y.length?0:-1,w()});function w(){de(()=>{const y=document.querySelector(".result.selected");y&&y.scrollIntoView({block:"nearest"})})}Ee("ArrowUp",y=>{y.preventDefault(),C.value--,C.value<0&&(C.value=g.value.length-1),O.value=!0,w()}),Ee("ArrowDown",y=>{y.preventDefault(),C.value++,C.value>=g.value.length&&(C.value=0),O.value=!0,w()});const c=Pt();Ee("Enter",y=>{if(y.isComposing||y.target instanceof HTMLButtonElement&&y.target.type!=="submit")return;const x=g.value[C.value];if(y.target instanceof HTMLInputElement&&!x){y.preventDefault();return}x&&(c.go(x.id),t("close"))}),Ee("Escape",()=>{t("close")});const p=ar({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});_e(()=>{window.history.pushState(null,"",null)}),Bt("popstate",y=>{y.preventDefault(),t("close")});const k=Vt($t?document.body:null);_e(()=>{de(()=>{k.value=!0,de().then(()=>s())})}),Wt(()=>{k.value=!1});function I(){v.value="",de().then(()=>N(!1))}function M(y){return new RegExp([...y].sort((x,$)=>$.length-x.length).map(x=>`(${er(x)})`).join("|"),"gi")}return(y,x)=>{var $,K,G,q;return ee(),Kt(Gt,{to:"body"},[E("div",{ref_key:"el",ref:r,role:"button","aria-owns":($=g.value)!=null&&$.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[E("div",{class:"backdrop",onClick:x[0]||(x[0]=B=>y.$emit("close"))}),E("div",Qr,[E("form",{class:"search-bar",onPointerup:x[4]||(x[4]=B=>_(B)),onSubmit:x[5]||(x[5]=jt(()=>{},["prevent"]))},[E("label",{title:S.value,id:"localsearch-label",for:"localsearch-input"},Xr,8,Yr),E("div",ea,[E("button",{class:"back-button",title:U(p)("modal.backButtonTitle"),onClick:x[1]||(x[1]=B=>y.$emit("close"))},aa,8,ta)]),Jt(E("input",{ref_key:"searchInput",ref:R,"onUpdate:modelValue":x[2]||(x[2]=B=>Ht(v)?v.value=B:null),placeholder:S.value,id:"localsearch-input","aria-labelledby":"localsearch-label",class:"search-input"},null,8,na),[[Ut,U(v)]]),E("div",ia,[b.value?Se("",!0):(ee(),re("button",{key:0,class:rt(["toggle-layout-button",{"detailed-list":U(m)}]),type:"button",title:U(p)("modal.displayDetails"),onClick:x[3]||(x[3]=B=>C.value>-1&&(m.value=!U(m)))},ua,10,oa)),E("button",{class:"clear-button",type:"reset",disabled:V.value,title:U(p)("modal.resetButtonTitle"),onClick:I},fa,8,la)])],32),E("ul",{ref_key:"resultsEl",ref:n,id:(K=g.value)!=null&&K.length?"localsearch-list":void 0,role:(G=g.value)!=null&&G.length?"listbox":void 0,"aria-labelledby":(q=g.value)!=null&&q.length?"localsearch-label":void 0,class:"results",onMousemove:x[7]||(x[7]=B=>O.value=!1)},[(ee(!0),re(nt,null,at(g.value,(B,J)=>(ee(),re("li",{key:B.id,role:"option","aria-selected":C.value===J?"true":"false"},[E("a",{href:B.id,class:rt(["result",{selected:C.value===J}]),"aria-label":[...B.titles,B.title].join(" > "),onMouseenter:Z=>!O.value&&(C.value=J),onFocusin:Z=>C.value=J,onClick:x[6]||(x[6]=Z=>y.$emit("close"))},[E("div",null,[E("div",pa,[ma,(ee(!0),re(nt,null,at(B.titles,(Z,be)=>(ee(),re("span",{key:be,class:"title"},[E("span",{class:"text",innerHTML:Z},null,8,ya),ga]))),128)),E("span",ba,[E("span",{class:"text",innerHTML:B.title},null,8,wa)])]),U(m)?(ee(),re("div",xa,[B.text?(ee(),re("div",Fa,[E("div",{class:"vp-doc",innerHTML:B.text},null,8,Ea)])):Se("",!0),Sa,Aa])):Se("",!0)])],42,va)],8,da))),128)),U(v)&&!g.value.length&&A.value?(ee(),re("li",Ca,[ve(pe(U(p)("modal.noResultsText"))+' "',1),E("strong",null,pe(U(v)),1),ve('" ')])):Se("",!0)],40,ha),E("div",Ta,[E("span",null,[E("kbd",{"aria-label":U(p)("modal.footer.navigateUpKeyAriaLabel")},Ia,8,Na),E("kbd",{"aria-label":U(p)("modal.footer.navigateDownKeyAriaLabel")},_a,8,Da),ve(" "+pe(U(p)("modal.footer.navigateText")),1)]),E("span",null,[E("kbd",{"aria-label":U(p)("modal.footer.selectKeyAriaLabel")},La,8,Ra),ve(" "+pe(U(p)("modal.footer.selectText")),1)]),E("span",null,[E("kbd",{"aria-label":U(p)("modal.footer.closeKeyAriaLabel")},"esc",8,za),ve(" "+pe(U(p)("modal.footer.closeText")),1)])])])],8,qr)])}}}),ja=tr(Pa,[["__scopeId","data-v-df273b76"]]);export{ja as default}; +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = [] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} diff --git a/docs/.vitepress/dist/assets/chunks/framework.BaJ171t2.js b/docs/.vitepress/dist/assets/chunks/framework.BaJ171t2.js new file mode 100644 index 0000000..e833fc6 --- /dev/null +++ b/docs/.vitepress/dist/assets/chunks/framework.BaJ171t2.js @@ -0,0 +1,17 @@ +/** +* @vue/shared v3.4.15 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function xr(e,t){const n=new Set(e.split(","));return t?r=>n.has(r.toLowerCase()):r=>n.has(r)}const ee={},_t=[],xe=()=>{},xi=()=>!1,Kt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Tr=e=>e.startsWith("onUpdate:"),ce=Object.assign,Sr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ti=Object.prototype.hasOwnProperty,Y=(e,t)=>Ti.call(e,t),B=Array.isArray,vt=e=>An(e)==="[object Map]",Ys=e=>An(e)==="[object Set]",q=e=>typeof e=="function",ne=e=>typeof e=="string",St=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",Js=e=>(Z(e)||q(e))&&q(e.then)&&q(e.catch),Qs=Object.prototype.toString,An=e=>Qs.call(e),Si=e=>An(e).slice(8,-1),Zs=e=>An(e)==="[object Object]",Ar=e=>ne(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Mt=xr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Rn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Ai=/-(\w)/g,Fe=Rn(e=>e.replace(Ai,(t,n)=>n?n.toUpperCase():"")),Ri=/\B([A-Z])/g,ft=Rn(e=>e.replace(Ri,"-$1").toLowerCase()),Ln=Rn(e=>e.charAt(0).toUpperCase()+e.slice(1)),dn=Rn(e=>e?`on${Ln(e)}`:""),Ze=(e,t)=>!Object.is(e,t),hn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},cr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Li=e=>{const t=ne(e)?Number(e):NaN;return isNaN(t)?e:t};let es;const eo=()=>es||(es=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Rr(e){if(B(e)){const t={};for(let n=0;n{if(n){const r=n.split(Mi);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Lr(e){let t="";if(ne(e))t=e;else if(B(e))for(let n=0;nne(e)?e:e==null?"":B(e)||Z(e)&&(e.toString===Qs||!q(e.toString))?JSON.stringify(e,no,2):String(e),no=(e,t)=>t&&t.__v_isRef?no(e,t.value):vt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[qn(r,o)+" =>"]=s,n),{})}:Ys(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>qn(n))}:St(t)?qn(t):Z(t)&&!B(t)&&!Zs(t)?String(t):t,qn=(e,t="")=>{var n;return St(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.15 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let ve;class $i{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=ve,!t&&ve&&(this.index=(ve.scopes||(ve.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=ve;try{return ve=this,t()}finally{ve=n}}}on(){ve=this}off(){ve=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n=2))break}this._dirtyLevel<2&&(this._dirtyLevel=0),ht()}return this._dirtyLevel>=2}set dirty(t){this._dirtyLevel=t?2:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=ze,n=ct;try{return ze=!0,ct=this,this._runnings++,ts(this),this.fn()}finally{ns(this),this._runnings--,ct=n,ze=t}}stop(){var t;this.active&&(ts(this),ns(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function Vi(e){return e.value}function ts(e){e._trackId++,e._depsLength=0}function ns(e){if(e.deps&&e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},yn=new WeakMap,at=Symbol(""),fr=Symbol("");function ye(e,t,n){if(ze&&ct){let r=yn.get(e);r||yn.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=ao(()=>r.delete(n))),io(ct,s)}}function je(e,t,n,r,s,o){const i=yn.get(e);if(!i)return;let l=[];if(t==="clear")l=[...i.values()];else if(n==="length"&&B(e)){const c=Number(r);i.forEach((a,f)=>{(f==="length"||!St(f)&&f>=c)&&l.push(a)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":B(e)?Ar(n)&&l.push(i.get("length")):(l.push(i.get(at)),vt(e)&&l.push(i.get(fr)));break;case"delete":B(e)||(l.push(i.get(at)),vt(e)&&l.push(i.get(fr)));break;case"set":vt(e)&&l.push(i.get(at));break}Mr();for(const c of l)c&&lo(c,2);Pr()}function Di(e,t){var n;return(n=yn.get(e))==null?void 0:n.get(t)}const ki=xr("__proto__,__v_isRef,__isVue"),uo=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(St)),rs=Bi();function Bi(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=J(this);for(let o=0,i=this.length;o{e[t]=function(...n){dt(),Mr();const r=J(this)[t].apply(this,n);return Pr(),ht(),r}}),e}function Ui(e){const t=J(this);return ye(t,"has",e),t.hasOwnProperty(e)}class fo{constructor(t=!1,n=!1){this._isReadonly=t,this._shallow=n}get(t,n,r){const s=this._isReadonly,o=this._shallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?nl:mo:o?go:po).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=B(t);if(!s){if(i&&Y(rs,n))return Reflect.get(rs,n,r);if(n==="hasOwnProperty")return Ui}const l=Reflect.get(t,n,r);return(St(n)?uo.has(n):ki(n))||(s||ye(t,"get",n),o)?l:de(l)?i&&Ar(n)?l:l.value:Z(l)?s?Pn(l):Mn(l):l}}class ho extends fo{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._shallow){const c=xt(o);if(!_n(r)&&!xt(r)&&(o=J(o),r=J(r)),!B(t)&&de(o)&&!de(r))return c?!1:(o.value=r,!0)}const i=B(t)&&Ar(n)?Number(n)e,On=e=>Reflect.getPrototypeOf(e);function Jt(e,t,n=!1,r=!1){e=e.__v_raw;const s=J(e),o=J(t);n||(Ze(t,o)&&ye(s,"get",t),ye(s,"get",o));const{has:i}=On(s),l=r?Ir:n?$r:Vt;if(i.call(s,t))return l(e.get(t));if(i.call(s,o))return l(e.get(o));e!==s&&e.get(t)}function Qt(e,t=!1){const n=this.__v_raw,r=J(n),s=J(e);return t||(Ze(e,s)&&ye(r,"has",e),ye(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function Zt(e,t=!1){return e=e.__v_raw,!t&&ye(J(e),"iterate",at),Reflect.get(e,"size",e)}function ss(e){e=J(e);const t=J(this);return On(t).has.call(t,e)||(t.add(e),je(t,"add",e,e)),this}function os(e,t){t=J(t);const n=J(this),{has:r,get:s}=On(n);let o=r.call(n,e);o||(e=J(e),o=r.call(n,e));const i=s.call(n,e);return n.set(e,t),o?Ze(t,i)&&je(n,"set",e,t):je(n,"add",e,t),this}function is(e){const t=J(this),{has:n,get:r}=On(t);let s=n.call(t,e);s||(e=J(e),s=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return s&&je(t,"delete",e,void 0),o}function ls(){const e=J(this),t=e.size!==0,n=e.clear();return t&&je(e,"clear",void 0,void 0),n}function en(e,t){return function(r,s){const o=this,i=o.__v_raw,l=J(i),c=t?Ir:e?$r:Vt;return!e&&ye(l,"iterate",at),i.forEach((a,f)=>r.call(s,c(a),c(f),o))}}function tn(e,t,n){return function(...r){const s=this.__v_raw,o=J(s),i=vt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=s[e](...r),f=n?Ir:t?$r:Vt;return!t&&ye(o,"iterate",c?fr:at),{next(){const{value:h,done:p}=a.next();return p?{value:h,done:p}:{value:l?[f(h[0]),f(h[1])]:f(h),done:p}},[Symbol.iterator](){return this}}}}function De(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function zi(){const e={get(o){return Jt(this,o)},get size(){return Zt(this)},has:Qt,add:ss,set:os,delete:is,clear:ls,forEach:en(!1,!1)},t={get(o){return Jt(this,o,!1,!0)},get size(){return Zt(this)},has:Qt,add:ss,set:os,delete:is,clear:ls,forEach:en(!1,!0)},n={get(o){return Jt(this,o,!0)},get size(){return Zt(this,!0)},has(o){return Qt.call(this,o,!0)},add:De("add"),set:De("set"),delete:De("delete"),clear:De("clear"),forEach:en(!0,!1)},r={get(o){return Jt(this,o,!0,!0)},get size(){return Zt(this,!0)},has(o){return Qt.call(this,o,!0)},add:De("add"),set:De("set"),delete:De("delete"),clear:De("clear"),forEach:en(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=tn(o,!1,!1),n[o]=tn(o,!0,!1),t[o]=tn(o,!1,!0),r[o]=tn(o,!0,!0)}),[e,n,t,r]}const[Xi,Yi,Ji,Qi]=zi();function Nr(e,t){const n=t?e?Qi:Ji:e?Yi:Xi;return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(Y(n,s)&&s in r?n:r,s,o)}const Zi={get:Nr(!1,!1)},el={get:Nr(!1,!0)},tl={get:Nr(!0,!1)},po=new WeakMap,go=new WeakMap,mo=new WeakMap,nl=new WeakMap;function rl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function sl(e){return e.__v_skip||!Object.isExtensible(e)?0:rl(Si(e))}function Mn(e){return xt(e)?e:Fr(e,!1,Wi,Zi,po)}function ol(e){return Fr(e,!1,Gi,el,go)}function Pn(e){return Fr(e,!0,qi,tl,mo)}function Fr(e,t,n,r,s){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const i=sl(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return s.set(e,l),l}function bt(e){return xt(e)?bt(e.__v_raw):!!(e&&e.__v_isReactive)}function xt(e){return!!(e&&e.__v_isReadonly)}function _n(e){return!!(e&&e.__v_isShallow)}function yo(e){return bt(e)||xt(e)}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function Pt(e){return mn(e,"__v_skip",!0),e}const Vt=e=>Z(e)?Mn(e):e,$r=e=>Z(e)?Pn(e):e;class _o{constructor(t,n,r,s){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Or(()=>t(this._value),()=>It(this,1),()=>this.dep&&co(this.dep)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=J(this);return(!t._cacheable||t.effect.dirty)&&Ze(t._value,t._value=t.effect.run())&&It(t,2),Hr(t),t.effect._dirtyLevel>=1&&It(t,1),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function il(e,t,n=!1){let r,s;const o=q(e);return o?(r=e,s=xe):(r=e.get,s=e.set),new _o(r,s,o||!s,n)}function Hr(e){ze&&ct&&(e=J(e),io(ct,e.dep||(e.dep=ao(()=>e.dep=void 0,e instanceof _o?e:void 0))))}function It(e,t=2,n){e=J(e);const r=e.dep;r&&lo(r,t)}function de(e){return!!(e&&e.__v_isRef===!0)}function ie(e){return vo(e,!1)}function jr(e){return vo(e,!0)}function vo(e,t){return de(e)?e:new ll(e,t)}class ll{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:Vt(t)}get value(){return Hr(this),this._value}set value(t){const n=this.__v_isShallow||_n(t)||xt(t);t=n?t:J(t),Ze(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Vt(t),It(this,2))}}function bo(e){return de(e)?e.value:e}const cl={get:(e,t,n)=>bo(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return de(s)&&!de(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function wo(e){return bt(e)?e:new Proxy(e,cl)}class al{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Hr(this),()=>It(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function ul(e){return new al(e)}class fl{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Di(J(this._object),this._key)}}class dl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function hl(e,t,n){return de(e)?e:q(e)?new dl(e):Z(e)&&arguments.length>1?pl(e,t,n):ie(e)}function pl(e,t,n){const r=e[t];return de(r)?r:new fl(e,t,n)}/** +* @vue/runtime-core v3.4.15 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Xe(e,t,n,r){let s;try{s=r?e(...r):e()}catch(o){Wt(o,t,n)}return s}function Te(e,t,n,r){if(q(e)){const o=Xe(e,t,n,r);return o&&Js(o)&&o.catch(i=>{Wt(i,t,n)}),o}const s=[];for(let o=0;o>>1,s=he[r],o=kt(s);oIe&&he.splice(t,1)}function _l(e){B(e)?wt.push(...e):(!Ke||!Ke.includes(e,e.allowRecurse?ot+1:ot))&&wt.push(e),Co()}function cs(e,t,n=Dt?Ie+1:0){for(;nkt(n)-kt(r));if(wt.length=0,Ke){Ke.push(...t);return}for(Ke=t,ot=0;ote.id==null?1/0:e.id,vl=(e,t)=>{const n=kt(e)-kt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function xo(e){dr=!1,Dt=!0,he.sort(vl);try{for(Ie=0;Iene(y)?y.trim():y)),h&&(s=n.map(cr))}let l,c=r[l=dn(t)]||r[l=dn(Fe(t))];!c&&o&&(c=r[l=dn(ft(t))]),c&&Te(c,e,6,s);const a=r[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Te(a,e,6,s)}}function To(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},l=!1;if(!q(e)){const c=a=>{const f=To(a,t,!0);f&&(l=!0,ce(i,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(Z(e)&&r.set(e,null),null):(B(o)?o.forEach(c=>i[c]=null):ce(i,o),Z(e)&&r.set(e,i),i)}function Fn(e,t){return!e||!Kt(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,ft(t))||Y(e,t))}let le=null,$n=null;function bn(e){const t=le;return le=e,$n=e&&e.type.__scopeId||null,t}function Qa(e){$n=e}function Za(){$n=null}function wl(e,t=le,n){if(!t||e._n)return e;const r=(...s)=>{r._d&&Es(-1);const o=bn(t);let i;try{i=e(...s)}finally{bn(o),r._d&&Es(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Gn(e){const{type:t,vnode:n,proxy:r,withProxy:s,props:o,propsOptions:[i],slots:l,attrs:c,emit:a,render:f,renderCache:h,data:p,setupState:y,ctx:w,inheritAttrs:L}=e;let F,U;const k=bn(e);try{if(n.shapeFlag&4){const _=s||r,I=_;F=Ae(f.call(I,_,h,o,y,p,w)),U=c}else{const _=t;F=Ae(_.length>1?_(o,{attrs:c,slots:l,emit:a}):_(o,null)),U=t.props?c:El(c)}}catch(_){Ht.length=0,Wt(_,e,1),F=se(be)}let g=F;if(U&&L!==!1){const _=Object.keys(U),{shapeFlag:I}=g;_.length&&I&7&&(i&&_.some(Tr)&&(U=Cl(U,i)),g=et(g,U))}return n.dirs&&(g=et(g),g.dirs=g.dirs?g.dirs.concat(n.dirs):n.dirs),n.transition&&(g.transition=n.transition),F=g,bn(k),F}const El=e=>{let t;for(const n in e)(n==="class"||n==="style"||Kt(n))&&((t||(t={}))[n]=e[n]);return t},Cl=(e,t)=>{const n={};for(const r in e)(!Tr(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function xl(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:l,patchFlag:c}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?as(r,i,a):!!i;if(c&8){const f=t.dynamicProps;for(let h=0;he.__isSuspense;function Ro(e,t){t&&t.pendingBranch?B(e)?t.effects.push(...e):t.effects.push(e):_l(e)}const Al=Symbol.for("v-scx"),Rl=()=>Ct(Al);function kr(e,t){return Hn(e,null,t)}function nu(e,t){return Hn(e,null,{flush:"post"})}const nn={};function Ye(e,t,n){return Hn(e,t,n)}function Hn(e,t,{immediate:n,deep:r,flush:s,once:o,onTrack:i,onTrigger:l}=ee){if(t&&o){const O=t;t=(...$)=>{O(...$),I()}}const c=ue,a=O=>r===!0?O:lt(O,r===!1?1:void 0);let f,h=!1,p=!1;if(de(e)?(f=()=>e.value,h=_n(e)):bt(e)?(f=()=>a(e),h=!0):B(e)?(p=!0,h=e.some(O=>bt(O)||_n(O)),f=()=>e.map(O=>{if(de(O))return O.value;if(bt(O))return a(O);if(q(O))return Xe(O,c,2)})):q(e)?t?f=()=>Xe(e,c,2):f=()=>(y&&y(),Te(e,c,3,[w])):f=xe,t&&r){const O=f;f=()=>lt(O())}let y,w=O=>{y=g.onStop=()=>{Xe(O,c,4),y=g.onStop=void 0}},L;if(zt)if(w=xe,t?n&&Te(t,c,3,[f(),p?[]:void 0,w]):f(),s==="sync"){const O=Rl();L=O.__watcherHandles||(O.__watcherHandles=[])}else return xe;let F=p?new Array(e.length).fill(nn):nn;const U=()=>{if(!(!g.active||!g.dirty))if(t){const O=g.run();(r||h||(p?O.some(($,A)=>Ze($,F[A])):Ze(O,F)))&&(y&&y(),Te(t,c,3,[O,F===nn?void 0:p&&F[0]===nn?[]:F,w]),F=O)}else g.run()};U.allowRecurse=!!t;let k;s==="sync"?k=U:s==="post"?k=()=>ge(U,c&&c.suspense):(U.pre=!0,c&&(U.id=c.uid),k=()=>Nn(U));const g=new Or(f,xe,k),_=ro(),I=()=>{g.stop(),_&&Sr(_.effects,g)};return t?n?U():F=g.run():s==="post"?ge(g.run.bind(g),c&&c.suspense):g.run(),L&&L.push(I),I}function Ll(e,t,n){const r=this.proxy,s=ne(e)?e.includes(".")?Lo(r,e):()=>r[e]:e.bind(r,r);let o;q(t)?o=t:(o=t.handler,n=t);const i=Gt(this),l=Hn(s,o.bind(r),n);return i(),l}function Lo(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s0){if(n>=t)return e;n++}if(r=r||new Set,r.has(e))return e;if(r.add(e),de(e))lt(e.value,t,n,r);else if(B(e))for(let s=0;s{lt(s,t,n,r)});else if(Zs(e))for(const s in e)lt(e[s],t,n,r);return e}function ru(e,t){if(le===null)return e;const n=Bn(le)||le.proxy,r=e.dirs||(e.dirs=[]);for(let s=0;s{e.isMounted=!0}),No(()=>{e.isUnmounting=!0}),e}const we=[Function,Array],Oo={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:we,onEnter:we,onAfterEnter:we,onEnterCancelled:we,onBeforeLeave:we,onLeave:we,onAfterLeave:we,onLeaveCancelled:we,onBeforeAppear:we,onAppear:we,onAfterAppear:we,onAppearCancelled:we},Ml={name:"BaseTransition",props:Oo,setup(e,{slots:t}){const n=kn(),r=Ol();let s;return()=>{const o=t.default&&Po(t.default(),!0);if(!o||!o.length)return;let i=o[0];if(o.length>1){for(const L of o)if(L.type!==be){i=L;break}}const l=J(e),{mode:c}=l;if(r.isLeaving)return zn(i);const a=fs(i);if(!a)return zn(i);const f=hr(a,l,r,n);pr(a,f);const h=n.subTree,p=h&&fs(h);let y=!1;const{getTransitionKey:w}=a.type;if(w){const L=w();s===void 0?s=L:L!==s&&(s=L,y=!0)}if(p&&p.type!==be&&(!it(a,p)||y)){const L=hr(p,l,r,n);if(pr(p,L),c==="out-in")return r.isLeaving=!0,L.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},zn(i);c==="in-out"&&a.type!==be&&(L.delayLeave=(F,U,k)=>{const g=Mo(r,p);g[String(p.key)]=p,F[We]=()=>{U(),F[We]=void 0,delete f.delayedLeave},f.delayedLeave=k})}return i}}},Pl=Ml;function Mo(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function hr(e,t,n,r){const{appear:s,mode:o,persisted:i=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:a,onEnterCancelled:f,onBeforeLeave:h,onLeave:p,onAfterLeave:y,onLeaveCancelled:w,onBeforeAppear:L,onAppear:F,onAfterAppear:U,onAppearCancelled:k}=t,g=String(e.key),_=Mo(n,e),I=(A,T)=>{A&&Te(A,r,9,T)},O=(A,T)=>{const S=T[1];I(A,T),B(A)?A.every(K=>K.length<=1)&&S():A.length<=1&&S()},$={mode:o,persisted:i,beforeEnter(A){let T=l;if(!n.isMounted)if(s)T=L||l;else return;A[We]&&A[We](!0);const S=_[g];S&&it(e,S)&&S.el[We]&&S.el[We](),I(T,[A])},enter(A){let T=c,S=a,K=f;if(!n.isMounted)if(s)T=F||c,S=U||a,K=k||f;else return;let P=!1;const G=A[rn]=oe=>{P||(P=!0,oe?I(K,[A]):I(S,[A]),$.delayedLeave&&$.delayedLeave(),A[rn]=void 0)};T?O(T,[A,G]):G()},leave(A,T){const S=String(e.key);if(A[rn]&&A[rn](!0),n.isUnmounting)return T();I(h,[A]);let K=!1;const P=A[We]=G=>{K||(K=!0,T(),G?I(w,[A]):I(y,[A]),A[We]=void 0,_[S]===e&&delete _[S])};_[S]=e,p?O(p,[A,P]):P()},clone(A){return hr(A,t,n,r)}};return $}function zn(e){if(qt(e))return e=et(e),e.children=null,e}function fs(e){return qt(e)?e.children?e.children[0]:void 0:e}function pr(e,t){e.shapeFlag&6&&e.component?pr(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Po(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function su(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,timeout:o,suspensible:i=!0,onError:l}=e;let c=null,a,f=0;const h=()=>(f++,c=null,p()),p=()=>{let y;return c||(y=c=t().catch(w=>{if(w=w instanceof Error?w:new Error(String(w)),l)return new Promise((L,F)=>{l(w,()=>L(h()),()=>F(w),f+1)});throw w}).then(w=>y!==c&&c?c:(w&&(w.__esModule||w[Symbol.toStringTag]==="Module")&&(w=w.default),a=w,w)))};return Br({name:"AsyncComponentWrapper",__asyncLoader:p,get __asyncResolved(){return a},setup(){const y=ue;if(a)return()=>Xn(a,y);const w=k=>{c=null,Wt(k,y,13,!r)};if(i&&y.suspense||zt)return p().then(k=>()=>Xn(k,y)).catch(k=>(w(k),()=>r?se(r,{error:k}):null));const L=ie(!1),F=ie(),U=ie(!!s);return s&&setTimeout(()=>{U.value=!1},s),o!=null&&setTimeout(()=>{if(!L.value&&!F.value){const k=new Error(`Async component timed out after ${o}ms.`);w(k),F.value=k}},o),p().then(()=>{L.value=!0,y.parent&&qt(y.parent.vnode)&&(y.parent.effect.dirty=!0,Nn(y.parent.update))}).catch(k=>{w(k),F.value=k}),()=>{if(L.value&&a)return Xn(a,y);if(F.value&&r)return se(r,{error:F.value});if(n&&!U.value)return se(n)}}})}function Xn(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=se(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const qt=e=>e.type.__isKeepAlive;function Il(e,t){Io(e,"a",t)}function Nl(e,t){Io(e,"da",t)}function Io(e,t,n=ue){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(jn(t,r,n),n){let s=n.parent;for(;s&&s.parent;)qt(s.parent.vnode)&&Fl(r,t,n,s),s=s.parent}}function Fl(e,t,n,r){const s=jn(t,e,r,!0);Vn(()=>{Sr(r[t],s)},n)}function jn(e,t,n=ue,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;dt();const l=Gt(n),c=Te(t,n,e,i);return l(),ht(),c});return r?s.unshift(o):s.push(o),o}}const Ve=e=>(t,n=ue)=>(!zt||e==="sp")&&jn(e,(...r)=>t(...r),n),$l=Ve("bm"),At=Ve("m"),Hl=Ve("bu"),jl=Ve("u"),No=Ve("bum"),Vn=Ve("um"),Vl=Ve("sp"),Dl=Ve("rtg"),kl=Ve("rtc");function Bl(e,t=ue){jn("ec",e,t)}function ou(e,t,n,r){let s;const o=n&&n[r];if(B(e)||ne(e)){s=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,o&&o[l]));else{const i=Object.keys(e);s=new Array(i.length);for(let l=0,c=i.length;lxn(t)?!(t.type===be||t.type===me&&!Fo(t.children)):!0)?e:null}function lu(e,t){const n={};for(const r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:dn(r)]=e[r];return n}const gr=e=>e?Zo(e)?Bn(e)||e.proxy:gr(e.parent):null,Nt=ce(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>gr(e.parent),$root:e=>gr(e.root),$emit:e=>e.emit,$options:e=>Ur(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Nn(e.update)}),$nextTick:e=>e.n||(e.n=In.bind(e.proxy)),$watch:e=>Ll.bind(e)}),Yn=(e,t)=>e!==ee&&!e.__isScriptSetup&&Y(e,t),Ul={get({_:e},t){const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const y=i[t];if(y!==void 0)switch(y){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(Yn(r,t))return i[t]=1,r[t];if(s!==ee&&Y(s,t))return i[t]=2,s[t];if((a=e.propsOptions[0])&&Y(a,t))return i[t]=3,o[t];if(n!==ee&&Y(n,t))return i[t]=4,n[t];mr&&(i[t]=0)}}const f=Nt[t];let h,p;if(f)return t==="$attrs"&&ye(e,"get",t),f(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==ee&&Y(n,t))return i[t]=4,n[t];if(p=c.config.globalProperties,Y(p,t))return p[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return Yn(s,t)?(s[t]=n,!0):r!==ee&&Y(r,t)?(r[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},i){let l;return!!n[i]||e!==ee&&Y(e,i)||Yn(t,i)||(l=o[0])&&Y(l,i)||Y(r,i)||Y(Nt,i)||Y(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function cu(){return Kl().slots}function Kl(){const e=kn();return e.setupContext||(e.setupContext=ti(e))}function ds(e){return B(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let mr=!0;function Wl(e){const t=Ur(e),n=e.proxy,r=e.ctx;mr=!1,t.beforeCreate&&hs(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:c,inject:a,created:f,beforeMount:h,mounted:p,beforeUpdate:y,updated:w,activated:L,deactivated:F,beforeDestroy:U,beforeUnmount:k,destroyed:g,unmounted:_,render:I,renderTracked:O,renderTriggered:$,errorCaptured:A,serverPrefetch:T,expose:S,inheritAttrs:K,components:P,directives:G,filters:oe}=t;if(a&&ql(a,r,null),i)for(const X in i){const j=i[X];q(j)&&(r[X]=j.bind(n))}if(s){const X=s.call(n,n);Z(X)&&(e.data=Mn(X))}if(mr=!0,o)for(const X in o){const j=o[X],$e=q(j)?j.bind(n,n):q(j.get)?j.get.bind(n,n):xe,Xt=!q(j)&&q(j.set)?j.set.bind(n):xe,tt=re({get:$e,set:Xt});Object.defineProperty(r,X,{enumerable:!0,configurable:!0,get:()=>tt.value,set:Oe=>tt.value=Oe})}if(l)for(const X in l)$o(l[X],r,n,X);if(c){const X=q(c)?c.call(n):c;Reflect.ownKeys(X).forEach(j=>{Ql(j,X[j])})}f&&hs(f,e,"c");function V(X,j){B(j)?j.forEach($e=>X($e.bind(n))):j&&X(j.bind(n))}if(V($l,h),V(At,p),V(Hl,y),V(jl,w),V(Il,L),V(Nl,F),V(Bl,A),V(kl,O),V(Dl,$),V(No,k),V(Vn,_),V(Vl,T),B(S))if(S.length){const X=e.exposed||(e.exposed={});S.forEach(j=>{Object.defineProperty(X,j,{get:()=>n[j],set:$e=>n[j]=$e})})}else e.exposed||(e.exposed={});I&&e.render===xe&&(e.render=I),K!=null&&(e.inheritAttrs=K),P&&(e.components=P),G&&(e.directives=G)}function ql(e,t,n=xe){B(e)&&(e=yr(e));for(const r in e){const s=e[r];let o;Z(s)?"default"in s?o=Ct(s.from||r,s.default,!0):o=Ct(s.from||r):o=Ct(s),de(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function hs(e,t,n){Te(B(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function $o(e,t,n,r){const s=r.includes(".")?Lo(n,r):()=>n[r];if(ne(e)){const o=t[e];q(o)&&Ye(s,o)}else if(q(e))Ye(s,e.bind(n));else if(Z(e))if(B(e))e.forEach(o=>$o(o,t,n,r));else{const o=q(e.handler)?e.handler.bind(n):t[e.handler];q(o)&&Ye(s,o,e)}}function Ur(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(a=>wn(c,a,i,!0)),wn(c,t,i)),Z(t)&&o.set(t,c),c}function wn(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&wn(e,o,n,!0),s&&s.forEach(i=>wn(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=Gl[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Gl={data:ps,props:gs,emits:gs,methods:Ot,computed:Ot,beforeCreate:pe,created:pe,beforeMount:pe,mounted:pe,beforeUpdate:pe,updated:pe,beforeDestroy:pe,beforeUnmount:pe,destroyed:pe,unmounted:pe,activated:pe,deactivated:pe,errorCaptured:pe,serverPrefetch:pe,components:Ot,directives:Ot,watch:Xl,provide:ps,inject:zl};function ps(e,t){return t?e?function(){return ce(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function zl(e,t){return Ot(yr(e),yr(t))}function yr(e){if(B(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(r&&r.proxy):t}}function Zl(e,t,n,r=!1){const s={},o={};mn(o,Dn,1),e.propsDefaults=Object.create(null),jo(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:ol(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function ec(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,l=J(s),[c]=e.propsOptions;let a=!1;if((r||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[p,y]=Vo(h,t,!0);ce(i,p),y&&l.push(...y)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return Z(e)&&r.set(e,_t),_t;if(B(o))for(let f=0;f-1,y[1]=L<0||w-1||Y(y,"default"))&&l.push(h)}}}const a=[i,l];return Z(e)&&r.set(e,a),a}function ms(e){return e[0]!=="$"}function ys(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function _s(e,t){return ys(e)===ys(t)}function vs(e,t){return B(t)?t.findIndex(n=>_s(n,e)):q(t)&&_s(t,e)?0:-1}const Do=e=>e[0]==="_"||e==="$stable",Kr=e=>B(e)?e.map(Ae):[Ae(e)],tc=(e,t,n)=>{if(t._n)return t;const r=wl((...s)=>Kr(t(...s)),n);return r._c=!1,r},ko=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Do(s))continue;const o=e[s];if(q(o))t[s]=tc(s,o,r);else if(o!=null){const i=Kr(o);t[s]=()=>i}}},Bo=(e,t)=>{const n=Kr(t);e.slots.default=()=>n},nc=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=J(t),mn(t,"_",n)):ko(t,e.slots={})}else e.slots={},t&&Bo(e,t);mn(e.slots,Dn,1)},rc=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=ee;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(ce(s,t),!n&&l===1&&delete s._):(o=!t.$stable,ko(t,s)),i=t}else t&&(Bo(e,t),i={default:1});if(o)for(const l in s)!Do(l)&&i[l]==null&&delete s[l]};function Cn(e,t,n,r,s=!1){if(B(e)){e.forEach((p,y)=>Cn(p,t&&(B(t)?t[y]:t),n,r,s));return}if(Et(r)&&!s)return;const o=r.shapeFlag&4?Bn(r.component)||r.component.proxy:r.el,i=s?null:o,{i:l,r:c}=e,a=t&&t.r,f=l.refs===ee?l.refs={}:l.refs,h=l.setupState;if(a!=null&&a!==c&&(ne(a)?(f[a]=null,Y(h,a)&&(h[a]=null)):de(a)&&(a.value=null)),q(c))Xe(c,l,12,[i,f]);else{const p=ne(c),y=de(c),w=e.f;if(p||y){const L=()=>{if(w){const F=p?Y(h,c)?h[c]:f[c]:c.value;s?B(F)&&Sr(F,o):B(F)?F.includes(o)||F.push(o):p?(f[c]=[o],Y(h,c)&&(h[c]=f[c])):(c.value=[o],e.k&&(f[e.k]=c.value))}else p?(f[c]=i,Y(h,c)&&(h[c]=i)):y&&(c.value=i,e.k&&(f[e.k]=i))};s||w?L():(L.id=-1,ge(L,n))}}}let ke=!1;const sc=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",oc=e=>e.namespaceURI.includes("MathML"),sn=e=>{if(sc(e))return"svg";if(oc(e))return"mathml"},on=e=>e.nodeType===8;function ic(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:l,insert:c,createComment:a}}=e,f=(g,_)=>{if(!_.hasChildNodes()){n(null,g,_),vn(),_._vnode=g;return}ke=!1,h(_.firstChild,g,null,null,null),vn(),_._vnode=g,ke&&console.error("Hydration completed but contains mismatches.")},h=(g,_,I,O,$,A=!1)=>{const T=on(g)&&g.data==="[",S=()=>L(g,_,I,O,$,T),{type:K,ref:P,shapeFlag:G,patchFlag:oe}=_;let fe=g.nodeType;_.el=g,oe===-2&&(A=!1,_.dynamicChildren=null);let V=null;switch(K){case Tt:fe!==3?_.children===""?(c(_.el=s(""),i(g),g),V=g):V=S():(g.data!==_.children&&(ke=!0,g.data=_.children),V=o(g));break;case be:k(g)?(V=o(g),U(_.el=g.content.firstChild,g,I)):fe!==8||T?V=S():V=o(g);break;case $t:if(T&&(g=o(g),fe=g.nodeType),fe===1||fe===3){V=g;const X=!_.children.length;for(let j=0;j<_.staticCount;j++)X&&(_.children+=V.nodeType===1?V.outerHTML:V.data),j===_.staticCount-1&&(_.anchor=V),V=o(V);return T?o(V):V}else S();break;case me:T?V=w(g,_,I,O,$,A):V=S();break;default:if(G&1)(fe!==1||_.type.toLowerCase()!==g.tagName.toLowerCase())&&!k(g)?V=S():V=p(g,_,I,O,$,A);else if(G&6){_.slotScopeIds=$;const X=i(g);if(T?V=F(g):on(g)&&g.data==="teleport start"?V=F(g,g.data,"teleport end"):V=o(g),t(_,X,null,I,O,sn(X),A),Et(_)){let j;T?(j=se(me),j.anchor=V?V.previousSibling:X.lastChild):j=g.nodeType===3?Qo(""):se("div"),j.el=g,_.component.subTree=j}}else G&64?fe!==8?V=S():V=_.type.hydrate(g,_,I,O,$,A,e,y):G&128&&(V=_.type.hydrate(g,_,I,O,sn(i(g)),$,A,e,h))}return P!=null&&Cn(P,null,O,_),V},p=(g,_,I,O,$,A)=>{A=A||!!_.dynamicChildren;const{type:T,props:S,patchFlag:K,shapeFlag:P,dirs:G,transition:oe}=_,fe=T==="input"||T==="option";if(fe||K!==-1){G&&Pe(_,null,I,"created");let V=!1;if(k(g)){V=Ko(O,oe)&&I&&I.vnode.props&&I.vnode.props.appear;const j=g.content.firstChild;V&&oe.beforeEnter(j),U(j,g,I),_.el=g=j}if(P&16&&!(S&&(S.innerHTML||S.textContent))){let j=y(g.firstChild,_,g,I,O,$,A);for(;j;){ke=!0;const $e=j;j=j.nextSibling,l($e)}}else P&8&&g.textContent!==_.children&&(ke=!0,g.textContent=_.children);if(S)if(fe||!A||K&48)for(const j in S)(fe&&(j.endsWith("value")||j==="indeterminate")||Kt(j)&&!Mt(j)||j[0]===".")&&r(g,j,null,S[j],void 0,void 0,I);else S.onClick&&r(g,"onClick",null,S.onClick,void 0,void 0,I);let X;(X=S&&S.onVnodeBeforeMount)&&Ee(X,I,_),G&&Pe(_,null,I,"beforeMount"),((X=S&&S.onVnodeMounted)||G||V)&&Ro(()=>{X&&Ee(X,I,_),V&&oe.enter(g),G&&Pe(_,null,I,"mounted")},O)}return g.nextSibling},y=(g,_,I,O,$,A,T)=>{T=T||!!_.dynamicChildren;const S=_.children,K=S.length;for(let P=0;P{const{slotScopeIds:T}=_;T&&($=$?$.concat(T):T);const S=i(g),K=y(o(g),_,S,I,O,$,A);return K&&on(K)&&K.data==="]"?o(_.anchor=K):(ke=!0,c(_.anchor=a("]"),S,K),K)},L=(g,_,I,O,$,A)=>{if(ke=!0,_.el=null,A){const K=F(g);for(;;){const P=o(g);if(P&&P!==K)l(P);else break}}const T=o(g),S=i(g);return l(g),n(null,_,S,T,I,O,sn(S),$),T},F=(g,_="[",I="]")=>{let O=0;for(;g;)if(g=o(g),g&&on(g)&&(g.data===_&&O++,g.data===I)){if(O===0)return o(g);O--}return g},U=(g,_,I)=>{const O=_.parentNode;O&&O.replaceChild(g,_);let $=I;for(;$;)$.vnode.el===_&&($.vnode.el=$.subTree.el=g),$=$.parent},k=g=>g.nodeType===1&&g.tagName.toLowerCase()==="template";return[f,h]}const ge=Ro;function lc(e){return Uo(e)}function cc(e){return Uo(e,ic)}function Uo(e,t){const n=eo();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:f,parentNode:h,nextSibling:p,setScopeId:y=xe,insertStaticContent:w}=e,L=(u,d,m,v=null,b=null,x=null,M=void 0,C=null,R=!!d.dynamicChildren)=>{if(u===d)return;u&&!it(u,d)&&(v=Yt(u),Oe(u,b,x,!0),u=null),d.patchFlag===-2&&(R=!1,d.dynamicChildren=null);const{type:E,ref:N,shapeFlag:D}=d;switch(E){case Tt:F(u,d,m,v);break;case be:U(u,d,m,v);break;case $t:u==null&&k(d,m,v,M);break;case me:P(u,d,m,v,b,x,M,C,R);break;default:D&1?I(u,d,m,v,b,x,M,C,R):D&6?G(u,d,m,v,b,x,M,C,R):(D&64||D&128)&&E.process(u,d,m,v,b,x,M,C,R,pt)}N!=null&&b&&Cn(N,u&&u.ref,x,d||u,!d)},F=(u,d,m,v)=>{if(u==null)r(d.el=l(d.children),m,v);else{const b=d.el=u.el;d.children!==u.children&&a(b,d.children)}},U=(u,d,m,v)=>{u==null?r(d.el=c(d.children||""),m,v):d.el=u.el},k=(u,d,m,v)=>{[u.el,u.anchor]=w(u.children,d,m,v,u.el,u.anchor)},g=({el:u,anchor:d},m,v)=>{let b;for(;u&&u!==d;)b=p(u),r(u,m,v),u=b;r(d,m,v)},_=({el:u,anchor:d})=>{let m;for(;u&&u!==d;)m=p(u),s(u),u=m;s(d)},I=(u,d,m,v,b,x,M,C,R)=>{d.type==="svg"?M="svg":d.type==="math"&&(M="mathml"),u==null?O(d,m,v,b,x,M,C,R):T(u,d,b,x,M,C,R)},O=(u,d,m,v,b,x,M,C)=>{let R,E;const{props:N,shapeFlag:D,transition:H,dirs:W}=u;if(R=u.el=i(u.type,x,N&&N.is,N),D&8?f(R,u.children):D&16&&A(u.children,R,null,v,b,Jn(u,x),M,C),W&&Pe(u,null,v,"created"),$(R,u,u.scopeId,M,v),N){for(const Q in N)Q!=="value"&&!Mt(Q)&&o(R,Q,null,N[Q],x,u.children,v,b,He);"value"in N&&o(R,"value",null,N.value,x),(E=N.onVnodeBeforeMount)&&Ee(E,v,u)}W&&Pe(u,null,v,"beforeMount");const z=Ko(b,H);z&&H.beforeEnter(R),r(R,d,m),((E=N&&N.onVnodeMounted)||z||W)&&ge(()=>{E&&Ee(E,v,u),z&&H.enter(R),W&&Pe(u,null,v,"mounted")},b)},$=(u,d,m,v,b)=>{if(m&&y(u,m),v)for(let x=0;x{for(let E=R;E{const C=d.el=u.el;let{patchFlag:R,dynamicChildren:E,dirs:N}=d;R|=u.patchFlag&16;const D=u.props||ee,H=d.props||ee;let W;if(m&&nt(m,!1),(W=H.onVnodeBeforeUpdate)&&Ee(W,m,d,u),N&&Pe(d,u,m,"beforeUpdate"),m&&nt(m,!0),E?S(u.dynamicChildren,E,C,m,v,Jn(d,b),x):M||j(u,d,C,null,m,v,Jn(d,b),x,!1),R>0){if(R&16)K(C,d,D,H,m,v,b);else if(R&2&&D.class!==H.class&&o(C,"class",null,H.class,b),R&4&&o(C,"style",D.style,H.style,b),R&8){const z=d.dynamicProps;for(let Q=0;Q{W&&Ee(W,m,d,u),N&&Pe(d,u,m,"updated")},v)},S=(u,d,m,v,b,x,M)=>{for(let C=0;C{if(m!==v){if(m!==ee)for(const C in m)!Mt(C)&&!(C in v)&&o(u,C,m[C],null,M,d.children,b,x,He);for(const C in v){if(Mt(C))continue;const R=v[C],E=m[C];R!==E&&C!=="value"&&o(u,C,E,R,M,d.children,b,x,He)}"value"in v&&o(u,"value",m.value,v.value,M)}},P=(u,d,m,v,b,x,M,C,R)=>{const E=d.el=u?u.el:l(""),N=d.anchor=u?u.anchor:l("");let{patchFlag:D,dynamicChildren:H,slotScopeIds:W}=d;W&&(C=C?C.concat(W):W),u==null?(r(E,m,v),r(N,m,v),A(d.children||[],m,N,b,x,M,C,R)):D>0&&D&64&&H&&u.dynamicChildren?(S(u.dynamicChildren,H,m,b,x,M,C),(d.key!=null||b&&d===b.subTree)&&Wr(u,d,!0)):j(u,d,m,N,b,x,M,C,R)},G=(u,d,m,v,b,x,M,C,R)=>{d.slotScopeIds=C,u==null?d.shapeFlag&512?b.ctx.activate(d,m,v,M,R):oe(d,m,v,b,x,M,R):fe(u,d,R)},oe=(u,d,m,v,b,x,M)=>{const C=u.component=vc(u,v,b);if(qt(u)&&(C.ctx.renderer=pt),bc(C),C.asyncDep){if(b&&b.registerDep(C,V),!u.el){const R=C.subTree=se(be);U(null,R,d,m)}}else V(C,u,d,m,b,x,M)},fe=(u,d,m)=>{const v=d.component=u.component;if(xl(u,d,m))if(v.asyncDep&&!v.asyncResolved){X(v,d,m);return}else v.next=d,yl(v.update),v.effect.dirty=!0,v.update();else d.el=u.el,v.vnode=d},V=(u,d,m,v,b,x,M)=>{const C=()=>{if(u.isMounted){let{next:N,bu:D,u:H,parent:W,vnode:z}=u;{const gt=Wo(u);if(gt){N&&(N.el=z.el,X(u,N,M)),gt.asyncDep.then(()=>{u.isUnmounted||C()});return}}let Q=N,te;nt(u,!1),N?(N.el=z.el,X(u,N,M)):N=z,D&&hn(D),(te=N.props&&N.props.onVnodeBeforeUpdate)&&Ee(te,W,N,z),nt(u,!0);const ae=Gn(u),Se=u.subTree;u.subTree=ae,L(Se,ae,h(Se.el),Yt(Se),u,b,x),N.el=ae.el,Q===null&&Tl(u,ae.el),H&&ge(H,b),(te=N.props&&N.props.onVnodeUpdated)&&ge(()=>Ee(te,W,N,z),b)}else{let N;const{el:D,props:H}=d,{bm:W,m:z,parent:Q}=u,te=Et(d);if(nt(u,!1),W&&hn(W),!te&&(N=H&&H.onVnodeBeforeMount)&&Ee(N,Q,d),nt(u,!0),D&&Wn){const ae=()=>{u.subTree=Gn(u),Wn(D,u.subTree,u,b,null)};te?d.type.__asyncLoader().then(()=>!u.isUnmounted&&ae()):ae()}else{const ae=u.subTree=Gn(u);L(null,ae,m,v,u,b,x),d.el=ae.el}if(z&&ge(z,b),!te&&(N=H&&H.onVnodeMounted)){const ae=d;ge(()=>Ee(N,Q,ae),b)}(d.shapeFlag&256||Q&&Et(Q.vnode)&&Q.vnode.shapeFlag&256)&&u.a&&ge(u.a,b),u.isMounted=!0,d=m=v=null}},R=u.effect=new Or(C,xe,()=>Nn(E),u.scope),E=u.update=()=>{R.dirty&&R.run()};E.id=u.uid,nt(u,!0),E()},X=(u,d,m)=>{d.component=u;const v=u.vnode.props;u.vnode=d,u.next=null,ec(u,d.props,v,m),rc(u,d.children,m),dt(),cs(u),ht()},j=(u,d,m,v,b,x,M,C,R=!1)=>{const E=u&&u.children,N=u?u.shapeFlag:0,D=d.children,{patchFlag:H,shapeFlag:W}=d;if(H>0){if(H&128){Xt(E,D,m,v,b,x,M,C,R);return}else if(H&256){$e(E,D,m,v,b,x,M,C,R);return}}W&8?(N&16&&He(E,b,x),D!==E&&f(m,D)):N&16?W&16?Xt(E,D,m,v,b,x,M,C,R):He(E,b,x,!0):(N&8&&f(m,""),W&16&&A(D,m,v,b,x,M,C,R))},$e=(u,d,m,v,b,x,M,C,R)=>{u=u||_t,d=d||_t;const E=u.length,N=d.length,D=Math.min(E,N);let H;for(H=0;HN?He(u,b,x,!0,!1,D):A(d,m,v,b,x,M,C,R,D)},Xt=(u,d,m,v,b,x,M,C,R)=>{let E=0;const N=d.length;let D=u.length-1,H=N-1;for(;E<=D&&E<=H;){const W=u[E],z=d[E]=R?qe(d[E]):Ae(d[E]);if(it(W,z))L(W,z,m,null,b,x,M,C,R);else break;E++}for(;E<=D&&E<=H;){const W=u[D],z=d[H]=R?qe(d[H]):Ae(d[H]);if(it(W,z))L(W,z,m,null,b,x,M,C,R);else break;D--,H--}if(E>D){if(E<=H){const W=H+1,z=WH)for(;E<=D;)Oe(u[E],b,x,!0),E++;else{const W=E,z=E,Q=new Map;for(E=z;E<=H;E++){const _e=d[E]=R?qe(d[E]):Ae(d[E]);_e.key!=null&&Q.set(_e.key,E)}let te,ae=0;const Se=H-z+1;let gt=!1,Jr=0;const Rt=new Array(Se);for(E=0;E=Se){Oe(_e,b,x,!0);continue}let Me;if(_e.key!=null)Me=Q.get(_e.key);else for(te=z;te<=H;te++)if(Rt[te-z]===0&&it(_e,d[te])){Me=te;break}Me===void 0?Oe(_e,b,x,!0):(Rt[Me-z]=E+1,Me>=Jr?Jr=Me:gt=!0,L(_e,d[Me],m,null,b,x,M,C,R),ae++)}const Qr=gt?ac(Rt):_t;for(te=Qr.length-1,E=Se-1;E>=0;E--){const _e=z+E,Me=d[_e],Zr=_e+1{const{el:x,type:M,transition:C,children:R,shapeFlag:E}=u;if(E&6){tt(u.component.subTree,d,m,v);return}if(E&128){u.suspense.move(d,m,v);return}if(E&64){M.move(u,d,m,pt);return}if(M===me){r(x,d,m);for(let D=0;DC.enter(x),b);else{const{leave:D,delayLeave:H,afterLeave:W}=C,z=()=>r(x,d,m),Q=()=>{D(x,()=>{z(),W&&W()})};H?H(x,z,Q):Q()}else r(x,d,m)},Oe=(u,d,m,v=!1,b=!1)=>{const{type:x,props:M,ref:C,children:R,dynamicChildren:E,shapeFlag:N,patchFlag:D,dirs:H}=u;if(C!=null&&Cn(C,null,m,u,!0),N&256){d.ctx.deactivate(u);return}const W=N&1&&H,z=!Et(u);let Q;if(z&&(Q=M&&M.onVnodeBeforeUnmount)&&Ee(Q,d,u),N&6)Ci(u.component,m,v);else{if(N&128){u.suspense.unmount(m,v);return}W&&Pe(u,null,d,"beforeUnmount"),N&64?u.type.remove(u,d,m,b,pt,v):E&&(x!==me||D>0&&D&64)?He(E,d,m,!1,!0):(x===me&&D&384||!b&&N&16)&&He(R,d,m),v&&Xr(u)}(z&&(Q=M&&M.onVnodeUnmounted)||W)&&ge(()=>{Q&&Ee(Q,d,u),W&&Pe(u,null,d,"unmounted")},m)},Xr=u=>{const{type:d,el:m,anchor:v,transition:b}=u;if(d===me){Ei(m,v);return}if(d===$t){_(u);return}const x=()=>{s(m),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(u.shapeFlag&1&&b&&!b.persisted){const{leave:M,delayLeave:C}=b,R=()=>M(m,x);C?C(u.el,x,R):R()}else x()},Ei=(u,d)=>{let m;for(;u!==d;)m=p(u),s(u),u=m;s(d)},Ci=(u,d,m)=>{const{bum:v,scope:b,update:x,subTree:M,um:C}=u;v&&hn(v),b.stop(),x&&(x.active=!1,Oe(M,u,d,m)),C&&ge(C,d),ge(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},He=(u,d,m,v=!1,b=!1,x=0)=>{for(let M=x;Mu.shapeFlag&6?Yt(u.component.subTree):u.shapeFlag&128?u.suspense.next():p(u.anchor||u.el);let Un=!1;const Yr=(u,d,m)=>{u==null?d._vnode&&Oe(d._vnode,null,null,!0):L(d._vnode||null,u,d,null,null,null,m),Un||(Un=!0,cs(),vn(),Un=!1),d._vnode=u},pt={p:L,um:Oe,m:tt,r:Xr,mt:oe,mc:A,pc:j,pbc:S,n:Yt,o:e};let Kn,Wn;return t&&([Kn,Wn]=t(pt)),{render:Yr,hydrate:Kn,createApp:Jl(Yr,Kn)}}function Jn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function nt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Ko(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Wr(e,t,n=!1){const r=e.children,s=t.children;if(B(r)&&B(s))for(let o=0;o>1,e[n[l]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Wo(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Wo(t)}const uc=e=>e.__isTeleport,Ft=e=>e&&(e.disabled||e.disabled===""),bs=e=>typeof SVGElement<"u"&&e instanceof SVGElement,ws=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,vr=(e,t)=>{const n=e&&e.to;return ne(n)?t?t(n):null:n},fc={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,o,i,l,c,a){const{mc:f,pc:h,pbc:p,o:{insert:y,querySelector:w,createText:L,createComment:F}}=a,U=Ft(t.props);let{shapeFlag:k,children:g,dynamicChildren:_}=t;if(e==null){const I=t.el=L(""),O=t.anchor=L("");y(I,n,r),y(O,n,r);const $=t.target=vr(t.props,w),A=t.targetAnchor=L("");$&&(y(A,$),i==="svg"||bs($)?i="svg":(i==="mathml"||ws($))&&(i="mathml"));const T=(S,K)=>{k&16&&f(g,S,K,s,o,i,l,c)};U?T(n,O):$&&T($,A)}else{t.el=e.el;const I=t.anchor=e.anchor,O=t.target=e.target,$=t.targetAnchor=e.targetAnchor,A=Ft(e.props),T=A?n:O,S=A?I:$;if(i==="svg"||bs(O)?i="svg":(i==="mathml"||ws(O))&&(i="mathml"),_?(p(e.dynamicChildren,_,T,s,o,i,l),Wr(e,t,!0)):c||h(e,t,T,S,s,o,i,l,!1),U)A?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):ln(t,n,I,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const K=t.target=vr(t.props,w);K&&ln(t,K,null,a,0)}else A&&ln(t,O,$,a,1)}qo(t)},remove(e,t,n,r,{um:s,o:{remove:o}},i){const{shapeFlag:l,children:c,anchor:a,targetAnchor:f,target:h,props:p}=e;if(h&&o(f),i&&o(a),l&16){const y=i||!Ft(p);for(let w=0;w0?Re||_t:null,hc(),Bt>0&&Re&&Re.push(e),e}function uu(e,t,n,r,s,o){return zo(Jo(e,t,n,r,s,o,!0))}function Xo(e,t,n,r,s){return zo(se(e,t,n,r,s,!0))}function xn(e){return e?e.__v_isVNode===!0:!1}function it(e,t){return e.type===t.type&&e.key===t.key}const Dn="__vInternal",Yo=({key:e})=>e??null,pn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ne(e)||de(e)||q(e)?{i:le,r:e,k:t,f:!!n}:e:null);function Jo(e,t=null,n=null,r=0,s=null,o=e===me?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Yo(t),ref:t&&pn(t),scopeId:$n,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:le};return l?(qr(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=ne(n)?8:16),Bt>0&&!i&&Re&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Re.push(c),c}const se=pc;function pc(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===So)&&(e=be),xn(e)){const l=et(e,t,!0);return n&&qr(l,n),Bt>0&&!o&&Re&&(l.shapeFlag&6?Re[Re.indexOf(e)]=l:Re.push(l)),l.patchFlag|=-2,l}if(xc(e)&&(e=e.__vccOpts),t){t=gc(t);let{class:l,style:c}=t;l&&!ne(l)&&(t.class=Lr(l)),Z(c)&&(yo(c)&&!B(c)&&(c=ce({},c)),t.style=Rr(c))}const i=ne(e)?1:Sl(e)?128:uc(e)?64:Z(e)?4:q(e)?2:0;return Jo(e,t,n,r,s,i,o,!0)}function gc(e){return e?yo(e)||Dn in e?ce({},e):e:null}function et(e,t,n=!1){const{props:r,ref:s,patchFlag:o,children:i}=e,l=t?mc(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Yo(l),ref:t&&t.ref?n&&s?B(s)?s.concat(pn(t)):[s,pn(t)]:pn(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==me?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&et(e.ssContent),ssFallback:e.ssFallback&&et(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Qo(e=" ",t=0){return se(Tt,null,e,t)}function fu(e,t){const n=se($t,null,e);return n.staticCount=t,n}function du(e="",t=!1){return t?(Go(),Xo(be,null,e)):se(be,null,e)}function Ae(e){return e==null||typeof e=="boolean"?se(be):B(e)?se(me,null,e.slice()):typeof e=="object"?qe(e):se(Tt,null,String(e))}function qe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:et(e)}function qr(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(B(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),qr(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!(Dn in t)?t._ctx=le:s===3&&le&&(le.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:le},n=32):(t=String(t),r&64?(n=16,t=[Qo(t)]):n=8);e.children=t,e.shapeFlag|=n}function mc(...e){const t={};for(let n=0;nue||le;let Tn,br;{const e=eo(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};Tn=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),br=t("__VUE_SSR_SETTERS__",n=>zt=n)}const Gt=e=>{const t=ue;return Tn(e),e.scope.on(),()=>{e.scope.off(),Tn(t)}},Cs=()=>{ue&&ue.scope.off(),Tn(null)};function Zo(e){return e.vnode.shapeFlag&4}let zt=!1;function bc(e,t=!1){t&&br(t);const{props:n,children:r}=e.vnode,s=Zo(e);Zl(e,n,s,t),nc(e,r);const o=s?wc(e,t):void 0;return t&&br(!1),o}function wc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Pt(new Proxy(e.ctx,Ul));const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?ti(e):null,o=Gt(e);dt();const i=Xe(r,e,0,[e.props,s]);if(ht(),o(),Js(i)){if(i.then(Cs,Cs),t)return i.then(l=>{xs(e,l,t)}).catch(l=>{Wt(l,e,0)});e.asyncDep=i}else xs(e,i,t)}else ei(e,t)}function xs(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=wo(t)),ei(e,n)}let Ts;function ei(e,t,n){const r=e.type;if(!e.render){if(!t&&Ts&&!r.render){const s=r.template||Ur(e).template;if(s){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=r,a=ce(ce({isCustomElement:o,delimiters:l},i),c);r.render=Ts(s,a)}}e.render=r.render||xe}{const s=Gt(e);dt();try{Wl(e)}finally{ht(),s()}}}function Ec(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return ye(e,"get","$attrs"),t[n]}}))}function ti(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return Ec(e)},slots:e.slots,emit:e.emit,expose:t}}function Bn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(wo(Pt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Nt)return Nt[n](e)},has(t,n){return n in t||n in Nt}}))}function Cc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function xc(e){return q(e)&&"__vccOpts"in e}const re=(e,t)=>il(e,t,zt);function wr(e,t,n){const r=arguments.length;return r===2?Z(t)&&!B(t)?xn(t)?se(e,null,[t]):se(e,t):se(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&xn(n)&&(n=[n]),se(e,t,n))}const Tc="3.4.15";/** +* @vue/runtime-dom v3.4.15 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const Sc="http://www.w3.org/2000/svg",Ac="http://www.w3.org/1998/Math/MathML",Ge=typeof document<"u"?document:null,Ss=Ge&&Ge.createElement("template"),Rc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?Ge.createElementNS(Sc,e):t==="mathml"?Ge.createElementNS(Ac,e):Ge.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Ge.createTextNode(e),createComment:e=>Ge.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ge.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{Ss.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const l=Ss.content;if(r==="svg"||r==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Be="transition",Lt="animation",Ut=Symbol("_vtc"),ni=(e,{slots:t})=>wr(Pl,Lc(e),t);ni.displayName="Transition";const ri={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};ni.props=ce({},Oo,ri);const rt=(e,t=[])=>{B(e)?e.forEach(n=>n(...t)):e&&e(...t)},As=e=>e?B(e)?e.some(t=>t.length>1):e.length>1:!1;function Lc(e){const t={};for(const P in e)P in ri||(t[P]=e[P]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:a=i,appearToClass:f=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:y=`${n}-leave-to`}=e,w=Oc(s),L=w&&w[0],F=w&&w[1],{onBeforeEnter:U,onEnter:k,onEnterCancelled:g,onLeave:_,onLeaveCancelled:I,onBeforeAppear:O=U,onAppear:$=k,onAppearCancelled:A=g}=t,T=(P,G,oe)=>{st(P,G?f:l),st(P,G?a:i),oe&&oe()},S=(P,G)=>{P._isLeaving=!1,st(P,h),st(P,y),st(P,p),G&&G()},K=P=>(G,oe)=>{const fe=P?$:k,V=()=>T(G,P,oe);rt(fe,[G,V]),Rs(()=>{st(G,P?c:o),Ue(G,P?f:l),As(fe)||Ls(G,r,L,V)})};return ce(t,{onBeforeEnter(P){rt(U,[P]),Ue(P,o),Ue(P,i)},onBeforeAppear(P){rt(O,[P]),Ue(P,c),Ue(P,a)},onEnter:K(!1),onAppear:K(!0),onLeave(P,G){P._isLeaving=!0;const oe=()=>S(P,G);Ue(P,h),Ic(),Ue(P,p),Rs(()=>{P._isLeaving&&(st(P,h),Ue(P,y),As(_)||Ls(P,r,F,oe))}),rt(_,[P,oe])},onEnterCancelled(P){T(P,!1),rt(g,[P])},onAppearCancelled(P){T(P,!0),rt(A,[P])},onLeaveCancelled(P){S(P),rt(I,[P])}})}function Oc(e){if(e==null)return null;if(Z(e))return[Qn(e.enter),Qn(e.leave)];{const t=Qn(e);return[t,t]}}function Qn(e){return Li(e)}function Ue(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Ut]||(e[Ut]=new Set)).add(t)}function st(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Ut];n&&(n.delete(t),n.size||(e[Ut]=void 0))}function Rs(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Mc=0;function Ls(e,t,n,r){const s=e._endId=++Mc,o=()=>{s===e._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=Pc(e,t);if(!i)return r();const a=i+"end";let f=0;const h=()=>{e.removeEventListener(a,p),o()},p=y=>{y.target===e&&++f>=c&&h()};setTimeout(()=>{f(n[w]||"").split(", "),s=r(`${Be}Delay`),o=r(`${Be}Duration`),i=Os(s,o),l=r(`${Lt}Delay`),c=r(`${Lt}Duration`),a=Os(l,c);let f=null,h=0,p=0;t===Be?i>0&&(f=Be,h=i,p=o.length):t===Lt?a>0&&(f=Lt,h=a,p=c.length):(h=Math.max(i,a),f=h>0?i>a?Be:Lt:null,p=f?f===Be?o.length:c.length:0);const y=f===Be&&/\b(transform|all)(,|$)/.test(r(`${Be}Property`).toString());return{type:f,timeout:h,propCount:p,hasTransform:y}}function Os(e,t){for(;e.lengthMs(n)+Ms(e[r])))}function Ms(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Ic(){return document.body.offsetHeight}function Nc(e,t,n){const r=e[Ut];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Fc=Symbol("_vod"),$c=Symbol("");function Hc(e,t,n){const r=e.style,s=r.display,o=ne(n);if(n&&!o){if(t&&!ne(t))for(const i in t)n[i]==null&&Er(r,i,"");for(const i in n)Er(r,i,n[i])}else if(o){if(t!==n){const i=r[$c];i&&(n+=";"+i),r.cssText=n}}else t&&e.removeAttribute("style");Fc in e&&(r.display=s)}const Ps=/\s*!important$/;function Er(e,t,n){if(B(n))n.forEach(r=>Er(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=jc(e,t);Ps.test(n)?e.setProperty(ft(r),n.replace(Ps,""),"important"):e[r]=n}}const Is=["Webkit","Moz","ms"],Zn={};function jc(e,t){const n=Zn[t];if(n)return n;let r=Fe(t);if(r!=="filter"&&r in e)return Zn[t]=r;r=Ln(r);for(let s=0;ser||(Kc.then(()=>er=0),er=Date.now());function qc(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Te(Gc(r,n.value),t,5,[r])};return n.value=e,n.attached=Wc(),n}function Gc(e,t){if(B(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const Hs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,zc=(e,t,n,r,s,o,i,l,c)=>{const a=s==="svg";t==="class"?Nc(e,r,a):t==="style"?Hc(e,n,r):Kt(t)?Tr(t)||Bc(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Xc(e,t,r,a))?Dc(e,t,r,o,i,l,c):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Vc(e,t,r,a))};function Xc(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Hs(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Hs(t)&&ne(n)?!1:t in e}const js=e=>{const t=e.props["onUpdate:modelValue"]||!1;return B(t)?n=>hn(t,n):t};function Yc(e){e.target.composing=!0}function Vs(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const tr=Symbol("_assign"),hu={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[tr]=js(s);const o=r||s.props&&s.props.type==="number";mt(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=cr(l)),e[tr](l)}),n&&mt(e,"change",()=>{e.value=e.value.trim()}),t||(mt(e,"compositionstart",Yc),mt(e,"compositionend",Vs),mt(e,"change",Vs))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:r,number:s}},o){if(e[tr]=js(o),e.composing)return;const i=s||e.type==="number"?cr(e.value):e.value,l=t??"";i!==l&&(document.activeElement===e&&e.type!=="range"&&(n||r&&e.value.trim()===l)||(e.value=l))}},Jc=["ctrl","shift","alt","meta"],Qc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Jc.some(n=>e[`${n}Key`]&&!t.includes(n))},pu=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(s,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=s=>{if(!("key"in s))return;const o=ft(s.key);if(t.some(i=>i===o||Zc[i]===o))return e(s)})},si=ce({patchProp:zc},Rc);let jt,Ds=!1;function ea(){return jt||(jt=lc(si))}function ta(){return jt=Ds?jt:cc(si),Ds=!0,jt}const mu=(...e)=>{const t=ea().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=ii(r);if(!s)return;const o=t._component;!q(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,oi(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t},yu=(...e)=>{const t=ta().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=ii(r);if(s)return n(s,!0,oi(s))},t};function oi(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ii(e){return ne(e)?document.querySelector(e):e}const _u=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},vu="/img/checkmark-green.png",bu="/img/cross-red.png",wu="/img/question-blue.png",na="modulepreload",ra=function(e){return"/"+e},ks={},Eu=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){const o=document.getElementsByTagName("link");s=Promise.all(n.map(i=>{if(i=ra(i),i in ks)return;ks[i]=!0;const l=i.endsWith(".css"),c=l?'[rel="stylesheet"]':"";if(!!r)for(let h=o.length-1;h>=0;h--){const p=o[h];if(p.href===i&&(!l||p.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${i}"]${c}`))return;const f=document.createElement("link");if(f.rel=l?"stylesheet":na,l||(f.as="script",f.crossOrigin=""),f.href=i,document.head.appendChild(f),l)return new Promise((h,p)=>{f.addEventListener("load",h),f.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${i}`)))})}))}return s.then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},sa=window.__VP_SITE_DATA__;function Gr(e){return ro()?(ji(e),!0):!1}function Ne(e){return typeof e=="function"?e():bo(e)}const li=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const oa=Object.prototype.toString,ia=e=>oa.call(e)==="[object Object]",Je=()=>{},Cr=la();function la(){var e,t;return li&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function ca(e,t){function n(...r){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(o)})}return n}const ci=e=>e();function aa(e,t={}){let n,r,s=Je;const o=l=>{clearTimeout(l),s(),s=Je};return l=>{const c=Ne(e),a=Ne(t.maxWait);return n&&o(n),c<=0||a!==void 0&&a<=0?(r&&(o(r),r=null),Promise.resolve(l())):new Promise((f,h)=>{s=t.rejectOnCancel?h:f,a&&!r&&(r=setTimeout(()=>{n&&o(n),r=null,f(l())},a)),n=setTimeout(()=>{r&&o(r),r=null,f(l())},c)})}}function ua(e=ci){const t=ie(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...o)=>{t.value&&e(...o)};return{isActive:Pn(t),pause:n,resume:r,eventFilter:s}}function fa(e){return e||kn()}function ai(...e){if(e.length!==1)return hl(...e);const t=e[0];return typeof t=="function"?Pn(ul(()=>({get:t,set:Je}))):ie(t)}function ui(e,t,n={}){const{eventFilter:r=ci,...s}=n;return Ye(e,ca(r,t),s)}function da(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:o,pause:i,resume:l,isActive:c}=ua(r);return{stop:ui(e,t,{...s,eventFilter:o}),pause:i,resume:l,isActive:c}}function fi(e,t=!0,n){fa()?At(e,n):t?e():In(e)}function Cu(e,t,n={}){const{debounce:r=0,maxWait:s=void 0,...o}=n;return ui(e,t,{...o,eventFilter:aa(r,{maxWait:s})})}function xu(e,t,n){let r;de(n)?r={evaluating:n}:r=n||{};const{lazy:s=!1,evaluating:o=void 0,shallow:i=!0,onError:l=Je}=r,c=ie(!s),a=i?jr(t):ie(t);let f=0;return kr(async h=>{if(!c.value)return;f++;const p=f;let y=!1;o&&Promise.resolve().then(()=>{o.value=!0});try{const w=await e(L=>{h(()=>{o&&(o.value=!1),y||L()})});p===f&&(a.value=w)}catch(w){l(w)}finally{o&&p===f&&(o.value=!1),y=!0}}),s?re(()=>(c.value=!0,a.value)):a}function yt(e){var t;const n=Ne(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Le=li?window:void 0;function Qe(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Le):[t,n,r,s]=e,!t)return Je;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],i=()=>{o.forEach(f=>f()),o.length=0},l=(f,h,p,y)=>(f.addEventListener(h,p,y),()=>f.removeEventListener(h,p,y)),c=Ye(()=>[yt(t),Ne(s)],([f,h])=>{if(i(),!f)return;const p=ia(h)?{...h}:h;o.push(...n.flatMap(y=>r.map(w=>l(f,y,w,p))))},{immediate:!0,flush:"post"}),a=()=>{c(),i()};return Gr(a),a}let Bs=!1;function Tu(e,t,n={}){const{window:r=Le,ignore:s=[],capture:o=!0,detectIframe:i=!1}=n;if(!r)return Je;Cr&&!Bs&&(Bs=!0,Array.from(r.document.body.children).forEach(p=>p.addEventListener("click",Je)),r.document.documentElement.addEventListener("click",Je));let l=!0;const c=p=>s.some(y=>{if(typeof y=="string")return Array.from(r.document.querySelectorAll(y)).some(w=>w===p.target||p.composedPath().includes(w));{const w=yt(y);return w&&(p.target===w||p.composedPath().includes(w))}}),f=[Qe(r,"click",p=>{const y=yt(e);if(!(!y||y===p.target||p.composedPath().includes(y))){if(p.detail===0&&(l=!c(p)),!l){l=!0;return}t(p)}},{passive:!0,capture:o}),Qe(r,"pointerdown",p=>{const y=yt(e);l=!c(p)&&!!(y&&!p.composedPath().includes(y))},{passive:!0}),i&&Qe(r,"blur",p=>{setTimeout(()=>{var y;const w=yt(e);((y=r.document.activeElement)==null?void 0:y.tagName)==="IFRAME"&&!(w!=null&&w.contains(r.document.activeElement))&&t(p)},0)})].filter(Boolean);return()=>f.forEach(p=>p())}function ha(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Su(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=Le,eventName:o="keydown",passive:i=!1,dedupe:l=!1}=r,c=ha(t);return Qe(s,o,f=>{f.repeat&&Ne(l)||c(f)&&n(f)},i)}function pa(){const e=ie(!1);return kn()&&At(()=>{e.value=!0}),e}function ga(e){const t=pa();return re(()=>(t.value,!!e()))}function ma(e,t={}){const{window:n=Le}=t,r=ga(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const o=ie(!1),i=a=>{o.value=a.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},c=kr(()=>{r.value&&(l(),s=n.matchMedia(Ne(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),o.value=s.matches)});return Gr(()=>{c(),l(),s=void 0}),o}const cn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},an="__vueuse_ssr_handlers__",ya=_a();function _a(){return an in cn||(cn[an]=cn[an]||{}),cn[an]}function di(e,t){return ya[e]||t}function va(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const ba={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Us="vueuse-storage";function zr(e,t,n,r={}){var s;const{flush:o="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:a=!1,shallow:f,window:h=Le,eventFilter:p,onError:y=T=>{console.error(T)},initOnMounted:w}=r,L=(f?jr:ie)(typeof t=="function"?t():t);if(!n)try{n=di("getDefaultStorage",()=>{var T;return(T=Le)==null?void 0:T.localStorage})()}catch(T){y(T)}if(!n)return L;const F=Ne(t),U=va(F),k=(s=r.serializer)!=null?s:ba[U],{pause:g,resume:_}=da(L,()=>I(L.value),{flush:o,deep:i,eventFilter:p});return h&&l&&fi(()=>{Qe(h,"storage",A),Qe(h,Us,$),w&&A()}),w||A(),L;function I(T){try{if(T==null)n.removeItem(e);else{const S=k.write(T),K=n.getItem(e);K!==S&&(n.setItem(e,S),h&&h.dispatchEvent(new CustomEvent(Us,{detail:{key:e,oldValue:K,newValue:S,storageArea:n}})))}}catch(S){y(S)}}function O(T){const S=T?T.newValue:n.getItem(e);if(S==null)return c&&F!=null&&n.setItem(e,k.write(F)),F;if(!T&&a){const K=k.read(S);return typeof a=="function"?a(K,F):U==="object"&&!Array.isArray(K)?{...F,...K}:K}else return typeof S!="string"?S:k.read(S)}function $(T){A(T.detail)}function A(T){if(!(T&&T.storageArea!==n)){if(T&&T.key==null){L.value=F;return}if(!(T&&T.key!==e)){g();try{(T==null?void 0:T.newValue)!==k.write(L.value)&&(L.value=O(T))}catch(S){y(S)}finally{T?In(_):_()}}}}}function hi(e){return ma("(prefers-color-scheme: dark)",e)}function wa(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Le,storage:o,storageKey:i="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:a,disableTransition:f=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},p=hi({window:s}),y=re(()=>p.value?"dark":"light"),w=c||(i==null?ai(r):zr(i,r,o,{window:s,listenToStorageChanges:l})),L=re(()=>w.value==="auto"?y.value:w.value),F=di("updateHTMLAttrs",(_,I,O)=>{const $=typeof _=="string"?s==null?void 0:s.document.querySelector(_):yt(_);if(!$)return;let A;if(f&&(A=s.document.createElement("style"),A.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),s.document.head.appendChild(A)),I==="class"){const T=O.split(/\s/g);Object.values(h).flatMap(S=>(S||"").split(/\s/g)).filter(Boolean).forEach(S=>{T.includes(S)?$.classList.add(S):$.classList.remove(S)})}else $.setAttribute(I,O);f&&(s.getComputedStyle(A).opacity,document.head.removeChild(A))});function U(_){var I;F(t,n,(I=h[_])!=null?I:_)}function k(_){e.onChanged?e.onChanged(_,U):U(_)}Ye(L,k,{flush:"post",immediate:!0}),fi(()=>k(L.value));const g=re({get(){return a?w.value:L.value},set(_){w.value=_}});try{return Object.assign(g,{store:w,system:y,state:L})}catch{return g}}function Ea(e={}){const{valueDark:t="dark",valueLight:n="",window:r=Le}=e,s=wa({...e,onChanged:(l,c)=>{var a;e.onChanged?(a=e.onChanged)==null||a.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),o=re(()=>s.system?s.system.value:hi({window:r}).value?"dark":"light");return re({get(){return s.value==="dark"},set(l){const c=l?"dark":"light";o.value===c?s.value="auto":s.value=c}})}function nr(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Au(e,t,n={}){const{window:r=Le}=n;return zr(e,t,r==null?void 0:r.localStorage,n)}function pi(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const un=new WeakMap;function Ru(e,t=!1){const n=ie(t);let r=null,s;Ye(ai(e),l=>{const c=nr(Ne(l));if(c){const a=c;un.get(a)||un.set(a,s),n.value&&(a.style.overflow="hidden")}},{immediate:!0});const o=()=>{const l=nr(Ne(e));!l||n.value||(Cr&&(r=Qe(l,"touchmove",c=>{Ca(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},i=()=>{var l;const c=nr(Ne(e));!c||!n.value||(Cr&&(r==null||r()),c.style.overflow=(l=un.get(c))!=null?l:"",un.delete(c),n.value=!1)};return Gr(i),re({get(){return n.value},set(l){l?o():i()}})}function Lu(e,t,n={}){const{window:r=Le}=n;return zr(e,t,r==null?void 0:r.sessionStorage,n)}function Ou(e={}){const{window:t=Le,behavior:n="auto"}=e;if(!t)return{x:ie(0),y:ie(0)};const r=ie(t.scrollX),s=ie(t.scrollY),o=re({get(){return r.value},set(l){scrollTo({left:l,behavior:n})}}),i=re({get(){return s.value},set(l){scrollTo({top:l,behavior:n})}});return Qe(t,"scroll",()=>{r.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:o,y:i}}var rr={BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1},xa={};const gi=/^(?:[a-z]+:|\/\/)/i,Ta="vitepress-theme-appearance",Sa=/#.*$/,Aa=/[?#].*$/,Ra=/(?:(^|\/)index)?\.(?:md|html)$/,Ce=typeof document<"u",mi={relativePath:"",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function La(e,t,n=!1){if(t===void 0)return!1;if(e=Ks(`/${e}`),n)return new RegExp(t).test(e);if(Ks(t)!==e)return!1;const r=t.match(Sa);return r?(Ce?location.hash:"")===r[0]:!0}function Ks(e){return decodeURI(e).replace(Aa,"").replace(Ra,"$1")}function Oa(e){return gi.test(e)}function Ma(e,t){var r,s,o,i,l,c,a;const n=Object.keys(e.locales).find(f=>f!=="root"&&!Oa(f)&&La(t,`/${f}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((r=e.locales[n])==null?void 0:r.lang)??e.lang,dir:((s=e.locales[n])==null?void 0:s.dir)??e.dir,title:((o=e.locales[n])==null?void 0:o.title)??e.title,titleTemplate:((i=e.locales[n])==null?void 0:i.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:_i(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(a=e.locales[n])==null?void 0:a.themeConfig}})}function yi(e,t){const n=t.title||e.title,r=t.titleTemplate??e.titleTemplate;if(typeof r=="string"&&r.includes(":title"))return r.replace(/:title/g,n);const s=Pa(e.title,r);return n===s.slice(3)?n:`${n}${s}`}function Pa(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Ia(e,t){const[n,r]=t;if(n!=="meta")return!1;const s=Object.entries(r)[0];return s==null?!1:e.some(([o,i])=>o===n&&i[s[0]]===s[1])}function _i(e,t){return[...e.filter(n=>!Ia(t,n)),...t]}const Na=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Fa=/^[a-z]:/i;function Ws(e){const t=Fa.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Na,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const sr=new Set;function $a(e){if(sr.size===0){const n=typeof process=="object"&&xa.VITE_EXTRA_EXTENSIONS||(rr==null?void 0:rr.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(r=>sr.add(r))}const t=e.split(".").pop();return t==null||!sr.has(t.toLowerCase())}function Mu(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const Ha=Symbol(),ut=jr(sa);function Pu(e){const t=re(()=>Ma(ut.value,e.data.relativePath)),n=t.value.appearance,r=n==="force-dark"?ie(!0):n?Ea({storageKey:Ta,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):ie(!1);return{site:t,theme:re(()=>t.value.themeConfig),page:re(()=>e.data),frontmatter:re(()=>e.data.frontmatter),params:re(()=>e.data.params),lang:re(()=>t.value.lang),dir:re(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:re(()=>t.value.localeIndex||"root"),title:re(()=>yi(t.value,e.data)),description:re(()=>e.data.description||t.value.description),isDark:r}}function ja(){const e=Ct(Ha);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Va(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function qs(e){return gi.test(e)||!e.startsWith("/")?e:Va(ut.value.base,e)}function Da(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),Ce){const n="/";t=Ws(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let r=__VP_HASH_MAP__[t.toLowerCase()];if(r||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",r=__VP_HASH_MAP__[t.toLowerCase()]),!r)return null;t=`${n}assets/${t}.${r}.js`}else t=`./${Ws(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let gn=[];function Iu(e){gn.push(e),Vn(()=>{gn=gn.filter(t=>t!==e)})}function ka(){let e=ut.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Gs(e,n);else if(Array.isArray(e))for(const r of e){const s=Gs(r,n);if(s){t=s;break}}return t}function Gs(e,t){const n=document.querySelector(e);if(!n)return 0;const r=n.getBoundingClientRect().bottom;return r<0?0:r+t}const Ba=Symbol(),vi="http://a.com",Ua=()=>({path:"/",component:null,data:mi});function Nu(e,t){const n=Mn(Ua()),r={route:n,go:s};async function s(l=Ce?location.href:"/"){var c,a;l=Sn(l),await((c=r.onBeforeRouteChange)==null?void 0:c.call(r,l))!==!1&&(Xs(l),await i(l),await((a=r.onAfterRouteChanged)==null?void 0:a.call(r,l)))}let o=null;async function i(l,c=0,a=!1){var p;if(await((p=r.onBeforePageLoad)==null?void 0:p.call(r,l))===!1)return;const f=new URL(l,vi),h=o=f.pathname;try{let y=await e(h);if(!y)throw new Error(`Page not found: ${h}`);if(o===h){o=null;const{default:w,__pageData:L}=y;if(!w)throw new Error(`Invalid route component: ${w}`);n.path=Ce?h:qs(h),n.component=Pt(w),n.data=Pt(L),Ce&&In(()=>{let F=ut.value.base+L.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ut.value.cleanUrls&&!F.endsWith("/")&&(F+=".html"),F!==f.pathname&&(f.pathname=F,l=F+f.search+f.hash,history.replaceState(null,"",l)),f.hash&&!c){let U=null;try{U=document.getElementById(decodeURIComponent(f.hash).slice(1))}catch(k){console.warn(k)}if(U){zs(U,f.hash);return}}window.scrollTo(0,c)})}}catch(y){if(!/fetch|Page not found/.test(y.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(y),!a)try{const w=await fetch(ut.value.base+"hashmap.json");window.__VP_HASH_MAP__=await w.json(),await i(l,c,!0);return}catch{}o===h&&(o=null,n.path=Ce?h:qs(h),n.component=t?Pt(t):null,n.data=mi)}}return Ce&&(window.addEventListener("click",l=>{if(l.target.closest("button"))return;const a=l.target.closest("a");if(a&&!a.closest(".vp-raw")&&(a instanceof SVGElement||!a.download)){const{target:f}=a,{href:h,origin:p,pathname:y,hash:w,search:L}=new URL(a.href instanceof SVGAnimatedString?a.href.animVal:a.href,a.baseURI),F=window.location;!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!f&&p===F.origin&&$a(y)&&(l.preventDefault(),y===F.pathname&&L===F.search?(w!==F.hash&&(history.pushState(null,"",w),window.dispatchEvent(new Event("hashchange"))),w?zs(a,w,a.classList.contains("header-anchor")):(Xs(h),window.scrollTo(0,0))):s(h))}},{capture:!0}),window.addEventListener("popstate",async l=>{var c;await i(Sn(location.href),l.state&&l.state.scrollPosition||0),(c=r.onAfterRouteChanged)==null||c.call(r,location.href)}),window.addEventListener("hashchange",l=>{l.preventDefault()})),r}function Ka(){const e=Ct(Ba);if(!e)throw new Error("useRouter() is called without provider.");return e}function bi(){return Ka().route}function zs(e,t,n=!1){let r=null;try{r=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(s){console.warn(s)}if(r){let s=function(){!n||Math.abs(i-window.scrollY)>window.innerHeight?window.scrollTo(0,i):window.scrollTo({left:0,top:i,behavior:"smooth"})};const o=parseInt(window.getComputedStyle(r).paddingTop,10),i=window.scrollY+r.getBoundingClientRect().top-ka()+o;requestAnimationFrame(s)}}function Xs(e){Ce&&Sn(e)!==Sn(location.href)&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",e))}function Sn(e){const t=new URL(e,vi);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),ut.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const or=()=>gn.forEach(e=>e()),Fu=Br({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=bi(),{site:n}=ja();return()=>wr(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?wr(t.component,{onVnodeMounted:or,onVnodeUpdated:or,onVnodeUnmounted:or}):"404 Page Not Found"])}}),$u=Br({setup(e,{slots:t}){const n=ie(!1);return At(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Hu(){Ce&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement;if(!r)return;const s=Array.from(r.querySelectorAll("input")).indexOf(t);if(s<0)return;const o=r.querySelector(".blocks");if(!o)return;const i=Array.from(o.children).find(a=>a.classList.contains("active"));if(!i)return;const l=o.children[s];if(!l||i===l)return;i.classList.remove("active"),l.classList.add("active");const c=r==null?void 0:r.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function ju(){if(Ce){const e=new WeakMap;window.addEventListener("click",t=>{var r;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const s=n.parentElement,o=(r=n.nextElementSibling)==null?void 0:r.nextElementSibling;if(!s||!o)return;const i=/language-(shellscript|shell|bash|sh|zsh)/.test(s.className),l=[".vp-copy-ignore",".diff.remove"],c=o.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(f=>f.remove());let a=c.textContent||"";i&&(a=a.replace(/^ *(\$|>) /gm,"").trim()),Wa(a).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const f=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,f)})}})}}async function Wa(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const r=document.getSelection(),s=r?r.rangeCount>0&&r.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),s&&(r.removeAllRanges(),r.addRange(s)),n&&n.focus()}}function Vu(e,t){let n=!0,r=[];const s=o=>{if(n){n=!1,o.forEach(l=>{const c=ir(l);for(const a of document.head.children)if(a.isEqualNode(c)){r.push(a);return}});return}const i=o.map(ir);r.forEach((l,c)=>{const a=i.findIndex(f=>f==null?void 0:f.isEqualNode(l??null));a!==-1?delete i[a]:(l==null||l.remove(),delete r[c])}),i.forEach(l=>l&&document.head.appendChild(l)),r=[...r,...i].filter(Boolean)};kr(()=>{const o=e.data,i=t.value,l=o&&o.description,c=o&&o.frontmatter.head||[],a=yi(i,o);a!==document.title&&(document.title=a);const f=l||i.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==f&&h.setAttribute("content",f):ir(["meta",{name:"description",content:f}]),s(_i(i.head,Ga(c)))})}function ir([e,t,n]){const r=document.createElement(e);for(const s in t)r.setAttribute(s,t[s]);return n&&(r.innerHTML=n),e==="script"&&!t.async&&(r.async=!1),r}function qa(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Ga(e){return e.filter(t=>!qa(t))}const lr=new Set,wi=()=>document.createElement("link"),za=e=>{const t=wi();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Xa=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let fn;const Ya=Ce&&(fn=wi())&&fn.relList&&fn.relList.supports&&fn.relList.supports("prefetch")?za:Xa;function Du(){if(!Ce||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const r=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!lr.has(c)){lr.add(c);const a=Da(c);a&&Ya(a)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{hostname:i,pathname:l}=new URL(o.href instanceof SVGAnimatedString?o.href.animVal:o.href,o.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||o.target!=="_blank"&&i===location.hostname&&(l!==location.pathname?n.observe(o):lr.add(l))})})};At(r);const s=bi();Ye(()=>s.path,r),Vn(()=>{n&&n.disconnect()})}export{Ql as $,Vn as A,nu as B,jl as C,ka as D,eu as E,me as F,ou as G,jr as H,Iu as I,se as J,tu as K,gi as L,bi as M,mc as N,Ct as O,Tu as P,Su as Q,Rr as R,In as S,ni as T,Ou as U,fu as V,Pn as W,su as X,Eu as Y,Ru as Z,_u as _,Qo as a,lu as a0,gu as a1,pu as a2,cu as a3,vu as a4,bu as a5,wu as a6,Vu as a7,Ba as a8,Pu as a9,Mu as aA,Ha as aa,Fu as ab,$u as ac,ut as ad,yu as ae,Nu as af,Da as ag,Du as ah,ju as ai,Hu as aj,wr as ak,yt as al,Gr as am,xu as an,Lu as ao,Au as ap,Cu as aq,Ka as ar,Qe as as,No as at,ru as au,hu as av,de as aw,au as ax,Pt as ay,mu as az,Xo as b,uu as c,Br as d,du as e,$a as f,qs as g,ie as h,Oa as i,Ce as j,re as k,At as l,Jo as m,Lr as n,Go as o,bo as p,Qa as q,iu as r,Za as s,Ja as t,ja as u,La as v,wl as w,ma as x,Ye as y,kr as z}; diff --git a/docs/.vitepress/dist/assets/chunks/pdfobject.73DqFYM1.js b/docs/.vitepress/dist/assets/chunks/pdfobject.73DqFYM1.js new file mode 100644 index 0000000..7211ae6 --- /dev/null +++ b/docs/.vitepress/dist/assets/chunks/pdfobject.73DqFYM1.js @@ -0,0 +1,8 @@ +var N=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Q(f){return f&&f.__esModule&&Object.prototype.hasOwnProperty.call(f,"default")?f.default:f}var x={exports:{}};/** + * PDFObject v2.2.12 + * https://github.com/pipwerks/PDFObject + * @license + * Copyright (c) 2008-2023 Philip Hutchison + * MIT-style license: http://pipwerks.mit-license.org/ + * UMD module pattern from https://github.com/umdjs/umd/blob/master/templates/returnExports.js + */(function(f){(function(D,l){f.exports?f.exports=l():D.PDFObject=l()})(N,function(){if(typeof window>"u"||window.navigator===void 0||window.navigator.userAgent===void 0||window.navigator.mimeTypes===void 0)return!1;let D="2.2.12",l=window.navigator,u=window.navigator.userAgent,L="ActiveXObject"in window,R=window.Promise!==void 0,S=l.mimeTypes["application/pdf"]!==void 0,w=l.platform!==void 0&&l.platform==="MacIntel"&&l.maxTouchPoints!==void 0&&l.maxTouchPoints>1||/Mobi|Tablet|Android|iPad|iPhone/.test(u),A=!w&&l.vendor!==void 0&&/Apple/.test(l.vendor)&&/Safari/.test(u),E=!w&&/irefox/.test(u)&&u.split("rv:").length>1?parseInt(u.split("rv:")[1].split(".")[0],10)>18:!1,M=function(e){var t;try{t=new ActiveXObject(e)}catch{t=null}return t},I=!w&&(R||E||S||L&&function(){return!!(M("AcroPDF.PDF")||M("PDF.PdfCtrl"))}()),U=function(e){let t="",o;if(e){for(o in e)e.hasOwnProperty(o)&&(t+=encodeURIComponent(o)+"="+encodeURIComponent(e[o])+"&");t&&(t="#"+t,t=t.slice(0,t.length-1))}return t},F=function(e,t){return t||console.log("[PDFObject] "+e),!1},J=function(e){for(;e.firstChild;)e.removeChild(e.firstChild)},X=function(e){let t=document.body;return typeof e=="string"?t=document.querySelector(e):window.jQuery!==void 0&&e instanceof jQuery&&e.length?t=e.get(0):e.nodeType!==void 0&&e.nodeType===1&&(t=e),t},j=function(e,t,o,h,n,c,b,g,m,r,a){J(t);let d=o;if(e==="pdfjs"){let s=a.indexOf("?")!==-1?"&":"?";d=a+s+"file="+encodeURIComponent(o)+h}else d+=h;let p=e==="pdfjs"||e==="iframe"?"iframe":"embed",i=document.createElement(p);if(i.className="pdfobject",i.type="application/pdf",i.title=g,i.src=d,b&&(i.id=b),p==="iframe"&&(i.allow="fullscreen",i.frameborder="0"),!m){let s=p==="embed"?"overflow: auto;":"border: none;";t!==document.body?s+="width: "+n+"; height: "+c+";":s+="position: absolute; top: 0; right: 0; bottom: 0; left: 0; width: 100%; height: 100%;",i.style.cssText=s}let k=["className","type","title","src","style","id","allow","frameborder"];return r&&r.key&&k.indexOf(r.key)===-1&&i.setAttribute(r.key,typeof r.value<"u"?r.value:""),t.classList.add("pdfobject-container"),t.appendChild(i),t.getElementsByTagName(p)[0]},_=function(e,t,o){let h=t||!1,n=o||{},c=typeof n.id=="string"?n.id:"",b=n.page||!1,g=n.pdfOpenParams||{},m=typeof n.fallbackLink=="string"||typeof n.fallbackLink=="boolean"?n.fallbackLink:!0,r=n.width||"100%",a=n.height||"100%",d=n.title||"Embedded PDF",p=typeof n.assumptionMode=="boolean"?n.assumptionMode:!0,i=typeof n.forcePDFJS=="boolean"?n.forcePDFJS:!1,k=typeof n.supportRedirect=="boolean"?n.supportRedirect:!1,s=typeof n.omitInlineStyles=="boolean"?n.omitInlineStyles:!1,T=typeof n.suppressConsole=="boolean"?n.suppressConsole:!1,H=typeof n.forceIframe=="boolean"?n.forceIframe:!1,P=n.PDFJS_URL||!1,y=X(h),C="",v="",O=n.customAttribute||{},B="

This browser does not support inline PDFs. Please download the PDF to view it: Download PDF

";return typeof e!="string"?F("URL is not valid",T):y?(b&&(g.page=b),v=U(g),i&&P?j("pdfjs",y,e,v,r,a,c,d,s,O,P):I||p&&!w?j(H||k||A?"iframe":"embed",y,e,v,r,a,c,d,s,O):P?j("pdfjs",y,e,v,r,a,c,d,s,O,P):(m&&(C=typeof m=="string"?m:B,y.innerHTML=C.replace(/\[url\]/g,e)),F("This browser does not support embedded PDFs",T))):F("Target element cannot be determined",T)};return{embed:function(e,t,o){return _(e,t,o)},pdfobjectversion:function(){return D}(),supportsPDFs:function(){return I}()}})})(x);var q=x.exports;const K=Q(q);export{K as P}; diff --git a/docs/.vitepress/dist/assets/chunks/theme.BAGvGbCH.js b/docs/.vitepress/dist/assets/chunks/theme.BAGvGbCH.js new file mode 100644 index 0000000..4ec4506 --- /dev/null +++ b/docs/.vitepress/dist/assets/chunks/theme.BAGvGbCH.js @@ -0,0 +1,7 @@ +import{d as g,o as a,c as l,r as c,n as T,a as H,t as L,b as $,w as v,e as _,T as ve,_ as m,u as Ue,i as xe,f as Ge,g as he,h as M,j as q,k as b,l as G,m as d,p as r,q as E,s as D,v as x,x as ie,y as j,z as Q,A as pe,B as we,C as je,D as Re,E as R,F as I,G as B,H as Pe,I as ee,J as f,K as U,L as Ve,M as te,N as J,O as se,P as Ke,Q as le,R as qe,S as We,U as Le,V as Ye,W as Je,X as Xe,Y as Ze,Z as Se,$ as Me,a0 as Qe,a1 as et,a2 as tt,a3 as st}from"./framework.BaJ171t2.js";const ot=g({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(a(),l("span",{class:T(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[H(L(e.text),1)])],2))}}),nt={key:0,class:"VPBackdrop"},at=g({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(a(),$(ve,{name:"fade"},{default:v(()=>[e.show?(a(),l("div",nt)):_("",!0)]),_:1}))}}),rt=m(at,[["__scopeId","data-v-c79a1216"]]),P=Ue;function it(s,e){let t,o=!1;return()=>{t&&clearTimeout(t),o?t=setTimeout(s,e):(s(),(o=!0)&&setTimeout(()=>o=!1,e))}}function ce(s){return/^\//.test(s)?s:`/${s}`}function fe(s){const{pathname:e,search:t,hash:o,protocol:n}=new URL(s,"http://a.com");if(xe(s)||s.startsWith("#")||!n.startsWith("http")||!Ge(e))return s;const{site:i}=P(),u=e.endsWith("/")||e.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${o}`);return he(u)}const _e=M(q?location.hash:"");q&&window.addEventListener("hashchange",()=>{_e.value=location.hash});function W({removeCurrent:s=!0,correspondingLink:e=!1}={}){const{site:t,localeIndex:o,page:n,theme:i}=P(),u=b(()=>{var h,k;return{label:(h=t.value.locales[o.value])==null?void 0:h.label,link:((k=t.value.locales[o.value])==null?void 0:k.link)||(o.value==="root"?"/":`/${o.value}/`)}});return{localeLinks:b(()=>Object.entries(t.value.locales).flatMap(([h,k])=>s&&u.value.label===k.label?[]:{text:k.label,link:lt(k.link||(h==="root"?"/":`/${h}/`),i.value.i18nRouting!==!1&&e,n.value.relativePath.slice(u.value.link.length-1),!t.value.cleanUrls)+_e.value})),currentLang:u}}function lt(s,e,t,o){return e?s.replace(/\/$/,"")+ce(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,o?".html":"")):s}const ct=s=>(E("data-v-f87ff6e4"),s=s(),D(),s),ut={class:"NotFound"},dt={class:"code"},vt={class:"title"},ht=ct(()=>d("div",{class:"divider"},null,-1)),pt={class:"quote"},ft={class:"action"},_t=["href","aria-label"],mt=g({__name:"NotFound",setup(s){const{site:e,theme:t}=P(),{localeLinks:o}=W({removeCurrent:!1}),n=M("/");return G(()=>{var u;const i=window.location.pathname.replace(e.value.base,"").replace(/(^.*?\/).*$/,"/$1");o.value.length&&(n.value=((u=o.value.find(({link:p})=>p.startsWith(i)))==null?void 0:u.link)||o.value[0].link)}),(i,u)=>{var p,h,k,w,y;return a(),l("div",ut,[d("p",dt,L(((p=r(t).notFound)==null?void 0:p.code)??"404"),1),d("h1",vt,L(((h=r(t).notFound)==null?void 0:h.title)??"PAGE NOT FOUND"),1),ht,d("blockquote",pt,L(((k=r(t).notFound)==null?void 0:k.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),d("div",ft,[d("a",{class:"link",href:r(he)(n.value),"aria-label":((w=r(t).notFound)==null?void 0:w.linkLabel)??"go to home"},L(((y=r(t).notFound)==null?void 0:y.linkText)??"Take me home"),9,_t)])])}}}),gt=m(mt,[["__scopeId","data-v-f87ff6e4"]]);function Ce(s,e){if(Array.isArray(s))return X(s);if(s==null)return[];e=ce(e);const t=Object.keys(s).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>e.startsWith(ce(n))),o=t?s[t]:[];return Array.isArray(o)?X(o):X(o.items,o.base)}function $t(s){const e=[];let t=0;for(const o in s){const n=s[o];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function kt(s){const e=[];function t(o){for(const n of o)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(s),e}function ue(s,e){return Array.isArray(e)?e.some(t=>ue(s,t)):x(s,e.link)?!0:e.items?ue(s,e.items):!1}function X(s,e){return[...s].map(t=>{const o={...t},n=o.base||e;return n&&o.link&&(o.link=n+o.link),o.items&&(o.items=X(o.items,n)),o})}function F(){const{frontmatter:s,page:e,theme:t}=P(),o=ie("(min-width: 960px)"),n=M(!1),i=b(()=>{const A=t.value.sidebar,C=e.value.relativePath;return A?Ce(A,C):[]}),u=M(i.value);j(i,(A,C)=>{JSON.stringify(A)!==JSON.stringify(C)&&(u.value=i.value)});const p=b(()=>s.value.sidebar!==!1&&u.value.length>0&&s.value.layout!=="home"),h=b(()=>k?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),k=b(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),w=b(()=>p.value&&o.value),y=b(()=>p.value?$t(u.value):[]);function V(){n.value=!0}function S(){n.value=!1}function N(){n.value?S():V()}return{isOpen:n,sidebar:u,sidebarGroups:y,hasSidebar:p,hasAside:k,leftAside:h,isSidebarEnabled:w,open:V,close:S,toggle:N}}function bt(s,e){let t;Q(()=>{t=s.value?document.activeElement:void 0}),G(()=>{window.addEventListener("keyup",o)}),pe(()=>{window.removeEventListener("keyup",o)});function o(n){n.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}function yt(s){const{page:e}=P(),t=M(!1),o=b(()=>s.value.collapsed!=null),n=b(()=>!!s.value.link),i=M(!1),u=()=>{i.value=x(e.value.relativePath,s.value.link)};j([e,s,_e],u),G(u);const p=b(()=>i.value?!0:s.value.items?ue(e.value.relativePath,s.value.items):!1),h=b(()=>!!(s.value.items&&s.value.items.length));Q(()=>{t.value=!!(o.value&&s.value.collapsed)}),we(()=>{(i.value||p.value)&&(t.value=!1)});function k(){o.value&&(t.value=!t.value)}return{collapsed:t,collapsible:o,isLink:n,isActiveLink:i,hasActiveLink:p,hasChildren:h,toggle:k}}function wt(){const{hasSidebar:s}=F(),e=ie("(min-width: 960px)"),t=ie("(min-width: 1280px)");return{isAsideEnabled:b(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const de=[];function Te(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function me(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const o=Number(t.tagName[1]);return{element:t,title:Pt(t),link:"#"+t.id,level:o}});return Vt(e,s)}function Pt(s){let e="";for(const t of s.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Vt(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[o,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;s=s.filter(u=>u.level>=o&&u.level<=n),de.length=0;for(const{element:u,link:p}of s)de.push({element:u,link:p});const i=[];e:for(let u=0;u=0;h--){const k=s[h];if(k.level{requestAnimationFrame(i),window.addEventListener("scroll",o)}),je(()=>{u(location.hash)}),pe(()=>{window.removeEventListener("scroll",o)});function i(){if(!t.value)return;const p=window.scrollY,h=window.innerHeight,k=document.body.offsetHeight,w=Math.abs(p+h-k)<1,y=de.map(({element:S,link:N})=>({link:N,top:St(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,N)=>S.top-N.top);if(!y.length){u(null);return}if(p<1){u(null);return}if(w){u(y[y.length-1].link);return}let V=null;for(const{link:S,top:N}of y){if(N>p+Re()+4)break;V=S}u(V)}function u(p){n&&n.classList.remove("active"),p==null?n=null:n=s.value.querySelector(`a[href="${decodeURIComponent(p)}"]`);const h=n;h?(h.classList.add("active"),e.value.style.top=h.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function St(s){let e=0;for(;s!==document.body;){if(s===null)return NaN;e+=s.offsetTop,s=s.offsetParent}return e}const Mt=["href","title"],Ct=g({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(s){function e({target:t}){const o=t.href.split("#")[1],n=document.getElementById(decodeURIComponent(o));n==null||n.focus({preventScroll:!0})}return(t,o)=>{const n=R("VPDocOutlineItem",!0);return a(),l("ul",{class:T(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),l(I,null,B(t.headers,({children:i,link:u,title:p})=>(a(),l("li",null,[d("a",{class:"outline-link",href:u,onClick:e,title:p},L(p),9,Mt),i!=null&&i.length?(a(),$(n,{key:0,headers:i},null,8,["headers"])):_("",!0)]))),256))],2)}}}),Ie=m(Ct,[["__scopeId","data-v-b933a997"]]),Tt=s=>(E("data-v-935f8a84"),s=s(),D(),s),It={class:"content"},Nt={class:"outline-title",role:"heading","aria-level":"2"},At={"aria-labelledby":"doc-outline-aria-label"},Bt=Tt(()=>d("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),Ht=g({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=P(),o=Pe([]);ee(()=>{o.value=me(e.value.outline??t.value.outline)});const n=M(),i=M();return Lt(n,i),(u,p)=>(a(),l("div",{class:T(["VPDocAsideOutline",{"has-outline":o.value.length>0}]),ref_key:"container",ref:n,role:"navigation"},[d("div",It,[d("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),d("div",Nt,L(r(Te)(r(t))),1),d("nav",At,[Bt,f(Ie,{headers:o.value,root:!0},null,8,["headers"])])])],2))}}),zt=m(Ht,[["__scopeId","data-v-935f8a84"]]),Et={class:"VPDocAsideCarbonAds"},Dt=g({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,o)=>(a(),l("div",Et,[f(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ft=s=>(E("data-v-3f215769"),s=s(),D(),s),Ot={class:"VPDocAside"},Ut=Ft(()=>d("div",{class:"spacer"},null,-1)),xt=g({__name:"VPDocAside",setup(s){const{theme:e}=P();return(t,o)=>(a(),l("div",Ot,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),f(zt),c(t.$slots,"aside-outline-after",{},void 0,!0),Ut,c(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),$(Dt,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):_("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Gt=m(xt,[["__scopeId","data-v-3f215769"]]);function jt(){const{theme:s,page:e}=P();return b(()=>{const{text:t="Edit this page",pattern:o=""}=s.value.editLink||{};let n;return typeof o=="function"?n=o(e.value):n=o.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Rt(){const{page:s,theme:e,frontmatter:t}=P();return b(()=>{var h,k,w,y,V,S,N,A;const o=Ce(e.value.sidebar,s.value.relativePath),n=kt(o),i=n.findIndex(C=>x(s.value.relativePath,C.link)),u=((h=e.value.docFooter)==null?void 0:h.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((k=e.value.docFooter)==null?void 0:k.next)===!1&&!t.value.next||t.value.next===!1;return{prev:u?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((w=n[i-1])==null?void 0:w.docFooterText)??((y=n[i-1])==null?void 0:y.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((V=n[i-1])==null?void 0:V.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((S=n[i+1])==null?void 0:S.docFooterText)??((N=n[i+1])==null?void 0:N.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((A=n[i+1])==null?void 0:A.link)}}})}const Kt={},qt={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Wt=d("path",{d:"M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"},null,-1),Yt=d("path",{d:"M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"},null,-1),Jt=[Wt,Yt];function Xt(s,e){return a(),l("svg",qt,Jt)}const Zt=m(Kt,[["render",Xt]]),z=g({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=b(()=>e.tag??(e.href?"a":"span")),o=b(()=>e.href&&Ve.test(e.href));return(n,i)=>(a(),$(U(t.value),{class:T(["VPLink",{link:n.href,"vp-external-link-icon":o.value,"no-icon":n.noIcon}]),href:n.href?r(fe)(n.href):void 0,target:n.target??(o.value?"_blank":void 0),rel:n.rel??(o.value?"noreferrer":void 0)},{default:v(()=>[c(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Qt={class:"VPLastUpdated"},es=["datetime"],ts=g({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,frontmatter:o,lang:n}=P(),i=b(()=>new Date(o.value.lastUpdated??t.value.lastUpdated)),u=b(()=>i.value.toISOString()),p=M("");return G(()=>{Q(()=>{var h,k,w;p.value=new Intl.DateTimeFormat((k=(h=e.value.lastUpdated)==null?void 0:h.formatOptions)!=null&&k.forceLocale?n.value:void 0,((w=e.value.lastUpdated)==null?void 0:w.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(i.value)})}),(h,k)=>{var w;return a(),l("p",Qt,[H(L(((w=r(e).lastUpdated)==null?void 0:w.text)||r(e).lastUpdatedText||"Last updated")+": ",1),d("time",{datetime:u.value},L(p.value),9,es)])}}}),ss=m(ts,[["__scopeId","data-v-7e05ebdb"]]),os={key:0,class:"VPDocFooter"},ns={key:0,class:"edit-info"},as={key:0,class:"edit-link"},rs={key:1,class:"last-updated"},is={key:1,class:"prev-next"},ls={class:"pager"},cs=["innerHTML"],us=["innerHTML"],ds={class:"pager"},vs=["innerHTML"],hs=["innerHTML"],ps=g({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:o}=P(),n=jt(),i=Rt(),u=b(()=>e.value.editLink&&o.value.editLink!==!1),p=b(()=>t.value.lastUpdated&&o.value.lastUpdated!==!1),h=b(()=>u.value||p.value||i.value.prev||i.value.next);return(k,w)=>{var y,V,S,N;return h.value?(a(),l("footer",os,[c(k.$slots,"doc-footer-before",{},void 0,!0),u.value||p.value?(a(),l("div",ns,[u.value?(a(),l("div",as,[f(z,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:v(()=>[f(Zt,{class:"edit-link-icon","aria-label":"edit icon"}),H(" "+L(r(n).text),1)]),_:1},8,["href"])])):_("",!0),p.value?(a(),l("div",rs,[f(ss)])):_("",!0)])):_("",!0),(y=r(i).prev)!=null&&y.link||(V=r(i).next)!=null&&V.link?(a(),l("nav",is,[d("div",ls,[(S=r(i).prev)!=null&&S.link?(a(),$(z,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:v(()=>{var A;return[d("span",{class:"desc",innerHTML:((A=r(e).docFooter)==null?void 0:A.prev)||"Previous page"},null,8,cs),d("span",{class:"title",innerHTML:r(i).prev.text},null,8,us)]}),_:1},8,["href"])):_("",!0)]),d("div",ds,[(N=r(i).next)!=null&&N.link?(a(),$(z,{key:0,class:"pager-link next",href:r(i).next.link},{default:v(()=>{var A;return[d("span",{class:"desc",innerHTML:((A=r(e).docFooter)==null?void 0:A.next)||"Next page"},null,8,vs),d("span",{class:"title",innerHTML:r(i).next.text},null,8,hs)]}),_:1},8,["href"])):_("",!0)])])):_("",!0)])):_("",!0)}}}),fs=m(ps,[["__scopeId","data-v-48f9bb55"]]),_s=s=>(E("data-v-39a288b8"),s=s(),D(),s),ms={class:"container"},gs=_s(()=>d("div",{class:"aside-curtain"},null,-1)),$s={class:"aside-container"},ks={class:"aside-content"},bs={class:"content"},ys={class:"content-container"},ws={class:"main"},Ps=g({__name:"VPDoc",setup(s){const{theme:e}=P(),t=te(),{hasSidebar:o,hasAside:n,leftAside:i}=F(),u=b(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(p,h)=>{const k=R("Content");return a(),l("div",{class:T(["VPDoc",{"has-sidebar":r(o),"has-aside":r(n)}])},[c(p.$slots,"doc-top",{},void 0,!0),d("div",ms,[r(n)?(a(),l("div",{key:0,class:T(["aside",{"left-aside":r(i)}])},[gs,d("div",$s,[d("div",ks,[f(Gt,null,{"aside-top":v(()=>[c(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[c(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[c(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[c(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[c(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[c(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):_("",!0),d("div",bs,[d("div",ys,[c(p.$slots,"doc-before",{},void 0,!0),d("main",ws,[f(k,{class:T(["vp-doc",[u.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),f(fs,null,{"doc-footer-before":v(()=>[c(p.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(p.$slots,"doc-after",{},void 0,!0)])])]),c(p.$slots,"doc-bottom",{},void 0,!0)],2)}}}),Vs=m(Ps,[["__scopeId","data-v-39a288b8"]]),Ls=g({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(s){const e=s,t=b(()=>e.href&&Ve.test(e.href)),o=b(()=>e.tag||e.href?"a":"button");return(n,i)=>(a(),$(U(o.value),{class:T(["VPButton",[n.size,n.theme]]),href:n.href?r(fe)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:v(()=>[H(L(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),Ss=m(Ls,[["__scopeId","data-v-cad61b99"]]),Ms=["src","alt"],Cs=g({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const o=R("VPImage",!0);return e.image?(a(),l(I,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),l("img",J({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(he)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,Ms)):(a(),l(I,{key:1},[f(o,J({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),f(o,J({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):_("",!0)}}}),Z=m(Cs,[["__scopeId","data-v-8426fc1a"]]),Ts=s=>(E("data-v-303bb580"),s=s(),D(),s),Is={class:"container"},Ns={class:"main"},As={key:0,class:"name"},Bs=["innerHTML"],Hs=["innerHTML"],zs=["innerHTML"],Es={key:0,class:"actions"},Ds={key:0,class:"image"},Fs={class:"image-container"},Os=Ts(()=>d("div",{class:"image-bg"},null,-1)),Us=g({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=se("hero-image-slot-exists");return(t,o)=>(a(),l("div",{class:T(["VPHero",{"has-image":t.image||r(e)}])},[d("div",Is,[d("div",Ns,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),l("h1",As,[d("span",{innerHTML:t.name,class:"clip"},null,8,Bs)])):_("",!0),t.text?(a(),l("p",{key:1,innerHTML:t.text,class:"text"},null,8,Hs)):_("",!0),t.tagline?(a(),l("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,zs)):_("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),l("div",Es,[(a(!0),l(I,null,B(t.actions,n=>(a(),l("div",{key:n.link,class:"action"},[f(Ss,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):_("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),l("div",Ds,[d("div",Fs,[Os,c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),$(Z,{key:0,class:"image-src",image:t.image},null,8,["image"])):_("",!0)],!0)])])):_("",!0)])],2))}}),xs=m(Us,[["__scopeId","data-v-303bb580"]]),Gs=g({__name:"VPHomeHero",setup(s){const{frontmatter:e}=P();return(t,o)=>r(e).hero?(a(),$(xs,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":v(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":v(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":v(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":v(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":v(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):_("",!0)}}),js={},Rs={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Ks=d("path",{d:"M19.9,12.4c0.1-0.2,0.1-0.5,0-0.8c-0.1-0.1-0.1-0.2-0.2-0.3l-7-7c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l5.3,5.3H5c-0.6,0-1,0.4-1,1s0.4,1,1,1h11.6l-5.3,5.3c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l7-7C19.8,12.6,19.9,12.5,19.9,12.4z"},null,-1),qs=[Ks];function Ws(s,e){return a(),l("svg",Rs,qs)}const Ys=m(js,[["render",Ws]]),Js={class:"box"},Xs={key:0,class:"icon"},Zs=["innerHTML"],Qs=["innerHTML"],eo=["innerHTML"],to={key:4,class:"link-text"},so={class:"link-text-value"},oo=g({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(a(),$(z,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[d("article",Js,[typeof e.icon=="object"&&e.icon.wrap?(a(),l("div",Xs,[f(Z,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),$(Z,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),l("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Zs)):_("",!0),d("h2",{class:"title",innerHTML:e.title},null,8,Qs),e.details?(a(),l("p",{key:3,class:"details",innerHTML:e.details},null,8,eo)):_("",!0),e.linkText?(a(),l("div",to,[d("p",so,[H(L(e.linkText)+" ",1),f(Ys,{class:"link-text-icon"})])])):_("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),no=m(oo,[["__scopeId","data-v-33204567"]]),ao={key:0,class:"VPFeatures"},ro={class:"container"},io={class:"items"},lo=g({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=b(()=>{const o=e.features.length;if(o){if(o===2)return"grid-2";if(o===3)return"grid-3";if(o%3===0)return"grid-6";if(o>3)return"grid-4"}else return});return(o,n)=>o.features?(a(),l("div",ao,[d("div",ro,[d("div",io,[(a(!0),l(I,null,B(o.features,i=>(a(),l("div",{key:i.title,class:T(["item",[t.value]])},[f(no,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):_("",!0)}}),co=m(lo,[["__scopeId","data-v-a6181336"]]),uo=g({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=P();return(t,o)=>r(e).features?(a(),$(co,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):_("",!0)}}),vo={class:"VPHome"},ho=g({__name:"VPHome",setup(s){return(e,t)=>{const o=R("Content");return a(),l("div",vo,[c(e.$slots,"home-hero-before",{},void 0,!0),f(Gs,null,{"home-hero-info-before":v(()=>[c(e.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[c(e.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[c(e.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[c(e.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[c(e.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(e.$slots,"home-hero-after",{},void 0,!0),c(e.$slots,"home-features-before",{},void 0,!0),f(uo),c(e.$slots,"home-features-after",{},void 0,!0),f(o)])}}}),po=m(ho,[["__scopeId","data-v-c71b6826"]]),fo={},_o={class:"VPPage"};function mo(s,e){const t=R("Content");return a(),l("div",_o,[c(s.$slots,"page-top"),f(t),c(s.$slots,"page-bottom")])}const go=m(fo,[["render",mo]]),$o=g({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=P(),{hasSidebar:o}=F();return(n,i)=>(a(),l("div",{class:T(["VPContent",{"has-sidebar":r(o),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?c(n.$slots,"not-found",{key:0},()=>[f(gt)],!0):r(t).layout==="page"?(a(),$(go,{key:1},{"page-top":v(()=>[c(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[c(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),$(po,{key:2},{"home-hero-before":v(()=>[c(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[c(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[c(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[c(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),$(U(r(t).layout),{key:3})):(a(),$(Vs,{key:4},{"doc-top":v(()=>[c(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[c(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[c(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[c(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[c(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[c(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[c(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[c(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[c(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[c(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[c(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),ko=m($o,[["__scopeId","data-v-1428d186"]]),bo={class:"container"},yo=["innerHTML"],wo=["innerHTML"],Po=g({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=P(),{hasSidebar:o}=F();return(n,i)=>r(e).footer&&r(t).footer!==!1?(a(),l("footer",{key:0,class:T(["VPFooter",{"has-sidebar":r(o)}])},[d("div",bo,[r(e).footer.message?(a(),l("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,yo)):_("",!0),r(e).footer.copyright?(a(),l("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,wo)):_("",!0)])],2)):_("",!0)}}),Vo=m(Po,[["__scopeId","data-v-e315a0ad"]]);function Ne(){const{theme:s,frontmatter:e}=P(),t=Pe([]),o=b(()=>t.value.length>0);return ee(()=>{t.value=me(e.value.outline??s.value.outline)}),{headers:t,hasLocalNav:o}}const Lo={},So={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Mo=d("path",{d:"M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"},null,-1),Co=[Mo];function To(s,e){return a(),l("svg",So,Co)}const Ae=m(Lo,[["render",To]]),Io={class:"header"},No={class:"outline"},Ao=g({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=P(),o=M(!1),n=M(0),i=M(),u=M();Ke(i,()=>{o.value=!1}),le("Escape",()=>{o.value=!1}),ee(()=>{o.value=!1});function p(){o.value=!o.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function h(w){w.target.classList.contains("outline-link")&&(u.value&&(u.value.style.transition="none"),We(()=>{o.value=!1}))}function k(){o.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(w,y)=>(a(),l("div",{class:"VPLocalNavOutlineDropdown",style:qe({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[w.headers.length>0?(a(),l("button",{key:0,onClick:p,class:T({open:o.value})},[H(L(r(Te)(r(t)))+" ",1),f(Ae,{class:"icon"})],2)):(a(),l("button",{key:1,onClick:k},L(r(t).returnToTopLabel||"Return to top"),1)),f(ve,{name:"flyout"},{default:v(()=>[o.value?(a(),l("div",{key:0,ref_key:"items",ref:u,class:"items",onClick:h},[d("div",Io,[d("a",{class:"top-link",href:"#",onClick:k},L(r(t).returnToTopLabel||"Return to top"),1)]),d("div",No,[f(Ie,{headers:w.headers},null,8,["headers"])])],512)):_("",!0)]),_:1})],4))}}),Bo=m(Ao,[["__scopeId","data-v-af18c0d5"]]),Ho={},zo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Eo=d("path",{d:"M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"},null,-1),Do=d("path",{d:"M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"},null,-1),Fo=d("path",{d:"M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"},null,-1),Oo=d("path",{d:"M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"},null,-1),Uo=[Eo,Do,Fo,Oo];function xo(s,e){return a(),l("svg",zo,Uo)}const Go=m(Ho,[["render",xo]]),jo={class:"container"},Ro=["aria-expanded"],Ko={class:"menu-text"},qo=g({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=P(),{hasSidebar:o}=F(),{headers:n}=Ne(),{y:i}=Le(),u=M(0);G(()=>{u.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),ee(()=>{n.value=me(t.value.outline??e.value.outline)});const p=b(()=>n.value.length===0),h=b(()=>p.value&&!o.value),k=b(()=>({VPLocalNav:!0,"has-sidebar":o.value,empty:p.value,fixed:h.value}));return(w,y)=>r(t).layout!=="home"&&(!h.value||r(i)>=u.value)?(a(),l("div",{key:0,class:T(k.value)},[d("div",jo,[r(o)?(a(),l("button",{key:0,class:"menu","aria-expanded":w.open,"aria-controls":"VPSidebarNav",onClick:y[0]||(y[0]=V=>w.$emit("open-menu"))},[f(Go,{class:"menu-icon"}),d("span",Ko,L(r(e).sidebarMenuLabel||"Menu"),1)],8,Ro)):_("",!0),f(Bo,{headers:r(n),navHeight:u.value},null,8,["headers","navHeight"])])],2)):_("",!0)}}),Wo=m(qo,[["__scopeId","data-v-0282ae07"]]);function Yo(){const s=M(!1);function e(){s.value=!0,window.addEventListener("resize",n)}function t(){s.value=!1,window.removeEventListener("resize",n)}function o(){s.value?t():e()}function n(){window.outerWidth>=768&&t()}const i=te();return j(()=>i.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:o}}const Jo={},Xo={class:"VPSwitch",type:"button",role:"switch"},Zo={class:"check"},Qo={key:0,class:"icon"};function en(s,e){return a(),l("button",Xo,[d("span",Zo,[s.$slots.default?(a(),l("span",Qo,[c(s.$slots,"default",{},void 0,!0)])):_("",!0)])])}const tn=m(Jo,[["render",en],["__scopeId","data-v-b1685198"]]),sn={},on={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},nn=d("path",{d:"M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"},null,-1),an=[nn];function rn(s,e){return a(),l("svg",on,an)}const ln=m(sn,[["render",rn]]),cn={},un={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},dn=Ye('',9),vn=[dn];function hn(s,e){return a(),l("svg",un,vn)}const pn=m(cn,[["render",hn]]),fn=g({__name:"VPSwitchAppearance",setup(s){const{isDark:e,theme:t}=P(),o=se("toggle-appearance",()=>{e.value=!e.value}),n=b(()=>e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme");return(i,u)=>(a(),$(tn,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(o)},{default:v(()=>[f(pn,{class:"sun"}),f(ln,{class:"moon"})]),_:1},8,["title","aria-checked","onClick"]))}}),ge=m(fn,[["__scopeId","data-v-1736f215"]]),_n={key:0,class:"VPNavBarAppearance"},mn=g({__name:"VPNavBarAppearance",setup(s){const{site:e}=P();return(t,o)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),l("div",_n,[f(ge)])):_("",!0)}}),gn=m(mn,[["__scopeId","data-v-e6aabb21"]]),$e=M();let Be=!1,re=0;function $n(s){const e=M(!1);if(q){!Be&&kn(),re++;const t=j($e,o=>{var n,i,u;o===s.el.value||(n=s.el.value)!=null&&n.contains(o)?(e.value=!0,(i=s.onFocus)==null||i.call(s)):(e.value=!1,(u=s.onBlur)==null||u.call(s))});pe(()=>{t(),re--,re||bn()})}return Je(e)}function kn(){document.addEventListener("focusin",He),Be=!0,$e.value=document.activeElement}function bn(){document.removeEventListener("focusin",He)}function He(){$e.value=document.activeElement}const yn={},wn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Pn=d("path",{d:"M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"},null,-1),Vn=[Pn];function Ln(s,e){return a(),l("svg",wn,Vn)}const ze=m(yn,[["render",Ln]]),Sn={},Mn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Cn=d("circle",{cx:"12",cy:"12",r:"2"},null,-1),Tn=d("circle",{cx:"19",cy:"12",r:"2"},null,-1),In=d("circle",{cx:"5",cy:"12",r:"2"},null,-1),Nn=[Cn,Tn,In];function An(s,e){return a(),l("svg",Mn,Nn)}const Bn=m(Sn,[["render",An]]),Hn={class:"VPMenuLink"},zn=g({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=P();return(t,o)=>(a(),l("div",Hn,[f(z,{class:T({active:r(x)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:v(()=>[H(L(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),oe=m(zn,[["__scopeId","data-v-43f1e123"]]),En={class:"VPMenuGroup"},Dn={key:0,class:"title"},Fn=g({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),l("div",En,[e.text?(a(),l("p",Dn,L(e.text),1)):_("",!0),(a(!0),l(I,null,B(e.items,o=>(a(),l(I,null,["link"in o?(a(),$(oe,{key:0,item:o},null,8,["item"])):_("",!0)],64))),256))]))}}),On=m(Fn,[["__scopeId","data-v-69e747b5"]]),Un={class:"VPMenu"},xn={key:0,class:"items"},Gn=g({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(a(),l("div",Un,[e.items?(a(),l("div",xn,[(a(!0),l(I,null,B(e.items,o=>(a(),l(I,{key:o.text},["link"in o?(a(),$(oe,{key:0,item:o},null,8,["item"])):(a(),$(On,{key:1,text:o.text,items:o.items},null,8,["text","items"]))],64))),128))])):_("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),jn=m(Gn,[["__scopeId","data-v-e7ea1737"]]),Rn=["aria-expanded","aria-label"],Kn={key:0,class:"text"},qn=["innerHTML"],Wn={class:"menu"},Yn=g({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=M(!1),t=M();$n({el:t,onBlur:o});function o(){e.value=!1}return(n,i)=>(a(),l("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=u=>e.value=!0),onMouseleave:i[2]||(i[2]=u=>e.value=!1)},[d("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:i[0]||(i[0]=u=>e.value=!e.value)},[n.button||n.icon?(a(),l("span",Kn,[n.icon?(a(),$(U(n.icon),{key:0,class:"option-icon"})):_("",!0),n.button?(a(),l("span",{key:1,innerHTML:n.button},null,8,qn)):_("",!0),f(ze,{class:"text-icon"})])):(a(),$(Bn,{key:1,class:"icon"}))],8,Rn),d("div",Wn,[f(jn,{items:n.items},{default:v(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ke=m(Yn,[["__scopeId","data-v-9c007e85"]]),Jn={discord:'Discord',facebook:'Facebook',github:'GitHub',instagram:'Instagram',linkedin:'LinkedIn',mastodon:'Mastodon',npm:'npm',slack:'Slack',twitter:'Twitter',x:'X',youtube:'YouTube'},Xn=["href","aria-label","innerHTML"],Zn=g({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=b(()=>typeof e.icon=="object"?e.icon.svg:Jn[e.icon]);return(o,n)=>(a(),l("a",{class:"VPSocialLink no-icon",href:o.link,"aria-label":o.ariaLabel??(typeof o.icon=="string"?o.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,Xn))}}),Qn=m(Zn,[["__scopeId","data-v-f80f8133"]]),ea={class:"VPSocialLinks"},ta=g({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),l("div",ea,[(a(!0),l(I,null,B(e.links,({link:o,icon:n,ariaLabel:i})=>(a(),$(Qn,{key:o,icon:n,link:o,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),be=m(ta,[["__scopeId","data-v-7bc22406"]]),sa={key:0,class:"group translations"},oa={class:"trans-title"},na={key:1,class:"group"},aa={class:"item appearance"},ra={class:"label"},ia={class:"appearance-action"},la={key:2,class:"group"},ca={class:"item social-links"},ua=g({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=P(),{localeLinks:o,currentLang:n}=W({correspondingLink:!0}),i=b(()=>o.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(u,p)=>i.value?(a(),$(ke,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[r(o).length&&r(n).label?(a(),l("div",sa,[d("p",oa,L(r(n).label),1),(a(!0),l(I,null,B(r(o),h=>(a(),$(oe,{key:h.link,item:h},null,8,["item"]))),128))])):_("",!0),r(e).appearance&&r(e).appearance!=="force-dark"?(a(),l("div",na,[d("div",aa,[d("p",ra,L(r(t).darkModeSwitchLabel||"Appearance"),1),d("div",ia,[f(ge)])])])):_("",!0),r(t).socialLinks?(a(),l("div",la,[d("div",ca,[f(be,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):_("",!0)]),_:1})):_("",!0)}}),da=m(ua,[["__scopeId","data-v-d0bd9dde"]]),va=s=>(E("data-v-e5dd9c1c"),s=s(),D(),s),ha=["aria-expanded"],pa=va(()=>d("span",{class:"container"},[d("span",{class:"top"}),d("span",{class:"middle"}),d("span",{class:"bottom"})],-1)),fa=[pa],_a=g({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(a(),l("button",{type:"button",class:T(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=o=>e.$emit("click"))},fa,10,ha))}}),ma=m(_a,[["__scopeId","data-v-e5dd9c1c"]]),ga=["innerHTML"],$a=g({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=P();return(t,o)=>(a(),$(z,{class:T({VPNavBarMenuLink:!0,active:r(x)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:v(()=>[d("span",{innerHTML:t.item.text},null,8,ga)]),_:1},8,["class","href","target","rel"]))}}),ka=m($a,[["__scopeId","data-v-42ef59de"]]),ba=g({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=P(),o=i=>"link"in i?x(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(o),n=b(()=>o(e.item));return(i,u)=>(a(),$(ke,{class:T({VPNavBarMenuGroup:!0,active:r(x)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||n.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),ya=s=>(E("data-v-7f418b0f"),s=s(),D(),s),wa={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Pa=ya(()=>d("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),Va=g({__name:"VPNavBarMenu",setup(s){const{theme:e}=P();return(t,o)=>r(e).nav?(a(),l("nav",wa,[Pa,(a(!0),l(I,null,B(r(e).nav,n=>(a(),l(I,{key:n.text},["link"in n?(a(),$(ka,{key:0,item:n},null,8,["item"])):(a(),$(ba,{key:1,item:n},null,8,["item"]))],64))),128))])):_("",!0)}}),La=m(Va,[["__scopeId","data-v-7f418b0f"]]);function Sa(s){const{localeIndex:e,theme:t}=P();function o(n){var N,A,C;const i=n.split("."),u=(N=t.value.search)==null?void 0:N.options,p=u&&typeof u=="object",h=p&&((C=(A=u.locales)==null?void 0:A[e.value])==null?void 0:C.translations)||null,k=p&&u.translations||null;let w=h,y=k,V=s;const S=i.pop();for(const Y of i){let O=null;const K=V==null?void 0:V[Y];K&&(O=V=K);const ne=y==null?void 0:y[Y];ne&&(O=y=ne);const ae=w==null?void 0:w[Y];ae&&(O=w=ae),K||(V=O),ne||(y=O),ae||(w=O)}return(w==null?void 0:w[S])??(y==null?void 0:y[S])??(V==null?void 0:V[S])??""}return o}const Ma=["aria-label"],Ca={class:"DocSearch-Button-Container"},Ta=d("svg",{class:"DocSearch-Search-Icon",width:"20",height:"20",viewBox:"0 0 20 20","aria-label":"search icon"},[d("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1),Ia={class:"DocSearch-Button-Placeholder"},Na=d("span",{class:"DocSearch-Button-Keys"},[d("kbd",{class:"DocSearch-Button-Key"}),d("kbd",{class:"DocSearch-Button-Key"},"K")],-1),ye=g({__name:"VPNavBarSearchButton",setup(s){const t=Sa({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(o,n)=>(a(),l("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[d("span",Ca,[Ta,d("span",Ia,L(r(t)("button.buttonText")),1)]),Na],8,Ma))}}),Aa={class:"VPNavBarSearch"},Ba={id:"local-search"},Ha={key:1,id:"docsearch"},za=g({__name:"VPNavBarSearch",setup(s){const e=Xe(()=>Ze(()=>import("./VPLocalSearchBox.CFIO9gVL.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:o}=P(),n=M(!1),i=M(!1);G(()=>{});function u(){n.value||(n.value=!0,setTimeout(p,16))}function p(){const y=new Event("keydown");y.key="k",y.metaKey=!0,window.dispatchEvent(y),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||p()},16)}function h(y){const V=y.target,S=V.tagName;return V.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const k=M(!1);le("k",y=>{(y.ctrlKey||y.metaKey)&&(y.preventDefault(),k.value=!0)}),le("/",y=>{h(y)||(y.preventDefault(),k.value=!0)});const w="local";return(y,V)=>{var S;return a(),l("div",Aa,[r(w)==="local"?(a(),l(I,{key:0},[k.value?(a(),$(r(e),{key:0,onClose:V[0]||(V[0]=N=>k.value=!1)})):_("",!0),d("div",Ba,[f(ye,{onClick:V[1]||(V[1]=N=>k.value=!0)})])],64)):r(w)==="algolia"?(a(),l(I,{key:1},[n.value?(a(),$(r(t),{key:0,algolia:((S=r(o).search)==null?void 0:S.options)??r(o).algolia,onVnodeBeforeMount:V[2]||(V[2]=N=>i.value=!0)},null,8,["algolia"])):_("",!0),i.value?_("",!0):(a(),l("div",Ha,[f(ye,{onClick:u})]))],64)):_("",!0)])}}}),Ea=g({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=P();return(t,o)=>r(e).socialLinks?(a(),$(be,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):_("",!0)}}),Da=m(Ea,[["__scopeId","data-v-0394ad82"]]),Fa=["href","rel","target"],Oa={key:1},Ua={key:2},xa=g({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=P(),{hasSidebar:o}=F(),{currentLang:n}=W(),i=b(()=>{var h;return typeof t.value.logoLink=="string"?t.value.logoLink:(h=t.value.logoLink)==null?void 0:h.link}),u=b(()=>{var h;return typeof t.value.logoLink=="string"||(h=t.value.logoLink)==null?void 0:h.rel}),p=b(()=>{var h;return typeof t.value.logoLink=="string"||(h=t.value.logoLink)==null?void 0:h.target});return(h,k)=>(a(),l("div",{class:T(["VPNavBarTitle",{"has-sidebar":r(o)}])},[d("a",{class:"title",href:i.value??r(fe)(r(n).link),rel:u.value,target:p.value},[c(h.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),$(Z,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):_("",!0),r(t).siteTitle?(a(),l("span",Oa,L(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),l("span",Ua,L(r(e).title),1)):_("",!0),c(h.$slots,"nav-bar-title-after",{},void 0,!0)],8,Fa)],2))}}),Ga=m(xa,[["__scopeId","data-v-ab179fa1"]]),ja={},Ra={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Ka=d("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),qa=d("path",{d:" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z ",class:"css-c4d79v"},null,-1),Wa=[Ka,qa];function Ya(s,e){return a(),l("svg",Ra,Wa)}const Ee=m(ja,[["render",Ya]]),Ja={class:"items"},Xa={class:"title"},Za=g({__name:"VPNavBarTranslations",setup(s){const{theme:e}=P(),{localeLinks:t,currentLang:o}=W({correspondingLink:!0});return(n,i)=>r(t).length&&r(o).label?(a(),$(ke,{key:0,class:"VPNavBarTranslations",icon:Ee,label:r(e).langMenuLabel||"Change language"},{default:v(()=>[d("div",Ja,[d("p",Xa,L(r(o).label),1),(a(!0),l(I,null,B(r(t),u=>(a(),$(oe,{key:u.link,item:u},null,8,["item"]))),128))])]),_:1},8,["label"])):_("",!0)}}),Qa=m(Za,[["__scopeId","data-v-74abcbb9"]]),er=s=>(E("data-v-19c990f1"),s=s(),D(),s),tr={class:"wrapper"},sr={class:"container"},or={class:"title"},nr={class:"content"},ar={class:"content-body"},rr=er(()=>d("div",{class:"divider"},[d("div",{class:"divider-line"})],-1)),ir=g({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const{y:e}=Le(),{hasSidebar:t}=F(),{hasLocalNav:o}=Ne(),{frontmatter:n}=P(),i=M({});return we(()=>{i.value={"has-sidebar":t.value,"has-local-nav":o.value,top:n.value.layout==="home"&&e.value===0}}),(u,p)=>(a(),l("div",{class:T(["VPNavBar",i.value])},[d("div",tr,[d("div",sr,[d("div",or,[f(Ga,null,{"nav-bar-title-before":v(()=>[c(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[c(u.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),d("div",nr,[d("div",ar,[c(u.$slots,"nav-bar-content-before",{},void 0,!0),f(za,{class:"search"}),f(La,{class:"menu"}),f(Qa,{class:"translations"}),f(gn,{class:"appearance"}),f(Da,{class:"social-links"}),f(da,{class:"extra"}),c(u.$slots,"nav-bar-content-after",{},void 0,!0),f(ma,{class:"hamburger",active:u.isScreenOpen,onClick:p[0]||(p[0]=h=>u.$emit("toggle-screen"))},null,8,["active"])])])])]),rr],2))}}),lr=m(ir,[["__scopeId","data-v-19c990f1"]]),cr={key:0,class:"VPNavScreenAppearance"},ur={class:"text"},dr=g({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=P();return(o,n)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),l("div",cr,[d("p",ur,L(r(t).darkModeSwitchLabel||"Appearance"),1),f(ge)])):_("",!0)}}),vr=m(dr,[["__scopeId","data-v-2d7af913"]]),hr=g({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=se("close-screen");return(t,o)=>(a(),$(z,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:v(()=>[H(L(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),pr=m(hr,[["__scopeId","data-v-05f27b2a"]]),fr={},_r={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},mr=d("path",{d:"M18.9,10.9h-6v-6c0-0.6-0.4-1-1-1s-1,0.4-1,1v6h-6c-0.6,0-1,0.4-1,1s0.4,1,1,1h6v6c0,0.6,0.4,1,1,1s1-0.4,1-1v-6h6c0.6,0,1-0.4,1-1S19.5,10.9,18.9,10.9z"},null,-1),gr=[mr];function $r(s,e){return a(),l("svg",_r,gr)}const kr=m(fr,[["render",$r]]),br=g({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=se("close-screen");return(t,o)=>(a(),$(z,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:v(()=>[H(L(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),De=m(br,[["__scopeId","data-v-19976ae1"]]),yr={class:"VPNavScreenMenuGroupSection"},wr={key:0,class:"title"},Pr=g({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),l("div",yr,[e.text?(a(),l("p",wr,L(e.text),1)):_("",!0),(a(!0),l(I,null,B(e.items,o=>(a(),$(De,{key:o.text,item:o},null,8,["item"]))),128))]))}}),Vr=m(Pr,[["__scopeId","data-v-8133b170"]]),Lr=["aria-controls","aria-expanded"],Sr=["innerHTML"],Mr=["id"],Cr={key:1,class:"group"},Tr=g({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=M(!1),o=b(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(i,u)=>(a(),l("div",{class:T(["VPNavScreenMenuGroup",{open:t.value}])},[d("button",{class:"button","aria-controls":o.value,"aria-expanded":t.value,onClick:n},[d("span",{class:"button-text",innerHTML:i.text},null,8,Sr),f(kr,{class:"button-icon"})],8,Lr),d("div",{id:o.value,class:"items"},[(a(!0),l(I,null,B(i.items,p=>(a(),l(I,{key:p.text},["link"in p?(a(),l("div",{key:p.text,class:"item"},[f(De,{item:p},null,8,["item"])])):(a(),l("div",Cr,[f(Vr,{text:p.text,items:p.items},null,8,["text","items"])]))],64))),128))],8,Mr)],2))}}),Ir=m(Tr,[["__scopeId","data-v-65ef89ca"]]),Nr={key:0,class:"VPNavScreenMenu"},Ar=g({__name:"VPNavScreenMenu",setup(s){const{theme:e}=P();return(t,o)=>r(e).nav?(a(),l("nav",Nr,[(a(!0),l(I,null,B(r(e).nav,n=>(a(),l(I,{key:n.text},["link"in n?(a(),$(pr,{key:0,item:n},null,8,["item"])):(a(),$(Ir,{key:1,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):_("",!0)}}),Br=g({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=P();return(t,o)=>r(e).socialLinks?(a(),$(be,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):_("",!0)}}),Hr={class:"list"},zr=g({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=W({correspondingLink:!0}),o=M(!1);function n(){o.value=!o.value}return(i,u)=>r(e).length&&r(t).label?(a(),l("div",{key:0,class:T(["VPNavScreenTranslations",{open:o.value}])},[d("button",{class:"title",onClick:n},[f(Ee,{class:"icon lang"}),H(" "+L(r(t).label)+" ",1),f(ze,{class:"icon chevron"})]),d("ul",Hr,[(a(!0),l(I,null,B(r(e),p=>(a(),l("li",{key:p.link,class:"item"},[f(z,{class:"link",href:p.link},{default:v(()=>[H(L(p.text),1)]),_:2},1032,["href"])]))),128))])],2)):_("",!0)}}),Er=m(zr,[["__scopeId","data-v-d72aa483"]]),Dr={class:"container"},Fr=g({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=M(null),t=Se(q?document.body:null);return(o,n)=>(a(),$(ve,{name:"fade",onEnter:n[0]||(n[0]=i=>t.value=!0),onAfterLeave:n[1]||(n[1]=i=>t.value=!1)},{default:v(()=>[o.open?(a(),l("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[d("div",Dr,[c(o.$slots,"nav-screen-content-before",{},void 0,!0),f(Ar,{class:"menu"}),f(Er,{class:"translations"}),f(vr,{class:"appearance"}),f(Br,{class:"social-links"}),c(o.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):_("",!0)]),_:3}))}}),Or=m(Fr,[["__scopeId","data-v-cc5739dd"]]),Ur={key:0,class:"VPNav"},xr=g({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:o}=Yo(),{frontmatter:n}=P(),i=b(()=>n.value.navbar!==!1);return Me("close-screen",t),Q(()=>{q&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(u,p)=>i.value?(a(),l("header",Ur,[f(lr,{"is-screen-open":r(e),onToggleScreen:r(o)},{"nav-bar-title-before":v(()=>[c(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[c(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[c(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[c(u.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),f(Or,{open:r(e)},{"nav-screen-content-before":v(()=>[c(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[c(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):_("",!0)}}),Gr=m(xr,[["__scopeId","data-v-ae24b3ad"]]),jr=s=>(E("data-v-e31bd47b"),s=s(),D(),s),Rr=["role","tabindex"],Kr=jr(()=>d("div",{class:"indicator"},null,-1)),qr={key:1,class:"items"},Wr=g({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:o,isLink:n,isActiveLink:i,hasActiveLink:u,hasChildren:p,toggle:h}=yt(b(()=>e.item)),k=b(()=>p.value?"section":"div"),w=b(()=>n.value?"a":"div"),y=b(()=>p.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),V=b(()=>n.value?void 0:"button"),S=b(()=>[[`level-${e.depth}`],{collapsible:o.value},{collapsed:t.value},{"is-link":n.value},{"is-active":i.value},{"has-active":u.value}]);function N(C){"key"in C&&C.key!=="Enter"||!e.item.link&&h()}function A(){e.item.link&&h()}return(C,Y)=>{const O=R("VPSidebarItem",!0);return a(),$(U(k.value),{class:T(["VPSidebarItem",S.value])},{default:v(()=>[C.item.text?(a(),l("div",J({key:0,class:"item",role:V.value},Qe(C.item.items?{click:N,keydown:N}:{},!0),{tabindex:C.item.items&&0}),[Kr,C.item.link?(a(),$(z,{key:0,tag:w.value,class:"link",href:C.item.link,rel:C.item.rel,target:C.item.target},{default:v(()=>[(a(),$(U(y.value),{class:"text",innerHTML:C.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),$(U(y.value),{key:1,class:"text",innerHTML:C.item.text},null,8,["innerHTML"])),C.item.collapsed!=null?(a(),l("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:A,onKeydown:et(A,["enter"]),tabindex:"0"},[f(Ae,{class:"caret-icon"})],32)):_("",!0)],16,Rr)):_("",!0),C.item.items&&C.item.items.length?(a(),l("div",qr,[C.depth<5?(a(!0),l(I,{key:0},B(C.item.items,K=>(a(),$(O,{key:K.text,item:K,depth:C.depth+1},null,8,["item","depth"]))),128)):_("",!0)])):_("",!0)]),_:1},8,["class"])}}}),Yr=m(Wr,[["__scopeId","data-v-e31bd47b"]]),Fe=s=>(E("data-v-575e6a36"),s=s(),D(),s),Jr=Fe(()=>d("div",{class:"curtain"},null,-1)),Xr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Zr=Fe(()=>d("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),Qr=g({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const{sidebarGroups:e,hasSidebar:t}=F(),o=s,n=M(null),i=Se(q?document.body:null);return j([o,n],()=>{var u;o.open?(i.value=!0,(u=n.value)==null||u.focus()):i.value=!1},{immediate:!0,flush:"post"}),(u,p)=>r(t)?(a(),l("aside",{key:0,class:T(["VPSidebar",{open:u.open}]),ref_key:"navEl",ref:n,onClick:p[0]||(p[0]=tt(()=>{},["stop"]))},[Jr,d("nav",Xr,[Zr,c(u.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),l(I,null,B(r(e),h=>(a(),l("div",{key:h.text,class:"group"},[f(Yr,{item:h,depth:0},null,8,["item"])]))),128)),c(u.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):_("",!0)}}),ei=m(Qr,[["__scopeId","data-v-575e6a36"]]),ti=g({__name:"VPSkipLink",setup(s){const e=te(),t=M();j(()=>e.path,()=>t.value.focus());function o({target:n}){const i=document.getElementById(decodeURIComponent(n.hash).slice(1));if(i){const u=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",u)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",u),i.focus(),window.scrollTo(0,0)}}return(n,i)=>(a(),l(I,null,[d("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),d("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o}," Skip to content ")],64))}}),si=m(ti,[["__scopeId","data-v-0f60ec36"]]),oi=g({__name:"Layout",setup(s){const{isOpen:e,open:t,close:o}=F(),n=te();j(()=>n.path,o),bt(e,o);const{frontmatter:i}=P(),u=st(),p=b(()=>!!u["home-hero-image"]);return Me("hero-image-slot-exists",p),(h,k)=>{const w=R("Content");return r(i).layout!==!1?(a(),l("div",{key:0,class:T(["Layout",r(i).pageClass])},[c(h.$slots,"layout-top",{},void 0,!0),f(si),f(rt,{class:"backdrop",show:r(e),onClick:r(o)},null,8,["show","onClick"]),f(Gr,null,{"nav-bar-title-before":v(()=>[c(h.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[c(h.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[c(h.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[c(h.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[c(h.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[c(h.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),f(Wo,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),f(ei,{open:r(e)},{"sidebar-nav-before":v(()=>[c(h.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[c(h.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),f(ko,null,{"page-top":v(()=>[c(h.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[c(h.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[c(h.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[c(h.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[c(h.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[c(h.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[c(h.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[c(h.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[c(h.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[c(h.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[c(h.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[c(h.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[c(h.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[c(h.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[c(h.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[c(h.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[c(h.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[c(h.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[c(h.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[c(h.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[c(h.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[c(h.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[c(h.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),f(Vo),c(h.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),$(w,{key:1}))}}}),ni=m(oi,[["__scopeId","data-v-5d98c3a5"]]),Oe={Layout:ni,enhanceApp:({app:s})=>{s.component("Badge",ot)}},ai={__name:"CustomLayout",setup(s){const{Layout:e}=Oe;return(t,o)=>(a(),$(r(e),null,{"home-hero-image":v(()=>[]),_:1}))}},ii={extends:Oe,Layout:ai,enhanceApp({app:s}){}};export{ii as R,Sa as c,P as u}; +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = ["assets/chunks/VPLocalSearchBox.CFIO9gVL.js","assets/chunks/framework.BaJ171t2.js"] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} diff --git a/docs/.vitepress/dist/assets/examples_index.md.qBaTnzbS.js b/docs/.vitepress/dist/assets/examples_index.md.qBaTnzbS.js new file mode 100644 index 0000000..0662778 --- /dev/null +++ b/docs/.vitepress/dist/assets/examples_index.md.qBaTnzbS.js @@ -0,0 +1,41 @@ +import{_ as s,c as i,o as a,V as e}from"./chunks/framework.BaJ171t2.js";const c=JSON.parse('{"title":"Common Use Cases","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"examples/index.md","filePath":"examples/index.md"}'),t={name:"examples/index.md"},n=e(`

Common Use Cases

Here are some of the most common use cases for PDFObject.

Full-browser embed

If you don't specify a target element, PDFObject will default to document.body, which will cause the PDF to fill the entire browser window.

The following two examples have identical functionality.

js
PDFObject.embed("/pdf/sample-3pp.pdf");

Demo: Full-browser embed (no selector specified)

js
PDFObject.embed("/pdf/sample-3pp.pdf", document.body);

Demo: Full-browser embed (explicit selector)

Passing an HTML element instead of a selector

PDFObject needs to know where to embed your PDF. Most of the examples on this site use a CSS selector, such as #my-container, but you can also pass an HTML node or a jQuery element.

js
let container = document.querySelector("#my-pdf");
+PDFObject.embed("/pdf/sample-3pp.pdf", container);

Demo: Simple embed passing vanilla HTML element

js
let $container = $("#my-pdf");
+PDFObject.embed("/pdf/sample-3pp.pdf", $container);

Demo: Simple embed passing vanilla HTML element

Setting the PDF size

By default, PDFObject generates an <iframe> element with a width and height of 100%. It will automatically fill the target container.

js
PDFObject.embed("myfile.pdf", "#my-container");
+//outputs <iframe src="myfile.pdf" style="width:100%;height:100%">

PDFObject automatically appends the class pdfobject to the <iframe> element, and pdfobject-container to the target element. This helps you target your element in CSS.

html
<style>
+.pdfobject-container {
+   width: 200px;
+   height: 500px;
+}
+</style>
+
+<div id="my-container"></div>
+
+<script>
+PDFObject.embed("myfile.pdf", "#my-container");
+//Will be embedded as
+//<div id="my-container" class="pdfobject-container">
+//   <iframe class="pdfobject" [...]>
+//</div>
+</script>

Demo: Embed a PDF and specify dimensions using CSS

TIP

PDFObject allows you to set the width and height directly on the <iframe>, but this is strongly discouraged! It's safer to specify dimensions using your site's CSS.

If you specify dimensions on the <iframe> element directly, you will lose the ability to resize the element via CSS, because the inline styles will always take precedence over the other styles in your file. Therefore it is recommended that you specify dimensions using external CSS rules as shown above.

Specifying what page to open

As outlined on the Browser Support page, most PDF Open Parameters are not widely supported. However, there is one parameter that works everywhere: the page parameter.

If you specify a page number using the page parameter, as shown in this example, the PDF will auto-scroll to the specified page number when it loads.

js
var options = {
+   page: "2"
+};
+PDFObject.embed("/pdf/sample-3pp.pdf", "#my-container", options);

Demo: Opening a specific page within the PDF

Some PDF engines also support the pagemode option, which can be used to display the PDF's page thumbnails. This is expecially handy when paired with the page parameter.

js
var options = {
+   page: "2",
+    pdfOpenParams: {
+        pagemode: 'thumbs'
+    }
+};
+PDFObject.embed("/pdf/sample-3pp.pdf", "#my-container", options);

Demo: Opening a specific page within the PDF, while also displaying thumbnails

Custom fallback message

PDFObject allows you to display custom messages to users when their browser is unable to display PDFs (this is most common on mobile devices). By default, PDFObject will display the message:

This browser does not support inline PDFs. Please download the PDF to view it: Download PDF

You can replace this message with any string you like. If you would like to let the user download the PDF, just add a link using the [url] shortcode, like so:

<a href='[url]'>Custom link</a>

js
let customFallback = "This is a custom fallback link that displays when the PDF can't be embedded. The PDF's URL can be embedded anywhere in this string using a shortcode. <a href='[url]'>You can make a link</a> or display it as text like this: [url].";
+PDFObject.embed("/pdf/sample-3pp.pdf", "#my-pdf", { fallbackLink: customFallback });

Demo: Custom fallback message

Callback on onload event

Browsers don't provide an API for detecting whether a PDF has loaded. One potential workaround is to detect whether the iframe that contains the PDF has finished loading. This can be checked with a standard addEventListener:

js
let pdf_iframe = PDFObject.embed("/pdf/sample-3pp.pdf", "#my-pdf");
+pdf_iframe.addEventListener("load", function () {
+    console.log("The iframe has loaded");
+});
+PDFObject.embed("/pdf/sample-3pp.pdf", "#my-pdf", { fallbackLink: customFallback });

Demo: Callback on onload event

Displaying Base64 PDFs

Some PDFs are generated dynamically as Base64 strings. PDFObject can accept Base64 strings, just pass the string as the URL.

js
let b64 = "data:application/pdf;base64,JVBERi0xLjMKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbnQgMSAwIFIKL1Jlc291cmNlcyAyIDAgUgovQ29udGVudHMgNCAwIFI+PgplbmRvYmoKNCAwIG9iago8PC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTAxPj4Kc3RyZWFtCnicFcytDoAgGEbhzlW8UQsCU5mVqcFk+G6AKf4F2YDJ7TvS2Z5wFBYmeKeRmSE0s4RUXAjQgYkKyaHlWkMPXQntqOi6I9ZxRrYRm38/F5LbkTwsjI2ubxFTuN+T16CnbH7L/xqsCmVuZHN0cmVhbQplbmRvYmoKMSAwIG9iago8PC9UeXBlIC9QYWdlcwovS2lkcyBbMyAwIFIgXQovQ291bnQgMQovTWVkaWFCb3ggWzAgMCA1OTUuMjggODQxLjg5XQo+PgplbmRvYmoKNSAwIG9iago8PC9UeXBlIC9Gb250Ci9CYXNlRm9udCAvSGVsdmV0aWNhCi9TdWJ0eXBlIC9UeXBlMQovRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwo+PgplbmRvYmoKMiAwIG9iago8PAovUHJvY1NldCBbL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSV0KL0ZvbnQgPDwKL0YxIDUgMCBSCj4+Ci9YT2JqZWN0IDw8Cj4+Cj4+CmVuZG9iago2IDAgb2JqCjw8Ci9Qcm9kdWNlciAoUHlGUERGIDEuNy4yIGh0dHA6Ly9weWZwZGYuZ29vZ2xlY29kZS5jb20vKQovQ3JlYXRpb25EYXRlIChEOjIwMjQwMjA4MDIyMTIzKQo+PgplbmRvYmoKNyAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMSAwIFIKL09wZW5BY3Rpb24gWzMgMCBSIC9GaXRIIG51bGxdCi9QYWdlTGF5b3V0IC9PbmVDb2x1bW4KPj4KZW5kb2JqCnhyZWYKMCA4CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDI1OCAwMDAwMCBuIAowMDAwMDAwNDQxIDAwMDAwIG4gCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA4NyAwMDAwMCBuIAowMDAwMDAwMzQ1IDAwMDAwIG4gCjAwMDAwMDA1NDUgMDAwMDAgbiAKMDAwMDAwMDY1NCAwMDAwMCBuIAp0cmFpbGVyCjw8Ci9TaXplIDgKL1Jvb3QgNyAwIFIKL0luZm8gNiAwIFIKPj4Kc3RhcnR4cmVmCjc1NwolJUVPRgo=";
+PDFObject.embed(b64, "#my-pdf");

Demo: Embedding a Base64 PDF

Integrating PDF.js

You can force the webpage to render the PDF using PDF.js instead of the browser's native PDF engine. This is ideal for scenarios where you want every user to have the same experience (no variation between browsers or operating systems), or when you want to ensure the viewer can see the PDF on a mobile device.

PDF.js can also be modified for specific use cases, such as tracking views, controlling the look/feel, toolbars, and more.

There are some important caveats:

  1. You must install and manage your own instance of PDF.js on your server. It is not included with PDFObject.
  2. PDF.js does not allow cross-domain hosting; your PDF and PDF.js must reside on the same domain.
  3. PDFObject does not verify that PDF.js is present and functional, it assumes you have correctly configured your PDF.js viewer and are not trying to load PDFs from a different domain. If your installation of PDF.js is malfunctioning, the PDF will not be rendered and no fallback will be displayed.
  4. Load times may increase dramatically, as the browser has to download and initialize PDF.js before displaying the PDF.

Here's an example of PDFObject instructing the browser to use PDF.js. The PDF is hosted on the same domain as PDF.js.

js
PDFObject.embed("/pdf/sample-3pp.pdf", "#pdf", {
+   page: "2",
+   pdfOpenParams: {
+      pagemode: "thumbs"
+   },
+   forcePDFJS: true,
+   PDFJS_URL: "/pdfjs/web/viewer.html"
+});

Demo: Using PDF.js to display the PDF

`,53),l=[n];function p(h,k,o,d,r,E){return a(),i("div",null,l)}const y=s(t,[["render",p]]);export{c as __pageData,y as default}; diff --git a/docs/.vitepress/dist/assets/examples_index.md.qBaTnzbS.lean.js b/docs/.vitepress/dist/assets/examples_index.md.qBaTnzbS.lean.js new file mode 100644 index 0000000..3ed92cf --- /dev/null +++ b/docs/.vitepress/dist/assets/examples_index.md.qBaTnzbS.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,V as e}from"./chunks/framework.BaJ171t2.js";const c=JSON.parse('{"title":"Common Use Cases","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"examples/index.md","filePath":"examples/index.md"}'),t={name:"examples/index.md"},n=e("",53),l=[n];function p(h,k,o,d,r,E){return a(),i("div",null,l)}const y=s(t,[["render",p]]);export{c as __pageData,y as default}; diff --git a/docs/.vitepress/dist/assets/guide_browser-support.md.DLwbhE_W.js b/docs/.vitepress/dist/assets/guide_browser-support.md.DLwbhE_W.js new file mode 100644 index 0000000..2fc2f1b --- /dev/null +++ b/docs/.vitepress/dist/assets/guide_browser-support.md.DLwbhE_W.js @@ -0,0 +1 @@ +import{c as p,m as i,t as o,p as d,V as s,o as n,a4 as e,a5 as t,a6 as r}from"./chunks/framework.BaJ171t2.js";import{P as l}from"./chunks/pdfobject.73DqFYM1.js";const c=s('

Browser Support

Big shoutout to BrowserStack for providing free access for our tests.

PDFObject 2.x supports all modern browsers, including Google Chrome, Microsoft Edge, Mozilla Firefox, Apple Safari, and even Microsoft Internet Explorer 11 (for now).

Important: Please don't confuse PDFObject browser support with browser support for inline PDFs. PDFObject supports all modern browsers, including mobile browsers. But this does not mean PDFs can be embedded in these browsers! A key feature of PDFObject is automatically providing fallback content when browsers are not capable of rendering the PDF. For example, Safari on iOS does not properly support embedded PDFs, so PDFObject will automatically display the PDF's URL and a prompt to download the PDF.

',4),m=s('

Mobile Browsers

Let's get this out of the way: As of February 2024, all mobile browsers still fail to support inline PDFs, even on tablets. Some browsers, like Safari on iOS, give the impression that inline PDFs are supported — they display a rendered image of the first page of the PDF, but you'll quickly see there is no way to interact with the PDF or even scroll to the second page. It's a usability nightmare.

Our testing on Android devices also failed to find any browsers that provided even the most basic PDF support for inline/embedded PDFs.

Based on our testing, PDFObject currently assumes any browser on a mobile device is unable to display inline PDFs, and will default to the fallback content.

Note: This is specifically referring to inline/embedded PDFs. The device might be perfectly capable of displaying a PDF when it is not embedded within an HTML page. That's outside the scope of PDFObject.

PDF Rendering Engines

Warning: Grossly oversimplified summary ahead! There are three primary desktop web browser platforms:

The three browser platforms are typically bundled with specific PDF rendering engines, as listed below.

PDFium

Chromium-based browsers are typically packaged with PDFium, a fork of FoxIt Reader. Chromium first introduced native PDF support in 2011.

In 2023, Microsoft announced they will be removing PDFium from Edge, in favor of a proprietary fork of Adobe Reader.

Preview

Webkit's default PDF rendering engine is Apple's Preview, which was built by NeXT, then expanded by Apple. Safari introduced native PDF support in 2009.

PDF.js

Firefox is bundled with PDF.js, a JavaScript-based PDF rendering engine built by Mozilla. Firefox introduced native PDF support in 2013.

PDF Browser Plugins

There are two primary browser plugins for PDFs on desktop browsers: Adobe Reader and FoxIt PDF Reader. While they aren't as ubiquitous as they were in the 2000s (native PDF support took hold circa 2010), they offer many more features and capabilities than native PDF readers, and are very common in corporate environments.

PDF Open Parameters

Adobe introduced PDF Open Parameters as part of their Adobe Acrobat (now Adobe Reader) platform in the early 2000s. These parameters were designed to be included in the PDF's URL; when Acrobat opened the PDF in the web browser, Acrobat would examine the parameters and take the appropriate action(s).

Unfortunately, documentation for PDF Open Parameters support is hard to come by.

The original specification is hard to find online, as Adobe has frequently updated their site(s) and deleted old sub-sites/documentation. You can find two of the original SDK docs here on PDFObject.com: Acrobat 8.1 (2007) and Acrobat 7.0 (2005). You can also find some information at Adobe's Acrobat-PDFL SDK Documentation site.

PDFium's documentation on PDF Open Parameters is also hard to find. There doesn't appear to be a canonical page outlining parameter support. Although PDFium began as a fork of FoxIt, the two forks don't appear to share the same support for PDF Open Parameters. FoxIt PDF Reader's Help Center provides a list of FoxIt's supported parameters, which includes a few parameters that have not worked when we tested PDFium.

PDF.js has a brief outline of supported parameters on GitHub, last updated 2019.

There is no documentation for Safari's support of PDF Open Parameters, probably because Safari only supports one: page. [Insert sad trombone meme here.]

Browser Support for Parameters

PDFObject.com includes a page designed to demonstrate each of the PDF Open Parameters. Try it out for yourself!

The results of our testing (as of February 2024) are listed in the table below.

Reminder: This table only represents desktop browsers.

  • Supported Green checkmark indicates supported.
  • Unsupported Red cross indicates unsupported.
  • Untested Blue questionmark indicates untested.
PDFiumMS EdgePDF.jsSafari
pageSupportedSupportedSupportedSupported
nameddestSupportedSupportedSupportedUnsupported
zoomSupportedSupportedSupportedUnsupported
zoom, with coordinatesSupportedUnsupportedSupportedUnsupported
FitSupportedUnsupportedUnsupportedUnsupported
FitHSupportedSupportedUnsupportedUnsupported
FitH, with coordinatesSupportedUnsupportedUnsupportedUnsupported
FitVSupportedSupportedUnsupportedUnsupported
FitV, with coordinatesSupportedUnsupportedUnsupportedUnsupported
FitBSupportedUnsupportedUnsupportedUnsupported
FitBHSupportedUnsupportedUnsupportedUnsupported
FitBH, with coordinatesSupportedUnsupportedUnsupportedUnsupported
FitBVSupportedUnsupportedUnsupportedUnsupported
FitBV, with coordinatesSupportedUnsupportedUnsupportedUnsupported
toolbarSupportedSupportedUnsupportedUnsupported
navpanesSupportedUnsupportedUnsupportedUnsupported
pagemodeUnsupportedUnsupportedSupportedUnsupported
searchUnsupportedUnsupportedSupportedUnsupported
scrollbarUnsupportedUnsupportedUnsupportedUnsupported
statusbarUnsupportedUnsupportedUnsupportedUnsupported
comment*UnsupportedUnsupportedUnsupportedUnsupported
messages*UnsupportedUnsupportedUnsupportedUnsupported
highlight*UnsupportedUnsupportedUnsupportedUnsupported
viewrect*UnsupportedUnsupportedUnsupportedUnsupported
reverse**UnsupportedUnsupportedUnsupportedUnsupported
fdfUntestedUntestedUntestedUntested
collab*UntestedUntestedUntestedUntested

*Adobe-specific parameter.

**FoxIt-specific parameter.

',33),P=JSON.parse('{"title":"Browser Support","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"guide/browser-support.md","filePath":"guide/browser-support.md"}'),u={name:"guide/browser-support.md"},F=Object.assign(u,{setup(g){const a=l.supportsPDFs;return(h,f)=>(n(),p("div",null,[c,i("p",null,"(In case you were wondering, this browser "+o(d(a)?"supports":"doesn't support")+" embedded PDFs. "+o(d(a)?"You lucky dog, you!":"Sad pandas.")+")",1),m]))}});export{P as __pageData,F as default}; diff --git a/docs/.vitepress/dist/assets/guide_browser-support.md.DLwbhE_W.lean.js b/docs/.vitepress/dist/assets/guide_browser-support.md.DLwbhE_W.lean.js new file mode 100644 index 0000000..56de115 --- /dev/null +++ b/docs/.vitepress/dist/assets/guide_browser-support.md.DLwbhE_W.lean.js @@ -0,0 +1 @@ +import{c as p,m as i,t as o,p as d,V as s,o as n,a4 as e,a5 as t,a6 as r}from"./chunks/framework.BaJ171t2.js";import{P as l}from"./chunks/pdfobject.73DqFYM1.js";const c=s("",4),m=s("",33),P=JSON.parse('{"title":"Browser Support","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"guide/browser-support.md","filePath":"guide/browser-support.md"}'),u={name:"guide/browser-support.md"},F=Object.assign(u,{setup(g){const a=l.supportsPDFs;return(h,f)=>(n(),p("div",null,[c,i("p",null,"(In case you were wondering, this browser "+o(d(a)?"supports":"doesn't support")+" embedded PDFs. "+o(d(a)?"You lucky dog, you!":"Sad pandas.")+")",1),m]))}});export{P as __pageData,F as default}; diff --git a/docs/.vitepress/dist/assets/guide_cdn.md.Dt0ptoPo.js b/docs/.vitepress/dist/assets/guide_cdn.md.Dt0ptoPo.js new file mode 100644 index 0000000..aa928e4 --- /dev/null +++ b/docs/.vitepress/dist/assets/guide_cdn.md.Dt0ptoPo.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,V as r}from"./chunks/framework.BaJ171t2.js";const m=JSON.parse('{"title":"NPM and CDN","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"guide/cdn.md","filePath":"guide/cdn.md"}'),n={name:"guide/cdn.md"},o=r('

NPM and CDN

PDFObject is hosted on NPM and several content delivery networks (CDNs), if you would like to use them.

',3),d=[o];function c(l,s,i,_,p,f){return a(),t("div",null,d)}const u=e(n,[["render",c]]);export{m as __pageData,u as default}; diff --git a/docs/.vitepress/dist/assets/guide_cdn.md.Dt0ptoPo.lean.js b/docs/.vitepress/dist/assets/guide_cdn.md.Dt0ptoPo.lean.js new file mode 100644 index 0000000..ae317f1 --- /dev/null +++ b/docs/.vitepress/dist/assets/guide_cdn.md.Dt0ptoPo.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,V as r}from"./chunks/framework.BaJ171t2.js";const m=JSON.parse('{"title":"NPM and CDN","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"guide/cdn.md","filePath":"guide/cdn.md"}'),n={name:"guide/cdn.md"},o=r("",3),d=[o];function c(l,s,i,_,p,f){return a(),t("div",null,d)}const u=e(n,[["render",c]]);export{m as __pageData,u as default}; diff --git a/docs/.vitepress/dist/assets/guide_index.md.DfiIG4CE.js b/docs/.vitepress/dist/assets/guide_index.md.DfiIG4CE.js new file mode 100644 index 0000000..880e4ae --- /dev/null +++ b/docs/.vitepress/dist/assets/guide_index.md.DfiIG4CE.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,V as r}from"./chunks/framework.BaJ171t2.js";const h=JSON.parse('{"title":"Guide","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"guide/index.md","filePath":"guide/index.md"}'),i={name:"guide/index.md"},s=r('

Guide

This section covers:

',3),a=[s];function n(d,c,l,u,p,_){return o(),t("div",null,a)}const f=e(i,[["render",n]]);export{h as __pageData,f as default}; diff --git a/docs/.vitepress/dist/assets/guide_index.md.DfiIG4CE.lean.js b/docs/.vitepress/dist/assets/guide_index.md.DfiIG4CE.lean.js new file mode 100644 index 0000000..7ce048c --- /dev/null +++ b/docs/.vitepress/dist/assets/guide_index.md.DfiIG4CE.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,V as r}from"./chunks/framework.BaJ171t2.js";const h=JSON.parse('{"title":"Guide","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"guide/index.md","filePath":"guide/index.md"}'),i={name:"guide/index.md"},s=r("",3),a=[s];function n(d,c,l,u,p,_){return o(),t("div",null,a)}const f=e(i,[["render",n]]);export{h as __pageData,f as default}; diff --git a/docs/.vitepress/dist/assets/guide_quick-start.md.1cL7p_xx.js b/docs/.vitepress/dist/assets/guide_quick-start.md.1cL7p_xx.js new file mode 100644 index 0000000..b884a73 --- /dev/null +++ b/docs/.vitepress/dist/assets/guide_quick-start.md.1cL7p_xx.js @@ -0,0 +1,12 @@ +import{_ as s,c as i,o as a,V as t}from"./chunks/framework.BaJ171t2.js";const c=JSON.parse('{"title":"Quick start","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"guide/quick-start.md","filePath":"guide/quick-start.md"}'),h={name:"guide/quick-start.md"},e=t(`

Quick start

html
<style>
+.pdfobject-container { height: 500px; border: 1px solid #ccc; }
+</style>
+<div id="my-pdf"></div>
+<script src="https://unpkg.com/pdfobject"></script>
+<script>PDFObject.embed("/path/to/file.pdf", "#my-pdf");</script>

Demo: Basic embed

1. Create a container to hold your PDF

html
<div id="my-pdf"></div>

2. Add the PDFObject script to your page, then tell PDFObject which PDF to embed, and where to embed it

html
<script src="https://unpkg.com/pdfobject"></script>
+<script>PDFObject.embed("/path/to/file.pdf", "#my-pdf");</script>

3. Optional: Use CSS to change the appearance of the containing element, such as height, width, border, margins, etc.

css
.pdfobject-container { height: 500px; border: 1px solid #ccc; }

4. Optional: Specify additional parameters for displaying the PDF.

See the API documentation for additional details and examples.

js
<script>
+let options = {
+    page: 2 //navigate to page 2 when the PDF is opened
+};
+PDFObject.embed("/path/to/file.pdf", "#my-pdf", options);
+</script>
`,12),n=[e];function p(l,k,d,r,E,o){return a(),i("div",null,n)}const y=s(h,[["render",p]]);export{c as __pageData,y as default}; diff --git a/docs/.vitepress/dist/assets/guide_quick-start.md.1cL7p_xx.lean.js b/docs/.vitepress/dist/assets/guide_quick-start.md.1cL7p_xx.lean.js new file mode 100644 index 0000000..764eb7a --- /dev/null +++ b/docs/.vitepress/dist/assets/guide_quick-start.md.1cL7p_xx.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,V as t}from"./chunks/framework.BaJ171t2.js";const c=JSON.parse('{"title":"Quick start","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"guide/quick-start.md","filePath":"guide/quick-start.md"}'),h={name:"guide/quick-start.md"},e=t("",12),n=[e];function p(l,k,d,r,E,o){return a(),i("div",null,n)}const y=s(h,[["render",p]]);export{c as __pageData,y as default}; diff --git a/docs/.vitepress/dist/assets/guide_why-pdfobject.md.DHiMQeCe.js b/docs/.vitepress/dist/assets/guide_why-pdfobject.md.DHiMQeCe.js new file mode 100644 index 0000000..72db23c --- /dev/null +++ b/docs/.vitepress/dist/assets/guide_why-pdfobject.md.DHiMQeCe.js @@ -0,0 +1 @@ +import{P as r}from"./chunks/pdfobject.73DqFYM1.js";import{c as s,m as n,t,p as o,V as a,o as i}from"./chunks/framework.BaJ171t2.js";const d=a('

Why PDFObject?

How PDFObject can help your project

Browser support detection for inline/embedded PDFs.

You build webpages, and need to display a PDF. But you're an experienced developer, and you know PDF embedding is not supported everywhere. If you insert a plain <iframe> for displaying your PDF, it might not display for some of your customers, causing confusion, frustration, and support tickets.

The PDFObject utility helps you avoid these situations by detecting whether the browser supports embedded PDFs; if yes, the PDF is embedded. If no, the PDF will NOT be embedded, but fear not ...

PDFObject will automagically display a message for the visitor, including a link to download the PDF. This ensures your users always have access to your PDF. The fallback link can be customized, or the option can be disabled if you prefer.

If your PDF is a Base64 string, PDFObject will convert it to a downloadable file and present a download link to the end user.

',8),l=a('

Simplified management of PDF Open Parameters

PDF Open Parameters (when supported!) are a great way to improve the user experience. PDFObject makes it easy to set your parameters, without the hassle of building a custom URL string. If the browser doesn't support PDF Open Parameters, don't worry! Unsupported parameters will be silently ignored.

Plays well with others

PDFObject works great with jQuery and PDF.js. PDFObject 2.x is also registered with NPM, enabling easy integration with your automated build processes.

What PDFObject doesn't do

Not a PDF rendering engine.

PDFObject's primary duty is to detect PDF support, then write an <iframe> element to the page. The browser (and any associated browser plugins) are responsible for rendering the PDF. If the browser does not support embedded PDFs, PDFObject is not capable of forcing the browser to render the PDF.

If you need to force browsers to display a PDF, we suggest using Mozilla's PDF.js. Note that PDF.js is subject to its own limitations, such as cross-domain security restrictions. PDFObject and PDF.js play well together. Examples are provided in the PDFObject API documentation, under PDF_JS.

Cannot customize the look and feel of the PDF toolbar.

The toolbar is controlled by the browser. Chrome, Safari, and Firefox each use completely different PDF rendering engines, and thus present different toolbars. Some of these browsers provide the ability to show or hide the toolbar, or toggle features such as the search field, via PDF Open Parameters. However, in general the browsers do NOT provide any mechanism for customizing the toolbar. If you really need to customize the toolbar, try forking Mozilla's PDF.js and customizing it to suit your needs.

Does not validate that the PDF is actually rendered.

The assumption is that you are using a valid PDF, you're specifying a valid URL, and the network is functioning normally. PDFObject does not check for 404 errors, and JavaScript cannot be used to verify whether the PDF actually rendered, unless you are using PDF.js, which is outside the scope of PDFObject.

Does not magically implement PDF Open Parameters.

As mentioned above, these parameters are not widely supported. The PDF rendering engine either supports them or doesn't — PDFObject cannot force the rendering engine to implement these features.

PDFObject backstory

PDFObject was created by Philip Hutchison in 2008 to scratch his own itch. Philip was working as an instructional designer and online course developer, and needed to embed a PDF into one of his courses. Having been a member of the SWFObject team, he was familiar with the complications of embedding media files into HTML documents.

In 2008, browsers generally didn't offer native support for media files (Flash, video, audio, PDFs). The few that did tended to use proprietary solutions. For PDFs, plugins like Adobe Reader and FoxIt bridged the gap, but as a web developer, you couldn't depend on the visitor having these plugins installed. This led to an era of JavaScript-based plugin detectors, enabling developers to present alternative content if the multimedia file wasn't supported. (The fallback content was usually a prompt to download a specific plugin.) PDFObject was created as a part of this trend; it enabled developers to verify PDF support before embedding the PDF.

The era's reliance on plugins ushered in the fight for web standards, spurring much debate around which media should be natively supported by browsers, and which HTML element(s) were best suited for embedding media files.

For Flash SWF files and PDFs, <object> was the most standards-compliant, and also natively supported fallback content. Thus, it was the element of choice for the SWFObject and PDFObject utilities. In both utilities, JavaScript would run a plugin detection routine, then handle any browser-specific gotchas, including switching to <embed> for browsers that hiccuped when using <object>.

Over time, browser support for PDFs vastly improved (all major browsers now include native PDF rendering, no plugins required), ECMAScript/JavaScript evolved, and attitudes shifted.

In 2016, PDFObject was rewritten to embrace a more modern approach, with a focus on pragmatism. <object> was eliminated, with <embed> becoming the default. <iframe> was used in special circumstances.

Circa 2020, it became clear that <iframe> has become the most bulletproof method for embedding PDFs across all browsers. PDFObject 2.3 switched exclusively to <iframe> and no longer uses <embed> in any scenarios.

As of 2024, PDFObject has been used millions of times across thousands of websites, averaging over 100,000 downloads a week on NPM.

',23),m=JSON.parse('{"title":"Why PDFObject?","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"guide/why-pdfobject.md","filePath":"guide/why-pdfobject.md"}'),c={name:"guide/why-pdfobject.md"},g=Object.assign(c,{setup(h){const e=r.supportsPDFs;return(p,u)=>(i(),s("div",null,[d,n("p",null,"(In case you were wondering, this browser "+t(o(e)?"supports":"doesn't support")+" embedded PDFs. "+t(o(e)?"You lucky dog, you!":"Sad pandas.")+")",1),l]))}});export{m as __pageData,g as default}; diff --git a/docs/.vitepress/dist/assets/guide_why-pdfobject.md.DHiMQeCe.lean.js b/docs/.vitepress/dist/assets/guide_why-pdfobject.md.DHiMQeCe.lean.js new file mode 100644 index 0000000..b720a52 --- /dev/null +++ b/docs/.vitepress/dist/assets/guide_why-pdfobject.md.DHiMQeCe.lean.js @@ -0,0 +1 @@ +import{P as r}from"./chunks/pdfobject.73DqFYM1.js";import{c as s,m as n,t,p as o,V as a,o as i}from"./chunks/framework.BaJ171t2.js";const d=a("",8),l=a("",23),m=JSON.parse('{"title":"Why PDFObject?","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"guide/why-pdfobject.md","filePath":"guide/why-pdfobject.md"}'),c={name:"guide/why-pdfobject.md"},g=Object.assign(c,{setup(h){const e=r.supportsPDFs;return(p,u)=>(i(),s("div",null,[d,n("p",null,"(In case you were wondering, this browser "+t(o(e)?"supports":"doesn't support")+" embedded PDFs. "+t(o(e)?"You lucky dog, you!":"Sad pandas.")+")",1),l]))}});export{m as __pageData,g as default}; diff --git a/docs/.vitepress/dist/assets/index.md.uK6ozABZ.js b/docs/.vitepress/dist/assets/index.md.uK6ozABZ.js new file mode 100644 index 0000000..29c699f --- /dev/null +++ b/docs/.vitepress/dist/assets/index.md.uK6ozABZ.js @@ -0,0 +1 @@ +import{_ as e,c as t,o}from"./chunks/framework.BaJ171t2.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"PDFObject.js","text":"PDF embedding made easy.","tagline":"An open-source JavaScript utility for embedding PDF files into HTML documents. Provides fallback content when PDF embedding is not supported by the browser.","actions":[{"theme":"brand","text":"Quick Start","link":"/guide/quick-start"},{"theme":"alt","text":"API","link":"/api/"}]},"features":[{"title":"Why PDFObject?","details":"Learn how PDFObject gives you more control over your PDF embeds","link":"/guide/why-pdfobject"},{"title":"NPM & CDN","details":"Learn where to find PDFObject and how to add it to your project","link":"/guide/cdn"},{"title":"PDFObject for Vue 3","details":"Learn about the <PdfObject> Vue component","link":"/vue/"}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),n={name:"index.md"};function a(i,d,r,c,s,l){return o(),t("div")}const p=e(n,[["render",a]]);export{u as __pageData,p as default}; diff --git a/docs/.vitepress/dist/assets/index.md.uK6ozABZ.lean.js b/docs/.vitepress/dist/assets/index.md.uK6ozABZ.lean.js new file mode 100644 index 0000000..29c699f --- /dev/null +++ b/docs/.vitepress/dist/assets/index.md.uK6ozABZ.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o}from"./chunks/framework.BaJ171t2.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"PDFObject.js","text":"PDF embedding made easy.","tagline":"An open-source JavaScript utility for embedding PDF files into HTML documents. Provides fallback content when PDF embedding is not supported by the browser.","actions":[{"theme":"brand","text":"Quick Start","link":"/guide/quick-start"},{"theme":"alt","text":"API","link":"/api/"}]},"features":[{"title":"Why PDFObject?","details":"Learn how PDFObject gives you more control over your PDF embeds","link":"/guide/why-pdfobject"},{"title":"NPM & CDN","details":"Learn where to find PDFObject and how to add it to your project","link":"/guide/cdn"},{"title":"PDFObject for Vue 3","details":"Learn about the <PdfObject> Vue component","link":"/vue/"}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),n={name:"index.md"};function a(i,d,r,c,s,l){return o(),t("div")}const p=e(n,[["render",a]]);export{u as __pageData,p as default}; diff --git a/docs/.vitepress/dist/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2 b/docs/.vitepress/dist/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2 new file mode 100644 index 0000000..2a68729 Binary files /dev/null and b/docs/.vitepress/dist/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2 differ diff --git a/docs/.vitepress/dist/assets/inter-italic-cyrillic.D6csxwjC.woff2 b/docs/.vitepress/dist/assets/inter-italic-cyrillic.D6csxwjC.woff2 new file mode 100644 index 0000000..f640351 Binary files /dev/null and b/docs/.vitepress/dist/assets/inter-italic-cyrillic.D6csxwjC.woff2 differ diff --git a/docs/.vitepress/dist/assets/inter-italic-greek-ext.CHOfFY1k.woff2 b/docs/.vitepress/dist/assets/inter-italic-greek-ext.CHOfFY1k.woff2 new file mode 100644 index 0000000..0021896 Binary files /dev/null and b/docs/.vitepress/dist/assets/inter-italic-greek-ext.CHOfFY1k.woff2 differ diff --git a/docs/.vitepress/dist/assets/inter-italic-greek.9J96vYpw.woff2 b/docs/.vitepress/dist/assets/inter-italic-greek.9J96vYpw.woff2 new file mode 100644 index 0000000..71c265f Binary files /dev/null and b/docs/.vitepress/dist/assets/inter-italic-greek.9J96vYpw.woff2 differ diff --git a/docs/.vitepress/dist/assets/inter-italic-latin-ext.BGcWXLrn.woff2 b/docs/.vitepress/dist/assets/inter-italic-latin-ext.BGcWXLrn.woff2 new file mode 100644 index 0000000..9c1b944 Binary files /dev/null and b/docs/.vitepress/dist/assets/inter-italic-latin-ext.BGcWXLrn.woff2 differ diff --git a/docs/.vitepress/dist/assets/inter-italic-latin.DbsTr1gm.woff2 b/docs/.vitepress/dist/assets/inter-italic-latin.DbsTr1gm.woff2 new file mode 100644 index 0000000..01fcf20 Binary files /dev/null and b/docs/.vitepress/dist/assets/inter-italic-latin.DbsTr1gm.woff2 differ diff --git a/docs/.vitepress/dist/assets/inter-italic-vietnamese.DHNAd7Wr.woff2 b/docs/.vitepress/dist/assets/inter-italic-vietnamese.DHNAd7Wr.woff2 new file mode 100644 index 0000000..e4f788e Binary files /dev/null and b/docs/.vitepress/dist/assets/inter-italic-vietnamese.DHNAd7Wr.woff2 differ diff --git a/docs/.vitepress/dist/assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2 b/docs/.vitepress/dist/assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2 new file mode 100644 index 0000000..28593cc Binary files /dev/null and b/docs/.vitepress/dist/assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2 differ diff --git a/docs/.vitepress/dist/assets/inter-roman-cyrillic.CMhn1ESj.woff2 b/docs/.vitepress/dist/assets/inter-roman-cyrillic.CMhn1ESj.woff2 new file mode 100644 index 0000000..a20adc1 Binary files /dev/null and b/docs/.vitepress/dist/assets/inter-roman-cyrillic.CMhn1ESj.woff2 differ diff --git a/docs/.vitepress/dist/assets/inter-roman-greek-ext.D0mI3NpI.woff2 b/docs/.vitepress/dist/assets/inter-roman-greek-ext.D0mI3NpI.woff2 new file mode 100644 index 0000000..e3b0be7 Binary files /dev/null and b/docs/.vitepress/dist/assets/inter-roman-greek-ext.D0mI3NpI.woff2 differ diff --git a/docs/.vitepress/dist/assets/inter-roman-greek.JvnBZ4YD.woff2 b/docs/.vitepress/dist/assets/inter-roman-greek.JvnBZ4YD.woff2 new file mode 100644 index 0000000..f790e04 Binary files /dev/null and b/docs/.vitepress/dist/assets/inter-roman-greek.JvnBZ4YD.woff2 differ diff --git a/docs/.vitepress/dist/assets/inter-roman-latin-ext.ZlYT4o7i.woff2 b/docs/.vitepress/dist/assets/inter-roman-latin-ext.ZlYT4o7i.woff2 new file mode 100644 index 0000000..715bd90 Binary files /dev/null and b/docs/.vitepress/dist/assets/inter-roman-latin-ext.ZlYT4o7i.woff2 differ diff --git a/docs/.vitepress/dist/assets/inter-roman-latin.Bu8hRsVA.woff2 b/docs/.vitepress/dist/assets/inter-roman-latin.Bu8hRsVA.woff2 new file mode 100644 index 0000000..a540b7a Binary files /dev/null and b/docs/.vitepress/dist/assets/inter-roman-latin.Bu8hRsVA.woff2 differ diff --git a/docs/.vitepress/dist/assets/inter-roman-vietnamese.ClpjcLMQ.woff2 b/docs/.vitepress/dist/assets/inter-roman-vietnamese.ClpjcLMQ.woff2 new file mode 100644 index 0000000..5a9f9cb Binary files /dev/null and b/docs/.vitepress/dist/assets/inter-roman-vietnamese.ClpjcLMQ.woff2 differ diff --git a/docs/.vitepress/dist/assets/static_index.md.CPq0k34Q.js b/docs/.vitepress/dist/assets/static_index.md.CPq0k34Q.js new file mode 100644 index 0000000..45d3e69 --- /dev/null +++ b/docs/.vitepress/dist/assets/static_index.md.CPq0k34Q.js @@ -0,0 +1,10 @@ +import{_ as s,c as i,o as t,V as a}from"./chunks/framework.BaJ171t2.js";const c=JSON.parse('{"title":"How to embed a PDF without using JavaScript","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"static/index.md","filePath":"static/index.md"}'),e={name:"static/index.md"},h=a(`

How to embed a PDF without using JavaScript

PDFs can be embedded into HTML pages without using JavaScript. Below are four examples of the most common techniques.

Note: these examples work in most modern desktop browsers, but results will vary in older desktop browsers and mobile browsers. None of these examples work properly on mobile, including iOS.

<embed>

The <embed> element became an official part of the HTML specification with HTML5. All HTML5-compliant browsers—all 'modern' browsers—officially support the <embed> element. Older browsers also offer surprisingly robust (though sometimes unofficial) support for <embed>. Unfortunately, when used in static markup, the <embed> element doesn't provide a mechanism for fallback content. If the browser doesn't support PDF embedding, which still happens frequently with browsers on mobile devices, the end-user will see nothing.

html
<embed src="/pdf/sample-3pp.pdf#page=2" type="application/pdf" width="100%" height="100%" />

<iframe>

The <iframe> approach is very widely supported and one of the easiest ways to embed a PDF. However, an <iframe> doesn't provide fallback content when PDF rendering is not supported by the browser.

html
<iframe src="/pdf/sample-3pp.pdf#page=2" width="100%" height="100%">
+</iframe>

<object>

Unlike <embed>, the <object> element enables you to leave fallback content if the browser doesn't support PDF embedding. All browsers support the <object> element, but there are often discrepancies in how it has been implemented in each browser. Be sure to thoroughly test your page(s) across browsers and operating systems if you use the <object> element.

html
<object data="/pdf/sample-3pp.pdf#page=2" type="application/pdf" width="100%" height="100%">
+   <b>Example fallback content</b>: This browser does not support PDFs. Please download the PDF to view it: 
+   <a href="/pdf/sample-3pp.pdf">Download PDF</a>.
+</object>
Example fallback content: This browser does not support PDFs. Please download the PDF to view it: Download PDF.

<object><iframe></object>

Using an <object> with an <iframe> provides extra insurance if <object> is not supported.

html
<object data="/pdf/sample-3pp.pdf#page=2" type="application/pdf" width="100%" height="100%">
+   <iframe src="/pdf/sample-3pp.pdf#page=2" width="100%" height="100%" style="border: none;">
+     This browser does not support PDFs. Please download the PDF to view it: 
+     <a href="/pdf/sample-3pp.pdf">Download PDF</a>
+   </iframe>
+</object>

Now that you've seen how it works with plain HTML markup, check out what's possible with JavaScript and the PDFObject utility.

`,21),p=[h];function l(n,k,o,d,r,E){return t(),i("div",null,p)}const y=s(e,[["render",l]]);export{c as __pageData,y as default}; diff --git a/docs/.vitepress/dist/assets/static_index.md.CPq0k34Q.lean.js b/docs/.vitepress/dist/assets/static_index.md.CPq0k34Q.lean.js new file mode 100644 index 0000000..6821b1f --- /dev/null +++ b/docs/.vitepress/dist/assets/static_index.md.CPq0k34Q.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as t,V as a}from"./chunks/framework.BaJ171t2.js";const c=JSON.parse('{"title":"How to embed a PDF without using JavaScript","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"static/index.md","filePath":"static/index.md"}'),e={name:"static/index.md"},h=a("",21),p=[h];function l(n,k,o,d,r,E){return t(),i("div",null,p)}const y=s(e,[["render",l]]);export{c as __pageData,y as default}; diff --git a/docs/.vitepress/dist/assets/style.DmS7HcTt.css b/docs/.vitepress/dist/assets/style.DmS7HcTt.css new file mode 100644 index 0000000..09b7b03 --- /dev/null +++ b/docs/.vitepress/dist/assets/style.DmS7HcTt.css @@ -0,0 +1 @@ +@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-cyrillic.CMhn1ESj.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-greek.JvnBZ4YD.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-greek-ext.D0mI3NpI.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-latin.Bu8hRsVA.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-latin-ext.ZlYT4o7i.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-vietnamese.ClpjcLMQ.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-cyrillic.D6csxwjC.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-greek.9J96vYpw.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-greek-ext.CHOfFY1k.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-latin.DbsTr1gm.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-latin-ext.BGcWXLrn.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-vietnamese.DHNAd7Wr.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chinese Quotes;src:local("PingFang SC Regular"),local("PingFang SC"),local("SimHei"),local("Source Han Sans SC");unicode-range:U+2018,U+2019,U+201C,U+201D}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Chinese Quotes", "Inter var", "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E")}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{display:inline-block;margin:auto 2px -2px}mjx-container>svg{margin:auto}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin-bottom:4px;text-align:center;letter-spacing:1px;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-c79a1216]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-c79a1216],.VPBackdrop.fade-leave-to[data-v-c79a1216]{opacity:0}.VPBackdrop.fade-leave-active[data-v-c79a1216]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-c79a1216]{display:none}}.NotFound[data-v-f87ff6e4]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-f87ff6e4]{padding:96px 32px 168px}}.code[data-v-f87ff6e4]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-f87ff6e4]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-f87ff6e4]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-f87ff6e4]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-f87ff6e4]{padding-top:20px}.link[data-v-f87ff6e4]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-f87ff6e4]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-b933a997]{position:relative;z-index:1}.nested[data-v-b933a997]{padding-right:16px;padding-left:16px}.outline-link[data-v-b933a997]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-b933a997]:hover,.outline-link.active[data-v-b933a997]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-b933a997]{padding-left:13px}.VPDocAsideOutline[data-v-935f8a84]{display:none}.VPDocAsideOutline.has-outline[data-v-935f8a84]{display:block}.content[data-v-935f8a84]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-935f8a84]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-935f8a84]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-3f215769]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-3f215769]{flex-grow:1}.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-3f215769] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-7e05ebdb]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-7e05ebdb]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-48f9bb55]{margin-top:64px}.edit-info[data-v-48f9bb55]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-48f9bb55]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-48f9bb55]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-48f9bb55]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-48f9bb55]{margin-right:8px;width:14px;height:14px;fill:currentColor}.prev-next[data-v-48f9bb55]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-48f9bb55]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-48f9bb55]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-48f9bb55]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-48f9bb55]{margin-left:auto;text-align:right}.desc[data-v-48f9bb55]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-48f9bb55]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-39a288b8]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-39a288b8]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-39a288b8]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-39a288b8]{display:flex;justify-content:center}.VPDoc .aside[data-v-39a288b8]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{max-width:1104px}}.container[data-v-39a288b8]{margin:0 auto;width:100%}.aside[data-v-39a288b8]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-39a288b8]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-39a288b8]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-39a288b8]::-webkit-scrollbar{display:none}.aside-curtain[data-v-39a288b8]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-39a288b8]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-39a288b8]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-39a288b8]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-39a288b8]{order:1;margin:0;min-width:640px}}.content-container[data-v-39a288b8]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-39a288b8]{max-width:688px}.VPButton[data-v-cad61b99]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-cad61b99]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-cad61b99]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-cad61b99]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-cad61b99]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-cad61b99]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-cad61b99]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-cad61b99]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-cad61b99]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-cad61b99]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-cad61b99]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-cad61b99]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-cad61b99]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-8426fc1a]{display:none}.dark .VPImage.light[data-v-8426fc1a]{display:none}.VPHero[data-v-303bb580]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-303bb580]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-303bb580]{flex-direction:row}}.main[data-v-303bb580]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-303bb580]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-303bb580]{text-align:left}}@media (min-width: 960px){.main[data-v-303bb580]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-303bb580]{max-width:592px}}.name[data-v-303bb580],.text[data-v-303bb580]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0 auto}.name[data-v-303bb580]{color:var(--vp-home-hero-name-color)}.clip[data-v-303bb580]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-303bb580],.text[data-v-303bb580]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-303bb580],.text[data-v-303bb580]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0}}.tagline[data-v-303bb580]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-303bb580]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-303bb580]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-303bb580]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-303bb580]{margin:0}}.actions[data-v-303bb580]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-303bb580]{justify-content:center}@media (min-width: 640px){.actions[data-v-303bb580]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-303bb580]{justify-content:flex-start}}.action[data-v-303bb580]{flex-shrink:0;padding:6px}.image[data-v-303bb580]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-303bb580]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-303bb580]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-303bb580]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-303bb580]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-303bb580]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-303bb580]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-303bb580]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-303bb580]{width:320px;height:320px}}[data-v-303bb580] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-303bb580] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-303bb580] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-33204567]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-33204567]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-33204567]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-33204567]>.VPImage{margin-bottom:20px}.icon[data-v-33204567]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-33204567]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-33204567]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-33204567]{padding-top:8px}.link-text-value[data-v-33204567]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-33204567]{display:inline-block;margin-left:6px;width:14px;height:14px;fill:currentColor}.VPFeatures[data-v-a6181336]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-a6181336]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-a6181336]{padding:0 64px}}.container[data-v-a6181336]{margin:0 auto;max-width:1152px}.items[data-v-a6181336]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-a6181336]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336]{width:50%}.item.grid-3[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-a6181336]{width:25%}}.VPHome[data-v-c71b6826]{padding-bottom:96px}.VPHome[data-v-c71b6826] .VPHomeSponsors{margin-top:112px;margin-bottom:-128px}@media (min-width: 768px){.VPHome[data-v-c71b6826]{padding-bottom:128px}}.VPContent[data-v-1428d186]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-1428d186]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-1428d186]{margin:0}@media (min-width: 960px){.VPContent[data-v-1428d186]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-1428d186]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-1428d186]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-e315a0ad]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-e315a0ad]{display:none}.VPFooter[data-v-e315a0ad] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-e315a0ad] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-e315a0ad]{padding:32px}}.container[data-v-e315a0ad]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-e315a0ad],.copyright[data-v-e315a0ad]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-af18c0d5]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-af18c0d5]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-af18c0d5]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-af18c0d5]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-af18c0d5]{color:var(--vp-c-text-1)}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-af18c0d5]{font-size:14px}}.icon[data-v-af18c0d5]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}.open>.icon[data-v-af18c0d5]{transform:rotate(90deg)}.items[data-v-af18c0d5]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-af18c0d5]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-af18c0d5]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-af18c0d5]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-af18c0d5]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-af18c0d5]{transition:all .2s ease-out}.flyout-leave-active[data-v-af18c0d5]{transition:all .15s ease-in}.flyout-enter-from[data-v-af18c0d5],.flyout-leave-to[data-v-af18c0d5]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-0282ae07]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-0282ae07]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-0282ae07]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-0282ae07]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-0282ae07]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-0282ae07]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-0282ae07]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-0282ae07]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-0282ae07]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-0282ae07]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-0282ae07]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-0282ae07]{display:none}}.menu-icon[data-v-0282ae07]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPOutlineDropdown[data-v-0282ae07]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-0282ae07]{padding:12px 32px 11px}}.VPSwitch[data-v-b1685198]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-b1685198]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-b1685198]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-b1685198]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-b1685198] svg{position:absolute;top:3px;left:3px;width:12px;height:12px;fill:var(--vp-c-text-2)}.dark .icon[data-v-b1685198] svg{fill:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-1736f215]{opacity:1}.moon[data-v-1736f215],.dark .sun[data-v-1736f215]{opacity:0}.dark .moon[data-v-1736f215]{opacity:1}.dark .VPSwitchAppearance[data-v-1736f215] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-e6aabb21]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-e6aabb21]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-43f1e123]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-43f1e123]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-43f1e123]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-43f1e123]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-69e747b5]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-69e747b5]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-69e747b5]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-69e747b5]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-e7ea1737]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-e7ea1737] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-e7ea1737] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-e7ea1737] .group:last-child{padding-bottom:0}.VPMenu[data-v-e7ea1737] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-e7ea1737] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-e7ea1737] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-e7ea1737] .action{padding-left:24px}.VPFlyout[data-v-9c007e85]{position:relative}.VPFlyout[data-v-9c007e85]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-9c007e85]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-9c007e85]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-9c007e85]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-9c007e85]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-9c007e85],.button[aria-expanded=true]+.menu[data-v-9c007e85]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-9c007e85]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-9c007e85]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-9c007e85]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-9c007e85]{margin-right:0;width:16px;height:16px;fill:currentColor}.text-icon[data-v-9c007e85]{margin-left:4px;width:14px;height:14px;fill:currentColor}.icon[data-v-9c007e85]{width:20px;height:20px;fill:currentColor;transition:fill .25s}.menu[data-v-9c007e85]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-f80f8133]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-f80f8133]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-f80f8133]>svg{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-7bc22406]{display:flex;justify-content:center}.VPNavBarExtra[data-v-d0bd9dde]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-d0bd9dde]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-d0bd9dde]{display:none}}.trans-title[data-v-d0bd9dde]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-d0bd9dde],.item.social-links[data-v-d0bd9dde]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-d0bd9dde]{min-width:176px}.appearance-action[data-v-d0bd9dde]{margin-right:-2px}.social-links-list[data-v-d0bd9dde]{margin:-4px -8px}.VPNavBarHamburger[data-v-e5dd9c1c]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-e5dd9c1c]{display:none}}.container[data-v-e5dd9c1c]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-e5dd9c1c]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .middle[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .bottom[data-v-e5dd9c1c]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-e5dd9c1c],.middle[data-v-e5dd9c1c],.bottom[data-v-e5dd9c1c]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(0)}.middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-42ef59de]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-42ef59de],.VPNavBarMenuLink[data-v-42ef59de]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-7f418b0f]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-7f418b0f]{display:flex}}/*! @docsearch/css 3.5.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-0394ad82]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-0394ad82]{display:flex;align-items:center}}.title[data-v-ab179fa1]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-ab179fa1]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-ab179fa1]{border-bottom-color:var(--vp-c-divider)}}[data-v-ab179fa1] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-74abcbb9]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-74abcbb9]{display:flex;align-items:center}}.title[data-v-74abcbb9]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-19c990f1]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .5s}.VPNavBar.has-local-nav[data-v-19c990f1]{background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar.has-local-nav[data-v-19c990f1]{background-color:transparent}.VPNavBar[data-v-19c990f1]:not(.has-sidebar):not(.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-19c990f1]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-19c990f1]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-19c990f1]{padding:0}}.container[data-v-19c990f1]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-19c990f1],.container>.content[data-v-19c990f1]{pointer-events:none}.container[data-v-19c990f1] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-19c990f1]{max-width:100%}}.title[data-v-19c990f1]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-19c990f1]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-19c990f1]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-19c990f1]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-19c990f1]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-19c990f1]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-19c990f1]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.top) .content-body[data-v-19c990f1]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.top) .content-body[data-v-19c990f1]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-19c990f1]{column-gap:.5rem}}.menu+.translations[data-v-19c990f1]:before,.menu+.appearance[data-v-19c990f1]:before,.menu+.social-links[data-v-19c990f1]:before,.translations+.appearance[data-v-19c990f1]:before,.appearance+.social-links[data-v-19c990f1]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-19c990f1]:before,.translations+.appearance[data-v-19c990f1]:before{margin-right:16px}.appearance+.social-links[data-v-19c990f1]:before{margin-left:16px}.social-links[data-v-19c990f1]{margin-right:-8px}.divider[data-v-19c990f1]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-19c990f1]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-19c990f1]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-19c990f1]{width:100%;height:1px;transition:background-color .5s}.VPNavBar.has-local-nav .divider-line[data-v-19c990f1]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.top) .divider-line[data-v-19c990f1]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.top) .divider[data-v-19c990f1]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-2d7af913]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-2d7af913]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-05f27b2a]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-05f27b2a]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-19976ae1]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-19976ae1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-8133b170]{display:block}.title[data-v-8133b170]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-65ef89ca]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-65ef89ca]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-65ef89ca]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-65ef89ca]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-65ef89ca]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-65ef89ca]{transform:rotate(45deg)}.button[data-v-65ef89ca]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-65ef89ca]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-65ef89ca]{width:14px;height:14px;fill:var(--vp-c-text-2);transition:fill .5s,transform .25s}.group[data-v-65ef89ca]:first-child{padding-top:0}.group+.group[data-v-65ef89ca],.group+.item[data-v-65ef89ca]{padding-top:4px}.VPNavScreenTranslations[data-v-d72aa483]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-d72aa483]{height:auto}.title[data-v-d72aa483]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-d72aa483]{width:16px;height:16px;fill:currentColor}.icon.lang[data-v-d72aa483]{margin-right:8px}.icon.chevron[data-v-d72aa483]{margin-left:4px}.list[data-v-d72aa483]{padding:4px 0 0 24px}.link[data-v-d72aa483]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-cc5739dd]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-cc5739dd],.VPNavScreen.fade-leave-active[data-v-cc5739dd]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-cc5739dd],.VPNavScreen.fade-leave-active .container[data-v-cc5739dd]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-cc5739dd],.VPNavScreen.fade-leave-to[data-v-cc5739dd]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-cc5739dd],.VPNavScreen.fade-leave-to .container[data-v-cc5739dd]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-cc5739dd]{display:none}}.container[data-v-cc5739dd]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-cc5739dd],.menu+.appearance[data-v-cc5739dd],.translations+.appearance[data-v-cc5739dd]{margin-top:24px}.menu+.social-links[data-v-cc5739dd]{margin-top:16px}.appearance+.social-links[data-v-cc5739dd]{margin-top:16px}.VPNav[data-v-ae24b3ad]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-ae24b3ad]{position:fixed}}.VPSidebarItem.level-0[data-v-e31bd47b]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-e31bd47b]{padding-bottom:10px}.item[data-v-e31bd47b]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-e31bd47b]{cursor:pointer}.indicator[data-v-e31bd47b]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-e31bd47b],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-e31bd47b],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-e31bd47b],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-e31bd47b]{background-color:var(--vp-c-brand-1)}.link[data-v-e31bd47b]{display:flex;align-items:center;flex-grow:1}.text[data-v-e31bd47b]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-e31bd47b]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-e31bd47b],.VPSidebarItem.level-2 .text[data-v-e31bd47b],.VPSidebarItem.level-3 .text[data-v-e31bd47b],.VPSidebarItem.level-4 .text[data-v-e31bd47b],.VPSidebarItem.level-5 .text[data-v-e31bd47b]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-e31bd47b]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-1.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-2.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-3.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-4.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-5.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-e31bd47b]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-e31bd47b]{color:var(--vp-c-brand-1)}.caret[data-v-e31bd47b]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-e31bd47b]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-e31bd47b]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-e31bd47b]{width:18px;height:18px;fill:currentColor;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-e31bd47b]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-e31bd47b],.VPSidebarItem.level-2 .items[data-v-e31bd47b],.VPSidebarItem.level-3 .items[data-v-e31bd47b],.VPSidebarItem.level-4 .items[data-v-e31bd47b],.VPSidebarItem.level-5 .items[data-v-e31bd47b]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-e31bd47b]{display:none}.VPSidebar[data-v-575e6a36]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-575e6a36]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-575e6a36]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-575e6a36]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-575e6a36]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-575e6a36]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-575e6a36]{outline:0}.group+.group[data-v-575e6a36]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-575e6a36]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSkipLink[data-v-0f60ec36]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-0f60ec36]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-0f60ec36]{top:14px;left:16px}}.Layout[data-v-5d98c3a5]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-96bd69d5]{border-top:1px solid var(--vp-c-gutter);padding:88px 24px 96px;background-color:var(--vp-c-bg)}.container[data-v-96bd69d5]{margin:0 auto;max-width:1152px}.love[data-v-96bd69d5]{margin:0 auto;width:28px;height:28px;color:var(--vp-c-text-3)}.icon[data-v-96bd69d5]{width:28px;height:28px;fill:currentColor}.message[data-v-96bd69d5]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-96bd69d5]{padding-top:32px}.action[data-v-96bd69d5]{padding-top:40px;text-align:center}.VPTeamPage[data-v-10b00018]{padding-bottom:96px}@media (min-width: 768px){.VPTeamPage[data-v-10b00018]{padding-bottom:128px}}.VPTeamPageSection+.VPTeamPageSection[data-v-10b00018-s],.VPTeamMembers+.VPTeamPageSection[data-v-10b00018-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-10b00018-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-10b00018-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-10b00018-s],.VPTeamMembers+.VPTeamPageSection[data-v-10b00018-s]{margin-top:96px}}.VPTeamMembers[data-v-10b00018-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-10b00018-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-10b00018-s]{padding:0 64px}}.VPTeamPageTitle[data-v-bf2cbdac]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:80px 64px 48px}}.title[data-v-bf2cbdac]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-bf2cbdac]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-bf2cbdac]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-bf2cbdac]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-b1a88750]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-b1a88750]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-b1a88750]{padding:0 64px}}.title[data-v-b1a88750]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-b1a88750]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-b1a88750]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-b1a88750]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-b1a88750]{padding-top:40px}.VPTeamMembersItem[data-v-0d3d0d4d]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-0d3d0d4d]{padding:32px}.VPTeamMembersItem.small .data[data-v-0d3d0d4d]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-0d3d0d4d]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-0d3d0d4d]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-0d3d0d4d]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-0d3d0d4d]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-0d3d0d4d]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-0d3d0d4d]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-0d3d0d4d]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-0d3d0d4d]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-0d3d0d4d]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-0d3d0d4d]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-0d3d0d4d]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-0d3d0d4d]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-0d3d0d4d]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-0d3d0d4d]{text-align:center}.avatar[data-v-0d3d0d4d]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-0d3d0d4d]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-0d3d0d4d]{margin:0;font-weight:600}.affiliation[data-v-0d3d0d4d]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-0d3d0d4d]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-0d3d0d4d]:hover{color:var(--vp-c-brand-1)}.desc[data-v-0d3d0d4d]{margin:0 auto}.desc[data-v-0d3d0d4d] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-0d3d0d4d]{display:flex;justify-content:center;height:56px}.sp-link[data-v-0d3d0d4d]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-0d3d0d4d]:hover,.sp .sp-link.link[data-v-0d3d0d4d]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-0d3d0d4d]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPTeamMembers.small .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-6cb0dbc4]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-6cb0dbc4]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-6cb0dbc4]{max-width:876px}.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-6cb0dbc4]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-6cb0dbc4]{max-width:760px}.container[data-v-6cb0dbc4]{display:grid;gap:24px;margin:0 auto;max-width:1152px}img{width:16px}img{display:inline}.VPLocalSearchBox[data-v-df273b76]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-df273b76]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-df273b76]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-df273b76]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-df273b76]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-df273b76]{padding:0 8px}}.search-bar[data-v-df273b76]:focus-within{border-color:var(--vp-c-brand-1)}.search-icon[data-v-df273b76]{margin:8px}@media (max-width: 767px){.search-icon[data-v-df273b76]{display:none}}.search-input[data-v-df273b76]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-df273b76]{padding:6px 4px}}.search-actions[data-v-df273b76]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-df273b76]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-df273b76]{display:none}}.search-actions button[data-v-df273b76]{padding:8px}.search-actions button[data-v-df273b76]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-df273b76]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-df273b76]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-df273b76]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-df273b76]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-df273b76]{display:none}}.search-keyboard-shortcuts kbd[data-v-df273b76]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-df273b76]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-df273b76]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-df273b76]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-df273b76]{margin:8px}}.titles[data-v-df273b76]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-df273b76]{display:flex;align-items:center;gap:4px}.title.main[data-v-df273b76]{font-weight:500}.title-icon[data-v-df273b76]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-df273b76]{opacity:.5}.result.selected[data-v-df273b76]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-df273b76]{position:relative}.excerpt[data-v-df273b76]{opacity:75%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;opacity:.5;margin-top:4px}.result.selected .excerpt[data-v-df273b76]{opacity:1}.excerpt[data-v-df273b76] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-df273b76] mark,.excerpt[data-v-df273b76] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-df273b76] .vp-code-group .tabs{display:none}.excerpt[data-v-df273b76] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-df273b76]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-df273b76]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-df273b76],.result.selected .title-icon[data-v-df273b76]{color:var(--vp-c-brand-1)!important}.no-results[data-v-df273b76]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-df273b76]{flex:none} diff --git a/docs/.vitepress/dist/assets/vue_index.md.kFAStyJq.js b/docs/.vitepress/dist/assets/vue_index.md.kFAStyJq.js new file mode 100644 index 0000000..3b70a19 --- /dev/null +++ b/docs/.vitepress/dist/assets/vue_index.md.kFAStyJq.js @@ -0,0 +1,12 @@ +import{_ as s,c as i,o as a,V as t}from"./chunks/framework.BaJ171t2.js";const g=JSON.parse('{"title":"PDFObject for Vue 3","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"vue/index.md","filePath":"vue/index.md"}'),e={name:"vue/index.md"},p=t(`

PDFObject for Vue 3

There is an official PDFObject plugin available for Vue 3 projects. Get it at https://github.com/pipwerks/pdfobject-vue/.

The plugin installs a <PdfObject> component, which uses PDFObject under the hood.

There are two ways to use the Vue plugin: via the standard Vue build process, or via Vue's standalone mode, which is purely client-side, and does not require a build step.

A sample project containing both methods can be downloaded from https://github.com/pipwerks/PDFObject-Vue-Test/

Build mode

Install PDFObject and pdfobject-vue via NPM:
npm install pdfobject && npm install pdfobject-vue

Import pdfobject-vue and set app.use in your Vue project's main.js:

js
import { createApp } from 'vue';
+import App from './App.vue';
+import PDFObjectPlugin from 'pdfobject-vue';
+
+const app = createApp(App);
+app.use(PDFObjectPlugin);
+app.mount('#app');

Add the <PdfObject> component to your Vue page. Pass the PDF's URL via the url attribute, and any options via the :options attribute. (Note the binding via colon.) For example:

vue
<PdfObject url="/pdf/sample.pdf" :options="{ page: 2 }" />

Standalone mode

Install the required scripts (in this example, loaded from the UNPKG CDN):

html
<script src="https://unpkg.com/vue@3"></script>
+<script src="https://unpkg.com/pdfobject"></script>
+<script src="https://unpkg.com/pdfobject-vue"></script>

Configure your Vue app to use PDFObjectVuePlugin:

js
const { createApp } = Vue;
+const app = createApp({});
+app.use(PDFObjectVuePlugin);
+app.mount('#app');

Add the <pdf-object> component to your Vue page. Pass the PDF's URL via the url attribute, and any options via the :options attribute. (Note the binding via colon.) For example:

vue
<pdf-object url="/pdf/sample-3pp.pdf" :options="{ page: 2 }" />

IMPORTANT

The standalone version of pdfobject-vue requires you to use the hyphenated <pdf-object> version of the component. The build version can use both styles: TitleCased <PdfObject> or hyphenated <pdf-object>.

`,19),h=[p];function n(l,k,d,o,r,E){return a(),i("div",null,h)}const u=s(e,[["render",n]]);export{g as __pageData,u as default}; diff --git a/docs/.vitepress/dist/assets/vue_index.md.kFAStyJq.lean.js b/docs/.vitepress/dist/assets/vue_index.md.kFAStyJq.lean.js new file mode 100644 index 0000000..2547d0f --- /dev/null +++ b/docs/.vitepress/dist/assets/vue_index.md.kFAStyJq.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,V as t}from"./chunks/framework.BaJ171t2.js";const g=JSON.parse('{"title":"PDFObject for Vue 3","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"vue/index.md","filePath":"vue/index.md"}'),e={name:"vue/index.md"},p=t("",19),h=[p];function n(l,k,d,o,r,E){return a(),i("div",null,h)}const u=s(e,[["render",n]]);export{g as __pageData,u as default}; diff --git a/docs/.vitepress/dist/examples/apostrophe-in-filename.html b/docs/.vitepress/dist/examples/apostrophe-in-filename.html new file mode 100644 index 0000000..31d4c81 --- /dev/null +++ b/docs/.vitepress/dist/examples/apostrophe-in-filename.html @@ -0,0 +1,44 @@ + + + + + +PDFObject Example: Specifying a URL containing an apostrophe + + + + + + + + + + +

PDFObject Example: Specifying a URL containing an apostrophe

+ +
+ + + + + + diff --git a/docs/.vitepress/dist/examples/base64.html b/docs/.vitepress/dist/examples/base64.html new file mode 100644 index 0000000..6ea4ead --- /dev/null +++ b/docs/.vitepress/dist/examples/base64.html @@ -0,0 +1,46 @@ + + + + + +PDFObject Example: Embedding a PDF encoded as a Base64 string + + + + + + + + + + +

PDFObject Example: Embedding a PDF encoded as a Base64 string

+ +
+ + + + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/examples/basic.html b/docs/.vitepress/dist/examples/basic.html new file mode 100644 index 0000000..cae5073 --- /dev/null +++ b/docs/.vitepress/dist/examples/basic.html @@ -0,0 +1,35 @@ + + + + + +PDFObject Example: Basic embed + + + + + + + + + +

PDFObject Example: Basic embed

+ +
+ + + + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/examples/conditional-js-advanced.html b/docs/.vitepress/dist/examples/conditional-js-advanced.html new file mode 100644 index 0000000..a9139f8 --- /dev/null +++ b/docs/.vitepress/dist/examples/conditional-js-advanced.html @@ -0,0 +1,70 @@ + + + + + +PDFObject Example: Invoking conditional JavaScript upon successful embed (onclick) + + + + + + + + + + +

PDFObject Example: Invoking conditional JavaScript upon successful embed (onclick)

+ +

Click this link to embed the PDF.

+
+
+ + + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/examples/conditional-js.html b/docs/.vitepress/dist/examples/conditional-js.html new file mode 100644 index 0000000..212bf30 --- /dev/null +++ b/docs/.vitepress/dist/examples/conditional-js.html @@ -0,0 +1,61 @@ + + + + + +PDFObject Example: Invoking conditional JavaScript upon successful embed + + + + + + + + + + +

PDFObject Example: Invoking conditional JavaScript upon successful embed

+ +
+ +
+ + + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/examples/custom-attribute.html b/docs/.vitepress/dist/examples/custom-attribute.html new file mode 100644 index 0000000..927bcc5 --- /dev/null +++ b/docs/.vitepress/dist/examples/custom-attribute.html @@ -0,0 +1,52 @@ + + + + + +PDFObject Example: Specifying custom attribute + + + + + + + + + +

PDFObject Example: Specifying custom attribute

+ +
+ +

Reserved token

+

Trying to use reserved token for the attribute key. The embed should work, and the custom attribute should be ignored.

+
+ + + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/examples/declining-a-fallback.html b/docs/.vitepress/dist/examples/declining-a-fallback.html new file mode 100644 index 0000000..2efa386 --- /dev/null +++ b/docs/.vitepress/dist/examples/declining-a-fallback.html @@ -0,0 +1,44 @@ + + + + + +PDFObject Example: Declining to provide a fallback + + + + + + + + + +

PDFObject Example: Declining to provide a fallback

+ +
+ +

If your browser doesn't support inline PDFs, you will see nothing except this message and the page title.

+ + + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/examples/deprecated/full-browser-forced-iframe.html b/docs/.vitepress/dist/examples/deprecated/full-browser-forced-iframe.html new file mode 100644 index 0000000..31ef19e --- /dev/null +++ b/docs/.vitepress/dist/examples/deprecated/full-browser-forced-iframe.html @@ -0,0 +1,38 @@ + + + + + +PDFObject Example: Forcing PDFObject to use an iframe, filling the viewport + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/examples/deprecated/iframe-forced.html b/docs/.vitepress/dist/examples/deprecated/iframe-forced.html new file mode 100644 index 0000000..e19a518 --- /dev/null +++ b/docs/.vitepress/dist/examples/deprecated/iframe-forced.html @@ -0,0 +1,52 @@ + + + + + +PDFObject Example: Forcing PDFObject to use an iframe + + + + + + + + + + +

PDFObject Example: Forcing PDFObject to use an iframe

+ +

An <iframe> will be used instead of the <embed> element.

+ +
+ +
+ + + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/examples/deprecated/omit-inline-styles-forced-iframe.html b/docs/.vitepress/dist/examples/deprecated/omit-inline-styles-forced-iframe.html new file mode 100644 index 0000000..79c4030 --- /dev/null +++ b/docs/.vitepress/dist/examples/deprecated/omit-inline-styles-forced-iframe.html @@ -0,0 +1,52 @@ + + + + + +PDFObject Example: Embedding a PDF in an iframe, without using inline styles + + + + + + + + + + +

PDFObject Example: Embedding a PDF in an iframe, without using inline styles

+ +

The PDF will be embedded in an iframe without any inline styles. If no supporting CSS is provided, the iframe and PDF may not appear on your screen.

+ +
+ +
+ + + + + diff --git a/docs/.vitepress/dist/examples/deprecated/redirect-302.html b/docs/.vitepress/dist/examples/deprecated/redirect-302.html new file mode 100644 index 0000000..8504dc9 --- /dev/null +++ b/docs/.vitepress/dist/examples/deprecated/redirect-302.html @@ -0,0 +1,44 @@ + + + + + +PDFObject Example: Loading a PDF via a redirected URL (302) + + + + + + + + + + +

PDFObject Example: Loading a PDF via a redirected URL (302)

+ +

The target URL (https://pwrk.us/pdf) will redirect via a 302 htaccess rewrite rule to https://pdfobject.com/pdf/sample-3pp.pdf.

+ +
+ + + + + diff --git a/docs/.vitepress/dist/examples/detection-navigator-pdfViewerEnabled.html b/docs/.vitepress/dist/examples/detection-navigator-pdfViewerEnabled.html new file mode 100644 index 0000000..8ad4850 --- /dev/null +++ b/docs/.vitepress/dist/examples/detection-navigator-pdfViewerEnabled.html @@ -0,0 +1,42 @@ + + + + + +PDFObject Example: Detection using navigator.pdfViewerEnabled + + + + + + + + + + +

PDFObject Example: Detection using navigator.pdfViewerEnabled

+ +
+ + + + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/examples/detection.html b/docs/.vitepress/dist/examples/detection.html new file mode 100644 index 0000000..ebc2d64 --- /dev/null +++ b/docs/.vitepress/dist/examples/detection.html @@ -0,0 +1,40 @@ + + + + + +PDFObject Example: Detection of PDF support + + + + + + + + + +

PDFObject Example: Detection of PDF support

+ +
+ + + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/examples/embed-multiple-PDFs.html b/docs/.vitepress/dist/examples/embed-multiple-PDFs.html new file mode 100644 index 0000000..614d533 --- /dev/null +++ b/docs/.vitepress/dist/examples/embed-multiple-PDFs.html @@ -0,0 +1,54 @@ + + + + + +PDFObject Example: Embed two PDFs on one HTML page + + + + + + + + + +

PDFObject Example: Embed two PDFs on one HTML page

+ +

Multiple PDFs can be embedded inside a single HTML document.

+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/examples/full-browser-default.html b/docs/.vitepress/dist/examples/full-browser-default.html new file mode 100644 index 0000000..61d4a19 --- /dev/null +++ b/docs/.vitepress/dist/examples/full-browser-default.html @@ -0,0 +1,24 @@ + + + + + +PDFObject Example: Full-browser embed (no selector specified) + + + + + + + + + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/examples/full-browser-explicit-pdfparams.html b/docs/.vitepress/dist/examples/full-browser-explicit-pdfparams.html new file mode 100644 index 0000000..1b81158 --- /dev/null +++ b/docs/.vitepress/dist/examples/full-browser-explicit-pdfparams.html @@ -0,0 +1,32 @@ + + + + + +PDFObject Example: Full-browser embed (explicit selector) with PDF Open Params specified + + + + + + + + + + + + diff --git a/docs/.vitepress/dist/examples/full-browser-explicit.html b/docs/.vitepress/dist/examples/full-browser-explicit.html new file mode 100644 index 0000000..c77c617 --- /dev/null +++ b/docs/.vitepress/dist/examples/full-browser-explicit.html @@ -0,0 +1,24 @@ + + + + + +PDFObject Example: Full-browser embed (explicit selector) + + + + + + + + + + + diff --git a/docs/.vitepress/dist/examples/google.html b/docs/.vitepress/dist/examples/google.html new file mode 100644 index 0000000..33babb0 --- /dev/null +++ b/docs/.vitepress/dist/examples/google.html @@ -0,0 +1,70 @@ + + + + + +PDFObject Example: Using Google Docs Viewer as a fallback + + + + + + + + + +

PDFObject Example: Using Google Docs Viewer as a fallback

+

This example illustrates how you can use Google's viewer as a fallback on devices that don't natively support inline PDFs. If you view this page on a device that doesn't support inline PDFs, such as an iPhone or Android phone, you will see a message containing links to Google Docs and Google Drive. The supporting HTML looks like this:

+
+<p>Try viewing the PDF using Google's viewers: 
+   <a href='https://docs.google.com/viewer?url=[url]'>View PDF using Google Docs</a> 
+   <a href='https://drive.google.com/viewerng/viewer?url=[url]'>View PDF using Google Drive</a>
+</p>
+
+

PDFObject will automatically replace [url] with the actual URL.

+

Important notes:

+
    +
  • The Google viewer must be viewed as a separate page, it cannot be embedded into a non-Google site via iframes.
  • +
  • The Google viewer requires the PDF to have a fully qualified URL, including protocol and domain, e.g. https://example.com/file.pdf.
  • +
  • The Google viewer can only be used for PDFs that are publicly accessible. It can't load files that require authentication.
  • +
  • Use at your own risk: +
      +
    • Google may revoke access to these tools, retire them, or change the URLs.
    • +
    • Loading your PDF in Google's viewer(s) means Google will have access to your PDF's contents, including any sensitive or private data.
    • +
    +
  • +
+
+ + + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/examples/index.html b/docs/.vitepress/dist/examples/index.html new file mode 100644 index 0000000..4b1dcf1 --- /dev/null +++ b/docs/.vitepress/dist/examples/index.html @@ -0,0 +1,74 @@ + + + + + + Common Use Cases | PDFObject + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Common Use Cases

Here are some of the most common use cases for PDFObject.

Full-browser embed

If you don't specify a target element, PDFObject will default to document.body, which will cause the PDF to fill the entire browser window.

The following two examples have identical functionality.

js
PDFObject.embed("/pdf/sample-3pp.pdf");

Demo: Full-browser embed (no selector specified)

js
PDFObject.embed("/pdf/sample-3pp.pdf", document.body);

Demo: Full-browser embed (explicit selector)

Passing an HTML element instead of a selector

PDFObject needs to know where to embed your PDF. Most of the examples on this site use a CSS selector, such as #my-container, but you can also pass an HTML node or a jQuery element.

js
let container = document.querySelector("#my-pdf");
+PDFObject.embed("/pdf/sample-3pp.pdf", container);

Demo: Simple embed passing vanilla HTML element

js
let $container = $("#my-pdf");
+PDFObject.embed("/pdf/sample-3pp.pdf", $container);

Demo: Simple embed passing vanilla HTML element

Setting the PDF size

By default, PDFObject generates an <iframe> element with a width and height of 100%. It will automatically fill the target container.

js
PDFObject.embed("myfile.pdf", "#my-container");
+//outputs <iframe src="myfile.pdf" style="width:100%;height:100%">

PDFObject automatically appends the class pdfobject to the <iframe> element, and pdfobject-container to the target element. This helps you target your element in CSS.

html
<style>
+.pdfobject-container {
+   width: 200px;
+   height: 500px;
+}
+</style>
+
+<div id="my-container"></div>
+
+<script>
+PDFObject.embed("myfile.pdf", "#my-container");
+//Will be embedded as
+//<div id="my-container" class="pdfobject-container">
+//   <iframe class="pdfobject" [...]>
+//</div>
+</script>

Demo: Embed a PDF and specify dimensions using CSS

TIP

PDFObject allows you to set the width and height directly on the <iframe>, but this is strongly discouraged! It's safer to specify dimensions using your site's CSS.

If you specify dimensions on the <iframe> element directly, you will lose the ability to resize the element via CSS, because the inline styles will always take precedence over the other styles in your file. Therefore it is recommended that you specify dimensions using external CSS rules as shown above.

Specifying what page to open

As outlined on the Browser Support page, most PDF Open Parameters are not widely supported. However, there is one parameter that works everywhere: the page parameter.

If you specify a page number using the page parameter, as shown in this example, the PDF will auto-scroll to the specified page number when it loads.

js
var options = {
+   page: "2"
+};
+PDFObject.embed("/pdf/sample-3pp.pdf", "#my-container", options);

Demo: Opening a specific page within the PDF

Some PDF engines also support the pagemode option, which can be used to display the PDF's page thumbnails. This is expecially handy when paired with the page parameter.

js
var options = {
+   page: "2",
+    pdfOpenParams: {
+        pagemode: 'thumbs'
+    }
+};
+PDFObject.embed("/pdf/sample-3pp.pdf", "#my-container", options);

Demo: Opening a specific page within the PDF, while also displaying thumbnails

Custom fallback message

PDFObject allows you to display custom messages to users when their browser is unable to display PDFs (this is most common on mobile devices). By default, PDFObject will display the message:

This browser does not support inline PDFs. Please download the PDF to view it: Download PDF

You can replace this message with any string you like. If you would like to let the user download the PDF, just add a link using the [url] shortcode, like so:

<a href='[url]'>Custom link</a>

js
let customFallback = "This is a custom fallback link that displays when the PDF can't be embedded. The PDF's URL can be embedded anywhere in this string using a shortcode. <a href='[url]'>You can make a link</a> or display it as text like this: [url].";
+PDFObject.embed("/pdf/sample-3pp.pdf", "#my-pdf", { fallbackLink: customFallback });

Demo: Custom fallback message

Callback on onload event

Browsers don't provide an API for detecting whether a PDF has loaded. One potential workaround is to detect whether the iframe that contains the PDF has finished loading. This can be checked with a standard addEventListener:

js
let pdf_iframe = PDFObject.embed("/pdf/sample-3pp.pdf", "#my-pdf");
+pdf_iframe.addEventListener("load", function () {
+    console.log("The iframe has loaded");
+});
+PDFObject.embed("/pdf/sample-3pp.pdf", "#my-pdf", { fallbackLink: customFallback });

Demo: Callback on onload event

Displaying Base64 PDFs

Some PDFs are generated dynamically as Base64 strings. PDFObject can accept Base64 strings, just pass the string as the URL.

js
let b64 = "data:application/pdf;base64,JVBERi0xLjMKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbnQgMSAwIFIKL1Jlc291cmNlcyAyIDAgUgovQ29udGVudHMgNCAwIFI+PgplbmRvYmoKNCAwIG9iago8PC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTAxPj4Kc3RyZWFtCnicFcytDoAgGEbhzlW8UQsCU5mVqcFk+G6AKf4F2YDJ7TvS2Z5wFBYmeKeRmSE0s4RUXAjQgYkKyaHlWkMPXQntqOi6I9ZxRrYRm38/F5LbkTwsjI2ubxFTuN+T16CnbH7L/xqsCmVuZHN0cmVhbQplbmRvYmoKMSAwIG9iago8PC9UeXBlIC9QYWdlcwovS2lkcyBbMyAwIFIgXQovQ291bnQgMQovTWVkaWFCb3ggWzAgMCA1OTUuMjggODQxLjg5XQo+PgplbmRvYmoKNSAwIG9iago8PC9UeXBlIC9Gb250Ci9CYXNlRm9udCAvSGVsdmV0aWNhCi9TdWJ0eXBlIC9UeXBlMQovRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwo+PgplbmRvYmoKMiAwIG9iago8PAovUHJvY1NldCBbL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSV0KL0ZvbnQgPDwKL0YxIDUgMCBSCj4+Ci9YT2JqZWN0IDw8Cj4+Cj4+CmVuZG9iago2IDAgb2JqCjw8Ci9Qcm9kdWNlciAoUHlGUERGIDEuNy4yIGh0dHA6Ly9weWZwZGYuZ29vZ2xlY29kZS5jb20vKQovQ3JlYXRpb25EYXRlIChEOjIwMjQwMjA4MDIyMTIzKQo+PgplbmRvYmoKNyAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMSAwIFIKL09wZW5BY3Rpb24gWzMgMCBSIC9GaXRIIG51bGxdCi9QYWdlTGF5b3V0IC9PbmVDb2x1bW4KPj4KZW5kb2JqCnhyZWYKMCA4CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDI1OCAwMDAwMCBuIAowMDAwMDAwNDQxIDAwMDAwIG4gCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA4NyAwMDAwMCBuIAowMDAwMDAwMzQ1IDAwMDAwIG4gCjAwMDAwMDA1NDUgMDAwMDAgbiAKMDAwMDAwMDY1NCAwMDAwMCBuIAp0cmFpbGVyCjw8Ci9TaXplIDgKL1Jvb3QgNyAwIFIKL0luZm8gNiAwIFIKPj4Kc3RhcnR4cmVmCjc1NwolJUVPRgo=";
+PDFObject.embed(b64, "#my-pdf");

Demo: Embedding a Base64 PDF

Integrating PDF.js

You can force the webpage to render the PDF using PDF.js instead of the browser's native PDF engine. This is ideal for scenarios where you want every user to have the same experience (no variation between browsers or operating systems), or when you want to ensure the viewer can see the PDF on a mobile device.

PDF.js can also be modified for specific use cases, such as tracking views, controlling the look/feel, toolbars, and more.

There are some important caveats:

  1. You must install and manage your own instance of PDF.js on your server. It is not included with PDFObject.
  2. PDF.js does not allow cross-domain hosting; your PDF and PDF.js must reside on the same domain.
  3. PDFObject does not verify that PDF.js is present and functional, it assumes you have correctly configured your PDF.js viewer and are not trying to load PDFs from a different domain. If your installation of PDF.js is malfunctioning, the PDF will not be rendered and no fallback will be displayed.
  4. Load times may increase dramatically, as the browser has to download and initialize PDF.js before displaying the PDF.

Here's an example of PDFObject instructing the browser to use PDF.js. The PDF is hosted on the same domain as PDF.js.

js
PDFObject.embed("/pdf/sample-3pp.pdf", "#pdf", {
+   page: "2",
+   pdfOpenParams: {
+      pagemode: "thumbs"
+   },
+   forcePDFJS: true,
+   PDFJS_URL: "/pdfjs/web/viewer.html"
+});

Demo: Using PDF.js to display the PDF

PDFObject is released under the MIT License.

+ + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/examples/omit-inline-styles.html b/docs/.vitepress/dist/examples/omit-inline-styles.html new file mode 100644 index 0000000..7910c40 --- /dev/null +++ b/docs/.vitepress/dist/examples/omit-inline-styles.html @@ -0,0 +1,38 @@ + + + + + +PDFObject Example: Embedding a PDF, with omitInlineStyles option set to true + + + + + + + + + + +

PDFObject Example: Embedding a PDF, with omitInlineStyles option set to true

+ +

The PDF will be embedded without any inline styles. If no supporting CSS is provided, the PDF may not appear on your screen.

+ +
+ +
+ + + + + diff --git a/docs/.vitepress/dist/examples/onload-callback.html b/docs/.vitepress/dist/examples/onload-callback.html new file mode 100644 index 0000000..6dcd0d3 --- /dev/null +++ b/docs/.vitepress/dist/examples/onload-callback.html @@ -0,0 +1,39 @@ + + + + + +PDFObject Example: Basic embed + + + + + + + + + +

PDFObject Example: Basic embed

+ +
+ + + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/examples/passing-element-jquery-styled.html b/docs/.vitepress/dist/examples/passing-element-jquery-styled.html new file mode 100644 index 0000000..b8ac28f --- /dev/null +++ b/docs/.vitepress/dist/examples/passing-element-jquery-styled.html @@ -0,0 +1,45 @@ + + + + + +PDFObject Example: Simple embed, passing jQuery element, with CSS styles applied + + + + + + + + + + +

PDFObject Example: Simple embed, passing jQuery element, with CSS styles applied

+ +
+ + + + + + diff --git a/docs/.vitepress/dist/examples/passing-element-jquery.html b/docs/.vitepress/dist/examples/passing-element-jquery.html new file mode 100644 index 0000000..6f60898 --- /dev/null +++ b/docs/.vitepress/dist/examples/passing-element-jquery.html @@ -0,0 +1,36 @@ + + + + + +PDFObject Example: Simple embed, passing jQuery element + + + + + + + + + + +

PDFObject Example: Simple embed, passing jQuery element

+ +
+ + + + + + diff --git a/docs/.vitepress/dist/examples/passing-element-styled.html b/docs/.vitepress/dist/examples/passing-element-styled.html new file mode 100644 index 0000000..9927b6d --- /dev/null +++ b/docs/.vitepress/dist/examples/passing-element-styled.html @@ -0,0 +1,44 @@ + + + + + +PDFObject Example: Simple embed passing vanilla HTML element, with CSS styles applied + + + + + + + + + + +

PDFObject Example: Simple embed passing vanilla HTML element, with CSS styles applied

+ +
+ + + + + diff --git a/docs/.vitepress/dist/examples/passing-element.html b/docs/.vitepress/dist/examples/passing-element.html new file mode 100644 index 0000000..f17b5a6 --- /dev/null +++ b/docs/.vitepress/dist/examples/passing-element.html @@ -0,0 +1,35 @@ + + + + + +PDFObject Example: Simple embed, passing vanilla HTML element + + + + + + + + + + +

PDFObject Example: Simple embed, passing vanilla HTML element

+ +
+ + + + + diff --git a/docs/.vitepress/dist/examples/passing-selector-styled.html b/docs/.vitepress/dist/examples/passing-selector-styled.html new file mode 100644 index 0000000..28f69df --- /dev/null +++ b/docs/.vitepress/dist/examples/passing-selector-styled.html @@ -0,0 +1,43 @@ + + + + + +PDFObject Example: Simple embed using CSS selector, with CSS styling applied + + + + + + + + + + +

PDFObject Example: Simple embed using CSS selector, with CSS styling applied

+ +
+ + + + + diff --git a/docs/.vitepress/dist/examples/passing-selector.html b/docs/.vitepress/dist/examples/passing-selector.html new file mode 100644 index 0000000..7e56de3 --- /dev/null +++ b/docs/.vitepress/dist/examples/passing-selector.html @@ -0,0 +1,43 @@ + + + + + +PDFObject Example: Simple embed using CSS selector + + + + + + + + + + +

PDFObject Example: Simple embed using CSS selector

+ +
+ + + + + diff --git a/docs/.vitepress/dist/examples/pdf-open-params.html b/docs/.vitepress/dist/examples/pdf-open-params.html new file mode 100644 index 0000000..6236709 --- /dev/null +++ b/docs/.vitepress/dist/examples/pdf-open-params.html @@ -0,0 +1,269 @@ + + + + + +PDFObject Example: PDF Open Parameters + + + + + + + + + +

PDFObject Example: PDF Open Parameters

+ +

Click each link to test/demonstrate the corresponding parameter.

+

Icons indicate our test results (as of February 2024). A Chrome icon indicates the feature is supported in PDFium/Chromium-based browsers. An Edge icon indicates Microsoft Edge support, Safari icon indicates Safari support, and Firefox icon indicates PDF.js support.

+

Although MS Edge is a fork of Chromium, it uses a different PDF rendering engine and provides less support for PDF Open Parameters.

+ +

Parameter descriptions are largely copied from Adobe's Acrobat-PDFL SDK Documentation and the Adobe® Acrobat® SDK v8.1 PDF

+ +

See Browser Support for more information about PDF Open Parameters.

+ +
+
+
    +
  • + page (2) +
    Specifies a numbered page in the document, using an integer value. The document's first page has a pagenum value of 1.
    +
    + Chrome + Edge + Firefox + Safari (desktop) +
    +
  • +
  • + nameddest ('chart') +
    Specifies a named destination in the PDF document.
    +
    + Chrome + Edge + Firefox +
    +
  • +
  • + zoom (200) + zoom (200,50,50) +
    zoom=scale,left,top. Sets the zoom and scroll factors, using float or integer values. For example, a scale value of 100 indicates a zoom value of 100%. Scroll values left and top are in a coordinate system where 0,0 represents the top left corner of the visible page, regardless of document rotation.In this example, the dimensions are 200% zoom, scroll left 50px, scroll top 50px. PDF.js also supports the following tokens in lieu of scale: page-width, page-height, page-fit, auto.
    +
    + Chrome + Edge* + Firefox + MS Edge does not support coordinates. +
    +
  • +
  • + view (Fit) +
    Fit the page to the window.
    +
    + Chrome +
    +
  • +
  • + view (FitH) + view (FitH,50) +
    Fit horizontal. Fit the width of the page to the window. The optional parameter (in this case, 50) specifies the distance from the page origin to the top of the window (scroll top 50px).
    +
    + Chrome + Edge* + MS Edge does not support coordinates. +
    +
  • +
  • + view (FitV) + view (FitV,50) +
    Fit vertical. Fit the height of the page to the window. The optional parameter (in this example 50) specifies the distance in from the page origin to the left edge of the window (scroll left 50px).
    +
    + Chrome + Edge* + MS Edge does not support coordinates. +
    +
  • +
  • + view (FitB) +
    Fit bounding. Fit the bounding box of the page contents to the window.
    +
    + Chrome +
    +
  • +
  • + view (FitBH) + view (FitBH,50) +
    Fit bounding horizontal. Fit the width of the bounding box of the page contents to the window. top (in this example, 50) specifies the distance from the page origin to the top of the window (scroll top 50px).
    +
    + Chrome +
    +
  • +
  • + view (FitBV) + view (FitBV,50) +
    Fit bounding vertical. Fit the height of the bounding box of the page contents to the window. The optional parameter (in this example 50) specifies the distance from the page origin to the left edge of the window (scroll left 50px).
    +
    + Chrome +
    +
  • +
  • + viewrect (200,200,100,100) +
    Sets the view rectangle using float or integer values in a coordinate system where 0,0 represents the top left corner of the visible page, regardless of document rotation. Use the page command before this command. In this example, dimensions are 200px from left, 200px from top, 100px wide, 100px tall.
    +
  • +
  • + pagemode (bookmarks) + pagemode (thumbs) + pagemode (layers) + pagemode (attachments) + pagemode (none) +
    Displays bookmarks or thumbnails. The "layers" option is specific to FoxIt PDF Reader. The "attachments" option is specific to PDF.js.
    +
    + Firefox +
    +
  • +
  • + scrollbar (0) + scrollbar (1) +
    Turns scrollbars on or off.
    +
  • +
  • + toolbar (0) + toolbar (1) +
    Turns the toolbar on or off.
    +
    + Chrome + Edge +
    +
  • +
  • + reverse (0) + reverse (1) +
    View pages in reverse or forward order (specific to FoxIt PDF Reader).
    +
  • +
  • + statusbar (0) + statusbar (1) +
    Turns the status bar on or off.
    +
  • +
  • + messages (0) + messages (1) +
    Turns the document message bar on or off.
    +
  • +
  • + navpanes (0) + navpanes (1) +
    Turns the navigation panes and tabs on or off.
    +
    + Chrome +
    +
  • +
  • + search (Lorem) + search ("Lorem") + search ('Lorem') +
    Opens the Search panel and performs a search for any of the words in the specified word list. The first matching word is highlighted in the document. The words must be enclosed in quotation marks and separated by spaces. For example: #search="word1 word2" You can search only for single words. You cannot search for a string of words.
    +
    + Firefox +
    +
  • +
  • + highlight (200px from left, 200px from right, 200px from top, 200px from bottom) +
    highlight=lt,rt,top,btm. Highlights a specified rectangle on the displayed page. Use the page command before this command. The rectangle values are integers in a coordinate system where 0,0 represents the top left corner of the visible page, regardless of document rotation.
    +
  • +
  • + comment (e5c7bdc2-893f-4d44-9483-bc00dc9950cd) +
    Specifies a comment on a given page in the PDF document. Use the page command before this command. For example: #page=1&comment=e5c7bdc2-893f-4d44-9483-bc00dc9950cd
    +
  • +
+

We are currently unable to test the following parameters:

+
    +
  • + fdf +
    Specifies an FDF file to populate form fields in the PDF file being opened. For example: #fdf=http://example.org/doc.fdf Note: The fdf parameter should be specified last in a URL.
    +
  • +
  • + collab +
    Sets the comment repository to be used to supply and store comments for the document. This overrides the default comment server for the review or the default preference. The setting is of the form store_type@location, where valid values for store_type are DAVFDF (WebDAV), FSFDF (Network folder), and DB (ADBC). For example:
    #collab=DAVFDF@http://review_server/Collab! /user1
    +
  • +
+
+
+
+
+
+ + + + + + diff --git a/docs/.vitepress/dist/examples/pdfjs-forced-with-querystring.html b/docs/.vitepress/dist/examples/pdfjs-forced-with-querystring.html new file mode 100644 index 0000000..cd8f18a --- /dev/null +++ b/docs/.vitepress/dist/examples/pdfjs-forced-with-querystring.html @@ -0,0 +1,61 @@ + + + + + +PDFObject Example: PDF.js (forced) with querystring + + + + + + + + + +

PDFObject Example: PDF.js (forced) with querystring

+ +

Important: PDFObject does not verify that PDF.js is present and functional, it assumes you have correctly configured your PDF.js viewer and are not trying to load PDFs from a different domain.

+ +
+ +
+ + + + + diff --git a/docs/.vitepress/dist/examples/pdfjs-forced.html b/docs/.vitepress/dist/examples/pdfjs-forced.html new file mode 100644 index 0000000..fb4b760 --- /dev/null +++ b/docs/.vitepress/dist/examples/pdfjs-forced.html @@ -0,0 +1,60 @@ + + + + + +PDFObject Example: Using PDF.js to display the PDF + + + + + + + + + +

PDFObject Example: Using PDF.js to display the PDF

+ +

Important: PDFObject does not verify that PDF.js is present and functional, it assumes you have correctly configured your PDF.js viewer and are not trying to load PDFs from a different domain.

+ +
+
+ + + + + diff --git a/docs/.vitepress/dist/examples/pdfjs.html b/docs/.vitepress/dist/examples/pdfjs.html new file mode 100644 index 0000000..708cda8 --- /dev/null +++ b/docs/.vitepress/dist/examples/pdfjs.html @@ -0,0 +1,61 @@ + + + + + +PDFObject Example: PDF.js fallback + + + + + + + + + + +

PDFObject Example: PDF.js fallback

+ +
+
+ + + + + diff --git a/docs/.vitepress/dist/examples/querystring-URL-with-params.html b/docs/.vitepress/dist/examples/querystring-URL-with-params.html new file mode 100644 index 0000000..f7c545e --- /dev/null +++ b/docs/.vitepress/dist/examples/querystring-URL-with-params.html @@ -0,0 +1,50 @@ + + + + + +PDFObject Example: Specifying PDF URL containing querystring, with PDF Open Parameters + + + + + + + + + + +

PDFObject Example: Specifying PDF URL containing querystring, with PDF Open Parameters

+ +
+ + + + + diff --git a/docs/.vitepress/dist/examples/querystring-URL.html b/docs/.vitepress/dist/examples/querystring-URL.html new file mode 100644 index 0000000..ff3946d --- /dev/null +++ b/docs/.vitepress/dist/examples/querystring-URL.html @@ -0,0 +1,44 @@ + + + + + +PDFObject Example: Specifying PDF URL containing querystring + + + + + + + + + + +

PDFObject Example: Specifying PDF URL containing querystring

+ +
+ + + + + + diff --git a/docs/.vitepress/dist/examples/replace-PDF-with-second-PDF.html b/docs/.vitepress/dist/examples/replace-PDF-with-second-PDF.html new file mode 100644 index 0000000..217bde1 --- /dev/null +++ b/docs/.vitepress/dist/examples/replace-PDF-with-second-PDF.html @@ -0,0 +1,74 @@ + + + + + +PDFObject Example: Replace one PDF with another + + + + + + + + + +

PDFObject Example: Replace one PDF with another

+ +

Click this link to embed the first PDF ("sample-3pp.pdf").

+

Click this link to embed the second PDF ("sample.pdf").

+ +
+
+ + + + + + diff --git a/docs/.vitepress/dist/examples/setting-title.html b/docs/.vitepress/dist/examples/setting-title.html new file mode 100644 index 0000000..ed7c2d5 --- /dev/null +++ b/docs/.vitepress/dist/examples/setting-title.html @@ -0,0 +1,49 @@ + + + + + +PDFObject Example: Setting the iframe's title attribute + + + + + + + + + +

PDFObject Example: Setting the iframe's title attribute

+ +

Adding a title to the <iframe> is a good practice for increased accessibility, ensuring the purpose of the <iframe> is clear to screen readers.

+ +

PDFObject does not have the ability to alter the title of the PDF itself, or how the PDF's title is displayed in the PDF reader.

+ +
+ + + + + + diff --git a/docs/.vitepress/dist/examples/specifying-custom-fallback-link.html b/docs/.vitepress/dist/examples/specifying-custom-fallback-link.html new file mode 100644 index 0000000..4f56e8d --- /dev/null +++ b/docs/.vitepress/dist/examples/specifying-custom-fallback-link.html @@ -0,0 +1,43 @@ + + + + + +PDFObject Example: Specifying custom fallback link + + + + + + + + + + + +

PDFObject Example: Specifying custom fallback link

+

To see the fallback message, view this page on a mobile device or any other system that does not support inline PDFs.

+
+ + + + diff --git a/docs/.vitepress/dist/examples/specifying-page-number-thumbnails.html b/docs/.vitepress/dist/examples/specifying-page-number-thumbnails.html new file mode 100644 index 0000000..5ee27d0 --- /dev/null +++ b/docs/.vitepress/dist/examples/specifying-page-number-thumbnails.html @@ -0,0 +1,48 @@ + + + + + +PDFObject Example: Specifying page number while also displaying thumbnails + + + + + + + + + +

PDFObject Example: Specifying page number while also displaying thumbnails

+ +
+ + + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/examples/specifying-page-number.html b/docs/.vitepress/dist/examples/specifying-page-number.html new file mode 100644 index 0000000..3cd1550 --- /dev/null +++ b/docs/.vitepress/dist/examples/specifying-page-number.html @@ -0,0 +1,45 @@ + + + + + +PDFObject Example: Specifying page number + + + + + + + + + +

PDFObject Example: Specifying page number

+ +
+ + + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/favicon.ico b/docs/.vitepress/dist/favicon.ico new file mode 100644 index 0000000..ee1a63f Binary files /dev/null and b/docs/.vitepress/dist/favicon.ico differ diff --git a/docs/.vitepress/dist/favicons/android-chrome-144x144.png b/docs/.vitepress/dist/favicons/android-chrome-144x144.png new file mode 100644 index 0000000..41de4b5 Binary files /dev/null and b/docs/.vitepress/dist/favicons/android-chrome-144x144.png differ diff --git a/docs/.vitepress/dist/favicons/android-chrome-192x192.png b/docs/.vitepress/dist/favicons/android-chrome-192x192.png new file mode 100644 index 0000000..4a0b51c Binary files /dev/null and b/docs/.vitepress/dist/favicons/android-chrome-192x192.png differ diff --git a/docs/.vitepress/dist/favicons/android-chrome-36x36.png b/docs/.vitepress/dist/favicons/android-chrome-36x36.png new file mode 100644 index 0000000..6085be1 Binary files /dev/null and b/docs/.vitepress/dist/favicons/android-chrome-36x36.png differ diff --git a/docs/.vitepress/dist/favicons/android-chrome-48x48.png b/docs/.vitepress/dist/favicons/android-chrome-48x48.png new file mode 100644 index 0000000..ff08108 Binary files /dev/null and b/docs/.vitepress/dist/favicons/android-chrome-48x48.png differ diff --git a/docs/.vitepress/dist/favicons/android-chrome-72x72.png b/docs/.vitepress/dist/favicons/android-chrome-72x72.png new file mode 100644 index 0000000..36a5b93 Binary files /dev/null and b/docs/.vitepress/dist/favicons/android-chrome-72x72.png differ diff --git a/docs/.vitepress/dist/favicons/android-chrome-96x96.png b/docs/.vitepress/dist/favicons/android-chrome-96x96.png new file mode 100644 index 0000000..bf48d2b Binary files /dev/null and b/docs/.vitepress/dist/favicons/android-chrome-96x96.png differ diff --git a/docs/.vitepress/dist/favicons/apple-touch-icon-114x114.png b/docs/.vitepress/dist/favicons/apple-touch-icon-114x114.png new file mode 100644 index 0000000..ac3310f Binary files /dev/null and b/docs/.vitepress/dist/favicons/apple-touch-icon-114x114.png differ diff --git a/docs/.vitepress/dist/favicons/apple-touch-icon-120x120.png b/docs/.vitepress/dist/favicons/apple-touch-icon-120x120.png new file mode 100644 index 0000000..b236c85 Binary files /dev/null and b/docs/.vitepress/dist/favicons/apple-touch-icon-120x120.png differ diff --git a/docs/.vitepress/dist/favicons/apple-touch-icon-144x144.png b/docs/.vitepress/dist/favicons/apple-touch-icon-144x144.png new file mode 100644 index 0000000..7abad5c Binary files /dev/null and b/docs/.vitepress/dist/favicons/apple-touch-icon-144x144.png differ diff --git a/docs/.vitepress/dist/favicons/apple-touch-icon-152x152.png b/docs/.vitepress/dist/favicons/apple-touch-icon-152x152.png new file mode 100644 index 0000000..70dc652 Binary files /dev/null and b/docs/.vitepress/dist/favicons/apple-touch-icon-152x152.png differ diff --git a/docs/.vitepress/dist/favicons/apple-touch-icon-180x180.png b/docs/.vitepress/dist/favicons/apple-touch-icon-180x180.png new file mode 100644 index 0000000..5a80bae Binary files /dev/null and b/docs/.vitepress/dist/favicons/apple-touch-icon-180x180.png differ diff --git a/docs/.vitepress/dist/favicons/apple-touch-icon-57x57.png b/docs/.vitepress/dist/favicons/apple-touch-icon-57x57.png new file mode 100644 index 0000000..bf4be10 Binary files /dev/null and b/docs/.vitepress/dist/favicons/apple-touch-icon-57x57.png differ diff --git a/docs/.vitepress/dist/favicons/apple-touch-icon-60x60.png b/docs/.vitepress/dist/favicons/apple-touch-icon-60x60.png new file mode 100644 index 0000000..0408ee8 Binary files /dev/null and b/docs/.vitepress/dist/favicons/apple-touch-icon-60x60.png differ diff --git a/docs/.vitepress/dist/favicons/apple-touch-icon-72x72.png b/docs/.vitepress/dist/favicons/apple-touch-icon-72x72.png new file mode 100644 index 0000000..38da5de Binary files /dev/null and b/docs/.vitepress/dist/favicons/apple-touch-icon-72x72.png differ diff --git a/docs/.vitepress/dist/favicons/apple-touch-icon-76x76.png b/docs/.vitepress/dist/favicons/apple-touch-icon-76x76.png new file mode 100644 index 0000000..a793991 Binary files /dev/null and b/docs/.vitepress/dist/favicons/apple-touch-icon-76x76.png differ diff --git a/docs/.vitepress/dist/favicons/apple-touch-icon-precomposed.png b/docs/.vitepress/dist/favicons/apple-touch-icon-precomposed.png new file mode 100644 index 0000000..96178a1 Binary files /dev/null and b/docs/.vitepress/dist/favicons/apple-touch-icon-precomposed.png differ diff --git a/docs/.vitepress/dist/favicons/apple-touch-icon.png b/docs/.vitepress/dist/favicons/apple-touch-icon.png new file mode 100644 index 0000000..5a80bae Binary files /dev/null and b/docs/.vitepress/dist/favicons/apple-touch-icon.png differ diff --git a/docs/.vitepress/dist/favicons/favicon-16x16.png b/docs/.vitepress/dist/favicons/favicon-16x16.png new file mode 100644 index 0000000..78699db Binary files /dev/null and b/docs/.vitepress/dist/favicons/favicon-16x16.png differ diff --git a/docs/.vitepress/dist/favicons/favicon-32x32.png b/docs/.vitepress/dist/favicons/favicon-32x32.png new file mode 100644 index 0000000..b455510 Binary files /dev/null and b/docs/.vitepress/dist/favicons/favicon-32x32.png differ diff --git a/docs/.vitepress/dist/favicons/favicon-96x96.png b/docs/.vitepress/dist/favicons/favicon-96x96.png new file mode 100644 index 0000000..318cc33 Binary files /dev/null and b/docs/.vitepress/dist/favicons/favicon-96x96.png differ diff --git a/docs/.vitepress/dist/favicons/favicon.ico b/docs/.vitepress/dist/favicons/favicon.ico new file mode 100644 index 0000000..ee1a63f Binary files /dev/null and b/docs/.vitepress/dist/favicons/favicon.ico differ diff --git a/docs/.vitepress/dist/favicons/manifest.json b/docs/.vitepress/dist/favicons/manifest.json new file mode 100644 index 0000000..502cd69 --- /dev/null +++ b/docs/.vitepress/dist/favicons/manifest.json @@ -0,0 +1,41 @@ +{ + "name": "pdfobject", + "icons": [ + { + "src": "\/favicons\/android-chrome-36x36.png", + "sizes": "36x36", + "type": "image\/png", + "density": 0.75 + }, + { + "src": "\/favicons\/android-chrome-48x48.png", + "sizes": "48x48", + "type": "image\/png", + "density": 1 + }, + { + "src": "\/favicons\/android-chrome-72x72.png", + "sizes": "72x72", + "type": "image\/png", + "density": 1.5 + }, + { + "src": "\/favicons\/android-chrome-96x96.png", + "sizes": "96x96", + "type": "image\/png", + "density": 2 + }, + { + "src": "\/favicons\/android-chrome-144x144.png", + "sizes": "144x144", + "type": "image\/png", + "density": 3 + }, + { + "src": "\/favicons\/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image\/png", + "density": 4 + } + ] +} diff --git a/docs/.vitepress/dist/favicons/mstile-144x144.png b/docs/.vitepress/dist/favicons/mstile-144x144.png new file mode 100644 index 0000000..92b5820 Binary files /dev/null and b/docs/.vitepress/dist/favicons/mstile-144x144.png differ diff --git a/docs/.vitepress/dist/favicons/mstile-150x150.png b/docs/.vitepress/dist/favicons/mstile-150x150.png new file mode 100644 index 0000000..25f7034 Binary files /dev/null and b/docs/.vitepress/dist/favicons/mstile-150x150.png differ diff --git a/docs/.vitepress/dist/favicons/mstile-310x150.png b/docs/.vitepress/dist/favicons/mstile-310x150.png new file mode 100644 index 0000000..29f0a6e Binary files /dev/null and b/docs/.vitepress/dist/favicons/mstile-310x150.png differ diff --git a/docs/.vitepress/dist/favicons/mstile-310x310.png b/docs/.vitepress/dist/favicons/mstile-310x310.png new file mode 100644 index 0000000..98cc9ec Binary files /dev/null and b/docs/.vitepress/dist/favicons/mstile-310x310.png differ diff --git a/docs/.vitepress/dist/favicons/mstile-70x70.png b/docs/.vitepress/dist/favicons/mstile-70x70.png new file mode 100644 index 0000000..609fc7c Binary files /dev/null and b/docs/.vitepress/dist/favicons/mstile-70x70.png differ diff --git a/docs/.vitepress/dist/favicons/safari-pinned-tab.svg b/docs/.vitepress/dist/favicons/safari-pinned-tab.svg new file mode 100644 index 0000000..6a81af6 --- /dev/null +++ b/docs/.vitepress/dist/favicons/safari-pinned-tab.svg @@ -0,0 +1,67 @@ + + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + + + + + diff --git a/docs/.vitepress/dist/generator-vue.html b/docs/.vitepress/dist/generator-vue.html new file mode 100644 index 0000000..f1c7aff --- /dev/null +++ b/docs/.vitepress/dist/generator-vue.html @@ -0,0 +1,484 @@ + + + + + + + PDFObject: Code Generator + + + + + + +

PDFObject Code Generator

+ +
+ +
+ +
+ +

+ Selector must start with a . or # + Page must be a whole number + ID must start with a letter and contain no spaces or special characters. +   +

+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ + +
+ +
+ + +
+ +
+ +

PDFObject Options

+

Placeholder values represent defaults

+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+

PDF Open Parameters

+

Placeholder values represent examples of expected values for that particular parameter.

+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ + + + + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/guide/browser-support.html b/docs/.vitepress/dist/guide/browser-support.html new file mode 100644 index 0000000..6f42e62 --- /dev/null +++ b/docs/.vitepress/dist/guide/browser-support.html @@ -0,0 +1,35 @@ + + + + + + Browser Support | PDFObject + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Browser Support

Big shoutout to BrowserStack for providing free access for our tests.

PDFObject 2.x supports all modern browsers, including Google Chrome, Microsoft Edge, Mozilla Firefox, Apple Safari, and even Microsoft Internet Explorer 11 (for now).

Important: Please don't confuse PDFObject browser support with browser support for inline PDFs. PDFObject supports all modern browsers, including mobile browsers. But this does not mean PDFs can be embedded in these browsers! A key feature of PDFObject is automatically providing fallback content when browsers are not capable of rendering the PDF. For example, Safari on iOS does not properly support embedded PDFs, so PDFObject will automatically display the PDF's URL and a prompt to download the PDF.

(In case you were wondering, this browser doesn't support embedded PDFs. Sad pandas.)

Mobile Browsers

Let's get this out of the way: As of February 2024, all mobile browsers still fail to support inline PDFs, even on tablets. Some browsers, like Safari on iOS, give the impression that inline PDFs are supported — they display a rendered image of the first page of the PDF, but you'll quickly see there is no way to interact with the PDF or even scroll to the second page. It's a usability nightmare.

Our testing on Android devices also failed to find any browsers that provided even the most basic PDF support for inline/embedded PDFs.

Based on our testing, PDFObject currently assumes any browser on a mobile device is unable to display inline PDFs, and will default to the fallback content.

Note: This is specifically referring to inline/embedded PDFs. The device might be perfectly capable of displaying a PDF when it is not embedded within an HTML page. That's outside the scope of PDFObject.

PDF Rendering Engines

Warning: Grossly oversimplified summary ahead! There are three primary desktop web browser platforms:

The three browser platforms are typically bundled with specific PDF rendering engines, as listed below.

PDFium

Chromium-based browsers are typically packaged with PDFium, a fork of FoxIt Reader. Chromium first introduced native PDF support in 2011.

In 2023, Microsoft announced they will be removing PDFium from Edge, in favor of a proprietary fork of Adobe Reader.

Preview

Webkit's default PDF rendering engine is Apple's Preview, which was built by NeXT, then expanded by Apple. Safari introduced native PDF support in 2009.

PDF.js

Firefox is bundled with PDF.js, a JavaScript-based PDF rendering engine built by Mozilla. Firefox introduced native PDF support in 2013.

PDF Browser Plugins

There are two primary browser plugins for PDFs on desktop browsers: Adobe Reader and FoxIt PDF Reader. While they aren't as ubiquitous as they were in the 2000s (native PDF support took hold circa 2010), they offer many more features and capabilities than native PDF readers, and are very common in corporate environments.

PDF Open Parameters

Adobe introduced PDF Open Parameters as part of their Adobe Acrobat (now Adobe Reader) platform in the early 2000s. These parameters were designed to be included in the PDF's URL; when Acrobat opened the PDF in the web browser, Acrobat would examine the parameters and take the appropriate action(s).

Unfortunately, documentation for PDF Open Parameters support is hard to come by.

The original specification is hard to find online, as Adobe has frequently updated their site(s) and deleted old sub-sites/documentation. You can find two of the original SDK docs here on PDFObject.com: Acrobat 8.1 (2007) and Acrobat 7.0 (2005). You can also find some information at Adobe's Acrobat-PDFL SDK Documentation site.

PDFium's documentation on PDF Open Parameters is also hard to find. There doesn't appear to be a canonical page outlining parameter support. Although PDFium began as a fork of FoxIt, the two forks don't appear to share the same support for PDF Open Parameters. FoxIt PDF Reader's Help Center provides a list of FoxIt's supported parameters, which includes a few parameters that have not worked when we tested PDFium.

PDF.js has a brief outline of supported parameters on GitHub, last updated 2019.

There is no documentation for Safari's support of PDF Open Parameters, probably because Safari only supports one: page. [Insert sad trombone meme here.]

Browser Support for Parameters

PDFObject.com includes a page designed to demonstrate each of the PDF Open Parameters. Try it out for yourself!

The results of our testing (as of February 2024) are listed in the table below.

Reminder: This table only represents desktop browsers.

  • Supported Green checkmark indicates supported.
  • Unsupported Red cross indicates unsupported.
  • Untested Blue questionmark indicates untested.
PDFiumMS EdgePDF.jsSafari
pageSupportedSupportedSupportedSupported
nameddestSupportedSupportedSupportedUnsupported
zoomSupportedSupportedSupportedUnsupported
zoom, with coordinatesSupportedUnsupportedSupportedUnsupported
FitSupportedUnsupportedUnsupportedUnsupported
FitHSupportedSupportedUnsupportedUnsupported
FitH, with coordinatesSupportedUnsupportedUnsupportedUnsupported
FitVSupportedSupportedUnsupportedUnsupported
FitV, with coordinatesSupportedUnsupportedUnsupportedUnsupported
FitBSupportedUnsupportedUnsupportedUnsupported
FitBHSupportedUnsupportedUnsupportedUnsupported
FitBH, with coordinatesSupportedUnsupportedUnsupportedUnsupported
FitBVSupportedUnsupportedUnsupportedUnsupported
FitBV, with coordinatesSupportedUnsupportedUnsupportedUnsupported
toolbarSupportedSupportedUnsupportedUnsupported
navpanesSupportedUnsupportedUnsupportedUnsupported
pagemodeUnsupportedUnsupportedSupportedUnsupported
searchUnsupportedUnsupportedSupportedUnsupported
scrollbarUnsupportedUnsupportedUnsupportedUnsupported
statusbarUnsupportedUnsupportedUnsupportedUnsupported
comment*UnsupportedUnsupportedUnsupportedUnsupported
messages*UnsupportedUnsupportedUnsupportedUnsupported
highlight*UnsupportedUnsupportedUnsupportedUnsupported
viewrect*UnsupportedUnsupportedUnsupportedUnsupported
reverse**UnsupportedUnsupportedUnsupportedUnsupported
fdfUntestedUntestedUntestedUntested
collab*UntestedUntestedUntestedUntested

*Adobe-specific parameter.

**FoxIt-specific parameter.

PDFObject is released under the MIT License.

+ + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/guide/cdn.html b/docs/.vitepress/dist/guide/cdn.html new file mode 100644 index 0000000..9e1d089 --- /dev/null +++ b/docs/.vitepress/dist/guide/cdn.html @@ -0,0 +1,34 @@ + + + + + + NPM and CDN | PDFObject + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

NPM and CDN

PDFObject is hosted on NPM and several content delivery networks (CDNs), if you would like to use them.

PDFObject is released under the MIT License.

+ + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/guide/index.html b/docs/.vitepress/dist/guide/index.html new file mode 100644 index 0000000..229f3fd --- /dev/null +++ b/docs/.vitepress/dist/guide/index.html @@ -0,0 +1,34 @@ + + + + + + Guide | PDFObject + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Guide

This section covers:

PDFObject is released under the MIT License.

+ + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/guide/quick-start.html b/docs/.vitepress/dist/guide/quick-start.html new file mode 100644 index 0000000..fd43b50 --- /dev/null +++ b/docs/.vitepress/dist/guide/quick-start.html @@ -0,0 +1,45 @@ + + + + + + Quick start | PDFObject + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Quick start

html
<style>
+.pdfobject-container { height: 500px; border: 1px solid #ccc; }
+</style>
+<div id="my-pdf"></div>
+<script src="https://unpkg.com/pdfobject"></script>
+<script>PDFObject.embed("/path/to/file.pdf", "#my-pdf");</script>

Demo: Basic embed

1. Create a container to hold your PDF

html
<div id="my-pdf"></div>

2. Add the PDFObject script to your page, then tell PDFObject which PDF to embed, and where to embed it

html
<script src="https://unpkg.com/pdfobject"></script>
+<script>PDFObject.embed("/path/to/file.pdf", "#my-pdf");</script>

3. Optional: Use CSS to change the appearance of the containing element, such as height, width, border, margins, etc.

css
.pdfobject-container { height: 500px; border: 1px solid #ccc; }

4. Optional: Specify additional parameters for displaying the PDF.

See the API documentation for additional details and examples.

js
<script>
+let options = {
+    page: 2 //navigate to page 2 when the PDF is opened
+};
+PDFObject.embed("/path/to/file.pdf", "#my-pdf", options);
+</script>

PDFObject is released under the MIT License.

+ + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/guide/why-pdfobject.html b/docs/.vitepress/dist/guide/why-pdfobject.html new file mode 100644 index 0000000..1449702 --- /dev/null +++ b/docs/.vitepress/dist/guide/why-pdfobject.html @@ -0,0 +1,35 @@ + + + + + + Why PDFObject? | PDFObject + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Why PDFObject?

How PDFObject can help your project

Browser support detection for inline/embedded PDFs.

You build webpages, and need to display a PDF. But you're an experienced developer, and you know PDF embedding is not supported everywhere. If you insert a plain <iframe> for displaying your PDF, it might not display for some of your customers, causing confusion, frustration, and support tickets.

The PDFObject utility helps you avoid these situations by detecting whether the browser supports embedded PDFs; if yes, the PDF is embedded. If no, the PDF will NOT be embedded, but fear not ...

PDFObject will automagically display a message for the visitor, including a link to download the PDF. This ensures your users always have access to your PDF. The fallback link can be customized, or the option can be disabled if you prefer.

If your PDF is a Base64 string, PDFObject will convert it to a downloadable file and present a download link to the end user.

(In case you were wondering, this browser doesn't support embedded PDFs. Sad pandas.)

Simplified management of PDF Open Parameters

PDF Open Parameters (when supported!) are a great way to improve the user experience. PDFObject makes it easy to set your parameters, without the hassle of building a custom URL string. If the browser doesn't support PDF Open Parameters, don't worry! Unsupported parameters will be silently ignored.

Plays well with others

PDFObject works great with jQuery and PDF.js. PDFObject 2.x is also registered with NPM, enabling easy integration with your automated build processes.

What PDFObject doesn't do

Not a PDF rendering engine.

PDFObject's primary duty is to detect PDF support, then write an <iframe> element to the page. The browser (and any associated browser plugins) are responsible for rendering the PDF. If the browser does not support embedded PDFs, PDFObject is not capable of forcing the browser to render the PDF.

If you need to force browsers to display a PDF, we suggest using Mozilla's PDF.js. Note that PDF.js is subject to its own limitations, such as cross-domain security restrictions. PDFObject and PDF.js play well together. Examples are provided in the PDFObject API documentation, under PDF_JS.

Cannot customize the look and feel of the PDF toolbar.

The toolbar is controlled by the browser. Chrome, Safari, and Firefox each use completely different PDF rendering engines, and thus present different toolbars. Some of these browsers provide the ability to show or hide the toolbar, or toggle features such as the search field, via PDF Open Parameters. However, in general the browsers do NOT provide any mechanism for customizing the toolbar. If you really need to customize the toolbar, try forking Mozilla's PDF.js and customizing it to suit your needs.

Does not validate that the PDF is actually rendered.

The assumption is that you are using a valid PDF, you're specifying a valid URL, and the network is functioning normally. PDFObject does not check for 404 errors, and JavaScript cannot be used to verify whether the PDF actually rendered, unless you are using PDF.js, which is outside the scope of PDFObject.

Does not magically implement PDF Open Parameters.

As mentioned above, these parameters are not widely supported. The PDF rendering engine either supports them or doesn't — PDFObject cannot force the rendering engine to implement these features.

PDFObject backstory

PDFObject was created by Philip Hutchison in 2008 to scratch his own itch. Philip was working as an instructional designer and online course developer, and needed to embed a PDF into one of his courses. Having been a member of the SWFObject team, he was familiar with the complications of embedding media files into HTML documents.

In 2008, browsers generally didn't offer native support for media files (Flash, video, audio, PDFs). The few that did tended to use proprietary solutions. For PDFs, plugins like Adobe Reader and FoxIt bridged the gap, but as a web developer, you couldn't depend on the visitor having these plugins installed. This led to an era of JavaScript-based plugin detectors, enabling developers to present alternative content if the multimedia file wasn't supported. (The fallback content was usually a prompt to download a specific plugin.) PDFObject was created as a part of this trend; it enabled developers to verify PDF support before embedding the PDF.

The era's reliance on plugins ushered in the fight for web standards, spurring much debate around which media should be natively supported by browsers, and which HTML element(s) were best suited for embedding media files.

For Flash SWF files and PDFs, <object> was the most standards-compliant, and also natively supported fallback content. Thus, it was the element of choice for the SWFObject and PDFObject utilities. In both utilities, JavaScript would run a plugin detection routine, then handle any browser-specific gotchas, including switching to <embed> for browsers that hiccuped when using <object>.

Over time, browser support for PDFs vastly improved (all major browsers now include native PDF rendering, no plugins required), ECMAScript/JavaScript evolved, and attitudes shifted.

In 2016, PDFObject was rewritten to embrace a more modern approach, with a focus on pragmatism. <object> was eliminated, with <embed> becoming the default. <iframe> was used in special circumstances.

Circa 2020, it became clear that <iframe> has become the most bulletproof method for embedding PDFs across all browsers. PDFObject 2.3 switched exclusively to <iframe> and no longer uses <embed> in any scenarios.

As of 2024, PDFObject has been used millions of times across thousands of websites, averaging over 100,000 downloads a week on NPM.

PDFObject is released under the MIT License.

+ + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/hashmap.json b/docs/.vitepress/dist/hashmap.json new file mode 100644 index 0000000..dc01254 --- /dev/null +++ b/docs/.vitepress/dist/hashmap.json @@ -0,0 +1 @@ +{"guide_quick-start.md":"1cL7p_xx","static_index.md":"CPq0k34Q","vue_index.md":"kFAStyJq","guide_index.md":"DfiIG4CE","guide_why-pdfobject.md":"DHiMQeCe","api_changelog.md":"CQiT5cFQ","guide_cdn.md":"Dt0ptoPo","examples_index.md":"qBaTnzbS","index.md":"uK6ozABZ","guide_browser-support.md":"DLwbhE_W","api_index.md":"DVAVUqIM"} diff --git a/docs/.vitepress/dist/img/assumption-mode-logic.png b/docs/.vitepress/dist/img/assumption-mode-logic.png new file mode 100644 index 0000000..3bfa57f Binary files /dev/null and b/docs/.vitepress/dist/img/assumption-mode-logic.png differ diff --git a/docs/.vitepress/dist/img/checkmark-green.png b/docs/.vitepress/dist/img/checkmark-green.png new file mode 100644 index 0000000..42a7bd5 Binary files /dev/null and b/docs/.vitepress/dist/img/checkmark-green.png differ diff --git a/docs/.vitepress/dist/img/chrome.svg b/docs/.vitepress/dist/img/chrome.svg new file mode 100644 index 0000000..2b90ad3 --- /dev/null +++ b/docs/.vitepress/dist/img/chrome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/.vitepress/dist/img/cross-red-strong.png b/docs/.vitepress/dist/img/cross-red-strong.png new file mode 100644 index 0000000..eb6ccf2 Binary files /dev/null and b/docs/.vitepress/dist/img/cross-red-strong.png differ diff --git a/docs/.vitepress/dist/img/cross-red.png b/docs/.vitepress/dist/img/cross-red.png new file mode 100644 index 0000000..90af710 Binary files /dev/null and b/docs/.vitepress/dist/img/cross-red.png differ diff --git a/docs/.vitepress/dist/img/edge.svg b/docs/.vitepress/dist/img/edge.svg new file mode 100644 index 0000000..1e5724b --- /dev/null +++ b/docs/.vitepress/dist/img/edge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/.vitepress/dist/img/firefox.svg b/docs/.vitepress/dist/img/firefox.svg new file mode 100644 index 0000000..065152a --- /dev/null +++ b/docs/.vitepress/dist/img/firefox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/.vitepress/dist/img/logo.png b/docs/.vitepress/dist/img/logo.png new file mode 100644 index 0000000..4a0b51c Binary files /dev/null and b/docs/.vitepress/dist/img/logo.png differ diff --git a/docs/.vitepress/dist/img/opera.svg b/docs/.vitepress/dist/img/opera.svg new file mode 100644 index 0000000..6e79822 --- /dev/null +++ b/docs/.vitepress/dist/img/opera.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/.vitepress/dist/img/question-blue.png b/docs/.vitepress/dist/img/question-blue.png new file mode 100644 index 0000000..c3d1abe Binary files /dev/null and b/docs/.vitepress/dist/img/question-blue.png differ diff --git a/docs/.vitepress/dist/img/safari.svg b/docs/.vitepress/dist/img/safari.svg new file mode 100644 index 0000000..c04ad58 --- /dev/null +++ b/docs/.vitepress/dist/img/safari.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/.vitepress/dist/index.html b/docs/.vitepress/dist/index.html new file mode 100644 index 0000000..f8f4f7d --- /dev/null +++ b/docs/.vitepress/dist/index.html @@ -0,0 +1,34 @@ + + + + + + PDFObject + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

PDFObject.js

PDF embedding made easy.

An open-source JavaScript utility for embedding PDF files into HTML documents. Provides fallback content when PDF embedding is not supported by the browser.

PDFObject is released under the MIT License.

+ + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/js/analytics.js b/docs/.vitepress/dist/js/analytics.js new file mode 100644 index 0000000..fff33a5 --- /dev/null +++ b/docs/.vitepress/dist/js/analytics.js @@ -0,0 +1,10 @@ +if(window.location.hostname === "pdfobject.com"){ + let s = document.createElement("script"); + s.setAttribute("src", "https://www.googletagmanager.com/gtag/js?id=G-DX6BNQ0S60"); + s.async = true; + document.head.appendChild(s); + window.dataLayer = window.dataLayer || []; + function gtag(){dataLayer.push(arguments);} + gtag("js", new Date()); + gtag('config', 'G-DX6BNQ0S60'); +} \ No newline at end of file diff --git a/docs/.vitepress/dist/pdf/Multipage-PDF-with-Headings.pdf b/docs/.vitepress/dist/pdf/Multipage-PDF-with-Headings.pdf new file mode 100644 index 0000000..f79ab41 Binary files /dev/null and b/docs/.vitepress/dist/pdf/Multipage-PDF-with-Headings.pdf differ diff --git a/docs/.vitepress/dist/pdf/Sample-Report.pdf b/docs/.vitepress/dist/pdf/Sample-Report.pdf new file mode 100644 index 0000000..ebe4802 Binary files /dev/null and b/docs/.vitepress/dist/pdf/Sample-Report.pdf differ diff --git a/docs/.vitepress/dist/pdf/brochure-word.pdf b/docs/.vitepress/dist/pdf/brochure-word.pdf new file mode 100644 index 0000000..cede9fe Binary files /dev/null and b/docs/.vitepress/dist/pdf/brochure-word.pdf differ diff --git a/docs/.vitepress/dist/pdf/pdf_open_parameters_acro7.pdf b/docs/.vitepress/dist/pdf/pdf_open_parameters_acro7.pdf new file mode 100644 index 0000000..d854eac Binary files /dev/null and b/docs/.vitepress/dist/pdf/pdf_open_parameters_acro7.pdf differ diff --git a/docs/.vitepress/dist/pdf/pdf_open_parameters_acro8.pdf b/docs/.vitepress/dist/pdf/pdf_open_parameters_acro8.pdf new file mode 100644 index 0000000..9cb3cdd Binary files /dev/null and b/docs/.vitepress/dist/pdf/pdf_open_parameters_acro8.pdf differ diff --git a/docs/.vitepress/dist/pdf/pdfobject.pdf b/docs/.vitepress/dist/pdf/pdfobject.pdf new file mode 100644 index 0000000..479eb39 Binary files /dev/null and b/docs/.vitepress/dist/pdf/pdfobject.pdf differ diff --git a/docs/.vitepress/dist/pdf/sample-3pp.pdf b/docs/.vitepress/dist/pdf/sample-3pp.pdf new file mode 100644 index 0000000..4603bd3 Binary files /dev/null and b/docs/.vitepress/dist/pdf/sample-3pp.pdf differ diff --git a/docs/.vitepress/dist/pdf/sample.pdf b/docs/.vitepress/dist/pdf/sample.pdf new file mode 100644 index 0000000..c01805e Binary files /dev/null and b/docs/.vitepress/dist/pdf/sample.pdf differ diff --git a/docs/.vitepress/dist/pdf/this one's fun.pdf b/docs/.vitepress/dist/pdf/this one's fun.pdf new file mode 100644 index 0000000..c01805e Binary files /dev/null and b/docs/.vitepress/dist/pdf/this one's fun.pdf differ diff --git a/docs/.vitepress/dist/static/index.html b/docs/.vitepress/dist/static/index.html new file mode 100644 index 0000000..240de8a --- /dev/null +++ b/docs/.vitepress/dist/static/index.html @@ -0,0 +1,43 @@ + + + + + + How to embed a PDF without using JavaScript | PDFObject + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

How to embed a PDF without using JavaScript

PDFs can be embedded into HTML pages without using JavaScript. Below are four examples of the most common techniques.

Note: these examples work in most modern desktop browsers, but results will vary in older desktop browsers and mobile browsers. None of these examples work properly on mobile, including iOS.

<embed>

The <embed> element became an official part of the HTML specification with HTML5. All HTML5-compliant browsers—all 'modern' browsers—officially support the <embed> element. Older browsers also offer surprisingly robust (though sometimes unofficial) support for <embed>. Unfortunately, when used in static markup, the <embed> element doesn't provide a mechanism for fallback content. If the browser doesn't support PDF embedding, which still happens frequently with browsers on mobile devices, the end-user will see nothing.

html
<embed src="/pdf/sample-3pp.pdf#page=2" type="application/pdf" width="100%" height="100%" />

<iframe>

The <iframe> approach is very widely supported and one of the easiest ways to embed a PDF. However, an <iframe> doesn't provide fallback content when PDF rendering is not supported by the browser.

html
<iframe src="/pdf/sample-3pp.pdf#page=2" width="100%" height="100%">
+</iframe>

<object>

Unlike <embed>, the <object> element enables you to leave fallback content if the browser doesn't support PDF embedding. All browsers support the <object> element, but there are often discrepancies in how it has been implemented in each browser. Be sure to thoroughly test your page(s) across browsers and operating systems if you use the <object> element.

html
<object data="/pdf/sample-3pp.pdf#page=2" type="application/pdf" width="100%" height="100%">
+   <b>Example fallback content</b>: This browser does not support PDFs. Please download the PDF to view it: 
+   <a href="/pdf/sample-3pp.pdf">Download PDF</a>.
+</object>
Example fallback content: This browser does not support PDFs. Please download the PDF to view it: Download PDF.

<object><iframe></object>

Using an <object> with an <iframe> provides extra insurance if <object> is not supported.

html
<object data="/pdf/sample-3pp.pdf#page=2" type="application/pdf" width="100%" height="100%">
+   <iframe src="/pdf/sample-3pp.pdf#page=2" width="100%" height="100%" style="border: none;">
+     This browser does not support PDFs. Please download the PDF to view it: 
+     <a href="/pdf/sample-3pp.pdf">Download PDF</a>
+   </iframe>
+</object>

Now that you've seen how it works with plain HTML markup, check out what's possible with JavaScript and the PDFObject utility.

PDFObject is released under the MIT License.

+ + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/vue/index.html b/docs/.vitepress/dist/vue/index.html new file mode 100644 index 0000000..3fe171a --- /dev/null +++ b/docs/.vitepress/dist/vue/index.html @@ -0,0 +1,45 @@ + + + + + + PDFObject for Vue 3 | PDFObject + + + + + + + + + + + + + + + + + + + + + + + +
Skip to content

PDFObject for Vue 3

There is an official PDFObject plugin available for Vue 3 projects. Get it at https://github.com/pipwerks/pdfobject-vue/.

The plugin installs a <PdfObject> component, which uses PDFObject under the hood.

There are two ways to use the Vue plugin: via the standard Vue build process, or via Vue's standalone mode, which is purely client-side, and does not require a build step.

A sample project containing both methods can be downloaded from https://github.com/pipwerks/PDFObject-Vue-Test/

Build mode

Install PDFObject and pdfobject-vue via NPM:
npm install pdfobject && npm install pdfobject-vue

Import pdfobject-vue and set app.use in your Vue project's main.js:

js
import { createApp } from 'vue';
+import App from './App.vue';
+import PDFObjectPlugin from 'pdfobject-vue';
+
+const app = createApp(App);
+app.use(PDFObjectPlugin);
+app.mount('#app');

Add the <PdfObject> component to your Vue page. Pass the PDF's URL via the url attribute, and any options via the :options attribute. (Note the binding via colon.) For example:

vue
<PdfObject url="/pdf/sample.pdf" :options="{ page: 2 }" />

Standalone mode

Install the required scripts (in this example, loaded from the UNPKG CDN):

html
<script src="https://unpkg.com/vue@3"></script>
+<script src="https://unpkg.com/pdfobject"></script>
+<script src="https://unpkg.com/pdfobject-vue"></script>

Configure your Vue app to use PDFObjectVuePlugin:

js
const { createApp } = Vue;
+const app = createApp({});
+app.use(PDFObjectVuePlugin);
+app.mount('#app');

Add the <pdf-object> component to your Vue page. Pass the PDF's URL via the url attribute, and any options via the :options attribute. (Note the binding via colon.) For example:

vue
<pdf-object url="/pdf/sample-3pp.pdf" :options="{ page: 2 }" />

IMPORTANT

The standalone version of pdfobject-vue requires you to use the hyphenated <pdf-object> version of the component. The build version can use both styles: TitleCased <PdfObject> or hyphenated <pdf-object>.

PDFObject is released under the MIT License.

+ + + + \ No newline at end of file diff --git a/docs/examples/index.md b/docs/examples/index.md index 6a61acb..e98c986 100644 --- a/docs/examples/index.md +++ b/docs/examples/index.md @@ -122,6 +122,20 @@ PDFObject.embed("/pdf/sample-3pp.pdf", "#my-pdf", { fallbackLink: customFallback **Demo:** [Custom fallback message](/examples/specifying-custom-fallback-link.html){target="_blank"} +## Callback on `onload` event +Browsers don't provide an API for detecting whether a PDF has loaded. One potential workaround is to detect whether the iframe that contains the PDF has finished loading. This can be checked with a standard `addEventListener`: + +```js +let pdf_iframe = PDFObject.embed("/pdf/sample-3pp.pdf", "#my-pdf"); +pdf_iframe.addEventListener("load", function () { + console.log("The iframe has loaded"); +}); +PDFObject.embed("/pdf/sample-3pp.pdf", "#my-pdf", { fallbackLink: customFallback }); +``` + +**Demo:** [Callback on `onload` event](/examples/onload-callback.html){target="_blank"} + + ## Displaying Base64 PDFs Some PDFs are generated dynamically as Base64 strings. PDFObject can accept Base64 strings, just pass the string as the URL. diff --git a/docs/public/examples/onload-callback.html b/docs/public/examples/onload-callback.html new file mode 100644 index 0000000..6dcd0d3 --- /dev/null +++ b/docs/public/examples/onload-callback.html @@ -0,0 +1,39 @@ + + + + + +PDFObject Example: Basic embed + + + + + + + + + +

PDFObject Example: Basic embed

+ +
+ + + + + \ No newline at end of file