diff --git a/asset-manifest.json b/asset-manifest.json index 7a6a200..cef658a 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,11 +1,13 @@ { "files": { "main.css": "/static/css/main.69abd278.css", - "main.js": "/static/js/main.75a71ed0.js", + "main.js": "/static/js/main.b0f8f05a.js", "static/js/453.e714295e.chunk.js": "/static/js/453.e714295e.chunk.js", + "static/media/homepic6.png": "/static/media/homepic6.965bb0ca2000a7a19b62.png", "static/media/homepic2.jpg": "/static/media/homepic2.2001cbe2174a283d247a.jpg", "static/media/blog1.png": "/static/media/blog1.224a5f52acfa6a2c43dd.png", - "static/media/homepic3.jpg": "/static/media/homepic3.770359d9306a410040d0.jpg", + "static/media/homepic3.jpg": "/static/media/homepic3.236c1697407e118f1bad.jpg", + "static/media/homepic5.jpg": "/static/media/homepic5.cdd3c528d1dffe6c1724.jpg", "static/media/taboo.png": "/static/media/taboo.515cd28de3fa08ff6046.png", "static/media/ak1.png": "/static/media/ak1.b912d39d6f809e3803c6.png", "static/media/bluffing.png": "/static/media/bluffing.e9007db72e8da87ba3f1.png", @@ -14,6 +16,7 @@ "static/media/b2.jpg": "/static/media/b2.d67c1260ad84c05d6c3a.jpg", "static/media/b4.jpg": "/static/media/b4.5ef9493b4b08856741de.jpg", "static/media/blog3.jpg": "/static/media/blog3.b976d74f5af8ee3f2a7f.jpg", + "static/media/homepic4.jpg": "/static/media/homepic4.5922828533cb49531c5c.jpg", "static/media/b3.jpg": "/static/media/b3.690adc4c59bca914b773.jpg", "static/media/slick.svg": "/static/media/slick.2630a3e3eab21c607e21.svg", "static/media/slick.eot": "/static/media/slick.a4e97f5a2a64f0ab1323.eot", @@ -21,11 +24,11 @@ "static/media/slick.woff": "/static/media/slick.295183786cd8a1389865.woff", "index.html": "/index.html", "main.69abd278.css.map": "/static/css/main.69abd278.css.map", - "main.75a71ed0.js.map": "/static/js/main.75a71ed0.js.map", + "main.b0f8f05a.js.map": "/static/js/main.b0f8f05a.js.map", "453.e714295e.chunk.js.map": "/static/js/453.e714295e.chunk.js.map" }, "entrypoints": [ "static/css/main.69abd278.css", - "static/js/main.75a71ed0.js" + "static/js/main.b0f8f05a.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index ecfa7d9..52a13ad 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Game Arena
\ No newline at end of file +Game Arena
\ No newline at end of file diff --git a/static/js/main.75a71ed0.js.map b/static/js/main.75a71ed0.js.map deleted file mode 100644 index d671f06..0000000 --- a/static/js/main.75a71ed0.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/main.75a71ed0.js","mappings":"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+jF,iBAAA,IAEhG9rF,GACFkH,KAIEa,EAA0BvB,EAA0D,CAEpFwoF,OAAA,EACAG,gBAAA,EACA7qF,aAAA,EACA8qF,oBAAA,EACAF,mBAAA,EACApD,mBAAA,EACAjqF,QAAA,EACA0tF,eAAA,IAIGxnF,CAAA,CGlUT,ICIMqqB,GAAS,SAAC5rB,GAAA,gBCCQA,EACtBc,EACAD,EACAulD,GAAA,YAAAA,IAAAA,EAAkBplD,MAEbL,EAAAA,GAAAA,IAAmBE,GAAA,OACfqwB,GAAiB,EAAGxmB,OAAO7J,IAAA,IAK9B0K,EAAmB,kBAAazK,EAAqBD,EAAKulD,EAAS95B,GAAA9wB,WAAA,EAAA8B,WAAA,SAGzEiO,EAAiB09E,WAAa,SAAAtoF,GAAA,OAC5BX,EAAqBc,EAAsBD,EAAAK,GAAA,GAAUklD,EAAA,GAAYzlD,GAAA,EAGnE4K,EAAiBi9E,MAAQ,SAAA7nF,GAAA,OACvBX,EAAqBc,EAAsBD,EAAAK,GAAA,GACtCklD,EAAA,CACHoiC,MAAOtsF,MAAMpD,UAAU8G,OAAOwmD,EAAQoiC,MAAO7nF,GAAOgmD,OAAOiB,WAAA,EAGxDr8C,CAAA,CDzBO,CAAqC0kB,GAAiBjwB,EAAA,EDJvD,CACb,IACA,OACA,UACA,OACA,UACA,QACA,QACA,IACA,OACA,MACA,MACA,MACA,aACA,OACA,KACA,SACA,SACA,UACA,OACA,OACA,MACA,WACA,OACA,WACA,KACA,MACA,UACA,MACA,SACA,MACA,KACA,KACA,KACA,QACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,SACA,QACA,SACA,KACA,OACA,OACA,MACA,OACA,UACA,OACA,WACA,OACA,QACA,MACA,WACA,SACA,KACA,WACA,SACA,SACA,IACA,QACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,QACA,SACA,OACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,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","sources":["../node_modules/enquire.js/src/MediaQuery.js","../node_modules/enquire.js/src/MediaQueryDispatch.js","../node_modules/enquire.js/src/QueryHandler.js","../node_modules/enquire.js/src/Util.js","../node_modules/enquire.js/src/index.js","../node_modules/extend/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/inline-style-parser/index.js","../node_modules/json2mq/index.js","../node_modules/lodash.debounce/index.js","../node_modules/lodash.throttle/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-fast-compare/index.js","../node_modules/react-is/cjs/react-is.production.js","../node_modules/react-scroll/modules/components/Button.js","../node_modules/react-scroll/modules/components/Element.js","../node_modules/react-scroll/modules/components/Link.js","../node_modules/react-scroll/modules/index.js","../node_modules/react-scroll/modules/mixins/Helpers.js","../node_modules/react-scroll/modules/mixins/animate-scroll.js","../node_modules/react-scroll/modules/mixins/cancel-events.js","../node_modules/react-scroll/modules/mixins/passive-event-listeners.js","../node_modules/react-scroll/modules/mixins/scroll-element.js","../node_modules/react-scroll/modules/mixins/scroll-events.js","../node_modules/react-scroll/modules/mixins/scroll-hash.js","../node_modules/react-scroll/modules/mixins/scroll-link.js","../node_modules/react-scroll/modules/mixins/scroll-spy.js","../node_modules/react-scroll/modules/mixins/scroller.js","../node_modules/react-scroll/modules/mixins/smooth.js","../node_modules/react-scroll/modules/mixins/utils.js","../node_modules/react-side-effect/lib/index.js","../node_modules/react-slick/lib/arrows.js","../node_modules/react-slick/lib/default-props.js","../node_modules/react-slick/lib/dots.js","../node_modules/react-slick/lib/index.js","../node_modules/react-slick/lib/initial-state.js","../node_modules/react-slick/lib/inner-slider.js","../node_modules/react-slick/lib/slider.js","../node_modules/react-slick/lib/track.js","../node_modules/react-slick/lib/utils/innerSliderUtils.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/shallowequal/index.js","../node_modules/string-convert/camel2hyphen.js","../node_modules/style-to-object/src/index.ts","../node_modules/classnames/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../webpack/runtime/nonce","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/deprecations.ts","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/react-helmet/es/Helmet.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/styled-components/src/utils/interleave.js","../node_modules/styled-components/src/utils/isPlainObject.js","../node_modules/styled-components/src/utils/empties.js","../node_modules/styled-components/src/utils/isFunction.js","../node_modules/styled-components/src/utils/getComponentName.js","../node_modules/styled-components/src/utils/isStyledComponent.js","../node_modules/styled-components/src/constants.js","../node_modules/styled-components/src/utils/error.js","../node_modules/styled-components/src/sheet/GroupedTag.js","../node_modules/styled-components/src/sheet/GroupIDAllocator.js","../node_modules/styled-components/src/sheet/Rehydration.js","../node_modules/styled-components/src/utils/nonce.js","../node_modules/styled-components/src/sheet/dom.js","../node_modules/styled-components/src/sheet/Tag.js","../node_modules/styled-components/src/sheet/Sheet.js","../node_modules/styled-components/src/utils/generateAlphabeticName.js","../node_modules/styled-components/src/utils/hash.js","../node_modules/styled-components/src/utils/isStaticRules.js","../node_modules/styled-components/src/models/ComponentStyle.js","../node_modules/styled-components/src/utils/stylis.js","../node_modules/styled-components/src/utils/stylisPluginInsertRule.js","../node_modules/styled-components/src/models/StyleSheetManager.js","../node_modules/styled-components/src/models/Keyframes.js","../node_modules/styled-components/src/utils/hyphenateStyleName.js","../node_modules/styled-components/src/utils/flatten.js","../node_modules/styled-components/src/utils/isStatelessFunction.js","../node_modules/styled-components/src/utils/addUnitIfNeeded.js","../node_modules/styled-components/src/constructors/css.js","../node_modules/styled-components/src/utils/checkDynamicCreation.js","../node_modules/styled-components/src/utils/determineTheme.js","../node_modules/styled-components/src/utils/escape.js","../node_modules/styled-components/src/utils/generateComponentId.js","../node_modules/styled-components/src/utils/isTag.js","../node_modules/styled-components/src/utils/mixinDeep.js","../node_modules/styled-components/src/models/ThemeProvider.js","../node_modules/styled-components/src/models/StyledComponent.js","../node_modules/styled-components/src/utils/generateDisplayName.js","../node_modules/styled-components/src/utils/joinStrings.js","../node_modules/styled-components/src/utils/domElements.js","../node_modules/styled-components/src/constructors/styled.js","../node_modules/styled-components/src/constructors/constructWithOptions.js","../node_modules/styled-components/src/models/GlobalStyle.js","../node_modules/styled-components/src/constructors/keyframes.js","../node_modules/styled-components/src/models/ServerStyleSheet.js","../node_modules/styled-components/src/base.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","assets/svg/CloseIcon.jsx","assets/svg/Logo.jsx","components/Nav/Sidebar.jsx","components/Elements/Backdrop.jsx","assets/svg/BurgerIcon.jsx","components/Nav/TopNavbar.jsx","components/Buttons/FullButton.jsx","components/Sections/Header.jsx","components/boards/profiles.js","components/boards/database.js","components/boards/userInfoModal.js","backend/config.js","components/boards/board.js","components/Sections/Services.jsx","components/Elements/ProjectBox.jsx","components/Sections/Projects.jsx","components/Sections/Footer.jsx","../node_modules/@fortawesome/fontawesome-svg-core/index.mjs","../node_modules/@fortawesome/react-fontawesome/index.es.js","../node_modules/@fortawesome/free-brands-svg-icons/index.mjs","components/Sections/Contact.jsx","screens/Landing.jsx","components/Sections/Akinator.jsx","components/Sections/Bluffing.jsx","components/Sections/Taboo.jsx","components/Sections/OurMission.jsx","components/Sections/GameSkills.jsx","../node_modules/estree-util-is-identifier-name/lib/index.js","../node_modules/hast-util-whitespace/lib/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/index.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/lib/hast-to-react.js","../node_modules/style-to-object/esm/index.mjs","../node_modules/unist-util-position/lib/index.js","../node_modules/unist-util-stringify-position/lib/index.js","../node_modules/vfile-message/lib/index.js","../node_modules/hast-util-to-jsx-runtime/lib/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/html-url-attributes/lib/index.js","../node_modules/mdast-util-to-string/lib/index.js","../node_modules/micromark-util-chunked/index.js","../node_modules/micromark-util-subtokenize/lib/splice-buffer.js","../node_modules/micromark-util-subtokenize/index.js","../node_modules/micromark-util-combine-extensions/index.js","../node_modules/micromark-util-character/index.js","../node_modules/micromark-factory-space/index.js","../node_modules/micromark/lib/initialize/content.js","../node_modules/micromark/lib/initialize/document.js","../node_modules/micromark-core-commonmark/lib/blank-line.js","../node_modules/micromark-core-commonmark/lib/content.js","../node_modules/micromark/lib/initialize/flow.js","../node_modules/micromark/lib/initialize/text.js","../node_modules/micromark-core-commonmark/lib/thematic-break.js","../node_modules/micromark-core-commonmark/lib/list.js","../node_modules/micromark-core-commonmark/lib/block-quote.js","../node_modules/micromark-factory-destination/index.js","../node_modules/micromark-factory-label/index.js","../node_modules/micromark-factory-title/index.js","../node_modules/micromark-factory-whitespace/index.js","../node_modules/micromark-util-normalize-identifier/index.js","../node_modules/micromark-core-commonmark/lib/definition.js","../node_modules/micromark-core-commonmark/lib/code-indented.js","../node_modules/micromark-core-commonmark/lib/heading-atx.js","../node_modules/micromark-core-commonmark/lib/setext-underline.js","../node_modules/micromark-util-html-tag-name/index.js","../node_modules/micromark-core-commonmark/lib/html-flow.js","../node_modules/micromark-core-commonmark/lib/code-fenced.js","../node_modules/decode-named-character-reference/index.dom.js","../node_modules/micromark-core-commonmark/lib/character-reference.js","../node_modules/micromark-core-commonmark/lib/character-escape.js","../node_modules/micromark-core-commonmark/lib/line-ending.js","../node_modules/micromark-util-resolve-all/index.js","../node_modules/micromark-core-commonmark/lib/label-end.js","../node_modules/micromark-core-commonmark/lib/label-start-image.js","../node_modules/micromark-util-classify-character/index.js","../node_modules/micromark-core-commonmark/lib/attention.js","../node_modules/micromark-core-commonmark/lib/autolink.js","../node_modules/micromark-core-commonmark/lib/html-text.js","../node_modules/micromark-core-commonmark/lib/label-start-link.js","../node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../node_modules/micromark-core-commonmark/lib/code-text.js","../node_modules/micromark/lib/constructs.js","../node_modules/micromark/lib/create-tokenizer.js","../node_modules/micromark/lib/preprocess.js","../node_modules/micromark-util-decode-numeric-character-reference/index.js","../node_modules/micromark-util-decode-string/index.js","../node_modules/mdast-util-from-markdown/lib/index.js","../node_modules/micromark/lib/postprocess.js","../node_modules/micromark/lib/parse.js","../node_modules/remark-parse/lib/index.js","../node_modules/@ungap/structured-clone/esm/types.js","../node_modules/@ungap/structured-clone/esm/deserialize.js","../node_modules/@ungap/structured-clone/esm/serialize.js","../node_modules/@ungap/structured-clone/esm/index.js","../node_modules/micromark-util-sanitize-uri/index.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/unist-util-is/lib/index.js","../node_modules/unist-util-visit-parents/lib/index.js","../node_modules/unist-util-visit/lib/index.js","../node_modules/mdast-util-to-hast/lib/revert.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/trim-lines/index.js","../node_modules/mdast-util-to-hast/lib/handlers/index.js","../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/heading.js","../node_modules/mdast-util-to-hast/lib/handlers/html.js","../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/image.js","../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/link.js","../node_modules/mdast-util-to-hast/lib/handlers/list.js","../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../node_modules/mdast-util-to-hast/lib/handlers/root.js","../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../node_modules/mdast-util-to-hast/lib/handlers/table.js","../node_modules/mdast-util-to-hast/lib/handlers/table-cell.js","../node_modules/mdast-util-to-hast/lib/handlers/table-row.js","../node_modules/mdast-util-to-hast/lib/handlers/text.js","../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../node_modules/mdast-util-to-hast/lib/state.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/remark-rehype/lib/index.js","../node_modules/bail/index.js","../node_modules/unified/node_modules/is-plain-obj/index.js","../node_modules/trough/lib/index.js","../node_modules/vfile/lib/minpath.browser.js","../node_modules/vfile/lib/minproc.browser.js","../node_modules/vfile/lib/minurl.shared.js","../node_modules/vfile/lib/minurl.browser.js","../node_modules/vfile/lib/index.js","../node_modules/unified/lib/callable-instance.js","../node_modules/unified/lib/index.js","../node_modules/react-markdown/lib/index.js","../node_modules/ccount/index.js","../node_modules/mdast-util-find-and-replace/lib/index.js","../node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js","../node_modules/mdast-util-gfm-autolink-literal/lib/index.js","../node_modules/mdast-util-gfm-footnote/lib/index.js","../node_modules/mdast-util-gfm-strikethrough/lib/index.js","../node_modules/markdown-table/index.js","../node_modules/mdast-util-to-markdown/lib/handle/blockquote.js","../node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js","../node_modules/mdast-util-to-markdown/lib/handle/break.js","../node_modules/mdast-util-to-markdown/lib/handle/code.js","../node_modules/mdast-util-to-markdown/lib/util/check-quote.js","../node_modules/mdast-util-to-markdown/lib/util/encode-character-reference.js","../node_modules/mdast-util-to-markdown/lib/util/encode-info.js","../node_modules/mdast-util-to-markdown/lib/handle/emphasis.js","../node_modules/mdast-util-to-markdown/lib/util/check-emphasis.js","../node_modules/mdast-util-to-markdown/lib/handle/html.js","../node_modules/mdast-util-to-markdown/lib/handle/image.js","../node_modules/mdast-util-to-markdown/lib/handle/image-reference.js","../node_modules/mdast-util-to-markdown/lib/handle/inline-code.js","../node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.js","../node_modules/mdast-util-to-markdown/lib/handle/link.js","../node_modules/mdast-util-to-markdown/lib/handle/link-reference.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet.js","../node_modules/mdast-util-to-markdown/lib/util/check-rule.js","../node_modules/mdast-util-phrasing/lib/index.js","../node_modules/mdast-util-to-markdown/lib/handle/strong.js","../node_modules/mdast-util-to-markdown/lib/util/check-strong.js","../node_modules/mdast-util-to-markdown/lib/handle/index.js","../node_modules/mdast-util-to-markdown/lib/util/check-fence.js","../node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.js","../node_modules/longest-streak/index.js","../node_modules/mdast-util-to-markdown/lib/handle/definition.js","../node_modules/mdast-util-to-markdown/lib/handle/heading.js","../node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.js","../node_modules/mdast-util-to-markdown/lib/handle/list.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet-ordered.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet-other.js","../node_modules/mdast-util-to-markdown/lib/handle/list-item.js","../node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js","../node_modules/mdast-util-to-markdown/lib/handle/paragraph.js","../node_modules/mdast-util-to-markdown/lib/handle/root.js","../node_modules/mdast-util-to-markdown/lib/handle/text.js","../node_modules/mdast-util-to-markdown/lib/handle/thematic-break.js","../node_modules/mdast-util-to-markdown/lib/util/check-rule-repetition.js","../node_modules/mdast-util-gfm-table/lib/index.js","../node_modules/mdast-util-gfm-task-list-item/lib/index.js","../node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js","../node_modules/micromark-extension-gfm-footnote/lib/syntax.js","../node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js","../node_modules/micromark-extension-gfm-table/lib/edit-map.js","../node_modules/micromark-extension-gfm-table/lib/infer.js","../node_modules/micromark-extension-gfm-table/lib/syntax.js","../node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js","../node_modules/remark-gfm/lib/index.js","../node_modules/micromark-extension-gfm/index.js","../node_modules/mdast-util-gfm/lib/index.js","components/Sections/MarkdownRenderer.jsx","components/Sections/BlogPage.jsx","components/Elements/ImgBox.jsx","components/Sections/AboutUs.jsx","components/Sections/Blog.jsx","App.js","reportWebVitals.js","index.js"],"sourcesContent":["var QueryHandler = require('./QueryHandler');\nvar each = require('./Util').each;\n\n/**\n * Represents a single media query, manages it's state and registered handlers for this query\n *\n * @constructor\n * @param {string} query the media query string\n * @param {boolean} [isUnconditional=false] whether the media query should run regardless of whether the conditions are met. Primarily for helping older browsers deal with mobile-first design\n */\nfunction MediaQuery(query, isUnconditional) {\n this.query = query;\n this.isUnconditional = isUnconditional;\n this.handlers = [];\n this.mql = window.matchMedia(query);\n\n var self = this;\n this.listener = function(mql) {\n // Chrome passes an MediaQueryListEvent object, while other browsers pass MediaQueryList directly\n self.mql = mql.currentTarget || mql;\n self.assess();\n };\n this.mql.addListener(this.listener);\n}\n\nMediaQuery.prototype = {\n\n constuctor : MediaQuery,\n\n /**\n * add a handler for this query, triggering if already active\n *\n * @param {object} handler\n * @param {function} handler.match callback for when query is activated\n * @param {function} [handler.unmatch] callback for when query is deactivated\n * @param {function} [handler.setup] callback for immediate execution when a query handler is registered\n * @param {boolean} [handler.deferSetup=false] should the setup callback be deferred until the first time the handler is matched?\n */\n addHandler : function(handler) {\n var qh = new QueryHandler(handler);\n this.handlers.push(qh);\n\n this.matches() && qh.on();\n },\n\n /**\n * removes the given handler from the collection, and calls it's destroy methods\n *\n * @param {object || function} handler the handler to remove\n */\n removeHandler : function(handler) {\n var handlers = this.handlers;\n each(handlers, function(h, i) {\n if(h.equals(handler)) {\n h.destroy();\n return !handlers.splice(i,1); //remove from array and exit each early\n }\n });\n },\n\n /**\n * Determine whether the media query should be considered a match\n *\n * @return {Boolean} true if media query can be considered a match, false otherwise\n */\n matches : function() {\n return this.mql.matches || this.isUnconditional;\n },\n\n /**\n * Clears all handlers and unbinds events\n */\n clear : function() {\n each(this.handlers, function(handler) {\n handler.destroy();\n });\n this.mql.removeListener(this.listener);\n this.handlers.length = 0; //clear array\n },\n\n /*\n * Assesses the query, turning on all handlers if it matches, turning them off if it doesn't match\n */\n assess : function() {\n var action = this.matches() ? 'on' : 'off';\n\n each(this.handlers, function(handler) {\n handler[action]();\n });\n }\n};\n\nmodule.exports = MediaQuery;\n","var MediaQuery = require('./MediaQuery');\nvar Util = require('./Util');\nvar each = Util.each;\nvar isFunction = Util.isFunction;\nvar isArray = Util.isArray;\n\n/**\n * Allows for registration of query handlers.\n * Manages the query handler's state and is responsible for wiring up browser events\n *\n * @constructor\n */\nfunction MediaQueryDispatch () {\n if(!window.matchMedia) {\n throw new Error('matchMedia not present, legacy browsers require a polyfill');\n }\n\n this.queries = {};\n this.browserIsIncapable = !window.matchMedia('only all').matches;\n}\n\nMediaQueryDispatch.prototype = {\n\n constructor : MediaQueryDispatch,\n\n /**\n * Registers a handler for the given media query\n *\n * @param {string} q the media query\n * @param {object || Array || Function} options either a single query handler object, a function, or an array of query handlers\n * @param {function} options.match fired when query matched\n * @param {function} [options.unmatch] fired when a query is no longer matched\n * @param {function} [options.setup] fired when handler first triggered\n * @param {boolean} [options.deferSetup=false] whether setup should be run immediately or deferred until query is first matched\n * @param {boolean} [shouldDegrade=false] whether this particular media query should always run on incapable browsers\n */\n register : function(q, options, shouldDegrade) {\n var queries = this.queries,\n isUnconditional = shouldDegrade && this.browserIsIncapable;\n\n if(!queries[q]) {\n queries[q] = new MediaQuery(q, isUnconditional);\n }\n\n //normalise to object in an array\n if(isFunction(options)) {\n options = { match : options };\n }\n if(!isArray(options)) {\n options = [options];\n }\n each(options, function(handler) {\n if (isFunction(handler)) {\n handler = { match : handler };\n }\n queries[q].addHandler(handler);\n });\n\n return this;\n },\n\n /**\n * unregisters a query and all it's handlers, or a specific handler for a query\n *\n * @param {string} q the media query to target\n * @param {object || function} [handler] specific handler to unregister\n */\n unregister : function(q, handler) {\n var query = this.queries[q];\n\n if(query) {\n if(handler) {\n query.removeHandler(handler);\n }\n else {\n query.clear();\n delete this.queries[q];\n }\n }\n\n return this;\n }\n};\n\nmodule.exports = MediaQueryDispatch;\n","/**\n * Delegate to handle a media query being matched and unmatched.\n *\n * @param {object} options\n * @param {function} options.match callback for when the media query is matched\n * @param {function} [options.unmatch] callback for when the media query is unmatched\n * @param {function} [options.setup] one-time callback triggered the first time a query is matched\n * @param {boolean} [options.deferSetup=false] should the setup callback be run immediately, rather than first time query is matched?\n * @constructor\n */\nfunction QueryHandler(options) {\n this.options = options;\n !options.deferSetup && this.setup();\n}\n\nQueryHandler.prototype = {\n\n constructor : QueryHandler,\n\n /**\n * coordinates setup of the handler\n *\n * @function\n */\n setup : function() {\n if(this.options.setup) {\n this.options.setup();\n }\n this.initialised = true;\n },\n\n /**\n * coordinates setup and triggering of the handler\n *\n * @function\n */\n on : function() {\n !this.initialised && this.setup();\n this.options.match && this.options.match();\n },\n\n /**\n * coordinates the unmatch event for the handler\n *\n * @function\n */\n off : function() {\n this.options.unmatch && this.options.unmatch();\n },\n\n /**\n * called when a handler is to be destroyed.\n * delegates to the destroy or unmatch callbacks, depending on availability.\n *\n * @function\n */\n destroy : function() {\n this.options.destroy ? this.options.destroy() : this.off();\n },\n\n /**\n * determines equality by reference.\n * if object is supplied compare options, if function, compare match callback\n *\n * @function\n * @param {object || function} [target] the target for comparison\n */\n equals : function(target) {\n return this.options === target || this.options.match === target;\n }\n\n};\n\nmodule.exports = QueryHandler;\n","/**\n * Helper function for iterating over a collection\n *\n * @param collection\n * @param fn\n */\nfunction each(collection, fn) {\n var i = 0,\n length = collection.length,\n cont;\n\n for(i; i < length; i++) {\n cont = fn(collection[i], i);\n if(cont === false) {\n break; //allow early exit\n }\n }\n}\n\n/**\n * Helper function for determining whether target object is an array\n *\n * @param target the object under test\n * @return {Boolean} true if array, false otherwise\n */\nfunction isArray(target) {\n return Object.prototype.toString.apply(target) === '[object Array]';\n}\n\n/**\n * Helper function for determining whether target object is a function\n *\n * @param target the object under test\n * @return {Boolean} true if function, false otherwise\n */\nfunction isFunction(target) {\n return typeof target === 'function';\n}\n\nmodule.exports = {\n isFunction : isFunction,\n isArray : isArray,\n each : each\n};\n","var MediaQueryDispatch = require('./MediaQueryDispatch');\nmodule.exports = new MediaQueryDispatch();\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function (style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function (node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","var camel2hyphen = require('string-convert/camel2hyphen');\n\nvar isDimension = function (feature) {\n var re = /[height|width]$/;\n return re.test(feature);\n};\n\nvar obj2mq = function (obj) {\n var mq = '';\n var features = Object.keys(obj);\n features.forEach(function (feature, index) {\n var value = obj[feature];\n feature = camel2hyphen(feature);\n // Add px to dimension features\n if (isDimension(feature) && typeof value === 'number') {\n value = value + 'px';\n }\n if (value === true) {\n mq += feature;\n } else if (value === false) {\n mq += 'not ' + feature;\n } else {\n mq += '(' + feature + ': ' + value + ')';\n }\n if (index < features.length-1) {\n mq += ' and '\n }\n });\n return mq;\n};\n\nvar json2mq = function (query) {\n var mq = '';\n if (typeof query === 'string') {\n return query;\n }\n // Handling array of media queries\n if (query instanceof Array) {\n query.forEach(function (q, index) {\n mq += obj2mq(q);\n if (index < query.length-1) {\n mq += ', '\n }\n });\n return mq;\n }\n // Handling single media query\n return obj2mq(query);\n};\n\nmodule.exports = json2mq;","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3 &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/**\n * @license React\n * react-is.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\nSymbol.for(\"react.provider\");\nvar REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction typeOf(object) {\n if (\"object\" === typeof object && null !== object) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n switch (((object = object.type), object)) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return object;\n default:\n switch (((object = object && object.$$typeof), object)) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n return object;\n case REACT_CONSUMER_TYPE:\n return object;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n}\nexports.ContextConsumer = REACT_CONSUMER_TYPE;\nexports.ContextProvider = REACT_CONTEXT_TYPE;\nexports.Element = REACT_ELEMENT_TYPE;\nexports.ForwardRef = REACT_FORWARD_REF_TYPE;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Lazy = REACT_LAZY_TYPE;\nexports.Memo = REACT_MEMO_TYPE;\nexports.Portal = REACT_PORTAL_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nexports.isContextConsumer = function (object) {\n return typeOf(object) === REACT_CONSUMER_TYPE;\n};\nexports.isContextProvider = function (object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n};\nexports.isElement = function (object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n};\nexports.isForwardRef = function (object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n};\nexports.isFragment = function (object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n};\nexports.isLazy = function (object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n};\nexports.isMemo = function (object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n};\nexports.isPortal = function (object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n};\nexports.isProfiler = function (object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n};\nexports.isStrictMode = function (object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n};\nexports.isSuspense = function (object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n};\nexports.isSuspenseList = function (object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n};\nexports.isValidElementType = function (type) {\n return \"string\" === typeof type ||\n \"function\" === typeof type ||\n type === REACT_FRAGMENT_TYPE ||\n type === REACT_PROFILER_TYPE ||\n type === REACT_STRICT_MODE_TYPE ||\n type === REACT_SUSPENSE_TYPE ||\n type === REACT_SUSPENSE_LIST_TYPE ||\n type === REACT_OFFSCREEN_TYPE ||\n (\"object\" === typeof type &&\n null !== type &&\n (type.$$typeof === REACT_LAZY_TYPE ||\n type.$$typeof === REACT_MEMO_TYPE ||\n type.$$typeof === REACT_CONTEXT_TYPE ||\n type.$$typeof === REACT_CONSUMER_TYPE ||\n type.$$typeof === REACT_FORWARD_REF_TYPE ||\n type.$$typeof === REACT_CLIENT_REFERENCE ||\n void 0 !== type.getModuleId))\n ? !0\n : !1;\n};\nexports.typeOf = typeOf;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollLink = require('../mixins/scroll-link');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ButtonElement = function (_React$Component) {\n _inherits(ButtonElement, _React$Component);\n\n function ButtonElement() {\n _classCallCheck(this, ButtonElement);\n\n return _possibleConstructorReturn(this, (ButtonElement.__proto__ || Object.getPrototypeOf(ButtonElement)).apply(this, arguments));\n }\n\n _createClass(ButtonElement, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'button',\n this.props,\n this.props.children\n );\n }\n }]);\n\n return ButtonElement;\n}(_react2.default.Component);\n\n;\n\nexports.default = (0, _scrollLink2.default)(ButtonElement);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollElement = require('../mixins/scroll-element');\n\nvar _scrollElement2 = _interopRequireDefault(_scrollElement);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ElementWrapper = function (_React$Component) {\n _inherits(ElementWrapper, _React$Component);\n\n function ElementWrapper() {\n _classCallCheck(this, ElementWrapper);\n\n return _possibleConstructorReturn(this, (ElementWrapper.__proto__ || Object.getPrototypeOf(ElementWrapper)).apply(this, arguments));\n }\n\n _createClass(ElementWrapper, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n // Remove `parentBindings` and `name` from props\n var newProps = _extends({}, this.props);\n delete newProps.name;\n if (newProps.parentBindings) {\n delete newProps.parentBindings;\n }\n\n return _react2.default.createElement(\n 'div',\n _extends({}, newProps, { ref: function ref(el) {\n _this2.props.parentBindings.domNode = el;\n } }),\n this.props.children\n );\n }\n }]);\n\n return ElementWrapper;\n}(_react2.default.Component);\n\n;\n\nElementWrapper.propTypes = {\n name: _propTypes2.default.string,\n id: _propTypes2.default.string\n};\n\nexports.default = (0, _scrollElement2.default)(ElementWrapper);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollLink = require('../mixins/scroll-link');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar LinkElement = function (_React$Component) {\n _inherits(LinkElement, _React$Component);\n\n function LinkElement() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, LinkElement);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = LinkElement.__proto__ || Object.getPrototypeOf(LinkElement)).call.apply(_ref, [this].concat(args))), _this), _this.render = function () {\n return _react2.default.createElement(\n 'a',\n _this.props,\n _this.props.children\n );\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n return LinkElement;\n}(_react2.default.Component);\n\n;\n\nexports.default = (0, _scrollLink2.default)(LinkElement);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Helpers = exports.ScrollElement = exports.ScrollLink = exports.animateScroll = exports.scrollSpy = exports.Events = exports.scroller = exports.Element = exports.Button = exports.Link = undefined;\n\nvar _Link = require('./components/Link.js');\n\nvar _Link2 = _interopRequireDefault(_Link);\n\nvar _Button = require('./components/Button.js');\n\nvar _Button2 = _interopRequireDefault(_Button);\n\nvar _Element = require('./components/Element.js');\n\nvar _Element2 = _interopRequireDefault(_Element);\n\nvar _scroller = require('./mixins/scroller.js');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _scrollEvents = require('./mixins/scroll-events.js');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nvar _scrollSpy = require('./mixins/scroll-spy.js');\n\nvar _scrollSpy2 = _interopRequireDefault(_scrollSpy);\n\nvar _animateScroll = require('./mixins/animate-scroll.js');\n\nvar _animateScroll2 = _interopRequireDefault(_animateScroll);\n\nvar _scrollLink = require('./mixins/scroll-link.js');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nvar _scrollElement = require('./mixins/scroll-element.js');\n\nvar _scrollElement2 = _interopRequireDefault(_scrollElement);\n\nvar _Helpers = require('./mixins/Helpers.js');\n\nvar _Helpers2 = _interopRequireDefault(_Helpers);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Link = _Link2.default;\nexports.Button = _Button2.default;\nexports.Element = _Element2.default;\nexports.scroller = _scroller2.default;\nexports.Events = _scrollEvents2.default;\nexports.scrollSpy = _scrollSpy2.default;\nexports.animateScroll = _animateScroll2.default;\nexports.ScrollLink = _scrollLink2.default;\nexports.ScrollElement = _scrollElement2.default;\nexports.Helpers = _Helpers2.default;\nexports.default = { Link: _Link2.default, Button: _Button2.default, Element: _Element2.default, scroller: _scroller2.default, Events: _scrollEvents2.default, scrollSpy: _scrollSpy2.default, animateScroll: _animateScroll2.default, ScrollLink: _scrollLink2.default, ScrollElement: _scrollElement2.default, Helpers: _Helpers2.default };","\"use strict\";\n\n/* DEPRECATED */\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar ReactDOM = require('react-dom');\n\nvar utils = require('./utils');\nvar scrollSpy = require('./scroll-spy');\nvar defaultScroller = require('./scroller');\nvar PropTypes = require('prop-types');\nvar scrollHash = require('./scroll-hash');\n\nvar protoTypes = {\n to: PropTypes.string.isRequired,\n containerId: PropTypes.string,\n container: PropTypes.object,\n activeClass: PropTypes.string,\n spy: PropTypes.bool,\n smooth: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n offset: PropTypes.number,\n delay: PropTypes.number,\n isDynamic: PropTypes.bool,\n onClick: PropTypes.func,\n duration: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n absolute: PropTypes.bool,\n onSetActive: PropTypes.func,\n onSetInactive: PropTypes.func,\n ignoreCancelEvents: PropTypes.bool,\n hashSpy: PropTypes.bool,\n spyThrottle: PropTypes.number\n};\n\nvar Helpers = {\n Scroll: function Scroll(Component, customScroller) {\n\n console.warn(\"Helpers.Scroll is deprecated since v1.7.0\");\n\n var scroller = customScroller || defaultScroller;\n\n var Scroll = function (_React$Component) {\n _inherits(Scroll, _React$Component);\n\n function Scroll(props) {\n _classCallCheck(this, Scroll);\n\n var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, props));\n\n _initialiseProps.call(_this);\n\n _this.state = {\n active: false\n };\n return _this;\n }\n\n _createClass(Scroll, [{\n key: 'getScrollSpyContainer',\n value: function getScrollSpyContainer() {\n var containerId = this.props.containerId;\n var container = this.props.container;\n\n if (containerId) {\n return document.getElementById(containerId);\n }\n\n if (container && container.nodeType) {\n return container;\n }\n\n return document;\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.spy || this.props.hashSpy) {\n var scrollSpyContainer = this.getScrollSpyContainer();\n\n if (!scrollSpy.isMounted(scrollSpyContainer)) {\n scrollSpy.mount(scrollSpyContainer, this.props.spyThrottle);\n }\n\n if (this.props.hashSpy) {\n if (!scrollHash.isMounted()) {\n scrollHash.mount(scroller);\n }\n scrollHash.mapContainer(this.props.to, scrollSpyContainer);\n }\n\n if (this.props.spy) {\n scrollSpy.addStateHandler(this.stateHandler);\n }\n\n scrollSpy.addSpyHandler(this.spyHandler, scrollSpyContainer);\n\n this.setState({\n container: scrollSpyContainer\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n scrollSpy.unmount(this.stateHandler, this.spyHandler);\n }\n }, {\n key: 'render',\n value: function render() {\n var className = \"\";\n\n if (this.state && this.state.active) {\n className = ((this.props.className || \"\") + \" \" + (this.props.activeClass || \"active\")).trim();\n } else {\n className = this.props.className;\n }\n\n var props = _extends({}, this.props);\n\n for (var prop in protoTypes) {\n if (props.hasOwnProperty(prop)) {\n delete props[prop];\n }\n }\n\n props.className = className;\n props.onClick = this.handleClick;\n\n return React.createElement(Component, props);\n }\n }]);\n\n return Scroll;\n }(React.Component);\n\n var _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.scrollTo = function (to, props) {\n scroller.scrollTo(to, _extends({}, _this2.state, props));\n };\n\n this.handleClick = function (event) {\n\n /*\r\n * give the posibility to override onClick\r\n */\n\n if (_this2.props.onClick) {\n _this2.props.onClick(event);\n }\n\n /*\r\n * dont bubble the navigation\r\n */\n\n if (event.stopPropagation) event.stopPropagation();\n if (event.preventDefault) event.preventDefault();\n\n /*\r\n * do the magic!\r\n */\n _this2.scrollTo(_this2.props.to, _this2.props);\n };\n\n this.stateHandler = function () {\n if (scroller.getActiveLink() !== _this2.props.to) {\n if (_this2.state !== null && _this2.state.active && _this2.props.onSetInactive) {\n _this2.props.onSetInactive();\n }\n _this2.setState({ active: false });\n }\n };\n\n this.spyHandler = function (y) {\n\n var scrollSpyContainer = _this2.getScrollSpyContainer();\n\n if (scrollHash.isMounted() && !scrollHash.isInitialized()) {\n return;\n }\n\n var to = _this2.props.to;\n var element = null;\n var elemTopBound = 0;\n var elemBottomBound = 0;\n var containerTop = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var containerCords = scrollSpyContainer.getBoundingClientRect();\n containerTop = containerCords.top;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n if (!element) {\n return;\n }\n\n var cords = element.getBoundingClientRect();\n elemTopBound = cords.top - containerTop + y;\n elemBottomBound = elemTopBound + cords.height;\n }\n\n var offsetY = y - _this2.props.offset;\n var isInside = offsetY >= Math.floor(elemTopBound) && offsetY < Math.floor(elemBottomBound);\n var isOutside = offsetY < Math.floor(elemTopBound) || offsetY >= Math.floor(elemBottomBound);\n var activeLink = scroller.getActiveLink();\n\n if (isOutside) {\n if (to === activeLink) {\n scroller.setActiveLink(void 0);\n }\n\n if (_this2.props.hashSpy && scrollHash.getHash() === to) {\n scrollHash.changeHash();\n }\n\n if (_this2.props.spy && _this2.state.active) {\n _this2.setState({ active: false });\n _this2.props.onSetInactive && _this2.props.onSetInactive();\n }\n\n return scrollSpy.updateStates();\n }\n\n if (isInside && activeLink !== to) {\n scroller.setActiveLink(to);\n\n _this2.props.hashSpy && scrollHash.changeHash(to);\n\n if (_this2.props.spy) {\n _this2.setState({ active: true });\n _this2.props.onSetActive && _this2.props.onSetActive(to);\n }\n return scrollSpy.updateStates();\n }\n };\n };\n\n ;\n\n Scroll.propTypes = protoTypes;\n\n Scroll.defaultProps = { offset: 0 };\n\n return Scroll;\n },\n Element: function Element(Component) {\n\n console.warn(\"Helpers.Element is deprecated since v1.7.0\");\n\n var Element = function (_React$Component2) {\n _inherits(Element, _React$Component2);\n\n function Element(props) {\n _classCallCheck(this, Element);\n\n var _this3 = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this, props));\n\n _this3.childBindings = {\n domNode: null\n };\n return _this3;\n }\n\n _createClass(Element, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (typeof window === 'undefined') {\n return false;\n }\n this.registerElems(this.props.name);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.name !== prevProps.name) {\n this.registerElems(this.props.name);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (typeof window === 'undefined') {\n return false;\n }\n defaultScroller.unregister(this.props.name);\n }\n }, {\n key: 'registerElems',\n value: function registerElems(name) {\n defaultScroller.register(name, this.childBindings.domNode);\n }\n }, {\n key: 'render',\n value: function render() {\n return React.createElement(Component, _extends({}, this.props, { parentBindings: this.childBindings }));\n }\n }]);\n\n return Element;\n }(React.Component);\n\n ;\n\n Element.propTypes = {\n name: PropTypes.string,\n id: PropTypes.string\n };\n\n return Element;\n }\n};\n\nmodule.exports = Helpers;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _smooth = require('./smooth');\n\nvar _smooth2 = _interopRequireDefault(_smooth);\n\nvar _cancelEvents = require('./cancel-events');\n\nvar _cancelEvents2 = _interopRequireDefault(_cancelEvents);\n\nvar _scrollEvents = require('./scroll-events');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\r\n * Gets the easing type from the smooth prop within options.\r\n */\nvar getAnimationType = function getAnimationType(options) {\n return _smooth2.default[options.smooth] || _smooth2.default.defaultEasing;\n};\n/*\r\n * Function helper\r\n */\nvar functionWrapper = function functionWrapper(value) {\n return typeof value === 'function' ? value : function () {\n return value;\n };\n};\n/*\r\n * Wraps window properties to allow server side rendering\r\n */\nvar currentWindowProperties = function currentWindowProperties() {\n if (typeof window !== 'undefined') {\n return window.requestAnimationFrame || window.webkitRequestAnimationFrame;\n }\n};\n\n/*\r\n * Helper function to never extend 60fps on the webpage.\r\n */\nvar requestAnimationFrameHelper = function () {\n return currentWindowProperties() || function (callback, element, delay) {\n window.setTimeout(callback, delay || 1000 / 60, new Date().getTime());\n };\n}();\n\nvar makeData = function makeData() {\n return {\n currentPosition: 0,\n startPosition: 0,\n targetPosition: 0,\n progress: 0,\n duration: 0,\n cancel: false,\n\n target: null,\n containerElement: null,\n to: null,\n start: null,\n delta: null,\n percent: null,\n delayTimeout: null\n };\n};\n\nvar currentPositionX = function currentPositionX(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollLeft;\n } else {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;\n }\n};\n\nvar currentPositionY = function currentPositionY(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollTop;\n } else {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n }\n};\n\nvar scrollContainerWidth = function scrollContainerWidth(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollWidth - containerElement.offsetWidth;\n } else {\n var body = document.body;\n var html = document.documentElement;\n\n return Math.max(body.scrollWidth, body.offsetWidth, html.clientWidth, html.scrollWidth, html.offsetWidth);\n }\n};\n\nvar scrollContainerHeight = function scrollContainerHeight(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollHeight - containerElement.offsetHeight;\n } else {\n var body = document.body;\n var html = document.documentElement;\n\n return Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);\n }\n};\n\nvar animateScroll = function animateScroll(easing, options, timestamp) {\n var data = options.data;\n\n // Cancel on specific events\n if (!options.ignoreCancelEvents && data.cancel) {\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](data.to, data.target, data.currentPositionY);\n }\n return;\n };\n\n data.delta = Math.round(data.targetPosition - data.startPosition);\n\n if (data.start === null) {\n data.start = timestamp;\n }\n\n data.progress = timestamp - data.start;\n\n data.percent = data.progress >= data.duration ? 1 : easing(data.progress / data.duration);\n\n data.currentPosition = data.startPosition + Math.ceil(data.delta * data.percent);\n\n if (data.containerElement && data.containerElement !== document && data.containerElement !== document.body) {\n if (options.horizontal) {\n data.containerElement.scrollLeft = data.currentPosition;\n } else {\n data.containerElement.scrollTop = data.currentPosition;\n }\n } else {\n if (options.horizontal) {\n window.scrollTo(data.currentPosition, 0);\n } else {\n window.scrollTo(0, data.currentPosition);\n }\n }\n\n if (data.percent < 1) {\n var easedAnimate = animateScroll.bind(null, easing, options);\n requestAnimationFrameHelper.call(window, easedAnimate);\n return;\n }\n\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](data.to, data.target, data.currentPosition);\n }\n};\n\nvar setContainer = function setContainer(options) {\n options.data.containerElement = !options ? null : options.containerId ? document.getElementById(options.containerId) : options.container && options.container.nodeType ? options.container : document;\n};\n\nvar animateTopScroll = function animateTopScroll(scrollOffset, options, to, target) {\n options.data = options.data || makeData();\n\n window.clearTimeout(options.data.delayTimeout);\n\n var setCancel = function setCancel() {\n options.data.cancel = true;\n };\n _cancelEvents2.default.subscribe(setCancel);\n\n setContainer(options);\n\n options.data.start = null;\n options.data.cancel = false;\n options.data.startPosition = options.horizontal ? currentPositionX(options) : currentPositionY(options);\n options.data.targetPosition = options.absolute ? scrollOffset : scrollOffset + options.data.startPosition;\n\n if (options.data.startPosition === options.data.targetPosition) {\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](options.data.to, options.data.target, options.data.currentPosition);\n }\n return;\n }\n\n options.data.delta = Math.round(options.data.targetPosition - options.data.startPosition);\n\n options.data.duration = functionWrapper(options.duration)(options.data.delta);\n options.data.duration = isNaN(parseFloat(options.data.duration)) ? 1000 : parseFloat(options.data.duration);\n options.data.to = to;\n options.data.target = target;\n\n var easing = getAnimationType(options);\n var easedAnimate = animateScroll.bind(null, easing, options);\n\n if (options && options.delay > 0) {\n options.data.delayTimeout = window.setTimeout(function () {\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](options.data.to, options.data.target);\n }\n requestAnimationFrameHelper.call(window, easedAnimate);\n }, options.delay);\n return;\n }\n\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](options.data.to, options.data.target);\n }\n requestAnimationFrameHelper.call(window, easedAnimate);\n};\n\nvar proceedOptions = function proceedOptions(options) {\n options = _extends({}, options);\n options.data = options.data || makeData();\n options.absolute = true;\n return options;\n};\n\nvar scrollToTop = function scrollToTop(options) {\n animateTopScroll(0, proceedOptions(options));\n};\n\nvar scrollTo = function scrollTo(toPosition, options) {\n animateTopScroll(toPosition, proceedOptions(options));\n};\n\nvar scrollToBottom = function scrollToBottom(options) {\n options = proceedOptions(options);\n setContainer(options);\n animateTopScroll(options.horizontal ? scrollContainerWidth(options) : scrollContainerHeight(options), options);\n};\n\nvar scrollMore = function scrollMore(toPosition, options) {\n options = proceedOptions(options);\n setContainer(options);\n var currentPosition = options.horizontal ? currentPositionX(options) : currentPositionY(options);\n animateTopScroll(toPosition + currentPosition, options);\n};\n\nexports.default = {\n animateTopScroll: animateTopScroll,\n getAnimationType: getAnimationType,\n scrollToTop: scrollToTop,\n scrollToBottom: scrollToBottom,\n scrollTo: scrollTo,\n scrollMore: scrollMore\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nvar events = ['mousedown', 'mousewheel', 'touchmove', 'keydown'];\n\nexports.default = {\n subscribe: function subscribe(cancelEvent) {\n return typeof document !== 'undefined' && events.forEach(function (event) {\n return (0, _passiveEventListeners.addPassiveEventListener)(document, event, cancelEvent);\n });\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\r\n * Tell the browser that the event listener won't prevent a scroll.\r\n * Allowing the browser to continue scrolling without having to\r\n * to wait for the listener to return.\r\n */\nvar addPassiveEventListener = exports.addPassiveEventListener = function addPassiveEventListener(target, eventName, listener) {\n var listenerName = listener.name;\n if (!listenerName) {\n listenerName = eventName;\n console.warn('Listener must be a named function.');\n }\n\n if (!attachedListeners.has(eventName)) attachedListeners.set(eventName, new Set());\n var listeners = attachedListeners.get(eventName);\n if (listeners.has(listenerName)) return;\n\n var supportsPassiveOption = function () {\n var supportsPassiveOption = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassiveOption = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n return supportsPassiveOption;\n }();\n target.addEventListener(eventName, listener, supportsPassiveOption ? { passive: true } : false);\n listeners.add(listenerName);\n};\n\nvar removePassiveEventListener = exports.removePassiveEventListener = function removePassiveEventListener(target, eventName, listener) {\n target.removeEventListener(eventName, listener);\n attachedListeners.get(eventName).delete(listener.name || eventName);\n};\n\nvar attachedListeners = new Map();","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _scroller = require('./scroller');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nexports.default = function (Component) {\n var Element = function (_React$Component) {\n _inherits(Element, _React$Component);\n\n function Element(props) {\n _classCallCheck(this, Element);\n\n var _this = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this, props));\n\n _this.childBindings = {\n domNode: null\n };\n return _this;\n }\n\n _createClass(Element, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (typeof window === 'undefined') {\n return false;\n }\n this.registerElems(this.props.name);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.name !== prevProps.name) {\n this.registerElems(this.props.name);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (typeof window === 'undefined') {\n return false;\n }\n _scroller2.default.unregister(this.props.name);\n }\n }, {\n key: 'registerElems',\n value: function registerElems(name) {\n _scroller2.default.register(name, this.childBindings.domNode);\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(Component, _extends({}, this.props, { parentBindings: this.childBindings }));\n }\n }]);\n\n return Element;\n }(_react2.default.Component);\n\n ;\n\n Element.propTypes = {\n name: _propTypes2.default.string,\n id: _propTypes2.default.string\n };\n\n return Element;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar Events = {\n\tregistered: {},\n\tscrollEvent: {\n\t\tregister: function register(evtName, callback) {\n\t\t\tEvents.registered[evtName] = callback;\n\t\t},\n\t\tremove: function remove(evtName) {\n\t\t\tEvents.registered[evtName] = null;\n\t\t}\n\t}\n};\n\nexports.default = Events;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar scrollHash = {\n mountFlag: false,\n initialized: false,\n scroller: null,\n containers: {},\n\n mount: function mount(scroller) {\n this.scroller = scroller;\n\n this.handleHashChange = this.handleHashChange.bind(this);\n window.addEventListener('hashchange', this.handleHashChange);\n\n this.initStateFromHash();\n this.mountFlag = true;\n },\n mapContainer: function mapContainer(to, container) {\n this.containers[to] = container;\n },\n isMounted: function isMounted() {\n return this.mountFlag;\n },\n isInitialized: function isInitialized() {\n return this.initialized;\n },\n initStateFromHash: function initStateFromHash() {\n var _this = this;\n\n var hash = this.getHash();\n if (hash) {\n window.setTimeout(function () {\n _this.scrollTo(hash, true);\n _this.initialized = true;\n }, 10);\n } else {\n this.initialized = true;\n }\n },\n scrollTo: function scrollTo(to, isInit) {\n var scroller = this.scroller;\n var element = scroller.get(to);\n if (element && (isInit || to !== scroller.getActiveLink())) {\n var container = this.containers[to] || document;\n scroller.scrollTo(to, { container: container });\n }\n },\n getHash: function getHash() {\n return _utils2.default.getHash();\n },\n changeHash: function changeHash(to, saveHashHistory) {\n if (this.isInitialized() && _utils2.default.getHash() !== to) {\n _utils2.default.updateHash(to, saveHashHistory);\n }\n },\n handleHashChange: function handleHashChange() {\n this.scrollTo(this.getHash());\n },\n unmount: function unmount() {\n this.scroller = null;\n this.containers = null;\n window.removeEventListener('hashchange', this.handleHashChange);\n }\n};\n\nexports.default = scrollHash;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollSpy = require('./scroll-spy');\n\nvar _scrollSpy2 = _interopRequireDefault(_scrollSpy);\n\nvar _scroller = require('./scroller');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _scrollHash = require('./scroll-hash');\n\nvar _scrollHash2 = _interopRequireDefault(_scrollHash);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar protoTypes = {\n to: _propTypes2.default.string.isRequired,\n containerId: _propTypes2.default.string,\n container: _propTypes2.default.object,\n activeClass: _propTypes2.default.string,\n activeStyle: _propTypes2.default.object,\n spy: _propTypes2.default.bool,\n horizontal: _propTypes2.default.bool,\n smooth: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.string]),\n offset: _propTypes2.default.number,\n delay: _propTypes2.default.number,\n isDynamic: _propTypes2.default.bool,\n onClick: _propTypes2.default.func,\n duration: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.func]),\n absolute: _propTypes2.default.bool,\n onSetActive: _propTypes2.default.func,\n onSetInactive: _propTypes2.default.func,\n ignoreCancelEvents: _propTypes2.default.bool,\n hashSpy: _propTypes2.default.bool,\n saveHashHistory: _propTypes2.default.bool,\n spyThrottle: _propTypes2.default.number\n};\n\nexports.default = function (Component, customScroller) {\n\n var scroller = customScroller || _scroller2.default;\n\n var Link = function (_React$PureComponent) {\n _inherits(Link, _React$PureComponent);\n\n function Link(props) {\n _classCallCheck(this, Link);\n\n var _this = _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).call(this, props));\n\n _initialiseProps.call(_this);\n\n _this.state = {\n active: false\n };\n return _this;\n }\n\n _createClass(Link, [{\n key: 'getScrollSpyContainer',\n value: function getScrollSpyContainer() {\n var containerId = this.props.containerId;\n var container = this.props.container;\n\n if (containerId && !container) {\n return document.getElementById(containerId);\n }\n\n if (container && container.nodeType) {\n return container;\n }\n\n return document;\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.spy || this.props.hashSpy) {\n var scrollSpyContainer = this.getScrollSpyContainer();\n\n if (!_scrollSpy2.default.isMounted(scrollSpyContainer)) {\n _scrollSpy2.default.mount(scrollSpyContainer, this.props.spyThrottle);\n }\n\n if (this.props.hashSpy) {\n if (!_scrollHash2.default.isMounted()) {\n _scrollHash2.default.mount(scroller);\n }\n _scrollHash2.default.mapContainer(this.props.to, scrollSpyContainer);\n }\n\n _scrollSpy2.default.addSpyHandler(this.spyHandler, scrollSpyContainer);\n\n this.setState({\n container: scrollSpyContainer\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _scrollSpy2.default.unmount(this.stateHandler, this.spyHandler);\n }\n }, {\n key: 'render',\n value: function render() {\n var className = \"\";\n\n if (this.state && this.state.active) {\n className = ((this.props.className || \"\") + \" \" + (this.props.activeClass || \"active\")).trim();\n } else {\n className = this.props.className;\n }\n\n var style = {};\n\n if (this.state && this.state.active) {\n style = _extends({}, this.props.style, this.props.activeStyle);\n } else {\n style = _extends({}, this.props.style);\n }\n\n var props = _extends({}, this.props);\n\n for (var prop in protoTypes) {\n if (props.hasOwnProperty(prop)) {\n delete props[prop];\n }\n }\n\n props.className = className;\n props.style = style;\n props.onClick = this.handleClick;\n\n return _react2.default.createElement(Component, props);\n }\n }]);\n\n return Link;\n }(_react2.default.PureComponent);\n\n var _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.scrollTo = function (to, props) {\n scroller.scrollTo(to, _extends({}, _this2.state, props));\n };\n\n this.handleClick = function (event) {\n\n /*\r\n * give the posibility to override onClick\r\n */\n\n if (_this2.props.onClick) {\n _this2.props.onClick(event);\n }\n\n /*\r\n * dont bubble the navigation\r\n */\n\n if (event.stopPropagation) event.stopPropagation();\n if (event.preventDefault) event.preventDefault();\n\n /*\r\n * do the magic!\r\n */\n _this2.scrollTo(_this2.props.to, _this2.props);\n };\n\n this.spyHandler = function (x, y) {\n var scrollSpyContainer = _this2.getScrollSpyContainer();\n\n if (_scrollHash2.default.isMounted() && !_scrollHash2.default.isInitialized()) {\n return;\n }\n\n var horizontal = _this2.props.horizontal;\n\n var to = _this2.props.to;\n var element = null;\n var isInside = void 0;\n var isOutside = void 0;\n\n if (horizontal) {\n var elemLeftBound = 0;\n var elemRightBound = 0;\n var containerLeft = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var containerCords = scrollSpyContainer.getBoundingClientRect();\n containerLeft = containerCords.left;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n if (!element) {\n return;\n }\n\n var cords = element.getBoundingClientRect();\n elemLeftBound = cords.left - containerLeft + x;\n elemRightBound = elemLeftBound + cords.width;\n }\n\n var offsetX = x - _this2.props.offset;\n isInside = offsetX >= Math.floor(elemLeftBound) && offsetX < Math.floor(elemRightBound);\n isOutside = offsetX < Math.floor(elemLeftBound) || offsetX >= Math.floor(elemRightBound);\n } else {\n var elemTopBound = 0;\n var elemBottomBound = 0;\n var containerTop = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var _containerCords = scrollSpyContainer.getBoundingClientRect();\n containerTop = _containerCords.top;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n if (!element) {\n return;\n }\n\n var _cords = element.getBoundingClientRect();\n elemTopBound = _cords.top - containerTop + y;\n elemBottomBound = elemTopBound + _cords.height;\n }\n\n var offsetY = y - _this2.props.offset;\n isInside = offsetY >= Math.floor(elemTopBound) && offsetY < Math.floor(elemBottomBound);\n isOutside = offsetY < Math.floor(elemTopBound) || offsetY >= Math.floor(elemBottomBound);\n }\n\n var activeLink = scroller.getActiveLink();\n\n if (isOutside) {\n if (to === activeLink) {\n scroller.setActiveLink(void 0);\n }\n\n if (_this2.props.hashSpy && _scrollHash2.default.getHash() === to) {\n var _props$saveHashHistor = _this2.props.saveHashHistory,\n saveHashHistory = _props$saveHashHistor === undefined ? false : _props$saveHashHistor;\n\n _scrollHash2.default.changeHash(\"\", saveHashHistory);\n }\n\n if (_this2.props.spy && _this2.state.active) {\n _this2.setState({ active: false });\n _this2.props.onSetInactive && _this2.props.onSetInactive(to, element);\n }\n }\n\n if (isInside && (activeLink !== to || _this2.state.active === false)) {\n scroller.setActiveLink(to);\n\n var _props$saveHashHistor2 = _this2.props.saveHashHistory,\n _saveHashHistory = _props$saveHashHistor2 === undefined ? false : _props$saveHashHistor2;\n\n _this2.props.hashSpy && _scrollHash2.default.changeHash(to, _saveHashHistory);\n\n if (_this2.props.spy) {\n _this2.setState({ active: true });\n _this2.props.onSetActive && _this2.props.onSetActive(to, element);\n }\n }\n };\n };\n\n ;\n\n Link.propTypes = protoTypes;\n\n Link.defaultProps = { offset: 0 };\n\n return Link;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _lodash = require('lodash.throttle');\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The eventHandler will execute at a rate of 15fps by default\nvar eventThrottler = function eventThrottler(eventHandler) {\n var throttleAmount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 66;\n return (0, _lodash2.default)(eventHandler, throttleAmount);\n};\n\nvar scrollSpy = {\n\n spyCallbacks: [],\n spySetState: [],\n scrollSpyContainers: [],\n\n mount: function mount(scrollSpyContainer, throttle) {\n if (scrollSpyContainer) {\n var eventHandler = eventThrottler(function (event) {\n scrollSpy.scrollHandler(scrollSpyContainer);\n }, throttle);\n scrollSpy.scrollSpyContainers.push(scrollSpyContainer);\n (0, _passiveEventListeners.addPassiveEventListener)(scrollSpyContainer, 'scroll', eventHandler);\n }\n },\n isMounted: function isMounted(scrollSpyContainer) {\n return scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer) !== -1;\n },\n currentPositionX: function currentPositionX(scrollSpyContainer) {\n if (scrollSpyContainer === document) {\n var supportPageOffset = window.pageYOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;\n } else {\n return scrollSpyContainer.scrollLeft;\n }\n },\n currentPositionY: function currentPositionY(scrollSpyContainer) {\n if (scrollSpyContainer === document) {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n } else {\n return scrollSpyContainer.scrollTop;\n }\n },\n scrollHandler: function scrollHandler(scrollSpyContainer) {\n var callbacks = scrollSpy.scrollSpyContainers[scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer)].spyCallbacks || [];\n callbacks.forEach(function (c) {\n return c(scrollSpy.currentPositionX(scrollSpyContainer), scrollSpy.currentPositionY(scrollSpyContainer));\n });\n },\n addStateHandler: function addStateHandler(handler) {\n scrollSpy.spySetState.push(handler);\n },\n addSpyHandler: function addSpyHandler(handler, scrollSpyContainer) {\n var container = scrollSpy.scrollSpyContainers[scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer)];\n\n if (!container.spyCallbacks) {\n container.spyCallbacks = [];\n }\n\n container.spyCallbacks.push(handler);\n\n handler(scrollSpy.currentPositionX(scrollSpyContainer), scrollSpy.currentPositionY(scrollSpyContainer));\n },\n updateStates: function updateStates() {\n scrollSpy.spySetState.forEach(function (s) {\n return s();\n });\n },\n unmount: function unmount(stateHandler, spyHandler) {\n scrollSpy.scrollSpyContainers.forEach(function (c) {\n return c.spyCallbacks && c.spyCallbacks.length && c.spyCallbacks.indexOf(spyHandler) > -1 && c.spyCallbacks.splice(c.spyCallbacks.indexOf(spyHandler), 1);\n });\n\n if (scrollSpy.spySetState && scrollSpy.spySetState.length && scrollSpy.spySetState.indexOf(stateHandler) > -1) {\n scrollSpy.spySetState.splice(scrollSpy.spySetState.indexOf(stateHandler), 1);\n }\n\n document.removeEventListener('scroll', scrollSpy.scrollHandler);\n },\n\n\n update: function update() {\n return scrollSpy.scrollSpyContainers.forEach(function (c) {\n return scrollSpy.scrollHandler(c);\n });\n }\n};\n\nexports.default = scrollSpy;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _animateScroll = require('./animate-scroll');\n\nvar _animateScroll2 = _interopRequireDefault(_animateScroll);\n\nvar _scrollEvents = require('./scroll-events');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar __mapped = {};\nvar __activeLink = void 0;\n\nexports.default = {\n\n unmount: function unmount() {\n __mapped = {};\n },\n\n register: function register(name, element) {\n __mapped[name] = element;\n },\n\n unregister: function unregister(name) {\n delete __mapped[name];\n },\n\n get: function get(name) {\n return __mapped[name] || document.getElementById(name) || document.getElementsByName(name)[0] || document.getElementsByClassName(name)[0];\n },\n\n setActiveLink: function setActiveLink(link) {\n return __activeLink = link;\n },\n\n getActiveLink: function getActiveLink() {\n return __activeLink;\n },\n\n scrollTo: function scrollTo(to, props) {\n\n var target = this.get(to);\n\n if (!target) {\n console.warn(\"target Element not found\");\n return;\n }\n\n props = _extends({}, props, { absolute: false });\n\n var containerId = props.containerId;\n var container = props.container;\n\n var containerElement = void 0;\n if (containerId) {\n containerElement = document.getElementById(containerId);\n } else if (container && container.nodeType) {\n containerElement = container;\n } else {\n containerElement = document;\n }\n\n props.absolute = true;\n\n var horizontal = props.horizontal;\n var scrollOffset = _utils2.default.scrollOffset(containerElement, target, horizontal) + (props.offset || 0);\n\n /*\r\n * if animate is not provided just scroll into the view\r\n */\n if (!props.smooth) {\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](to, target);\n }\n\n if (containerElement === document) {\n if (props.horizontal) {\n window.scrollTo(scrollOffset, 0);\n } else {\n window.scrollTo(0, scrollOffset);\n }\n } else {\n containerElement.scrollTop = scrollOffset;\n }\n\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](to, target);\n }\n\n return;\n }\n\n /*\r\n * Animate scrolling\r\n */\n\n _animateScroll2.default.animateTopScroll(scrollOffset, props, to, target);\n }\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n /*\r\n * https://github.com/oblador/angular-scroll (duScrollDefaultEasing)\r\n */\n defaultEasing: function defaultEasing(x) {\n if (x < 0.5) {\n return Math.pow(x * 2, 2) / 2;\n }\n return 1 - Math.pow((1 - x) * 2, 2) / 2;\n },\n /*\r\n * https://gist.github.com/gre/1650294\r\n */\n // no easing, no acceleration\n linear: function linear(x) {\n return x;\n },\n // accelerating from zero velocity\n easeInQuad: function easeInQuad(x) {\n return x * x;\n },\n // decelerating to zero velocity\n easeOutQuad: function easeOutQuad(x) {\n return x * (2 - x);\n },\n // acceleration until halfway, then deceleration\n easeInOutQuad: function easeInOutQuad(x) {\n return x < .5 ? 2 * x * x : -1 + (4 - 2 * x) * x;\n },\n // accelerating from zero velocity \n easeInCubic: function easeInCubic(x) {\n return x * x * x;\n },\n // decelerating to zero velocity π\n easeOutCubic: function easeOutCubic(x) {\n return --x * x * x + 1;\n },\n // acceleration until halfway, then deceleration \n easeInOutCubic: function easeInOutCubic(x) {\n return x < .5 ? 4 * x * x * x : (x - 1) * (2 * x - 2) * (2 * x - 2) + 1;\n },\n // accelerating from zero velocity \n easeInQuart: function easeInQuart(x) {\n return x * x * x * x;\n },\n // decelerating to zero velocity \n easeOutQuart: function easeOutQuart(x) {\n return 1 - --x * x * x * x;\n },\n // acceleration until halfway, then deceleration\n easeInOutQuart: function easeInOutQuart(x) {\n return x < .5 ? 8 * x * x * x * x : 1 - 8 * --x * x * x * x;\n },\n // accelerating from zero velocity\n easeInQuint: function easeInQuint(x) {\n return x * x * x * x * x;\n },\n // decelerating to zero velocity\n easeOutQuint: function easeOutQuint(x) {\n return 1 + --x * x * x * x * x;\n },\n // acceleration until halfway, then deceleration \n easeInOutQuint: function easeInOutQuint(x) {\n return x < .5 ? 16 * x * x * x * x * x : 1 + 16 * --x * x * x * x * x;\n }\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar updateHash = function updateHash(hash, historyUpdate) {\n var hashVal = hash.indexOf(\"#\") === 0 ? hash.substring(1) : hash;\n var hashToUpdate = hashVal ? \"#\" + hashVal : \"\";\n var curLoc = window && window.location;\n var urlToPush = hashToUpdate ? curLoc.pathname + curLoc.search + hashToUpdate : curLoc.pathname + curLoc.search;\n historyUpdate ? history.pushState(history.state, \"\", urlToPush) : history.replaceState(history.state, \"\", urlToPush);\n};\n\nvar getHash = function getHash() {\n return window.location.hash.replace(/^#/, \"\");\n};\n\nvar filterElementInContainer = function filterElementInContainer(container) {\n return function (element) {\n return container.contains ? container != element && container.contains(element) : !!(container.compareDocumentPosition(element) & 16);\n };\n};\n\nvar isPositioned = function isPositioned(element) {\n return getComputedStyle(element).position !== \"static\";\n};\n\nvar getElementOffsetInfoUntil = function getElementOffsetInfoUntil(element, predicate) {\n var offsetTop = element.offsetTop;\n var currentOffsetParent = element.offsetParent;\n\n while (currentOffsetParent && !predicate(currentOffsetParent)) {\n offsetTop += currentOffsetParent.offsetTop;\n currentOffsetParent = currentOffsetParent.offsetParent;\n }\n\n return { offsetTop: offsetTop, offsetParent: currentOffsetParent };\n};\n\nvar scrollOffset = function scrollOffset(c, t, horizontal) {\n if (horizontal) {\n return c === document ? t.getBoundingClientRect().left + (window.scrollX || window.pageXOffset) : getComputedStyle(c).position !== \"static\" ? t.offsetLeft : t.offsetLeft - c.offsetLeft;\n } else {\n if (c === document) {\n return t.getBoundingClientRect().top + (window.scrollY || window.pageYOffset);\n }\n\n // The offsetParent of an element, according to MDN, is its nearest positioned\n // (an element whose position is anything other than static) ancestor. The offsetTop\n // of an element is taken with respect to its offsetParent which may not neccessarily\n // be its parentElement except the parent itself is positioned.\n\n // So if containerElement is positioned, then it must be an offsetParent somewhere\n // If it happens that targetElement is a descendant of the containerElement, and there\n // is not intermediate positioned element between the two of them, i.e.\n // targetElement\"s offsetParent is the same as the containerElement, then the\n // distance between the two will be the offsetTop of the targetElement.\n // If, on the other hand, there are intermediate positioned elements between the\n // two entities, the distance between the targetElement and the containerElement\n // will be the accumulation of the offsetTop of the element and that of its\n // subsequent offsetParent until the containerElement is reached, since it\n // will also be an offsetParent at some point due to the fact that it is positioned.\n\n // If the containerElement is not positioned, then it can\"t be an offsetParent,\n // which means that the offsetTop of the targetElement would not be with respect to it.\n // However, if the two of them happen to have the same offsetParent, then\n // the distance between them will be the difference between their offsetTop\n // since they are both taken with respect to the same entity.\n // The last resort would be to accumulate their offsetTop until a common\n // offsetParent is reached (usually the document) and taking the difference\n // between the accumulated offsetTops\n\n if (isPositioned(c)) {\n if (t.offsetParent !== c) {\n var isContainerElementOrDocument = function isContainerElementOrDocument(e) {\n return e === c || e === document;\n };\n\n var _getElementOffsetInfo = getElementOffsetInfoUntil(t, isContainerElementOrDocument),\n offsetTop = _getElementOffsetInfo.offsetTop,\n offsetParent = _getElementOffsetInfo.offsetParent;\n\n if (offsetParent !== c) {\n throw new Error(\"Seems containerElement is not an ancestor of the Element\");\n }\n\n return offsetTop;\n }\n\n return t.offsetTop;\n }\n\n if (t.offsetParent === c.offsetParent) {\n return t.offsetTop - c.offsetTop;\n }\n\n var isDocument = function isDocument(e) {\n return e === document;\n };\n return getElementOffsetInfoUntil(t, isDocument).offsetTop - getElementOffsetInfoUntil(c, isDocument).offsetTop;\n }\n};\n\nexports.default = {\n updateHash: updateHash,\n getHash: getHash,\n filterElementInContainer: filterElementInContainer,\n scrollOffset: scrollOffset\n};","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect =\n /*#__PURE__*/\n function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;\n","\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PrevArrow = exports.NextArrow = void 0;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nvar PrevArrow = exports.PrevArrow = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(PrevArrow, _React$PureComponent);\n var _super = _createSuper(PrevArrow);\n function PrevArrow() {\n _classCallCheck(this, PrevArrow);\n return _super.apply(this, arguments);\n }\n _createClass(PrevArrow, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n if (e) {\n e.preventDefault();\n }\n this.props.clickHandler(options, e);\n }\n }, {\n key: \"render\",\n value: function render() {\n var prevClasses = {\n \"slick-arrow\": true,\n \"slick-prev\": true\n };\n var prevHandler = this.clickHandler.bind(this, {\n message: \"previous\"\n });\n if (!this.props.infinite && (this.props.currentSlide === 0 || this.props.slideCount <= this.props.slidesToShow)) {\n prevClasses[\"slick-disabled\"] = true;\n prevHandler = null;\n }\n var prevArrowProps = {\n key: \"0\",\n \"data-role\": \"none\",\n className: (0, _classnames[\"default\"])(prevClasses),\n style: {\n display: \"block\"\n },\n onClick: prevHandler\n };\n var customProps = {\n currentSlide: this.props.currentSlide,\n slideCount: this.props.slideCount\n };\n var prevArrow;\n if (this.props.prevArrow) {\n prevArrow = /*#__PURE__*/_react[\"default\"].cloneElement(this.props.prevArrow, _objectSpread(_objectSpread({}, prevArrowProps), customProps));\n } else {\n prevArrow = /*#__PURE__*/_react[\"default\"].createElement(\"button\", _extends({\n key: \"0\",\n type: \"button\"\n }, prevArrowProps), \" \", \"Previous\");\n }\n return prevArrow;\n }\n }]);\n return PrevArrow;\n}(_react[\"default\"].PureComponent);\nvar NextArrow = exports.NextArrow = /*#__PURE__*/function (_React$PureComponent2) {\n _inherits(NextArrow, _React$PureComponent2);\n var _super2 = _createSuper(NextArrow);\n function NextArrow() {\n _classCallCheck(this, NextArrow);\n return _super2.apply(this, arguments);\n }\n _createClass(NextArrow, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n if (e) {\n e.preventDefault();\n }\n this.props.clickHandler(options, e);\n }\n }, {\n key: \"render\",\n value: function render() {\n var nextClasses = {\n \"slick-arrow\": true,\n \"slick-next\": true\n };\n var nextHandler = this.clickHandler.bind(this, {\n message: \"next\"\n });\n if (!(0, _innerSliderUtils.canGoNext)(this.props)) {\n nextClasses[\"slick-disabled\"] = true;\n nextHandler = null;\n }\n var nextArrowProps = {\n key: \"1\",\n \"data-role\": \"none\",\n className: (0, _classnames[\"default\"])(nextClasses),\n style: {\n display: \"block\"\n },\n onClick: nextHandler\n };\n var customProps = {\n currentSlide: this.props.currentSlide,\n slideCount: this.props.slideCount\n };\n var nextArrow;\n if (this.props.nextArrow) {\n nextArrow = /*#__PURE__*/_react[\"default\"].cloneElement(this.props.nextArrow, _objectSpread(_objectSpread({}, nextArrowProps), customProps));\n } else {\n nextArrow = /*#__PURE__*/_react[\"default\"].createElement(\"button\", _extends({\n key: \"1\",\n type: \"button\"\n }, nextArrowProps), \" \", \"Next\");\n }\n return nextArrow;\n }\n }]);\n return NextArrow;\n}(_react[\"default\"].PureComponent);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar _react = _interopRequireDefault(require(\"react\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nvar defaultProps = {\n accessibility: true,\n adaptiveHeight: false,\n afterChange: null,\n appendDots: function appendDots(dots) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"ul\", {\n style: {\n display: \"block\"\n }\n }, dots);\n },\n arrows: true,\n autoplay: false,\n autoplaySpeed: 3000,\n beforeChange: null,\n centerMode: false,\n centerPadding: \"50px\",\n className: \"\",\n cssEase: \"ease\",\n customPaging: function customPaging(i) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"button\", null, i + 1);\n },\n dots: false,\n dotsClass: \"slick-dots\",\n draggable: true,\n easing: \"linear\",\n edgeFriction: 0.35,\n fade: false,\n focusOnSelect: false,\n infinite: true,\n initialSlide: 0,\n lazyLoad: null,\n nextArrow: null,\n onEdge: null,\n onInit: null,\n onLazyLoadError: null,\n onReInit: null,\n pauseOnDotsHover: false,\n pauseOnFocus: false,\n pauseOnHover: true,\n prevArrow: null,\n responsive: null,\n rows: 1,\n rtl: false,\n slide: \"div\",\n slidesPerRow: 1,\n slidesToScroll: 1,\n slidesToShow: 1,\n speed: 500,\n swipe: true,\n swipeEvent: null,\n swipeToSlide: false,\n touchMove: true,\n touchThreshold: 5,\n useCSS: true,\n useTransform: true,\n variableWidth: false,\n vertical: false,\n waitForAnimate: true,\n asNavFor: null,\n unslick: false\n};\nvar _default = exports[\"default\"] = defaultProps;","\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Dots = void 0;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nvar getDotCount = function getDotCount(spec) {\n var dots;\n if (spec.infinite) {\n dots = Math.ceil(spec.slideCount / spec.slidesToScroll);\n } else {\n dots = Math.ceil((spec.slideCount - spec.slidesToShow) / spec.slidesToScroll) + 1;\n }\n return dots;\n};\nvar Dots = exports.Dots = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Dots, _React$PureComponent);\n var _super = _createSuper(Dots);\n function Dots() {\n _classCallCheck(this, Dots);\n return _super.apply(this, arguments);\n }\n _createClass(Dots, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n // In Autoplay the focus stays on clicked button even after transition\n // to next slide. That only goes away by click somewhere outside\n e.preventDefault();\n this.props.clickHandler(options);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n onMouseEnter = _this$props.onMouseEnter,\n onMouseOver = _this$props.onMouseOver,\n onMouseLeave = _this$props.onMouseLeave,\n infinite = _this$props.infinite,\n slidesToScroll = _this$props.slidesToScroll,\n slidesToShow = _this$props.slidesToShow,\n slideCount = _this$props.slideCount,\n currentSlide = _this$props.currentSlide;\n var dotCount = getDotCount({\n slideCount: slideCount,\n slidesToScroll: slidesToScroll,\n slidesToShow: slidesToShow,\n infinite: infinite\n });\n var mouseEvents = {\n onMouseEnter: onMouseEnter,\n onMouseOver: onMouseOver,\n onMouseLeave: onMouseLeave\n };\n var dots = [];\n for (var i = 0; i < dotCount; i++) {\n var _rightBound = (i + 1) * slidesToScroll - 1;\n var rightBound = infinite ? _rightBound : (0, _innerSliderUtils.clamp)(_rightBound, 0, slideCount - 1);\n var _leftBound = rightBound - (slidesToScroll - 1);\n var leftBound = infinite ? _leftBound : (0, _innerSliderUtils.clamp)(_leftBound, 0, slideCount - 1);\n var className = (0, _classnames[\"default\"])({\n \"slick-active\": infinite ? currentSlide >= leftBound && currentSlide <= rightBound : currentSlide === leftBound\n });\n var dotOptions = {\n message: \"dots\",\n index: i,\n slidesToScroll: slidesToScroll,\n currentSlide: currentSlide\n };\n var onClick = this.clickHandler.bind(this, dotOptions);\n dots = dots.concat( /*#__PURE__*/_react[\"default\"].createElement(\"li\", {\n key: i,\n className: className\n }, /*#__PURE__*/_react[\"default\"].cloneElement(this.props.customPaging(i), {\n onClick: onClick\n })));\n }\n return /*#__PURE__*/_react[\"default\"].cloneElement(this.props.appendDots(dots), _objectSpread({\n className: this.props.dotsClass\n }, mouseEvents));\n }\n }]);\n return Dots;\n}(_react[\"default\"].PureComponent);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar _slider = _interopRequireDefault(require(\"./slider\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nvar _default = exports[\"default\"] = _slider[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar initialState = {\n animating: false,\n autoplaying: null,\n currentDirection: 0,\n currentLeft: null,\n currentSlide: 0,\n direction: 1,\n dragging: false,\n edgeDragged: false,\n initialized: false,\n lazyLoadedList: [],\n listHeight: null,\n listWidth: null,\n scrolling: false,\n slideCount: null,\n slideHeight: null,\n slideWidth: null,\n swipeLeft: null,\n swiped: false,\n // used by swipeEvent. differentites between touch and swipe.\n swiping: false,\n touchObject: {\n startX: 0,\n startY: 0,\n curX: 0,\n curY: 0\n },\n trackStyle: {},\n trackWidth: 0,\n targetSlide: 0\n};\nvar _default = exports[\"default\"] = initialState;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InnerSlider = void 0;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _initialState = _interopRequireDefault(require(\"./initial-state\"));\nvar _lodash = _interopRequireDefault(require(\"lodash.debounce\"));\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\nvar _track = require(\"./track\");\nvar _dots = require(\"./dots\");\nvar _arrows = require(\"./arrows\");\nvar _resizeObserverPolyfill = _interopRequireDefault(require(\"resize-observer-polyfill\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar InnerSlider = exports.InnerSlider = /*#__PURE__*/function (_React$Component) {\n _inherits(InnerSlider, _React$Component);\n var _super = _createSuper(InnerSlider);\n function InnerSlider(props) {\n var _this;\n _classCallCheck(this, InnerSlider);\n _this = _super.call(this, props);\n _defineProperty(_assertThisInitialized(_this), \"listRefHandler\", function (ref) {\n return _this.list = ref;\n });\n _defineProperty(_assertThisInitialized(_this), \"trackRefHandler\", function (ref) {\n return _this.track = ref;\n });\n _defineProperty(_assertThisInitialized(_this), \"adaptHeight\", function () {\n if (_this.props.adaptiveHeight && _this.list) {\n var elem = _this.list.querySelector(\"[data-index=\\\"\".concat(_this.state.currentSlide, \"\\\"]\"));\n _this.list.style.height = (0, _innerSliderUtils.getHeight)(elem) + \"px\";\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"componentDidMount\", function () {\n _this.props.onInit && _this.props.onInit();\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_objectSpread(_objectSpread({}, _this.props), _this.state));\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n }\n var spec = _objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props);\n _this.updateState(spec, true, function () {\n _this.adaptHeight();\n _this.props.autoplay && _this.autoPlay(\"update\");\n });\n if (_this.props.lazyLoad === \"progressive\") {\n _this.lazyLoadTimer = setInterval(_this.progressiveLazyLoad, 1000);\n }\n _this.ro = new _resizeObserverPolyfill[\"default\"](function () {\n if (_this.state.animating) {\n _this.onWindowResized(false); // don't set trackStyle hence don't break animation\n _this.callbackTimers.push(setTimeout(function () {\n return _this.onWindowResized();\n }, _this.props.speed));\n } else {\n _this.onWindowResized();\n }\n });\n _this.ro.observe(_this.list);\n document.querySelectorAll && Array.prototype.forEach.call(document.querySelectorAll(\".slick-slide\"), function (slide) {\n slide.onfocus = _this.props.pauseOnFocus ? _this.onSlideFocus : null;\n slide.onblur = _this.props.pauseOnFocus ? _this.onSlideBlur : null;\n });\n if (window.addEventListener) {\n window.addEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.attachEvent(\"onresize\", _this.onWindowResized);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"componentWillUnmount\", function () {\n if (_this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n }\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n }\n if (_this.callbackTimers.length) {\n _this.callbackTimers.forEach(function (timer) {\n return clearTimeout(timer);\n });\n _this.callbackTimers = [];\n }\n if (window.addEventListener) {\n window.removeEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.detachEvent(\"onresize\", _this.onWindowResized);\n }\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n _this.ro.disconnect();\n });\n _defineProperty(_assertThisInitialized(_this), \"componentDidUpdate\", function (prevProps) {\n _this.checkImagesLoad();\n _this.props.onReInit && _this.props.onReInit();\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_objectSpread(_objectSpread({}, _this.props), _this.state));\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n }\n // if (this.props.onLazyLoad) {\n // this.props.onLazyLoad([leftMostSlide])\n // }\n _this.adaptHeight();\n var spec = _objectSpread(_objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props), _this.state);\n var setTrackStyle = _this.didPropsChange(prevProps);\n setTrackStyle && _this.updateState(spec, setTrackStyle, function () {\n if (_this.state.currentSlide >= _react[\"default\"].Children.count(_this.props.children)) {\n _this.changeSlide({\n message: \"index\",\n index: _react[\"default\"].Children.count(_this.props.children) - _this.props.slidesToShow,\n currentSlide: _this.state.currentSlide\n });\n }\n if (_this.props.autoplay) {\n _this.autoPlay(\"update\");\n } else {\n _this.pause(\"paused\");\n }\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onWindowResized\", function (setTrackStyle) {\n if (_this.debouncedResize) _this.debouncedResize.cancel();\n _this.debouncedResize = (0, _lodash[\"default\"])(function () {\n return _this.resizeWindow(setTrackStyle);\n }, 50);\n _this.debouncedResize();\n });\n _defineProperty(_assertThisInitialized(_this), \"resizeWindow\", function () {\n var setTrackStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var isTrackMounted = Boolean(_this.track && _this.track.node);\n // prevent warning: setting state on unmounted component (server side rendering)\n if (!isTrackMounted) return;\n var spec = _objectSpread(_objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props), _this.state);\n _this.updateState(spec, setTrackStyle, function () {\n if (_this.props.autoplay) _this.autoPlay(\"update\");else _this.pause(\"paused\");\n });\n // animating state should be cleared while resizing, otherwise autoplay stops working\n _this.setState({\n animating: false\n });\n clearTimeout(_this.animationEndCallback);\n delete _this.animationEndCallback;\n });\n _defineProperty(_assertThisInitialized(_this), \"updateState\", function (spec, setTrackStyle, callback) {\n var updatedState = (0, _innerSliderUtils.initializedState)(spec);\n spec = _objectSpread(_objectSpread(_objectSpread({}, spec), updatedState), {}, {\n slideIndex: updatedState.currentSlide\n });\n var targetLeft = (0, _innerSliderUtils.getTrackLeft)(spec);\n spec = _objectSpread(_objectSpread({}, spec), {}, {\n left: targetLeft\n });\n var trackStyle = (0, _innerSliderUtils.getTrackCSS)(spec);\n if (setTrackStyle || _react[\"default\"].Children.count(_this.props.children) !== _react[\"default\"].Children.count(spec.children)) {\n updatedState[\"trackStyle\"] = trackStyle;\n }\n _this.setState(updatedState, callback);\n });\n _defineProperty(_assertThisInitialized(_this), \"ssrInit\", function () {\n if (_this.props.variableWidth) {\n var _trackWidth = 0,\n _trackLeft = 0;\n var childrenWidths = [];\n var preClones = (0, _innerSliderUtils.getPreClones)(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: _this.props.children.length\n }));\n var postClones = (0, _innerSliderUtils.getPostClones)(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: _this.props.children.length\n }));\n _this.props.children.forEach(function (child) {\n childrenWidths.push(child.props.style.width);\n _trackWidth += child.props.style.width;\n });\n for (var i = 0; i < preClones; i++) {\n _trackLeft += childrenWidths[childrenWidths.length - 1 - i];\n _trackWidth += childrenWidths[childrenWidths.length - 1 - i];\n }\n for (var _i = 0; _i < postClones; _i++) {\n _trackWidth += childrenWidths[_i];\n }\n for (var _i2 = 0; _i2 < _this.state.currentSlide; _i2++) {\n _trackLeft += childrenWidths[_i2];\n }\n var _trackStyle = {\n width: _trackWidth + \"px\",\n left: -_trackLeft + \"px\"\n };\n if (_this.props.centerMode) {\n var currentWidth = \"\".concat(childrenWidths[_this.state.currentSlide], \"px\");\n _trackStyle.left = \"calc(\".concat(_trackStyle.left, \" + (100% - \").concat(currentWidth, \") / 2 ) \");\n }\n return {\n trackStyle: _trackStyle\n };\n }\n var childrenCount = _react[\"default\"].Children.count(_this.props.children);\n var spec = _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: childrenCount\n });\n var slideCount = (0, _innerSliderUtils.getPreClones)(spec) + (0, _innerSliderUtils.getPostClones)(spec) + childrenCount;\n var trackWidth = 100 / _this.props.slidesToShow * slideCount;\n var slideWidth = 100 / slideCount;\n var trackLeft = -slideWidth * ((0, _innerSliderUtils.getPreClones)(spec) + _this.state.currentSlide) * trackWidth / 100;\n if (_this.props.centerMode) {\n trackLeft += (100 - slideWidth * trackWidth / 100) / 2;\n }\n var trackStyle = {\n width: trackWidth + \"%\",\n left: trackLeft + \"%\"\n };\n return {\n slideWidth: slideWidth + \"%\",\n trackStyle: trackStyle\n };\n });\n _defineProperty(_assertThisInitialized(_this), \"checkImagesLoad\", function () {\n var images = _this.list && _this.list.querySelectorAll && _this.list.querySelectorAll(\".slick-slide img\") || [];\n var imagesCount = images.length,\n loadedCount = 0;\n Array.prototype.forEach.call(images, function (image) {\n var handler = function handler() {\n return ++loadedCount && loadedCount >= imagesCount && _this.onWindowResized();\n };\n if (!image.onclick) {\n image.onclick = function () {\n return image.parentNode.focus();\n };\n } else {\n var prevClickHandler = image.onclick;\n image.onclick = function (e) {\n prevClickHandler(e);\n image.parentNode.focus();\n };\n }\n if (!image.onload) {\n if (_this.props.lazyLoad) {\n image.onload = function () {\n _this.adaptHeight();\n _this.callbackTimers.push(setTimeout(_this.onWindowResized, _this.props.speed));\n };\n } else {\n image.onload = handler;\n image.onerror = function () {\n handler();\n _this.props.onLazyLoadError && _this.props.onLazyLoadError();\n };\n }\n }\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"progressiveLazyLoad\", function () {\n var slidesToLoad = [];\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n for (var index = _this.state.currentSlide; index < _this.state.slideCount + (0, _innerSliderUtils.getPostClones)(spec); index++) {\n if (_this.state.lazyLoadedList.indexOf(index) < 0) {\n slidesToLoad.push(index);\n break;\n }\n }\n for (var _index = _this.state.currentSlide - 1; _index >= -(0, _innerSliderUtils.getPreClones)(spec); _index--) {\n if (_this.state.lazyLoadedList.indexOf(_index) < 0) {\n slidesToLoad.push(_index);\n break;\n }\n }\n if (slidesToLoad.length > 0) {\n _this.setState(function (state) {\n return {\n lazyLoadedList: state.lazyLoadedList.concat(slidesToLoad)\n };\n });\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n } else {\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n delete _this.lazyLoadTimer;\n }\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"slideHandler\", function (index) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var _this$props = _this.props,\n asNavFor = _this$props.asNavFor,\n beforeChange = _this$props.beforeChange,\n onLazyLoad = _this$props.onLazyLoad,\n speed = _this$props.speed,\n afterChange = _this$props.afterChange; // capture currentslide before state is updated\n var currentSlide = _this.state.currentSlide;\n var _slideHandler = (0, _innerSliderUtils.slideHandler)(_objectSpread(_objectSpread(_objectSpread({\n index: index\n }, _this.props), _this.state), {}, {\n trackRef: _this.track,\n useCSS: _this.props.useCSS && !dontAnimate\n })),\n state = _slideHandler.state,\n nextState = _slideHandler.nextState;\n if (!state) return;\n beforeChange && beforeChange(currentSlide, state.currentSlide);\n var slidesToLoad = state.lazyLoadedList.filter(function (value) {\n return _this.state.lazyLoadedList.indexOf(value) < 0;\n });\n onLazyLoad && slidesToLoad.length > 0 && onLazyLoad(slidesToLoad);\n if (!_this.props.waitForAnimate && _this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n afterChange && afterChange(currentSlide);\n delete _this.animationEndCallback;\n }\n _this.setState(state, function () {\n // asNavForIndex check is to avoid recursive calls of slideHandler in waitForAnimate=false mode\n if (asNavFor && _this.asNavForIndex !== index) {\n _this.asNavForIndex = index;\n asNavFor.innerSlider.slideHandler(index);\n }\n if (!nextState) return;\n _this.animationEndCallback = setTimeout(function () {\n var animating = nextState.animating,\n firstBatch = _objectWithoutProperties(nextState, [\"animating\"]);\n _this.setState(firstBatch, function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.setState({\n animating: animating\n });\n }, 10));\n afterChange && afterChange(state.currentSlide);\n delete _this.animationEndCallback;\n });\n }, speed);\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"changeSlide\", function (options) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n var targetSlide = (0, _innerSliderUtils.changeSlide)(spec, options);\n if (targetSlide !== 0 && !targetSlide) return;\n if (dontAnimate === true) {\n _this.slideHandler(targetSlide, dontAnimate);\n } else {\n _this.slideHandler(targetSlide);\n }\n _this.props.autoplay && _this.autoPlay(\"update\");\n if (_this.props.focusOnSelect) {\n var nodes = _this.list.querySelectorAll(\".slick-current\");\n nodes[0] && nodes[0].focus();\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"clickHandler\", function (e) {\n if (_this.clickable === false) {\n e.stopPropagation();\n e.preventDefault();\n }\n _this.clickable = true;\n });\n _defineProperty(_assertThisInitialized(_this), \"keyHandler\", function (e) {\n var dir = (0, _innerSliderUtils.keyHandler)(e, _this.props.accessibility, _this.props.rtl);\n dir !== \"\" && _this.changeSlide({\n message: dir\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"selectHandler\", function (options) {\n _this.changeSlide(options);\n });\n _defineProperty(_assertThisInitialized(_this), \"disableBodyScroll\", function () {\n var preventDefault = function preventDefault(e) {\n e = e || window.event;\n if (e.preventDefault) e.preventDefault();\n e.returnValue = false;\n };\n window.ontouchmove = preventDefault;\n });\n _defineProperty(_assertThisInitialized(_this), \"enableBodyScroll\", function () {\n window.ontouchmove = null;\n });\n _defineProperty(_assertThisInitialized(_this), \"swipeStart\", function (e) {\n if (_this.props.verticalSwiping) {\n _this.disableBodyScroll();\n }\n var state = (0, _innerSliderUtils.swipeStart)(e, _this.props.swipe, _this.props.draggable);\n state !== \"\" && _this.setState(state);\n });\n _defineProperty(_assertThisInitialized(_this), \"swipeMove\", function (e) {\n var state = (0, _innerSliderUtils.swipeMove)(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n if (state[\"swiping\"]) {\n _this.clickable = false;\n }\n _this.setState(state);\n });\n _defineProperty(_assertThisInitialized(_this), \"swipeEnd\", function (e) {\n var state = (0, _innerSliderUtils.swipeEnd)(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n var triggerSlideHandler = state[\"triggerSlideHandler\"];\n delete state[\"triggerSlideHandler\"];\n _this.setState(state);\n if (triggerSlideHandler === undefined) return;\n _this.slideHandler(triggerSlideHandler);\n if (_this.props.verticalSwiping) {\n _this.enableBodyScroll();\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"touchEnd\", function (e) {\n _this.swipeEnd(e);\n _this.clickable = true;\n });\n _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n // this and fellow methods are wrapped in setTimeout\n // to make sure initialize setState has happened before\n // any of such methods are called\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"previous\"\n });\n }, 0));\n });\n _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"next\"\n });\n }, 0));\n });\n _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n slide = Number(slide);\n if (isNaN(slide)) return \"\";\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"index\",\n index: slide,\n currentSlide: _this.state.currentSlide\n }, dontAnimate);\n }, 0));\n });\n _defineProperty(_assertThisInitialized(_this), \"play\", function () {\n var nextIndex;\n if (_this.props.rtl) {\n nextIndex = _this.state.currentSlide - _this.props.slidesToScroll;\n } else {\n if ((0, _innerSliderUtils.canGoNext)(_objectSpread(_objectSpread({}, _this.props), _this.state))) {\n nextIndex = _this.state.currentSlide + _this.props.slidesToScroll;\n } else {\n return false;\n }\n }\n _this.slideHandler(nextIndex);\n });\n _defineProperty(_assertThisInitialized(_this), \"autoPlay\", function (playType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n var autoplaying = _this.state.autoplaying;\n if (playType === \"update\") {\n if (autoplaying === \"hovered\" || autoplaying === \"focused\" || autoplaying === \"paused\") {\n return;\n }\n } else if (playType === \"leave\") {\n if (autoplaying === \"paused\" || autoplaying === \"focused\") {\n return;\n }\n } else if (playType === \"blur\") {\n if (autoplaying === \"paused\" || autoplaying === \"hovered\") {\n return;\n }\n }\n _this.autoplayTimer = setInterval(_this.play, _this.props.autoplaySpeed + 50);\n _this.setState({\n autoplaying: \"playing\"\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"pause\", function (pauseType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n _this.autoplayTimer = null;\n }\n var autoplaying = _this.state.autoplaying;\n if (pauseType === \"paused\") {\n _this.setState({\n autoplaying: \"paused\"\n });\n } else if (pauseType === \"focused\") {\n if (autoplaying === \"hovered\" || autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"focused\"\n });\n }\n } else {\n // pauseType is 'hovered'\n if (autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"hovered\"\n });\n }\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onDotsOver\", function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n });\n _defineProperty(_assertThisInitialized(_this), \"onDotsLeave\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n });\n _defineProperty(_assertThisInitialized(_this), \"onTrackOver\", function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n });\n _defineProperty(_assertThisInitialized(_this), \"onTrackLeave\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n });\n _defineProperty(_assertThisInitialized(_this), \"onSlideFocus\", function () {\n return _this.props.autoplay && _this.pause(\"focused\");\n });\n _defineProperty(_assertThisInitialized(_this), \"onSlideBlur\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"focused\" && _this.autoPlay(\"blur\");\n });\n _defineProperty(_assertThisInitialized(_this), \"render\", function () {\n var className = (0, _classnames[\"default\"])(\"slick-slider\", _this.props.className, {\n \"slick-vertical\": _this.props.vertical,\n \"slick-initialized\": true\n });\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n var trackProps = (0, _innerSliderUtils.extractObject)(spec, [\"fade\", \"cssEase\", \"speed\", \"infinite\", \"centerMode\", \"focusOnSelect\", \"currentSlide\", \"lazyLoad\", \"lazyLoadedList\", \"rtl\", \"slideWidth\", \"slideHeight\", \"listHeight\", \"vertical\", \"slidesToShow\", \"slidesToScroll\", \"slideCount\", \"trackStyle\", \"variableWidth\", \"unslick\", \"centerPadding\", \"targetSlide\", \"useCSS\"]);\n var pauseOnHover = _this.props.pauseOnHover;\n trackProps = _objectSpread(_objectSpread({}, trackProps), {}, {\n onMouseEnter: pauseOnHover ? _this.onTrackOver : null,\n onMouseLeave: pauseOnHover ? _this.onTrackLeave : null,\n onMouseOver: pauseOnHover ? _this.onTrackOver : null,\n focusOnSelect: _this.props.focusOnSelect && _this.clickable ? _this.selectHandler : null\n });\n var dots;\n if (_this.props.dots === true && _this.state.slideCount >= _this.props.slidesToShow) {\n var dotProps = (0, _innerSliderUtils.extractObject)(spec, [\"dotsClass\", \"slideCount\", \"slidesToShow\", \"currentSlide\", \"slidesToScroll\", \"clickHandler\", \"children\", \"customPaging\", \"infinite\", \"appendDots\"]);\n var pauseOnDotsHover = _this.props.pauseOnDotsHover;\n dotProps = _objectSpread(_objectSpread({}, dotProps), {}, {\n clickHandler: _this.changeSlide,\n onMouseEnter: pauseOnDotsHover ? _this.onDotsLeave : null,\n onMouseOver: pauseOnDotsHover ? _this.onDotsOver : null,\n onMouseLeave: pauseOnDotsHover ? _this.onDotsLeave : null\n });\n dots = /*#__PURE__*/_react[\"default\"].createElement(_dots.Dots, dotProps);\n }\n var prevArrow, nextArrow;\n var arrowProps = (0, _innerSliderUtils.extractObject)(spec, [\"infinite\", \"centerMode\", \"currentSlide\", \"slideCount\", \"slidesToShow\", \"prevArrow\", \"nextArrow\"]);\n arrowProps.clickHandler = _this.changeSlide;\n if (_this.props.arrows) {\n prevArrow = /*#__PURE__*/_react[\"default\"].createElement(_arrows.PrevArrow, arrowProps);\n nextArrow = /*#__PURE__*/_react[\"default\"].createElement(_arrows.NextArrow, arrowProps);\n }\n var verticalHeightStyle = null;\n if (_this.props.vertical) {\n verticalHeightStyle = {\n height: _this.state.listHeight\n };\n }\n var centerPaddingStyle = null;\n if (_this.props.vertical === false) {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: \"0px \" + _this.props.centerPadding\n };\n }\n } else {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: _this.props.centerPadding + \" 0px\"\n };\n }\n }\n var listStyle = _objectSpread(_objectSpread({}, verticalHeightStyle), centerPaddingStyle);\n var touchMove = _this.props.touchMove;\n var listProps = {\n className: \"slick-list\",\n style: listStyle,\n onClick: _this.clickHandler,\n onMouseDown: touchMove ? _this.swipeStart : null,\n onMouseMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onMouseUp: touchMove ? _this.swipeEnd : null,\n onMouseLeave: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onTouchStart: touchMove ? _this.swipeStart : null,\n onTouchMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onTouchEnd: touchMove ? _this.touchEnd : null,\n onTouchCancel: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onKeyDown: _this.props.accessibility ? _this.keyHandler : null\n };\n var innerSliderProps = {\n className: className,\n dir: \"ltr\",\n style: _this.props.style\n };\n if (_this.props.unslick) {\n listProps = {\n className: \"slick-list\"\n };\n innerSliderProps = {\n className: className\n };\n }\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", innerSliderProps, !_this.props.unslick ? prevArrow : \"\", /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n ref: _this.listRefHandler\n }, listProps), /*#__PURE__*/_react[\"default\"].createElement(_track.Track, _extends({\n ref: _this.trackRefHandler\n }, trackProps), _this.props.children)), !_this.props.unslick ? nextArrow : \"\", !_this.props.unslick ? dots : \"\");\n });\n _this.list = null;\n _this.track = null;\n _this.state = _objectSpread(_objectSpread({}, _initialState[\"default\"]), {}, {\n currentSlide: _this.props.initialSlide,\n targetSlide: _this.props.initialSlide ? _this.props.initialSlide : 0,\n slideCount: _react[\"default\"].Children.count(_this.props.children)\n });\n _this.callbackTimers = [];\n _this.clickable = true;\n _this.debouncedResize = null;\n var ssrState = _this.ssrInit();\n _this.state = _objectSpread(_objectSpread({}, _this.state), ssrState);\n return _this;\n }\n _createClass(InnerSlider, [{\n key: \"didPropsChange\",\n value: function didPropsChange(prevProps) {\n var setTrackStyle = false;\n for (var _i3 = 0, _Object$keys = Object.keys(this.props); _i3 < _Object$keys.length; _i3++) {\n var key = _Object$keys[_i3];\n if (!prevProps.hasOwnProperty(key)) {\n setTrackStyle = true;\n break;\n }\n if (_typeof(prevProps[key]) === \"object\" || typeof prevProps[key] === \"function\" || isNaN(prevProps[key])) {\n continue;\n }\n if (prevProps[key] !== this.props[key]) {\n setTrackStyle = true;\n break;\n }\n }\n return setTrackStyle || _react[\"default\"].Children.count(this.props.children) !== _react[\"default\"].Children.count(prevProps.children);\n }\n }]);\n return InnerSlider;\n}(_react[\"default\"].Component);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _innerSlider = require(\"./inner-slider\");\nvar _json2mq = _interopRequireDefault(require(\"json2mq\"));\nvar _defaultProps = _interopRequireDefault(require(\"./default-props\"));\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar enquire = (0, _innerSliderUtils.canUseDOM)() && require(\"enquire.js\");\nvar Slider = exports[\"default\"] = /*#__PURE__*/function (_React$Component) {\n _inherits(Slider, _React$Component);\n var _super = _createSuper(Slider);\n function Slider(props) {\n var _this;\n _classCallCheck(this, Slider);\n _this = _super.call(this, props);\n _defineProperty(_assertThisInitialized(_this), \"innerSliderRefHandler\", function (ref) {\n return _this.innerSlider = ref;\n });\n _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n return _this.innerSlider.slickPrev();\n });\n _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n return _this.innerSlider.slickNext();\n });\n _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return _this.innerSlider.slickGoTo(slide, dontAnimate);\n });\n _defineProperty(_assertThisInitialized(_this), \"slickPause\", function () {\n return _this.innerSlider.pause(\"paused\");\n });\n _defineProperty(_assertThisInitialized(_this), \"slickPlay\", function () {\n return _this.innerSlider.autoPlay(\"play\");\n });\n _this.state = {\n breakpoint: null\n };\n _this._responsiveMediaHandlers = [];\n return _this;\n }\n _createClass(Slider, [{\n key: \"media\",\n value: function media(query, handler) {\n // javascript handler for css media query\n enquire.register(query, handler);\n this._responsiveMediaHandlers.push({\n query: query,\n handler: handler\n });\n } // handles responsive breakpoints\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n // performance monitoring\n //if (process.env.NODE_ENV !== 'production') {\n //const { whyDidYouUpdate } = require('why-did-you-update')\n //whyDidYouUpdate(React)\n //}\n if (this.props.responsive) {\n var breakpoints = this.props.responsive.map(function (breakpt) {\n return breakpt.breakpoint;\n });\n // sort them in increasing order of their numerical value\n breakpoints.sort(function (x, y) {\n return x - y;\n });\n breakpoints.forEach(function (breakpoint, index) {\n // media query for each breakpoint\n var bQuery;\n if (index === 0) {\n bQuery = (0, _json2mq[\"default\"])({\n minWidth: 0,\n maxWidth: breakpoint\n });\n } else {\n bQuery = (0, _json2mq[\"default\"])({\n minWidth: breakpoints[index - 1] + 1,\n maxWidth: breakpoint\n });\n }\n // when not using server side rendering\n (0, _innerSliderUtils.canUseDOM)() && _this2.media(bQuery, function () {\n _this2.setState({\n breakpoint: breakpoint\n });\n });\n });\n\n // Register media query for full screen. Need to support resize from small to large\n // convert javascript object to media query string\n var query = (0, _json2mq[\"default\"])({\n minWidth: breakpoints.slice(-1)[0]\n });\n (0, _innerSliderUtils.canUseDOM)() && this.media(query, function () {\n _this2.setState({\n breakpoint: null\n });\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this._responsiveMediaHandlers.forEach(function (obj) {\n enquire.unregister(obj.query, obj.handler);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n var settings;\n var newProps;\n if (this.state.breakpoint) {\n newProps = this.props.responsive.filter(function (resp) {\n return resp.breakpoint === _this3.state.breakpoint;\n });\n settings = newProps[0].settings === \"unslick\" ? \"unslick\" : _objectSpread(_objectSpread(_objectSpread({}, _defaultProps[\"default\"]), this.props), newProps[0].settings);\n } else {\n settings = _objectSpread(_objectSpread({}, _defaultProps[\"default\"]), this.props);\n }\n\n // force scrolling by one if centerMode is on\n if (settings.centerMode) {\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 in centerMode, you are using \".concat(settings.slidesToScroll));\n }\n settings.slidesToScroll = 1;\n }\n // force showing one slide and scrolling by one if the fade mode is on\n if (settings.fade) {\n if (settings.slidesToShow > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToShow should be equal to 1 when fade is true, you're using \".concat(settings.slidesToShow));\n }\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 when fade is true, you're using \".concat(settings.slidesToScroll));\n }\n settings.slidesToShow = 1;\n settings.slidesToScroll = 1;\n }\n\n // makes sure that children is an array, even when there is only 1 child\n var children = _react[\"default\"].Children.toArray(this.props.children);\n\n // Children may contain false or null, so we should filter them\n // children may also contain string filled with spaces (in certain cases where we use jsx strings)\n children = children.filter(function (child) {\n if (typeof child === \"string\") {\n return !!child.trim();\n }\n return !!child;\n });\n\n // rows and slidesPerRow logic is handled here\n if (settings.variableWidth && (settings.rows > 1 || settings.slidesPerRow > 1)) {\n console.warn(\"variableWidth is not supported in case of rows > 1 or slidesPerRow > 1\");\n settings.variableWidth = false;\n }\n var newChildren = [];\n var currentWidth = null;\n for (var i = 0; i < children.length; i += settings.rows * settings.slidesPerRow) {\n var newSlide = [];\n for (var j = i; j < i + settings.rows * settings.slidesPerRow; j += settings.slidesPerRow) {\n var row = [];\n for (var k = j; k < j + settings.slidesPerRow; k += 1) {\n if (settings.variableWidth && children[k].props.style) {\n currentWidth = children[k].props.style.width;\n }\n if (k >= children.length) break;\n row.push( /*#__PURE__*/_react[\"default\"].cloneElement(children[k], {\n key: 100 * i + 10 * j + k,\n tabIndex: -1,\n style: {\n width: \"\".concat(100 / settings.slidesPerRow, \"%\"),\n display: \"inline-block\"\n }\n }));\n }\n newSlide.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: 10 * i + j\n }, row));\n }\n if (settings.variableWidth) {\n newChildren.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: i,\n style: {\n width: currentWidth\n }\n }, newSlide));\n } else {\n newChildren.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: i\n }, newSlide));\n }\n }\n if (settings === \"unslick\") {\n var className = \"regular slider \" + (this.props.className || \"\");\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: className\n }, children);\n } else if (newChildren.length <= settings.slidesToShow && !settings.infinite) {\n settings.unslick = true;\n }\n return /*#__PURE__*/_react[\"default\"].createElement(_innerSlider.InnerSlider, _extends({\n style: this.props.style,\n ref: this.innerSliderRefHandler\n }, (0, _innerSliderUtils.filterSettings)(settings)), newChildren);\n }\n }]);\n return Slider;\n}(_react[\"default\"].Component);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Track = void 0;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n// given specifications/props for a slide, fetch all the classes that need to be applied to the slide\nvar getSlideClasses = function getSlideClasses(spec) {\n var slickActive, slickCenter, slickCloned;\n var centerOffset, index;\n if (spec.rtl) {\n index = spec.slideCount - 1 - spec.index;\n } else {\n index = spec.index;\n }\n slickCloned = index < 0 || index >= spec.slideCount;\n if (spec.centerMode) {\n centerOffset = Math.floor(spec.slidesToShow / 2);\n slickCenter = (index - spec.currentSlide) % spec.slideCount === 0;\n if (index > spec.currentSlide - centerOffset - 1 && index <= spec.currentSlide + centerOffset) {\n slickActive = true;\n }\n } else {\n slickActive = spec.currentSlide <= index && index < spec.currentSlide + spec.slidesToShow;\n }\n var focusedSlide;\n if (spec.targetSlide < 0) {\n focusedSlide = spec.targetSlide + spec.slideCount;\n } else if (spec.targetSlide >= spec.slideCount) {\n focusedSlide = spec.targetSlide - spec.slideCount;\n } else {\n focusedSlide = spec.targetSlide;\n }\n var slickCurrent = index === focusedSlide;\n return {\n \"slick-slide\": true,\n \"slick-active\": slickActive,\n \"slick-center\": slickCenter,\n \"slick-cloned\": slickCloned,\n \"slick-current\": slickCurrent // dubious in case of RTL\n };\n};\nvar getSlideStyle = function getSlideStyle(spec) {\n var style = {};\n if (spec.variableWidth === undefined || spec.variableWidth === false) {\n style.width = spec.slideWidth;\n }\n if (spec.fade) {\n style.position = \"relative\";\n if (spec.vertical) {\n style.top = -spec.index * parseInt(spec.slideHeight);\n } else {\n style.left = -spec.index * parseInt(spec.slideWidth);\n }\n style.opacity = spec.currentSlide === spec.index ? 1 : 0;\n style.zIndex = spec.currentSlide === spec.index ? 999 : 998;\n if (spec.useCSS) {\n style.transition = \"opacity \" + spec.speed + \"ms \" + spec.cssEase + \", \" + \"visibility \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n return style;\n};\nvar getKey = function getKey(child, fallbackKey) {\n return child.key || fallbackKey;\n};\nvar renderSlides = function renderSlides(spec) {\n var key;\n var slides = [];\n var preCloneSlides = [];\n var postCloneSlides = [];\n var childrenCount = _react[\"default\"].Children.count(spec.children);\n var startIndex = (0, _innerSliderUtils.lazyStartIndex)(spec);\n var endIndex = (0, _innerSliderUtils.lazyEndIndex)(spec);\n _react[\"default\"].Children.forEach(spec.children, function (elem, index) {\n var child;\n var childOnClickOptions = {\n message: \"children\",\n index: index,\n slidesToScroll: spec.slidesToScroll,\n currentSlide: spec.currentSlide\n };\n\n // in case of lazyLoad, whether or not we want to fetch the slide\n if (!spec.lazyLoad || spec.lazyLoad && spec.lazyLoadedList.indexOf(index) >= 0) {\n child = elem;\n } else {\n child = /*#__PURE__*/_react[\"default\"].createElement(\"div\", null);\n }\n var childStyle = getSlideStyle(_objectSpread(_objectSpread({}, spec), {}, {\n index: index\n }));\n var slideClass = child.props.className || \"\";\n var slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: index\n }));\n // push a cloned element of the desired slide\n slides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"original\" + getKey(child, index),\n \"data-index\": index,\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n tabIndex: \"-1\",\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({\n outline: \"none\"\n }, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n\n // if slide needs to be precloned or postcloned\n if (spec.infinite && spec.fade === false) {\n var preCloneNo = childrenCount - index;\n if (preCloneNo <= (0, _innerSliderUtils.getPreClones)(spec)) {\n key = -preCloneNo;\n if (key >= startIndex) {\n child = elem;\n }\n slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: key\n }));\n preCloneSlides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"precloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n key = childrenCount + index;\n if (key < endIndex) {\n child = elem;\n }\n slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: key\n }));\n postCloneSlides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"postcloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n });\n if (spec.rtl) {\n return preCloneSlides.concat(slides, postCloneSlides).reverse();\n } else {\n return preCloneSlides.concat(slides, postCloneSlides);\n }\n};\nvar Track = exports.Track = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Track, _React$PureComponent);\n var _super = _createSuper(Track);\n function Track() {\n var _this;\n _classCallCheck(this, Track);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"node\", null);\n _defineProperty(_assertThisInitialized(_this), \"handleRef\", function (ref) {\n _this.node = ref;\n });\n return _this;\n }\n _createClass(Track, [{\n key: \"render\",\n value: function render() {\n var slides = renderSlides(this.props);\n var _this$props = this.props,\n onMouseEnter = _this$props.onMouseEnter,\n onMouseOver = _this$props.onMouseOver,\n onMouseLeave = _this$props.onMouseLeave;\n var mouseEvents = {\n onMouseEnter: onMouseEnter,\n onMouseOver: onMouseOver,\n onMouseLeave: onMouseLeave\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n ref: this.handleRef,\n className: \"slick-track\",\n style: this.props.trackStyle\n }, mouseEvents), slides);\n }\n }]);\n return Track;\n}(_react[\"default\"].PureComponent);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.checkSpecKeys = exports.checkNavigable = exports.changeSlide = exports.canUseDOM = exports.canGoNext = void 0;\nexports.clamp = clamp;\nexports.extractObject = void 0;\nexports.filterSettings = filterSettings;\nexports.validSettings = exports.swipeStart = exports.swipeMove = exports.swipeEnd = exports.slidesOnRight = exports.slidesOnLeft = exports.slideHandler = exports.siblingDirection = exports.safePreventDefault = exports.lazyStartIndex = exports.lazySlidesOnRight = exports.lazySlidesOnLeft = exports.lazyEndIndex = exports.keyHandler = exports.initializedState = exports.getWidth = exports.getTrackLeft = exports.getTrackCSS = exports.getTrackAnimateCSS = exports.getTotalSlides = exports.getSwipeDirection = exports.getSlideCount = exports.getRequiredLazySlides = exports.getPreClones = exports.getPostClones = exports.getOnDemandLazySlides = exports.getNavigableIndexes = exports.getHeight = void 0;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _defaultProps = _interopRequireDefault(require(\"../default-props\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction clamp(number, lowerBound, upperBound) {\n return Math.max(lowerBound, Math.min(number, upperBound));\n}\nvar safePreventDefault = exports.safePreventDefault = function safePreventDefault(event) {\n var passiveEvents = [\"onTouchStart\", \"onTouchMove\", \"onWheel\"];\n if (!passiveEvents.includes(event._reactName)) {\n event.preventDefault();\n }\n};\nvar getOnDemandLazySlides = exports.getOnDemandLazySlides = function getOnDemandLazySlides(spec) {\n var onDemandSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n if (spec.lazyLoadedList.indexOf(slideIndex) < 0) {\n onDemandSlides.push(slideIndex);\n }\n }\n return onDemandSlides;\n};\n\n// return list of slides that need to be present\nvar getRequiredLazySlides = exports.getRequiredLazySlides = function getRequiredLazySlides(spec) {\n var requiredSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n requiredSlides.push(slideIndex);\n }\n return requiredSlides;\n};\n\n// startIndex that needs to be present\nvar lazyStartIndex = exports.lazyStartIndex = function lazyStartIndex(spec) {\n return spec.currentSlide - lazySlidesOnLeft(spec);\n};\nvar lazyEndIndex = exports.lazyEndIndex = function lazyEndIndex(spec) {\n return spec.currentSlide + lazySlidesOnRight(spec);\n};\nvar lazySlidesOnLeft = exports.lazySlidesOnLeft = function lazySlidesOnLeft(spec) {\n return spec.centerMode ? Math.floor(spec.slidesToShow / 2) + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : 0;\n};\nvar lazySlidesOnRight = exports.lazySlidesOnRight = function lazySlidesOnRight(spec) {\n return spec.centerMode ? Math.floor((spec.slidesToShow - 1) / 2) + 1 + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : spec.slidesToShow;\n};\n\n// get width of an element\nvar getWidth = exports.getWidth = function getWidth(elem) {\n return elem && elem.offsetWidth || 0;\n};\nvar getHeight = exports.getHeight = function getHeight(elem) {\n return elem && elem.offsetHeight || 0;\n};\nvar getSwipeDirection = exports.getSwipeDirection = function getSwipeDirection(touchObject) {\n var verticalSwiping = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var xDist, yDist, r, swipeAngle;\n xDist = touchObject.startX - touchObject.curX;\n yDist = touchObject.startY - touchObject.curY;\n r = Math.atan2(yDist, xDist);\n swipeAngle = Math.round(r * 180 / Math.PI);\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n if (swipeAngle <= 45 && swipeAngle >= 0 || swipeAngle <= 360 && swipeAngle >= 315) {\n return \"left\";\n }\n if (swipeAngle >= 135 && swipeAngle <= 225) {\n return \"right\";\n }\n if (verticalSwiping === true) {\n if (swipeAngle >= 35 && swipeAngle <= 135) {\n return \"up\";\n } else {\n return \"down\";\n }\n }\n return \"vertical\";\n};\n\n// whether or not we can go next\nvar canGoNext = exports.canGoNext = function canGoNext(spec) {\n var canGo = true;\n if (!spec.infinite) {\n if (spec.centerMode && spec.currentSlide >= spec.slideCount - 1) {\n canGo = false;\n } else if (spec.slideCount <= spec.slidesToShow || spec.currentSlide >= spec.slideCount - spec.slidesToShow) {\n canGo = false;\n }\n }\n return canGo;\n};\n\n// given an object and a list of keys, return new object with given keys\nvar extractObject = exports.extractObject = function extractObject(spec, keys) {\n var newObject = {};\n keys.forEach(function (key) {\n return newObject[key] = spec[key];\n });\n return newObject;\n};\n\n// get initialized state\nvar initializedState = exports.initializedState = function initializedState(spec) {\n // spec also contains listRef, trackRef\n var slideCount = _react[\"default\"].Children.count(spec.children);\n var listNode = spec.listRef;\n var listWidth = Math.ceil(getWidth(listNode));\n var trackNode = spec.trackRef && spec.trackRef.node;\n var trackWidth = Math.ceil(getWidth(trackNode));\n var slideWidth;\n if (!spec.vertical) {\n var centerPaddingAdj = spec.centerMode && parseInt(spec.centerPadding) * 2;\n if (typeof spec.centerPadding === \"string\" && spec.centerPadding.slice(-1) === \"%\") {\n centerPaddingAdj *= listWidth / 100;\n }\n slideWidth = Math.ceil((listWidth - centerPaddingAdj) / spec.slidesToShow);\n } else {\n slideWidth = listWidth;\n }\n var slideHeight = listNode && getHeight(listNode.querySelector('[data-index=\"0\"]'));\n var listHeight = slideHeight * spec.slidesToShow;\n var currentSlide = spec.currentSlide === undefined ? spec.initialSlide : spec.currentSlide;\n if (spec.rtl && spec.currentSlide === undefined) {\n currentSlide = slideCount - 1 - spec.initialSlide;\n }\n var lazyLoadedList = spec.lazyLoadedList || [];\n var slidesToLoad = getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: currentSlide,\n lazyLoadedList: lazyLoadedList\n }));\n lazyLoadedList = lazyLoadedList.concat(slidesToLoad);\n var state = {\n slideCount: slideCount,\n slideWidth: slideWidth,\n listWidth: listWidth,\n trackWidth: trackWidth,\n currentSlide: currentSlide,\n slideHeight: slideHeight,\n listHeight: listHeight,\n lazyLoadedList: lazyLoadedList\n };\n if (spec.autoplaying === null && spec.autoplay) {\n state[\"autoplaying\"] = \"playing\";\n }\n return state;\n};\nvar slideHandler = exports.slideHandler = function slideHandler(spec) {\n var waitForAnimate = spec.waitForAnimate,\n animating = spec.animating,\n fade = spec.fade,\n infinite = spec.infinite,\n index = spec.index,\n slideCount = spec.slideCount,\n lazyLoad = spec.lazyLoad,\n currentSlide = spec.currentSlide,\n centerMode = spec.centerMode,\n slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n useCSS = spec.useCSS;\n var lazyLoadedList = spec.lazyLoadedList;\n if (waitForAnimate && animating) return {};\n var animationSlide = index,\n finalSlide,\n animationLeft,\n finalLeft;\n var state = {},\n nextState = {};\n var targetSlide = infinite ? index : clamp(index, 0, slideCount - 1);\n if (fade) {\n if (!infinite && (index < 0 || index >= slideCount)) return {};\n if (index < 0) {\n animationSlide = index + slideCount;\n } else if (index >= slideCount) {\n animationSlide = index - slideCount;\n }\n if (lazyLoad && lazyLoadedList.indexOf(animationSlide) < 0) {\n lazyLoadedList = lazyLoadedList.concat(animationSlide);\n }\n state = {\n animating: true,\n currentSlide: animationSlide,\n lazyLoadedList: lazyLoadedList,\n targetSlide: animationSlide\n };\n nextState = {\n animating: false,\n targetSlide: animationSlide\n };\n } else {\n finalSlide = animationSlide;\n if (animationSlide < 0) {\n finalSlide = animationSlide + slideCount;\n if (!infinite) finalSlide = 0;else if (slideCount % slidesToScroll !== 0) finalSlide = slideCount - slideCount % slidesToScroll;\n } else if (!canGoNext(spec) && animationSlide > currentSlide) {\n animationSlide = finalSlide = currentSlide;\n } else if (centerMode && animationSlide >= slideCount) {\n animationSlide = infinite ? slideCount : slideCount - 1;\n finalSlide = infinite ? 0 : slideCount - 1;\n } else if (animationSlide >= slideCount) {\n finalSlide = animationSlide - slideCount;\n if (!infinite) finalSlide = slideCount - slidesToShow;else if (slideCount % slidesToScroll !== 0) finalSlide = 0;\n }\n if (!infinite && animationSlide + slidesToShow >= slideCount) {\n finalSlide = slideCount - slidesToShow;\n }\n animationLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: animationSlide\n }));\n finalLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: finalSlide\n }));\n if (!infinite) {\n if (animationLeft === finalLeft) animationSlide = finalSlide;\n animationLeft = finalLeft;\n }\n if (lazyLoad) {\n lazyLoadedList = lazyLoadedList.concat(getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: animationSlide\n })));\n }\n if (!useCSS) {\n state = {\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n } else {\n state = {\n animating: true,\n currentSlide: finalSlide,\n trackStyle: getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: animationLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n nextState = {\n animating: false,\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n swipeLeft: null,\n targetSlide: targetSlide\n };\n }\n }\n return {\n state: state,\n nextState: nextState\n };\n};\nvar changeSlide = exports.changeSlide = function changeSlide(spec, options) {\n var indexOffset, previousInt, slideOffset, unevenOffset, targetSlide;\n var slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n slideCount = spec.slideCount,\n currentSlide = spec.currentSlide,\n previousTargetSlide = spec.targetSlide,\n lazyLoad = spec.lazyLoad,\n infinite = spec.infinite;\n unevenOffset = slideCount % slidesToScroll !== 0;\n indexOffset = unevenOffset ? 0 : (slideCount - currentSlide) % slidesToScroll;\n if (options.message === \"previous\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : slidesToShow - indexOffset;\n targetSlide = currentSlide - slideOffset;\n if (lazyLoad && !infinite) {\n previousInt = currentSlide - slideOffset;\n targetSlide = previousInt === -1 ? slideCount - 1 : previousInt;\n }\n if (!infinite) {\n targetSlide = previousTargetSlide - slidesToScroll;\n }\n } else if (options.message === \"next\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : indexOffset;\n targetSlide = currentSlide + slideOffset;\n if (lazyLoad && !infinite) {\n targetSlide = (currentSlide + slidesToScroll) % slideCount + indexOffset;\n }\n if (!infinite) {\n targetSlide = previousTargetSlide + slidesToScroll;\n }\n } else if (options.message === \"dots\") {\n // Click on dots\n targetSlide = options.index * options.slidesToScroll;\n } else if (options.message === \"children\") {\n // Click on the slides\n targetSlide = options.index;\n if (infinite) {\n var direction = siblingDirection(_objectSpread(_objectSpread({}, spec), {}, {\n targetSlide: targetSlide\n }));\n if (targetSlide > options.currentSlide && direction === \"left\") {\n targetSlide = targetSlide - slideCount;\n } else if (targetSlide < options.currentSlide && direction === \"right\") {\n targetSlide = targetSlide + slideCount;\n }\n }\n } else if (options.message === \"index\") {\n targetSlide = Number(options.index);\n }\n return targetSlide;\n};\nvar keyHandler = exports.keyHandler = function keyHandler(e, accessibility, rtl) {\n if (e.target.tagName.match(\"TEXTAREA|INPUT|SELECT\") || !accessibility) return \"\";\n if (e.keyCode === 37) return rtl ? \"next\" : \"previous\";\n if (e.keyCode === 39) return rtl ? \"previous\" : \"next\";\n return \"\";\n};\nvar swipeStart = exports.swipeStart = function swipeStart(e, swipe, draggable) {\n e.target.tagName === \"IMG\" && safePreventDefault(e);\n if (!swipe || !draggable && e.type.indexOf(\"mouse\") !== -1) return \"\";\n return {\n dragging: true,\n touchObject: {\n startX: e.touches ? e.touches[0].pageX : e.clientX,\n startY: e.touches ? e.touches[0].pageY : e.clientY,\n curX: e.touches ? e.touches[0].pageX : e.clientX,\n curY: e.touches ? e.touches[0].pageY : e.clientY\n }\n };\n};\nvar swipeMove = exports.swipeMove = function swipeMove(e, spec) {\n // spec also contains, trackRef and slideIndex\n var scrolling = spec.scrolling,\n animating = spec.animating,\n vertical = spec.vertical,\n swipeToSlide = spec.swipeToSlide,\n verticalSwiping = spec.verticalSwiping,\n rtl = spec.rtl,\n currentSlide = spec.currentSlide,\n edgeFriction = spec.edgeFriction,\n edgeDragged = spec.edgeDragged,\n onEdge = spec.onEdge,\n swiped = spec.swiped,\n swiping = spec.swiping,\n slideCount = spec.slideCount,\n slidesToScroll = spec.slidesToScroll,\n infinite = spec.infinite,\n touchObject = spec.touchObject,\n swipeEvent = spec.swipeEvent,\n listHeight = spec.listHeight,\n listWidth = spec.listWidth;\n if (scrolling) return;\n if (animating) return safePreventDefault(e);\n if (vertical && swipeToSlide && verticalSwiping) safePreventDefault(e);\n var swipeLeft,\n state = {};\n var curLeft = getTrackLeft(spec);\n touchObject.curX = e.touches ? e.touches[0].pageX : e.clientX;\n touchObject.curY = e.touches ? e.touches[0].pageY : e.clientY;\n touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curX - touchObject.startX, 2)));\n var verticalSwipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curY - touchObject.startY, 2)));\n if (!verticalSwiping && !swiping && verticalSwipeLength > 10) {\n return {\n scrolling: true\n };\n }\n if (verticalSwiping) touchObject.swipeLength = verticalSwipeLength;\n var positionOffset = (!rtl ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1);\n if (verticalSwiping) positionOffset = touchObject.curY > touchObject.startY ? 1 : -1;\n var dotCount = Math.ceil(slideCount / slidesToScroll);\n var swipeDirection = getSwipeDirection(spec.touchObject, verticalSwiping);\n var touchSwipeLength = touchObject.swipeLength;\n if (!infinite) {\n if (currentSlide === 0 && (swipeDirection === \"right\" || swipeDirection === \"down\") || currentSlide + 1 >= dotCount && (swipeDirection === \"left\" || swipeDirection === \"up\") || !canGoNext(spec) && (swipeDirection === \"left\" || swipeDirection === \"up\")) {\n touchSwipeLength = touchObject.swipeLength * edgeFriction;\n if (edgeDragged === false && onEdge) {\n onEdge(swipeDirection);\n state[\"edgeDragged\"] = true;\n }\n }\n }\n if (!swiped && swipeEvent) {\n swipeEvent(swipeDirection);\n state[\"swiped\"] = true;\n }\n if (!vertical) {\n if (!rtl) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n } else {\n swipeLeft = curLeft - touchSwipeLength * positionOffset;\n }\n } else {\n swipeLeft = curLeft + touchSwipeLength * (listHeight / listWidth) * positionOffset;\n }\n if (verticalSwiping) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n }\n state = _objectSpread(_objectSpread({}, state), {}, {\n touchObject: touchObject,\n swipeLeft: swipeLeft,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: swipeLeft\n }))\n });\n if (Math.abs(touchObject.curX - touchObject.startX) < Math.abs(touchObject.curY - touchObject.startY) * 0.8) {\n return state;\n }\n if (touchObject.swipeLength > 10) {\n state[\"swiping\"] = true;\n safePreventDefault(e);\n }\n return state;\n};\nvar swipeEnd = exports.swipeEnd = function swipeEnd(e, spec) {\n var dragging = spec.dragging,\n swipe = spec.swipe,\n touchObject = spec.touchObject,\n listWidth = spec.listWidth,\n touchThreshold = spec.touchThreshold,\n verticalSwiping = spec.verticalSwiping,\n listHeight = spec.listHeight,\n swipeToSlide = spec.swipeToSlide,\n scrolling = spec.scrolling,\n onSwipe = spec.onSwipe,\n targetSlide = spec.targetSlide,\n currentSlide = spec.currentSlide,\n infinite = spec.infinite;\n if (!dragging) {\n if (swipe) safePreventDefault(e);\n return {};\n }\n var minSwipe = verticalSwiping ? listHeight / touchThreshold : listWidth / touchThreshold;\n var swipeDirection = getSwipeDirection(touchObject, verticalSwiping);\n // reset the state of touch related state variables.\n var state = {\n dragging: false,\n edgeDragged: false,\n scrolling: false,\n swiping: false,\n swiped: false,\n swipeLeft: null,\n touchObject: {}\n };\n if (scrolling) {\n return state;\n }\n if (!touchObject.swipeLength) {\n return state;\n }\n if (touchObject.swipeLength > minSwipe) {\n safePreventDefault(e);\n if (onSwipe) {\n onSwipe(swipeDirection);\n }\n var slideCount, newSlide;\n var activeSlide = infinite ? currentSlide : targetSlide;\n switch (swipeDirection) {\n case \"left\":\n case \"up\":\n newSlide = activeSlide + getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 0;\n break;\n case \"right\":\n case \"down\":\n newSlide = activeSlide - getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 1;\n break;\n default:\n slideCount = activeSlide;\n }\n state[\"triggerSlideHandler\"] = slideCount;\n } else {\n // Adjust the track back to it's original position.\n var currentLeft = getTrackLeft(spec);\n state[\"trackStyle\"] = getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: currentLeft\n }));\n }\n return state;\n};\nvar getNavigableIndexes = exports.getNavigableIndexes = function getNavigableIndexes(spec) {\n var max = spec.infinite ? spec.slideCount * 2 : spec.slideCount;\n var breakpoint = spec.infinite ? spec.slidesToShow * -1 : 0;\n var counter = spec.infinite ? spec.slidesToShow * -1 : 0;\n var indexes = [];\n while (breakpoint < max) {\n indexes.push(breakpoint);\n breakpoint = counter + spec.slidesToScroll;\n counter += Math.min(spec.slidesToScroll, spec.slidesToShow);\n }\n return indexes;\n};\nvar checkNavigable = exports.checkNavigable = function checkNavigable(spec, index) {\n var navigables = getNavigableIndexes(spec);\n var prevNavigable = 0;\n if (index > navigables[navigables.length - 1]) {\n index = navigables[navigables.length - 1];\n } else {\n for (var n in navigables) {\n if (index < navigables[n]) {\n index = prevNavigable;\n break;\n }\n prevNavigable = navigables[n];\n }\n }\n return index;\n};\nvar getSlideCount = exports.getSlideCount = function getSlideCount(spec) {\n var centerOffset = spec.centerMode ? spec.slideWidth * Math.floor(spec.slidesToShow / 2) : 0;\n if (spec.swipeToSlide) {\n var swipedSlide;\n var slickList = spec.listRef;\n var slides = slickList.querySelectorAll && slickList.querySelectorAll(\".slick-slide\") || [];\n Array.from(slides).every(function (slide) {\n if (!spec.vertical) {\n if (slide.offsetLeft - centerOffset + getWidth(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n } else {\n if (slide.offsetTop + getHeight(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n }\n return true;\n });\n if (!swipedSlide) {\n return 0;\n }\n var currentIndex = spec.rtl === true ? spec.slideCount - spec.currentSlide : spec.currentSlide;\n var slidesTraversed = Math.abs(swipedSlide.dataset.index - currentIndex) || 1;\n return slidesTraversed;\n } else {\n return spec.slidesToScroll;\n }\n};\nvar checkSpecKeys = exports.checkSpecKeys = function checkSpecKeys(spec, keysArray) {\n return keysArray.reduce(function (value, key) {\n return value && spec.hasOwnProperty(key);\n }, true) ? null : console.error(\"Keys Missing:\", spec);\n};\nvar getTrackCSS = exports.getTrackCSS = function getTrackCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\"]);\n var trackWidth, trackHeight;\n var trackChildren = spec.slideCount + 2 * spec.slidesToShow;\n if (!spec.vertical) {\n trackWidth = getTotalSlides(spec) * spec.slideWidth;\n } else {\n trackHeight = trackChildren * spec.slideHeight;\n }\n var style = {\n opacity: 1,\n transition: \"\",\n WebkitTransition: \"\"\n };\n if (spec.useTransform) {\n var WebkitTransform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var transform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var msTransform = !spec.vertical ? \"translateX(\" + spec.left + \"px)\" : \"translateY(\" + spec.left + \"px)\";\n style = _objectSpread(_objectSpread({}, style), {}, {\n WebkitTransform: WebkitTransform,\n transform: transform,\n msTransform: msTransform\n });\n } else {\n if (spec.vertical) {\n style[\"top\"] = spec.left;\n } else {\n style[\"left\"] = spec.left;\n }\n }\n if (spec.fade) style = {\n opacity: 1\n };\n if (trackWidth) style.width = trackWidth;\n if (trackHeight) style.height = trackHeight;\n\n // Fallback for IE8\n if (window && !window.addEventListener && window.attachEvent) {\n if (!spec.vertical) {\n style.marginLeft = spec.left + \"px\";\n } else {\n style.marginTop = spec.left + \"px\";\n }\n }\n return style;\n};\nvar getTrackAnimateCSS = exports.getTrackAnimateCSS = function getTrackAnimateCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\", \"speed\", \"cssEase\"]);\n var style = getTrackCSS(spec);\n // useCSS is true by default so it can be undefined\n if (spec.useTransform) {\n style.WebkitTransition = \"-webkit-transform \" + spec.speed + \"ms \" + spec.cssEase;\n style.transition = \"transform \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n if (spec.vertical) {\n style.transition = \"top \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n style.transition = \"left \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n return style;\n};\nvar getTrackLeft = exports.getTrackLeft = function getTrackLeft(spec) {\n if (spec.unslick) {\n return 0;\n }\n checkSpecKeys(spec, [\"slideIndex\", \"trackRef\", \"infinite\", \"centerMode\", \"slideCount\", \"slidesToShow\", \"slidesToScroll\", \"slideWidth\", \"listWidth\", \"variableWidth\", \"slideHeight\"]);\n var slideIndex = spec.slideIndex,\n trackRef = spec.trackRef,\n infinite = spec.infinite,\n centerMode = spec.centerMode,\n slideCount = spec.slideCount,\n slidesToShow = spec.slidesToShow,\n slidesToScroll = spec.slidesToScroll,\n slideWidth = spec.slideWidth,\n listWidth = spec.listWidth,\n variableWidth = spec.variableWidth,\n slideHeight = spec.slideHeight,\n fade = spec.fade,\n vertical = spec.vertical;\n var slideOffset = 0;\n var targetLeft;\n var targetSlide;\n var verticalOffset = 0;\n if (fade || spec.slideCount === 1) {\n return 0;\n }\n var slidesToOffset = 0;\n if (infinite) {\n slidesToOffset = -getPreClones(spec); // bring active slide to the beginning of visual area\n // if next scroll doesn't have enough children, just reach till the end of original slides instead of shifting slidesToScroll children\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = -(slideIndex > slideCount ? slidesToShow - (slideIndex - slideCount) : slideCount % slidesToScroll);\n }\n // shift current slide to center of the frame\n if (centerMode) {\n slidesToOffset += parseInt(slidesToShow / 2);\n }\n } else {\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = slidesToShow - slideCount % slidesToScroll;\n }\n if (centerMode) {\n slidesToOffset = parseInt(slidesToShow / 2);\n }\n }\n slideOffset = slidesToOffset * slideWidth;\n verticalOffset = slidesToOffset * slideHeight;\n if (!vertical) {\n targetLeft = slideIndex * slideWidth * -1 + slideOffset;\n } else {\n targetLeft = slideIndex * slideHeight * -1 + verticalOffset;\n }\n if (variableWidth === true) {\n var targetSlideIndex;\n var trackElem = trackRef && trackRef.node;\n targetSlideIndex = slideIndex + getPreClones(spec);\n targetSlide = trackElem && trackElem.childNodes[targetSlideIndex];\n targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;\n if (centerMode === true) {\n targetSlideIndex = infinite ? slideIndex + getPreClones(spec) : slideIndex;\n targetSlide = trackElem && trackElem.children[targetSlideIndex];\n targetLeft = 0;\n for (var slide = 0; slide < targetSlideIndex; slide++) {\n targetLeft -= trackElem && trackElem.children[slide] && trackElem.children[slide].offsetWidth;\n }\n targetLeft -= parseInt(spec.centerPadding);\n targetLeft += targetSlide && (listWidth - targetSlide.offsetWidth) / 2;\n }\n }\n return targetLeft;\n};\nvar getPreClones = exports.getPreClones = function getPreClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n if (spec.variableWidth) {\n return spec.slideCount;\n }\n return spec.slidesToShow + (spec.centerMode ? 1 : 0);\n};\nvar getPostClones = exports.getPostClones = function getPostClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n return spec.slideCount;\n};\nvar getTotalSlides = exports.getTotalSlides = function getTotalSlides(spec) {\n return spec.slideCount === 1 ? 1 : getPreClones(spec) + spec.slideCount + getPostClones(spec);\n};\nvar siblingDirection = exports.siblingDirection = function siblingDirection(spec) {\n if (spec.targetSlide > spec.currentSlide) {\n if (spec.targetSlide > spec.currentSlide + slidesOnRight(spec)) {\n return \"left\";\n }\n return \"right\";\n } else {\n if (spec.targetSlide < spec.currentSlide - slidesOnLeft(spec)) {\n return \"right\";\n }\n return \"left\";\n }\n};\nvar slidesOnRight = exports.slidesOnRight = function slidesOnRight(_ref) {\n var slidesToShow = _ref.slidesToShow,\n centerMode = _ref.centerMode,\n rtl = _ref.rtl,\n centerPadding = _ref.centerPadding;\n // returns no of slides on the right of active slide\n if (centerMode) {\n var right = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) right += 1;\n if (rtl && slidesToShow % 2 === 0) right += 1;\n return right;\n }\n if (rtl) {\n return 0;\n }\n return slidesToShow - 1;\n};\nvar slidesOnLeft = exports.slidesOnLeft = function slidesOnLeft(_ref2) {\n var slidesToShow = _ref2.slidesToShow,\n centerMode = _ref2.centerMode,\n rtl = _ref2.rtl,\n centerPadding = _ref2.centerPadding;\n // returns no of slides on the left of active slide\n if (centerMode) {\n var left = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) left += 1;\n if (!rtl && slidesToShow % 2 === 0) left += 1;\n return left;\n }\n if (rtl) {\n return slidesToShow - 1;\n }\n return 0;\n};\nvar canUseDOM = exports.canUseDOM = function canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n};\nvar validSettings = exports.validSettings = Object.keys(_defaultProps[\"default\"]);\nfunction filterSettings(settings) {\n return validSettings.reduce(function (acc, settingName) {\n if (settings.hasOwnProperty(settingName)) {\n acc[settingName] = settings[settingName];\n }\n return acc;\n }, {});\n}","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","var camel2hyphen = function (str) {\n return str\n .replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n })\n .toLowerCase();\n};\n\nmodule.exports = camel2hyphen;","import type { Declaration } from 'inline-style-parser';\nimport parse from 'inline-style-parser';\n\nexport { Declaration };\n\ninterface StyleObject {\n [name: string]: string;\n}\n\ntype Iterator = (\n property: string,\n value: string,\n declaration: Declaration,\n) => void;\n\n/**\n * Parses inline style to object.\n *\n * @param style - Inline style.\n * @param iterator - Iterator.\n * @returns - Style object or null.\n *\n * @example Parsing inline style to object:\n *\n * ```js\n * import parse from 'style-to-object';\n * parse('line-height: 42;'); // { 'line-height': '42' }\n * ```\n */\nexport default function StyleToObject(\n style: string,\n iterator?: Iterator,\n): StyleObject | null {\n let styleObject: StyleObject | null = null;\n\n if (!style || typeof style !== 'string') {\n return styleObject;\n }\n\n const declarations = parse(style);\n const hasIterator = typeof iterator === 'function';\n\n declarations.forEach((declaration) => {\n if (declaration.type !== 'declaration') {\n return;\n }\n\n const { property, value } = declaration;\n\n if (hasIterator) {\n iterator(property, value, declaration);\n } else if (value) {\n styleObject = styleObject || {};\n styleObject[property] = value;\n }\n });\n\n return styleObject;\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"e714295e\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"my-app:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkmy_app\"] = self[\"webpackChunkmy_app\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n // We keep the raw Response for redirects so we can return it verbatim\n response: Response;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\ntype DataFunctionReturnValue = Promise | DataFunctionValue;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (\n args: LoaderFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (\n args: ActionFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionStatus?: number;\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\nexport interface DataStrategyMatch\n extends AgnosticRouteMatch {\n shouldLoad: boolean;\n resolve: (\n handlerOverride?: (\n handler: (ctx?: unknown) => DataFunctionReturnValue\n ) => DataFunctionReturnValue\n ) => Promise;\n}\n\nexport interface DataStrategyFunctionArgs\n extends DataFunctionArgs {\n matches: DataStrategyMatch[];\n fetcherKey: string | null;\n}\n\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface DataStrategyResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData, DataWithResponseInit\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise>;\n}\n\nexport type AgnosticPatchRoutesOnNavigationFunctionArgs<\n O extends AgnosticRouteObject = AgnosticRouteObject,\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> = {\n path: string;\n matches: M[];\n patch: (routeId: string | null, children: O[]) => void;\n};\n\nexport type AgnosticPatchRoutesOnNavigationFunction<\n O extends AgnosticRouteObject = AgnosticRouteObject,\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> = (\n opts: AgnosticPatchRoutesOnNavigationFunctionArgs\n) => void | Promise;\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction | boolean;\n action?: ActionFunction | boolean;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: string[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/v6/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\n\nexport function matchRoutesImpl<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename: string,\n allowPartial: boolean\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(\n branches[i],\n decoded,\n allowPartial\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string,\n allowPartial = false\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n let route = meta.route;\n\n if (\n !match &&\n end &&\n allowPartial &&\n !routesMeta[routesMeta.length - 1].route.index\n ) {\n match = matchPath(\n {\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false,\n },\n remainingPathname\n );\n }\n\n if (!match) {\n return null;\n }\n\n Object.assign(matchedParams, match.params);\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/v6/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/v6/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nexport function decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/v6/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n *\n * @deprecated The `json` method is deprecated in favor of returning raw objects.\n * This method will be removed in v7.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport class DataWithResponseInit {\n type: string = \"DataWithResponseInit\";\n data: D;\n init: ResponseInit | null;\n\n constructor(data: D, init?: ResponseInit) {\n this.data = data;\n this.init = init || null;\n }\n}\n\n/**\n * Create \"responses\" that contain `status`/`headers` without forcing\n * serialization into an actual `Response` - used by Remix single fetch\n */\nexport function data(data: D, init?: number | ResponseInit) {\n return new DataWithResponseInit(\n data,\n typeof init === \"number\" ? { status: init } : init\n );\n}\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\n/**\n * @deprecated The `defer` method is deprecated in favor of returning raw\n * objects. This method will be removed in v7.\n */\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\n/**\n * A redirect response that will perform a `history.replaceState` instead of a\n * `history.pushState` for client-side navigation redirects.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const replace: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Replace\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DataStrategyMatch,\n AgnosticRouteObject,\n DataResult,\n DataStrategyFunction,\n DataStrategyFunctionArgs,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n DataStrategyResult,\n ImmutableRouteKey,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n AgnosticPatchRoutesOnNavigationFunction,\n DataWithResponseInit,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n matchRoutesImpl,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE DO NOT USE\n *\n * Patch additional children routes into an existing parent route\n * @param routeId The parent route id or a callback function accepting `patch`\n * to perform batch patching\n * @param children The additional children routes\n */\n patchRoutes(routeId: string | null, children: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n v7_skipActionErrorRevalidation: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n dataStrategy?: DataStrategyFunction;\n patchRoutesOnNavigation?: AgnosticPatchRoutesOnNavigationFunction;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: {\n routeId?: string;\n requestContext?: unknown;\n dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n viewTransitionOpts?: ViewTransitionOpts;\n flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ntype PendingActionResult = [string, SuccessResult | ErrorResult];\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * Tuple for the returned or thrown value from the current action. The routeId\n * is the action route for success and the bubbled boundary route for errors.\n */\n pendingActionResult?: PendingActionResult;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.dataStrategy || defaultDataStrategy;\n let patchRoutesOnNavigationImpl = init.patchRoutesOnNavigation;\n\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n v7_skipActionErrorRevalidation: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null && !patchRoutesOnNavigationImpl) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n // In SPA apps, if the user provided a patchRoutesOnNavigation implementation and\n // our initial match is a splat route, clear them out so we run through lazy\n // discovery on hydration in case there's a more accurate lazy route match.\n // In SSR apps (with `hydrationData`), we expect that the server will send\n // up the proper matched routes so we don't want to run lazy discovery on\n // initial hydration and want to hydrate into the splat route.\n if (initialMatches && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(\n initialMatches,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n\n let initialized: boolean;\n if (!initialMatches) {\n initialized = false;\n initialMatches = [];\n\n // If partial hydration and fog of war is enabled, we will be running\n // `patchRoutesOnNavigation` during hydration so include any partial matches as\n // the initial matches so we can properly render `HydrateFallback`'s\n if (future.v7_partialHydration) {\n let fogOfWar = checkFogOfWar(\n null,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active && fogOfWar.matches) {\n initialMatches = fogOfWar.matches;\n }\n }\n } else if (initialMatches.some((m) => m.route.lazy)) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!initialMatches.some((m) => m.route.loader)) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches\n .slice(0, idx + 1)\n .every((m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors));\n } else {\n initialized = initialMatches.every(\n (m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors)\n );\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: Set = new Set();\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Map of pending patchRoutesOnNavigation() promises (keyed by path/matches) so\n // that we only kick them off once for a given combo\n let pendingPatchRoutes = new Map<\n string,\n ReturnType\n >();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let unblockBlockerHistoryUpdate: (() => void) | undefined = undefined;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (unblockBlockerHistoryUpdate) {\n unblockBlockerHistoryUpdate();\n unblockBlockerHistoryUpdate = undefined;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n let nextHistoryUpdatePromise = new Promise((resolve) => {\n unblockBlockerHistoryUpdate = resolve;\n });\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked, after the url\n // restoration is also complete. See:\n // https://github.com/remix-run/react-router/issues/11613\n nextHistoryUpdatePromise.then(() => init.history.go(delta));\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n viewTransitionOpts: opts.viewTransitionOpts,\n flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n {\n overrideNavigation: state.navigation,\n // Proxy through any rending view transition\n enableViewTransition: pendingViewTransitionEnabled === true,\n }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial hydration will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionResult: PendingActionResult | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: ResultType.error, error: opts.pendingError },\n ];\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n fogOfWar.active,\n { replace: opts.replace, flushSync }\n );\n\n if (actionResult.shortCircuited) {\n return;\n }\n\n // If we received a 404 from handleAction, it's because we couldn't lazily\n // discover the destination route so we don't want to call loaders\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (\n isErrorResult(result) &&\n isRouteErrorResponse(result.error) &&\n result.error.status === 404\n ) {\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error,\n },\n });\n return;\n }\n }\n\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // No need to do fog of war matching again on loader execution\n fogOfWar.active = false;\n\n // Create a GET request for the loaders\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n\n // Call loaders\n let {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors,\n } = await handleLoaders(\n request,\n location,\n matches,\n fogOfWar.active,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: updatedMatches || matches,\n ...getActionDataForCommit(pendingActionResult),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches)\n .route.id;\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [\n boundaryId,\n {\n type: ResultType.error,\n error: discoverResult.error,\n },\n ],\n };\n } else if (!discoverResult.matches) {\n let { notFoundMatches, error, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n pendingActionResult: [\n route.id,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n state,\n request,\n [actionMatch],\n matches,\n null\n );\n result = results[actionMatch.route.id];\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(\n result.response.headers.get(\"Location\")!,\n new URL(request.url),\n basename\n );\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, true, {\n submission,\n replace,\n });\n return { shortCircuited: true };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions to the current location are REPLACE\n // navigations, but if the action threw an error that'll be rendered in\n // an errorElement, we fall back to PUSH so that the user can use the\n // back button to get back to the pre-submission form location to try\n // again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n matches,\n pendingActionResult: [boundaryMatch.route.id, result],\n };\n }\n\n return {\n matches,\n pendingActionResult: [actionMatch.route.id, result],\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionResult?: PendingActionResult\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n let shouldUpdateNavigationState =\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration);\n\n // When fog of war is enabled, we enter our `loading` state earlier so we\n // can discover new routes during the `loading` state. We skip this if\n // we've already run actions since we would have done our matching already.\n // If the children() function threw then, we want to proceed with the\n // partial matches it discovered.\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData !== undefined ? { actionData } : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches)\n .route.id;\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: discoverResult.error,\n },\n };\n } else if (!discoverResult.matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionResult\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? { [pendingActionResult[0]]: pendingActionResult[1].error }\n : null,\n ...getActionDataForCommit(pendingActionResult),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n if (shouldUpdateNavigationState) {\n let updates: Partial = {};\n if (!isFogOfWar) {\n // Only update navigation/actionNData if we didn't already do it above\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== undefined) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, { flushSync });\n }\n\n revalidatingFetchers.forEach((rf) => {\n abortFetcher(rf.key);\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n pendingActionResult,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n // Preserve SSR errors during partial hydration\n if (future.v7_partialHydration && initialHydration && state.errors) {\n errors = { ...state.errors, ...errors };\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n matches,\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getUpdatedActionData(\n pendingActionResult: PendingActionResult | undefined\n ): Record | null | undefined {\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n return {\n [pendingActionResult[0]]: pendingActionResult[1].data as any,\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n\n function getUpdatedRevalidatingFetchers(\n revalidatingFetchers: RevalidatingFetcher[]\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n return new Map(state.fetchers);\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n abortFetcher(key);\n\n let flushSync = (opts && opts.flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n let preventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n preventScrollReset: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n function detectAndHandle405Error(m: AgnosticDataRouteMatch) {\n if (!m.route.action && !m.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return true;\n }\n return false;\n }\n\n if (!isFogOfWar && detectAndHandle405Error(match)) {\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n requestMatches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n requestMatches = discoverResult.matches;\n match = getTargetMatch(requestMatches, path);\n\n if (detectAndHandle405Error(match)) {\n return;\n }\n }\n }\n\n // Call the action for the fetcher\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\n \"action\",\n state,\n fetchRequest,\n [match],\n requestMatches,\n key\n );\n let actionResult = actionResults[match.route.id];\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, false, {\n fetcherSubmission: submission,\n preventScrollReset,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n [match.route.id, actionResult]\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n abortFetcher(staleKey);\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false,\n { preventScrollReset }\n );\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false,\n { preventScrollReset }\n );\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n preventScrollReset: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n matches = discoverResult.matches;\n match = getTargetMatch(matches, path);\n }\n }\n\n // Call the loader for this fetcher route match\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\n \"loader\",\n state,\n fetchRequest,\n [match],\n matches,\n key\n );\n let result = results[match.route.id];\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result, false, {\n preventScrollReset,\n });\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n request: Request,\n redirect: RedirectResult,\n isNavigation: boolean,\n {\n submission,\n fetcherSubmission,\n preventScrollReset,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n preventScrollReset?: boolean;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true,\n });\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true || redirect.response.headers.has(\"X-Remix-Replace\")\n ? HistoryAction.Replace\n : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.response.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location,\n },\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\n });\n }\n }\n\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n state: RouterState,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null\n ): Promise> {\n let results: Record;\n let dataResults: Record = {};\n try {\n results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n state,\n request,\n matchesToLoad,\n matches,\n fetcherKey,\n manifest,\n mapRouteProperties\n );\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n matchesToLoad.forEach((m) => {\n dataResults[m.route.id] = {\n type: ResultType.error,\n error: e,\n };\n });\n return dataResults;\n }\n\n for (let [routeId, result] of Object.entries(results)) {\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n dataResults[routeId] = {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n routeId,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n } else {\n dataResults[routeId] = await convertDataStrategyResultToDataResult(\n result\n );\n }\n }\n\n return dataResults;\n }\n\n async function callLoadersAndMaybeResolveData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n let currentMatches = state.matches;\n\n // Kick off loaders and fetchers in parallel\n let loaderResultsPromise = callDataStrategy(\n \"loader\",\n state,\n request,\n matchesToLoad,\n matches,\n null\n );\n\n let fetcherResultsPromise = Promise.all(\n fetchersToLoad.map(async (f) => {\n if (f.matches && f.match && f.controller) {\n let results = await callDataStrategy(\n \"loader\",\n state,\n createClientSideRequest(init.history, f.path, f.controller.signal),\n [f.match],\n f.matches,\n f.key\n );\n let result = results[f.match.route.id];\n // Fetcher results are keyed by fetcher key from here on out, not routeId\n return { [f.key]: result };\n } else {\n return Promise.resolve({\n [f.key]: {\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n } as ErrorResult,\n });\n }\n })\n );\n\n let loaderResults = await loaderResultsPromise;\n let fetcherResults = (await fetcherResultsPromise).reduce(\n (acc, r) => Object.assign(acc, r),\n {}\n );\n\n await Promise.all([\n resolveNavigationDeferredResults(\n matches,\n loaderResults,\n request.signal,\n currentMatches,\n state.loaderData\n ),\n resolveFetcherDeferredResults(matches, fetcherResults, fetchersToLoad),\n ]);\n\n return {\n loaderResults,\n fetcherResults,\n };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.add(key);\n }\n abortFetcher(key);\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n cancelledFetcherLoads.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n if (controller) {\n controller.abort();\n fetchControllers.delete(key);\n }\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function handleNavigational404(pathname: string) {\n let error = getInternalRouterError(404, { pathname });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { matches, route } = getShortCircuitMatches(routesToUse);\n\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n\n return { notFoundMatches: matches, route, error };\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function checkFogOfWar(\n matches: AgnosticDataRouteMatch[] | null,\n routesToUse: AgnosticDataRouteObject[],\n pathname: string\n ): { active: boolean; matches: AgnosticDataRouteMatch[] | null } {\n if (patchRoutesOnNavigationImpl) {\n if (!matches) {\n let fogMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n return { active: true, matches: fogMatches || [] };\n } else {\n if (Object.keys(matches[0].params).length > 0) {\n // If we matched a dynamic param or a splat, it might only be because\n // we haven't yet discovered other routes that would match with a\n // higher score. Call patchRoutesOnNavigation just to be sure\n let partialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: partialMatches };\n }\n }\n }\n\n return { active: false, matches: null };\n }\n\n type DiscoverRoutesSuccessResult = {\n type: \"success\";\n matches: AgnosticDataRouteMatch[] | null;\n };\n type DiscoverRoutesErrorResult = {\n type: \"error\";\n error: any;\n partialMatches: AgnosticDataRouteMatch[];\n };\n type DiscoverRoutesAbortedResult = { type: \"aborted\" };\n type DiscoverRoutesResult =\n | DiscoverRoutesSuccessResult\n | DiscoverRoutesErrorResult\n | DiscoverRoutesAbortedResult;\n\n async function discoverRoutes(\n matches: AgnosticDataRouteMatch[],\n pathname: string,\n signal: AbortSignal\n ): Promise {\n if (!patchRoutesOnNavigationImpl) {\n return { type: \"success\", matches };\n }\n\n let partialMatches: AgnosticDataRouteMatch[] | null = matches;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let localManifest = manifest;\n try {\n await patchRoutesOnNavigationImpl({\n path: pathname,\n matches: partialMatches,\n patch: (routeId, children) => {\n if (signal.aborted) return;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n localManifest,\n mapRouteProperties\n );\n },\n });\n } catch (e) {\n return { type: \"error\", error: e, partialMatches };\n } finally {\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity so when we `updateState` at the end of\n // this navigation/fetch `router.routes` will be a new identity and\n // trigger a re-run of memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR && !signal.aborted) {\n dataRoutes = [...dataRoutes];\n }\n }\n\n if (signal.aborted) {\n return { type: \"aborted\" };\n }\n\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n if (newMatches) {\n return { type: \"success\", matches: newMatches };\n }\n\n let newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n // Avoid loops if the second pass results in the same partial matches\n if (\n !newPartialMatches ||\n (partialMatches.length === newPartialMatches.length &&\n partialMatches.every(\n (m, i) => m.route.id === newPartialMatches![i].route.id\n ))\n ) {\n return { type: \"success\", matches: null };\n }\n\n partialMatches = newPartialMatches;\n }\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n function patchRoutes(\n routeId: string | null,\n children: AgnosticRouteObject[]\n ): void {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n manifest,\n mapRouteProperties\n );\n\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity and trigger a reflow via `updateState`\n // to re-run memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\n }\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n patchRoutes,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(\n request: Request,\n {\n requestContext,\n skipLoaderErrorBubbling,\n dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null\n );\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n dataStrategy,\n }: {\n requestContext?: unknown;\n routeId?: string;\n dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n false,\n match\n );\n\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `DataStrategyResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isDataStrategyResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n result = results[actionMatch.route.id];\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")!,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling\n ? actionMatch\n : findNearestBoundary(matches, actionMatch.route.id);\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null,\n [boundaryMatch.route.id, result]\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : result.statusCode != null\n ? result.statusCode\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null\n );\n\n return {\n ...context,\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionHeaders: result.headers\n ? { [actionMatch.route.id]: result.headers }\n : {},\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null,\n pendingActionResult?: PendingActionResult\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : pendingActionResult && isErrorResult(pendingActionResult[1])\n ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0])\n : matches;\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? {\n [pendingActionResult[0]]: pendingActionResult[1].error,\n }\n : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await callDataStrategy(\n \"loader\",\n request,\n matchesToLoad,\n matches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n activeDeferreds,\n skipLoaderErrorBubbling\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n isRouteRequest: boolean,\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null\n ): Promise> {\n let results = await callDataStrategyImpl(\n dataStrategy || defaultDataStrategy,\n type,\n null,\n request,\n matchesToLoad,\n matches,\n null,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n let dataResults: Record = {};\n await Promise.all(\n matches.map(async (match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let result = results[match.route.id];\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n match.route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n );\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n\n dataResults[match.route.id] =\n await convertDataStrategyResultToDataResult(result);\n })\n );\n return dataResults;\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Account for `?index` params when routing to the current location\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch) {\n let nakedIndex = hasNakedIndexQuery(path.search);\n if (activeRouteMatch.route.index && !nakedIndex) {\n // Add one when we're targeting an index route\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n } else if (!activeRouteMatch.route.index && nakedIndex) {\n // Remove existing ones when we're not\n let params = new URLSearchParams(path.search);\n let indexValues = params.getAll(\"index\");\n params.delete(\"index\");\n indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n let qs = params.toString();\n path.search = qs ? `?${qs}` : \"\";\n }\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes at/below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId: string,\n includeBoundary = false\n) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n return matches.slice(0, includeBoundary ? index + 1 : index);\n }\n return matches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n initialHydration: boolean,\n skipActionErrorRevalidation: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: Set,\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionResult?: PendingActionResult\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingActionResult\n ? isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : pendingActionResult[1].data\n : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryMatches = matches;\n if (initialHydration && state.errors) {\n // On initial hydration, only consider matches up to _and including_ the boundary.\n // This is inclusive to handle cases where a server loader ran successfully,\n // a child server loader bubbled up to this route, but this route has\n // `clientLoader.hydrate` so we want to still run the `clientLoader` so that\n // we have a complete version of `loaderData`\n boundaryMatches = getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(state.errors)[0],\n true\n );\n } else if (pendingActionResult && isErrorResult(pendingActionResult[1])) {\n // If an action threw an error, we call loaders up to, but not including the\n // boundary\n boundaryMatches = getLoaderMatchesUntilBoundary(\n matches,\n pendingActionResult[0]\n );\n }\n\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult\n ? pendingActionResult[1].statusCode\n : undefined;\n let shouldSkipRevalidation =\n skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (initialHydration) {\n return shouldLoadRouteOnHydration(route, state.loaderData, state.errors);\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial hydration (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n initialHydration ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.has(key)) {\n // Always mark for revalidation if the fetcher was cancelled\n cancelledFetcherLoads.delete(key);\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction shouldLoadRouteOnHydration(\n route: AgnosticDataRouteObject,\n loaderData: RouteData | null | undefined,\n errors: RouteData | null | undefined\n) {\n // We dunno if we have a loader - gotta find out!\n if (route.lazy) {\n return true;\n }\n\n // No loader, nothing to initialize\n if (!route.loader) {\n return false;\n }\n\n let hasData = loaderData != null && loaderData[route.id] !== undefined;\n let hasError = errors != null && errors[route.id] !== undefined;\n\n // Don't run if we error'd during SSR\n if (!hasData && hasError) {\n return false;\n }\n\n // Explicitly opting-in to running on hydration\n if (typeof route.loader === \"function\" && route.loader.hydrate === true) {\n return true;\n }\n\n // Otherwise, run if we're not yet initialized with anything\n return !hasData && !hasError;\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\nfunction patchRoutesImpl(\n routeId: string | null,\n children: AgnosticRouteObject[],\n routesToUse: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction\n) {\n let childrenToPatch: AgnosticDataRouteObject[];\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n if (!route.children) {\n route.children = [];\n }\n childrenToPatch = route.children;\n } else {\n childrenToPatch = routesToUse;\n }\n\n // Don't patch in routes we already know about so that `patch` is idempotent\n // to simplify user-land code. This is useful because we re-call the\n // `patchRoutesOnNavigation` function for matched routes with params.\n let uniqueChildren = children.filter(\n (newRoute) =>\n !childrenToPatch.some((existingRoute) =>\n isSameRoute(newRoute, existingRoute)\n )\n );\n\n let newRoutes = convertRoutesToDataRoutes(\n uniqueChildren,\n mapRouteProperties,\n [routeId || \"_\", \"patch\", String(childrenToPatch?.length || \"0\")],\n manifest\n );\n\n childrenToPatch.push(...newRoutes);\n}\n\nfunction isSameRoute(\n newRoute: AgnosticRouteObject,\n existingRoute: AgnosticRouteObject\n): boolean {\n // Most optimal check is by id\n if (\n \"id\" in newRoute &&\n \"id\" in existingRoute &&\n newRoute.id === existingRoute.id\n ) {\n return true;\n }\n\n // Second is by pathing differences\n if (\n !(\n newRoute.index === existingRoute.index &&\n newRoute.path === existingRoute.path &&\n newRoute.caseSensitive === existingRoute.caseSensitive\n )\n ) {\n return false;\n }\n\n // Pathless layout routes are trickier since we need to check children.\n // If they have no children then they're the same as far as we can tell\n if (\n (!newRoute.children || newRoute.children.length === 0) &&\n (!existingRoute.children || existingRoute.children.length === 0)\n ) {\n return true;\n }\n\n // Otherwise, we look to see if every child in the new route is already\n // represented in the existing route's children\n return newRoute.children!.every((aChild, i) =>\n existingRoute.children?.some((bChild) => isSameRoute(aChild, bChild))\n );\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nasync function defaultDataStrategy({\n matches,\n}: DataStrategyFunctionArgs): ReturnType {\n let matchesToLoad = matches.filter((m) => m.shouldLoad);\n let results = await Promise.all(matchesToLoad.map((m) => m.resolve()));\n return results.reduce(\n (acc, result, i) =>\n Object.assign(acc, { [matchesToLoad[i].route.id]: result }),\n {}\n );\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n state: RouterState | null,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null,\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise> {\n let loadRouteDefinitionsPromises = matches.map((m) =>\n m.route.lazy\n ? loadLazyRouteModule(m.route, mapRouteProperties, manifest)\n : undefined\n );\n\n let dsMatches = matches.map((match, i) => {\n let loadRoutePromise = loadRouteDefinitionsPromises[i];\n let shouldLoad = matchesToLoad.some((m) => m.route.id === match.route.id);\n // `resolve` encapsulates route.lazy(), executing the loader/action,\n // and mapping return values/thrown errors to a `DataStrategyResult`. Users\n // can pass a callback to take fine-grained control over the execution\n // of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = async (handlerOverride) => {\n if (\n handlerOverride &&\n request.method === \"GET\" &&\n (match.route.lazy || match.route.loader)\n ) {\n shouldLoad = true;\n }\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n loadRoutePromise,\n handlerOverride,\n requestContext\n )\n : Promise.resolve({ type: ResultType.data, result: undefined });\n };\n\n return {\n ...match,\n shouldLoad,\n resolve,\n };\n });\n\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: dsMatches,\n request,\n params: matches[0].params,\n fetcherKey,\n context: requestContext,\n });\n\n // Wait for all routes to load here but 'swallow the error since we want\n // it to bubble up from the `await loadRoutePromise` in `callLoaderOrAction` -\n // called from `match.resolve()`\n try {\n await Promise.all(loadRouteDefinitionsPromises);\n } catch (e) {\n // No-op\n }\n\n return results;\n}\n\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n loadRoutePromise: Promise | undefined,\n handlerOverride: Parameters[0],\n staticContext?: unknown\n): Promise {\n let result: DataStrategyResult;\n let onReject: (() => void) | undefined;\n\n let runHandler = (\n handler: AgnosticRouteObject[\"loader\"] | AgnosticRouteObject[\"action\"]\n ): Promise => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n // This will never resolve so safe to type it as Promise to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n let actualHandler = (ctx?: unknown) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean ` +\n `\"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n params: match.params,\n context: staticContext,\n },\n ...(ctx !== undefined ? [ctx] : [])\n );\n };\n\n let handlerPromise: Promise = (async () => {\n try {\n let val = await (handlerOverride\n ? handlerOverride((ctx: unknown) => actualHandler(ctx))\n : actualHandler());\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n // If we have a route.lazy promise, await that first\n if (loadRoutePromise) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadRoutePromise,\n ]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value!;\n } else {\n // Load lazy route module, then run any returned handler\n await loadRoutePromise;\n\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, result: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result.result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // DataStrategyResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return { type: ResultType.error, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n return result;\n}\n\nasync function convertDataStrategyResultToDataResult(\n dataStrategyResult: DataStrategyResult\n): Promise {\n let { result, type } = dataStrategyResult;\n\n if (isResponse(result)) {\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (type === ResultType.error) {\n if (isDataWithResponseInit(result)) {\n if (result.data instanceof Error) {\n return {\n type: ResultType.error,\n error: result.data,\n statusCode: result.init?.status,\n };\n }\n\n // Convert thrown data() to ErrorResponse instances\n result = new ErrorResponseImpl(\n result.init?.status || 500,\n undefined,\n result.data\n );\n }\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : undefined,\n };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n if (isDataWithResponseInit(result)) {\n return {\n type: ResultType.data,\n data: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers\n ? new Headers(result.init.headers)\n : undefined,\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(\n response: Response,\n request: Request,\n routeId: string,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n v7_relativeSplatPath: boolean\n) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n response.headers.set(\"Location\", location);\n }\n\n return response;\n}\n\nfunction normalizeRedirectLocation(\n location: string,\n currentUrl: URL,\n basename: string\n): string {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\")\n ? new URL(currentUrl.protocol + normalizedLocation)\n : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n results: Record,\n pendingActionResult: PendingActionResult | undefined,\n activeDeferreds: Map,\n skipLoaderErrorBubbling: boolean\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n let pendingError =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : undefined;\n\n // Process loader results into state.loaderData/state.errors\n matches.forEach((match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let id = match.route.id;\n let result = results[id];\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n loaderData[pendingActionResult[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n results: Record,\n pendingActionResult: PendingActionResult | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: Record,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n activeDeferreds,\n false // This method is only called client side so we always want to bubble\n );\n\n // Process results from our revalidating fetchers\n revalidatingFetchers.forEach((rf) => {\n let { key, match, controller } = rf;\n let result = fetcherResults[key];\n invariant(result, \"Did not find corresponding fetcher result\");\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n return;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n });\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\nfunction getActionDataForCommit(\n pendingActionResult: PendingActionResult | undefined\n) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1])\n ? {\n // Clear out prior actionData on errors\n actionData: {},\n }\n : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data,\n },\n };\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n message,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n message?: string;\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: Record\n): { key: string; result: RedirectResult } | undefined {\n let entries = Object.entries(results);\n for (let i = entries.length - 1; i >= 0; i--) {\n let [key, result] = entries[i];\n if (isRedirectResult(result)) {\n return { key, result };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isPromise(val: unknown): val is Promise {\n return typeof val === \"object\" && val != null && \"then\" in val;\n}\n\nfunction isDataStrategyResult(result: unknown): result is DataStrategyResult {\n return (\n result != null &&\n typeof result === \"object\" &&\n \"type\" in result &&\n \"result\" in result &&\n (result.type === ResultType.data || result.type === ResultType.error)\n );\n}\n\nfunction isRedirectDataStrategyResultResult(result: DataStrategyResult) {\n return (\n isResponse(result.result) && redirectStatusCodes.has(result.result.status)\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDataWithResponseInit(\n value: any\n): value is DataWithResponseInit {\n return (\n typeof value === \"object\" &&\n value != null &&\n \"type\" in value &&\n \"data\" in value &&\n \"init\" in value &&\n value.type === \"DataWithResponseInit\"\n );\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveNavigationDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record,\n signal: AbortSignal,\n currentMatches: AgnosticDataRouteMatch[],\n currentLoaderData: RouteData\n) {\n let entries = Object.entries(results);\n for (let index = 0; index < entries.length; index++) {\n let [routeId, result] = entries[index];\n let match = matches.find((m) => m?.route.id === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && isRevalidatingLoader) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n await resolveDeferredData(result, signal, false).then((result) => {\n if (result) {\n results[routeId] = result;\n }\n });\n }\n }\n}\n\nasync function resolveFetcherDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record,\n revalidatingFetchers: RevalidatingFetcher[]\n) {\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, routeId, controller } = revalidatingFetchers[index];\n let result = results[key];\n let match = matches.find((m) => m?.route.id === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n if (isDeferredResult(result)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n invariant(\n controller,\n \"Expected an AbortController for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, controller.signal, true).then(\n (result) => {\n if (result) {\n results[key] = result;\n }\n }\n );\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject\n // Omit `future` since those can be pulled from the `router`\n // `NavigationContext` needs future since it doesn't have a `router` in all cases\n extends Omit {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n flushSync?: boolean;\n viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n future: {\n v7_relativeSplatPath: boolean;\n };\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_decodePath as decodePath,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/v6/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/v6/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/v6/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/v6/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, decodePath(pathname)),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, future, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/v6/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/v6/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/v6/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/v6/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { future } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/v6/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"],\n future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n // Determine the remaining pathname by removing the # of URL segments the\n // parentPathnameBase has, instead of removing based on character count.\n // This is because we can't guarantee that incoming/outgoing encodings/\n // decodings will match exactly.\n // We decode paths before matching on a per-segment basis with\n // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n // match what `window.location.pathname` would reflect. Those don't 100%\n // align when it comes to encoded URI characters such as % and &.\n //\n // So we may end up with:\n // pathname: \"/descendant/a%25b/match\"\n // parentPathnameBase: \"/descendant/a%b\"\n //\n // And the direct substring removal approach won't work :/\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined ||\n matches[matches.length - 1].route.lazy !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState,\n future\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error !== undefined ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null,\n future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (!dataRouterState) {\n return null;\n }\n\n if (dataRouterState.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else if (\n future?.v7_partialHydration &&\n parentMatches.length === 0 &&\n !dataRouterState.initialized &&\n dataRouterState.matches.length > 0\n ) {\n // Don't bail if we're initializing with partial hydration and we have\n // router matches. That means we're actively running `patchRoutesOnNavigation`\n // so we should render down the partial matches to the appropriate\n // `HydrateFallback`. We only do this if `parentMatches` is empty so it\n // only impacts the root matches for `RouterProvider` and no descendant\n // ``\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id] !== undefined\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n\n if (match.route.id) {\n let { loaderData, errors } = dataRouterState;\n let needsToRunLoader =\n match.route.loader &&\n loaderData[match.route.id] === undefined &&\n (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error: any;\n let shouldRenderHydrateFallback = false;\n let errorElement: React.ReactNode | null = null;\n let hydrateFallbackElement: React.ReactNode | null = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/v6/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type { FutureConfig as RouterFutureConfig } from \"@remix-run/router\";\nimport type { FutureConfig as RenderFutureConfig } from \"./components\";\n\nconst alreadyWarned: { [key: string]: boolean } = {};\n\nexport function warnOnce(key: string, message: string): void {\n if (!alreadyWarned[message]) {\n alreadyWarned[message] = true;\n console.warn(message);\n }\n}\n\nconst logDeprecation = (flag: string, msg: string, link: string) =>\n warnOnce(\n flag,\n `⚠️ React Router Future Flag Warning: ${msg}. ` +\n `You can use the \\`${flag}\\` future flag to opt-in early. ` +\n `For more information, see ${link}.`\n );\n\nexport function logV6DeprecationWarnings(\n renderFuture: Partial | undefined,\n routerFuture?: Omit\n) {\n if (!renderFuture?.v7_startTransition) {\n logDeprecation(\n \"v7_startTransition\",\n \"React Router will begin wrapping state updates in `React.startTransition` in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_starttransition\"\n );\n }\n\n if (\n !renderFuture?.v7_relativeSplatPath &&\n (!routerFuture || !routerFuture.v7_relativeSplatPath)\n ) {\n logDeprecation(\n \"v7_relativeSplatPath\",\n \"Relative route resolution within Splat routes is changing in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath\"\n );\n }\n\n if (routerFuture) {\n if (!routerFuture.v7_fetcherPersist) {\n logDeprecation(\n \"v7_fetcherPersist\",\n \"The persistence behavior of fetchers is changing in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist\"\n );\n }\n\n if (!routerFuture.v7_normalizeFormMethod) {\n logDeprecation(\n \"v7_normalizeFormMethod\",\n \"Casing of `formMethod` fields is being normalized to uppercase in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod\"\n );\n }\n\n if (!routerFuture.v7_partialHydration) {\n logDeprecation(\n \"v7_partialHydration\",\n \"`RouterProvider` hydration behavior is changing in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_partialhydration\"\n );\n }\n\n if (!routerFuture.v7_skipActionErrorRevalidation) {\n logDeprecation(\n \"v7_skipActionErrorRevalidation\",\n \"The revalidation behavior after 4xx/5xx `action` responses is changing in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation\"\n );\n }\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n RouterSubscriber,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\nimport { logV6DeprecationWarnings } from \"./deprecations\";\n\nexport interface FutureConfig {\n v7_relativeSplatPath: boolean;\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n // Only accept future flags relevant to rendering behavior\n // routing flags should be accessed via router.future\n future?: Partial>;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n\n let setState = React.useCallback(\n (newState: RouterState) => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n },\n [setStateImpl, v7_startTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n React.useEffect(() => {\n warning(\n fallbackElement == null || !router.future.v7_partialHydration,\n \"`` is deprecated when using \" +\n \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n );\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n React.useEffect(\n () => logV6DeprecationWarnings(future, router.future),\n [router, future]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code);\n buffer = '';\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase();\n if (htmlRawNames.includes(name)) {\n effects.consume(code);\n return continuationClose;\n }\n return continuation(code);\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n // Always the case.\n effects.consume(code);\n buffer += String.fromCharCode(code);\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code);\n return continuationClose;\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"htmlFlowData\");\n return continuationAfter(code);\n }\n effects.consume(code);\n return continuationClose;\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit(\"htmlFlow\");\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start;\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return effects.attempt(blankLine, ok, nok);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nconst nonLazyContinuation = {\n partial: true,\n tokenize: tokenizeNonLazyContinuation\n};\n\n/** @type {Construct} */\nexport const codeFenced = {\n concrete: true,\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this;\n /** @type {Construct} */\n const closeStart = {\n partial: true,\n tokenize: tokenizeCloseStart\n };\n let initialPrefix = 0;\n let sizeOpen = 0;\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code);\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1];\n initialPrefix = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n marker = code;\n effects.enter(\"codeFenced\");\n effects.enter(\"codeFencedFence\");\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++;\n effects.consume(code);\n return sequenceOpen;\n }\n if (sizeOpen < 3) {\n return nok(code);\n }\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, infoBefore, \"whitespace\")(code) : infoBefore(code);\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFencedFenceInfo\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return info(code);\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return infoBefore(code);\n }\n if (markdownSpace(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return factorySpace(effects, metaBefore, \"whitespace\")(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return info;\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code);\n }\n effects.enter(\"codeFencedFenceMeta\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return meta(code);\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceMeta\");\n return infoBefore(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return meta;\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code);\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return contentStart;\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, \"linePrefix\", initialPrefix + 1)(code) : beforeContentChunk(code);\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFlowValue\");\n return contentChunk(code);\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFlowValue\");\n return beforeContentChunk(code);\n }\n effects.consume(code);\n return contentChunk;\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit(\"codeFenced\");\n return ok(code);\n }\n\n /**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0;\n return startBefore;\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return start;\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter(\"codeFencedFence\");\n return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code);\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceClose(code);\n }\n return nok(code);\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++;\n effects.consume(code);\n return sequenceClose;\n }\n if (size >= sizeOpen) {\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, \"whitespace\")(code) : sequenceCloseAfter(code);\n }\n return nok(code);\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return ok(code);\n }\n return nok(code);\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code);\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineStart;\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}","/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { asciiAlphanumeric, asciiDigit, asciiHexDigit } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this;\n let size = 0;\n /** @type {number} */\n let max;\n /** @type {(code: Code) => boolean} */\n let test;\n return start;\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterReference\");\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n return open;\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter(\"characterReferenceMarkerNumeric\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerNumeric\");\n return numeric;\n }\n effects.enter(\"characterReferenceValue\");\n max = 31;\n test = asciiAlphanumeric;\n return value(code);\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter(\"characterReferenceMarkerHexadecimal\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerHexadecimal\");\n effects.enter(\"characterReferenceValue\");\n max = 6;\n test = asciiHexDigit;\n return value;\n }\n effects.enter(\"characterReferenceValue\");\n max = 7;\n test = asciiDigit;\n return value(code);\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit(\"characterReferenceValue\");\n if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {\n return nok(code);\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n effects.exit(\"characterReference\");\n return ok;\n }\n if (test(code) && size++ < max) {\n effects.consume(code);\n return value;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiPunctuation } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterEscape\");\n effects.enter(\"escapeMarker\");\n effects.consume(code);\n effects.exit(\"escapeMarker\");\n return inside;\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter(\"characterEscapeValue\");\n effects.consume(code);\n effects.exit(\"characterEscapeValue\");\n effects.exit(\"characterEscape\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start;\n\n /** @type {State} */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, ok, \"linePrefix\");\n }\n}","/**\n * @import {Event, Resolver, TokenizeContext} from 'micromark-util-types'\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {ReadonlyArray<{resolveAll?: Resolver | undefined}>} constructs\n * List of constructs, optionally with `resolveAll`s.\n * @param {Array} events\n * List of events.\n * @param {TokenizeContext} context\n * Context used by `tokenize`.\n * @returns {Array}\n * Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {Array} */\n const called = []\n let index = -1\n\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll\n\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n","/**\n * @import {\n * Construct,\n * Event,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n resolveAll: resolveAllLabelEnd,\n resolveTo: resolveToLabelEnd,\n tokenize: tokenizeLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1;\n /** @type {Array} */\n const newEvents = [];\n while (++index < events.length) {\n const token = events[index][1];\n newEvents.push(events[index]);\n if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n // Remove the marker.\n const offset = token.type === \"labelImage\" ? 4 : 2;\n token.type = \"data\";\n index += offset;\n }\n }\n\n // If the events are equal, we don't have to copy newEvents to events\n if (events.length !== newEvents.length) {\n splice(events, 0, events.length, newEvents);\n }\n return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length;\n let offset = 0;\n /** @type {Token} */\n let token;\n /** @type {number | undefined} */\n let open;\n /** @type {number | undefined} */\n let close;\n /** @type {Array} */\n let media;\n\n // Find an opening.\n while (index--) {\n token = events[index][1];\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n break;\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === \"labelLink\") {\n token._inactive = true;\n }\n } else if (close) {\n if (events[index][0] === 'enter' && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n open = index;\n if (token.type !== \"labelLink\") {\n offset = 2;\n break;\n }\n }\n } else if (token.type === \"labelEnd\") {\n close = index;\n }\n }\n const group = {\n type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n start: {\n ...events[open][1].start\n },\n end: {\n ...events[events.length - 1][1].end\n }\n };\n const label = {\n type: \"label\",\n start: {\n ...events[open][1].start\n },\n end: {\n ...events[close][1].end\n }\n };\n const text = {\n type: \"labelText\",\n start: {\n ...events[open + offset + 2][1].end\n },\n end: {\n ...events[close - 2][1].start\n }\n };\n media = [['enter', group, context], ['enter', label, context]];\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3));\n\n // Text open.\n media = push(media, [['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n // Text close, marker close, label close.\n media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1));\n\n // Media close.\n media = push(media, [['exit', group, context]]);\n splice(events, open, events.length, media);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this;\n let index = self.events.length;\n /** @type {Token} */\n let labelStart;\n /** @type {boolean} */\n let defined;\n\n // Find an opening.\n while (index--) {\n if ((self.events[index][1].type === \"labelImage\" || self.events[index][1].type === \"labelLink\") && !self.events[index][1]._balanced) {\n labelStart = self.events[index][1];\n break;\n }\n }\n return start;\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code);\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code);\n }\n defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })));\n effects.enter(\"labelEnd\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelEnd\");\n return after;\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code);\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code);\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true;\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart;\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter(\"resource\");\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n return resourceBefore;\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code);\n }\n return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, \"resourceDestination\", \"resourceDestinationLiteral\", \"resourceDestinationLiteralMarker\", \"resourceDestinationRaw\", \"resourceDestinationString\", 32)(code);\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code);\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(effects, resourceTitleAfter, nok, \"resourceTitle\", \"resourceTitleMarker\", \"resourceTitleString\")(code);\n }\n return resourceEnd(code);\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n effects.exit(\"resource\");\n return ok;\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this;\n return referenceFull;\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, \"reference\", \"referenceMarker\", \"referenceString\")(code);\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart;\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter(\"reference\");\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n return referenceCollapsedOpen;\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n effects.exit(\"reference\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n resolveAll: labelEnd.resolveAll,\n tokenize: tokenizeLabelStartImage\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelImage\");\n effects.enter(\"labelImageMarker\");\n effects.consume(code);\n effects.exit(\"labelImageMarker\");\n return open;\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelImage\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n * \n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @import {Code} from 'micromark-util-types'\n */\n\nimport { markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n return 1;\n }\n if (unicodePunctuation(code)) {\n return 2;\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * Event,\n * Point,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { push, splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n resolveAll: resolveAllAttention,\n tokenize: tokenizeAttention\n};\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n let index = -1;\n /** @type {number} */\n let open;\n /** @type {Token} */\n let group;\n /** @type {Token} */\n let text;\n /** @type {Token} */\n let openingSequence;\n /** @type {Token} */\n let closingSequence;\n /** @type {number} */\n let use;\n /** @type {Array} */\n let nextEvents;\n /** @type {number} */\n let offset;\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) {\n open = index;\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n continue;\n }\n\n // Number of markers to use from the sequence.\n use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n const start = {\n ...events[open][1].end\n };\n const end = {\n ...events[index][1].start\n };\n movePoint(start, -use);\n movePoint(end, use);\n openingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start,\n end: {\n ...events[open][1].end\n }\n };\n closingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start: {\n ...events[index][1].start\n },\n end\n };\n text = {\n type: use > 1 ? \"strongText\" : \"emphasisText\",\n start: {\n ...events[open][1].end\n },\n end: {\n ...events[index][1].start\n }\n };\n group = {\n type: use > 1 ? \"strong\" : \"emphasis\",\n start: {\n ...openingSequence.start\n },\n end: {\n ...closingSequence.end\n }\n };\n events[open][1].end = {\n ...openingSequence.start\n };\n events[index][1].start = {\n ...closingSequence.end\n };\n nextEvents = [];\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]);\n }\n\n // Opening.\n nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context));\n\n // Closing.\n nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]);\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2;\n nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]);\n } else {\n offset = 0;\n }\n splice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - offset - 2;\n break;\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data';\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null;\n const previous = this.previous;\n const before = classifyCharacter(previous);\n\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code;\n effects.enter('attentionSequence');\n return inside(code);\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n const token = effects.exit('attentionSequence');\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code);\n\n // Always populated by defaults.\n\n const open = !after || after === 2 && before || attentionMarkers.includes(code);\n const close = !before || before === 2 && after || attentionMarkers.includes(previous);\n token._open = Boolean(marker === 42 ? open : open && (before || !close));\n token._close = Boolean(marker === 42 ? close : close && (after || !open));\n return ok(code);\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * Point.\n * @param {number} offset\n * Amount to move.\n * @returns {undefined}\n * Nothing.\n */\nfunction movePoint(point, offset) {\n point.column += offset;\n point.offset += offset;\n point._bufferIndex += offset;\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, asciiAtext, asciiControl } from 'micromark-util-character';\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0;\n return start;\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"autolink\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.enter(\"autolinkProtocol\");\n return open;\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code);\n return schemeOrEmailAtext;\n }\n if (code === 64) {\n return nok(code);\n }\n return emailAtext(code);\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1;\n return schemeInsideOrEmailAtext(code);\n }\n return emailAtext(code);\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code);\n size = 0;\n return urlInside;\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) {\n effects.consume(code);\n return schemeInsideOrEmailAtext;\n }\n size = 0;\n return emailAtext(code);\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit(\"autolinkProtocol\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return urlInside;\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code);\n return emailAtSignOrDot;\n }\n if (asciiAtext(code)) {\n effects.consume(code);\n return emailAtext;\n }\n return nok(code);\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code);\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code);\n size = 0;\n return emailAtSignOrDot;\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit(\"autolinkProtocol\").type = \"autolinkEmail\";\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n return emailValue(code);\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel;\n effects.consume(code);\n return next;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable | undefined} */\n let marker;\n /** @type {number} */\n let index;\n /** @type {State} */\n let returnState;\n return start;\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"htmlText\");\n effects.enter(\"htmlTextData\");\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n return instruction;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagOpen;\n }\n return nok(code);\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n index = 0;\n return cdataOpenInside;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n return declaration;\n }\n return nok(code);\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return nok(code);\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 45) {\n effects.consume(code);\n return commentClose;\n }\n if (markdownLineEnding(code)) {\n returnState = comment;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return comment;\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return comment(code);\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = \"CDATA[\";\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n return index === value.length ? cdata : cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataClose;\n }\n if (markdownLineEnding(code)) {\n returnState = cdata;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return cdata;\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code);\n }\n if (markdownLineEnding(code)) {\n returnState = declaration;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return declaration;\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 63) {\n effects.consume(code);\n return instructionClose;\n }\n if (markdownLineEnding(code)) {\n returnState = instruction;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return instruction;\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagClose;\n }\n return nok(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagClose;\n }\n return tagCloseBetween(code);\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagCloseBetween;\n }\n return end(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpen;\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code);\n return end;\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenBetween;\n }\n return end(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n return tagOpenAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeNameAfter;\n }\n return tagOpenBetween(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n marker = code;\n return tagOpenAttributeValueQuoted;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code);\n marker = undefined;\n return tagOpenAttributeValueQuotedAfter;\n }\n if (code === null) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n return nok(code);\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code);\n effects.exit(\"htmlTextData\");\n effects.exit(\"htmlText\");\n return ok;\n }\n return nok(code);\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit(\"htmlTextData\");\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineEndingAfter;\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter(\"htmlTextData\");\n return returnState(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n resolveAll: labelEnd.resolveAll,\n tokenize: tokenizeLabelStartLink\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelLink\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelLink\");\n return after;\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"hardBreakEscape\");\n effects.consume(code);\n return after;\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit(\"hardBreakEscape\");\n return ok(code);\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * Previous,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n previous,\n resolve: resolveCodeText,\n tokenize: tokenizeCodeText\n};\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4;\n let headEnterIndex = 3;\n /** @type {number} */\n let index;\n /** @type {number | undefined} */\n let enter;\n\n // If we start and end with an EOL or a space.\n if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === 'space')) {\n index = headEnterIndex;\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === \"codeTextData\") {\n // Then we have padding.\n events[headEnterIndex][1].type = \"codeTextPadding\";\n events[tailExitIndex][1].type = \"codeTextPadding\";\n headEnterIndex += 2;\n tailExitIndex -= 2;\n break;\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1;\n tailExitIndex++;\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n enter = index;\n }\n } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n events[enter][1].type = \"codeTextData\";\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n tailExitIndex -= index - enter - 2;\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return code !== 96 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this;\n let sizeOpen = 0;\n /** @type {number} */\n let size;\n /** @type {Token} */\n let token;\n return start;\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"codeText\");\n effects.enter(\"codeTextSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code);\n sizeOpen++;\n return sequenceOpen;\n }\n effects.exit(\"codeTextSequence\");\n return between(code);\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code);\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space');\n effects.consume(code);\n effects.exit('space');\n return between;\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter(\"codeTextSequence\");\n size = 0;\n return sequenceClose(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return between;\n }\n\n // Data.\n effects.enter(\"codeTextData\");\n return data(code);\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) {\n effects.exit(\"codeTextData\");\n return between(code);\n }\n effects.consume(code);\n return data;\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code);\n size++;\n return sequenceClose;\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit(\"codeTextSequence\");\n effects.exit(\"codeText\");\n return ok(code);\n }\n\n // More or less accents: mark as data.\n token.type = \"codeTextData\";\n return data(code);\n }\n}","/**\n * @import {Extension} from 'micromark-util-types'\n */\n\nimport { attention, autolink, blockQuote, characterEscape, characterReference, codeFenced, codeIndented, codeText, definition, hardBreakEscape, headingAtx, htmlFlow, htmlText, labelEnd, labelStartImage, labelStartLink, lineEnding, list, setextUnderline, thematicBreak } from 'micromark-core-commonmark';\nimport { resolver as resolveText } from './initialize/text.js';\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n};\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n};\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n};\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n};\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n};\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n};\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n};\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n};\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n};","/**\n * @import {\n * Chunk,\n * Code,\n * ConstructRecord,\n * Construct,\n * Effects,\n * InitialConstruct,\n * ParseContext,\n * Point,\n * State,\n * TokenizeContext,\n * Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @callback Restore\n * Restore the state.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef Info\n * Info.\n * @property {Restore} restore\n * Restore.\n * @property {number} from\n * From.\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * Construct.\n * @param {Info} info\n * Info.\n * @returns {undefined}\n * Nothing.\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * Parser.\n * @param {InitialConstruct} initialize\n * Construct.\n * @param {Omit | undefined} [from]\n * Point (optional).\n * @returns {TokenizeContext}\n * Context.\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = {\n _bufferIndex: -1,\n _index: 0,\n line: from && from.line || 1,\n column: from && from.column || 1,\n offset: from && from.offset || 0\n };\n /** @type {Record} */\n const columnStart = {};\n /** @type {Array} */\n const resolveAllConstructs = [];\n /** @type {Array} */\n let chunks = [];\n /** @type {Array} */\n let stack = [];\n /** @type {boolean | undefined} */\n let consumed = true;\n\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n const effects = {\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n consume,\n enter,\n exit,\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n };\n\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n const context = {\n code: null,\n containerState: {},\n defineSkip,\n events: [],\n now,\n parser,\n previous: null,\n sliceSerialize,\n sliceStream,\n write\n };\n\n /**\n * The state function.\n *\n * @type {State | undefined}\n */\n let state = initialize.tokenize.call(context, effects);\n\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n let expectedCode;\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize);\n }\n return context;\n\n /** @type {TokenizeContext['write']} */\n function write(slice) {\n chunks = push(chunks, slice);\n main();\n\n // Exit if we’re not done, resolve might change stuff.\n if (chunks[chunks.length - 1] !== null) {\n return [];\n }\n addResult(initialize, 0);\n\n // Otherwise, resolve, and exit.\n context.events = resolveAll(resolveAllConstructs, context.events, context);\n return context.events;\n }\n\n //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs);\n }\n\n /** @type {TokenizeContext['sliceStream']} */\n function sliceStream(token) {\n return sliceChunks(chunks, token);\n }\n\n /** @type {TokenizeContext['now']} */\n function now() {\n // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n const {\n _bufferIndex,\n _index,\n line,\n column,\n offset\n } = point;\n return {\n _bufferIndex,\n _index,\n line,\n column,\n offset\n };\n }\n\n /** @type {TokenizeContext['defineSkip']} */\n function defineSkip(value) {\n columnStart[value.line] = value.column;\n accountForPotentialSkip();\n }\n\n //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {undefined}\n * Nothing.\n */\n function main() {\n /** @type {number} */\n let chunkIndex;\n while (point._index < chunks.length) {\n const chunk = chunks[point._index];\n\n // If we’re in a buffer chunk, loop through it.\n if (typeof chunk === 'string') {\n chunkIndex = point._index;\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0;\n }\n while (point._index === chunkIndex && point._bufferIndex < chunk.length) {\n go(chunk.charCodeAt(point._bufferIndex));\n }\n } else {\n go(chunk);\n }\n }\n }\n\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * Code.\n * @returns {undefined}\n * Nothing.\n */\n function go(code) {\n consumed = undefined;\n expectedCode = code;\n state = state(code);\n }\n\n /** @type {Effects['consume']} */\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++;\n point.column = 1;\n point.offset += code === -3 ? 2 : 1;\n accountForPotentialSkip();\n } else if (code !== -1) {\n point.column++;\n point.offset++;\n }\n\n // Not in a string chunk.\n if (point._bufferIndex < 0) {\n point._index++;\n } else {\n point._bufferIndex++;\n\n // At end of string chunk.\n if (point._bufferIndex ===\n // Points w/ non-negative `_bufferIndex` reference\n // strings.\n /** @type {string} */\n chunks[point._index].length) {\n point._bufferIndex = -1;\n point._index++;\n }\n }\n\n // Expose the previous character.\n context.previous = code;\n\n // Mark as consumed.\n consumed = true;\n }\n\n /** @type {Effects['enter']} */\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {};\n token.type = type;\n token.start = now();\n context.events.push(['enter', token, context]);\n stack.push(token);\n return token;\n }\n\n /** @type {Effects['exit']} */\n function exit(type) {\n const token = stack.pop();\n token.end = now();\n context.events.push(['exit', token, context]);\n return token;\n }\n\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from);\n }\n\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulcheck(_, info) {\n info.restore();\n }\n\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * Callback.\n * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n * Fields.\n */\n function constructFactory(onreturn, fields) {\n return hook;\n\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Array | ConstructRecord | Construct} constructs\n * Constructs.\n * @param {State} returnState\n * State.\n * @param {State | undefined} [bogusState]\n * State.\n * @returns {State}\n * State.\n */\n function hook(constructs, returnState, bogusState) {\n /** @type {ReadonlyArray} */\n let listOfConstructs;\n /** @type {number} */\n let constructIndex;\n /** @type {Construct} */\n let currentConstruct;\n /** @type {Info} */\n let info;\n return Array.isArray(constructs) ? /* c8 ignore next 1 */\n handleListOfConstructs(constructs) : 'tokenize' in constructs ?\n // Looks like a construct.\n handleListOfConstructs([(/** @type {Construct} */constructs)]) : handleMapOfConstructs(constructs);\n\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * Constructs.\n * @returns {State}\n * State.\n */\n function handleMapOfConstructs(map) {\n return start;\n\n /** @type {State} */\n function start(code) {\n const left = code !== null && map[code];\n const all = code !== null && map.null;\n const list = [\n // To do: add more extension tests.\n /* c8 ignore next 2 */\n ...(Array.isArray(left) ? left : left ? [left] : []), ...(Array.isArray(all) ? all : all ? [all] : [])];\n return handleListOfConstructs(list)(code);\n }\n }\n\n /**\n * Handle a list of construct.\n *\n * @param {ReadonlyArray} list\n * Constructs.\n * @returns {State}\n * State.\n */\n function handleListOfConstructs(list) {\n listOfConstructs = list;\n constructIndex = 0;\n if (list.length === 0) {\n return bogusState;\n }\n return handleConstruct(list[constructIndex]);\n }\n\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * Construct.\n * @returns {State}\n * State.\n */\n function handleConstruct(construct) {\n return start;\n\n /** @type {State} */\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store();\n currentConstruct = construct;\n if (!construct.partial) {\n context.currentConstruct = construct;\n }\n\n // Always populated by defaults.\n\n if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) {\n return nok(code);\n }\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a “live binding”, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context, effects, ok, nok)(code);\n }\n }\n\n /** @type {State} */\n function ok(code) {\n consumed = true;\n onreturn(currentConstruct, info);\n return returnState;\n }\n\n /** @type {State} */\n function nok(code) {\n consumed = true;\n info.restore();\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex]);\n }\n return bogusState;\n }\n }\n }\n\n /**\n * @param {Construct} construct\n * Construct.\n * @param {number} from\n * From.\n * @returns {undefined}\n * Nothing.\n */\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct);\n }\n if (construct.resolve) {\n splice(context.events, from, context.events.length - from, construct.resolve(context.events.slice(from), context));\n }\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context);\n }\n }\n\n /**\n * Store state.\n *\n * @returns {Info}\n * Info.\n */\n function store() {\n const startPoint = now();\n const startPrevious = context.previous;\n const startCurrentConstruct = context.currentConstruct;\n const startEventsIndex = context.events.length;\n const startStack = Array.from(stack);\n return {\n from: startEventsIndex,\n restore\n };\n\n /**\n * Restore state.\n *\n * @returns {undefined}\n * Nothing.\n */\n function restore() {\n point = startPoint;\n context.previous = startPrevious;\n context.currentConstruct = startCurrentConstruct;\n context.events.length = startEventsIndex;\n stack = startStack;\n accountForPotentialSkip();\n }\n }\n\n /**\n * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {undefined}\n * Nothing.\n */\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line];\n point.offset += columnStart[point.line] - 1;\n }\n }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {ReadonlyArray} chunks\n * Chunks.\n * @param {Pick} token\n * Token.\n * @returns {Array}\n * Chunks.\n */\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index;\n const startBufferIndex = token.start._bufferIndex;\n const endIndex = token.end._index;\n const endBufferIndex = token.end._bufferIndex;\n /** @type {Array} */\n let view;\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];\n } else {\n view = chunks.slice(startIndex, endIndex);\n if (startBufferIndex > -1) {\n const head = view[0];\n if (typeof head === 'string') {\n view[0] = head.slice(startBufferIndex);\n } else {\n view.shift();\n }\n }\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex));\n }\n }\n return view;\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {ReadonlyArray} chunks\n * Chunks.\n * @param {boolean | undefined} [expandTabs=false]\n * Whether to expand tabs (default: `false`).\n * @returns {string}\n * Result.\n */\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1;\n /** @type {Array} */\n const result = [];\n /** @type {boolean | undefined} */\n let atTab;\n while (++index < chunks.length) {\n const chunk = chunks[index];\n /** @type {string} */\n let value;\n if (typeof chunk === 'string') {\n value = chunk;\n } else switch (chunk) {\n case -5:\n {\n value = \"\\r\";\n break;\n }\n case -4:\n {\n value = \"\\n\";\n break;\n }\n case -3:\n {\n value = \"\\r\" + \"\\n\";\n break;\n }\n case -2:\n {\n value = expandTabs ? \" \" : \"\\t\";\n break;\n }\n case -1:\n {\n if (!expandTabs && atTab) continue;\n value = \" \";\n break;\n }\n default:\n {\n // Currently only replacement character.\n value = String.fromCharCode(chunk);\n }\n }\n atTab = chunk === -2;\n result.push(value);\n }\n return result.join('');\n}","/**\n * @import {Chunk, Code, Encoding, Value} from 'micromark-util-types'\n */\n\n/**\n * @callback Preprocessor\n * Preprocess a value.\n * @param {Value} value\n * Value.\n * @param {Encoding | null | undefined} [encoding]\n * Encoding when `value` is a typed array (optional).\n * @param {boolean | null | undefined} [end=false]\n * Whether this is the last chunk (default: `false`).\n * @returns {Array}\n * Chunks.\n */\n\nconst search = /[\\0\\t\\n\\r]/g;\n\n/**\n * @returns {Preprocessor}\n * Preprocess a value.\n */\nexport function preprocess() {\n let column = 1;\n let buffer = '';\n /** @type {boolean | undefined} */\n let start = true;\n /** @type {boolean | undefined} */\n let atCarriageReturn;\n return preprocessor;\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = [];\n /** @type {RegExpMatchArray | null} */\n let match;\n /** @type {number} */\n let next;\n /** @type {number} */\n let startPosition;\n /** @type {number} */\n let endPosition;\n /** @type {Code} */\n let code;\n value = buffer + (typeof value === 'string' ? value.toString() : new TextDecoder(encoding || undefined).decode(value));\n startPosition = 0;\n buffer = '';\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++;\n }\n start = undefined;\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition;\n match = search.exec(value);\n endPosition = match && match.index !== undefined ? match.index : value.length;\n code = value.charCodeAt(endPosition);\n if (!match) {\n buffer = value.slice(startPosition);\n break;\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3);\n atCarriageReturn = undefined;\n } else {\n if (atCarriageReturn) {\n chunks.push(-5);\n atCarriageReturn = undefined;\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition));\n column += endPosition - startPosition;\n }\n switch (code) {\n case 0:\n {\n chunks.push(65533);\n column++;\n break;\n }\n case 9:\n {\n next = Math.ceil(column / 4) * 4;\n chunks.push(-2);\n while (column++ < next) chunks.push(-1);\n break;\n }\n case 10:\n {\n chunks.push(-4);\n column = 1;\n break;\n }\n default:\n {\n atCarriageReturn = true;\n column = 1;\n }\n }\n }\n startPosition = endPosition + 1;\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5);\n if (buffer) chunks.push(buffer);\n chunks.push(null);\n }\n return chunks;\n }\n}","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of C0, and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55_295 && code < 57_344 ||\n // Noncharacters.\n code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n // Out of range\n code > 1_114_111) {\n return \"\\uFFFD\";\n }\n return String.fromCodePoint(code);\n}","import { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nconst characterEscapeOrReference = /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi;\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode);\n}\n\n/**\n * @param {string} $0\n * Match.\n * @param {string} $1\n * Character escape.\n * @param {string} $2\n * Character reference.\n * @returns {string}\n * Decoded value\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1;\n }\n\n // Reference.\n const head = $2.charCodeAt(0);\n if (head === 35) {\n const head = $2.charCodeAt(1);\n const hex = head === 120 || head === 88;\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10);\n }\n return decodeNamedCharacterReference($2) || $0;\n}","/**\n * @import {\n * Break,\n * Blockquote,\n * Code,\n * Definition,\n * Emphasis,\n * Heading,\n * Html,\n * Image,\n * InlineCode,\n * Link,\n * ListItem,\n * List,\n * Nodes,\n * Paragraph,\n * PhrasingContent,\n * ReferenceType,\n * Root,\n * Strong,\n * Text,\n * ThematicBreak\n * } from 'mdast'\n * @import {\n * Encoding,\n * Event,\n * Token,\n * Value\n * } from 'micromark-util-types'\n * @import {Point} from 'unist'\n * @import {\n * CompileContext,\n * CompileData,\n * Config,\n * Extension,\n * Handle,\n * OnEnterError,\n * Options\n * } from './types.js'\n */\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse, postprocess, preprocess } from 'micromark';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding;\n encoding = undefined;\n }\n return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n characterReference: onexitcharacterreference,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n };\n configure(config, (options || {}).mdastExtensions || []);\n\n /** @type {CompileData} */\n const data = {};\n return compile;\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n };\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n };\n /** @type {Array} */\n const listStack = [];\n let index = -1;\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n if (events[index][0] === 'enter') {\n listStack.push(index);\n } else {\n const tail = listStack.pop();\n index = prepareList(events, tail, index);\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n const handler = config[events[index][0]];\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(Object.assign({\n sliceSerialize: events[index][2].sliceSerialize\n }, context), events[index][1]);\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1];\n const handler = tail[1] || defaultOnError;\n handler.call(context, undefined, tail[0]);\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(events.length > 0 ? events[0][1].start : {\n line: 1,\n column: 1,\n offset: 0\n }),\n end: point(events.length > 0 ? events[events.length - 2][1].end : {\n line: 1,\n column: 1,\n offset: 0\n })\n };\n\n // Call transforms.\n index = -1;\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree;\n }\n return tree;\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1;\n let containerBalance = -1;\n let listSpread = false;\n /** @type {Token | undefined} */\n let listItem;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number | undefined} */\n let firstBlankLineIndex;\n /** @type {boolean | undefined} */\n let atMarker;\n while (++index <= length) {\n const event = events[index];\n switch (event[1].type) {\n case \"listUnordered\":\n case \"listOrdered\":\n case \"blockQuote\":\n {\n if (event[0] === 'enter') {\n containerBalance++;\n } else {\n containerBalance--;\n }\n atMarker = undefined;\n break;\n }\n case \"lineEndingBlank\":\n {\n if (event[0] === 'enter') {\n if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n firstBlankLineIndex = index;\n }\n atMarker = undefined;\n }\n break;\n }\n case \"linePrefix\":\n case \"listItemValue\":\n case \"listItemMarker\":\n case \"listItemPrefix\":\n case \"listItemPrefixWhitespace\":\n {\n // Empty.\n\n break;\n }\n default:\n {\n atMarker = undefined;\n }\n }\n if (!containerBalance && event[0] === 'enter' && event[1].type === \"listItemPrefix\" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === \"listUnordered\" || event[1].type === \"listOrdered\")) {\n if (listItem) {\n let tailIndex = index;\n lineIndex = undefined;\n while (tailIndex--) {\n const tailEvent = events[tailIndex];\n if (tailEvent[1].type === \"lineEnding\" || tailEvent[1].type === \"lineEndingBlank\") {\n if (tailEvent[0] === 'exit') continue;\n if (lineIndex) {\n events[lineIndex][1].type = \"lineEndingBlank\";\n listSpread = true;\n }\n tailEvent[1].type = \"lineEnding\";\n lineIndex = tailIndex;\n } else if (tailEvent[1].type === \"linePrefix\" || tailEvent[1].type === \"blockQuotePrefix\" || tailEvent[1].type === \"blockQuotePrefixWhitespace\" || tailEvent[1].type === \"blockQuoteMarker\" || tailEvent[1].type === \"listItemIndent\") {\n // Empty\n } else {\n break;\n }\n }\n if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n listItem._spread = true;\n }\n\n // Fix position.\n listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]);\n index++;\n length++;\n }\n\n // Create a new list item.\n if (event[1].type === \"listItemPrefix\") {\n /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n };\n listItem = item;\n events.splice(index, 0, ['enter', item, event[2]]);\n index++;\n length++;\n firstBlankLineIndex = undefined;\n atMarker = true;\n }\n }\n }\n events[start][1]._spread = listSpread;\n return length;\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token);\n if (and) and.call(this, token);\n }\n }\n\n /**\n * @type {CompileContext['buffer']}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n });\n }\n\n /**\n * @type {CompileContext['enter']}\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1];\n /** @type {Array} */\n const siblings = parent.children;\n siblings.push(node);\n this.stack.push(node);\n this.tokenStack.push([token, errorHandler || undefined]);\n node.position = {\n start: point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n };\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token);\n exit.call(this, token);\n }\n }\n\n /**\n * @type {CompileContext['exit']}\n */\n function exit(token, onExitError) {\n const node = this.stack.pop();\n const open = this.tokenStack.pop();\n if (!open) {\n throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n start: token.start,\n end: token.end\n }) + '): it’s not open');\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0]);\n } else {\n const handler = open[1] || defaultOnError;\n handler.call(this, token, open[0]);\n }\n }\n node.position.end = point(token.end);\n }\n\n /**\n * @type {CompileContext['resume']}\n */\n function resume() {\n return toString(this.stack.pop());\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2];\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n this.data.expectingFirstListItemValue = undefined;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.lang = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.meta = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return;\n this.buffer();\n this.data.flowCodeInside = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n this.data.flowCodeInside = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.label = label;\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1];\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length;\n node.depth = depth;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1];\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1];\n /** @type {Array} */\n const siblings = node.children;\n let tail = siblings[siblings.length - 1];\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text();\n tail.position = {\n start: point(token.start),\n // @ts-expect-error: we’ll add `end` later.\n end: undefined\n };\n siblings.push(tail);\n }\n this.stack.push(tail);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop();\n tail.value += this.sliceSerialize(token);\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1];\n // If we’re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1];\n tail.position.end = point(token.end);\n this.data.atHardBreak = undefined;\n return;\n }\n if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) {\n onenterdata.call(this, token);\n onexitdata.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token);\n const ancestor = this.stack[this.stack.length - 2];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string);\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1];\n const value = this.resume();\n const node = this.stack[this.stack.length - 1];\n // Assume a reference.\n this.data.inReference = true;\n if (node.type === 'link') {\n /** @type {Array} */\n const children = fragment.children;\n node.children = children;\n } else {\n node.alt = value;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label;\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n this.data.referenceType = 'full';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token);\n const type = this.data.characterReferenceType;\n /** @type {string} */\n let value;\n if (type) {\n value = decodeNumericCharacterReference(data, type === \"characterReferenceMarkerNumeric\" ? 10 : 16);\n this.data.characterReferenceType = undefined;\n } else {\n const result = decodeNamedCharacterReference(data);\n value = result;\n }\n const tail = this.stack[this.stack.length - 1];\n tail.value += value;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreference(token) {\n const tail = this.stack.pop();\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = this.sliceSerialize(token);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = 'mailto:' + this.sliceSerialize(token);\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n };\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n };\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n };\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n };\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n };\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: []\n };\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n };\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: ''\n };\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n };\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n };\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n };\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n };\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n };\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n };\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n };\n}\n\n/**\n * @param {Config} combined\n * @param {Array | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1;\n while (++index < extensions.length) {\n const value = extensions[index];\n if (Array.isArray(value)) {\n configure(combined, value);\n } else {\n extension(combined, value);\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key;\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'canContainEols':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'transforms':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'enter':\n case 'exit':\n {\n const right = extension[key];\n if (right) {\n Object.assign(combined[key], right);\n }\n break;\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n start: left.start,\n end: left.end\n }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is open');\n } else {\n throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is still open');\n }\n}","/**\n * @import {Event} from 'micromark-util-types'\n */\n\nimport { subtokenize } from 'micromark-util-subtokenize';\n\n/**\n * @param {Array} events\n * Events.\n * @returns {Array}\n * Events.\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events;\n}","/**\n * @import {\n * Create,\n * FullNormalizedExtension,\n * InitialConstruct,\n * ParseContext,\n * ParseOptions\n * } from 'micromark-util-types'\n */\n\nimport { combineExtensions } from 'micromark-util-combine-extensions';\nimport { content } from './initialize/content.js';\nimport { document } from './initialize/document.js';\nimport { flow } from './initialize/flow.js';\nimport { string, text } from './initialize/text.js';\nimport * as defaultConstructs from './constructs.js';\nimport { createTokenizer } from './create-tokenizer.js';\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * Configuration (optional).\n * @returns {ParseContext}\n * Parser.\n */\nexport function parse(options) {\n const settings = options || {};\n const constructs = /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])]);\n\n /** @type {ParseContext} */\n const parser = {\n constructs,\n content: create(content),\n defined: [],\n document: create(document),\n flow: create(flow),\n lazy: {},\n string: create(string),\n text: create(text)\n };\n return parser;\n\n /**\n * @param {InitialConstruct} initial\n * Construct to start with.\n * @returns {Create}\n * Create a tokenizer.\n */\n function create(initial) {\n return creator;\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from);\n }\n }\n}","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser} Parser\n * @typedef {import('unified').Processor} Processor\n */\n\n/**\n * @typedef {Omit} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type)\n return as([type, [...value]], value);\n \n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","import { asciiAlphanumeric } from 'micromark-util-character';\nimport { encode } from 'micromark-util-encode';\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''));\n if (!protocol) {\n return value;\n }\n const colon = value.indexOf(':');\n const questionMark = value.indexOf('?');\n const numberSign = value.indexOf('#');\n const slash = value.indexOf('/');\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n slash > -1 && colon > slash || questionMark > -1 && colon > questionMark || numberSign > -1 && colon > numberSign ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))) {\n return value;\n }\n return '';\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = [];\n let index = -1;\n let start = 0;\n let skip = 0;\n while (++index < value.length) {\n const code = value.charCodeAt(index);\n /** @type {string} */\n let replace = '';\n\n // A correct percent encoded value.\n if (code === 37 && asciiAlphanumeric(value.charCodeAt(index + 1)) && asciiAlphanumeric(value.charCodeAt(index + 2))) {\n skip = 2;\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code);\n }\n }\n // Astral.\n else if (code > 55_295 && code < 57_344) {\n const next = value.charCodeAt(index + 1);\n\n // A correct surrogate pair.\n if (code < 56_320 && next > 56_319 && next < 57_344) {\n replace = String.fromCharCode(code, next);\n skip = 1;\n }\n // Lone surrogate.\n else {\n replace = \"\\uFFFD\";\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code);\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace));\n start = index + skip + 1;\n replace = '';\n }\n if (skip) {\n index += skip;\n skip = 0;\n }\n }\n return result.join('') + value.slice(start);\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n * Generate content for the backreference dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array | ElementContent | string}\n * Content for the backreference when linking back from definitions to their\n * reference.\n *\n * @callback FootnoteBackLabelTemplate\n * Generate a back label dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array}\n * Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n /** @type {Array} */\n const result = [{type: 'text', value: '↩'}]\n\n if (rereferenceIndex > 1) {\n result.push({\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [{type: 'text', value: String(rereferenceIndex)}]\n })\n }\n\n return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n return (\n 'Back to reference ' +\n (referenceIndex + 1) +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const footnoteBackContent =\n state.options.footnoteBackContent || defaultFootnoteBackContent\n const footnoteBackLabel =\n state.options.footnoteBackLabel || defaultFootnoteBackLabel\n const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n className: ['sr-only']\n }\n /** @type {Array} */\n const listItems = []\n let referenceIndex = -1\n\n while (++referenceIndex < state.footnoteOrder.length) {\n const definition = state.footnoteById.get(\n state.footnoteOrder[referenceIndex]\n )\n\n if (!definition) {\n continue\n }\n\n const content = state.all(definition)\n const id = String(definition.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let rereferenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n const counts = state.footnoteCounts.get(id)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while (counts !== undefined && ++rereferenceIndex <= counts) {\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n let children =\n typeof footnoteBackContent === 'string'\n ? footnoteBackContent\n : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n if (typeof children === 'string') {\n children = {type: 'text', value: children}\n }\n\n backReferences.push({\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n clobberPrefix +\n 'fnref-' +\n safeId +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n dataFootnoteBackref: '',\n ariaLabel:\n typeof footnoteBackLabel === 'string'\n ? footnoteBackLabel\n : footnoteBackLabel(referenceIndex, rereferenceIndex),\n className: ['data-footnote-backref']\n },\n children: Array.isArray(children) ? children : [children]\n })\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(definition, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: footnoteLabelTagName,\n properties: {\n ...structuredClone(footnoteLabelProperties),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propsFactory(check) {\n const checkAsRecord = /** @type {Record} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor, Check>, Ancestor, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly} */\n let result = empty\n /** @type {Readonly} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Reference} Reference\n *\n * @typedef {import('./state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {Extract} node\n * Reference node (image, link).\n * @returns {Array}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return [{type: 'text', value: '![' + node.alt + suffix}]\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: .\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === null || spread === undefined\n ? node.children.length > 1\n : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {import('../state.js').Handlers}\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n // @ts-expect-error: root is different, but hard to type.\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n /** @type {Properties} */\n const properties = {}\n\n if (node.lang) {\n properties.className = ['language-' + node.lang]\n }\n\n // Create ``.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `
`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  let reuseCounter = state.footnoteCounts.get(id)\n\n  if (reuseCounter === undefined) {\n    reuseCounter = 0\n    state.footnoteOrder.push(id)\n    counter = state.footnoteOrder.length\n  } else {\n    counter = index + 1\n  }\n\n  reuseCounter += 1\n  state.footnoteCounts.set(id, reuseCounter)\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + clobberPrefix + 'fn-' + safeId,\n      id:\n        clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Html} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Element | Raw | undefined}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.options.allowDangerousHtml) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const definition = state.definitionById.get(id)\n\n  if (!definition) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(definition.url || ''), alt: node.alt}\n\n  if (definition.title !== null && definition.title !== undefined) {\n    properties.title = definition.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const definition = state.definitionById.get(id)\n\n  if (!definition) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(definition.url || '')}\n\n  if (definition.title !== null && definition.title !== undefined) {\n    properties.title = definition.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Parents} HastParents\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastParents}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start && end) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  // To do: option to use `style`?\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(cell, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastElement | HastText}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').RootContent} HastRootContent\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('mdast').Parents} MdastParents\n *\n * @typedef {import('vfile').VFile} VFile\n *\n * @typedef {import('./footer.js').FootnoteBackContentTemplate} FootnoteBackContentTemplate\n * @typedef {import('./footer.js').FootnoteBackLabelTemplate} FootnoteBackLabelTemplate\n */\n\n/**\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | undefined} parent\n *   Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n *   hast node.\n *\n * @typedef {Partial>} Handlers\n *   Handle nodes.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree (default:\n *   `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` property on footnotes to prevent them from\n *   *clobbering* (default: `'user-content-'`).\n *\n *   Pass `''` for trusted markdown and when you are careful with\n *   polyfilling.\n *   You could pass a different prefix.\n *\n *   DOM clobbering is this:\n *\n *   ```html\n *   

\n * \n * ```\n *\n * The above example shows that elements are made available by browsers, by\n * their ID, on the `window` object.\n * This is a security risk because you might be expecting some other variable\n * at that place.\n * It can also break polyfills.\n * Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n * Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n * Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackContent(_, rereferenceIndex) {\n * const result = [{type: 'text', value: '↩'}]\n *\n * if (rereferenceIndex > 1) {\n * result.push({\n * type: 'element',\n * tagName: 'sup',\n * properties: {},\n * children: [{type: 'text', value: String(rereferenceIndex)}]\n * })\n * }\n *\n * return result\n * }\n * ```\n *\n * This content is used in the `a` element of each backreference (the `↩`\n * links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n * Label to describe the backreference back to references (default:\n * `defaultFootnoteBackLabel`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n * return (\n * 'Back to reference ' +\n * (referenceIndex + 1) +\n * (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n * )\n * }\n * ```\n *\n * Change it when the markdown is not in English.\n *\n * This label is used in the `ariaLabel` property on each backreference\n * (the `↩` links).\n * It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n * Change it when the markdown is not in English.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (default: `{className:\n * ['sr-only']}`).\n *\n * Change it to show the label and add other properties.\n *\n * This label is typically hidden visually (assuming an `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass an empty string.\n * You can also add different properties.\n *\n * > **Note**: `id: 'footnote-label'` is always added, because footnote\n * > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n * Change it to match your document structure.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes (optional).\n * @property {Array | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed)\n * (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes (optional).\n *\n * @typedef State\n * Info passed around.\n * @property {(node: MdastNodes) => Array} all\n * Transform the children of an mdast parent to hast.\n * @property {(from: MdastNodes, to: Type) => HastElement | Type} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map} definitionById\n * Definitions by their identifier.\n * @property {Map} footnoteById\n * Footnote definitions by their identifier.\n * @property {Map} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Array} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array | HastElementContent | undefined} one\n * Transform an mdast node to hast.\n * @property {Options} options\n * Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n * Copy a node’s positional info.\n * @property {(nodes: Array, loose?: boolean | undefined) => Array} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || emptyOptions\n /** @type {Map} */\n const definitionById = new Map()\n /** @type {Map} */\n const footnoteById = new Map()\n /** @type {Map} */\n const footnoteCounts = new Map()\n /** @type {Handlers} */\n // @ts-expect-error: the root handler returns a root.\n // Hard to type.\n const handlers = {...defaultHandlers, ...settings.handlers}\n\n /** @type {State} */\n const state = {\n all,\n applyData,\n definitionById,\n footnoteById,\n footnoteCounts,\n footnoteOrder: [],\n handlers,\n one,\n options: settings,\n patch,\n wrap\n }\n\n visit(tree, function (node) {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const map = node.type === 'definition' ? definitionById : footnoteById\n const id = String(node.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!map.has(id)) {\n // @ts-expect-error: node type matches map.\n map.set(id, node)\n }\n }\n })\n\n return state\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | undefined} [parent]\n * Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n * Resulting hast node.\n */\n function one(node, parent) {\n const type = node.type\n const handle = state.handlers[type]\n\n if (own.call(state.handlers, type) && handle) {\n return handle(state, node, parent)\n }\n\n if (state.options.passThrough && state.options.passThrough.includes(type)) {\n if ('children' in node) {\n const {children, ...shallow} = node\n const result = structuredClone(shallow)\n // @ts-expect-error: TS doesn’t understand…\n result.children = state.all(node)\n // @ts-expect-error: TS doesn’t understand…\n return result\n }\n\n // @ts-expect-error: it’s custom.\n return structuredClone(node)\n }\n\n const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n return unknown(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array}\n * Resulting hast nodes.\n */\n function all(parent) {\n /** @type {Array} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = state.one(nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = trimMarkdownSpaceStart(result.value)\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = trimMarkdownSpaceStart(head.value)\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {HastElement | Type}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {HastElement | Type} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent of `hName` is to create an element, but likely also to keep\n // the content around (otherwise: pass `hChildren`).\n else {\n /** @type {Array} */\n // @ts-expect-error: assume no doctypes in `root`.\n const children = 'children' in result ? result.children : [result]\n result = {type: 'element', tagName: hName, properties: {}, children}\n }\n }\n\n if (result.type === 'element' && hProperties) {\n Object.assign(result.properties, structuredClone(hProperties))\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastElement | HastText}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastElement | HastText} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: state.all(node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n * Node type.\n * @param {Array} nodes\n * List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n * Whether to add line endings at start and end (default: `false`).\n * @returns {Array}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n let index = 0\n let code = value.charCodeAt(index)\n\n while (code === 9 || code === 32) {\n index++\n code = value.charCodeAt(index)\n }\n\n return value.slice(index)\n}\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var s = Object.getOwnPropertySymbols(e);\n for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","/**\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('./state.js').Options} Options\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {HastNodes}\n * hast tree.\n */\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, undefined)\n const foot = footer(state)\n /** @type {HastNodes} */\n const result = Array.isArray(node)\n ? {type: 'root', children: node}\n : node || {type: 'root', children: []}\n\n if (foot) {\n // If there’s a footer, there were definitions, meaning block\n // content.\n // So `result` is a parent node.\n assert('children' in result)\n result.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n return result\n}\n","// Include `data` fields in mdast and `raw` nodes in hast.\n/// \n\n/**\n * @import {Root as HastRoot} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {Options as ToHastOptions} from 'mdast-util-to-hast'\n * @import {Processor} from 'unified'\n * @import {VFile} from 'vfile'\n */\n\n/**\n * @typedef {Omit} Options\n *\n * @callback TransformBridge\n * Bridge-mode.\n *\n * Runs the destination with the new hast tree.\n * Discards result.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {Promise}\n * Nothing.\n *\n * @callback TransformMutate\n * Mutate-mode.\n *\n * Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {HastRoot}\n * Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given, runs the (rehype) plugins used on it with a\n * hast tree, then discards the result (*bridge mode*)\n * * otherwise, returns a hast tree, the plugins used after `remarkRehype`\n * are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful if\n * you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only way\n * to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @param {Readonly | Processor | null | undefined} [destination]\n * Processor or configuration (optional).\n * @param {Readonly | null | undefined} [options]\n * When a processor was given, configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n * Transform.\n */\nexport default function remarkRehype(destination, options) {\n if (destination && 'run' in destination) {\n /**\n * @type {TransformBridge}\n */\n return async function (tree, file) {\n // Cast because root in -> root out.\n const hastTree = /** @type {HastRoot} */ (\n toHast(tree, {file, ...options})\n )\n await destination.run(hastTree, file)\n }\n }\n\n /**\n * @type {TransformMutate}\n */\n return function (tree, file) {\n // Cast because root in -> root out.\n // To do: in the future, disallow ` || options` fallback.\n // With `unified-engine`, `destination` can be `undefined` but\n // `options` will be the file set.\n // We should not pass that as `options`.\n return /** @type {HastRoot} */ (\n toHast(tree, {file, ...(destination || options)})\n )\n }\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > 👉 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","// A derivative work based on:\n// .\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// .\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const minpath = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [extname]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, extname) {\n if (extname !== undefined && typeof extname !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (\n extname === undefined ||\n extname.length === 0 ||\n extname.length > path.length\n ) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (extname === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extnameIndex = extname.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extnameIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === extname.codePointAt(extnameIndex--)) {\n if (extnameIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extnameIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// .\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const minproc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: \nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n","import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: \n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n","/**\n * @import {Node, Point, Position} from 'unist'\n * @import {Options as MessageOptions} from 'vfile-message'\n * @import {Compatible, Data, Map, Options, Value} from 'vfile'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {minpath} from '#minpath'\nimport {minproc} from '#minproc'\nimport {urlToPath, isUrl} from '#minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n // Prevent calling `cwd` (which could be expensive) if it’s not needed;\n // the empty string will be overridden in the next block.\n this.cwd = 'cwd' in options ? '' : minproc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const field = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n field in options &&\n options[field] !== undefined &&\n options[field] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[field] = field === 'history' ? [...options[field]] : options[field]\n }\n }\n\n /** @type {string} */\n let field\n\n // Set non-path related properties.\n for (field in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(field)) {\n // @ts-expect-error: fine to set other things.\n this[field] = options[field]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path)\n : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = minpath.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string'\n ? minpath.dirname(this.path)\n : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = minpath.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string'\n ? minpath.extname(this.path)\n : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = minpath.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = minpath.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > .\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(minpath.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + minpath.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","export const CallableInstance =\n /**\n * @type {new , Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const value = proto[property]\n /** @type {(...parameters: Array) => unknown} */\n const apply = function () {\n return value.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n // Not needed for us in `unified`: we only call this on the `copy`\n // function,\n // and we don't need to add its fields (`length`, `name`)\n // over.\n // See also: GH-246.\n // const names = Object.getOwnPropertyNames(value)\n //\n // for (const p of names) {\n // const descriptor = Object.getOwnPropertyDescriptor(value, p)\n // if (descriptor) Object.defineProperty(apply, p, descriptor)\n // }\n\n return apply\n }\n )\n )\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@linkcode CompileResultMap}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@linkcode Node}\n * and {@linkcode VFile} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@linkcode VFile} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@linkcode Node}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin, any, any> |\n * PluginTuple, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n// .\n/**\n * @template {Array} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node it expects.\n * * If the plugin sets a {@linkcode Parser}, this should be\n * `string`.\n * * If the plugin sets a {@linkcode Compiler}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node that that yields.\n * * If the plugin sets a {@linkcode Parser}, this should be the\n * node that it yields.\n * * If the plugin sets a {@linkcode Compiler}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node it expects.\n * * If the plugin sets a {@linkcode Parser}, this should be\n * `string`.\n * * If the plugin sets a {@linkcode Compiler}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node that that yields.\n * * If the plugin sets a {@linkcode Parser}, this should be the\n * node that it yields.\n * * If the plugin sets a {@linkcode Compiler}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it’s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > **Note**: you should likely ignore `next`: don’t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback} next\n * Callback.\n * @returns {(\n * Promise |\n * Promise | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` — fatal error to stop the process\n * * `Promise` or `undefined` — the next transformer keeps using\n * same tree\n * * `Promise` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : // Unknown.\n * Processor\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@linkcode VFile} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@linkcode VFile}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we’re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor}\n * New *unfrozen* processor ({@linkcode Processor}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > **Note**: to register custom data in TypeScript, augment the\n * > {@linkcode Data} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It’s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback> | undefined} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can’t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor}\n *\n * @overload\n * @param {Plugin} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we’d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","// Register `Raw` in tree:\n/// \n\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-to-jsx-runtime').Components} JsxRuntimeComponents\n * @typedef {import('remark-rehype').Options} RemarkRehypeOptions\n * @typedef {import('unist-util-visit').BuildVisitor} Visitor\n * @typedef {import('unified').PluggableList} PluggableList\n */\n\n/**\n * @callback AllowElement\n * Filter elements.\n * @param {Readonly} element\n * Element to check.\n * @param {number} index\n * Index of `element` in `parent`.\n * @param {Readonly | undefined} parent\n * Parent of `element`.\n * @returns {boolean | null | undefined}\n * Whether to allow `element` (default: `false`).\n *\n * @typedef {Partial} Components\n * Map tag names to components.\n *\n * @typedef Deprecation\n * Deprecation.\n * @property {string} from\n * Old field.\n * @property {string} id\n * ID in readme.\n * @property {keyof Options} [to]\n * New field.\n *\n * @typedef Options\n * Configuration.\n * @property {AllowElement | null | undefined} [allowElement]\n * Filter elements (optional);\n * `allowedElements` / `disallowedElements` is used first.\n * @property {ReadonlyArray | null | undefined} [allowedElements]\n * Tag names to allow (default: all tag names);\n * cannot combine w/ `disallowedElements`.\n * @property {string | null | undefined} [children]\n * Markdown.\n * @property {string | null | undefined} [className]\n * Wrap in a `div` with this class name.\n * @property {Components | null | undefined} [components]\n * Map tag names to components.\n * @property {ReadonlyArray | null | undefined} [disallowedElements]\n * Tag names to disallow (default: `[]`);\n * cannot combine w/ `allowedElements`.\n * @property {PluggableList | null | undefined} [rehypePlugins]\n * List of rehype plugins to use.\n * @property {PluggableList | null | undefined} [remarkPlugins]\n * List of remark plugins to use.\n * @property {Readonly | null | undefined} [remarkRehypeOptions]\n * Options to pass through to `remark-rehype`.\n * @property {boolean | null | undefined} [skipHtml=false]\n * Ignore HTML in markdown completely (default: `false`).\n * @property {boolean | null | undefined} [unwrapDisallowed=false]\n * Extract (unwrap) what’s in disallowed elements (default: `false`);\n * normally when say `strong` is not allowed, it and it’s children are dropped,\n * with `unwrapDisallowed` the element itself is replaced by its children.\n * @property {UrlTransform | null | undefined} [urlTransform]\n * Change URLs (default: `defaultUrlTransform`)\n *\n * @callback UrlTransform\n * Transform all URLs.\n * @param {string} url\n * URL.\n * @param {string} key\n * Property name (example: `'href'`).\n * @param {Readonly} node\n * Node.\n * @returns {string | null | undefined}\n * Transformed URL (optional).\n */\n\nimport {unreachable} from 'devlop'\nimport {toJsxRuntime} from 'hast-util-to-jsx-runtime'\nimport {urlAttributes} from 'html-url-attributes'\n// @ts-expect-error: untyped.\nimport {Fragment, jsx, jsxs} from 'react/jsx-runtime'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport {unified} from 'unified'\nimport {visit} from 'unist-util-visit'\nimport {VFile} from 'vfile'\n\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {PluggableList} */\nconst emptyPlugins = []\n/** @type {Readonly} */\nconst emptyRemarkRehypeOptions = {allowDangerousHtml: true}\nconst safeProtocol = /^(https?|ircs?|mailto|xmpp)$/i\n\n// Mutable because we `delete` any time it’s used and a message is sent.\n/** @type {ReadonlyArray>} */\nconst deprecations = [\n {from: 'astPlugins', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'allowDangerousHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {\n from: 'allowNode',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowElement'\n },\n {\n from: 'allowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowedElements'\n },\n {\n from: 'disallowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'disallowedElements'\n },\n {from: 'escapeHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'includeElementIndex', id: '#remove-includeelementindex'},\n {\n from: 'includeNodeIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n },\n {from: 'linkTarget', id: 'remove-linktarget'},\n {from: 'plugins', id: 'change-plugins-to-remarkplugins', to: 'remarkPlugins'},\n {from: 'rawSourcePos', id: '#remove-rawsourcepos'},\n {from: 'renderers', id: 'change-renderers-to-components', to: 'components'},\n {from: 'source', id: 'change-source-to-children', to: 'children'},\n {from: 'sourcePos', id: '#remove-sourcepos'},\n {from: 'transformImageUri', id: '#add-urltransform', to: 'urlTransform'},\n {from: 'transformLinkUri', id: '#add-urltransform', to: 'urlTransform'}\n]\n\n/**\n * Component to render markdown.\n *\n * @param {Readonly} options\n * Props.\n * @returns {JSX.Element}\n * React element.\n */\nexport function Markdown(options) {\n const allowedElements = options.allowedElements\n const allowElement = options.allowElement\n const children = options.children || ''\n const className = options.className\n const components = options.components\n const disallowedElements = options.disallowedElements\n const rehypePlugins = options.rehypePlugins || emptyPlugins\n const remarkPlugins = options.remarkPlugins || emptyPlugins\n const remarkRehypeOptions = options.remarkRehypeOptions\n ? {...options.remarkRehypeOptions, ...emptyRemarkRehypeOptions}\n : emptyRemarkRehypeOptions\n const skipHtml = options.skipHtml\n const unwrapDisallowed = options.unwrapDisallowed\n const urlTransform = options.urlTransform || defaultUrlTransform\n\n const processor = unified()\n .use(remarkParse)\n .use(remarkPlugins)\n .use(remarkRehype, remarkRehypeOptions)\n .use(rehypePlugins)\n\n const file = new VFile()\n\n if (typeof children === 'string') {\n file.value = children\n } else {\n unreachable(\n 'Unexpected value `' +\n children +\n '` for `children` prop, expected `string`'\n )\n }\n\n if (allowedElements && disallowedElements) {\n unreachable(\n 'Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other'\n )\n }\n\n for (const deprecation of deprecations) {\n if (Object.hasOwn(options, deprecation.from)) {\n unreachable(\n 'Unexpected `' +\n deprecation.from +\n '` prop, ' +\n (deprecation.to\n ? 'use `' + deprecation.to + '` instead'\n : 'remove it') +\n ' (see <' +\n changelog +\n '#' +\n deprecation.id +\n '> for more info)'\n )\n }\n }\n\n const mdastTree = processor.parse(file)\n /** @type {Nodes} */\n let hastTree = processor.runSync(mdastTree, file)\n\n // Wrap in `div` if there’s a class name.\n if (className) {\n hastTree = {\n type: 'element',\n tagName: 'div',\n properties: {className},\n // Assume no doctypes.\n children: /** @type {Array} */ (\n hastTree.type === 'root' ? hastTree.children : [hastTree]\n )\n }\n }\n\n visit(hastTree, transform)\n\n return toJsxRuntime(hastTree, {\n Fragment,\n components,\n ignoreInvalidStyle: true,\n jsx,\n jsxs,\n passKeys: true,\n passNode: true\n })\n\n /** @type {Visitor} */\n function transform(node, index, parent) {\n if (node.type === 'raw' && parent && typeof index === 'number') {\n if (skipHtml) {\n parent.children.splice(index, 1)\n } else {\n parent.children[index] = {type: 'text', value: node.value}\n }\n\n return index\n }\n\n if (node.type === 'element') {\n /** @type {string} */\n let key\n\n for (key in urlAttributes) {\n if (\n Object.hasOwn(urlAttributes, key) &&\n Object.hasOwn(node.properties, key)\n ) {\n const value = node.properties[key]\n const test = urlAttributes[key]\n if (test === null || test.includes(node.tagName)) {\n node.properties[key] = urlTransform(String(value || ''), key, node)\n }\n }\n }\n }\n\n if (node.type === 'element') {\n let remove = allowedElements\n ? !allowedElements.includes(node.tagName)\n : disallowedElements\n ? disallowedElements.includes(node.tagName)\n : false\n\n if (!remove && allowElement && typeof index === 'number') {\n remove = !allowElement(node, index, parent)\n }\n\n if (remove && parent && typeof index === 'number') {\n if (unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n }\n }\n}\n\n/**\n * Make a URL safe.\n *\n * @satisfies {UrlTransform}\n * @param {string} value\n * URL.\n * @returns {string}\n * Safe URL.\n */\nexport function defaultUrlTransform(value) {\n // Same as:\n // \n // But without the `encode` part.\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n safeProtocol.test(value.slice(0, colon))\n ) {\n return value\n }\n\n return ''\n}\n","/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n * Value to search in.\n * @param {string} character\n * Character (or substring) to look for.\n * @return {number}\n * Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n const source = String(value)\n\n if (typeof character !== 'string') {\n throw new TypeError('Expected character')\n }\n\n let count = 0\n let index = source.indexOf(character)\n\n while (index !== -1) {\n count++\n index = source.indexOf(character, index + character.length)\n }\n\n return count\n}\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Text} Text\n * @typedef {import('unist-util-visit-parents').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef RegExpMatchObject\n * Info on the match.\n * @property {number} index\n * The index of the search at which the result was found.\n * @property {string} input\n * A copy of the search string in the text node.\n * @property {[...Array, Text]} stack\n * All ancestors of the text node, where the last node is the text itself.\n *\n * @typedef {RegExp | string} Find\n * Pattern to find.\n *\n * Strings are escaped and then turned into global expressions.\n *\n * @typedef {Array} FindAndReplaceList\n * Several find and replaces, in array form.\n *\n * @typedef {[Find, Replace?]} FindAndReplaceTuple\n * Find and replace in tuple form.\n *\n * @typedef {ReplaceFunction | string | null | undefined} Replace\n * Thing to replace with.\n *\n * @callback ReplaceFunction\n * Callback called when a search matches.\n * @param {...any} parameters\n * The parameters are the result of corresponding search expression:\n *\n * * `value` (`string`) — whole match\n * * `...capture` (`Array`) — matches from regex capture groups\n * * `match` (`RegExpMatchObject`) — info on the match\n * @returns {Array | PhrasingContent | string | false | null | undefined}\n * Thing to replace with.\n *\n * * when `null`, `undefined`, `''`, remove the match\n * * …or when `false`, do not replace at all\n * * …or when `string`, replace with a text node of that value\n * * …or when `Node` or `Array`, replace with those nodes\n *\n * @typedef {[RegExp, ReplaceFunction]} Pair\n * Normalized find and replace.\n *\n * @typedef {Array} Pairs\n * All find and replaced.\n *\n * @typedef Options\n * Configuration.\n * @property {Test | null | undefined} [ignore]\n * Test for which nodes to ignore (optional).\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\n/**\n * Find patterns in a tree and replace them.\n *\n * The algorithm searches the tree in *preorder* for complete values in `Text`\n * nodes.\n * Partial matches are not supported.\n *\n * @param {Nodes} tree\n * Tree to change.\n * @param {FindAndReplaceList | FindAndReplaceTuple} list\n * Patterns to find.\n * @param {Options | null | undefined} [options]\n * Configuration (when `find` is not `Find`).\n * @returns {undefined}\n * Nothing.\n */\nexport function findAndReplace(tree, list, options) {\n const settings = options || {}\n const ignored = convert(settings.ignore || [])\n const pairs = toPairs(list)\n let pairIndex = -1\n\n while (++pairIndex < pairs.length) {\n visitParents(tree, 'text', visitor)\n }\n\n /** @type {import('unist-util-visit-parents').BuildVisitor} */\n function visitor(node, parents) {\n let index = -1\n /** @type {Parents | undefined} */\n let grandparent\n\n while (++index < parents.length) {\n const parent = parents[index]\n /** @type {Array | undefined} */\n const siblings = grandparent ? grandparent.children : undefined\n\n if (\n ignored(\n parent,\n siblings ? siblings.indexOf(parent) : undefined,\n grandparent\n )\n ) {\n return\n }\n\n grandparent = parent\n }\n\n if (grandparent) {\n return handler(node, parents)\n }\n }\n\n /**\n * Handle a text node which is not in an ignored parent.\n *\n * @param {Text} node\n * Text node.\n * @param {Array} parents\n * Parents.\n * @returns {VisitorResult}\n * Result.\n */\n function handler(node, parents) {\n const parent = parents[parents.length - 1]\n const find = pairs[pairIndex][0]\n const replace = pairs[pairIndex][1]\n let start = 0\n /** @type {Array} */\n const siblings = parent.children\n const index = siblings.indexOf(node)\n let change = false\n /** @type {Array} */\n let nodes = []\n\n find.lastIndex = 0\n\n let match = find.exec(node.value)\n\n while (match) {\n const position = match.index\n /** @type {RegExpMatchObject} */\n const matchObject = {\n index: match.index,\n input: match.input,\n stack: [...parents, node]\n }\n let value = replace(...match, matchObject)\n\n if (typeof value === 'string') {\n value = value.length > 0 ? {type: 'text', value} : undefined\n }\n\n // It wasn’t a match after all.\n if (value === false) {\n // False acts as if there was no match.\n // So we need to reset `lastIndex`, which currently being at the end of\n // the current match, to the beginning.\n find.lastIndex = position + 1\n } else {\n if (start !== position) {\n nodes.push({\n type: 'text',\n value: node.value.slice(start, position)\n })\n }\n\n if (Array.isArray(value)) {\n nodes.push(...value)\n } else if (value) {\n nodes.push(value)\n }\n\n start = position + match[0].length\n change = true\n }\n\n if (!find.global) {\n break\n }\n\n match = find.exec(node.value)\n }\n\n if (change) {\n if (start < node.value.length) {\n nodes.push({type: 'text', value: node.value.slice(start)})\n }\n\n parent.children.splice(index, 1, ...nodes)\n } else {\n nodes = [node]\n }\n\n return index + nodes.length\n }\n}\n\n/**\n * Turn a tuple or a list of tuples into pairs.\n *\n * @param {FindAndReplaceList | FindAndReplaceTuple} tupleOrList\n * Schema.\n * @returns {Pairs}\n * Clean pairs.\n */\nfunction toPairs(tupleOrList) {\n /** @type {Pairs} */\n const result = []\n\n if (!Array.isArray(tupleOrList)) {\n throw new TypeError('Expected find and replace tuple or list of tuples')\n }\n\n /** @type {FindAndReplaceList} */\n // @ts-expect-error: correct.\n const list =\n !tupleOrList[0] || Array.isArray(tupleOrList[0])\n ? tupleOrList\n : [tupleOrList]\n\n let index = -1\n\n while (++index < list.length) {\n const tuple = list[index]\n result.push([toExpression(tuple[0]), toFunction(tuple[1])])\n }\n\n return result\n}\n\n/**\n * Turn a find into an expression.\n *\n * @param {Find} find\n * Find.\n * @returns {RegExp}\n * Expression.\n */\nfunction toExpression(find) {\n return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * Turn a replace into a function.\n *\n * @param {Replace} replace\n * Replace.\n * @returns {ReplaceFunction}\n * Function.\n */\nfunction toFunction(replace) {\n return typeof replace === 'function'\n ? replace\n : function () {\n return replace\n }\n}\n","export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","/**\n * @import {RegExpMatchObject, ReplaceFunction} from 'mdast-util-find-and-replace'\n * @import {CompileContext, Extension as FromMarkdownExtension, Handle as FromMarkdownHandle, Transform as FromMarkdownTransform} from 'mdast-util-from-markdown'\n * @import {ConstructName, Options as ToMarkdownExtension} from 'mdast-util-to-markdown'\n * @import {Link, PhrasingContent} from 'mdast'\n */\n\nimport {ccount} from 'ccount'\nimport {ok as assert} from 'devlop'\nimport {unicodePunctuation, unicodeWhitespace} from 'micromark-util-character'\nimport {findAndReplace} from 'mdast-util-find-and-replace'\n\n/** @type {ConstructName} */\nconst inConstruct = 'phrasing'\n/** @type {Array} */\nconst notInConstruct = ['autolink', 'link', 'image', 'label']\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nexport function gfmAutolinkLiteralFromMarkdown() {\n return {\n transforms: [transformGfmAutolinkLiterals],\n enter: {\n literalAutolink: enterLiteralAutolink,\n literalAutolinkEmail: enterLiteralAutolinkValue,\n literalAutolinkHttp: enterLiteralAutolinkValue,\n literalAutolinkWww: enterLiteralAutolinkValue\n },\n exit: {\n literalAutolink: exitLiteralAutolink,\n literalAutolinkEmail: exitLiteralAutolinkEmail,\n literalAutolinkHttp: exitLiteralAutolinkHttp,\n literalAutolinkWww: exitLiteralAutolinkWww\n }\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nexport function gfmAutolinkLiteralToMarkdown() {\n return {\n unsafe: [\n {\n character: '@',\n before: '[+\\\\-.\\\\w]',\n after: '[\\\\-.\\\\w]',\n inConstruct,\n notInConstruct\n },\n {\n character: '.',\n before: '[Ww]',\n after: '[\\\\-.\\\\w]',\n inConstruct,\n notInConstruct\n },\n {\n character: ':',\n before: '[ps]',\n after: '\\\\/',\n inConstruct,\n notInConstruct\n }\n ]\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolink(token) {\n this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolinkValue(token) {\n this.config.enter.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkHttp(token) {\n this.config.exit.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkWww(token) {\n this.config.exit.data.call(this, token)\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'link')\n node.url = 'http://' + this.sliceSerialize(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkEmail(token) {\n this.config.exit.autolinkEmail.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolink(token) {\n this.exit(token)\n}\n\n/** @type {FromMarkdownTransform} */\nfunction transformGfmAutolinkLiterals(tree) {\n findAndReplace(\n tree,\n [\n [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n [/(?<=^|\\s|\\p{P}|\\p{S})([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/gu, findEmail]\n ],\n {ignore: ['link', 'linkReference']}\n )\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} protocol\n * @param {string} domain\n * @param {string} path\n * @param {RegExpMatchObject} match\n * @returns {Array | Link | false}\n */\n// eslint-disable-next-line max-params\nfunction findUrl(_, protocol, domain, path, match) {\n let prefix = ''\n\n // Not an expected previous character.\n if (!previous(match)) {\n return false\n }\n\n // Treat `www` as part of the domain.\n if (/^w/i.test(protocol)) {\n domain = protocol + domain\n protocol = ''\n prefix = 'http://'\n }\n\n if (!isCorrectDomain(domain)) {\n return false\n }\n\n const parts = splitUrl(domain + path)\n\n if (!parts[0]) return false\n\n /** @type {Link} */\n const result = {\n type: 'link',\n title: null,\n url: prefix + protocol + parts[0],\n children: [{type: 'text', value: protocol + parts[0]}]\n }\n\n if (parts[1]) {\n return [result, {type: 'text', value: parts[1]}]\n }\n\n return result\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} atext\n * @param {string} label\n * @param {RegExpMatchObject} match\n * @returns {Link | false}\n */\nfunction findEmail(_, atext, label, match) {\n if (\n // Not an expected previous character.\n !previous(match, true) ||\n // Label ends in not allowed character.\n /[-\\d_]$/.test(label)\n ) {\n return false\n }\n\n return {\n type: 'link',\n title: null,\n url: 'mailto:' + atext + '@' + label,\n children: [{type: 'text', value: atext + '@' + label}]\n }\n}\n\n/**\n * @param {string} domain\n * @returns {boolean}\n */\nfunction isCorrectDomain(domain) {\n const parts = domain.split('.')\n\n if (\n parts.length < 2 ||\n (parts[parts.length - 1] &&\n (/_/.test(parts[parts.length - 1]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 1]))) ||\n (parts[parts.length - 2] &&\n (/_/.test(parts[parts.length - 2]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 2])))\n ) {\n return false\n }\n\n return true\n}\n\n/**\n * @param {string} url\n * @returns {[string, string | undefined]}\n */\nfunction splitUrl(url) {\n const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n\n if (!trailExec) {\n return [url, undefined]\n }\n\n url = url.slice(0, trailExec.index)\n\n let trail = trailExec[0]\n let closingParenIndex = trail.indexOf(')')\n const openingParens = ccount(url, '(')\n let closingParens = ccount(url, ')')\n\n while (closingParenIndex !== -1 && openingParens > closingParens) {\n url += trail.slice(0, closingParenIndex + 1)\n trail = trail.slice(closingParenIndex + 1)\n closingParenIndex = trail.indexOf(')')\n closingParens++\n }\n\n return [url, trail]\n}\n\n/**\n * @param {RegExpMatchObject} match\n * @param {boolean | null | undefined} [email=false]\n * @returns {boolean}\n */\nfunction previous(match, email) {\n const code = match.input.charCodeAt(match.index - 1)\n\n return (\n (match.index === 0 ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)) &&\n // If it’s an email, the previous character should not be a slash.\n (!email || code !== 47)\n )\n}\n","/**\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Map} Map\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\nimport {ok as assert} from 'devlop'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\n\nfootnoteReference.peek = footnoteReferencePeek\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown`.\n */\nexport function gfmFootnoteFromMarkdown() {\n return {\n enter: {\n gfmFootnoteDefinition: enterFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n gfmFootnoteCall: enterFootnoteCall,\n gfmFootnoteCallString: enterFootnoteCallString\n },\n exit: {\n gfmFootnoteDefinition: exitFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n gfmFootnoteCall: exitFootnoteCall,\n gfmFootnoteCallString: exitFootnoteCallString\n }\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown`.\n */\nexport function gfmFootnoteToMarkdown() {\n return {\n // This is on by default already.\n unsafe: [{character: '[', inConstruct: ['phrasing', 'label', 'reference']}],\n handlers: {footnoteDefinition, footnoteReference}\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinition(token) {\n this.enter(\n {type: 'footnoteDefinition', identifier: '', label: '', children: []},\n token\n )\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinitionLabelString() {\n this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinitionLabelString(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'footnoteDefinition')\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinition(token) {\n this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCall(token) {\n this.enter({type: 'footnoteReference', identifier: '', label: ''}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCallString() {\n this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCallString(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'footnoteReference')\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCall(token) {\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteReference} node\n */\nfunction footnoteReference(node, _, state, info) {\n const tracker = state.createTracker(info)\n let value = tracker.move('[^')\n const exit = state.enter('footnoteReference')\n const subexit = state.enter('reference')\n value += tracker.move(\n state.safe(state.associationId(node), {\n ...tracker.current(),\n before: value,\n after: ']'\n })\n )\n subexit()\n exit()\n value += tracker.move(']')\n return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction footnoteReferencePeek() {\n return '['\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteDefinition} node\n */\nfunction footnoteDefinition(node, _, state, info) {\n const tracker = state.createTracker(info)\n let value = tracker.move('[^')\n const exit = state.enter('footnoteDefinition')\n const subexit = state.enter('label')\n value += tracker.move(\n state.safe(state.associationId(node), {\n ...tracker.current(),\n before: value,\n after: ']'\n })\n )\n subexit()\n value += tracker.move(\n ']:' + (node.children && node.children.length > 0 ? ' ' : '')\n )\n tracker.shift(4)\n value += tracker.move(\n state.indentLines(state.containerFlow(node, tracker.current()), map)\n )\n exit()\n\n return value\n}\n\n/** @type {Map} */\nfunction map(line, index, blank) {\n if (index === 0) {\n return line\n }\n\n return (blank ? '' : ' ') + line\n}\n","/**\n * @typedef {import('mdast').Delete} Delete\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n/**\n * List of constructs that occur in phrasing (paragraphs, headings), but cannot\n * contain strikethrough.\n * So they sort of cancel each other out.\n * Note: could use a better name.\n *\n * Note: keep in sync with: \n *\n * @type {Array}\n */\nconst constructsWithoutStrikethrough = [\n 'autolink',\n 'destinationLiteral',\n 'destinationRaw',\n 'reference',\n 'titleQuote',\n 'titleApostrophe'\n]\n\nhandleDelete.peek = peekDelete\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown` to enable GFM strikethrough.\n */\nexport function gfmStrikethroughFromMarkdown() {\n return {\n canContainEols: ['delete'],\n enter: {strikethrough: enterStrikethrough},\n exit: {strikethrough: exitStrikethrough}\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM strikethrough.\n */\nexport function gfmStrikethroughToMarkdown() {\n return {\n unsafe: [\n {\n character: '~',\n inConstruct: 'phrasing',\n notInConstruct: constructsWithoutStrikethrough\n }\n ],\n handlers: {delete: handleDelete}\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterStrikethrough(token) {\n this.enter({type: 'delete', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitStrikethrough(token) {\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {Delete} node\n */\nfunction handleDelete(node, _, state, info) {\n const tracker = state.createTracker(info)\n const exit = state.enter('strikethrough')\n let value = tracker.move('~~')\n value += state.containerPhrasing(node, {\n ...tracker.current(),\n before: value,\n after: '~'\n })\n value += tracker.move('~~')\n exit()\n return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction peekDelete() {\n return '~'\n}\n","// To do: next major: remove.\n/**\n * @typedef {Options} MarkdownTableOptions\n * Configuration.\n */\n\n/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [alignDelimiters=true]\n * Whether to align the delimiters (default: `true`);\n * they are aligned by default:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * Pass `false` to make them staggered:\n *\n * ```markdown\n * | Alpha | B |\n * | - | - |\n * | C | Delta |\n * ```\n * @property {ReadonlyArray | string | null | undefined} [align]\n * How to align columns (default: `''`);\n * one style for all columns or styles for their respective columns;\n * each style is either `'l'` (left), `'r'` (right), or `'c'` (center);\n * other values are treated as `''`, which doesn’t place the colon in the\n * alignment row but does align left;\n * *only the lowercased first character is used, so `Right` is fine.*\n * @property {boolean | null | undefined} [delimiterEnd=true]\n * Whether to end each row with the delimiter (default: `true`).\n *\n * > 👉 **Note**: please don’t use this: it could create fragile structures\n * > that aren’t understandable to some markdown parsers.\n *\n * When `true`, there are ending delimiters:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there are no ending delimiters:\n *\n * ```markdown\n * | Alpha | B\n * | ----- | -----\n * | C | Delta\n * ```\n * @property {boolean | null | undefined} [delimiterStart=true]\n * Whether to begin each row with the delimiter (default: `true`).\n *\n * > 👉 **Note**: please don’t use this: it could create fragile structures\n * > that aren’t understandable to some markdown parsers.\n *\n * When `true`, there are starting delimiters:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there are no starting delimiters:\n *\n * ```markdown\n * Alpha | B |\n * ----- | ----- |\n * C | Delta |\n * ```\n * @property {boolean | null | undefined} [padding=true]\n * Whether to add a space of padding between delimiters and cells\n * (default: `true`).\n *\n * When `true`, there is padding:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there is no padding:\n *\n * ```markdown\n * |Alpha|B |\n * |-----|-----|\n * |C |Delta|\n * ```\n * @property {((value: string) => number) | null | undefined} [stringLength]\n * Function to detect the length of table cell content (optional);\n * this is used when aligning the delimiters (`|`) between table cells;\n * full-width characters and emoji mess up delimiter alignment when viewing\n * the markdown source;\n * to fix this, you can pass this function,\n * which receives the cell content and returns its “visible” size;\n * note that what is and isn’t visible depends on where the text is displayed.\n *\n * Without such a function, the following:\n *\n * ```js\n * markdownTable([\n * ['Alpha', 'Bravo'],\n * ['中文', 'Charlie'],\n * ['👩‍❤️‍👩', 'Delta']\n * ])\n * ```\n *\n * Yields:\n *\n * ```markdown\n * | Alpha | Bravo |\n * | - | - |\n * | 中文 | Charlie |\n * | 👩‍❤️‍👩 | Delta |\n * ```\n *\n * With [`string-width`](https://github.com/sindresorhus/string-width):\n *\n * ```js\n * import stringWidth from 'string-width'\n *\n * markdownTable(\n * [\n * ['Alpha', 'Bravo'],\n * ['中文', 'Charlie'],\n * ['👩‍❤️‍👩', 'Delta']\n * ],\n * {stringLength: stringWidth}\n * )\n * ```\n *\n * Yields:\n *\n * ```markdown\n * | Alpha | Bravo |\n * | ----- | ------- |\n * | 中文 | Charlie |\n * | 👩‍❤️‍👩 | Delta |\n * ```\n */\n\n/**\n * @param {string} value\n * Cell value.\n * @returns {number}\n * Cell size.\n */\nfunction defaultStringLength(value) {\n return value.length\n}\n\n/**\n * Generate a markdown\n * ([GFM](https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables))\n * table.\n *\n * @param {ReadonlyArray>} table\n * Table data (matrix of strings).\n * @param {Readonly | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Result.\n */\nexport function markdownTable(table, options) {\n const settings = options || {}\n // To do: next major: change to spread.\n const align = (settings.align || []).concat()\n const stringLength = settings.stringLength || defaultStringLength\n /** @type {Array} Character codes as symbols for alignment per column. */\n const alignments = []\n /** @type {Array>} Cells per row. */\n const cellMatrix = []\n /** @type {Array>} Sizes of each cell per row. */\n const sizeMatrix = []\n /** @type {Array} */\n const longestCellByColumn = []\n let mostCellsPerRow = 0\n let rowIndex = -1\n\n // This is a superfluous loop if we don’t align delimiters, but otherwise we’d\n // do superfluous work when aligning, so optimize for aligning.\n while (++rowIndex < table.length) {\n /** @type {Array} */\n const row = []\n /** @type {Array} */\n const sizes = []\n let columnIndex = -1\n\n if (table[rowIndex].length > mostCellsPerRow) {\n mostCellsPerRow = table[rowIndex].length\n }\n\n while (++columnIndex < table[rowIndex].length) {\n const cell = serialize(table[rowIndex][columnIndex])\n\n if (settings.alignDelimiters !== false) {\n const size = stringLength(cell)\n sizes[columnIndex] = size\n\n if (\n longestCellByColumn[columnIndex] === undefined ||\n size > longestCellByColumn[columnIndex]\n ) {\n longestCellByColumn[columnIndex] = size\n }\n }\n\n row.push(cell)\n }\n\n cellMatrix[rowIndex] = row\n sizeMatrix[rowIndex] = sizes\n }\n\n // Figure out which alignments to use.\n let columnIndex = -1\n\n if (typeof align === 'object' && 'length' in align) {\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = toAlignment(align[columnIndex])\n }\n } else {\n const code = toAlignment(align)\n\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = code\n }\n }\n\n // Inject the alignment row.\n columnIndex = -1\n /** @type {Array} */\n const row = []\n /** @type {Array} */\n const sizes = []\n\n while (++columnIndex < mostCellsPerRow) {\n const code = alignments[columnIndex]\n let before = ''\n let after = ''\n\n if (code === 99 /* `c` */) {\n before = ':'\n after = ':'\n } else if (code === 108 /* `l` */) {\n before = ':'\n } else if (code === 114 /* `r` */) {\n after = ':'\n }\n\n // There *must* be at least one hyphen-minus in each alignment cell.\n let size =\n settings.alignDelimiters === false\n ? 1\n : Math.max(\n 1,\n longestCellByColumn[columnIndex] - before.length - after.length\n )\n\n const cell = before + '-'.repeat(size) + after\n\n if (settings.alignDelimiters !== false) {\n size = before.length + size + after.length\n\n if (size > longestCellByColumn[columnIndex]) {\n longestCellByColumn[columnIndex] = size\n }\n\n sizes[columnIndex] = size\n }\n\n row[columnIndex] = cell\n }\n\n // Inject the alignment row.\n cellMatrix.splice(1, 0, row)\n sizeMatrix.splice(1, 0, sizes)\n\n rowIndex = -1\n /** @type {Array} */\n const lines = []\n\n while (++rowIndex < cellMatrix.length) {\n const row = cellMatrix[rowIndex]\n const sizes = sizeMatrix[rowIndex]\n columnIndex = -1\n /** @type {Array} */\n const line = []\n\n while (++columnIndex < mostCellsPerRow) {\n const cell = row[columnIndex] || ''\n let before = ''\n let after = ''\n\n if (settings.alignDelimiters !== false) {\n const size =\n longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n const code = alignments[columnIndex]\n\n if (code === 114 /* `r` */) {\n before = ' '.repeat(size)\n } else if (code === 99 /* `c` */) {\n if (size % 2) {\n before = ' '.repeat(size / 2 + 0.5)\n after = ' '.repeat(size / 2 - 0.5)\n } else {\n before = ' '.repeat(size / 2)\n after = before\n }\n } else {\n after = ' '.repeat(size)\n }\n }\n\n if (settings.delimiterStart !== false && !columnIndex) {\n line.push('|')\n }\n\n if (\n settings.padding !== false &&\n // Don’t add the opening space if we’re not aligning and the cell is\n // empty: there will be a closing space.\n !(settings.alignDelimiters === false && cell === '') &&\n (settings.delimiterStart !== false || columnIndex)\n ) {\n line.push(' ')\n }\n\n if (settings.alignDelimiters !== false) {\n line.push(before)\n }\n\n line.push(cell)\n\n if (settings.alignDelimiters !== false) {\n line.push(after)\n }\n\n if (settings.padding !== false) {\n line.push(' ')\n }\n\n if (\n settings.delimiterEnd !== false ||\n columnIndex !== mostCellsPerRow - 1\n ) {\n line.push('|')\n }\n }\n\n lines.push(\n settings.delimiterEnd === false\n ? line.join('').replace(/ +$/, '')\n : line.join('')\n )\n }\n\n return lines.join('\\n')\n}\n\n/**\n * @param {string | null | undefined} [value]\n * Value to serialize.\n * @returns {string}\n * Result.\n */\nfunction serialize(value) {\n return value === null || value === undefined ? '' : String(value)\n}\n\n/**\n * @param {string | null | undefined} value\n * Value.\n * @returns {number}\n * Alignment.\n */\nfunction toAlignment(value) {\n const code = typeof value === 'string' ? value.codePointAt(0) : 0\n\n return code === 67 /* `C` */ || code === 99 /* `c` */\n ? 99 /* `c` */\n : code === 76 /* `L` */ || code === 108 /* `l` */\n ? 108 /* `l` */\n : code === 82 /* `R` */ || code === 114 /* `r` */\n ? 114 /* `r` */\n : 0\n}\n","/**\n * @import {Blockquote, Parents} from 'mdast'\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {Blockquote} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function blockquote(node, _, state, info) {\n const exit = state.enter('blockquote')\n const tracker = state.createTracker(info)\n tracker.move('> ')\n tracker.shift(2)\n const value = state.indentLines(\n state.containerFlow(node, tracker.current()),\n map\n )\n exit()\n return value\n}\n\n/** @type {Map} */\nfunction map(line, _, blank) {\n return '>' + (blank ? '' : ' ') + line\n}\n","/**\n * @import {ConstructName, Unsafe} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {Array} stack\n * @param {Unsafe} pattern\n * @returns {boolean}\n */\nexport function patternInScope(stack, pattern) {\n return (\n listInScope(stack, pattern.inConstruct, true) &&\n !listInScope(stack, pattern.notInConstruct, false)\n )\n}\n\n/**\n * @param {Array} stack\n * @param {Unsafe['inConstruct']} list\n * @param {boolean} none\n * @returns {boolean}\n */\nfunction listInScope(stack, list, none) {\n if (typeof list === 'string') {\n list = [list]\n }\n\n if (!list || list.length === 0) {\n return none\n }\n\n let index = -1\n\n while (++index < list.length) {\n if (stack.includes(list[index])) {\n return true\n }\n }\n\n return false\n}\n","/**\n * @import {Break, Parents} from 'mdast'\n * @import {Info, State} from 'mdast-util-to-markdown'\n */\n\nimport {patternInScope} from '../util/pattern-in-scope.js'\n\n/**\n * @param {Break} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function hardBreak(_, _1, state, info) {\n let index = -1\n\n while (++index < state.unsafe.length) {\n // If we can’t put eols in this construct (setext headings, tables), use a\n // space instead.\n if (\n state.unsafe[index].character === '\\n' &&\n patternInScope(state.stack, state.unsafe[index])\n ) {\n return /[ \\t]/.test(info.before) ? '' : ' '\n }\n }\n\n return '\\\\\\n'\n}\n","/**\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n * @import {Code, Parents} from 'mdast'\n */\n\nimport {longestStreak} from 'longest-streak'\nimport {formatCodeAsIndented} from '../util/format-code-as-indented.js'\nimport {checkFence} from '../util/check-fence.js'\n\n/**\n * @param {Code} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function code(node, _, state, info) {\n const marker = checkFence(state)\n const raw = node.value || ''\n const suffix = marker === '`' ? 'GraveAccent' : 'Tilde'\n\n if (formatCodeAsIndented(node, state)) {\n const exit = state.enter('codeIndented')\n const value = state.indentLines(raw, map)\n exit()\n return value\n }\n\n const tracker = state.createTracker(info)\n const sequence = marker.repeat(Math.max(longestStreak(raw, marker) + 1, 3))\n const exit = state.enter('codeFenced')\n let value = tracker.move(sequence)\n\n if (node.lang) {\n const subexit = state.enter(`codeFencedLang${suffix}`)\n value += tracker.move(\n state.safe(node.lang, {\n before: value,\n after: ' ',\n encode: ['`'],\n ...tracker.current()\n })\n )\n subexit()\n }\n\n if (node.lang && node.meta) {\n const subexit = state.enter(`codeFencedMeta${suffix}`)\n value += tracker.move(' ')\n value += tracker.move(\n state.safe(node.meta, {\n before: value,\n after: '\\n',\n encode: ['`'],\n ...tracker.current()\n })\n )\n subexit()\n }\n\n value += tracker.move('\\n')\n\n if (raw) {\n value += tracker.move(raw + '\\n')\n }\n\n value += tracker.move(sequence)\n exit()\n return value\n}\n\n/** @type {Map} */\nfunction map(line, _, blank) {\n return (blank ? '' : ' ') + line\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkQuote(state) {\n const marker = state.options.quote || '\"'\n\n if (marker !== '\"' && marker !== \"'\") {\n throw new Error(\n 'Cannot serialize title with `' +\n marker +\n '` for `options.quote`, expected `\"`, or `\\'`'\n )\n }\n\n return marker\n}\n","/**\n * Encode a code point as a character reference.\n *\n * @param {number} code\n * Code point to encode.\n * @returns {string}\n * Encoded character reference.\n */\nexport function encodeCharacterReference(code) {\n return '&#x' + code.toString(16).toUpperCase() + ';'\n}\n","/**\n * @import {EncodeSides} from '../types.js'\n */\n\nimport {classifyCharacter} from 'micromark-util-classify-character'\n\n/**\n * Check whether to encode (as a character reference) the characters\n * surrounding an attention run.\n *\n * Which characters are around an attention run influence whether it works or\n * not.\n *\n * See for more info.\n * See this markdown in a particular renderer to see what works:\n *\n * ```markdown\n * | | A (letter inside) | B (punctuation inside) | C (whitespace inside) | D (nothing inside) |\n * | ----------------------- | ----------------- | ---------------------- | --------------------- | ------------------ |\n * | 1 (letter outside) | x*y*z | x*.*z | x* *z | x**z |\n * | 2 (punctuation outside) | .*y*. | .*.*. | .* *. | .**. |\n * | 3 (whitespace outside) | x *y* z | x *.* z | x * * z | x ** z |\n * | 4 (nothing outside) | *x* | *.* | * * | ** |\n * ```\n *\n * @param {number} outside\n * Code point on the outer side of the run.\n * @param {number} inside\n * Code point on the inner side of the run.\n * @param {'*' | '_'} marker\n * Marker of the run.\n * Underscores are handled more strictly (they form less often) than\n * asterisks.\n * @returns {EncodeSides}\n * Whether to encode characters.\n */\n// Important: punctuation must never be encoded.\n// Punctuation is solely used by markdown constructs.\n// And by encoding itself.\n// Encoding them will break constructs or double encode things.\nexport function encodeInfo(outside, inside, marker) {\n const outsideKind = classifyCharacter(outside)\n const insideKind = classifyCharacter(inside)\n\n // Letter outside:\n if (outsideKind === undefined) {\n return insideKind === undefined\n ? // Letter inside:\n // we have to encode *both* letters for `_` as it is looser.\n // it already forms for `*` (and GFMs `~`).\n marker === '_'\n ? {inside: true, outside: true}\n : {inside: false, outside: false}\n : insideKind === 1\n ? // Whitespace inside: encode both (letter, whitespace).\n {inside: true, outside: true}\n : // Punctuation inside: encode outer (letter)\n {inside: false, outside: true}\n }\n\n // Whitespace outside:\n if (outsideKind === 1) {\n return insideKind === undefined\n ? // Letter inside: already forms.\n {inside: false, outside: false}\n : insideKind === 1\n ? // Whitespace inside: encode both (whitespace).\n {inside: true, outside: true}\n : // Punctuation inside: already forms.\n {inside: false, outside: false}\n }\n\n // Punctuation outside:\n return insideKind === undefined\n ? // Letter inside: already forms.\n {inside: false, outside: false}\n : insideKind === 1\n ? // Whitespace inside: encode inner (whitespace).\n {inside: true, outside: false}\n : // Punctuation inside: already forms.\n {inside: false, outside: false}\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Emphasis, Parents} from 'mdast'\n */\n\nimport {checkEmphasis} from '../util/check-emphasis.js'\nimport {encodeCharacterReference} from '../util/encode-character-reference.js'\nimport {encodeInfo} from '../util/encode-info.js'\n\nemphasis.peek = emphasisPeek\n\n/**\n * @param {Emphasis} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function emphasis(node, _, state, info) {\n const marker = checkEmphasis(state)\n const exit = state.enter('emphasis')\n const tracker = state.createTracker(info)\n const before = tracker.move(marker)\n\n let between = tracker.move(\n state.containerPhrasing(node, {\n after: marker,\n before,\n ...tracker.current()\n })\n )\n const betweenHead = between.charCodeAt(0)\n const open = encodeInfo(\n info.before.charCodeAt(info.before.length - 1),\n betweenHead,\n marker\n )\n\n if (open.inside) {\n between = encodeCharacterReference(betweenHead) + between.slice(1)\n }\n\n const betweenTail = between.charCodeAt(between.length - 1)\n const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker)\n\n if (close.inside) {\n between = between.slice(0, -1) + encodeCharacterReference(betweenTail)\n }\n\n const after = tracker.move(marker)\n\n exit()\n\n state.attentionEncodeSurroundingInfo = {\n after: close.outside,\n before: open.outside\n }\n return before + between + after\n}\n\n/**\n * @param {Emphasis} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction emphasisPeek(_, _1, state) {\n return state.options.emphasis || '*'\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkEmphasis(state) {\n const marker = state.options.emphasis || '*'\n\n if (marker !== '*' && marker !== '_') {\n throw new Error(\n 'Cannot serialize emphasis with `' +\n marker +\n '` for `options.emphasis`, expected `*`, or `_`'\n )\n }\n\n return marker\n}\n","/**\n * @import {Html} from 'mdast'\n */\n\nhtml.peek = htmlPeek\n\n/**\n * @param {Html} node\n * @returns {string}\n */\nexport function html(node) {\n return node.value || ''\n}\n\n/**\n * @returns {string}\n */\nfunction htmlPeek() {\n return '<'\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Image, Parents} from 'mdast'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\n\nimage.peek = imagePeek\n\n/**\n * @param {Image} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function image(node, _, state, info) {\n const quote = checkQuote(state)\n const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n const exit = state.enter('image')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('![')\n value += tracker.move(\n state.safe(node.alt, {before: value, after: ']', ...tracker.current()})\n )\n value += tracker.move('](')\n\n subexit()\n\n if (\n // If there’s no url but there is a title…\n (!node.url && node.title) ||\n // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter('destinationLiteral')\n value += tracker.move('<')\n value += tracker.move(\n state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n )\n value += tracker.move('>')\n } else {\n // No whitespace, raw is prettier.\n subexit = state.enter('destinationRaw')\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? ' ' : ')',\n ...tracker.current()\n })\n )\n }\n\n subexit()\n\n if (node.title) {\n subexit = state.enter(`title${suffix}`)\n value += tracker.move(' ' + quote)\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n )\n value += tracker.move(quote)\n subexit()\n }\n\n value += tracker.move(')')\n exit()\n\n return value\n}\n\n/**\n * @returns {string}\n */\nfunction imagePeek() {\n return '!'\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {ImageReference, Parents} from 'mdast'\n */\n\nimageReference.peek = imageReferencePeek\n\n/**\n * @param {ImageReference} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function imageReference(node, _, state, info) {\n const type = node.referenceType\n const exit = state.enter('imageReference')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('![')\n const alt = state.safe(node.alt, {\n before: value,\n after: ']',\n ...tracker.current()\n })\n value += tracker.move(alt + '][')\n\n subexit()\n // Hide the fact that we’re in phrasing, because escapes don’t work.\n const stack = state.stack\n state.stack = []\n subexit = state.enter('reference')\n // Note: for proper tracking, we should reset the output positions when we end\n // up making a `shortcut` reference, because then there is no brace output.\n // Practically, in that case, there is no content, so it doesn’t matter that\n // we’ve tracked one too many characters.\n const reference = state.safe(state.associationId(node), {\n before: value,\n after: ']',\n ...tracker.current()\n })\n subexit()\n state.stack = stack\n exit()\n\n if (type === 'full' || !alt || alt !== reference) {\n value += tracker.move(reference + ']')\n } else if (type === 'shortcut') {\n // Remove the unwanted `[`.\n value = value.slice(0, -1)\n } else {\n value += tracker.move(']')\n }\n\n return value\n}\n\n/**\n * @returns {string}\n */\nfunction imageReferencePeek() {\n return '!'\n}\n","/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {InlineCode, Parents} from 'mdast'\n */\n\ninlineCode.peek = inlineCodePeek\n\n/**\n * @param {InlineCode} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @returns {string}\n */\nexport function inlineCode(node, _, state) {\n let value = node.value || ''\n let sequence = '`'\n let index = -1\n\n // If there is a single grave accent on its own in the code, use a fence of\n // two.\n // If there are two in a row, use one.\n while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) {\n sequence += '`'\n }\n\n // If this is not just spaces or eols (tabs don’t count), and either the\n // first or last character are a space, eol, or tick, then pad with spaces.\n if (\n /[^ \\r\\n]/.test(value) &&\n ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) || /^`|`$/.test(value))\n ) {\n value = ' ' + value + ' '\n }\n\n // We have a potential problem: certain characters after eols could result in\n // blocks being seen.\n // For example, if someone injected the string `'\\n# b'`, then that would\n // result in an ATX heading.\n // We can’t escape characters in `inlineCode`, but because eols are\n // transformed to spaces when going from markdown to HTML anyway, we can swap\n // them out.\n while (++index < state.unsafe.length) {\n const pattern = state.unsafe[index]\n const expression = state.compilePattern(pattern)\n /** @type {RegExpExecArray | null} */\n let match\n\n // Only look for `atBreak`s.\n // Btw: note that `atBreak` patterns will always start the regex at LF or\n // CR.\n if (!pattern.atBreak) continue\n\n while ((match = expression.exec(value))) {\n let position = match.index\n\n // Support CRLF (patterns only look for one of the characters).\n if (\n value.charCodeAt(position) === 10 /* `\\n` */ &&\n value.charCodeAt(position - 1) === 13 /* `\\r` */\n ) {\n position--\n }\n\n value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n }\n }\n\n return sequence + value + sequence\n}\n\n/**\n * @returns {string}\n */\nfunction inlineCodePeek() {\n return '`'\n}\n","/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Link} from 'mdast'\n */\n\nimport {toString} from 'mdast-util-to-string'\n\n/**\n * @param {Link} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatLinkAsAutolink(node, state) {\n const raw = toString(node)\n\n return Boolean(\n !state.options.resourceLink &&\n // If there’s a url…\n node.url &&\n // And there’s a no title…\n !node.title &&\n // And the content of `node` is a single text node…\n node.children &&\n node.children.length === 1 &&\n node.children[0].type === 'text' &&\n // And if the url is the same as the content…\n (raw === node.url || 'mailto:' + raw === node.url) &&\n // And that starts w/ a protocol…\n /^[a-z][a-z+.-]+:/i.test(node.url) &&\n // And that doesn’t contain ASCII control codes (character escapes and\n // references don’t work), space, or angle brackets…\n !/[\\0- <>\\u007F]/.test(node.url)\n )\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Link, Parents} from 'mdast'\n * @import {Exit} from '../types.js'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\nimport {formatLinkAsAutolink} from '../util/format-link-as-autolink.js'\n\nlink.peek = linkPeek\n\n/**\n * @param {Link} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function link(node, _, state, info) {\n const quote = checkQuote(state)\n const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n const tracker = state.createTracker(info)\n /** @type {Exit} */\n let exit\n /** @type {Exit} */\n let subexit\n\n if (formatLinkAsAutolink(node, state)) {\n // Hide the fact that we’re in phrasing, because escapes don’t work.\n const stack = state.stack\n state.stack = []\n exit = state.enter('autolink')\n let value = tracker.move('<')\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: '>',\n ...tracker.current()\n })\n )\n value += tracker.move('>')\n exit()\n state.stack = stack\n return value\n }\n\n exit = state.enter('link')\n subexit = state.enter('label')\n let value = tracker.move('[')\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: '](',\n ...tracker.current()\n })\n )\n value += tracker.move('](')\n subexit()\n\n if (\n // If there’s no url but there is a title…\n (!node.url && node.title) ||\n // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter('destinationLiteral')\n value += tracker.move('<')\n value += tracker.move(\n state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n )\n value += tracker.move('>')\n } else {\n // No whitespace, raw is prettier.\n subexit = state.enter('destinationRaw')\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? ' ' : ')',\n ...tracker.current()\n })\n )\n }\n\n subexit()\n\n if (node.title) {\n subexit = state.enter(`title${suffix}`)\n value += tracker.move(' ' + quote)\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n )\n value += tracker.move(quote)\n subexit()\n }\n\n value += tracker.move(')')\n\n exit()\n return value\n}\n\n/**\n * @param {Link} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @returns {string}\n */\nfunction linkPeek(node, _, state) {\n return formatLinkAsAutolink(node, state) ? '<' : '['\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {LinkReference, Parents} from 'mdast'\n */\n\nlinkReference.peek = linkReferencePeek\n\n/**\n * @param {LinkReference} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function linkReference(node, _, state, info) {\n const type = node.referenceType\n const exit = state.enter('linkReference')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('[')\n const text = state.containerPhrasing(node, {\n before: value,\n after: ']',\n ...tracker.current()\n })\n value += tracker.move(text + '][')\n\n subexit()\n // Hide the fact that we’re in phrasing, because escapes don’t work.\n const stack = state.stack\n state.stack = []\n subexit = state.enter('reference')\n // Note: for proper tracking, we should reset the output positions when we end\n // up making a `shortcut` reference, because then there is no brace output.\n // Practically, in that case, there is no content, so it doesn’t matter that\n // we’ve tracked one too many characters.\n const reference = state.safe(state.associationId(node), {\n before: value,\n after: ']',\n ...tracker.current()\n })\n subexit()\n state.stack = stack\n exit()\n\n if (type === 'full' || !text || text !== reference) {\n value += tracker.move(reference + ']')\n } else if (type === 'shortcut') {\n // Remove the unwanted `[`.\n value = value.slice(0, -1)\n } else {\n value += tracker.move(']')\n }\n\n return value\n}\n\n/**\n * @returns {string}\n */\nfunction linkReferencePeek() {\n return '['\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkBullet(state) {\n const marker = state.options.bullet || '*'\n\n if (marker !== '*' && marker !== '+' && marker !== '-') {\n throw new Error(\n 'Cannot serialize items with `' +\n marker +\n '` for `options.bullet`, expected `*`, `+`, or `-`'\n )\n }\n\n return marker\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkRule(state) {\n const marker = state.options.rule || '*'\n\n if (marker !== '*' && marker !== '-' && marker !== '_') {\n throw new Error(\n 'Cannot serialize rules with `' +\n marker +\n '` for `options.rule`, expected `*`, `-`, or `_`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n */\n\nimport {convert} from 'unist-util-is'\n\n/**\n * Check if the given value is *phrasing content*.\n *\n * > 👉 **Note**: Excludes `html`, which can be both phrasing or flow.\n *\n * @param node\n * Thing to check, typically `Node`.\n * @returns\n * Whether `value` is phrasing content.\n */\n\nexport const phrasing =\n /** @type {(node?: unknown) => node is Exclude} */\n (\n convert([\n 'break',\n 'delete',\n 'emphasis',\n // To do: next major: removed since footnotes were added to GFM.\n 'footnote',\n 'footnoteReference',\n 'image',\n 'imageReference',\n 'inlineCode',\n // Enabled by `mdast-util-math`:\n 'inlineMath',\n 'link',\n 'linkReference',\n // Enabled by `mdast-util-mdx`:\n 'mdxJsxTextElement',\n // Enabled by `mdast-util-mdx`:\n 'mdxTextExpression',\n 'strong',\n 'text',\n // Enabled by `mdast-util-directive`:\n 'textDirective'\n ])\n )\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Strong} from 'mdast'\n */\n\nimport {checkStrong} from '../util/check-strong.js'\nimport {encodeCharacterReference} from '../util/encode-character-reference.js'\nimport {encodeInfo} from '../util/encode-info.js'\n\nstrong.peek = strongPeek\n\n/**\n * @param {Strong} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function strong(node, _, state, info) {\n const marker = checkStrong(state)\n const exit = state.enter('strong')\n const tracker = state.createTracker(info)\n const before = tracker.move(marker + marker)\n\n let between = tracker.move(\n state.containerPhrasing(node, {\n after: marker,\n before,\n ...tracker.current()\n })\n )\n const betweenHead = between.charCodeAt(0)\n const open = encodeInfo(\n info.before.charCodeAt(info.before.length - 1),\n betweenHead,\n marker\n )\n\n if (open.inside) {\n between = encodeCharacterReference(betweenHead) + between.slice(1)\n }\n\n const betweenTail = between.charCodeAt(between.length - 1)\n const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker)\n\n if (close.inside) {\n between = between.slice(0, -1) + encodeCharacterReference(betweenTail)\n }\n\n const after = tracker.move(marker + marker)\n\n exit()\n\n state.attentionEncodeSurroundingInfo = {\n after: close.outside,\n before: open.outside\n }\n return before + between + after\n}\n\n/**\n * @param {Strong} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction strongPeek(_, _1, state) {\n return state.options.strong || '*'\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkStrong(state) {\n const marker = state.options.strong || '*'\n\n if (marker !== '*' && marker !== '_') {\n throw new Error(\n 'Cannot serialize strong with `' +\n marker +\n '` for `options.strong`, expected `*`, or `_`'\n )\n }\n\n return marker\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {definition} from './definition.js'\nimport {emphasis} from './emphasis.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {image} from './image.js'\nimport {imageReference} from './image-reference.js'\nimport {inlineCode} from './inline-code.js'\nimport {link} from './link.js'\nimport {linkReference} from './link-reference.js'\nimport {list} from './list.js'\nimport {listItem} from './list-item.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default (CommonMark) handlers.\n */\nexport const handle = {\n blockquote,\n break: hardBreak,\n code,\n definition,\n emphasis,\n hardBreak,\n heading,\n html,\n image,\n imageReference,\n inlineCode,\n link,\n linkReference,\n list,\n listItem,\n paragraph,\n root,\n strong,\n text,\n thematicBreak\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkFence(state) {\n const marker = state.options.fence || '`'\n\n if (marker !== '`' && marker !== '~') {\n throw new Error(\n 'Cannot serialize code with `' +\n marker +\n '` for `options.fence`, expected `` ` `` or `~`'\n )\n }\n\n return marker\n}\n","/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Code} from 'mdast'\n */\n\n/**\n * @param {Code} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatCodeAsIndented(node, state) {\n return Boolean(\n state.options.fences === false &&\n node.value &&\n // If there’s no info…\n !node.lang &&\n // And there’s a non-whitespace character…\n /[^ \\r\\n]/.test(node.value) &&\n // And the value doesn’t start or end in a blank…\n !/^[\\t ]*(?:[\\r\\n]|$)|(?:^|[\\r\\n])[\\t ]*$/.test(node.value)\n )\n}\n","/**\n * Get the count of the longest repeating streak of `substring` in `value`.\n *\n * @param {string} value\n * Content to search in.\n * @param {string} substring\n * Substring to look for, typically one character.\n * @returns {number}\n * Count of most frequent adjacent `substring`s in `value`.\n */\nexport function longestStreak(value, substring) {\n const source = String(value)\n let index = source.indexOf(substring)\n let expected = index\n let count = 0\n let max = 0\n\n if (typeof substring !== 'string') {\n throw new TypeError('Expected substring')\n }\n\n while (index !== -1) {\n if (index === expected) {\n if (++count > max) {\n max = count\n }\n } else {\n count = 1\n }\n\n expected = index + substring.length\n index = source.indexOf(substring, expected)\n }\n\n return max\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Definition, Parents} from 'mdast'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\n\n/**\n * @param {Definition} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function definition(node, _, state, info) {\n const quote = checkQuote(state)\n const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n const exit = state.enter('definition')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('[')\n value += tracker.move(\n state.safe(state.associationId(node), {\n before: value,\n after: ']',\n ...tracker.current()\n })\n )\n value += tracker.move(']: ')\n\n subexit()\n\n if (\n // If there’s no url, or…\n !node.url ||\n // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter('destinationLiteral')\n value += tracker.move('<')\n value += tracker.move(\n state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n )\n value += tracker.move('>')\n } else {\n // No whitespace, raw is prettier.\n subexit = state.enter('destinationRaw')\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? ' ' : '\\n',\n ...tracker.current()\n })\n )\n }\n\n subexit()\n\n if (node.title) {\n subexit = state.enter(`title${suffix}`)\n value += tracker.move(' ' + quote)\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n )\n value += tracker.move(quote)\n subexit()\n }\n\n exit()\n\n return value\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Heading, Parents} from 'mdast'\n */\n\nimport {encodeCharacterReference} from '../util/encode-character-reference.js'\nimport {formatHeadingAsSetext} from '../util/format-heading-as-setext.js'\n\n/**\n * @param {Heading} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function heading(node, _, state, info) {\n const rank = Math.max(Math.min(6, node.depth || 1), 1)\n const tracker = state.createTracker(info)\n\n if (formatHeadingAsSetext(node, state)) {\n const exit = state.enter('headingSetext')\n const subexit = state.enter('phrasing')\n const value = state.containerPhrasing(node, {\n ...tracker.current(),\n before: '\\n',\n after: '\\n'\n })\n subexit()\n exit()\n\n return (\n value +\n '\\n' +\n (rank === 1 ? '=' : '-').repeat(\n // The whole size…\n value.length -\n // Minus the position of the character after the last EOL (or\n // 0 if there is none)…\n (Math.max(value.lastIndexOf('\\r'), value.lastIndexOf('\\n')) + 1)\n )\n )\n }\n\n const sequence = '#'.repeat(rank)\n const exit = state.enter('headingAtx')\n const subexit = state.enter('phrasing')\n\n // Note: for proper tracking, we should reset the output positions when there\n // is no content returned, because then the space is not output.\n // Practically, in that case, there is no content, so it doesn’t matter that\n // we’ve tracked one too many characters.\n tracker.move(sequence + ' ')\n\n let value = state.containerPhrasing(node, {\n before: '# ',\n after: '\\n',\n ...tracker.current()\n })\n\n if (/^[\\t ]/.test(value)) {\n // To do: what effect has the character reference on tracking?\n value = encodeCharacterReference(value.charCodeAt(0)) + value.slice(1)\n }\n\n value = value ? sequence + ' ' + value : sequence\n\n if (state.options.closeAtx) {\n value += ' ' + sequence\n }\n\n subexit()\n exit()\n\n return value\n}\n","/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Heading} from 'mdast'\n */\n\nimport {EXIT, visit} from 'unist-util-visit'\nimport {toString} from 'mdast-util-to-string'\n\n/**\n * @param {Heading} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatHeadingAsSetext(node, state) {\n let literalWithBreak = false\n\n // Look for literals with a line break.\n // Note that this also\n visit(node, function (node) {\n if (\n ('value' in node && /\\r?\\n|\\r/.test(node.value)) ||\n node.type === 'break'\n ) {\n literalWithBreak = true\n return EXIT\n }\n })\n\n return Boolean(\n (!node.depth || node.depth < 3) &&\n toString(node) &&\n (state.options.setext || literalWithBreak)\n )\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {List, Parents} from 'mdast'\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkBulletOther} from '../util/check-bullet-other.js'\nimport {checkBulletOrdered} from '../util/check-bullet-ordered.js'\nimport {checkRule} from '../util/check-rule.js'\n\n/**\n * @param {List} node\n * @param {Parents | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function list(node, parent, state, info) {\n const exit = state.enter('list')\n const bulletCurrent = state.bulletCurrent\n /** @type {string} */\n let bullet = node.ordered ? checkBulletOrdered(state) : checkBullet(state)\n /** @type {string} */\n const bulletOther = node.ordered\n ? bullet === '.'\n ? ')'\n : '.'\n : checkBulletOther(state)\n let useDifferentMarker =\n parent && state.bulletLastUsed ? bullet === state.bulletLastUsed : false\n\n if (!node.ordered) {\n const firstListItem = node.children ? node.children[0] : undefined\n\n // If there’s an empty first list item directly in two list items,\n // we have to use a different bullet:\n //\n // ```markdown\n // * - *\n // ```\n //\n // …because otherwise it would become one big thematic break.\n if (\n // Bullet could be used as a thematic break marker:\n (bullet === '*' || bullet === '-') &&\n // Empty first list item:\n firstListItem &&\n (!firstListItem.children || !firstListItem.children[0]) &&\n // Directly in two other list items:\n state.stack[state.stack.length - 1] === 'list' &&\n state.stack[state.stack.length - 2] === 'listItem' &&\n state.stack[state.stack.length - 3] === 'list' &&\n state.stack[state.stack.length - 4] === 'listItem' &&\n // That are each the first child.\n state.indexStack[state.indexStack.length - 1] === 0 &&\n state.indexStack[state.indexStack.length - 2] === 0 &&\n state.indexStack[state.indexStack.length - 3] === 0\n ) {\n useDifferentMarker = true\n }\n\n // If there’s a thematic break at the start of the first list item,\n // we have to use a different bullet:\n //\n // ```markdown\n // * ---\n // ```\n //\n // …because otherwise it would become one big thematic break.\n if (checkRule(state) === bullet && firstListItem) {\n let index = -1\n\n while (++index < node.children.length) {\n const item = node.children[index]\n\n if (\n item &&\n item.type === 'listItem' &&\n item.children &&\n item.children[0] &&\n item.children[0].type === 'thematicBreak'\n ) {\n useDifferentMarker = true\n break\n }\n }\n }\n }\n\n if (useDifferentMarker) {\n bullet = bulletOther\n }\n\n state.bulletCurrent = bullet\n const value = state.containerFlow(node, info)\n state.bulletLastUsed = bullet\n state.bulletCurrent = bulletCurrent\n exit()\n return value\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkBulletOrdered(state) {\n const marker = state.options.bulletOrdered || '.'\n\n if (marker !== '.' && marker !== ')') {\n throw new Error(\n 'Cannot serialize items with `' +\n marker +\n '` for `options.bulletOrdered`, expected `.` or `)`'\n )\n }\n\n return marker\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\nimport {checkBullet} from './check-bullet.js'\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkBulletOther(state) {\n const bullet = checkBullet(state)\n const bulletOther = state.options.bulletOther\n\n if (!bulletOther) {\n return bullet === '*' ? '-' : '*'\n }\n\n if (bulletOther !== '*' && bulletOther !== '+' && bulletOther !== '-') {\n throw new Error(\n 'Cannot serialize items with `' +\n bulletOther +\n '` for `options.bulletOther`, expected `*`, `+`, or `-`'\n )\n }\n\n if (bulletOther === bullet) {\n throw new Error(\n 'Expected `bullet` (`' +\n bullet +\n '`) and `bulletOther` (`' +\n bulletOther +\n '`) to be different'\n )\n }\n\n return bulletOther\n}\n","/**\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n * @import {ListItem, Parents} from 'mdast'\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkListItemIndent} from '../util/check-list-item-indent.js'\n\n/**\n * @param {ListItem} node\n * @param {Parents | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function listItem(node, parent, state, info) {\n const listItemIndent = checkListItemIndent(state)\n let bullet = state.bulletCurrent || checkBullet(state)\n\n // Add the marker value for ordered lists.\n if (parent && parent.type === 'list' && parent.ordered) {\n bullet =\n (typeof parent.start === 'number' && parent.start > -1\n ? parent.start\n : 1) +\n (state.options.incrementListMarker === false\n ? 0\n : parent.children.indexOf(node)) +\n bullet\n }\n\n let size = bullet.length + 1\n\n if (\n listItemIndent === 'tab' ||\n (listItemIndent === 'mixed' &&\n ((parent && parent.type === 'list' && parent.spread) || node.spread))\n ) {\n size = Math.ceil(size / 4) * 4\n }\n\n const tracker = state.createTracker(info)\n tracker.move(bullet + ' '.repeat(size - bullet.length))\n tracker.shift(size)\n const exit = state.enter('listItem')\n const value = state.indentLines(\n state.containerFlow(node, tracker.current()),\n map\n )\n exit()\n\n return value\n\n /** @type {Map} */\n function map(line, index, blank) {\n if (index) {\n return (blank ? '' : ' '.repeat(size)) + line\n }\n\n return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line\n }\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkListItemIndent(state) {\n const style = state.options.listItemIndent || 'one'\n\n if (style !== 'tab' && style !== 'one' && style !== 'mixed') {\n throw new Error(\n 'Cannot serialize items with `' +\n style +\n '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'\n )\n }\n\n return style\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Paragraph, Parents} from 'mdast'\n */\n\n/**\n * @param {Paragraph} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function paragraph(node, _, state, info) {\n const exit = state.enter('paragraph')\n const subexit = state.enter('phrasing')\n const value = state.containerPhrasing(node, info)\n subexit()\n exit()\n return value\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Root} from 'mdast'\n */\n\nimport {phrasing} from 'mdast-util-phrasing'\n\n/**\n * @param {Root} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function root(node, _, state, info) {\n // Note: `html` nodes are ambiguous.\n const hasPhrasing = node.children.some(function (d) {\n return phrasing(d)\n })\n\n const container = hasPhrasing ? state.containerPhrasing : state.containerFlow\n return container.call(state, node, info)\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Text} from 'mdast'\n */\n\n/**\n * @param {Text} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function text(node, _, state, info) {\n return state.safe(node.value, info)\n}\n","/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Parents, ThematicBreak} from 'mdast'\n */\n\nimport {checkRuleRepetition} from '../util/check-rule-repetition.js'\nimport {checkRule} from '../util/check-rule.js'\n\n/**\n * @param {ThematicBreak} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nexport function thematicBreak(_, _1, state) {\n const value = (\n checkRule(state) + (state.options.ruleSpaces ? ' ' : '')\n ).repeat(checkRuleRepetition(state))\n\n return state.options.ruleSpaces ? value.slice(0, -1) : value\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkRuleRepetition(state) {\n const repetition = state.options.ruleRepetition || 3\n\n if (repetition < 3) {\n throw new Error(\n 'Cannot serialize rules with repetition `' +\n repetition +\n '` for `options.ruleRepetition`, expected `3` or more'\n )\n }\n\n return repetition\n}\n","/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('mdast').TableRow} TableRow\n *\n * @typedef {import('markdown-table').Options} MarkdownTableOptions\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').State} State\n * @typedef {import('mdast-util-to-markdown').Info} Info\n */\n\n/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [tableCellPadding=true]\n * Whether to add a space of padding between delimiters and cells (default:\n * `true`).\n * @property {boolean | null | undefined} [tablePipeAlign=true]\n * Whether to align the delimiters (default: `true`).\n * @property {MarkdownTableOptions['stringLength'] | null | undefined} [stringLength]\n * Function to detect the length of table cell content, used when aligning\n * the delimiters between cells (optional).\n */\n\nimport {ok as assert} from 'devlop'\nimport {markdownTable} from 'markdown-table'\nimport {defaultHandlers} from 'mdast-util-to-markdown'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM tables in\n * markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown` to enable GFM tables.\n */\nexport function gfmTableFromMarkdown() {\n return {\n enter: {\n table: enterTable,\n tableData: enterCell,\n tableHeader: enterCell,\n tableRow: enterRow\n },\n exit: {\n codeText: exitCodeText,\n table: exitTable,\n tableData: exit,\n tableHeader: exit,\n tableRow: exit\n }\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterTable(token) {\n const align = token._align\n assert(align, 'expected `_align` on table')\n this.enter(\n {\n type: 'table',\n align: align.map(function (d) {\n return d === 'none' ? null : d\n }),\n children: []\n },\n token\n )\n this.data.inTable = true\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitTable(token) {\n this.exit(token)\n this.data.inTable = undefined\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterRow(token) {\n this.enter({type: 'tableRow', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exit(token) {\n this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterCell(token) {\n this.enter({type: 'tableCell', children: []}, token)\n}\n\n// Overwrite the default code text data handler to unescape escaped pipes when\n// they are in tables.\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCodeText(token) {\n let value = this.resume()\n\n if (this.data.inTable) {\n value = value.replace(/\\\\([\\\\|])/g, replace)\n }\n\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'inlineCode')\n node.value = value\n this.exit(token)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @returns {string}\n */\nfunction replace($0, $1) {\n // Pipes work, backslashes don’t (but can’t escape pipes).\n return $1 === '|' ? $1 : $0\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM tables in\n * markdown.\n *\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM tables.\n */\nexport function gfmTableToMarkdown(options) {\n const settings = options || {}\n const padding = settings.tableCellPadding\n const alignDelimiters = settings.tablePipeAlign\n const stringLength = settings.stringLength\n const around = padding ? ' ' : '|'\n\n return {\n unsafe: [\n {character: '\\r', inConstruct: 'tableCell'},\n {character: '\\n', inConstruct: 'tableCell'},\n // A pipe, when followed by a tab or space (padding), or a dash or colon\n // (unpadded delimiter row), could result in a table.\n {atBreak: true, character: '|', after: '[\\t :-]'},\n // A pipe in a cell must be encoded.\n {character: '|', inConstruct: 'tableCell'},\n // A colon must be followed by a dash, in which case it could start a\n // delimiter row.\n {atBreak: true, character: ':', after: '-'},\n // A delimiter row can also start with a dash, when followed by more\n // dashes, a colon, or a pipe.\n // This is a stricter version than the built in check for lists, thematic\n // breaks, and setex heading underlines though:\n // \n {atBreak: true, character: '-', after: '[:|-]'}\n ],\n handlers: {\n inlineCode: inlineCodeWithTable,\n table: handleTable,\n tableCell: handleTableCell,\n tableRow: handleTableRow\n }\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {Table} node\n */\n function handleTable(node, _, state, info) {\n return serializeData(handleTableAsData(node, state, info), node.align)\n }\n\n /**\n * This function isn’t really used normally, because we handle rows at the\n * table level.\n * But, if someone passes in a table row, this ensures we make somewhat sense.\n *\n * @type {ToMarkdownHandle}\n * @param {TableRow} node\n */\n function handleTableRow(node, _, state, info) {\n const row = handleTableRowAsData(node, state, info)\n const value = serializeData([row])\n // `markdown-table` will always add an align row\n return value.slice(0, value.indexOf('\\n'))\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {TableCell} node\n */\n function handleTableCell(node, _, state, info) {\n const exit = state.enter('tableCell')\n const subexit = state.enter('phrasing')\n const value = state.containerPhrasing(node, {\n ...info,\n before: around,\n after: around\n })\n subexit()\n exit()\n return value\n }\n\n /**\n * @param {Array>} matrix\n * @param {Array | null | undefined} [align]\n */\n function serializeData(matrix, align) {\n return markdownTable(matrix, {\n align,\n // @ts-expect-error: `markdown-table` types should support `null`.\n alignDelimiters,\n // @ts-expect-error: `markdown-table` types should support `null`.\n padding,\n // @ts-expect-error: `markdown-table` types should support `null`.\n stringLength\n })\n }\n\n /**\n * @param {Table} node\n * @param {State} state\n * @param {Info} info\n */\n function handleTableAsData(node, state, info) {\n const children = node.children\n let index = -1\n /** @type {Array>} */\n const result = []\n const subexit = state.enter('table')\n\n while (++index < children.length) {\n result[index] = handleTableRowAsData(children[index], state, info)\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @param {TableRow} node\n * @param {State} state\n * @param {Info} info\n */\n function handleTableRowAsData(node, state, info) {\n const children = node.children\n let index = -1\n /** @type {Array} */\n const result = []\n const subexit = state.enter('tableRow')\n\n while (++index < children.length) {\n // Note: the positional info as used here is incorrect.\n // Making it correct would be impossible due to aligning cells?\n // And it would need copy/pasting `markdown-table` into this project.\n result[index] = handleTableCell(children[index], node, state, info)\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {InlineCode} node\n */\n function inlineCodeWithTable(node, parent, state) {\n let value = defaultHandlers.inlineCode(node, parent, state)\n\n if (state.stack.includes('tableCell')) {\n value = value.replace(/\\|/g, '\\\\$&')\n }\n\n return value\n }\n}\n","/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\nimport {ok as assert} from 'devlop'\nimport {defaultHandlers} from 'mdast-util-to-markdown'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM task\n * list items in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown` to enable GFM task list items.\n */\nexport function gfmTaskListItemFromMarkdown() {\n return {\n exit: {\n taskListCheckValueChecked: exitCheck,\n taskListCheckValueUnchecked: exitCheck,\n paragraph: exitParagraphWithTaskListItem\n }\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM task list\n * items in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM task list items.\n */\nexport function gfmTaskListItemToMarkdown() {\n return {\n unsafe: [{atBreak: true, character: '-', after: '[:|-]'}],\n handlers: {listItem: listItemWithTaskListItem}\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCheck(token) {\n // We’re always in a paragraph, in a list item.\n const node = this.stack[this.stack.length - 2]\n assert(node.type === 'listItem')\n node.checked = token.type === 'taskListCheckValueChecked'\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitParagraphWithTaskListItem(token) {\n const parent = this.stack[this.stack.length - 2]\n\n if (\n parent &&\n parent.type === 'listItem' &&\n typeof parent.checked === 'boolean'\n ) {\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'paragraph')\n const head = node.children[0]\n\n if (head && head.type === 'text') {\n const siblings = parent.children\n let index = -1\n /** @type {Paragraph | undefined} */\n let firstParaghraph\n\n while (++index < siblings.length) {\n const sibling = siblings[index]\n if (sibling.type === 'paragraph') {\n firstParaghraph = sibling\n break\n }\n }\n\n if (firstParaghraph === node) {\n // Must start with a space or a tab.\n head.value = head.value.slice(1)\n\n if (head.value.length === 0) {\n node.children.shift()\n } else if (\n node.position &&\n head.position &&\n typeof head.position.start.offset === 'number'\n ) {\n head.position.start.column++\n head.position.start.offset++\n node.position.start = Object.assign({}, head.position.start)\n }\n }\n }\n }\n\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {ListItem} node\n */\nfunction listItemWithTaskListItem(node, parent, state, info) {\n const head = node.children[0]\n const checkable =\n typeof node.checked === 'boolean' && head && head.type === 'paragraph'\n const checkbox = '[' + (node.checked ? 'x' : ' ') + '] '\n const tracker = state.createTracker(info)\n\n if (checkable) {\n tracker.move(checkbox)\n }\n\n let value = defaultHandlers.listItem(node, parent, state, {\n ...info,\n ...tracker.current()\n })\n\n if (checkable) {\n value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n }\n\n return value\n\n /**\n * @param {string} $0\n * @returns {string}\n */\n function check($0) {\n return $0 + checkbox\n }\n}\n","/**\n * @import {Code, ConstructRecord, Event, Extension, Previous, State, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { asciiAlpha, asciiAlphanumeric, asciiControl, markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\nconst wwwPrefix = {\n tokenize: tokenizeWwwPrefix,\n partial: true\n};\nconst domain = {\n tokenize: tokenizeDomain,\n partial: true\n};\nconst path = {\n tokenize: tokenizePath,\n partial: true\n};\nconst trail = {\n tokenize: tokenizeTrail,\n partial: true\n};\nconst emailDomainDotTrail = {\n tokenize: tokenizeEmailDomainDotTrail,\n partial: true\n};\nconst wwwAutolink = {\n name: 'wwwAutolink',\n tokenize: tokenizeWwwAutolink,\n previous: previousWww\n};\nconst protocolAutolink = {\n name: 'protocolAutolink',\n tokenize: tokenizeProtocolAutolink,\n previous: previousProtocol\n};\nconst emailAutolink = {\n name: 'emailAutolink',\n tokenize: tokenizeEmailAutolink,\n previous: previousEmail\n};\n\n/** @type {ConstructRecord} */\nconst text = {};\n\n/**\n * Create an extension for `micromark` to support GitHub autolink literal\n * syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * autolink literal syntax.\n */\nexport function gfmAutolinkLiteral() {\n return {\n text\n };\n}\n\n/** @type {Code} */\nlet code = 48;\n\n// Add alphanumerics.\nwhile (code < 123) {\n text[code] = emailAutolink;\n code++;\n if (code === 58) code = 65;else if (code === 91) code = 97;\n}\ntext[43] = emailAutolink;\ntext[45] = emailAutolink;\ntext[46] = emailAutolink;\ntext[95] = emailAutolink;\ntext[72] = [emailAutolink, protocolAutolink];\ntext[104] = [emailAutolink, protocolAutolink];\ntext[87] = [emailAutolink, wwwAutolink];\ntext[119] = [emailAutolink, wwwAutolink];\n\n// To do: perform email autolink literals on events, afterwards.\n// That’s where `markdown-rs` and `cmark-gfm` perform it.\n// It should look for `@`, then for atext backwards, and then for a label\n// forwards.\n// To do: `mailto:`, `xmpp:` protocol as prefix.\n\n/**\n * Email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n const self = this;\n /** @type {boolean | undefined} */\n let dot;\n /** @type {boolean} */\n let data;\n return start;\n\n /**\n * Start of email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (!gfmAtext(code) || !previousEmail.call(self, self.previous) || previousUnbalanced(self.events)) {\n return nok(code);\n }\n effects.enter('literalAutolink');\n effects.enter('literalAutolinkEmail');\n return atext(code);\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function atext(code) {\n if (gfmAtext(code)) {\n effects.consume(code);\n return atext;\n }\n if (code === 64) {\n effects.consume(code);\n return emailDomain;\n }\n return nok(code);\n }\n\n /**\n * In email domain.\n *\n * The reference code is a bit overly complex as it handles the `@`, of which\n * there may be just one.\n * Source: \n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomain(code) {\n // Dot followed by alphanumerical (not `-` or `_`).\n if (code === 46) {\n return effects.check(emailDomainDotTrail, emailDomainAfter, emailDomainDot)(code);\n }\n\n // Alphanumerical, `-`, and `_`.\n if (code === 45 || code === 95 || asciiAlphanumeric(code)) {\n data = true;\n effects.consume(code);\n return emailDomain;\n }\n\n // To do: `/` if xmpp.\n\n // Note: normally we’d truncate trailing punctuation from the link.\n // However, email autolink literals cannot contain any of those markers,\n // except for `.`, but that can only occur if it isn’t trailing.\n // So we can ignore truncating!\n return emailDomainAfter(code);\n }\n\n /**\n * In email domain, on dot that is not a trail.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomainDot(code) {\n effects.consume(code);\n dot = true;\n return emailDomain;\n }\n\n /**\n * After email domain.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomainAfter(code) {\n // Domain must not be empty, must include a dot, and must end in alphabetical.\n // Source: .\n if (data && dot && asciiAlpha(self.previous)) {\n effects.exit('literalAutolinkEmail');\n effects.exit('literalAutolink');\n return ok(code);\n }\n return nok(code);\n }\n}\n\n/**\n * `www` autolink literal.\n *\n * ```markdown\n * > | a www.example.org b\n * ^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n const self = this;\n return wwwStart;\n\n /**\n * Start of www autolink literal.\n *\n * ```markdown\n * > | www.example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwStart(code) {\n if (code !== 87 && code !== 119 || !previousWww.call(self, self.previous) || previousUnbalanced(self.events)) {\n return nok(code);\n }\n effects.enter('literalAutolink');\n effects.enter('literalAutolinkWww');\n // Note: we *check*, so we can discard the `www.` we parsed.\n // If it worked, we consider it as a part of the domain.\n return effects.check(wwwPrefix, effects.attempt(domain, effects.attempt(path, wwwAfter), nok), nok)(code);\n }\n\n /**\n * After a www autolink literal.\n *\n * ```markdown\n * > | www.example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwAfter(code) {\n effects.exit('literalAutolinkWww');\n effects.exit('literalAutolink');\n return ok(code);\n }\n}\n\n/**\n * Protocol autolink literal.\n *\n * ```markdown\n * > | a https://example.org b\n * ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeProtocolAutolink(effects, ok, nok) {\n const self = this;\n let buffer = '';\n let seen = false;\n return protocolStart;\n\n /**\n * Start of protocol autolink literal.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function protocolStart(code) {\n if ((code === 72 || code === 104) && previousProtocol.call(self, self.previous) && !previousUnbalanced(self.events)) {\n effects.enter('literalAutolink');\n effects.enter('literalAutolinkHttp');\n buffer += String.fromCodePoint(code);\n effects.consume(code);\n return protocolPrefixInside;\n }\n return nok(code);\n }\n\n /**\n * In protocol.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^^^^^\n * ```\n *\n * @type {State}\n */\n function protocolPrefixInside(code) {\n // `5` is size of `https`\n if (asciiAlpha(code) && buffer.length < 5) {\n // @ts-expect-error: definitely number.\n buffer += String.fromCodePoint(code);\n effects.consume(code);\n return protocolPrefixInside;\n }\n if (code === 58) {\n const protocol = buffer.toLowerCase();\n if (protocol === 'http' || protocol === 'https') {\n effects.consume(code);\n return protocolSlashesInside;\n }\n }\n return nok(code);\n }\n\n /**\n * In slashes.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^^\n * ```\n *\n * @type {State}\n */\n function protocolSlashesInside(code) {\n if (code === 47) {\n effects.consume(code);\n if (seen) {\n return afterProtocol;\n }\n seen = true;\n return protocolSlashesInside;\n }\n return nok(code);\n }\n\n /**\n * After protocol, before domain.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function afterProtocol(code) {\n // To do: this is different from `markdown-rs`:\n // https://github.com/wooorm/markdown-rs/blob/b3a921c761309ae00a51fe348d8a43adbc54b518/src/construct/gfm_autolink_literal.rs#L172-L182\n return code === null || asciiControl(code) || markdownLineEndingOrSpace(code) || unicodeWhitespace(code) || unicodePunctuation(code) ? nok(code) : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code);\n }\n\n /**\n * After a protocol autolink literal.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function protocolAfter(code) {\n effects.exit('literalAutolinkHttp');\n effects.exit('literalAutolink');\n return ok(code);\n }\n}\n\n/**\n * `www` prefix.\n *\n * ```markdown\n * > | a www.example.org b\n * ^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwPrefix(effects, ok, nok) {\n let size = 0;\n return wwwPrefixInside;\n\n /**\n * In www prefix.\n *\n * ```markdown\n * > | www.example.com\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function wwwPrefixInside(code) {\n if ((code === 87 || code === 119) && size < 3) {\n size++;\n effects.consume(code);\n return wwwPrefixInside;\n }\n if (code === 46 && size === 3) {\n effects.consume(code);\n return wwwPrefixAfter;\n }\n return nok(code);\n }\n\n /**\n * After www prefix.\n *\n * ```markdown\n * > | www.example.com\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwPrefixAfter(code) {\n // If there is *anything*, we can link.\n return code === null ? nok(code) : ok(code);\n }\n}\n\n/**\n * Domain.\n *\n * ```markdown\n * > | a https://example.org b\n * ^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDomain(effects, ok, nok) {\n /** @type {boolean | undefined} */\n let underscoreInLastSegment;\n /** @type {boolean | undefined} */\n let underscoreInLastLastSegment;\n /** @type {boolean | undefined} */\n let seen;\n return domainInside;\n\n /**\n * In domain.\n *\n * ```markdown\n * > | https://example.com/a\n * ^^^^^^^^^^^\n * ```\n *\n * @type {State}\n */\n function domainInside(code) {\n // Check whether this marker, which is a trailing punctuation\n // marker, optionally followed by more trailing markers, and then\n // followed by an end.\n if (code === 46 || code === 95) {\n return effects.check(trail, domainAfter, domainAtPunctuation)(code);\n }\n\n // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n // occur, which sounds like ASCII only, but they also support `www.點看.com`,\n // so that’s Unicode.\n // Instead of some new production for Unicode alphanumerics, markdown\n // already has that for Unicode punctuation and whitespace, so use those.\n // Source: .\n if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code) || code !== 45 && unicodePunctuation(code)) {\n return domainAfter(code);\n }\n seen = true;\n effects.consume(code);\n return domainInside;\n }\n\n /**\n * In domain, at potential trailing punctuation, that was not trailing.\n *\n * ```markdown\n * > | https://example.com\n * ^\n * ```\n *\n * @type {State}\n */\n function domainAtPunctuation(code) {\n // There is an underscore in the last segment of the domain\n if (code === 95) {\n underscoreInLastSegment = true;\n }\n // Otherwise, it’s a `.`: save the last segment underscore in the\n // penultimate segment slot.\n else {\n underscoreInLastLastSegment = underscoreInLastSegment;\n underscoreInLastSegment = undefined;\n }\n effects.consume(code);\n return domainInside;\n }\n\n /**\n * After domain.\n *\n * ```markdown\n * > | https://example.com/a\n * ^\n * ```\n *\n * @type {State} */\n function domainAfter(code) {\n // Note: that’s GH says a dot is needed, but it’s not true:\n // \n if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n return nok(code);\n }\n return ok(code);\n }\n}\n\n/**\n * Path.\n *\n * ```markdown\n * > | a https://example.org/stuff b\n * ^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePath(effects, ok) {\n let sizeOpen = 0;\n let sizeClose = 0;\n return pathInside;\n\n /**\n * In path.\n *\n * ```markdown\n * > | https://example.com/a\n * ^^\n * ```\n *\n * @type {State}\n */\n function pathInside(code) {\n if (code === 40) {\n sizeOpen++;\n effects.consume(code);\n return pathInside;\n }\n\n // To do: `markdown-rs` also needs this.\n // If this is a paren, and there are less closings than openings,\n // we don’t check for a trail.\n if (code === 41 && sizeClose < sizeOpen) {\n return pathAtPunctuation(code);\n }\n\n // Check whether this trailing punctuation marker is optionally\n // followed by more trailing markers, and then followed\n // by an end.\n if (code === 33 || code === 34 || code === 38 || code === 39 || code === 41 || code === 42 || code === 44 || code === 46 || code === 58 || code === 59 || code === 60 || code === 63 || code === 93 || code === 95 || code === 126) {\n return effects.check(trail, ok, pathAtPunctuation)(code);\n }\n if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n return ok(code);\n }\n effects.consume(code);\n return pathInside;\n }\n\n /**\n * In path, at potential trailing punctuation, that was not trailing.\n *\n * ```markdown\n * > | https://example.com/a\"b\n * ^\n * ```\n *\n * @type {State}\n */\n function pathAtPunctuation(code) {\n // Count closing parens.\n if (code === 41) {\n sizeClose++;\n }\n effects.consume(code);\n return pathInside;\n }\n}\n\n/**\n * Trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the entire trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | https://example.com\").\n * ^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTrail(effects, ok, nok) {\n return trail;\n\n /**\n * In trail of domain or path.\n *\n * ```markdown\n * > | https://example.com\").\n * ^\n * ```\n *\n * @type {State}\n */\n function trail(code) {\n // Regular trailing punctuation.\n if (code === 33 || code === 34 || code === 39 || code === 41 || code === 42 || code === 44 || code === 46 || code === 58 || code === 59 || code === 63 || code === 95 || code === 126) {\n effects.consume(code);\n return trail;\n }\n\n // `&` followed by one or more alphabeticals and then a `;`, is\n // as a whole considered as trailing punctuation.\n // In all other cases, it is considered as continuation of the URL.\n if (code === 38) {\n effects.consume(code);\n return trailCharacterReferenceStart;\n }\n\n // Needed because we allow literals after `[`, as we fix:\n // .\n // Check that it is not followed by `(` or `[`.\n if (code === 93) {\n effects.consume(code);\n return trailBracketAfter;\n }\n if (\n // `<` is an end.\n code === 60 ||\n // So is whitespace.\n code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n return ok(code);\n }\n return nok(code);\n }\n\n /**\n * In trail, after `]`.\n *\n * > 👉 **Note**: this deviates from `cmark-gfm` to fix a bug.\n * > See end of for more.\n *\n * ```markdown\n * > | https://example.com](\n * ^\n * ```\n *\n * @type {State}\n */\n function trailBracketAfter(code) {\n // Whitespace or something that could start a resource or reference is the end.\n // Switch back to trail otherwise.\n if (code === null || code === 40 || code === 91 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n return ok(code);\n }\n return trail(code);\n }\n\n /**\n * In character-reference like trail, after `&`.\n *\n * ```markdown\n * > | https://example.com&).\n * ^\n * ```\n *\n * @type {State}\n */\n function trailCharacterReferenceStart(code) {\n // When non-alpha, it’s not a trail.\n return asciiAlpha(code) ? trailCharacterReferenceInside(code) : nok(code);\n }\n\n /**\n * In character-reference like trail.\n *\n * ```markdown\n * > | https://example.com&).\n * ^\n * ```\n *\n * @type {State}\n */\n function trailCharacterReferenceInside(code) {\n // Switch back to trail if this is well-formed.\n if (code === 59) {\n effects.consume(code);\n return trail;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n return trailCharacterReferenceInside;\n }\n\n // It’s not a trail.\n return nok(code);\n }\n}\n\n/**\n * Dot in email domain trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | contact@example.org.\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailDomainDotTrail(effects, ok, nok) {\n return start;\n\n /**\n * Dot.\n *\n * ```markdown\n * > | contact@example.org.\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Must be dot.\n effects.consume(code);\n return after;\n }\n\n /**\n * After dot.\n *\n * ```markdown\n * > | contact@example.org.\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Not a trail if alphanumeric.\n return asciiAlphanumeric(code) ? nok(code) : ok(code);\n }\n}\n\n/**\n * See:\n * .\n *\n * @type {Previous}\n */\nfunction previousWww(code) {\n return code === null || code === 40 || code === 42 || code === 95 || code === 91 || code === 93 || code === 126 || markdownLineEndingOrSpace(code);\n}\n\n/**\n * See:\n * .\n *\n * @type {Previous}\n */\nfunction previousProtocol(code) {\n return !asciiAlpha(code);\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previousEmail(code) {\n // Do not allow a slash “inside” atext.\n // The reference code is a bit weird, but that’s what it results in.\n // Source: .\n // Other than slash, every preceding character is allowed.\n return !(code === 47 || gfmAtext(code));\n}\n\n/**\n * @param {Code} code\n * @returns {boolean}\n */\nfunction gfmAtext(code) {\n return code === 43 || code === 45 || code === 46 || code === 95 || asciiAlphanumeric(code);\n}\n\n/**\n * @param {Array} events\n * @returns {boolean}\n */\nfunction previousUnbalanced(events) {\n let index = events.length;\n let result = false;\n while (index--) {\n const token = events[index][1];\n if ((token.type === 'labelLink' || token.type === 'labelImage') && !token._balanced) {\n result = true;\n break;\n }\n\n // If we’ve seen this token, and it was marked as not having any unbalanced\n // bracket before it, we can exit.\n if (token._gfmAutolinkLiteralWalkedInto) {\n result = false;\n break;\n }\n }\n if (events.length > 0 && !result) {\n // Mark the last token as “walked into” w/o finding\n // anything.\n events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true;\n }\n return result;\n}","/**\n * @import {Event, Exiter, Extension, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { blankLine } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nconst indent = {\n tokenize: tokenizeIndent,\n partial: true\n};\n\n// To do: micromark should support a `_hiddenGfmFootnoteSupport`, which only\n// affects label start (image).\n// That will let us drop `tokenizePotentialGfmFootnote*`.\n// It currently has a `_hiddenFootnoteSupport`, which affects that and more.\n// That can be removed when `micromark-extension-footnote` is archived.\n\n/**\n * Create an extension for `micromark` to enable GFM footnote syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to\n * enable GFM footnote syntax.\n */\nexport function gfmFootnote() {\n /** @type {Extension} */\n return {\n document: {\n [91]: {\n name: 'gfmFootnoteDefinition',\n tokenize: tokenizeDefinitionStart,\n continuation: {\n tokenize: tokenizeDefinitionContinuation\n },\n exit: gfmFootnoteDefinitionEnd\n }\n },\n text: {\n [91]: {\n name: 'gfmFootnoteCall',\n tokenize: tokenizeGfmFootnoteCall\n },\n [93]: {\n name: 'gfmPotentialFootnoteCall',\n add: 'after',\n tokenize: tokenizePotentialGfmFootnoteCall,\n resolveTo: resolveToPotentialGfmFootnoteCall\n }\n }\n };\n}\n\n// To do: remove after micromark update.\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n const self = this;\n let index = self.events.length;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n /** @type {Token} */\n let labelStart;\n\n // Find an opening.\n while (index--) {\n const token = self.events[index][1];\n if (token.type === \"labelImage\") {\n labelStart = token;\n break;\n }\n\n // Exit if we’ve walked far enough.\n if (token.type === 'gfmFootnoteCall' || token.type === \"labelLink\" || token.type === \"label\" || token.type === \"image\" || token.type === \"link\") {\n break;\n }\n }\n return start;\n\n /**\n * @type {State}\n */\n function start(code) {\n if (!labelStart || !labelStart._balanced) {\n return nok(code);\n }\n const id = normalizeIdentifier(self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n }));\n if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n return nok(code);\n }\n effects.enter('gfmFootnoteCallLabelMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteCallLabelMarker');\n return ok(code);\n }\n}\n\n// To do: remove after micromark update.\n/** @type {Resolver} */\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n let index = events.length;\n /** @type {Token | undefined} */\n let labelStart;\n\n // Find an opening.\n while (index--) {\n if (events[index][1].type === \"labelImage\" && events[index][0] === 'enter') {\n labelStart = events[index][1];\n break;\n }\n }\n // Change the `labelImageMarker` to a `data`.\n events[index + 1][1].type = \"data\";\n events[index + 3][1].type = 'gfmFootnoteCallLabelMarker';\n\n // The whole (without `!`):\n /** @type {Token} */\n const call = {\n type: 'gfmFootnoteCall',\n start: Object.assign({}, events[index + 3][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n };\n // The `^` marker\n /** @type {Token} */\n const marker = {\n type: 'gfmFootnoteCallMarker',\n start: Object.assign({}, events[index + 3][1].end),\n end: Object.assign({}, events[index + 3][1].end)\n };\n // Increment the end 1 character.\n marker.end.column++;\n marker.end.offset++;\n marker.end._bufferIndex++;\n /** @type {Token} */\n const string = {\n type: 'gfmFootnoteCallString',\n start: Object.assign({}, marker.end),\n end: Object.assign({}, events[events.length - 1][1].start)\n };\n /** @type {Token} */\n const chunk = {\n type: \"chunkString\",\n contentType: 'string',\n start: Object.assign({}, string.start),\n end: Object.assign({}, string.end)\n };\n\n /** @type {Array} */\n const replacement = [\n // Take the `labelImageMarker` (now `data`, the `!`)\n events[index + 1], events[index + 2], ['enter', call, context],\n // The `[`\n events[index + 3], events[index + 4],\n // The `^`.\n ['enter', marker, context], ['exit', marker, context],\n // Everything in between.\n ['enter', string, context], ['enter', chunk, context], ['exit', chunk, context], ['exit', string, context],\n // The ending (`]`, properly parsed and labelled).\n events[events.length - 2], events[events.length - 1], ['exit', call, context]];\n events.splice(index, events.length - index + 1, ...replacement);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n const self = this;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n let size = 0;\n /** @type {boolean} */\n let data;\n\n // Note: the implementation of `markdown-rs` is different, because it houses\n // core *and* extensions in one project.\n // Therefore, it can include footnote logic inside `label-end`.\n // We can’t do that, but luckily, we can parse footnotes in a simpler way than\n // needed for labels.\n return start;\n\n /**\n * Start of footnote label.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('gfmFootnoteCall');\n effects.enter('gfmFootnoteCallLabelMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteCallLabelMarker');\n return callStart;\n }\n\n /**\n * After `[`, at `^`.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function callStart(code) {\n if (code !== 94) return nok(code);\n effects.enter('gfmFootnoteCallMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteCallMarker');\n effects.enter('gfmFootnoteCallString');\n effects.enter('chunkString').contentType = 'string';\n return callData;\n }\n\n /**\n * In label.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function callData(code) {\n if (\n // Too long.\n size > 999 ||\n // Closing brace with nothing.\n code === 93 && !data ||\n // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code === null || code === 91 || markdownLineEndingOrSpace(code)) {\n return nok(code);\n }\n if (code === 93) {\n effects.exit('chunkString');\n const token = effects.exit('gfmFootnoteCallString');\n if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {\n return nok(code);\n }\n effects.enter('gfmFootnoteCallLabelMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteCallLabelMarker');\n effects.exit('gfmFootnoteCall');\n return ok;\n }\n if (!markdownLineEndingOrSpace(code)) {\n data = true;\n }\n size++;\n effects.consume(code);\n return code === 92 ? callEscape : callData;\n }\n\n /**\n * On character after escape.\n *\n * ```markdown\n * > | a [^b\\c] d\n * ^\n * ```\n *\n * @type {State}\n */\n function callEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code);\n size++;\n return callData;\n }\n return callData(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n const self = this;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n /** @type {string} */\n let identifier;\n let size = 0;\n /** @type {boolean | undefined} */\n let data;\n return start;\n\n /**\n * Start of GFM footnote definition.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('gfmFootnoteDefinition')._container = true;\n effects.enter('gfmFootnoteDefinitionLabel');\n effects.enter('gfmFootnoteDefinitionLabelMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteDefinitionLabelMarker');\n return labelAtMarker;\n }\n\n /**\n * In label, at caret.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAtMarker(code) {\n if (code === 94) {\n effects.enter('gfmFootnoteDefinitionMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteDefinitionMarker');\n effects.enter('gfmFootnoteDefinitionLabelString');\n effects.enter('chunkString').contentType = 'string';\n return labelInside;\n }\n return nok(code);\n }\n\n /**\n * In label.\n *\n * > 👉 **Note**: `cmark-gfm` prevents whitespace from occurring in footnote\n * > definition labels.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (\n // Too long.\n size > 999 ||\n // Closing brace with nothing.\n code === 93 && !data ||\n // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code === null || code === 91 || markdownLineEndingOrSpace(code)) {\n return nok(code);\n }\n if (code === 93) {\n effects.exit('chunkString');\n const token = effects.exit('gfmFootnoteDefinitionLabelString');\n identifier = normalizeIdentifier(self.sliceSerialize(token));\n effects.enter('gfmFootnoteDefinitionLabelMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteDefinitionLabelMarker');\n effects.exit('gfmFootnoteDefinitionLabel');\n return labelAfter;\n }\n if (!markdownLineEndingOrSpace(code)) {\n data = true;\n }\n size++;\n effects.consume(code);\n return code === 92 ? labelEscape : labelInside;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * > 👉 **Note**: `cmark-gfm` currently does not support escaped brackets:\n * > \n *\n * ```markdown\n * > | [^a\\*b]: c\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code);\n size++;\n return labelInside;\n }\n return labelInside(code);\n }\n\n /**\n * After definition label.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAfter(code) {\n if (code === 58) {\n effects.enter('definitionMarker');\n effects.consume(code);\n effects.exit('definitionMarker');\n if (!defined.includes(identifier)) {\n defined.push(identifier);\n }\n\n // Any whitespace after the marker is eaten, forming indented code\n // is not possible.\n // No space is also fine, just like a block quote marker.\n return factorySpace(effects, whitespaceAfter, 'gfmFootnoteDefinitionWhitespace');\n }\n return nok(code);\n }\n\n /**\n * After definition prefix.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function whitespaceAfter(code) {\n // `markdown-rs` has a wrapping token for the prefix that is closed here.\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n /// Start of footnote definition continuation.\n ///\n /// ```markdown\n /// | [^a]: b\n /// > | c\n /// ^\n /// ```\n //\n // Either a blank line, which is okay, or an indented thing.\n return effects.check(blankLine, ok, effects.attempt(indent, ok, nok));\n}\n\n/** @type {Exiter} */\nfunction gfmFootnoteDefinitionEnd(effects) {\n effects.exit('gfmFootnoteDefinition');\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this;\n return factorySpace(effects, afterPrefix, 'gfmFootnoteDefinitionIndent', 4 + 1);\n\n /**\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === 'gfmFootnoteDefinitionIndent' && tail[2].sliceSerialize(tail[1], true).length === 4 ? ok(code) : nok(code);\n }\n}","/**\n * @import {Options} from 'micromark-extension-gfm-strikethrough'\n * @import {Event, Extension, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create an extension for `micromark` to enable GFM strikethrough syntax.\n *\n * @param {Options | null | undefined} [options={}]\n * Configuration.\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions`, to\n * enable GFM strikethrough syntax.\n */\nexport function gfmStrikethrough(options) {\n const options_ = options || {};\n let single = options_.singleTilde;\n const tokenizer = {\n name: 'strikethrough',\n tokenize: tokenizeStrikethrough,\n resolveAll: resolveAllStrikethrough\n };\n if (single === null || single === undefined) {\n single = true;\n }\n return {\n text: {\n [126]: tokenizer\n },\n insideSpan: {\n null: [tokenizer]\n },\n attentionMarkers: {\n null: [126]\n }\n };\n\n /**\n * Take events and resolve strikethrough.\n *\n * @type {Resolver}\n */\n function resolveAllStrikethrough(events, context) {\n let index = -1;\n\n // Walk through all events.\n while (++index < events.length) {\n // Find a token that can close.\n if (events[index][0] === 'enter' && events[index][1].type === 'strikethroughSequenceTemporary' && events[index][1]._close) {\n let open = index;\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (events[open][0] === 'exit' && events[open][1].type === 'strikethroughSequenceTemporary' && events[open][1]._open &&\n // If the sizes are the same:\n events[index][1].end.offset - events[index][1].start.offset === events[open][1].end.offset - events[open][1].start.offset) {\n events[index][1].type = 'strikethroughSequence';\n events[open][1].type = 'strikethroughSequence';\n\n /** @type {Token} */\n const strikethrough = {\n type: 'strikethrough',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[index][1].end)\n };\n\n /** @type {Token} */\n const text = {\n type: 'strikethroughText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n };\n\n // Opening.\n /** @type {Array} */\n const nextEvents = [['enter', strikethrough, context], ['enter', events[open][1], context], ['exit', events[open][1], context], ['enter', text, context]];\n const insideSpan = context.parser.constructs.insideSpan.null;\n if (insideSpan) {\n // Between.\n splice(nextEvents, nextEvents.length, 0, resolveAll(insideSpan, events.slice(open + 1, index), context));\n }\n\n // Closing.\n splice(nextEvents, nextEvents.length, 0, [['exit', text, context], ['enter', events[index][1], context], ['exit', events[index][1], context], ['exit', strikethrough, context]]);\n splice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - 2;\n break;\n }\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === 'strikethroughSequenceTemporary') {\n events[index][1].type = \"data\";\n }\n }\n return events;\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeStrikethrough(effects, ok, nok) {\n const previous = this.previous;\n const events = this.events;\n let size = 0;\n return start;\n\n /** @type {State} */\n function start(code) {\n if (previous === 126 && events[events.length - 1][1].type !== \"characterEscape\") {\n return nok(code);\n }\n effects.enter('strikethroughSequenceTemporary');\n return more(code);\n }\n\n /** @type {State} */\n function more(code) {\n const before = classifyCharacter(previous);\n if (code === 126) {\n // If this is the third marker, exit.\n if (size > 1) return nok(code);\n effects.consume(code);\n size++;\n return more;\n }\n if (size < 2 && !single) return nok(code);\n const token = effects.exit('strikethroughSequenceTemporary');\n const after = classifyCharacter(code);\n token._open = !after || after === 2 && Boolean(before);\n token._close = !before || before === 2 && Boolean(after);\n return ok(code);\n }\n }\n}","/**\n * @import {Event} from 'micromark-util-types'\n */\n\n// Port of `edit_map.rs` from `markdown-rs`.\n// This should move to `markdown-js` later.\n\n// Deal with several changes in events, batching them together.\n//\n// Preferably, changes should be kept to a minimum.\n// Sometimes, it’s needed to change the list of events, because parsing can be\n// messy, and it helps to expose a cleaner interface of events to the compiler\n// and other users.\n// It can also help to merge many adjacent similar events.\n// And, in other cases, it’s needed to parse subcontent: pass some events\n// through another tokenizer and inject the result.\n\n/**\n * @typedef {[number, number, Array]} Change\n * @typedef {[number, number, number]} Jump\n */\n\n/**\n * Tracks a bunch of edits.\n */\nexport class EditMap {\n /**\n * Create a new edit map.\n */\n constructor() {\n /**\n * Record of changes.\n *\n * @type {Array}\n */\n this.map = [];\n }\n\n /**\n * Create an edit: a remove and/or add at a certain place.\n *\n * @param {number} index\n * @param {number} remove\n * @param {Array} add\n * @returns {undefined}\n */\n add(index, remove, add) {\n addImplementation(this, index, remove, add);\n }\n\n // To do: add this when moving to `micromark`.\n // /**\n // * Create an edit: but insert `add` before existing additions.\n // *\n // * @param {number} index\n // * @param {number} remove\n // * @param {Array} add\n // * @returns {undefined}\n // */\n // addBefore(index, remove, add) {\n // addImplementation(this, index, remove, add, true)\n // }\n\n /**\n * Done, change the events.\n *\n * @param {Array} events\n * @returns {undefined}\n */\n consume(events) {\n this.map.sort(function (a, b) {\n return a[0] - b[0];\n });\n\n /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n if (this.map.length === 0) {\n return;\n }\n\n // To do: if links are added in events, like they are in `markdown-rs`,\n // this is needed.\n // // Calculate jumps: where items in the current list move to.\n // /** @type {Array} */\n // const jumps = []\n // let index = 0\n // let addAcc = 0\n // let removeAcc = 0\n // while (index < this.map.length) {\n // const [at, remove, add] = this.map[index]\n // removeAcc += remove\n // addAcc += add.length\n // jumps.push([at, removeAcc, addAcc])\n // index += 1\n // }\n //\n // . shiftLinks(events, jumps)\n\n let index = this.map.length;\n /** @type {Array>} */\n const vecs = [];\n while (index > 0) {\n index -= 1;\n vecs.push(events.slice(this.map[index][0] + this.map[index][1]), this.map[index][2]);\n\n // Truncate rest.\n events.length = this.map[index][0];\n }\n vecs.push([...events]);\n events.length = 0;\n let slice = vecs.pop();\n while (slice) {\n events.push(...slice);\n slice = vecs.pop();\n }\n\n // Truncate everything.\n this.map.length = 0;\n }\n}\n\n/**\n * Create an edit.\n *\n * @param {EditMap} editMap\n * @param {number} at\n * @param {number} remove\n * @param {Array} add\n * @returns {undefined}\n */\nfunction addImplementation(editMap, at, remove, add) {\n let index = 0;\n\n /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n if (remove === 0 && add.length === 0) {\n return;\n }\n while (index < editMap.map.length) {\n if (editMap.map[index][0] === at) {\n editMap.map[index][1] += remove;\n\n // To do: before not used by tables, use when moving to micromark.\n // if (before) {\n // add.push(...editMap.map[index][2])\n // editMap.map[index][2] = add\n // } else {\n editMap.map[index][2].push(...add);\n // }\n\n return;\n }\n index += 1;\n }\n editMap.map.push([at, remove, add]);\n}\n\n// /**\n// * Shift `previous` and `next` links according to `jumps`.\n// *\n// * This fixes links in case there are events removed or added between them.\n// *\n// * @param {Array} events\n// * @param {Array} jumps\n// */\n// function shiftLinks(events, jumps) {\n// let jumpIndex = 0\n// let index = 0\n// let add = 0\n// let rm = 0\n\n// while (index < events.length) {\n// const rmCurr = rm\n\n// while (jumpIndex < jumps.length && jumps[jumpIndex][0] <= index) {\n// add = jumps[jumpIndex][2]\n// rm = jumps[jumpIndex][1]\n// jumpIndex += 1\n// }\n\n// // Ignore items that will be removed.\n// if (rm > rmCurr) {\n// index += rm - rmCurr\n// } else {\n// // ?\n// // if let Some(link) = &events[index].link {\n// // if let Some(next) = link.next {\n// // events[next].link.as_mut().unwrap().previous = Some(index + add - rm);\n// // while jumpIndex < jumps.len() && jumps[jumpIndex].0 <= next {\n// // add = jumps[jumpIndex].2;\n// // rm = jumps[jumpIndex].1;\n// // jumpIndex += 1;\n// // }\n// // events[index].link.as_mut().unwrap().next = Some(next + add - rm);\n// // index = next;\n// // continue;\n// // }\n// // }\n// index += 1\n// }\n// }\n// }","/**\n * @import {Event} from 'micromark-util-types'\n */\n\n/**\n * @typedef {'center' | 'left' | 'none' | 'right'} Align\n */\n\n/**\n * Figure out the alignment of a GFM table.\n *\n * @param {Readonly>} events\n * List of events.\n * @param {number} index\n * Table enter event.\n * @returns {Array}\n * List of aligns.\n */\nexport function gfmTableAlign(events, index) {\n let inDelimiterRow = false;\n /** @type {Array} */\n const align = [];\n while (index < events.length) {\n const event = events[index];\n if (inDelimiterRow) {\n if (event[0] === 'enter') {\n // Start of alignment value: set a new column.\n // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n if (event[1].type === 'tableContent') {\n align.push(events[index + 1][1].type === 'tableDelimiterMarker' ? 'left' : 'none');\n }\n }\n // Exits:\n // End of alignment value: change the column.\n // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n else if (event[1].type === 'tableContent') {\n if (events[index - 1][1].type === 'tableDelimiterMarker') {\n const alignIndex = align.length - 1;\n align[alignIndex] = align[alignIndex] === 'left' ? 'center' : 'right';\n }\n }\n // Done!\n else if (event[1].type === 'tableDelimiterRow') {\n break;\n }\n } else if (event[0] === 'enter' && event[1].type === 'tableDelimiterRow') {\n inDelimiterRow = true;\n }\n index += 1;\n }\n return align;\n}","/**\n * @import {Event, Extension, Point, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\n/**\n * @typedef {[number, number, number, number]} Range\n * Cell info.\n *\n * @typedef {0 | 1 | 2 | 3} RowKind\n * Where we are: `1` for head row, `2` for delimiter row, `3` for body row.\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\nimport { EditMap } from './edit-map.js';\nimport { gfmTableAlign } from './infer.js';\n\n/**\n * Create an HTML extension for `micromark` to support GitHub tables syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * table syntax.\n */\nexport function gfmTable() {\n return {\n flow: {\n null: {\n name: 'table',\n tokenize: tokenizeTable,\n resolveAll: resolveTable\n }\n }\n };\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTable(effects, ok, nok) {\n const self = this;\n let size = 0;\n let sizeB = 0;\n /** @type {boolean | undefined} */\n let seen;\n return start;\n\n /**\n * Start of a GFM table.\n *\n * If there is a valid table row or table head before, then we try to parse\n * another row.\n * Otherwise, we try to parse a head.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * > | | b |\n * ^\n * ```\n * @type {State}\n */\n function start(code) {\n let index = self.events.length - 1;\n while (index > -1) {\n const type = self.events[index][1].type;\n if (type === \"lineEnding\" ||\n // Note: markdown-rs uses `whitespace` instead of `linePrefix`\n type === \"linePrefix\") index--;else break;\n }\n const tail = index > -1 ? self.events[index][1].type : null;\n const next = tail === 'tableHead' || tail === 'tableRow' ? bodyRowStart : headRowBefore;\n\n // Don’t allow lazy body rows.\n if (next === bodyRowStart && self.parser.lazy[self.now().line]) {\n return nok(code);\n }\n return next(code);\n }\n\n /**\n * Before table head row.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowBefore(code) {\n effects.enter('tableHead');\n effects.enter('tableRow');\n return headRowStart(code);\n }\n\n /**\n * Before table head row, after whitespace.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowStart(code) {\n if (code === 124) {\n return headRowBreak(code);\n }\n\n // To do: micromark-js should let us parse our own whitespace in extensions,\n // like `markdown-rs`:\n //\n // ```js\n // // 4+ spaces.\n // if (markdownSpace(code)) {\n // return nok(code)\n // }\n // ```\n\n seen = true;\n // Count the first character, that isn’t a pipe, double.\n sizeB += 1;\n return headRowBreak(code);\n }\n\n /**\n * At break in table head row.\n *\n * ```markdown\n * > | | a |\n * ^\n * ^\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowBreak(code) {\n if (code === null) {\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n // If anything other than one pipe (ignoring whitespace) was used, it’s fine.\n if (sizeB > 1) {\n sizeB = 0;\n // To do: check if this works.\n // Feel free to interrupt:\n self.interrupt = true;\n effects.exit('tableRow');\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return headDelimiterStart;\n }\n\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code);\n }\n if (markdownSpace(code)) {\n // To do: check if this is fine.\n // effects.attempt(State::Next(StateName::GfmTableHeadRowBreak), State::Nok)\n // State::Retry(space_or_tab(tokenizer))\n return factorySpace(effects, headRowBreak, \"whitespace\")(code);\n }\n sizeB += 1;\n if (seen) {\n seen = false;\n // Header cell count.\n size += 1;\n }\n if (code === 124) {\n effects.enter('tableCellDivider');\n effects.consume(code);\n effects.exit('tableCellDivider');\n // Whether a delimiter was seen.\n seen = true;\n return headRowBreak;\n }\n\n // Anything else is cell data.\n effects.enter(\"data\");\n return headRowData(code);\n }\n\n /**\n * In table head row data.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowData(code) {\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit(\"data\");\n return headRowBreak(code);\n }\n effects.consume(code);\n return code === 92 ? headRowEscape : headRowData;\n }\n\n /**\n * In table head row escape.\n *\n * ```markdown\n * > | | a\\-b |\n * ^\n * | | ---- |\n * | | c |\n * ```\n *\n * @type {State}\n */\n function headRowEscape(code) {\n if (code === 92 || code === 124) {\n effects.consume(code);\n return headRowData;\n }\n return headRowData(code);\n }\n\n /**\n * Before delimiter row.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headDelimiterStart(code) {\n // Reset `interrupt`.\n self.interrupt = false;\n\n // Note: in `markdown-rs`, we need to handle piercing here too.\n if (self.parser.lazy[self.now().line]) {\n return nok(code);\n }\n effects.enter('tableDelimiterRow');\n // Track if we’ve seen a `:` or `|`.\n seen = false;\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterBefore, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n }\n return headDelimiterBefore(code);\n }\n\n /**\n * Before delimiter row, after optional whitespace.\n *\n * Reused when a `|` is found later, to parse another cell.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headDelimiterBefore(code) {\n if (code === 45 || code === 58) {\n return headDelimiterValueBefore(code);\n }\n if (code === 124) {\n seen = true;\n // If we start with a pipe, we open a cell marker.\n effects.enter('tableCellDivider');\n effects.consume(code);\n effects.exit('tableCellDivider');\n return headDelimiterCellBefore;\n }\n\n // More whitespace / empty row not allowed at start.\n return headDelimiterNok(code);\n }\n\n /**\n * After `|`, before delimiter cell.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterCellBefore(code) {\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterValueBefore, \"whitespace\")(code);\n }\n return headDelimiterValueBefore(code);\n }\n\n /**\n * Before delimiter cell value.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterValueBefore(code) {\n // Align: left.\n if (code === 58) {\n sizeB += 1;\n seen = true;\n effects.enter('tableDelimiterMarker');\n effects.consume(code);\n effects.exit('tableDelimiterMarker');\n return headDelimiterLeftAlignmentAfter;\n }\n\n // Align: none.\n if (code === 45) {\n sizeB += 1;\n // To do: seems weird that this *isn’t* left aligned, but that state is used?\n return headDelimiterLeftAlignmentAfter(code);\n }\n if (code === null || markdownLineEnding(code)) {\n return headDelimiterCellAfter(code);\n }\n return headDelimiterNok(code);\n }\n\n /**\n * After delimiter cell left alignment marker.\n *\n * ```markdown\n * | | a |\n * > | | :- |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterLeftAlignmentAfter(code) {\n if (code === 45) {\n effects.enter('tableDelimiterFiller');\n return headDelimiterFiller(code);\n }\n\n // Anything else is not ok after the left-align colon.\n return headDelimiterNok(code);\n }\n\n /**\n * In delimiter cell filler.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterFiller(code) {\n if (code === 45) {\n effects.consume(code);\n return headDelimiterFiller;\n }\n\n // Align is `center` if it was `left`, `right` otherwise.\n if (code === 58) {\n seen = true;\n effects.exit('tableDelimiterFiller');\n effects.enter('tableDelimiterMarker');\n effects.consume(code);\n effects.exit('tableDelimiterMarker');\n return headDelimiterRightAlignmentAfter;\n }\n effects.exit('tableDelimiterFiller');\n return headDelimiterRightAlignmentAfter(code);\n }\n\n /**\n * After delimiter cell right alignment marker.\n *\n * ```markdown\n * | | a |\n * > | | -: |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterRightAlignmentAfter(code) {\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterCellAfter, \"whitespace\")(code);\n }\n return headDelimiterCellAfter(code);\n }\n\n /**\n * After delimiter cell.\n *\n * ```markdown\n * | | a |\n * > | | -: |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterCellAfter(code) {\n if (code === 124) {\n return headDelimiterBefore(code);\n }\n if (code === null || markdownLineEnding(code)) {\n // Exit when:\n // * there was no `:` or `|` at all (it’s a thematic break or setext\n // underline instead)\n // * the header cell count is not the delimiter cell count\n if (!seen || size !== sizeB) {\n return headDelimiterNok(code);\n }\n\n // Note: in markdown-rs`, a reset is needed here.\n effects.exit('tableDelimiterRow');\n effects.exit('tableHead');\n // To do: in `markdown-rs`, resolvers need to be registered manually.\n // effects.register_resolver(ResolveName::GfmTable)\n return ok(code);\n }\n return headDelimiterNok(code);\n }\n\n /**\n * In delimiter row, at a disallowed byte.\n *\n * ```markdown\n * | | a |\n * > | | x |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterNok(code) {\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code);\n }\n\n /**\n * Before table body row.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowStart(code) {\n // Note: in `markdown-rs` we need to manually take care of a prefix,\n // but in `micromark-js` that is done for us, so if we’re here, we’re\n // never at whitespace.\n effects.enter('tableRow');\n return bodyRowBreak(code);\n }\n\n /**\n * At break in table body row.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ^\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowBreak(code) {\n if (code === 124) {\n effects.enter('tableCellDivider');\n effects.consume(code);\n effects.exit('tableCellDivider');\n return bodyRowBreak;\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('tableRow');\n return ok(code);\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, bodyRowBreak, \"whitespace\")(code);\n }\n\n // Anything else is cell content.\n effects.enter(\"data\");\n return bodyRowData(code);\n }\n\n /**\n * In table body row data.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowData(code) {\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit(\"data\");\n return bodyRowBreak(code);\n }\n effects.consume(code);\n return code === 92 ? bodyRowEscape : bodyRowData;\n }\n\n /**\n * In table body row escape.\n *\n * ```markdown\n * | | a |\n * | | ---- |\n * > | | b\\-c |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowEscape(code) {\n if (code === 92 || code === 124) {\n effects.consume(code);\n return bodyRowData;\n }\n return bodyRowData(code);\n }\n}\n\n/** @type {Resolver} */\n\nfunction resolveTable(events, context) {\n let index = -1;\n let inFirstCellAwaitingPipe = true;\n /** @type {RowKind} */\n let rowKind = 0;\n /** @type {Range} */\n let lastCell = [0, 0, 0, 0];\n /** @type {Range} */\n let cell = [0, 0, 0, 0];\n let afterHeadAwaitingFirstBodyRow = false;\n let lastTableEnd = 0;\n /** @type {Token | undefined} */\n let currentTable;\n /** @type {Token | undefined} */\n let currentBody;\n /** @type {Token | undefined} */\n let currentCell;\n const map = new EditMap();\n while (++index < events.length) {\n const event = events[index];\n const token = event[1];\n if (event[0] === 'enter') {\n // Start of head.\n if (token.type === 'tableHead') {\n afterHeadAwaitingFirstBodyRow = false;\n\n // Inject previous (body end and) table end.\n if (lastTableEnd !== 0) {\n flushTableEnd(map, context, lastTableEnd, currentTable, currentBody);\n currentBody = undefined;\n lastTableEnd = 0;\n }\n\n // Inject table start.\n currentTable = {\n type: 'table',\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n };\n map.add(index, 0, [['enter', currentTable, context]]);\n } else if (token.type === 'tableRow' || token.type === 'tableDelimiterRow') {\n inFirstCellAwaitingPipe = true;\n currentCell = undefined;\n lastCell = [0, 0, 0, 0];\n cell = [0, index + 1, 0, 0];\n\n // Inject table body start.\n if (afterHeadAwaitingFirstBodyRow) {\n afterHeadAwaitingFirstBodyRow = false;\n currentBody = {\n type: 'tableBody',\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n };\n map.add(index, 0, [['enter', currentBody, context]]);\n }\n rowKind = token.type === 'tableDelimiterRow' ? 2 : currentBody ? 3 : 1;\n }\n // Cell data.\n else if (rowKind && (token.type === \"data\" || token.type === 'tableDelimiterMarker' || token.type === 'tableDelimiterFiller')) {\n inFirstCellAwaitingPipe = false;\n\n // First value in cell.\n if (cell[2] === 0) {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(map, context, lastCell, rowKind, undefined, currentCell);\n lastCell = [0, 0, 0, 0];\n }\n cell[2] = index;\n }\n } else if (token.type === 'tableCellDivider') {\n if (inFirstCellAwaitingPipe) {\n inFirstCellAwaitingPipe = false;\n } else {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(map, context, lastCell, rowKind, undefined, currentCell);\n }\n lastCell = cell;\n cell = [lastCell[1], index, 0, 0];\n }\n }\n }\n // Exit events.\n else if (token.type === 'tableHead') {\n afterHeadAwaitingFirstBodyRow = true;\n lastTableEnd = index;\n } else if (token.type === 'tableRow' || token.type === 'tableDelimiterRow') {\n lastTableEnd = index;\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(map, context, lastCell, rowKind, index, currentCell);\n } else if (cell[1] !== 0) {\n currentCell = flushCell(map, context, cell, rowKind, index, currentCell);\n }\n rowKind = 0;\n } else if (rowKind && (token.type === \"data\" || token.type === 'tableDelimiterMarker' || token.type === 'tableDelimiterFiller')) {\n cell[3] = index;\n }\n }\n if (lastTableEnd !== 0) {\n flushTableEnd(map, context, lastTableEnd, currentTable, currentBody);\n }\n map.consume(context.events);\n\n // To do: move this into `html`, when events are exposed there.\n // That’s what `markdown-rs` does.\n // That needs updates to `mdast-util-gfm-table`.\n index = -1;\n while (++index < context.events.length) {\n const event = context.events[index];\n if (event[0] === 'enter' && event[1].type === 'table') {\n event[1]._align = gfmTableAlign(context.events, index);\n }\n }\n return events;\n}\n\n/**\n * Generate a cell.\n *\n * @param {EditMap} map\n * @param {Readonly} context\n * @param {Readonly} range\n * @param {RowKind} rowKind\n * @param {number | undefined} rowEnd\n * @param {Token | undefined} previousCell\n * @returns {Token | undefined}\n */\n// eslint-disable-next-line max-params\nfunction flushCell(map, context, range, rowKind, rowEnd, previousCell) {\n // `markdown-rs` uses:\n // rowKind === 2 ? 'tableDelimiterCell' : 'tableCell'\n const groupName = rowKind === 1 ? 'tableHeader' : rowKind === 2 ? 'tableDelimiter' : 'tableData';\n // `markdown-rs` uses:\n // rowKind === 2 ? 'tableDelimiterCellValue' : 'tableCellText'\n const valueName = 'tableContent';\n\n // Insert an exit for the previous cell, if there is one.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- exit\n // ^^^^-- this cell\n // ```\n if (range[0] !== 0) {\n previousCell.end = Object.assign({}, getPoint(context.events, range[0]));\n map.add(range[0], 0, [['exit', previousCell, context]]);\n }\n\n // Insert enter of this cell.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- enter\n // ^^^^-- this cell\n // ```\n const now = getPoint(context.events, range[1]);\n previousCell = {\n type: groupName,\n start: Object.assign({}, now),\n // Note: correct end is set later.\n end: Object.assign({}, now)\n };\n map.add(range[1], 0, [['enter', previousCell, context]]);\n\n // Insert text start at first data start and end at last data end, and\n // remove events between.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- enter\n // ^-- exit\n // ^^^^-- this cell\n // ```\n if (range[2] !== 0) {\n const relatedStart = getPoint(context.events, range[2]);\n const relatedEnd = getPoint(context.events, range[3]);\n /** @type {Token} */\n const valueToken = {\n type: valueName,\n start: Object.assign({}, relatedStart),\n end: Object.assign({}, relatedEnd)\n };\n map.add(range[2], 0, [['enter', valueToken, context]]);\n if (rowKind !== 2) {\n // Fix positional info on remaining events\n const start = context.events[range[2]];\n const end = context.events[range[3]];\n start[1].end = Object.assign({}, end[1].end);\n start[1].type = \"chunkText\";\n start[1].contentType = \"text\";\n\n // Remove if needed.\n if (range[3] > range[2] + 1) {\n const a = range[2] + 1;\n const b = range[3] - range[2] - 1;\n map.add(a, b, []);\n }\n }\n map.add(range[3] + 1, 0, [['exit', valueToken, context]]);\n }\n\n // Insert an exit for the last cell, if at the row end.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- exit\n // ^^^^^^-- this cell (the last one contains two “between” parts)\n // ```\n if (rowEnd !== undefined) {\n previousCell.end = Object.assign({}, getPoint(context.events, rowEnd));\n map.add(rowEnd, 0, [['exit', previousCell, context]]);\n previousCell = undefined;\n }\n return previousCell;\n}\n\n/**\n * Generate table end (and table body end).\n *\n * @param {Readonly} map\n * @param {Readonly} context\n * @param {number} index\n * @param {Token} table\n * @param {Token | undefined} tableBody\n */\n// eslint-disable-next-line max-params\nfunction flushTableEnd(map, context, index, table, tableBody) {\n /** @type {Array} */\n const exits = [];\n const related = getPoint(context.events, index);\n if (tableBody) {\n tableBody.end = Object.assign({}, related);\n exits.push(['exit', tableBody, context]);\n }\n table.end = Object.assign({}, related);\n exits.push(['exit', table, context]);\n map.add(index + 1, 0, exits);\n}\n\n/**\n * @param {Readonly>} events\n * @param {number} index\n * @returns {Readonly}\n */\nfunction getPoint(events, index) {\n const event = events[index];\n const side = event[0] === 'enter' ? 'start' : 'end';\n return event[1][side];\n}","/**\n * @import {Extension, State, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\nconst tasklistCheck = {\n name: 'tasklistCheck',\n tokenize: tokenizeTasklistCheck\n};\n\n/**\n * Create an HTML extension for `micromark` to support GFM task list items\n * syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `htmlExtensions` to\n * support GFM task list items when serializing to HTML.\n */\nexport function gfmTaskListItem() {\n return {\n text: {\n [91]: tasklistCheck\n }\n };\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n const self = this;\n return open;\n\n /**\n * At start of task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (\n // Exit if there’s stuff before.\n self.previous !== null ||\n // Exit if not in the first content that is the first child of a list\n // item.\n !self._gfmTasklistFirstContentOfListItem) {\n return nok(code);\n }\n effects.enter('taskListCheck');\n effects.enter('taskListCheckMarker');\n effects.consume(code);\n effects.exit('taskListCheckMarker');\n return inside;\n }\n\n /**\n * In task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // Currently we match how GH works in files.\n // To match how GH works in comments, use `markdownSpace` (`[\\t ]`) instead\n // of `markdownLineEndingOrSpace` (`[\\t\\n\\r ]`).\n if (markdownLineEndingOrSpace(code)) {\n effects.enter('taskListCheckValueUnchecked');\n effects.consume(code);\n effects.exit('taskListCheckValueUnchecked');\n return close;\n }\n if (code === 88 || code === 120) {\n effects.enter('taskListCheckValueChecked');\n effects.consume(code);\n effects.exit('taskListCheckValueChecked');\n return close;\n }\n return nok(code);\n }\n\n /**\n * At close of task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function close(code) {\n if (code === 93) {\n effects.enter('taskListCheckMarker');\n effects.consume(code);\n effects.exit('taskListCheckMarker');\n effects.exit('taskListCheck');\n return after;\n }\n return nok(code);\n }\n\n /**\n * @type {State}\n */\n function after(code) {\n // EOL in paragraph means there must be something else after it.\n if (markdownLineEnding(code)) {\n return ok(code);\n }\n\n // Space or tab?\n // Check what comes after.\n if (markdownSpace(code)) {\n return effects.check({\n tokenize: spaceThenNonSpace\n }, ok, nok)(code);\n }\n\n // EOF, or non-whitespace, both wrong.\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction spaceThenNonSpace(effects, ok, nok) {\n return factorySpace(effects, after, \"whitespace\");\n\n /**\n * After whitespace, after task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // EOF means there was nothing, so bad.\n // EOL means there’s content after it, so good.\n // Impossible to have more spaces.\n // Anything else is good.\n return code === null ? nok(code) : ok(code);\n }\n}","/// \n/// \n\n/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-gfm').Options} MdastOptions\n * @typedef {import('micromark-extension-gfm').Options} MicromarkOptions\n * @typedef {import('unified').Processor} Processor\n */\n\n/**\n * @typedef {MicromarkOptions & MdastOptions} Options\n * Configuration.\n */\n\nimport {gfmFromMarkdown, gfmToMarkdown} from 'mdast-util-gfm'\nimport {gfm} from 'micromark-extension-gfm'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Add support GFM (autolink literals, footnotes, strikethrough, tables,\n * tasklists).\n *\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkGfm(options) {\n // @ts-expect-error: TS is wrong about `this`.\n // eslint-disable-next-line unicorn/no-this-assignment\n const self = /** @type {Processor} */ (this)\n const settings = options || emptyOptions\n const data = self.data()\n\n const micromarkExtensions =\n data.micromarkExtensions || (data.micromarkExtensions = [])\n const fromMarkdownExtensions =\n data.fromMarkdownExtensions || (data.fromMarkdownExtensions = [])\n const toMarkdownExtensions =\n data.toMarkdownExtensions || (data.toMarkdownExtensions = [])\n\n micromarkExtensions.push(gfm(settings))\n fromMarkdownExtensions.push(gfmFromMarkdown())\n toMarkdownExtensions.push(gfmToMarkdown(settings))\n}\n","/**\n * @typedef {import('micromark-extension-gfm-footnote').HtmlOptions} HtmlOptions\n * @typedef {import('micromark-extension-gfm-strikethrough').Options} Options\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {\n combineExtensions,\n combineHtmlExtensions\n} from 'micromark-util-combine-extensions'\nimport {\n gfmAutolinkLiteral,\n gfmAutolinkLiteralHtml\n} from 'micromark-extension-gfm-autolink-literal'\nimport {gfmFootnote, gfmFootnoteHtml} from 'micromark-extension-gfm-footnote'\nimport {\n gfmStrikethrough,\n gfmStrikethroughHtml\n} from 'micromark-extension-gfm-strikethrough'\nimport {gfmTable, gfmTableHtml} from 'micromark-extension-gfm-table'\nimport {gfmTagfilterHtml} from 'micromark-extension-gfm-tagfilter'\nimport {\n gfmTaskListItem,\n gfmTaskListItemHtml\n} from 'micromark-extension-gfm-task-list-item'\n\n/**\n * Create an extension for `micromark` to enable GFM syntax.\n *\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n *\n * Passed to `micromark-extens-gfm-strikethrough`.\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * syntax.\n */\nexport function gfm(options) {\n return combineExtensions([\n gfmAutolinkLiteral(),\n gfmFootnote(),\n gfmStrikethrough(options),\n gfmTable(),\n gfmTaskListItem()\n ])\n}\n\n/**\n * Create an extension for `micromark` to support GFM when serializing to HTML.\n *\n * @param {HtmlOptions | null | undefined} [options]\n * Configuration (optional).\n *\n * Passed to `micromark-extens-gfm-footnote`.\n * @returns {HtmlExtension}\n * Extension for `micromark` that can be passed in `htmlExtensions` to\n * support GFM when serializing to HTML.\n */\nexport function gfmHtml(options) {\n return combineHtmlExtensions([\n gfmAutolinkLiteralHtml(),\n gfmFootnoteHtml(options),\n gfmStrikethroughHtml(),\n gfmTableHtml(),\n gfmTagfilterHtml(),\n gfmTaskListItemHtml()\n ])\n}\n","/**\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n/**\n * @typedef {import('mdast-util-gfm-table').Options} Options\n * Configuration.\n */\n\nimport {\n gfmAutolinkLiteralFromMarkdown,\n gfmAutolinkLiteralToMarkdown\n} from 'mdast-util-gfm-autolink-literal'\nimport {\n gfmFootnoteFromMarkdown,\n gfmFootnoteToMarkdown\n} from 'mdast-util-gfm-footnote'\nimport {\n gfmStrikethroughFromMarkdown,\n gfmStrikethroughToMarkdown\n} from 'mdast-util-gfm-strikethrough'\nimport {gfmTableFromMarkdown, gfmTableToMarkdown} from 'mdast-util-gfm-table'\nimport {\n gfmTaskListItemFromMarkdown,\n gfmTaskListItemToMarkdown\n} from 'mdast-util-gfm-task-list-item'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @returns {Array}\n * Extension for `mdast-util-from-markdown` to enable GFM (autolink literals,\n * footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmFromMarkdown() {\n return [\n gfmAutolinkLiteralFromMarkdown(),\n gfmFootnoteFromMarkdown(),\n gfmStrikethroughFromMarkdown(),\n gfmTableFromMarkdown(),\n gfmTaskListItemFromMarkdown()\n ]\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM (autolink literals,\n * footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmToMarkdown(options) {\n return {\n extensions: [\n gfmAutolinkLiteralToMarkdown(),\n gfmFootnoteToMarkdown(),\n gfmStrikethroughToMarkdown(),\n gfmTableToMarkdown(options),\n gfmTaskListItemToMarkdown()\n ]\n }\n}\n","import React, { useState, useEffect } from \"react\";\nimport ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\n\nexport default function MarkdownRenderer({ filePath }) {\n const [content, setContent] = useState(\"\");\n\n useEffect(() => {\n fetch(filePath)\n .then((response) => response.text())\n .then((text) => setContent(text))\n .catch((err) => console.error(\"Error loading markdown file:\", err));\n }, [filePath]);\n\n return (\n
\n \n
\n );\n}\n","import React from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport MarkdownRenderer from \"./MarkdownRenderer\";\nimport TopNavbar from \"../Nav/TopNavbar\";\nimport Footer from \"./Footer\";\n\nimport styled from \"styled-components\";\n\nexport default function BlogPage() {\n const { blogId } = useParams();\n const filePath = `/blogs/${blogId}.md`;\n\n return (\n\n <>\n \n
\n \n
\n
\n \n
\n
\n
\n

!^a