{"version":3,"file":"static/js/main.9c18070d.js","mappings":"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AAS,IAEJA,EAAQghB,EAAWhiB,QAAQ,CAClC,IAAMygB,EAAUuB,EAAWhhB,GAAO0kB,WAE9BjF,IAAYtD,EAAOpG,SAAS0J,KAC9B8C,EAAS9C,EAAQ8C,EAAQ7b,GACzByV,EAAO3b,KAAKif,GAEf,CAED,OAAO8C,CACR,oGCxBM,IAAM20D,EAA0B,CACrC,QACA,MACA,SACA,QACA,SACA,QACA,SACA,OACA,OACA,SACA,MACA,SACA,QACA,SACA,OACA,KACA,SACA,QACA,SACA,OACA,KACA,SACA,SACA,QACA,SACA,SACA,SACA,OACA,OACA,MACA,QACA,SACA,QACA,SACA,OACA,SACA,SACA,QACA,QACA,QACA,SACA,MACA,QACA,SACA,OACA,SACA,SACA,QACA,OACA,OACA,SACA,MACA,SACA,SACA,QACA,SACA,MACA,OACA,SACA,SACA,SACA,KACA,SACA,QACA,QACA,SACA,SACA,OACA,QACA,KACA,OACA,QACA,SACA,OACA,MACA,SACA,SACA,QACA,SACA,OACA,OACA,SACA,SACA,OACA,OACA,SACA,QACA,OACA,QACA,MACA,OACA,MACA,OACA,OACA,OACA,QACA,QACA,QACA,SACA,QACA,SACA,MACA,OACA,SACA,MACA,QC1GWC,EAA4B,CACvC,EAAG,SACH,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,UC1BA,SAASC,EAAU73C,GACxB,IAAM/lB,EACiB,kBAAd+lB,EAAyBA,EAAUjwB,WAAW,GAAKiwB,EAE5D,OAAO/lB,GAAQ,IAAMA,GAAQ,EAC9B,CCLM,SAAS69D,EAAc93C,GAC5B,IAAM/lB,EACiB,kBAAd+lB,EAAyBA,EAAUjwB,WAAW,G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","sources":["../../../../packages/react-router/lib/context.ts","../../../../packages/react-router/lib/router.ts","../../../../packages/react-router/lib/hooks.tsx","../../../../packages/react-router/lib/components.tsx","../../../../packages/react-router-dom/index.tsx","../../node_modules/@uiw/github-corners/src/index.ts","../../node_modules/@uiw/react-github-corners/src/index.tsx","../../node_modules/goober/dist/goober.modern.js","../../node_modules/react-hot-toast/src/core/types.ts","../../node_modules/react-hot-toast/src/core/utils.ts","../../node_modules/react-hot-toast/src/core/store.ts","../../node_modules/react-hot-toast/src/core/toast.ts","../../node_modules/react-hot-toast/src/core/use-toaster.ts","../../node_modules/react-hot-toast/src/components/error.tsx","../../node_modules/react-hot-toast/src/components/loader.tsx","../../node_modules/react-hot-toast/src/components/checkmark.tsx","../../node_modules/react-hot-toast/src/components/toast-icon.tsx","../../node_modules/react-hot-toast/src/components/toast-bar.tsx","../../node_modules/react-hot-toast/src/components/toaster.tsx","../../node_modules/react-hot-toast/src/index.ts","../../node_modules/unist-util-stringify-position/index.js","../../node_modules/vfile-message/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/bail/index.js","../../node_modules/unified/node_modules/is-plain-obj/index.js","../../node_modules/trough/index.js","../../node_modules/unified/lib/index.js","../../node_modules/mdast-util-to-string/index.js","../../node_modules/micromark/lib/initialize/content.js","../../node_modules/micromark/lib/initialize/document.js","../../node_modules/micromark/lib/initialize/flow.js","../../node_modules/micromark/lib/initialize/text.js","../../node_modules/micromark/lib/create-tokenizer.js","../../node_modules/micromark/lib/constructs.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/index.js","../../node_modules/remark-parse/lib/index.js","../../node_modules/unist-builder/index.js","../../node_modules/unist-util-is/index.js","../../node_modules/unist-util-visit-parents/index.js","../../node_modules/unist-util-visit/index.js","../../node_modules/unist-util-position/index.js","../../node_modules/mdast-util-definitions/index.js","../../node_modules/mdast-util-to-hast/lib/traverse.js","../../node_modules/micromark-util-sanitize-uri/index.js","../../node_modules/mdast-util-to-hast/lib/wrap.js","../../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.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.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/text.js","../../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../../node_modules/mdast-util-to-hast/lib/index.js","../../node_modules/unist-util-generated/index.js","../../node_modules/mdast-util-to-hast/lib/footer.js","../../node_modules/remark-rehype/lib/index.js","../../node_modules/react-markdown/lib/rehype-filter.js","../../node_modules/react-markdown/lib/uri-transformer.js","../../node_modules/hast-util-whitespace/index.js","../../node_modules/property-information/lib/hast-to-react.js","../../node_modules/react-markdown/lib/ast-to-react.js","../../node_modules/react-markdown/lib/react-markdown.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/index.js","../../node_modules/mdast-util-to-markdown/lib/util/association.js","../../node_modules/mdast-util-to-markdown/lib/util/track.js","../../node_modules/mdast-util-to-markdown/lib/util/container-flow.js","../../node_modules/mdast-util-to-markdown/lib/util/indent-lines.js","../../node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js","../../node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js","../../node_modules/mdast-util-to-markdown/lib/util/safe.js","../../node_modules/mdast-util-gfm-footnote/index.js","../../node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js","../../node_modules/mdast-util-gfm-strikethrough/index.js","../../node_modules/mdast-util-to-markdown/lib/handle/inline-code.js","../../node_modules/markdown-table/index.js","../../node_modules/mdast-util-gfm-table/lib/index.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/util/check-bullet.js","../../node_modules/mdast-util-gfm-task-list-item/index.js","../../node_modules/mdast-util-gfm/lib/index.js","../../node_modules/remark-gfm/index.js","../../node_modules/hast-util-has-property/index.js","../../node_modules/hast-util-heading-rank/index.js","../../node_modules/hast-util-to-string/index.js","../../node_modules/rehype-slug/index.js","../../node_modules/hast-util-is-element/index.js","../../node_modules/rehype-autolink-headings/lib/index.js","../../node_modules/hastscript/lib/svg.js","../../node_modules/hastscript/lib/svg-case-sensitive-tag-names.js","../../node_modules/web-namespaces/index.js","../../node_modules/hast-util-from-parse5/lib/index.js","../../node_modules/vfile-location/index.js","../../node_modules/hast-to-hyperscript/index.js","../../node_modules/zwitch/index.js","../../node_modules/hast-util-to-parse5/lib/index.js","../../node_modules/html-void-elements/index.js","../../node_modules/hast-util-raw/lib/index.js","../../node_modules/rehype-raw/index.js","../../node_modules/rehype-attr/src/utils.ts","../../node_modules/rehype-attr/src/index.ts","../../node_modules/rehype-ignore/src/index.ts","../../node_modules/unist-util-filter/index.js","../../src/generator.js","../../src/all.js","../../src/common.js","../../node_modules/direction/index.js","../../node_modules/hast-util-select/lib/util.js","../../node_modules/hast-util-select/lib/enter-state.js","../../node_modules/hast-util-select/lib/nest.js","../../node_modules/bcp-47-match/index.js","../../node_modules/hast-util-select/lib/pseudo.js","../../node_modules/hast-util-select/lib/attribute.js","../../node_modules/hast-util-select/lib/test.js","../../node_modules/hast-util-select/lib/name.js","../../node_modules/hast-util-select/lib/class-name.js","../../node_modules/hast-util-select/lib/id.js","../../node_modules/hast-util-select/lib/any.js","../https:/raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/parse.ts","../https:/raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/index.ts","../https:/raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/compile.ts","../../node_modules/hast-util-select/lib/parse.js","../../node_modules/hast-util-select/index.js","../../node_modules/rehype-rewrite/src/index.ts","../../node_modules/@uiw/react-markdown-preview/src/nodes/octiconLink.ts","../../node_modules/@uiw/react-markdown-preview/src/plugins/reservedMeta.ts","../../node_modules/@uiw/react-markdown-preview/src/index.tsx","../../node_modules/@uiw/react-markdown-preview/src/nodes/copy.ts","../../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","../../src/utils/interleave.js","../../src/utils/isPlainObject.js","../../src/utils/empties.js","../../src/utils/isFunction.js","../../src/utils/getComponentName.js","../../src/utils/isStyledComponent.js","../../src/constants.js","../../src/utils/error.js","../../src/sheet/GroupedTag.js","../../src/sheet/GroupIDAllocator.js","../../src/sheet/Rehydration.js","../../src/utils/nonce.js","../../src/sheet/dom.js","../../src/sheet/Tag.js","../../src/sheet/Sheet.js","../../src/utils/generateAlphabeticName.js","../../src/utils/hash.js","../../src/utils/isStaticRules.js","../../src/models/ComponentStyle.js","../../src/utils/stylis.js","../../src/utils/stylisPluginInsertRule.js","../../src/models/StyleSheetManager.js","../../src/models/Keyframes.js","../../src/utils/hyphenateStyleName.js","../../src/utils/flatten.js","../../src/utils/isStatelessFunction.js","../../src/utils/addUnitIfNeeded.js","../../src/constructors/css.js","../../src/utils/checkDynamicCreation.js","../../src/utils/determineTheme.js","../../src/utils/escape.js","../../src/utils/generateComponentId.js","../../src/utils/isTag.js","../../src/utils/mixinDeep.js","../../src/models/ThemeProvider.js","../../src/models/StyledComponent.js","../../src/utils/generateDisplayName.js","../../src/utils/joinStrings.js","../../src/utils/domElements.js","../../src/constructors/styled.js","../../src/constructors/constructWithOptions.js","../../src/models/GlobalStyle.js","../../src/models/ServerStyleSheet.js","../../src/constructors/keyframes.js","../../src/base.js","../../core/README.md","pages/Home.tsx","components/Search.tsx","data.ts","Layout.tsx","../../node_modules/react-keywords/src/index.tsx","components/IconCard.tsx","components/IconsList.tsx","pages/Search.tsx","pages/Icons.tsx","store/context.tsx","app.tsx","index.tsx","../../icons/sti/lib/STIGithub.js","../../icons/sti/lib/STITypescript.js","../../src/main.js","../../node_modules/@wcj/dark-mode/dist/dark-mode.min.js","../../node_modules/boolbase/index.js","../../node_modules/css-selector-parser/lib/index.js","../../node_modules/css-selector-parser/lib/parser-context.js","../../node_modules/css-selector-parser/lib/render.js","../../node_modules/css-selector-parser/lib/utils.js","../../node_modules/extend/index.js","../../node_modules/github-slugger/index.js","../../node_modules/github-slugger/regex.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/is-buffer/index.js","../../node_modules/mdurl/encode.js","../../node_modules/parse-numeric-range/index.js","../../node_modules/prop-types/factoryWithThrowingShims.js","../../node_modules/prop-types/index.js","../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../node_modules/react-is/cjs/react-is.production.min.js","../../node_modules/react-is/index.js","../../node_modules/react-lazy-load-image-component/build/index.js","../../node_modules/react-markdown/node_modules/react-is/cjs/react-is.production.min.js","../../node_modules/react-markdown/node_modules/react-is/index.js","../../node_modules/scheduler/cjs/scheduler.production.min.js","../../node_modules/scheduler/index.js","../../node_modules/shallowequal/index.js","../../node_modules/style-to-object/index.js","../../node_modules/comma-separated-tokens/index.js","../../node_modules/decode-named-character-reference/index.dom.js","../../node_modules/hast-util-parse-selector/index.js","../../node_modules/hastscript/lib/core.js","../../node_modules/hastscript/lib/html.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/syntax.js","../../node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js","../../node_modules/micromark-util-classify-character/index.js","../../node_modules/micromark-util-combine-extensions/index.js","../../node_modules/micromark-util-html-tag-name/index.js","../../node_modules/micromark-util-normalize-identifier/index.js","../../node_modules/micromark-util-resolve-all/index.js","../../node_modules/character-entities-legacy/index.js","../../node_modules/character-reference-invalid/index.js","../../node_modules/is-decimal/index.js","../../node_modules/is-hexadecimal/index.js","../../node_modules/is-alphanumerical/index.js","../../node_modules/is-alphabetical/index.js","../../node_modules/parse-entities/lib/index.js","../../node_modules/property-information/lib/util/schema.js","../../node_modules/property-information/lib/util/merge.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/normalize.js","../../node_modules/property-information/lib/util/defined-info.js","../../node_modules/property-information/lib/util/info.js","../../node_modules/property-information/lib/util/types.js","../../node_modules/space-separated-tokens/index.js","../webpack/bootstrap","../webpack/runtime/chunk loaded","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/jsonp chunk loading","../webpack/startup"],"sourcesContent":["import * as React from \"react\";\nimport type { History, Location } from \"history\";\nimport { Action as NavigationType } from \"history\";\n\nimport type { RouteMatch } from \"./router\";\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 type Navigator = Pick;\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\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\ninterface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n","import type { Location, Path, To } from \"history\";\nimport { parsePath } from \"history\";\n\nexport function invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n\nexport function warning(cond: any, message: string): void {\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 React Router!\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\nconst alreadyWarned: Record = {};\nexport function warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n\ntype ParamParseFailed = { failed: true };\n\ntype ParamParseSegment =\n // Check here if there exists a forward slash in the string.\n Segment extends `${infer LeftSegment}/${infer RightSegment}`\n ? // If there is a forward slash, then attempt to parse each side of the\n // forward slash.\n ParamParseSegment extends infer LeftResult\n ? ParamParseSegment extends infer RightResult\n ? LeftResult extends string\n ? // If the left side is successfully parsed as a param, then check if\n // the right side can be successfully parsed as well. If both sides\n // can be parsed, then the result is a union of the two sides\n // (read: \"foo\" | \"bar\").\n RightResult extends string\n ? LeftResult | RightResult\n : LeftResult\n : // If the left side is not successfully parsed as a param, then check\n // if only the right side can be successfully parse as a param. If it\n // can, then the result is just right, else it's a failure.\n RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If the left side didn't parse into a param, then just check the right\n // side.\n ParamParseSegment extends infer RightResult\n ? RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If there's no forward slash, then check if this segment starts with a\n // colon. If it does, then this is a dynamic segment, so the result is\n // just the remainder of the string. Otherwise, it's a failure.\n Segment extends `:${infer Remaining}`\n ? Remaining\n : ParamParseFailed;\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 ParamParseSegment extends string\n ? ParamParseSegment\n : string;\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 route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport interface RouteObject {\n caseSensitive?: boolean;\n children?: RouteObject[];\n element?: React.ReactNode;\n index?: boolean;\n path?: string;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/docs/en/v6/api#generatepath\n */\nexport function generatePath(path: string, params: Params = {}): string {\n return path\n .replace(/:(\\w+)/g, (_, key) => {\n invariant(params[key] != null, `Missing \":${key}\" param`);\n return params[key]!;\n })\n .replace(/\\/*\\*$/, (_) =>\n params[\"*\"] == null ? \"\" : params[\"*\"].replace(/^\\/*/, \"/\")\n );\n}\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface RouteMatch {\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: RouteObject;\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchroutes\n */\nexport function matchRoutes(\n routes: RouteObject[],\n locationArg: Partial | string,\n basename = \"/\"\n): RouteMatch[] | 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 matches = matchRouteBranch(branches[i], pathname);\n }\n\n return matches;\n}\n\ninterface RouteMeta {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObject;\n}\n\ninterface RouteBranch {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes(\n routes: RouteObject[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n routes.forEach((route, index) => {\n let meta: RouteMeta = {\n relativePath: route.path || \"\",\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 route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\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({ path, score: computeScore(path, route.index), routesMeta });\n });\n\n return branches;\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 branch: RouteBranch,\n pathname: string\n): RouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: RouteMatch[] = [];\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 if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n params: matchedParams,\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 * 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/docs/en/v6/api#matchpath\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, paramNames] = 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 = paramNames.reduce>(\n (memo, paramName, 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 memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\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 paramNames: string[] = [];\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(/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else {\n regexpSource += end\n ? \"\\\\/*$\" // When matching to the end, ignore trailing slashes\n : // Otherwise, match a word boundary or a proceeding /. The word boundary restricts\n // parent routes to matching only their own words and nothing more, e.g. parent\n // route \"/home\" should not match \"/home2\".\n // Additionally, allow paths starting with `.`, `-`, `~`, and url-encoded entities,\n // but do not consume the character in the matched path so they can match against\n // nested paths.\n \"(?:(?=[.~-]|%[0-9A-F]{2})|\\\\b|\\\\/|$)\";\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/docs/en/v6/api#resolvepath\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\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string\n): Path {\n let to = typeof toArg === \"string\" ? parsePath(toArg) : toArg;\n let toPathname = toArg === \"\" || to.pathname === \"\" ? \"/\" : to.pathname;\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 let from: string;\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\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 value had one.\n if (\n toPathname &&\n toPathname !== \"/\" &&\n toPathname.endsWith(\"/\") &&\n !path.pathname.endsWith(\"/\")\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\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\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 let nextChar = pathname.charAt(basename.length);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(basename.length) || \"/\";\n}\n\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\nconst normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\nconst normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n","import * as React from \"react\";\nimport type { Location, Path, To } from \"history\";\nimport { Action as NavigationType, parsePath } from \"history\";\n\nimport { LocationContext, NavigationContext, RouteContext } from \"./context\";\nimport type {\n ParamParseKey,\n Params,\n PathMatch,\n PathPattern,\n RouteMatch,\n RouteObject,\n} from \"./router\";\nimport {\n getToPathname,\n invariant,\n joinPaths,\n matchPath,\n matchRoutes,\n resolveTo,\n warning,\n warningOnce,\n} from \"./router\";\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/docs/en/v6/api#usehref\n */\nexport function useHref(to: To): 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);\n\n let joinedPathname = pathname;\n if (basename !== \"/\") {\n let toPathname = getToPathname(to);\n let endsWithSlash = toPathname != null && toPathname.endsWith(\"/\");\n joinedPathname =\n pathname === \"/\"\n ? basename + (endsWithSlash ? \"/\" : \"\")\n : 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/docs/en/v6/api#useinroutercontext\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/docs/en/v6/api#uselocation\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/docs/en/v6/api#usenavigationtype\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns true if the URL for the given \"to\" value 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/docs/en/v6/api#usematch\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, 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\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\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/docs/en/v6/api#usenavigate\n */\nexport function useNavigate(): 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 { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\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 );\n\n if (basename !== \"/\") {\n path.pathname = joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\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/docs/en/v6/api#useoutletcontext\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/docs/en/v6/api#useoutlet\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/docs/en/v6/api#useparams\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/docs/en/v6/api#useresolvedpath\n */\nexport function useResolvedPath(to: To): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname),\n [to, routePathnamesJson, locationPathname]\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/docs/en/v6/api#useroutes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\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 { 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 let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\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 `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n return _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase, match.pathname]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([parentPathnameBase, match.pathnameBase]),\n })\n ),\n parentMatches\n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = []\n): React.ReactElement | null {\n if (matches == null) return null;\n\n return matches.reduceRight((outlet, match, index) => {\n return (\n \n );\n }, null as React.ReactElement | null);\n}\n","import * as React from \"react\";\nimport type { InitialEntry, Location, MemoryHistory, To } from \"history\";\nimport {\n Action as NavigationType,\n createMemoryHistory,\n parsePath,\n} from \"history\";\n\nimport { LocationContext, NavigationContext, Navigator } from \"./context\";\nimport {\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\nimport type { RouteMatch, RouteObject } from \"./router\";\nimport { invariant, normalizePathname, stripBasename, warning } from \"./router\";\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n}\n\n/**\n * A that stores all entries in memory.\n *\n * @see https://reactrouter.com/docs/en/v6/api#memoryrouter\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({ initialEntries, initialIndex });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/docs/en/v6/api#navigate\n */\nexport function Navigate({ to, replace, state }: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n ` may be used only in the context of a component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n ` must not be used on the initial render in a . ` +\n `This is a no-op, but you should modify your code so the is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let navigate = useNavigate();\n React.useEffect(() => {\n navigate(to, { replace, state });\n });\n\n return null;\n}\n\nexport interface OutletProps {\n context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/docs/en/v6/api#outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface RouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: boolean;\n path?: string;\n}\n\nexport interface PathRouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: false;\n path: string;\n}\n\nexport interface LayoutRouteProps {\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n}\n\nexport interface IndexRouteProps {\n element?: React.ReactNode | null;\n index: true;\n}\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#route\n */\nexport function Route(\n _props: PathRouteProps | LayoutRouteProps | IndexRouteProps\n): React.ReactElement | null {\n invariant(\n false,\n `A is only ever to be used as the child of element, ` +\n `never rendered directly. Please wrap your in a .`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a directly. Instead, you'll render a\n * router that is more specific to your environment such as a \n * in web browsers or a for server rendering.\n *\n * @see https://reactrouter.com/docs/en/v6/api#router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false,\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a inside another .` +\n ` You should never have more than one in your app.`\n );\n\n let basename = normalizePathname(basenameProp);\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\",\n } = locationProp;\n\n let location = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n };\n }, [basename, pathname, search, hash, state, key]);\n\n warning(\n location != null,\n ` is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the won't render anything.`\n );\n\n if (location == null) {\n return null;\n }\n\n return (\n \n \n \n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial | string;\n}\n\n/**\n * A container for a nested tree of elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#routes\n */\nexport function Routes({\n children,\n location,\n}: RoutesProps): React.ReactElement | null {\n return useRoutes(createRoutesFromChildren(children), location);\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `` element or an array of them. Used internally by\n * `` to create a route config from its children.\n *\n * @see https://reactrouter.com/docs/en/v6/api#createroutesfromchildren\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, (element) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a component. All component children of must be a or `\n );\n\n let route: RouteObject = {\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n index: element.props.index,\n path: element.props.path,\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(element.props.children);\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n","/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport type { BrowserHistory, HashHistory, History } from \"history\";\nimport { createBrowserHistory, createHashHistory } from \"history\";\nimport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n resolvePath,\n renderMatches,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n} from \"react-router\";\nimport type { To } from \"react-router\";\n\nfunction warning(cond: boolean, message: string): void {\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 React Router!\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\n////////////////////////////////////////////////////////////////////////////////\n// RE-EXPORTS\n////////////////////////////////////////////////////////////////////////////////\n\n// Note: Keep in sync with react-router exports!\nexport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n renderMatches,\n resolvePath,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n};\n\nexport { NavigationType } from \"react-router\";\nexport type {\n Hash,\n Location,\n Path,\n To,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigator,\n OutletProps,\n Params,\n PathMatch,\n RouteMatch,\n RouteObject,\n RouteProps,\n PathRouteProps,\n LayoutRouteProps,\n IndexRouteProps,\n RouterProps,\n Pathname,\n Search,\n RoutesProps,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n} from \"react-router\";\n\n////////////////////////////////////////////////////////////////////////////////\n// COMPONENTS\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n window,\n}: BrowserRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({ basename, children, window }: HashRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n history: History;\n}\n\n/**\n * A `` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nfunction isModifiedEvent(event: React.MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport interface LinkProps\n extends Omit, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n to: To;\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nexport const Link = React.forwardRef(\n function LinkWithRef(\n { onClick, reloadDocument, replace = false, state, target, to, ...rest },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, { replace, state, target });\n function handleClick(\n event: React.MouseEvent\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n \n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n extends Omit {\n children?:\n | React.ReactNode\n | ((props: { isActive: boolean }) => React.ReactNode);\n caseSensitive?: boolean;\n className?: string | ((props: { isActive: boolean }) => string | undefined);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: { isActive: boolean }) => React.CSSProperties);\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef(\n function NavLinkWithRef(\n {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n children,\n ...rest\n },\n ref\n ) {\n let location = useLocation();\n let path = useResolvedPath(to);\n\n let locationPathname = location.pathname;\n let toPathname = path.pathname;\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n toPathname = toPathname.toLowerCase();\n }\n\n let isActive =\n locationPathname === toPathname ||\n (!end &&\n locationPathname.startsWith(toPathname) &&\n locationPathname.charAt(toPathname.length) === \"/\");\n\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n let className: string | undefined;\n if (typeof classNameProp === \"function\") {\n className = classNameProp({ isActive });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [classNameProp, isActive ? \"active\" : null]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\" ? styleProp({ isActive }) : styleProp;\n\n return (\n \n {typeof children === \"function\" ? children({ isActive }) : children}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// HOOKS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Handles the click behavior for router `` components. This is useful if\n * you need to create custom `` components with the same click behavior we\n * use in our exported ``.\n */\nexport function useLinkClickHandler(\n to: To,\n {\n target,\n replace: replaceProp,\n state,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n } = {}\n): (event: React.MouseEvent) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\n\n return React.useCallback(\n (event: React.MouseEvent) => {\n if (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n // If the URL hasn't changed, a regular will do a replace instead of\n // a push, so do the same here.\n let replace =\n !!replaceProp || createPath(location) === createPath(path);\n\n navigate(to, { replace, state });\n }\n },\n [location, navigate, path, replaceProp, state, target, to]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(defaultInit?: URLSearchParamsInit) {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n `support the URLSearchParams API. If you need to support Internet ` +\n `Explorer 11, we recommend you load a polyfill such as ` +\n `https://github.com/ungap/url-search-params\\n\\n` +\n `If you're unsure how to load polyfills, we recommend you check out ` +\n `https://polyfill.io/v3/ which provides some recommendations about how ` +\n `to load polyfills only for users that need them, instead of for every ` +\n `user.`\n );\n\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n\n let location = useLocation();\n let searchParams = React.useMemo(() => {\n let searchParams = createSearchParams(location.search);\n\n for (let key of defaultSearchParamsRef.current.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParamsRef.current.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\n }, [location.search]);\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback(\n (\n nextInit: URLSearchParamsInit,\n navigateOptions?: { replace?: boolean; state?: any }\n ) => {\n navigate(\"?\" + createSearchParams(nextInit), navigateOptions);\n },\n [navigate]\n );\n\n return [searchParams, setSearchParams] as const;\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n","declare global {\n interface HTMLElementTagNameMap {\n 'github-corners': GithubCorners;\n }\n namespace JSX {\n interface IntrinsicElements {\n 'github-corners': Partial | {\n style?: Partial | React.CSSProperties;\n };\n }\n }\n}\n\nconst GITHUB_CORNERS_TEMPLATE = document.createElement(\"template\");\nGITHUB_CORNERS_TEMPLATE.innerHTML = `\n\n\n \n \n \n \n \n \n \n\n`;\n\nexport class GithubCorners extends HTMLElement {\n /** Sets the z-order of a positioned element and its descendants or flex items. */\n 'z-index'?: string;\n height?: string | number;\n width?: string | number;\n href?: string;\n color?: string;\n fill?: string;\n position?: string;\n target?: string;\n top?: string;\n left?: string;\n right?: string = '0';\n bottom?: string;\n transform?: string;\n private shadow: ShadowRoot\n static get observedAttributes(): string[] {\n return ['style', 'z-index', 'target', 'height', 'width', 'href', 'color', 'fill', 'position', 'top', 'left', 'right', 'bottom', 'transform'];\n }\n constructor() {\n super();\n this.shadow = this.attachShadow({ mode: 'open' });\n this.shadow.appendChild(this.ownerDocument.importNode(GITHUB_CORNERS_TEMPLATE.content, true));\n this.update()\n }\n private setAttr(name: string, value: string) {\n const svg = this.shadow.querySelector('svg');\n if (/(href)/.test(name.toLocaleLowerCase())) {\n svg.lastElementChild.setAttribute('xlink:href', value);\n } else if (/(color|fill)/.test(name.toLocaleLowerCase())) {\n (svg.firstElementChild as HTMLAnchorElement).style[name as any] = value;\n } else if (/(z-index|position|top|left|right|bottom|transform)/.test(name.toLocaleLowerCase())) {\n svg.style[name as any] = value;\n } else {\n svg.setAttribute(name, value);\n }\n }\n private update() {\n ;[...this.getAttributeNames(), 'right'].forEach((name) => {\n const value = this.getAttribute(name) || this[name as keyof GithubCorners] as any || '';\n this.setAttr(name, value);\n });\n }\n attributeChangedCallback(name: string, oldValue: string, newValue: string) {\n if (oldValue !== newValue) {\n this.setAttr(name, newValue);\n }\n }\n}\n\ncustomElements.define('github-corners', GithubCorners);","import React from 'react';\nimport '@uiw/github-corners';\n\nexport interface GitHubCornersProps extends React.AnchorHTMLAttributes {\n /**\n * The link to your project page.\n */\n href?: string;\n /**\n * The width and height of the corner. \n * Default: `80`\n */\n size?: number;\n /**\n * The background color of the corner.\n * Default: `#151513`\n */\n bgColor?: string;\n /**\n * The Github logo color of the corner.\n * Default: `#fff`\n */\n color?: string;\n /**\n * The position of corner. \n * Default: `right`\n */\n position?: 'left' | 'right';\n /** Is it displayed at the bottom? */\n bottom?: boolean,\n /** \n * It is positioned relative to the initial containing block established.\n * Default: `false`\n */\n fixed?: boolean;\n /**\n * Sets the z-order of a positioned element and its descendants or flex items.\n */\n zIndex?: number;\n}\n\nexport default function githubCorners(props: GitHubCornersProps) {\n const { size = 80, fixed = false, bottom, zIndex, className, style, bgColor = '#151513', color = '#fff', position = 'right', ...otherProps } = props;\n const styl: React.CSSProperties = position === 'left' ? { left: 0, right: 'initial', transform: 'scale(-1, 1)' } : { right: 0, left: 'initial', transform: 'scale(1, 1)' };\n if (bottom) {\n styl.bottom = 0;\n styl.top = 'initial';\n styl.transform = position === 'left' ? 'scale(-1, -1)' : 'scale(1, -1)';\n } else {\n styl.bottom = 'initial';\n styl.top = 0;\n }\n return (\n \n );\n}","let e={data:\"\"},t=t=>\"object\"==typeof window?((t?t.querySelector(\"#_goober\"):window._goober)||Object.assign((t||document.head).appendChild(document.createElement(\"style\")),{innerHTML:\" \",id:\"_goober\"})).firstChild:t||e,r=e=>{let r=t(e),l=r.data;return r.data=\"\",l},l=/(?:([\\u0080-\\uFFFF\\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\\s*)/g,a=/\\/\\*[^]*?\\*\\/| +/g,n=/\\n+/g,o=(e,t)=>{let r=\"\",l=\"\",a=\"\";for(let n in e){let c=e[n];\"@\"==n[0]?\"i\"==n[1]?r=n+\" \"+c+\";\":l+=\"f\"==n[1]?o(c,n):n+\"{\"+o(c,\"k\"==n[1]?\"\":t)+\"}\":\"object\"==typeof c?l+=o(c,t?t.replace(/([^,])+/g,e=>n.replace(/(^:.*)|([^,])+/g,t=>/&/.test(t)?t.replace(/&/g,e):e?e+\" \"+t:t)):n):null!=c&&(n=/^--/.test(n)?n:n.replace(/[A-Z]/g,\"-$&\").toLowerCase(),a+=o.p?o.p(n,c):n+\":\"+c+\";\")}return r+(t&&a?t+\"{\"+a+\"}\":a)+l},c={},s=e=>{if(\"object\"==typeof e){let t=\"\";for(let r in e)t+=r+s(e[r]);return t}return e},i=(e,t,r,i,p)=>{let u=s(e),d=c[u]||(c[u]=(e=>{let t=0,r=11;for(;t>>0;return\"go\"+r})(u));if(!c[d]){let t=u!==e?e:(e=>{let t,r,o=[{}];for(;t=l.exec(e.replace(a,\"\"));)t[4]?o.shift():t[3]?(r=t[3].replace(n,\" \").trim(),o.unshift(o[0][r]=o[0][r]||{})):o[0][t[1]]=t[2].replace(n,\" \").trim();return o[0]})(e);c[d]=o(p?{[\"@keyframes \"+d]:t}:t,r?\"\":\".\"+d)}return((e,t,r)=>{-1==t.data.indexOf(e)&&(t.data=r?e+t.data:t.data+e)})(c[d],t,i),d},p=(e,t,r)=>e.reduce((e,l,a)=>{let n=t[a];if(n&&n.call){let e=n(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;n=t?\".\"+t:e&&\"object\"==typeof e?e.props?\"\":o(e,\"\"):!1===e?\"\":e}return e+l+(null==n?\"\":n)},\"\");function u(e){let r=this||{},l=e.call?e(r.p):e;return i(l.unshift?l.raw?p(l,[].slice.call(arguments,1),r.p):l.reduce((e,t)=>Object.assign(e,t&&t.call?t(r.p):t),{}):l,t(r.target),r.g,r.o,r.k)}let d,f,g,b=u.bind({g:1}),h=u.bind({k:1});function m(e,t,r,l){o.p=t,d=e,f=r,g=l}function j(e,t){let r=this||{};return function(){let l=arguments;function a(n,o){let c=Object.assign({},n),s=c.className||a.className;r.p=Object.assign({theme:f&&f()},c),r.o=/ *go\\d+/.test(s),c.className=u.apply(r,l)+(s?\" \"+s:\"\"),t&&(c.ref=o);let i=e;return e[0]&&(i=c.as||e,delete c.as),g&&i[0]&&g(c),d(i,c)}return t?t(a):a}}export{u as css,r as extractCss,b as glob,h as keyframes,m as setup,j as styled};\n","import { CSSProperties } from 'react';\n\nexport type ToastType = 'success' | 'error' | 'loading' | 'blank' | 'custom';\nexport type ToastPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\nexport type Renderable = JSX.Element | string | null;\n\nexport interface IconTheme {\n primary: string;\n secondary: string;\n}\n\nexport type ValueFunction = (arg: TArg) => TValue;\nexport type ValueOrFunction =\n | TValue\n | ValueFunction;\n\nconst isFunction = (\n valOrFunction: ValueOrFunction\n): valOrFunction is ValueFunction =>\n typeof valOrFunction === 'function';\n\nexport const resolveValue = (\n valOrFunction: ValueOrFunction,\n arg: TArg\n): TValue => (isFunction(valOrFunction) ? valOrFunction(arg) : valOrFunction);\n\nexport interface Toast {\n type: ToastType;\n id: string;\n message: ValueOrFunction;\n icon?: Renderable;\n duration?: number;\n pauseDuration: number;\n position?: ToastPosition;\n\n ariaProps: {\n role: 'status' | 'alert';\n 'aria-live': 'assertive' | 'off' | 'polite';\n };\n\n style?: CSSProperties;\n className?: string;\n iconTheme?: IconTheme;\n\n createdAt: number;\n visible: boolean;\n height?: number;\n}\n\nexport type ToastOptions = Partial<\n Pick<\n Toast,\n | 'id'\n | 'icon'\n | 'duration'\n | 'ariaProps'\n | 'className'\n | 'style'\n | 'position'\n | 'iconTheme'\n >\n>;\n\nexport type DefaultToastOptions = ToastOptions & {\n [key in ToastType]?: ToastOptions;\n};\n\nexport interface ToasterProps {\n position?: ToastPosition;\n toastOptions?: DefaultToastOptions;\n reverseOrder?: boolean;\n gutter?: number;\n containerStyle?: React.CSSProperties;\n containerClassName?: string;\n children?: (toast: Toast) => JSX.Element;\n}\n","export const genId = (() => {\n let count = 0;\n return () => {\n return (++count).toString();\n };\n})();\n\nexport const createRectRef =\n (onRect: (rect: DOMRect) => void) => (el: HTMLElement | null) => {\n if (el) {\n setTimeout(() => {\n const boundingRect = el.getBoundingClientRect();\n onRect(boundingRect);\n });\n }\n };\n\nexport const prefersReducedMotion = (() => {\n // Cache result\n let shouldReduceMotion: boolean | undefined = undefined;\n\n return () => {\n if (shouldReduceMotion === undefined && typeof window !== 'undefined') {\n const mediaQuery = matchMedia('(prefers-reduced-motion: reduce)');\n shouldReduceMotion = !mediaQuery || mediaQuery.matches;\n }\n return shouldReduceMotion;\n };\n})();\n","import { useEffect, useState } from 'react';\nimport { DefaultToastOptions, Toast, ToastType } from './types';\n\nconst TOAST_LIMIT = 20;\n\nexport enum ActionType {\n ADD_TOAST,\n UPDATE_TOAST,\n UPSERT_TOAST,\n DISMISS_TOAST,\n REMOVE_TOAST,\n START_PAUSE,\n END_PAUSE,\n}\n\ntype Action =\n | {\n type: ActionType.ADD_TOAST;\n toast: Toast;\n }\n | {\n type: ActionType.UPSERT_TOAST;\n toast: Toast;\n }\n | {\n type: ActionType.UPDATE_TOAST;\n toast: Partial;\n }\n | {\n type: ActionType.DISMISS_TOAST;\n toastId?: string;\n }\n | {\n type: ActionType.REMOVE_TOAST;\n toastId?: string;\n }\n | {\n type: ActionType.START_PAUSE;\n time: number;\n }\n | {\n type: ActionType.END_PAUSE;\n time: number;\n };\n\ninterface State {\n toasts: Toast[];\n pausedAt: number | undefined;\n}\n\nconst toastTimeouts = new Map>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: ActionType.REMOVE_TOAST,\n toastId: toastId,\n });\n }, 1000);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nconst clearFromRemoveQueue = (toastId: string) => {\n const timeout = toastTimeouts.get(toastId);\n if (timeout) {\n clearTimeout(timeout);\n }\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case ActionType.ADD_TOAST:\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case ActionType.UPDATE_TOAST:\n // ! Side effects !\n if (action.toast.id) {\n clearFromRemoveQueue(action.toast.id);\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n };\n\n case ActionType.UPSERT_TOAST:\n const { toast } = action;\n return state.toasts.find((t) => t.id === toast.id)\n ? reducer(state, { type: ActionType.UPDATE_TOAST, toast })\n : reducer(state, { type: ActionType.ADD_TOAST, toast });\n\n case ActionType.DISMISS_TOAST:\n const { toastId } = action;\n\n // ! Side effects ! - This could be execrated into a dismissToast() action, but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n visible: false,\n }\n : t\n ),\n };\n case ActionType.REMOVE_TOAST:\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n\n case ActionType.START_PAUSE:\n return {\n ...state,\n pausedAt: action.time,\n };\n\n case ActionType.END_PAUSE:\n const diff = action.time - (state.pausedAt || 0);\n\n return {\n ...state,\n pausedAt: undefined,\n toasts: state.toasts.map((t) => ({\n ...t,\n pauseDuration: t.pauseDuration + diff,\n })),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [], pausedAt: undefined };\n\nexport const dispatch = (action: Action) => {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n};\n\nconst defaultTimeouts: {\n [key in ToastType]: number;\n} = {\n blank: 4000,\n error: 4000,\n success: 2000,\n loading: Infinity,\n custom: 4000,\n};\n\nexport const useStore = (toastOptions: DefaultToastOptions = {}): State => {\n const [state, setState] = useState(memoryState);\n useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n const mergedToasts = state.toasts.map((t) => ({\n ...toastOptions,\n ...toastOptions[t.type],\n ...t,\n duration:\n t.duration ||\n toastOptions[t.type]?.duration ||\n toastOptions?.duration ||\n defaultTimeouts[t.type],\n style: {\n ...toastOptions.style,\n ...toastOptions[t.type]?.style,\n ...t.style,\n },\n }));\n\n return {\n ...state,\n toasts: mergedToasts,\n };\n};\n","import {\n Renderable,\n Toast,\n ToastOptions,\n ToastType,\n DefaultToastOptions,\n ValueOrFunction,\n resolveValue,\n} from './types';\nimport { genId } from './utils';\nimport { dispatch, ActionType } from './store';\n\ntype Message = ValueOrFunction;\n\ntype ToastHandler = (message: Message, options?: ToastOptions) => string;\n\nconst createToast = (\n message: Message,\n type: ToastType = 'blank',\n opts?: ToastOptions\n): Toast => ({\n createdAt: Date.now(),\n visible: true,\n type,\n ariaProps: {\n role: 'status',\n 'aria-live': 'polite',\n },\n message,\n pauseDuration: 0,\n ...opts,\n id: opts?.id || genId(),\n});\n\nconst createHandler =\n (type?: ToastType): ToastHandler =>\n (message, options) => {\n const toast = createToast(message, type, options);\n dispatch({ type: ActionType.UPSERT_TOAST, toast });\n return toast.id;\n };\n\nconst toast = (message: Message, opts?: ToastOptions) =>\n createHandler('blank')(message, opts);\n\ntoast.error = createHandler('error');\ntoast.success = createHandler('success');\ntoast.loading = createHandler('loading');\ntoast.custom = createHandler('custom');\n\ntoast.dismiss = (toastId?: string) => {\n dispatch({\n type: ActionType.DISMISS_TOAST,\n toastId,\n });\n};\n\ntoast.remove = (toastId?: string) =>\n dispatch({ type: ActionType.REMOVE_TOAST, toastId });\n\ntoast.promise = (\n promise: Promise,\n msgs: {\n loading: Renderable;\n success: ValueOrFunction;\n error: ValueOrFunction;\n },\n opts?: DefaultToastOptions\n) => {\n const id = toast.loading(msgs.loading, { ...opts, ...opts?.loading });\n\n promise\n .then((p) => {\n toast.success(resolveValue(msgs.success, p), {\n id,\n ...opts,\n ...opts?.success,\n });\n return p;\n })\n .catch((e) => {\n toast.error(resolveValue(msgs.error, e), {\n id,\n ...opts,\n ...opts?.error,\n });\n });\n\n return promise;\n};\n\nexport { toast };\n","import { useEffect, useMemo } from 'react';\nimport { dispatch, ActionType, useStore } from './store';\nimport { toast } from './toast';\nimport { DefaultToastOptions, Toast, ToastPosition } from './types';\n\nexport const useToaster = (toastOptions?: DefaultToastOptions) => {\n const { toasts, pausedAt } = useStore(toastOptions);\n\n useEffect(() => {\n if (pausedAt) {\n return;\n }\n\n const now = Date.now();\n const timeouts = toasts.map((t) => {\n if (t.duration === Infinity) {\n return;\n }\n\n const durationLeft =\n (t.duration || 0) + t.pauseDuration - (now - t.createdAt);\n\n if (durationLeft < 0) {\n if (t.visible) {\n toast.dismiss(t.id);\n }\n return;\n }\n return setTimeout(() => toast.dismiss(t.id), durationLeft);\n });\n\n return () => {\n timeouts.forEach((timeout) => timeout && clearTimeout(timeout));\n };\n }, [toasts, pausedAt]);\n\n const handlers = useMemo(\n () => ({\n startPause: () => {\n dispatch({\n type: ActionType.START_PAUSE,\n time: Date.now(),\n });\n },\n endPause: () => {\n if (pausedAt) {\n dispatch({ type: ActionType.END_PAUSE, time: Date.now() });\n }\n },\n updateHeight: (toastId: string, height: number) =>\n dispatch({\n type: ActionType.UPDATE_TOAST,\n toast: { id: toastId, height },\n }),\n calculateOffset: (\n toast: Toast,\n opts?: {\n reverseOrder?: boolean;\n gutter?: number;\n defaultPosition?: ToastPosition;\n }\n ) => {\n const {\n reverseOrder = false,\n gutter = 8,\n defaultPosition,\n } = opts || {};\n\n const relevantToasts = toasts.filter(\n (t) =>\n (t.position || defaultPosition) ===\n (toast.position || defaultPosition) && t.height\n );\n const toastIndex = relevantToasts.findIndex((t) => t.id === toast.id);\n const toastsBefore = relevantToasts.filter(\n (toast, i) => i < toastIndex && toast.visible\n ).length;\n\n const offset = relevantToasts\n .filter((t) => t.visible)\n .slice(...(reverseOrder ? [toastsBefore + 1] : [0, toastsBefore]))\n .reduce((acc, t) => acc + (t.height || 0) + gutter, 0);\n\n return offset;\n },\n }),\n [toasts, pausedAt]\n );\n\n return {\n toasts,\n handlers,\n };\n};\n","import { styled, keyframes } from 'goober';\n\nconst circleAnimation = keyframes`\nfrom {\n transform: scale(0) rotate(45deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(45deg);\n opacity: 1;\n}`;\n\nconst firstLineAnimation = keyframes`\nfrom {\n transform: scale(0);\n opacity: 0;\n}\nto {\n transform: scale(1);\n opacity: 1;\n}`;\n\nconst secondLineAnimation = keyframes`\nfrom {\n transform: scale(0) rotate(90deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(90deg);\n\topacity: 1;\n}`;\n\nexport interface ErrorTheme {\n primary?: string;\n secondary?: string;\n}\n\nexport const ErrorIcon = styled('div')`\n width: 20px;\n opacity: 0;\n height: 20px;\n border-radius: 10px;\n background: ${(p) => p.primary || '#ff4b4b'};\n position: relative;\n transform: rotate(45deg);\n\n animation: ${circleAnimation} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n animation-delay: 100ms;\n\n &:after,\n &:before {\n content: '';\n animation: ${firstLineAnimation} 0.15s ease-out forwards;\n animation-delay: 150ms;\n position: absolute;\n border-radius: 3px;\n opacity: 0;\n background: ${(p) => p.secondary || '#fff'};\n bottom: 9px;\n left: 4px;\n height: 2px;\n width: 12px;\n }\n\n &:before {\n animation: ${secondLineAnimation} 0.15s ease-out forwards;\n animation-delay: 180ms;\n transform: rotate(90deg);\n }\n`;\n","import { styled, keyframes } from 'goober';\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`;\n\nexport interface LoaderTheme {\n primary?: string;\n secondary?: string;\n}\n\nexport const LoaderIcon = styled('div')`\n width: 12px;\n height: 12px;\n box-sizing: border-box;\n border: 2px solid;\n border-radius: 100%;\n border-color: ${(p) => p.secondary || '#e0e0e0'};\n border-right-color: ${(p) => p.primary || '#616161'};\n animation: ${rotate} 1s linear infinite;\n`;\n","import { styled, keyframes } from 'goober';\n\nconst circleAnimation = keyframes`\nfrom {\n transform: scale(0) rotate(45deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(45deg);\n\topacity: 1;\n}`;\n\nconst checkmarkAnimation = keyframes`\n0% {\n\theight: 0;\n\twidth: 0;\n\topacity: 0;\n}\n40% {\n height: 0;\n\twidth: 6px;\n\topacity: 1;\n}\n100% {\n opacity: 1;\n height: 10px;\n}`;\n\nexport interface CheckmarkTheme {\n primary?: string;\n secondary?: string;\n}\n\nexport const CheckmarkIcon = styled('div')`\n width: 20px;\n opacity: 0;\n height: 20px;\n border-radius: 10px;\n background: ${(p) => p.primary || '#61d345'};\n position: relative;\n transform: rotate(45deg);\n\n animation: ${circleAnimation} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n animation-delay: 100ms;\n &:after {\n content: '';\n box-sizing: border-box;\n animation: ${checkmarkAnimation} 0.2s ease-out forwards;\n opacity: 0;\n animation-delay: 200ms;\n position: absolute;\n border-right: 2px solid;\n border-bottom: 2px solid;\n border-color: ${(p) => p.secondary || '#fff'};\n bottom: 6px;\n left: 6px;\n height: 10px;\n width: 6px;\n }\n`;\n","import * as React from 'react';\nimport { styled, keyframes } from 'goober';\n\nimport { Toast } from '../core/types';\nimport { ErrorIcon, ErrorTheme } from './error';\nimport { LoaderIcon, LoaderTheme } from './loader';\nimport { CheckmarkIcon, CheckmarkTheme } from './checkmark';\n\nconst StatusWrapper = styled('div')`\n position: absolute;\n`;\n\nconst IndicatorWrapper = styled('div')`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n min-width: 20px;\n min-height: 20px;\n`;\n\nconst enter = keyframes`\nfrom {\n transform: scale(0.6);\n opacity: 0.4;\n}\nto {\n transform: scale(1);\n opacity: 1;\n}`;\n\nexport const AnimatedIconWrapper = styled('div')`\n position: relative;\n transform: scale(0.6);\n opacity: 0.4;\n min-width: 20px;\n animation: ${enter} 0.3s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n`;\n\nexport type IconThemes = Partial<{\n success: CheckmarkTheme;\n error: ErrorTheme;\n loading: LoaderTheme;\n}>;\n\nexport const ToastIcon: React.FC<{\n toast: Toast;\n}> = ({ toast }) => {\n const { icon, type, iconTheme } = toast;\n if (icon !== undefined) {\n if (typeof icon === 'string') {\n return {icon};\n } else {\n return icon;\n }\n }\n\n if (type === 'blank') {\n return null;\n }\n\n return (\n \n \n {type !== 'loading' && (\n \n {type === 'error' ? (\n \n ) : (\n \n )}\n \n )}\n \n );\n};\n","import * as React from 'react';\nimport { styled, keyframes } from 'goober';\n\nimport { Toast, ToastPosition, resolveValue, Renderable } from '../core/types';\nimport { ToastIcon } from './toast-icon';\nimport { prefersReducedMotion } from '../core/utils';\n\nconst enterAnimation = (factor: number) => `\n0% {transform: translate3d(0,${factor * -200}%,0) scale(.6); opacity:.5;}\n100% {transform: translate3d(0,0,0) scale(1); opacity:1;}\n`;\n\nconst exitAnimation = (factor: number) => `\n0% {transform: translate3d(0,0,-1px) scale(1); opacity:1;}\n100% {transform: translate3d(0,${factor * -150}%,-1px) scale(.6); opacity:0;}\n`;\n\nconst fadeInAnimation = `0%{opacity:0;} 100%{opacity:1;}`;\nconst fadeOutAnimation = `0%{opacity:1;} 100%{opacity:0;}`;\n\nconst ToastBarBase = styled('div', React.forwardRef)`\n display: flex;\n align-items: center;\n background: #fff;\n color: #363636;\n line-height: 1.3;\n will-change: transform;\n box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1), 0 3px 3px rgba(0, 0, 0, 0.05);\n max-width: 350px;\n pointer-events: auto;\n padding: 8px 10px;\n border-radius: 8px;\n`;\n\nconst Message = styled('div')`\n display: flex;\n justify-content: center;\n margin: 4px 10px;\n color: inherit;\n flex: 1 1 auto;\n white-space: pre-line;\n`;\n\ninterface ToastBarProps {\n toast: Toast;\n position?: ToastPosition;\n style?: React.CSSProperties;\n children?: (components: {\n icon: Renderable;\n message: Renderable;\n }) => Renderable;\n}\n\nconst getAnimationStyle = (\n position: ToastPosition,\n visible: boolean\n): React.CSSProperties => {\n const top = position.includes('top');\n const factor = top ? 1 : -1;\n\n const [enter, exit] = prefersReducedMotion()\n ? [fadeInAnimation, fadeOutAnimation]\n : [enterAnimation(factor), exitAnimation(factor)];\n\n return {\n animation: visible\n ? `${keyframes(enter)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`\n : `${keyframes(exit)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`,\n };\n};\n\nexport const ToastBar: React.FC = React.memo(\n ({ toast, position, style, children }) => {\n const animationStyle: React.CSSProperties = toast?.height\n ? getAnimationStyle(\n toast.position || position || 'top-center',\n toast.visible\n )\n : { opacity: 0 };\n\n const icon = ;\n const message = (\n \n {resolveValue(toast.message, toast)}\n \n );\n\n return (\n \n {typeof children === 'function' ? (\n children({\n icon,\n message,\n })\n ) : (\n <>\n {icon}\n {message}\n \n )}\n \n );\n }\n);\n","import { css, setup } from 'goober';\nimport * as React from 'react';\nimport { resolveValue, ToasterProps, ToastPosition } from '../core/types';\nimport { useToaster } from '../core/use-toaster';\nimport { createRectRef, prefersReducedMotion } from '../core/utils';\nimport { ToastBar } from './toast-bar';\n\nsetup(React.createElement);\n\nconst getPositionStyle = (\n position: ToastPosition,\n offset: number\n): React.CSSProperties => {\n const top = position.includes('top');\n const verticalStyle: React.CSSProperties = top ? { top: 0 } : { bottom: 0 };\n const horizontalStyle: React.CSSProperties = position.includes('center')\n ? {\n justifyContent: 'center',\n }\n : position.includes('right')\n ? {\n justifyContent: 'flex-end',\n }\n : {};\n return {\n left: 0,\n right: 0,\n display: 'flex',\n position: 'absolute',\n transition: prefersReducedMotion()\n ? undefined\n : `all 230ms cubic-bezier(.21,1.02,.73,1)`,\n transform: `translateY(${offset * (top ? 1 : -1)}px)`,\n ...verticalStyle,\n ...horizontalStyle,\n };\n};\n\nconst activeClass = css`\n z-index: 9999;\n > * {\n pointer-events: auto;\n }\n`;\n\nconst DEFAULT_OFFSET = 16;\n\nexport const Toaster: React.FC = ({\n reverseOrder,\n position = 'top-center',\n toastOptions,\n gutter,\n children,\n containerStyle,\n containerClassName,\n}) => {\n const { toasts, handlers } = useToaster(toastOptions);\n\n return (\n \n {toasts.map((t) => {\n const toastPosition = t.position || position;\n const offset = handlers.calculateOffset(t, {\n reverseOrder,\n gutter,\n defaultPosition: position,\n });\n const positionStyle = getPositionStyle(toastPosition, offset);\n\n const ref = t.height\n ? undefined\n : createRectRef((rect) => {\n handlers.updateHeight(t.id, rect.height);\n });\n\n return (\n \n {t.type === 'custom' ? (\n resolveValue(t.message, t)\n ) : children ? (\n children(t)\n ) : (\n \n )}\n \n );\n })}\n \n );\n};\n","import { toast } from './core/toast';\n\nexport * from './headless';\n\nexport { ToastBar } from './components/toast-bar';\nexport { ToastIcon } from './components/toast-icon';\nexport { Toaster } from './components/toaster';\nexport { CheckmarkIcon } from './components/checkmark';\nexport { ErrorIcon } from './components/error';\nexport { LoaderIcon } from './components/loader';\n\nexport { toast };\nexport default toast;\n","/**\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {object & {type: string, position?: Position|undefined}} NodeLike\n */\n\n/**\n * Stringify one point, a position (start and end points), or a node’s\n * positional information.\n *\n * @param {Node|NodeLike|Position|Point|null} [value]\n * @returns {string}\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point|undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position|undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number|undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {object & {type: string, position?: Position|undefined}} NodeLike\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\nexport class VFileMessage extends Error {\n /**\n * Constructor of a message for `reason` at `place` from `origin`.\n * When an error is passed in as `reason`, copies the `stack`.\n *\n * @param {string|Error} reason Reason for message (`string` or `Error`). Uses the stack and message of the error if given.\n * @param {Node|NodeLike|Position|Point} [place] Place at which the message occurred in a file (`Node`, `Position`, or `Point`, optional).\n * @param {string} [origin] Place in code the message originates from (`string`, optional).\n */\n constructor(reason, place, origin) {\n /** @type {[string|null, string|null]} */\n const parts = [null, null]\n /** @type {Position} */\n let position = {\n // @ts-expect-error: we always follows the structure of `position`.\n start: {line: null, column: null},\n // @ts-expect-error: \"\n end: {line: null, column: null}\n }\n\n super()\n\n if (typeof place === 'string') {\n origin = place\n place = undefined\n }\n\n if (typeof origin === 'string') {\n const index = origin.indexOf(':')\n\n if (index === -1) {\n parts[1] = origin\n } else {\n parts[0] = origin.slice(0, index)\n parts[1] = origin.slice(index + 1)\n }\n }\n\n if (place) {\n // Node.\n if ('type' in place || 'position' in place) {\n if (place.position) {\n position = place.position\n }\n }\n // Position.\n else if ('start' in place || 'end' in place) {\n position = place\n }\n // Point.\n else if ('line' in place || 'column' in place) {\n position.start = place\n }\n }\n\n // Fields from `Error`\n this.name = stringifyPosition(place) || '1:1'\n this.message = typeof reason === 'object' ? reason.message : reason\n this.stack = typeof reason === 'object' ? reason.stack : ''\n\n /**\n * Reason for message.\n * @type {string}\n */\n this.reason = this.message\n /**\n * If true, marks associated file as no longer processable.\n * @type {boolean?}\n */\n // eslint-disable-next-line no-unused-expressions\n this.fatal\n /**\n * Starting line of error.\n * @type {number?}\n */\n this.line = position.start.line\n /**\n * Starting column of error.\n * @type {number?}\n */\n this.column = position.start.column\n /**\n * Namespace of warning.\n * @type {string?}\n */\n this.source = parts[0]\n /**\n * Category of message.\n * @type {string?}\n */\n this.ruleId = parts[1]\n /**\n * Full range information, when available.\n * Has start and end properties, both set to an object with line and column, set to number?.\n * @type {Position?}\n */\n this.position = position\n\n // The following fields are “well known”.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /* eslint-disable no-unused-expressions */\n /**\n * You can use this to specify the source value that’s being reported, which\n * is deemed incorrect.\n * @type {string?}\n */\n this.actual\n /**\n * You can use this to suggest values that should be used instead of\n * `actual`, one or more values that are deemed as acceptable.\n * @type {Array?}\n */\n this.expected\n /**\n * You may add a file property with a path of a file (used throughout the VFile ecosystem).\n * @type {string?}\n */\n this.file\n /**\n * You may add a url property with a link to documentation for the message.\n * @type {string?}\n */\n this.url\n /**\n * You may add a note property with a long form description of the message (supported by vfile-reporter).\n * @type {string?}\n */\n this.note\n /* eslint-enable no-unused-expressions */\n }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.fatal = null\nVFileMessage.prototype.column = null\nVFileMessage.prototype.line = null\nVFileMessage.prototype.source = null\nVFileMessage.prototype.ruleId = null\nVFileMessage.prototype.position = null\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 path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * @param {string} path\n * @param {string} [ext]\n * @returns {string}\n */\nfunction basename(path, ext) {\n if (ext !== undefined && typeof ext !== '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 (ext === undefined || ext.length === 0 || ext.length > path.length) {\n while (index--) {\n if (path.charCodeAt(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 (ext === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extIndex = ext.length - 1\n\n while (index--) {\n if (path.charCodeAt(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 (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.charCodeAt(index) === ext.charCodeAt(extIndex--)) {\n if (extIndex < 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 extIndex = -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 * @param {string} path\n * @returns {string}\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.charCodeAt(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.charCodeAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.charCodeAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * @param {string} path\n * @returns {string}\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.charCodeAt(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 * @param {Array} segments\n * @returns {string}\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 * Note: `normalize` is not exposed as `path.normalize`, so some code is\n * manually removed from it.\n *\n * @param {string} path\n * @returns {string}\n */\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.charCodeAt(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.charCodeAt(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 * @param {boolean} allowAboveRoot\n * @returns {string}\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.charCodeAt(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.charCodeAt(result.length - 1) !== 46 /* `.` */ ||\n result.charCodeAt(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 * @param {string} path\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 proc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * @typedef URL\n * @property {string} hash\n * @property {string} host\n * @property {string} hostname\n * @property {string} href\n * @property {string} origin\n * @property {string} password\n * @property {string} pathname\n * @property {string} port\n * @property {string} protocol\n * @property {string} search\n * @property {any} searchParams\n * @property {string} username\n * @property {() => string} toString\n * @property {() => string} toJSON\n */\n\n/**\n * @param {unknown} fileURLOrPath\n * @returns {fileURLOrPath is URL}\n */\n// From: \nexport function isUrl(fileURLOrPath) {\n return (\n fileURLOrPath !== null &&\n typeof fileURLOrPath === 'object' &&\n // @ts-expect-error: indexable.\n fileURLOrPath.href &&\n // @ts-expect-error: indexable.\n fileURLOrPath.origin\n )\n}\n","/// \n\nimport {isUrl} from './minurl.shared.js'\n\n// See: \n\n/**\n * @param {string|URL} path\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 * @param {URL} url\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.charCodeAt(index) === 37 /* `%` */ &&\n pathname.charCodeAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.charCodeAt(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\nexport {isUrl} from './minurl.shared.js'\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {Record & {type: string, position?: Position|undefined}} NodeLike\n * @typedef {import('./minurl.shared.js').URL} URL\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n *\n * @typedef {'ascii'|'utf8'|'utf-8'|'utf16le'|'ucs2'|'ucs-2'|'base64'|'base64url'|'latin1'|'binary'|'hex'} BufferEncoding\n * Encodings supported by the buffer class.\n * This is a copy of the typing from Node, copied to prevent Node globals from\n * being needed.\n * Copied from: \n *\n * @typedef {Value|Options|VFile|URL} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * @property {Value} [value]\n * @property {string} [cwd]\n * @property {Array} [history]\n * @property {string|URL} [path]\n * @property {string} [basename]\n * @property {string} [stem]\n * @property {string} [extname]\n * @property {string} [dirname]\n * @property {Data} [data]\n *\n * @typedef Map\n * Raw source map, see:\n * .\n * @property {number} version\n * @property {Array} sources\n * @property {Array} names\n * @property {string|undefined} [sourceRoot]\n * @property {Array|undefined} [sourcesContent]\n * @property {string} mappings\n * @property {string} file\n *\n * @typedef {{[key: string]: unknown} & VFileCoreOptions} Options\n * Configuration: a bunch of keys that will be shallow copied over to the new\n * file.\n *\n * @typedef {Record} ReporterSettings\n * @typedef {(files: Array, options: T) => string} Reporter\n */\n\nimport buffer from 'is-buffer'\nimport {VFileMessage} from 'vfile-message'\nimport {path} from './minpath.js'\nimport {proc} from './minproc.js'\nimport {urlToPath, isUrl} from './minurl.js'\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.\nconst order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * If `options` is `string` or `Buffer`, it’s treated as `{value: options}`.\n * If `options` is a `URL`, it’s treated as `{path: options}`.\n * If `options` is a `VFile`, shallow copies its data over to the new file.\n * All fields in `options` are set on the newly created `VFile`.\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 * It’s not possible to set either `dirname` or `extname` without setting\n * either `history`, `path`, `basename`, or `stem` as well.\n *\n * @param {Compatible} [value]\n */\n constructor(value) {\n /** @type {Options} */\n let options\n\n if (!value) {\n options = {}\n } else if (typeof value === 'string' || buffer(value)) {\n // @ts-expect-error Looks like a buffer.\n options = {value}\n } else if (isUrl(value)) {\n options = {path: value}\n } else {\n // @ts-expect-error Looks like file or options.\n options = value\n }\n\n /**\n * Place to store custom information (default: `{}`).\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of messages associated with the file.\n * @type {Array}\n */\n this.messages = []\n\n /**\n * List of filepaths the file moved between.\n * The first is the original path and the last is the current path.\n * @type {Array}\n */\n this.history = []\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n * @type {string}\n */\n this.cwd = proc.cwd()\n\n /* eslint-disable no-unused-expressions */\n /**\n * Raw value.\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 /**\n * Whether a file was saved to disk.\n * This is used by vfile reporters.\n * @type {boolean}\n */\n this.stored\n\n /**\n * Sometimes files have a non-string, compiled, representation.\n * This can be stored in the `result` field.\n * One example is when turning markdown into React nodes.\n * This is used by unified to store non-string results.\n * @type {unknown}\n */\n this.result\n\n /**\n * Sometimes files have a source map associated with them.\n * This can be stored in the `map` field.\n * This should be a `Map` type, which is equivalent to the `RawSourceMap`\n * type from the `source-map` module.\n * @type {Map|undefined}\n */\n this.map\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 prop = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (prop in options && options[prop] !== undefined) {\n // @ts-expect-error: TS is confused by the different types for `history`.\n this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n }\n }\n\n /** @type {string} */\n let prop\n\n // Set non-path related properties.\n for (prop in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) this[prop] = options[prop]\n }\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n * @returns {string}\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 * 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 * @param {string|URL} path\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 parent path (example: `'~'`).\n */\n get dirname() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n * Cannot be set if there’s no `path` yet.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = path.join(dirname || '', this.basename)\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n */\n get basename() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\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 set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = path.join(this.dirname || '', basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n */\n get extname() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\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 set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.charCodeAt(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 = path.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n */\n get stem() {\n return typeof this.path === 'string'\n ? path.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\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 set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n /**\n * Serialize the file.\n *\n * @param {BufferEncoding} [encoding='utf8']\n * When `value` is a `Buffer`, `encoding` is a character encoding to\n * understand it as (default: `'utf8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n return (this.value || '').toString(encoding)\n }\n\n /**\n * Constructs a new `VFileMessage`, where `fatal` is set to `false`, and\n * associates it with the file by adding it to `vfile.messages` and setting\n * `message.file` to the current filepath.\n *\n * @param {string|Error} reason\n * Human readable reason for the message, uses the stack and message of the error if given.\n * @param {Node|NodeLike|Position|Point} [place]\n * Place where the message occurred in the file.\n * @param {string} [origin]\n * Computer readable reason for the message\n * @returns {VFileMessage}\n * Message.\n */\n message(reason, place, origin) {\n const message = new VFileMessage(reason, place, origin)\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 * Like `VFile#message()`, but associates an informational message where\n * `fatal` is set to `null`.\n *\n * @param {string|Error} reason\n * Human readable reason for the message, uses the stack and message of the error if given.\n * @param {Node|NodeLike|Position|Point} [place]\n * Place where the message occurred in the file.\n * @param {string} [origin]\n * Computer readable reason for the message\n * @returns {VFileMessage}\n * Message.\n */\n info(reason, place, origin) {\n const message = this.message(reason, place, origin)\n\n message.fatal = null\n\n return message\n }\n\n /**\n * Like `VFile#message()`, but associates a fatal message where `fatal` is\n * set to `true`, and then immediately throws it.\n *\n * > 👉 **Note**: a fatal error means that a file is no longer processable.\n *\n * @param {string|Error} reason\n * Human readable reason for the message, uses the stack and message of the error if given.\n * @param {Node|NodeLike|Position|Point} [place]\n * Place where the message occurred in the file.\n * @param {string} [origin]\n * Computer readable reason for the message\n * @returns {never}\n * Message.\n */\n fail(reason, place, origin) {\n const message = this.message(reason, place, origin)\n\n message.fatal = true\n\n throw message\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string|undefined} part\n * @param {string} name\n * @returns {void}\n */\nfunction assertPart(part, name) {\n if (part && part.includes(path.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string|undefined} part\n * @param {string} name\n * @returns {asserts part is string}\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 * @param {string} name\n * @returns {asserts path is string}\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\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","/**\n * @typedef {(error?: Error|null|undefined, ...output: Array) => void} Callback\n * @typedef {(...input: Array) => any} Middleware\n *\n * @typedef {(...input: Array) => void} Run\n * Call all middleware.\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add `fn` (middleware) to the list.\n * @typedef {{run: Run, use: Use}} Pipeline\n * Middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {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`.\n * Can be sync or async; return a promise, receive a callback, or return new\n * values and errors.\n *\n * @param {Middleware} middleware\n * @param {Callback} callback\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 instanceof Promise) {\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 * @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","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('vfile').VFileCompatible} VFileCompatible\n * @typedef {import('vfile').VFileValue} VFileValue\n * @typedef {import('..').Processor} Processor\n * @typedef {import('..').Plugin} Plugin\n * @typedef {import('..').Preset} Preset\n * @typedef {import('..').Pluggable} Pluggable\n * @typedef {import('..').PluggableList} PluggableList\n * @typedef {import('..').Transformer} Transformer\n * @typedef {import('..').Parser} Parser\n * @typedef {import('..').Compiler} Compiler\n * @typedef {import('..').RunCallback} RunCallback\n * @typedef {import('..').ProcessCallback} ProcessCallback\n *\n * @typedef Context\n * @property {Node} tree\n * @property {VFile} file\n */\n\nimport {bail} from 'bail'\nimport isBuffer from 'is-buffer'\nimport extend from 'extend'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\n\n// Expose a frozen processor.\nexport const unified = base().freeze()\n\nconst own = {}.hasOwnProperty\n\n// Function to create the first processor.\n/**\n * @returns {Processor}\n */\nfunction base() {\n const transformers = trough()\n /** @type {Processor['attachers']} */\n const attachers = []\n /** @type {Record} */\n let namespace = {}\n /** @type {boolean|undefined} */\n let frozen\n let freezeIndex = -1\n\n // Data management.\n // @ts-expect-error: overloads are handled.\n processor.data = data\n processor.Parser = undefined\n processor.Compiler = undefined\n\n // Lock.\n processor.freeze = freeze\n\n // Plugins.\n processor.attachers = attachers\n // @ts-expect-error: overloads are handled.\n processor.use = use\n\n // API.\n processor.parse = parse\n processor.stringify = stringify\n // @ts-expect-error: overloads are handled.\n processor.run = run\n processor.runSync = runSync\n // @ts-expect-error: overloads are handled.\n processor.process = process\n processor.processSync = processSync\n\n // Expose.\n return processor\n\n // Create a new processor based on the processor in the current scope.\n /** @type {Processor} */\n function processor() {\n const destination = base()\n let index = -1\n\n while (++index < attachers.length) {\n destination.use(...attachers[index])\n }\n\n destination.data(extend(true, {}, namespace))\n\n return destination\n }\n\n /**\n * @param {string|Record} [key]\n * @param {unknown} [value]\n * @returns {unknown}\n */\n function data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', frozen)\n namespace[key] = value\n return processor\n }\n\n // Get `key`.\n return (own.call(namespace, key) && namespace[key]) || null\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', frozen)\n namespace = key\n return processor\n }\n\n // Get space.\n return namespace\n }\n\n /** @type {Processor['freeze']} */\n function freeze() {\n if (frozen) {\n return processor\n }\n\n while (++freezeIndex < attachers.length) {\n const [attacher, ...options] = attachers[freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n /** @type {Transformer|void} */\n const transformer = attacher.call(processor, ...options)\n\n if (typeof transformer === 'function') {\n transformers.use(transformer)\n }\n }\n\n frozen = true\n freezeIndex = Number.POSITIVE_INFINITY\n\n return processor\n }\n\n /**\n * @param {Pluggable|null|undefined} [value]\n * @param {...unknown} options\n * @returns {Processor}\n */\n function use(value, ...options) {\n /** @type {Record|undefined} */\n let settings\n\n assertUnfrozen('use', frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, ...options)\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 if (settings) {\n namespace.settings = Object.assign(namespace.settings || {}, settings)\n }\n\n return processor\n\n /**\n * @param {import('..').Pluggable} value\n * @returns {void}\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, ...options] = value\n addPlugin(plugin, ...options)\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 {void}\n */\n function addPreset(result) {\n addList(result.plugins)\n\n if (result.settings) {\n settings = Object.assign(settings || {}, result.settings)\n }\n }\n\n /**\n * @param {PluggableList|null|undefined} [plugins]\n * @returns {void}\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 {...unknown} [value]\n * @returns {void}\n */\n function addPlugin(plugin, value) {\n let index = -1\n /** @type {Processor['attachers'][number]|undefined} */\n let entry\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entry = attachers[index]\n break\n }\n }\n\n if (entry) {\n if (isPlainObj(entry[1]) && isPlainObj(value)) {\n value = extend(true, entry[1], value)\n }\n\n entry[1] = value\n } else {\n // @ts-expect-error: fine.\n attachers.push([...arguments])\n }\n }\n }\n\n /** @type {Processor['parse']} */\n function parse(doc) {\n processor.freeze()\n const file = vfile(doc)\n const Parser = processor.Parser\n assertParser('parse', Parser)\n\n if (newable(Parser, 'parse')) {\n // @ts-expect-error: `newable` checks this.\n return new Parser(String(file), file).parse()\n }\n\n // @ts-expect-error: `newable` checks this.\n return Parser(String(file), file) // eslint-disable-line new-cap\n }\n\n /** @type {Processor['stringify']} */\n function stringify(node, doc) {\n processor.freeze()\n const file = vfile(doc)\n const Compiler = processor.Compiler\n assertCompiler('stringify', Compiler)\n assertNode(node)\n\n if (newable(Compiler, 'compile')) {\n // @ts-expect-error: `newable` checks this.\n return new Compiler(node, file).compile()\n }\n\n // @ts-expect-error: `newable` checks this.\n return Compiler(node, file) // eslint-disable-line new-cap\n }\n\n /**\n * @param {Node} node\n * @param {VFileCompatible|RunCallback} [doc]\n * @param {RunCallback} [callback]\n * @returns {Promise|void}\n */\n function run(node, doc, callback) {\n assertNode(node)\n processor.freeze()\n\n if (!callback && typeof doc === 'function') {\n callback = doc\n doc = undefined\n }\n\n if (!callback) {\n return new Promise(executor)\n }\n\n executor(null, callback)\n\n /**\n * @param {null|((node: Node) => void)} resolve\n * @param {(error: Error) => void} reject\n * @returns {void}\n */\n function executor(resolve, reject) {\n // @ts-expect-error: `doc` can’t be a callback anymore, we checked.\n transformers.run(node, vfile(doc), done)\n\n /**\n * @param {Error|null} error\n * @param {Node} tree\n * @param {VFile} file\n * @returns {void}\n */\n function done(error, tree, file) {\n tree = tree || node\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(tree)\n } else {\n // @ts-expect-error: `callback` is defined if `resolve` is not.\n callback(null, tree, file)\n }\n }\n }\n }\n\n /** @type {Processor['runSync']} */\n function runSync(node, file) {\n /** @type {Node|undefined} */\n let result\n /** @type {boolean|undefined} */\n let complete\n\n processor.run(node, file, done)\n\n assertDone('runSync', 'run', complete)\n\n // @ts-expect-error: we either bailed on an error or have a tree.\n return result\n\n /**\n * @param {Error|null} [error]\n * @param {Node} [tree]\n * @returns {void}\n */\n function done(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * @param {VFileCompatible} doc\n * @param {ProcessCallback} [callback]\n * @returns {Promise|undefined}\n */\n function process(doc, callback) {\n processor.freeze()\n assertParser('process', processor.Parser)\n assertCompiler('process', processor.Compiler)\n\n if (!callback) {\n return new Promise(executor)\n }\n\n executor(null, callback)\n\n /**\n * @param {null|((file: VFile) => void)} resolve\n * @param {(error?: Error|null|undefined) => void} reject\n * @returns {void}\n */\n function executor(resolve, reject) {\n const file = vfile(doc)\n\n processor.run(processor.parse(file), file, (error, tree, file) => {\n if (error || !tree || !file) {\n done(error)\n } else {\n /** @type {unknown} */\n const result = processor.stringify(tree, file)\n\n if (result === undefined || result === null) {\n // Empty.\n } else if (looksLikeAVFileValue(result)) {\n file.value = result\n } else {\n file.result = result\n }\n\n done(error, file)\n }\n })\n\n /**\n * @param {Error|null|undefined} [error]\n * @param {VFile|undefined} [file]\n * @returns {void}\n */\n function done(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n // @ts-expect-error: `callback` is defined if `resolve` is not.\n callback(null, file)\n }\n }\n }\n }\n\n /** @type {Processor['processSync']} */\n function processSync(doc) {\n /** @type {boolean|undefined} */\n let complete\n\n processor.freeze()\n assertParser('processSync', processor.Parser)\n assertCompiler('processSync', processor.Compiler)\n\n const file = vfile(doc)\n\n processor.process(file, done)\n\n assertDone('processSync', 'process', complete)\n\n return file\n\n /**\n * @param {Error|null|undefined} [error]\n * @returns {void}\n */\n function done(error) {\n complete = true\n bail(error)\n }\n }\n}\n\n/**\n * Check if `value` is a constructor.\n *\n * @param {unknown} value\n * @param {string} name\n * @returns {boolean}\n */\nfunction newable(value, name) {\n return (\n typeof value === 'function' &&\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n value.prototype &&\n // A function with keys in its prototype is probably a constructor.\n // Classes’ prototype methods are not enumerable, so we check if some value\n // exists in the prototype.\n // type-coverage:ignore-next-line\n (keys(value.prototype) || name in value.prototype)\n )\n}\n\n/**\n * Check if `value` is an object with keys.\n *\n * @param {Record} value\n * @returns {boolean}\n */\nfunction keys(value) {\n /** @type {string} */\n let key\n\n for (key in value) {\n if (own.call(value, key)) {\n return true\n }\n }\n\n return false\n}\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 {VFileCompatible} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {VFileCompatible} [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 VFileValue}\n */\nfunction looksLikeAVFileValue(value) {\n return typeof value === 'string' || isBuffer(value)\n}\n","/**\n * @typedef Options\n * @property {boolean} [includeImageAlt=true]\n */\n\n/**\n * Get the text content of a node.\n * Prefer the node’s plain-text fields, otherwise serialize its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} node\n * @param {Options} [options]\n * @returns {string}\n */\nexport function toString(node, options) {\n var {includeImageAlt = true} = options || {}\n return one(node, includeImageAlt)\n}\n\n/**\n * @param {unknown} node\n * @param {boolean} includeImageAlt\n * @returns {string}\n */\nfunction one(node, includeImageAlt) {\n return (\n (node &&\n typeof node === 'object' &&\n // @ts-ignore looks like a literal.\n (node.value ||\n // @ts-ignore looks like an image.\n (includeImageAlt ? node.alt : '') ||\n // @ts-ignore looks like a parent.\n ('children' in node && all(node.children, includeImageAlt)) ||\n (Array.isArray(node) && all(node, includeImageAlt)))) ||\n ''\n )\n}\n\n/**\n * @param {Array.} values\n * @param {boolean} includeImageAlt\n * @returns {string}\n */\nfunction all(values, includeImageAlt) {\n /** @type {Array.} */\n var result = []\n var index = -1\n\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt)\n }\n\n return result.join('')\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {InitialConstruct} */\nexport const content = {\n tokenize: initializeContent\n}\n/** @type {Initializer} */\n\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(\n this.parser.constructs.contentInitial,\n afterContentStartConstruct,\n paragraphInitial\n )\n /** @type {Token} */\n\n let previous\n return contentStart\n /** @type {State} */\n\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, contentStart, 'linePrefix')\n }\n /** @type {State} */\n\n function paragraphInitial(code) {\n effects.enter('paragraph')\n return lineStart(code)\n }\n /** @type {State} */\n\n function lineStart(code) {\n const token = effects.enter('chunkText', {\n contentType: 'text',\n previous\n })\n\n if (previous) {\n previous.next = token\n }\n\n previous = token\n return data(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null) {\n effects.exit('chunkText')\n effects.exit('paragraph')\n effects.consume(code)\n return\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n effects.exit('chunkText')\n return lineStart\n } // Data.\n\n effects.consume(code)\n return data\n }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Point} Point\n */\n\n/**\n * @typedef {Record} StackState\n * @typedef {[Construct, StackState]} StackItem\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n/** @type {InitialConstruct} */\n\nexport const document = {\n tokenize: initializeDocument\n}\n/** @type {Construct} */\n\nconst containerConstruct = {\n tokenize: tokenizeContainer\n}\n/** @type {Initializer} */\n\nfunction initializeDocument(effects) {\n const self = this\n /** @type {StackItem[]} */\n\n const stack = []\n let continued = 0\n /** @type {TokenizeContext|undefined} */\n\n let childFlow\n /** @type {Token|undefined} */\n\n let childToken\n /** @type {number} */\n\n let lineStartOffset\n return start\n /** @type {State} */\n\n function start(code) {\n // First we iterate through the open blocks, starting with the root\n // document, and descending through last children down to the last open\n // block.\n // Each block imposes a condition that the line must satisfy if the block is\n // to remain open.\n // For example, a block quote requires a `>` character.\n // A paragraph requires a non-blank line.\n // In this phase we may match all or just some of the open blocks.\n // But we cannot close unmatched blocks yet, because we may have a lazy\n // continuation line.\n if (continued < stack.length) {\n const item = stack[continued]\n self.containerState = item[1]\n return effects.attempt(\n item[0].continuation,\n documentContinue,\n checkNewContainers\n )(code)\n } // Done.\n\n return checkNewContainers(code)\n }\n /** @type {State} */\n\n function documentContinue(code) {\n continued++ // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it’s already used in the wild by\n // extensions.\n\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined\n\n if (childFlow) {\n closeFlow()\n } // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {Point|undefined} */\n\n let point // Find the flow chunk.\n\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n }\n\n exitContainers(continued) // Fix positions.\n\n let index = indexBeforeExits\n\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n } // Inject the exits earlier (they’re still also at the end).\n\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n ) // Discard the duplicate exits.\n\n self.events.length = index\n return checkNewContainers(code)\n }\n\n return start(code)\n }\n /** @type {State} */\n\n function checkNewContainers(code) {\n // Next, after consuming the continuation markers for existing blocks, we\n // look for new block starts (e.g. `>` for a block quote).\n // If we encounter a new block start, we close any blocks unmatched in\n // step 1 before creating the new block as a child of the last matched\n // block.\n if (continued === stack.length) {\n // No need to `check` whether there’s a container, of `exitContainers`\n // would be moot.\n // We can instead immediately `attempt` to parse one.\n if (!childFlow) {\n return documentContinued(code)\n } // If we have concrete content, such as block HTML or fenced code,\n // we can’t have containers “pierce” into them, so we can immediately\n // start.\n\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code)\n } // If we do have flow, it could still be a blank line,\n // but we’d be interrupting it w/ a new container if there’s a current\n // construct.\n\n self.interrupt = Boolean(\n childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n )\n } // Check if there is a new container.\n\n self.containerState = {}\n return effects.check(\n containerConstruct,\n thereIsANewContainer,\n thereIsNoNewContainer\n )(code)\n }\n /** @type {State} */\n\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow()\n exitContainers(continued)\n return documentContinued(code)\n }\n /** @type {State} */\n\n function thereIsNoNewContainer(code) {\n self.parser.lazy[self.now().line] = continued !== stack.length\n lineStartOffset = self.now().offset\n return flowStart(code)\n }\n /** @type {State} */\n\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n containerContinue,\n flowStart\n )(code)\n }\n /** @type {State} */\n\n function containerContinue(code) {\n continued++\n stack.push([self.currentConstruct, self.containerState]) // Try another.\n\n return documentContinued(code)\n }\n /** @type {State} */\n\n function flowStart(code) {\n if (code === null) {\n if (childFlow) closeFlow()\n exitContainers(0)\n effects.consume(code)\n return\n }\n\n childFlow = childFlow || self.parser.flow(self.now())\n effects.enter('chunkFlow', {\n contentType: 'flow',\n previous: childToken,\n _tokenizer: childFlow\n })\n return flowContinue(code)\n }\n /** @type {State} */\n\n function flowContinue(code) {\n if (code === null) {\n writeToChild(effects.exit('chunkFlow'), true)\n exitContainers(0)\n effects.consume(code)\n return\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n writeToChild(effects.exit('chunkFlow')) // Get ready for the next line.\n\n continued = 0\n self.interrupt = undefined\n return start\n }\n\n effects.consume(code)\n return flowContinue\n }\n /**\n * @param {Token} token\n * @param {boolean} [eof]\n * @returns {void}\n */\n\n function writeToChild(token, eof) {\n const stream = self.sliceStream(token)\n if (eof) stream.push(null)\n token.previous = childToken\n if (childToken) childToken.next = token\n childToken = token\n childFlow.defineSkip(token.start)\n childFlow.write(stream) // Alright, so we just added a lazy line:\n //\n // ```markdown\n // > a\n // b.\n //\n // Or:\n //\n // > ~~~c\n // d\n //\n // Or:\n //\n // > | e |\n // f\n // ```\n //\n // The construct in the second example (fenced code) does not accept lazy\n // lines, so it marked itself as done at the end of its first line, and\n // then the content construct parses `d`.\n // Most constructs in markdown match on the first line: if the first line\n // forms a construct, a non-lazy line can’t “unmake” it.\n //\n // The construct in the third example is potentially a GFM table, and\n // those are *weird*.\n // It *could* be a table, from the first line, if the following line\n // matches a condition.\n // In this case, that second line is lazy, which “unmakes” the first line\n // and turns the whole into one content block.\n //\n // We’ve now parsed the non-lazy and the lazy line, and can figure out\n // whether the lazy line started a new flow block.\n // If it did, we exit the current containers between the two flow blocks.\n\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length\n\n while (index--) {\n if (\n // The token starts before the line ending…\n childFlow.events[index][1].start.offset < lineStartOffset && // …and either is not ended yet…\n (!childFlow.events[index][1].end || // …or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)\n ) {\n // Exit: there’s still something open, which means it’s a lazy line\n // part of something.\n return\n }\n } // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {boolean|undefined} */\n\n let seen\n /** @type {Point|undefined} */\n\n let point // Find the previous chunk (the one before the lazy line).\n\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n\n seen = true\n }\n }\n\n exitContainers(continued) // Fix positions.\n\n index = indexBeforeExits\n\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n } // Inject the exits earlier (they’re still also at the end).\n\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n ) // Discard the duplicate exits.\n\n self.events.length = index\n }\n }\n /**\n * @param {number} size\n * @returns {void}\n */\n\n function exitContainers(size) {\n let index = stack.length // Exit open containers.\n\n while (index-- > size) {\n const entry = stack[index]\n self.containerState = entry[1]\n entry[0].exit.call(self, effects)\n }\n\n stack.length = size\n }\n\n function closeFlow() {\n childFlow.write([null])\n childToken = undefined\n childFlow = undefined\n self.containerState._closeFlow = undefined\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContainer(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(this.parser.constructs.document, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n )\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {blankLine, content} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n}\n/** @type {Initializer} */\n\nfunction initializeFlow(effects) {\n const self = this\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine,\n atBlankEnding, // Try to parse initial flow (essentially, only code).\n effects.attempt(\n this.parser.constructs.flowInitial,\n afterConstruct,\n factorySpace(\n effects,\n effects.attempt(\n this.parser.constructs.flow,\n afterConstruct,\n effects.attempt(content, afterConstruct)\n ),\n 'linePrefix'\n )\n )\n )\n return initial\n /** @type {State} */\n\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n self.currentConstruct = undefined\n return initial\n }\n /** @type {State} */\n\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n self.currentConstruct = undefined\n return initial\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nexport const resolver = {\n resolveAll: createResolver()\n}\nexport const string = initializeFactory('string')\nexport const text = initializeFactory('text')\n/**\n * @param {'string'|'text'} field\n * @returns {InitialConstruct}\n */\n\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n /** @type {Initializer} */\n\n function initializeText(effects) {\n const self = this\n const constructs = this.parser.constructs[field]\n const text = effects.attempt(constructs, start, notText)\n return start\n /** @type {State} */\n\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\n /** @type {State} */\n\n function notText(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('data')\n effects.consume(code)\n return data\n }\n /** @type {State} */\n\n function data(code) {\n if (atBreak(code)) {\n effects.exit('data')\n return text(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n /**\n * @param {Code} code\n * @returns {boolean}\n */\n\n function atBreak(code) {\n if (code === null) {\n return true\n }\n\n const list = constructs[code]\n let index = -1\n\n if (list) {\n while (++index < list.length) {\n const item = list[index]\n\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true\n }\n }\n }\n\n return false\n }\n }\n}\n/**\n * @param {Resolver} [extraResolver]\n * @returns {Resolver}\n */\n\nfunction createResolver(extraResolver) {\n return resolveAllText\n /** @type {Resolver} */\n\n function resolveAllText(events, context) {\n let index = -1\n /** @type {number|undefined} */\n\n let enter // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === 'data') {\n enter = index\n index++\n }\n } else if (!events[index] || events[index][1].type !== 'data') {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return extraResolver ? extraResolver(events, context) : events\n }\n}\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\n\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0 // Skip first.\n\n while (++eventIndex <= events.length) {\n if (\n (eventIndex === events.length ||\n events[eventIndex][1].type === 'lineEnding') &&\n events[eventIndex - 1][1].type === 'data'\n ) {\n const data = events[eventIndex - 1][1]\n const chunks = context.sliceStream(data)\n let index = chunks.length\n let bufferIndex = -1\n let size = 0\n /** @type {boolean|undefined} */\n\n let tabs\n\n while (index--) {\n const chunk = chunks[index]\n\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length\n\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++\n bufferIndex--\n }\n\n if (bufferIndex) break\n bufferIndex = -1\n } // Number\n else if (chunk === -2) {\n tabs = true\n size++\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++\n break\n }\n }\n\n if (size) {\n const token = {\n type:\n eventIndex === events.length || tabs || size < 2\n ? 'lineSuffix'\n : 'hardBreakTrailing',\n start: {\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size,\n _index: data.start._index + index,\n _bufferIndex: index\n ? bufferIndex\n : data.start._bufferIndex + bufferIndex\n },\n end: Object.assign({}, data.end)\n }\n data.end = Object.assign({}, token.start)\n\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token)\n } else {\n events.splice(\n eventIndex,\n 0,\n ['enter', token, context],\n ['exit', token, context]\n )\n eventIndex += 2\n }\n }\n\n eventIndex++\n }\n }\n\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n */\n\n/**\n * @typedef Info\n * @property {() => void} restore\n * @property {number} from\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * @param {Info} info\n * @returns {void}\n */\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\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 * @param {InitialConstruct} initialize\n * @param {Omit} [from]\n * @returns {TokenizeContext}\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = Object.assign(\n from\n ? Object.assign({}, from)\n : {\n line: 1,\n column: 1,\n offset: 0\n },\n {\n _index: 0,\n _bufferIndex: -1\n }\n )\n /** @type {Record} */\n\n const columnStart = {}\n /** @type {Construct[]} */\n\n const resolveAllConstructs = []\n /** @type {Chunk[]} */\n\n let chunks = []\n /** @type {Token[]} */\n\n let stack = []\n /** @type {boolean|undefined} */\n\n let consumed = true\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n\n const effects = {\n consume,\n enter,\n exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n }\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n\n const context = {\n previous: null,\n code: null,\n containerState: {},\n events: [],\n parser,\n sliceStream,\n sliceSerialize,\n now,\n defineSkip,\n write\n }\n /**\n * The state function.\n *\n * @type {State|void}\n */\n\n let state = initialize.tokenize.call(context, effects)\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n\n let expectedCode\n\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n }\n\n return context\n /** @type {TokenizeContext['write']} */\n\n function write(slice) {\n chunks = push(chunks, slice)\n main() // Exit if we’re not done, resolve might change stuff.\n\n if (chunks[chunks.length - 1] !== null) {\n return []\n }\n\n addResult(initialize, 0) // Otherwise, resolve, and exit.\n\n context.events = resolveAll(resolveAllConstructs, context.events, context)\n return context.events\n } //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs)\n }\n /** @type {TokenizeContext['sliceStream']} */\n\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n /** @type {TokenizeContext['now']} */\n\n function now() {\n return Object.assign({}, point)\n }\n /** @type {TokenizeContext['defineSkip']} */\n\n function defineSkip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\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 {void}\n */\n\n function main() {\n /** @type {number} */\n let chunkIndex\n\n while (point._index < chunks.length) {\n const chunk = chunks[point._index] // If we’re in a buffer chunk, loop through it.\n\n if (typeof chunk === 'string') {\n chunkIndex = point._index\n\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0\n }\n\n while (\n point._index === chunkIndex &&\n point._bufferIndex < chunk.length\n ) {\n go(chunk.charCodeAt(point._bufferIndex))\n }\n } else {\n go(chunk)\n }\n }\n }\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * @returns {void}\n */\n\n function go(code) {\n consumed = undefined\n expectedCode = code\n state = state(code)\n }\n /** @type {Effects['consume']} */\n\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 } // Not in a string chunk.\n\n if (point._bufferIndex < 0) {\n point._index++\n } else {\n point._bufferIndex++ // At end of string chunk.\n // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n // strings.\n\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1\n point._index++\n }\n } // Expose the previous character.\n\n context.previous = code // Mark as consumed.\n\n consumed = true\n }\n /** @type {Effects['enter']} */\n\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 /** @type {Effects['exit']} */\n\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 * Use results.\n *\n * @type {ReturnHandle}\n */\n\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n }\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n\n function onsuccessfulcheck(_, info) {\n info.restore()\n }\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * @param {Record} [fields]\n */\n\n function constructFactory(onreturn, fields) {\n return hook\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Construct|Construct[]|ConstructRecord} constructs\n * @param {State} returnState\n * @param {State} [bogusState]\n * @returns {State}\n */\n\n function hook(constructs, returnState, bogusState) {\n /** @type {Construct[]} */\n let listOfConstructs\n /** @type {number} */\n\n let constructIndex\n /** @type {Construct} */\n\n let currentConstruct\n /** @type {Info} */\n\n let info\n return Array.isArray(constructs)\n ? /* c8 ignore next 1 */\n handleListOfConstructs(constructs)\n : 'tokenize' in constructs // @ts-expect-error Looks like a construct.\n ? handleListOfConstructs([constructs])\n : handleMapOfConstructs(constructs)\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * @returns {State}\n */\n\n function handleMapOfConstructs(map) {\n return start\n /** @type {State} */\n\n function start(code) {\n const def = code !== null && map[code]\n const all = code !== null && map.null\n const list = [\n // To do: add more extension tests.\n\n /* c8 ignore next 2 */\n ...(Array.isArray(def) ? def : def ? [def] : []),\n ...(Array.isArray(all) ? all : all ? [all] : [])\n ]\n return handleListOfConstructs(list)(code)\n }\n }\n /**\n * Handle a list of construct.\n *\n * @param {Construct[]} list\n * @returns {State}\n */\n\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n\n if (list.length === 0) {\n return bogusState\n }\n\n return handleConstruct(list[constructIndex])\n }\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * @returns {State}\n */\n\n function handleConstruct(construct) {\n return start\n /** @type {State} */\n\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\n if (!construct.partial) {\n context.currentConstruct = construct\n }\n\n if (\n construct.name &&\n context.parser.constructs.disable.null.includes(construct.name)\n ) {\n return nok(code)\n }\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,\n effects,\n ok,\n nok\n )(code)\n }\n }\n /** @type {State} */\n\n function ok(code) {\n consumed = true\n onreturn(currentConstruct, info)\n return returnState\n }\n /** @type {State} */\n\n function nok(code) {\n consumed = true\n info.restore()\n\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n\n return bogusState\n }\n }\n }\n /**\n * @param {Construct} construct\n * @param {number} from\n * @returns {void}\n */\n\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct)\n }\n\n if (construct.resolve) {\n splice(\n context.events,\n from,\n context.events.length - from,\n construct.resolve(context.events.slice(from), context)\n )\n }\n\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context)\n }\n }\n /**\n * Store state.\n *\n * @returns {Info}\n */\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 restore,\n from: startEventsIndex\n }\n /**\n * Restore state.\n *\n * @returns {void}\n */\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 * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {void}\n */\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 * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Chunk[]} chunks\n * @param {Pick} token\n * @returns {Chunk[]}\n */\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 {Chunk[]} */\n\n let view\n\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\n if (startBufferIndex > -1) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view[0] = view[0].slice(startBufferIndex)\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\n return view\n}\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Chunk[]} chunks\n * @param {boolean} [expandTabs=false]\n * @returns {string}\n */\n\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1\n /** @type {string[]} */\n\n const result = []\n /** @type {boolean|undefined} */\n\n let atTab\n\n while (++index < chunks.length) {\n const chunk = chunks[index]\n /** @type {string} */\n\n let value\n\n if (typeof chunk === 'string') {\n value = chunk\n } else\n switch (chunk) {\n case -5: {\n value = '\\r'\n break\n }\n\n case -4: {\n value = '\\n'\n break\n }\n\n case -3: {\n value = '\\r' + '\\n'\n break\n }\n\n case -2: {\n value = expandTabs ? ' ' : '\\t'\n break\n }\n\n case -1: {\n if (!expandTabs && atTab) continue\n value = ' '\n break\n }\n\n default: {\n // Currently only replacement character.\n value = String.fromCharCode(chunk)\n }\n }\n\n atTab = chunk === -2\n result.push(value)\n }\n\n return result.join('')\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n/** @type {Extension['document']} */\n\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/** @type {Extension['contentInitial']} */\n\nexport const contentInitial = {\n [91]: definition\n}\n/** @type {Extension['flowInitial']} */\n\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n/** @type {Extension['flow']} */\n\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/** @type {Extension['string']} */\n\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n/** @type {Extension['text']} */\n\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/** @type {Extension['insideSpan']} */\n\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n/** @type {Extension['attentionMarkers']} */\n\nexport const attentionMarkers = {\n null: [42, 95]\n}\n/** @type {Extension['disable']} */\n\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding} [encoding]\n * @param {boolean} [end=false]\n * @returns {Chunk[]}\n */\nconst search = /[\\0\\t\\n\\r]/g\n/**\n * @returns {Preprocessor}\n */\n\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean|undefined} */\n\n let start = true\n /** @type {boolean|undefined} */\n\n let atCarriageReturn\n return preprocessor\n /** @type {Preprocessor} */\n\n function preprocessor(value, encoding, end) {\n /** @type {Chunk[]} */\n const chunks = []\n /** @type {RegExpMatchArray|null} */\n\n let match\n /** @type {number} */\n\n let next\n /** @type {number} */\n\n let startPosition\n /** @type {number} */\n\n let endPosition\n /** @type {Code} */\n\n let code // @ts-expect-error `Buffer` does allow an encoding.\n\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n\n if (start) {\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n\n start = undefined\n }\n\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\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\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n\n while (column++ < next) chunks.push(-1)\n\n break\n }\n\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n\n startPosition = endPosition + 1\n }\n\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n\n return chunks\n }\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 * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base)\n\n if (\n // C0 except for HT, LF, FF, CR, space\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) || // Control character (DEL) of the basic block and C1 controls.\n (code > 126 && code < 160) || // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) || // Noncharacters.\n (code > 64975 && code < 65008) ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 || // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\n }\n\n return String.fromCharCode(code)\n}\n","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n/**\n * Utility to decode markdown strings (which occur in places such as fenced\n * code info strings, destinations, labels, and titles).\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * @returns {string}\n */\n\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\n\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n } // Reference.\n\n const head = $2.charCodeAt(0)\n\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\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist').Point} Point\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Content} Content\n * @typedef {Root|Content} Node\n * @typedef {Extract} Parent\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n *\n * @typedef {UnistParent & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @typedef _CompileDataFields\n * @property {boolean|undefined} expectingFirstListItemValue\n * @property {boolean|undefined} flowCodeInside\n * @property {boolean|undefined} setextHeadingSlurpLineEnding\n * @property {boolean|undefined} atHardBreak\n * @property {'collapsed'|'full'} referenceType\n * @property {boolean|undefined} inReference\n * @property {'characterReferenceMarkerHexadecimal'|'characterReferenceMarkerNumeric'} characterReferenceType\n *\n * @typedef {Record & Partial<_CompileDataFields>} CompileData\n *\n * @typedef {(tree: Root) => Root|void} Transform\n * @typedef {(this: CompileContext, token: Token) => void} Handle\n * @typedef {Record} Handles\n * Token types mapping to handles\n * @typedef {Record|Array> & {canContainEols: Array, transforms: Array, enter: Handles, exit: Handles}} NormalizedExtension\n * @typedef {Partial} Extension\n * An mdast extension changes how markdown tokens are turned into mdast.\n *\n * @typedef {(this: Omit, left: Token|undefined, right: Token) => void} OnEnterError\n * @typedef {(this: Omit, left: Token, right: Token) => void} OnExitError\n *\n * @typedef CompileContext\n * mdast compiler context\n * @property {Array} stack\n * @property {Array<[Token, OnEnterError|undefined]>} tokenStack\n * @property {(key: string, value?: unknown) => void} setData\n * Set data into the key-value store.\n * @property {(key: K) => CompileData[K]} getData\n * Get data from the key-value store.\n * @property {(this: CompileContext) => void} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: N, token: Token, onError?: OnEnterError) => N} enter\n * Enter a token.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => Node} exit\n * Exit a token.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {NormalizedExtension} config\n * Configuration.\n *\n * @typedef {{mdastExtensions?: Array>}} FromMarkdownOptions\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n */\nimport {toString} from 'mdast-util-to-string'\nimport {parse} from 'micromark/lib/parse.js'\nimport {preprocess} from 'micromark/lib/preprocess.js'\nimport {postprocess} from 'micromark/lib/postprocess.js'\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 * @param value Markdown to parse (`string` or `Buffer`).\n * @param [encoding] Character encoding to understand `value` as when it’s a `Buffer` (`string`, default: `'utf8'`).\n * @param [options] Configuration\n */\n\nexport const fromMarkdown =\n /**\n * @type {(\n * ((value: Value, encoding: Encoding, options?: Options) => Root) &\n * ((value: Value, options?: Options) => Root)\n * )}\n */\n\n /**\n * @param {Value} value\n * @param {Encoding} [encoding]\n * @param {Options} [options]\n * @returns {Root}\n */\n function (value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n\n return compiler(options)(\n postprocess(\n parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n }\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options} [options]\n */\n\nfunction compiler(options = {}) {\n /** @type {NormalizedExtension} */\n // @ts-expect-error: our base has all required fields, so the result will too.\n const config = configure(\n {\n transforms: [],\n canContainEols: [\n 'emphasis',\n 'fragment',\n 'heading',\n 'paragraph',\n 'strong'\n ],\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 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 options.mdastExtensions || []\n )\n /** @type {CompileData} */\n\n const data = {}\n return compile\n /**\n * @param {Array} events\n * @returns {Root}\n */\n\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {CompileContext['stack']} */\n\n const stack = [tree]\n /** @type {CompileContext['tokenStack']} */\n\n const tokenStack = []\n /** @type {Array} */\n\n const listStack = []\n /** @type {Omit} */\n\n const context = {\n stack,\n tokenStack,\n config,\n enter,\n exit,\n buffer,\n resume,\n setData,\n getData\n }\n let index = -1\n\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 (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\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\n index = -1\n\n while (++index < events.length) {\n const handler = config[events[index][0]]\n\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {\n sliceSerialize: events[index][2].sliceSerialize\n },\n context\n ),\n events[index][1]\n )\n }\n }\n\n if (tokenStack.length > 0) {\n const tail = tokenStack[tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n } // Figure out `root` position.\n\n tree.position = {\n start: point(\n events.length > 0\n ? events[0][1].start\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n ),\n end: point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n )\n }\n index = -1\n\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n\n return tree\n }\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\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\n let listItem\n /** @type {number|undefined} */\n\n let lineIndex\n /** @type {number|undefined} */\n\n let firstBlankLineIndex\n /** @type {boolean|undefined} */\n\n let atMarker\n\n while (++index <= length) {\n const event = events[index]\n\n if (\n event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered' ||\n event[1].type === 'blockQuote'\n ) {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n\n atMarker = undefined\n } else if (event[1].type === 'lineEndingBlank') {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n\n atMarker = undefined\n }\n } else if (\n event[1].type === 'linePrefix' ||\n event[1].type === 'listItemValue' ||\n event[1].type === 'listItemMarker' ||\n event[1].type === 'listItemPrefix' ||\n event[1].type === 'listItemPrefixWhitespace'\n ) {\n // Empty.\n } else {\n atMarker = undefined\n }\n\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n let tailIndex = index\n lineIndex = undefined\n\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === 'linePrefix' ||\n tailEvent[1].type === 'blockQuotePrefix' ||\n tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n tailEvent[1].type === 'blockQuoteMarker' ||\n tailEvent[1].type === 'listItemIndent'\n ) {\n // Empty\n } else {\n break\n }\n }\n\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n // @ts-expect-error Patched.\n listItem._spread = true\n } // Fix position.\n\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n } // Create a new list item.\n\n if (event[1].type === 'listItemPrefix') {\n listItem = {\n type: 'listItem',\n // @ts-expect-error Patched\n _spread: false,\n start: Object.assign({}, event[1].start)\n } // @ts-expect-error: `listItem` is most definitely defined, TS...\n\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n } // @ts-expect-error Patched.\n\n events[start][1]._spread = listSpread\n return length\n }\n /**\n * @type {CompileContext['setData']}\n * @param [value]\n */\n\n function setData(key, value) {\n data[key] = value\n }\n /**\n * @type {CompileContext['getData']}\n * @template {string} K\n * @param {K} key\n * @returns {CompileData[K]}\n */\n\n function getData(key) {\n return data[key]\n }\n /**\n * @param {Point} d\n * @returns {Point}\n */\n\n function point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n }\n /**\n * @param {(token: Token) => Node} create\n * @param {Handle} [and]\n * @returns {Handle}\n */\n\n function opener(create, and) {\n return open\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n /** @type {CompileContext['buffer']} */\n\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n /**\n * @type {CompileContext['enter']}\n * @template {Node} N\n * @this {CompileContext}\n * @param {N} node\n * @param {Token} token\n * @param {OnEnterError} [errorHandler]\n * @returns {N}\n */\n\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n // @ts-expect-error: Assume `Node` can exist as a child of `parent`.\n parent.children.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler]) // @ts-expect-error: `end` will be patched later.\n\n node.position = {\n start: point(token.start)\n }\n return node\n }\n /**\n * @param {Handle} [and]\n * @returns {Handle}\n */\n\n function closer(and) {\n return close\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n /**\n * @type {CompileContext['exit']}\n * @this {CompileContext}\n * @param {Token} token\n * @param {OnExitError} [onExitError]\n * @returns {Node}\n */\n\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\n\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({\n start: token.start,\n end: token.end\n }) +\n '): it’s not open'\n )\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\n node.position.end = point(token.end)\n return node\n }\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n\n function resume() {\n return toString(this.stack.pop())\n } //\n // Handlers.\n //\n\n /** @type {Handle} */\n\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n /** @type {Handle} */\n\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n const ancestor =\n /** @type {List} */\n this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n setData('expectingFirstListItemValue')\n }\n }\n /** @type {Handle} */\n\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node =\n /** @type {Code} */\n this.stack[this.stack.length - 1]\n node.lang = data\n }\n /** @type {Handle} */\n\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node =\n /** @type {Code} */\n this.stack[this.stack.length - 1]\n node.meta = data\n }\n /** @type {Handle} */\n\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (getData('flowCodeInside')) return\n this.buffer()\n setData('flowCodeInside', true)\n }\n /** @type {Handle} */\n\n function onexitcodefenced() {\n const data = this.resume()\n const node =\n /** @type {Code} */\n this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n setData('flowCodeInside')\n }\n /** @type {Handle} */\n\n function onexitcodeindented() {\n const data = this.resume()\n const node =\n /** @type {Code} */\n this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n /** @type {Handle} */\n\n function onexitdefinitionlabelstring(token) {\n // Discard label, use the source content instead.\n const label = this.resume()\n const node =\n /** @type {Definition} */\n this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n /** @type {Handle} */\n\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node =\n /** @type {Definition} */\n this.stack[this.stack.length - 1]\n node.title = data\n }\n /** @type {Handle} */\n\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node =\n /** @type {Definition} */\n this.stack[this.stack.length - 1]\n node.url = data\n }\n /** @type {Handle} */\n\n function onexitatxheadingsequence(token) {\n const node =\n /** @type {Heading} */\n this.stack[this.stack.length - 1]\n\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n /** @type {Handle} */\n\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n /** @type {Handle} */\n\n function onexitsetextheadinglinesequence(token) {\n const node =\n /** @type {Heading} */\n this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n }\n /** @type {Handle} */\n\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n /** @type {Handle} */\n\n function onenterdata(token) {\n const parent =\n /** @type {Parent} */\n this.stack[this.stack.length - 1]\n /** @type {Node} */\n\n let tail = parent.children[parent.children.length - 1]\n\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text() // @ts-expect-error: we’ll add `end` later.\n\n tail.position = {\n start: point(token.start)\n } // @ts-expect-error: Assume `parent` accepts `text`.\n\n parent.children.push(tail)\n }\n\n this.stack.push(tail)\n }\n /** @type {Handle} */\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 /** @type {Handle} */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n\n // If we’re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n const tail = context.children[context.children.length - 1]\n tail.position.end = point(token.end)\n setData('atHardBreak')\n return\n }\n\n if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n /** @type {Handle} */\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n /** @type {Handle} */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node =\n /** @type {HTML} */\n this.stack[this.stack.length - 1]\n node.value = data\n }\n /** @type {Handle} */\n\n function onexithtmltext() {\n const data = this.resume()\n const node =\n /** @type {HTML} */\n this.stack[this.stack.length - 1]\n node.value = data\n }\n /** @type {Handle} */\n\n function onexitcodetext() {\n const data = this.resume()\n const node =\n /** @type {InlineCode} */\n this.stack[this.stack.length - 1]\n node.value = data\n }\n /** @type {Handle} */\n\n function onexitlink() {\n const context =\n /** @type {Link & {identifier: string, label: string}} */\n this.stack[this.stack.length - 1] // To do: clean.\n\n if (getData('inReference')) {\n context.type += 'Reference' // @ts-expect-error: mutate.\n\n context.referenceType = getData('referenceType') || 'shortcut' // @ts-expect-error: mutate.\n\n delete context.url\n delete context.title\n } else {\n // @ts-expect-error: mutate.\n delete context.identifier // @ts-expect-error: mutate.\n\n delete context.label\n }\n\n setData('referenceType')\n }\n /** @type {Handle} */\n\n function onexitimage() {\n const context =\n /** @type {Image & {identifier: string, label: string}} */\n this.stack[this.stack.length - 1] // To do: clean.\n\n if (getData('inReference')) {\n context.type += 'Reference' // @ts-expect-error: mutate.\n\n context.referenceType = getData('referenceType') || 'shortcut' // @ts-expect-error: mutate.\n\n delete context.url\n delete context.title\n } else {\n // @ts-expect-error: mutate.\n delete context.identifier // @ts-expect-error: mutate.\n\n delete context.label\n }\n\n setData('referenceType')\n }\n /** @type {Handle} */\n\n function onexitlabeltext(token) {\n const ancestor =\n /** @type {(Link|Image) & {identifier: string, label: string}} */\n this.stack[this.stack.length - 2]\n const string = this.sliceSerialize(token)\n ancestor.label = decodeString(string)\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n /** @type {Handle} */\n\n function onexitlabel() {\n const fragment =\n /** @type {Fragment} */\n this.stack[this.stack.length - 1]\n const value = this.resume()\n const node =\n /** @type {(Link|Image) & {identifier: string, label: string}} */\n this.stack[this.stack.length - 1] // Assume a reference.\n\n setData('inReference', true)\n\n if (node.type === 'link') {\n // @ts-expect-error: Assume static phrasing content.\n node.children = fragment.children\n } else {\n node.alt = value\n }\n }\n /** @type {Handle} */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node =\n /** @type {Link|Image} */\n this.stack[this.stack.length - 1]\n node.url = data\n }\n /** @type {Handle} */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node =\n /** @type {Link|Image} */\n this.stack[this.stack.length - 1]\n node.title = data\n }\n /** @type {Handle} */\n\n function onexitresource() {\n setData('inReference')\n }\n /** @type {Handle} */\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n /** @type {Handle} */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node =\n /** @type {LinkReference|ImageReference} */\n this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n /** @type {Handle} */\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type)\n }\n /** @type {Handle} */\n\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = getData('characterReferenceType')\n /** @type {string} */\n\n let value\n\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n setData('characterReferenceType')\n } else {\n // @ts-expect-error `decodeNamedCharacterReference` can return false for\n // invalid named character references, but everything we’ve tokenized is\n // valid.\n value = decodeNamedCharacterReference(data)\n }\n\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n /** @type {Handle} */\n\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node =\n /** @type {Link} */\n this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n /** @type {Handle} */\n\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node =\n /** @type {Link} */\n this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n } //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n /** @returns {Code} */\n\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n /** @returns {InlineCode} */\n\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n /** @returns {Definition} */\n\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n /** @returns {Emphasis} */\n\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n /** @returns {Heading} */\n\n function heading() {\n // @ts-expect-error `depth` will be set later.\n return {\n type: 'heading',\n depth: undefined,\n children: []\n }\n }\n /** @returns {Break} */\n\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n /** @returns {HTML} */\n\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n /** @returns {Image} */\n\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n /** @returns {Link} */\n\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n /**\n * @param {Token} token\n * @returns {List}\n */\n\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n // @ts-expect-error Patched.\n spread: token._spread,\n children: []\n }\n }\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n\n function listItem(token) {\n return {\n type: 'listItem',\n // @ts-expect-error Patched.\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n /** @returns {Paragraph} */\n\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n /** @returns {Strong} */\n\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n /** @returns {Text} */\n\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n /** @returns {ThematicBreak} */\n\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n/**\n * @param {Extension} combined\n * @param {Array>} extensions\n * @returns {Extension}\n */\n\nfunction configure(combined, extensions) {\n let index = -1\n\n while (++index < extensions.length) {\n const value = extensions[index]\n\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n\n return combined\n}\n/**\n * @param {Extension} combined\n * @param {Extension} extension\n * @returns {void}\n */\n\nfunction extension(combined, extension) {\n /** @type {string} */\n let key\n\n for (key in extension) {\n if (own.call(extension, key)) {\n const list = key === 'canContainEols' || key === 'transforms'\n const maybe = own.call(combined, key) ? combined[key] : undefined\n /* c8 ignore next */\n\n const left = maybe || (combined[key] = list ? [] : {})\n const right = extension[key]\n\n if (right) {\n if (list) {\n // @ts-expect-error: `left` is an array.\n combined[key] = [...left, ...right]\n } else {\n Object.assign(left, right)\n }\n }\n }\n }\n}\n/** @type {OnEnterError} */\n\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n stringifyPosition({\n start: left.start,\n end: left.end\n }) +\n '): a different token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is still open'\n )\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {subtokenize} from 'micromark-util-subtokenize'\n/**\n * @param {Event[]} events\n * @returns {Event[]}\n */\n\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Create} Create\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 {text, string} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n/**\n * @param {ParseOptions} [options]\n * @returns {ParseContext}\n */\n\nexport function parse(options = {}) {\n /** @type {FullNormalizedExtension} */\n // @ts-expect-error `defaultConstructs` is full, so the result will be too.\n const constructs = combineExtensions(\n // @ts-expect-error Same as above.\n [defaultConstructs].concat(options.extensions || [])\n )\n /** @type {ParseContext} */\n\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n /**\n * @param {InitialConstruct} initial\n */\n\n function create(initial) {\n return creator\n /** @type {Create} */\n\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","import remarkParse from './lib/index.js'\n\nexport default remarkParse\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/** @type {import('unified').Plugin<[Options?] | void[], string, Root>} */\nexport default function remarkParse(options) {\n /** @type {import('unified').ParserFunction} */\n const parser = (doc) => {\n // Assume options.\n const settings = /** @type {Options} */ (this.data('settings'))\n\n return fromMarkdown(\n doc,\n Object.assign({}, settings, 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: this.data('micromarkExtensions') || [],\n mdastExtensions: this.data('fromMarkdownExtensions') || []\n })\n )\n }\n\n Object.assign(this, {Parser: parser})\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist').Literal} Literal\n * @typedef {Object.} Props\n * @typedef {Array.|string} ChildrenOrValue\n *\n * @typedef {(, C extends Node[]>(type: T, props: P, children: C) => {type: T, children: C} & P)} BuildParentWithProps\n * @typedef {(>(type: T, props: P, value: string) => {type: T, value: string} & P)} BuildLiteralWithProps\n * @typedef {(>(type: T, props: P) => {type: T} & P)} BuildVoidWithProps\n * @typedef {((type: T, children: C) => {type: T, children: C})} BuildParent\n * @typedef {((type: T, value: string) => {type: T, value: string})} BuildLiteral\n * @typedef {((type: T) => {type: T})} BuildVoid\n */\n\nexport var u = /**\n * @type {BuildVoid & BuildVoidWithProps & BuildLiteral & BuildLiteralWithProps & BuildParent & BuildParentWithProps}\n */ (\n /**\n * @param {string} type Type of node\n * @param {Props|ChildrenOrValue} [props] Additional properties for node (or `children` or `value`)\n * @param {ChildrenOrValue} [value] `children` or `value` of node\n * @returns {Node}\n */\n function (type, props, value) {\n /** @type {Node} */\n var node = {type: String(type)}\n\n if (\n (value === undefined || value === null) &&\n (typeof props === 'string' || Array.isArray(props))\n ) {\n value = props\n } else {\n Object.assign(node, props)\n }\n\n if (Array.isArray(value)) {\n node.children = value\n } else if (value !== undefined && value !== null) {\n node.value = String(value)\n }\n\n return node\n }\n)\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n *\n * @typedef {string} Type\n * @typedef {Object} Props\n *\n * @typedef {null|undefined|Type|Props|TestFunctionAnything|Array.} Test\n */\n\n/**\n * Check if a node passes a test\n *\n * @callback TestFunctionAnything\n * @param {Node} node\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {boolean|void}\n */\n\n/**\n * Check if a node passes a certain node test\n *\n * @template {Node} X\n * @callback TestFunctionPredicate\n * @param {Node} node\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {node is X}\n */\n\n/**\n * @callback AssertAnything\n * @param {unknown} [node]\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {boolean}\n */\n\n/**\n * Check if a node passes a certain node test\n *\n * @template {Node} Y\n * @callback AssertPredicate\n * @param {unknown} [node]\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {node is Y}\n */\n\nexport const is =\n /**\n * Check if a node passes a test.\n * When a `parent` node is known the `index` of node should also be given.\n *\n * @type {(\n * ((node: unknown, test: T['type']|Partial|TestFunctionPredicate|Array.|TestFunctionPredicate>, index?: number|null|undefined, parent?: Parent|null|undefined, context?: unknown) => node is T) &\n * ((node?: unknown, test?: Test, index?: number|null|undefined, parent?: Parent|null|undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * Check if a node passes a test.\n * When a `parent` node is known the `index` of node should also be given.\n *\n * @param {unknown} [node] Node to check\n * @param {Test} [test]\n * When nullish, checks if `node` is a `Node`.\n * When `string`, works like passing `function (node) {return 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 any one of the subtests pass.\n * @param {number|null|undefined} [index] Position of `node` in `parent`\n * @param {Parent|null|undefined} [parent] Parent of `node`\n * @param {unknown} [context] Context object to invoke `test` with\n * @returns {boolean} Whether test passed and `node` is a `Node` (object with `type` set to non-empty `string`).\n */\n // eslint-disable-next-line max-params\n function is(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 // @ts-expect-error Looks like a node.\n return node && node.type && typeof node.type === 'string'\n ? Boolean(check.call(context, node, index, parent))\n : false\n }\n )\n\nexport const convert =\n /**\n * @type {(\n * ((test: T['type']|Partial|TestFunctionPredicate) => AssertPredicate) &\n * ((test?: Test) => AssertAnything)\n * )}\n */\n (\n /**\n * Generate an assertion from a check.\n * @param {Test} [test]\n * When nullish, checks if `node` is a `Node`.\n * When `string`, works like passing `function (node) {return 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 any one of the subtests pass.\n * @returns {AssertAnything}\n */\n function (test) {\n if (test === undefined || test === null) {\n return ok\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n/**\n * @param {Array.} tests\n * @returns {AssertAnything}\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 * @param {unknown[]} parameters\n * @returns {boolean}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].call(this, ...parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Utility to assert each property in `test` is represented in `node`, and each\n * values are strictly equal.\n *\n * @param {Props} check\n * @returns {AssertAnything}\n */\nfunction propsFactory(check) {\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n /** @type {string} */\n let key\n\n for (key in check) {\n // @ts-expect-error: hush, it sure works as an index.\n if (node[key] !== check[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Utility to convert a string into a function which checks a given node’s type\n * for said string.\n *\n * @param {Type} check\n * @returns {AssertAnything}\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 * Utility to convert a string into a function which checks a given node’s type\n * for said string.\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n return assertion\n\n /**\n * @this {unknown}\n * @param {Array.} parameters\n * @returns {boolean}\n */\n function assertion(...parameters) {\n // @ts-expect-error: spreading is fine.\n return Boolean(check.call(this, ...parameters))\n }\n}\n\n// Utility to return true.\nfunction ok() {\n return true\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('./complex-types').Action} Action\n * @typedef {import('./complex-types').Index} Index\n * @typedef {import('./complex-types').ActionTuple} ActionTuple\n * @typedef {import('./complex-types').VisitorResult} VisitorResult\n * @typedef {import('./complex-types').Visitor} Visitor\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from './color.js'\n\n/**\n * Continue traversing as normal\n */\nexport const CONTINUE = true\n/**\n * Do not traverse this node’s children\n */\nexport const SKIP = 'skip'\n/**\n * Stop traversing immediately\n */\nexport const EXIT = false\n\n/**\n * Visit children of tree which pass a test\n *\n * @param tree Abstract syntax tree to walk\n * @param test Test node, optional\n * @param visitor Function to run for each node\n * @param reverse Visit the tree in reverse order, defaults to false\n */\nexport const visitParents =\n /**\n * @type {(\n * ((tree: Tree, test: Check, visitor: import('./complex-types').BuildVisitor, reverse?: boolean) => void) &\n * ((tree: Tree, visitor: import('./complex-types').BuildVisitor, reverse?: boolean) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {import('./complex-types').Visitor} visitor\n * @param {boolean} [reverse]\n */\n function (tree, test, visitor, reverse) {\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 test = null\n }\n\n const is = convert(test)\n const step = reverse ? -1 : 1\n\n factory(tree, null, [])()\n\n /**\n * @param {Node} node\n * @param {number?} index\n * @param {Array.} parents\n */\n function factory(node, index, parents) {\n /** @type {Object.} */\n // @ts-expect-error: hush\n const value = typeof node === 'object' && node !== null ? node : {}\n /** @type {string|undefined} */\n let name\n\n if (typeof value.type === 'string') {\n name =\n typeof value.tagName === 'string'\n ? value.tagName\n : typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' +\n color(value.type + (name ? '<' + name + '>' : '')) +\n ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {ActionTuple} */\n let result = []\n /** @type {ActionTuple} */\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] || null)) {\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n // @ts-expect-error looks like a parent.\n if (node.children && result[0] !== SKIP) {\n // @ts-expect-error looks like a parent.\n offset = (reverse ? node.children.length : -1) + step\n // @ts-expect-error looks like a parent.\n grandparents = parents.concat(node)\n\n // @ts-expect-error looks like a parent.\n while (offset > -1 && offset < node.children.length) {\n // @ts-expect-error looks like a parent.\n subresult = factory(node.children[offset], 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 return result\n }\n }\n }\n )\n\n/**\n * @param {VisitorResult} value\n * @returns {ActionTuple}\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]\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n * @typedef {import('./complex-types').Visitor} Visitor\n */\n\nimport {visitParents, CONTINUE, SKIP, EXIT} from 'unist-util-visit-parents'\n\nexport {CONTINUE, SKIP, EXIT}\n\n/**\n * Visit children of tree which pass a test\n *\n * @param tree Abstract syntax tree to walk\n * @param test Test, optional\n * @param visitor Function to run for each node\n * @param reverse Fisit the tree in reverse, defaults to false\n */\nexport const visit =\n /**\n * @type {(\n * ((tree: Tree, test: Check, visitor: import('./complex-types').BuildVisitor, reverse?: boolean) => void) &\n * ((tree: Tree, visitor: import('./complex-types').BuildVisitor, reverse?: boolean) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {import('./complex-types').Visitor} visitor\n * @param {boolean} [reverse]\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {Node} node\n * @param {Array.} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n return visitor(\n node,\n parent ? parent.children.indexOf(node) : null,\n parent\n )\n }\n }\n )\n","/**\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Node} Node\n * @typedef {Record & {type: string, position?: PositionLike|undefined}} NodeLike\n * @typedef {import('unist').Point} Point\n *\n * @typedef {Partial} PointLike\n *\n * @typedef PositionLike\n * @property {PointLike} [start]\n * @property {PointLike} [end]\n */\n\nexport const pointStart = point('start')\nexport const pointEnd = point('end')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {NodeLike|Node} [node]\n * @returns {Position}\n */\nexport function position(node) {\n return {start: pointStart(node), end: pointEnd(node)}\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'start'|'end'} type\n */\nfunction point(type) {\n return point\n\n /**\n * Get the positional info of `node`.\n *\n * @param {NodeLike|Node} [node]\n * @returns {Point}\n */\n function point(node) {\n const point = (node && node.position && node.position[type]) || {}\n\n return {\n line: point.line || null,\n column: point.column || null,\n offset: point.offset > -1 ? point.offset : null\n }\n }\n}\n","/**\n * @typedef {import('mdast').Root|import('mdast').Content} Node\n * @typedef {import('mdast').Definition} Definition\n */\n\nimport {visit} from 'unist-util-visit'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Find definitions in `node`.\n * Uses CommonMark precedence, which means that earlier definitions are\n * preferred over duplicate later definitions.\n *\n * @param {Node} node\n */\nexport function definitions(node) {\n /** @type {Record} */\n const cache = Object.create(null)\n\n if (!node || !node.type) {\n throw new Error('mdast-util-definitions expected node')\n }\n\n visit(node, 'definition', (definition) => {\n const id = clean(definition.identifier)\n if (id && !own.call(cache, id)) {\n cache[id] = definition\n }\n })\n\n return definition\n\n /**\n * Get a node from the bound definition cache.\n *\n * @param {string} identifier\n * @returns {Definition|null}\n */\n function definition(identifier) {\n const id = clean(identifier)\n return id && own.call(cache, id) ? cache[id] : null\n }\n}\n\n/**\n * @param {string} [value]\n * @returns {string}\n */\nfunction clean(value) {\n return String(value || '').toUpperCase()\n}\n","/**\n * @typedef {import('mdast').Root|import('mdast').Parent['children'][number]} MdastNode\n * @typedef {import('./index.js').H} H\n * @typedef {import('./index.js').Handler} Handler\n * @typedef {import('./index.js').Content} Content\n */\n\nimport {u} from 'unist-builder'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Transform an unknown node.\n * @type {Handler}\n * @param {MdastNode} node\n */\nfunction unknown(h, node) {\n const data = node.data || {}\n\n if (\n 'value' in node &&\n !(\n own.call(data, 'hName') ||\n own.call(data, 'hProperties') ||\n own.call(data, 'hChildren')\n )\n ) {\n return h.augment(node, u('text', node.value))\n }\n\n return h(node, 'div', all(h, node))\n}\n\n/**\n * @type {Handler}\n * @param {MdastNode} node\n */\nexport function one(h, node, parent) {\n const type = node && node.type\n /** @type {Handler} */\n let fn\n\n // Fail on non-nodes.\n if (!type) {\n throw new Error('Expected node, got `' + node + '`')\n }\n\n if (own.call(h.handlers, type)) {\n fn = h.handlers[type]\n } else if (h.passThrough && h.passThrough.includes(type)) {\n fn = returnNode\n } else {\n fn = h.unknownHandler\n }\n\n return (typeof fn === 'function' ? fn : unknown)(h, node, parent)\n}\n\n/**\n * @type {Handler}\n * @param {MdastNode} node\n */\nfunction returnNode(h, node) {\n // @ts-expect-error: Pass through custom node.\n return 'children' in node ? {...node, children: all(h, node)} : node\n}\n\n/**\n * @param {H} h\n * @param {MdastNode} parent\n */\nexport function all(h, parent) {\n /** @type {Array} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n\n while (++index < nodes.length) {\n const result = one(h, nodes[index], parent)\n\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = result.value.replace(/^\\s+/, '')\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 = head.value.replace(/^\\s+/, '')\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","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n\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` below).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * Then, 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]`,\n * or `/^https?$/i` for `img[src]`.\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|undefined} url\n * @param {RegExp} [protocol]\n * @returns {string}\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n\n if (!protocol) {\n return value\n }\n\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 || // 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) || // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n\n return ''\n}\n/**\n * Normalize a URL (such as used in definitions).\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * @returns {string}\n */\n\nfunction normalizeUri(value) {\n /** @type {string[]} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n\n let replace = '' // A correct percent encoded value.\n\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n } // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n } // Astral.\n else if (code > 55295 && code < 57344) {\n const next = value.charCodeAt(index + 1) // A correct surrogate pair.\n\n if (code < 56320 && next > 56319 && next < 57344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n } // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n } // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n\n if (skip) {\n index += skip\n skip = 0\n }\n }\n\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('./index.js').Content} Content\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * Wrap `nodes` with line feeds between each entry.\n * Optionally adds line feeds at the start and end.\n *\n * @param {Array} nodes\n * @param {boolean} [loose=false]\n * @returns {Array}\n */\nexport function wrap(nodes, loose) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push(u('text', '\\n'))\n }\n\n while (++index < nodes.length) {\n if (index) result.push(u('text', '\\n'))\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push(u('text', '\\n'))\n }\n\n return result\n}\n","/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {sanitizeUri} from 'micromark-util-sanitize-uri'\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {FootnoteReference} node\n */\nexport function footnoteReference(h, node) {\n const id = String(node.identifier)\n const safeId = sanitizeUri(id.toLowerCase())\n const index = h.footnoteOrder.indexOf(id)\n /** @type {number} */\n let counter\n\n if (index === -1) {\n h.footnoteOrder.push(id)\n h.footnoteCounts[id] = 1\n counter = h.footnoteOrder.length\n } else {\n h.footnoteCounts[id]++\n counter = index + 1\n }\n\n const reuseCounter = h.footnoteCounts[id]\n\n return h(node, 'sup', [\n h(\n node.position,\n 'a',\n {\n href: '#' + h.clobberPrefix + 'fn-' + safeId,\n id:\n h.clobberPrefix +\n 'fnref-' +\n safeId +\n (reuseCounter > 1 ? '-' + reuseCounter : ''),\n dataFootnoteRef: true,\n ariaDescribedBy: 'footnote-label'\n },\n [u('text', String(counter))]\n )\n ])\n}\n","/**\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('./index.js').Handler} Handler\n * @typedef {import('./index.js').Content} Content\n */\n\nimport {u} from 'unist-builder'\nimport {all} from './traverse.js'\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @type {Handler}\n * @param {ImageReference|LinkReference} node\n * @returns {Content|Array}\n */\nexport function revert(h, 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 u('text', '![' + node.alt + suffix)\n }\n\n const contents = all(h, node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift(u('text', '['))\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(u('text', suffix))\n }\n\n return contents\n}\n","/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').List} List\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n * @typedef {import('../index.js').Handler} Handler\n * @typedef {import('../index.js').Content} Content\n */\n\nimport {u} from 'unist-builder'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {ListItem} node\n * @param {List} parent\n */\nexport function listItem(h, node, parent) {\n const result = all(h, node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const props = {}\n /** @type {Array} */\n const wrapped = []\n\n if (typeof node.checked === 'boolean') {\n /** @type {Element} */\n let paragraph\n\n if (\n result[0] &&\n result[0].type === 'element' &&\n result[0].tagName === 'p'\n ) {\n paragraph = result[0]\n } else {\n paragraph = h(null, 'p', [])\n result.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift(u('text', ' '))\n }\n\n paragraph.children.unshift(\n h(null, 'input', {\n type: 'checkbox',\n checked: node.checked,\n disabled: true\n })\n )\n\n // According to github-markdown-css, this class hides bullet.\n // See: .\n props.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < result.length) {\n const child = result[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 wrapped.push(u('text', '\\n'))\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n wrapped.push(...child.children)\n } else {\n wrapped.push(child)\n }\n }\n\n const tail = result[result.length - 1]\n\n // Add a final eol.\n if (tail && (loose || !('tagName' in tail) || tail.tagName !== 'p')) {\n wrapped.push(u('text', '\\n'))\n }\n\n return h(node, 'li', props, wrapped)\n}\n\n/**\n * @param {List} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = node.spread\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n\n return Boolean(loose)\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === undefined || spread === null\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 {footnote} from './footnote.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 {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n footnote,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n root,\n strong,\n table,\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 null\n}\n","/**\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {wrap} from '../wrap.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Blockquote} node\n */\nexport function blockquote(h, node) {\n return h(node, 'blockquote', wrap(all(h, node), true))\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {Break} node\n * @returns {Array}\n */\nexport function hardBreak(h, node) {\n return [h(node, 'br'), u('text', '\\n')]\n}\n","/**\n * @typedef {import('mdast').Code} Code\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {Code} node\n */\nexport function code(h, node) {\n const value = node.value ? node.value + '\\n' : ''\n // To do: next major, use `node.lang` w/o regex, the splitting’s been going\n // on for years in remark now.\n const lang = node.lang && node.lang.match(/^[^ \\t]+(?=[ \\t]|$)/)\n /** @type {Properties} */\n const props = {}\n\n if (lang) {\n props.className = ['language-' + lang]\n }\n\n const code = h(node, 'code', props, [u('text', value)])\n\n if (node.meta) {\n code.data = {meta: node.meta}\n }\n\n return h(node.position, 'pre', [code])\n}\n","/**\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Delete} node\n */\nexport function strikethrough(h, node) {\n return h(node, 'del', all(h, node))\n}\n","/**\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Emphasis} node\n */\nexport function emphasis(h, node) {\n return h(node, 'em', all(h, node))\n}\n","/**\n * @typedef {import('mdast').Footnote} Footnote\n * @typedef {import('../index.js').Handler} Handler\n *\n * @todo\n * `footnote` (or “inline note”) are a pandoc footnotes feature (`^[a note]`)\n * that does not exist in GFM.\n * We still have support for it, so that things remain working with\n * `micromark-extension-footnote` and `mdast-util-footnote`, but in the future\n * we might be able to remove it?\n */\n\nimport {footnoteReference} from './footnote-reference.js'\n\n/**\n * @type {Handler}\n * @param {Footnote} node\n */\nexport function footnote(h, node) {\n const footnoteById = h.footnoteById\n let no = 1\n\n while (no in footnoteById) no++\n\n const identifier = String(no)\n\n footnoteById[identifier] = {\n type: 'footnoteDefinition',\n identifier,\n children: [{type: 'paragraph', children: node.children}],\n position: node.position\n }\n\n return footnoteReference(h, {\n type: 'footnoteReference',\n identifier,\n position: node.position\n })\n}\n","/**\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Heading} node\n */\nexport function heading(h, node) {\n return h(node, 'h' + node.depth, all(h, node))\n}\n","/**\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * Return either a `raw` node in dangerous mode, otherwise nothing.\n *\n * @type {Handler}\n * @param {HTML} node\n */\nexport function html(h, node) {\n return h.dangerous ? h.augment(node, u('raw', node.value)) : null\n}\n","/**\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport normalize from 'mdurl/encode.js'\nimport {revert} from '../revert.js'\n\n/**\n * @type {Handler}\n * @param {ImageReference} node\n */\nexport function imageReference(h, node) {\n const def = h.definition(node.identifier)\n\n if (!def) {\n return revert(h, node)\n }\n\n /** @type {Properties} */\n const props = {src: normalize(def.url || ''), alt: node.alt}\n\n if (def.title !== null && def.title !== undefined) {\n props.title = def.title\n }\n\n return h(node, 'img', props)\n}\n","/**\n * @typedef {import('mdast').Image} Image\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport normalize from 'mdurl/encode.js'\n\n/**\n * @type {Handler}\n * @param {Image} node\n */\nexport function image(h, node) {\n /** @type {Properties} */\n const props = {src: normalize(node.url), alt: node.alt}\n\n if (node.title !== null && node.title !== undefined) {\n props.title = node.title\n }\n\n return h(node, 'img', props)\n}\n","/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {InlineCode} node\n */\nexport function inlineCode(h, node) {\n return h(node, 'code', [u('text', node.value.replace(/\\r?\\n|\\r/g, ' '))])\n}\n","/**\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport normalize from 'mdurl/encode.js'\nimport {revert} from '../revert.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {LinkReference} node\n */\nexport function linkReference(h, node) {\n const def = h.definition(node.identifier)\n\n if (!def) {\n return revert(h, node)\n }\n\n /** @type {Properties} */\n const props = {href: normalize(def.url || '')}\n\n if (def.title !== null && def.title !== undefined) {\n props.title = def.title\n }\n\n return h(node, 'a', props, all(h, node))\n}\n","/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport normalize from 'mdurl/encode.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Link} node\n */\nexport function link(h, node) {\n /** @type {Properties} */\n const props = {href: normalize(node.url)}\n\n if (node.title !== null && node.title !== undefined) {\n props.title = node.title\n }\n\n return h(node, 'a', props, all(h, node))\n}\n","/**\n * @typedef {import('mdast').List} List\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {wrap} from '../wrap.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {List} node\n * @returns {Element}\n */\nexport function list(h, node) {\n /** @type {Properties} */\n const props = {}\n const name = node.ordered ? 'ol' : 'ul'\n const items = all(h, node)\n let index = -1\n\n if (typeof node.start === 'number' && node.start !== 1) {\n props.start = node.start\n }\n\n // Like GitHub, add a class for custom styling.\n while (++index < items.length) {\n const item = items[index]\n\n if (\n item.type === 'element' &&\n item.tagName === 'li' &&\n item.properties &&\n Array.isArray(item.properties.className) &&\n item.properties.className.includes('task-list-item')\n ) {\n props.className = ['contains-task-list']\n break\n }\n }\n\n return h(node, name, props, wrap(items, true))\n}\n","/**\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Paragraph} node\n */\nexport function paragraph(h, node) {\n return h(node, 'p', all(h, node))\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\nimport {all} from '../traverse.js'\nimport {wrap} from '../wrap.js'\n\n/**\n * @type {Handler}\n * @param {Root} node\n */\nexport function root(h, node) {\n // @ts-expect-error `root`s are also fine.\n return h.augment(node, u('root', wrap(all(h, node))))\n}\n","/**\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Strong} node\n */\nexport function strong(h, node) {\n return h(node, 'strong', all(h, node))\n}\n","/**\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('hast').Element} Element\n * @typedef {import('../index.js').Handler} Handler\n * @typedef {import('../index.js').Content} Content\n */\n\nimport {pointStart, pointEnd} from 'unist-util-position'\nimport {wrap} from '../wrap.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Table} node\n */\nexport function table(h, node) {\n const rows = node.children\n let index = -1\n const align = node.align || []\n /** @type {Array} */\n const result = []\n\n while (++index < rows.length) {\n const row = rows[index].children\n const name = index === 0 ? 'th' : 'td'\n /** @type {Array} */\n const out = []\n let cellIndex = -1\n const length = node.align ? align.length : row.length\n\n while (++cellIndex < length) {\n const cell = row[cellIndex]\n out.push(\n h(cell, name, {align: align[cellIndex]}, cell ? all(h, cell) : [])\n )\n }\n\n result[index] = h(rows[index], 'tr', wrap(out, true))\n }\n\n return h(\n node,\n 'table',\n wrap(\n [h(result[0].position, 'thead', wrap([result[0]], true))].concat(\n result[1]\n ? h(\n {\n start: pointStart(result[1]),\n end: pointEnd(result[result.length - 1])\n },\n 'tbody',\n wrap(result.slice(1), true)\n )\n : []\n ),\n true\n )\n )\n}\n","/**\n * @typedef {import('mdast').Text} Text\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {trimLines} from 'trim-lines'\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {Text} node\n */\nexport function text(h, node) {\n return h.augment(node, u('text', trimLines(String(node.value))))\n}\n","/**\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('hast').Element} Element\n * @typedef {import('../index.js').Handler} Handler\n */\n\n/**\n * @type {Handler}\n * @param {ThematicBreak} [node]\n * @returns {Element}\n */\nexport function thematicBreak(h, node) {\n return h(node, 'hr')\n}\n","/**\n * @typedef {import('mdast').Root|import('mdast').Parent['children'][number]} MdastNode\n * @typedef {import('hast').Root|import('hast').Parent['children'][number]} HastNode\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').ElementContent} Content\n * @typedef {import('unist-util-position').PositionLike} PositionLike\n *\n * @typedef EmbeddedHastFields\n * @property {string} [hName] Defines the tag name of an element\n * @property {Properties} [hProperties] Defines the properties of an element\n * @property {Array} [hChildren] Defines the (hast) children of an element\n *\n * @typedef {Record & EmbeddedHastFields} Data unist data with embedded hast fields\n *\n * @typedef {MdastNode & {data?: Data}} NodeWithData unist node with embedded hast data\n *\n * @callback Handler\n * @param {H} h Handle context\n * @param {any} node mdast node to handle\n * @param {Parent|null} parent Parent of `node`\n * @returns {Content|Array|null|undefined} hast node\n *\n * @callback HFunctionProps\n * @param {MdastNode|PositionLike|null|undefined} node mdast node or unist position\n * @param {string} tagName HTML tag name\n * @param {Properties} props Properties\n * @param {Array?} [children] hast content\n * @returns {Element}\n *\n * @callback HFunctionNoProps\n * @param {MdastNode|PositionLike|null|undefined} node mdast node or unist position\n * @param {string} tagName HTML tag name\n * @param {Array?} [children] hast content\n * @returns {Element}\n *\n * @typedef HFields\n * @property {boolean} dangerous Whether HTML is allowed\n * @property {string} clobberPrefix Prefix to use to prevent DOM clobbering\n * @property {string} footnoteLabel Label to use to introduce the footnote section\n * @property {string} footnoteLabelTagName HTML used for the footnote label\n * @property {Properties} footnoteLabelProperties properties on the HTML tag used for the footnote label\n * @property {string} footnoteBackLabel Label to use to go back to a footnote call from the footnote section\n * @property {(identifier: string) => Definition|null} definition Definition cache\n * @property {Record} footnoteById Footnote cache\n * @property {Array} footnoteOrder Order in which footnotes occur\n * @property {Record} footnoteCounts Counts the same footnote was used\n * @property {Handlers} handlers Applied handlers\n * @property {Handler} unknownHandler Handler for any none not in `passThrough` or otherwise handled\n * @property {(left: NodeWithData|PositionLike|null|undefined, right: Content) => Content} augment Like `h` but lower-level and usable on non-elements.\n * @property {Array} passThrough List of node types to pass through untouched (except for their children).\n *\n * @typedef Options\n * @property {boolean} [allowDangerousHtml=false]\n * Whether to allow `html` nodes and inject them as `raw` HTML\n * @property {string} [clobberPrefix='user-content-']\n * Prefix to use before the `id` attribute to prevent it from *clobbering*.\n * attributes.\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available in browsers on the `window` object.\n * Using a prefix prevents this from being a problem.\n * @property {string} [footnoteLabel='Footnotes']\n * Label to use for the footnotes section.\n * Affects screen reader users.\n * Change it if you’re authoring in a different language.\n * @property {string} [footnoteLabelTagName='h2']\n * HTML tag to use for the footnote label.\n * Can be changed to match your document structure and play well with your choice of css.\n * @property {Properties} [footnoteLabelProperties={id: 'footnote-label', className: ['sr-only']}]\n * Properties to use on the footnote label.\n * A 'sr-only' class is added by default to hide this from sighted users.\n * Change it to make the label visible, or add classes for other purposes.\n * @property {string} [footnoteBackLabel='Back to content']\n * Label to use from backreferences back to their footnote call.\n * Affects screen reader users.\n * Change it if you’re authoring in a different language.\n * @property {Handlers} [handlers]\n * Object mapping mdast nodes to functions handling them\n * @property {Array} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast\n * @property {Handler} [unknownHandler]\n * Handler for all unknown nodes.\n *\n * @typedef {Record} Handlers\n * Map of node types to handlers\n * @typedef {HFunctionProps & HFunctionNoProps & HFields} H\n * Handle context\n */\n\nimport {u} from 'unist-builder'\nimport {visit} from 'unist-util-visit'\nimport {pointStart, pointEnd} from 'unist-util-position'\nimport {generated} from 'unist-util-generated'\nimport {definitions} from 'mdast-util-definitions'\nimport {one} from './traverse.js'\nimport {footer} from './footer.js'\nimport {handlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Factory to transform.\n * @param {MdastNode} tree mdast node\n * @param {Options} [options] Configuration\n * @returns {H} `h` function\n */\nfunction factory(tree, options) {\n const settings = options || {}\n const dangerous = settings.allowDangerousHtml || false\n /** @type {Record} */\n const footnoteById = {}\n\n h.dangerous = dangerous\n h.clobberPrefix =\n settings.clobberPrefix === undefined || settings.clobberPrefix === null\n ? 'user-content-'\n : settings.clobberPrefix\n h.footnoteLabel = settings.footnoteLabel || 'Footnotes'\n h.footnoteLabelTagName = settings.footnoteLabelTagName || 'h2'\n h.footnoteLabelProperties = settings.footnoteLabelProperties || {\n id: 'footnote-label',\n className: ['sr-only']\n }\n h.footnoteBackLabel = settings.footnoteBackLabel || 'Back to content'\n h.definition = definitions(tree)\n h.footnoteById = footnoteById\n /** @type {Array} */\n h.footnoteOrder = []\n /** @type {Record} */\n h.footnoteCounts = {}\n h.augment = augment\n h.handlers = {...handlers, ...settings.handlers}\n h.unknownHandler = settings.unknownHandler\n h.passThrough = settings.passThrough\n\n visit(tree, 'footnoteDefinition', (definition) => {\n const id = String(definition.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!own.call(footnoteById, id)) {\n footnoteById[id] = definition\n }\n })\n\n // @ts-expect-error Hush, it’s fine!\n return h\n\n /**\n * Finalise the created `right`, a hast node, from `left`, an mdast node.\n * @param {(NodeWithData|PositionLike)?} left\n * @param {Content} right\n * @returns {Content}\n */\n function augment(left, right) {\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (left && 'data' in left && left.data) {\n /** @type {Data} */\n const data = left.data\n\n if (data.hName) {\n if (right.type !== 'element') {\n right = {\n type: 'element',\n tagName: '',\n properties: {},\n children: []\n }\n }\n\n right.tagName = data.hName\n }\n\n if (right.type === 'element' && data.hProperties) {\n right.properties = {...right.properties, ...data.hProperties}\n }\n\n if ('children' in right && right.children && data.hChildren) {\n right.children = data.hChildren\n }\n }\n\n if (left) {\n const ctx = 'type' in left ? left : {position: left}\n\n if (!generated(ctx)) {\n // @ts-expect-error: fine.\n right.position = {start: pointStart(ctx), end: pointEnd(ctx)}\n }\n }\n\n return right\n }\n\n /**\n * Create an element for `node`.\n *\n * @type {HFunctionProps}\n */\n function h(node, tagName, props, children) {\n if (Array.isArray(props)) {\n children = props\n props = {}\n }\n\n // @ts-expect-error augmenting an element yields an element.\n return augment(node, {\n type: 'element',\n tagName,\n properties: props || {},\n children: children || []\n })\n }\n}\n\n/**\n * Transform `tree` (an mdast node) to a hast node.\n *\n * @param {MdastNode} tree mdast node\n * @param {Options} [options] Configuration\n * @returns {HastNode|null|undefined} hast node\n */\nexport function toHast(tree, options) {\n const h = factory(tree, options)\n const node = one(h, tree, null)\n const foot = footer(h)\n\n if (foot) {\n // @ts-expect-error If there’s a footer, there were definitions, meaning block\n // content.\n // So assume `node` is a parent node.\n node.children.push(u('text', '\\n'), foot)\n }\n\n return Array.isArray(node) ? {type: 'root', children: node} : node\n}\n\nexport {handlers as defaultHandlers} from './handlers/index.js'\n","/**\n * @typedef {Object} PointLike\n * @property {number} [line]\n * @property {number} [column]\n * @property {number} [offset]\n *\n * @typedef {Object} PositionLike\n * @property {PointLike} [start]\n * @property {PointLike} [end]\n *\n * @typedef {Object} NodeLike\n * @property {PositionLike} [position]\n */\n\n/**\n * Check if `node` is *generated*.\n *\n * @param {NodeLike} [node]\n * @returns {boolean}\n */\nexport function generated(node) {\n return (\n !node ||\n !node.position ||\n !node.position.start ||\n !node.position.start.line ||\n !node.position.start.column ||\n !node.position.end ||\n !node.position.end.line ||\n !node.position.end.column\n )\n}\n","/**\n * @typedef {import('mdast').BlockContent} BlockContent\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('./index.js').H} H\n */\n\nimport {sanitizeUri} from 'micromark-util-sanitize-uri'\nimport {u} from 'unist-builder'\nimport {all} from './traverse.js'\nimport {wrap} from './wrap.js'\n\n/**\n * @param {H} h\n * @returns {Element|null}\n */\nexport function footer(h) {\n let index = -1\n /** @type {Array} */\n const listItems = []\n\n while (++index < h.footnoteOrder.length) {\n const def = h.footnoteById[h.footnoteOrder[index].toUpperCase()]\n\n if (!def) {\n continue\n }\n\n const content = all(h, def)\n const id = String(def.identifier)\n const safeId = sanitizeUri(id.toLowerCase())\n let referenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n\n while (++referenceIndex <= h.footnoteCounts[id]) {\n /** @type {Element} */\n const backReference = {\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n h.clobberPrefix +\n 'fnref-' +\n safeId +\n (referenceIndex > 1 ? '-' + referenceIndex : ''),\n dataFootnoteBackref: true,\n className: ['data-footnote-backref'],\n ariaLabel: h.footnoteBackLabel\n },\n children: [{type: 'text', value: '↩'}]\n }\n\n if (referenceIndex > 1) {\n backReference.children.push({\n type: 'element',\n tagName: 'sup',\n children: [{type: 'text', value: String(referenceIndex)}]\n })\n }\n\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n backReferences.push(backReference)\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: h.clobberPrefix + 'fn-' + safeId},\n children: wrap(content, true)\n }\n\n if (def.position) {\n listItem.position = def.position\n }\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return null\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: h.footnoteLabelTagName,\n properties: JSON.parse(JSON.stringify(h.footnoteLabelProperties)),\n children: [u('text', h.footnoteLabel)]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} Options\n * @typedef {import('unified').Processor} Processor\n *\n * @typedef {import('mdast-util-to-hast')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n// Note: the `` overload doesn’t seem to work :'(\n\n/**\n * Plugin that turns markdown into HTML to support rehype.\n *\n * * If a destination processor is given, that processor runs with a new HTML\n * (hast) tree (bridge-mode).\n * As the given processor runs with a hast tree, and rehype plugins support\n * hast, that means rehype plugins can be used with the given processor.\n * The hast tree is discarded in the end.\n * It’s highly unlikely that you want to do this.\n * * The common case is to not pass a destination processor, in which case the\n * current processor continues running with a new HTML (hast) tree\n * (mutate-mode).\n * As the current processor continues with a hast tree, and rehype plugins\n * support hast, that means rehype plugins can be used after\n * `remark-rehype`.\n * It’s likely that this is what you want to do.\n *\n * @param destination\n * Optional unified processor.\n * @param options\n * Options passed to `mdast-util-to-hast`.\n */\nconst remarkRehype =\n /** @type {(import('unified').Plugin<[Processor, Options?]|[null|undefined, Options?]|[Options]|[], MdastRoot>)} */\n (\n function (destination, options) {\n return destination && 'run' in destination\n ? bridge(destination, options)\n : mutate(destination || options)\n }\n )\n\nexport default remarkRehype\n\n/**\n * Bridge-mode.\n * Runs the destination with the new hast tree.\n *\n * @type {import('unified').Plugin<[Processor, Options?], MdastRoot>}\n */\nfunction bridge(destination, options) {\n return (node, file, next) => {\n destination.run(toHast(node, options), file, (error) => {\n next(error)\n })\n }\n}\n\n/**\n * Mutate-mode.\n * Further plugins run on the hast tree.\n *\n * @type {import('unified').Plugin<[Options?]|void[], MdastRoot, HastRoot>}\n */\nfunction mutate(options) {\n // @ts-expect-error: assume a corresponding node is returned by `toHast`.\n return (node) => toHast(node, options)\n}\n","import {visit} from 'unist-util-visit'\n\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n *\n * @callback AllowElement\n * @param {Element} element\n * @param {number} index\n * @param {Element|Root} parent\n * @returns {boolean|undefined}\n *\n * @typedef Options\n * @property {Array} [allowedElements]\n * @property {Array} [disallowedElements=[]]\n * @property {AllowElement} [allowElement]\n * @property {boolean} [unwrapDisallowed=false]\n */\n\n/**\n * @type {import('unified').Plugin<[Options], Root>}\n */\nexport default function rehypeFilter(options) {\n if (options.allowedElements && options.disallowedElements) {\n throw new TypeError(\n 'Only one of `allowedElements` and `disallowedElements` should be defined'\n )\n }\n\n if (\n options.allowedElements ||\n options.disallowedElements ||\n options.allowElement\n ) {\n return (tree) => {\n visit(tree, 'element', (node, index, parent_) => {\n const parent = /** @type {Element|Root} */ (parent_)\n /** @type {boolean|undefined} */\n let remove\n\n if (options.allowedElements) {\n remove = !options.allowedElements.includes(node.tagName)\n } else if (options.disallowedElements) {\n remove = options.disallowedElements.includes(node.tagName)\n }\n\n if (!remove && options.allowElement && typeof index === 'number') {\n remove = !options.allowElement(node, index, parent)\n }\n\n if (remove && typeof index === 'number') {\n if (options.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 return undefined\n })\n }\n }\n}\n","const protocols = ['http', 'https', 'mailto', 'tel']\n\n/**\n * @param {string} uri\n * @returns {string}\n */\nexport function uriTransformer(uri) {\n const url = (uri || '').trim()\n const first = url.charAt(0)\n\n if (first === '#' || first === '/') {\n return url\n }\n\n const colon = url.indexOf(':')\n if (colon === -1) {\n return url\n }\n\n let index = -1\n\n while (++index < protocols.length) {\n const protocol = protocols[index]\n\n if (\n colon === protocol.length &&\n url.slice(0, protocol.length).toLowerCase() === protocol\n ) {\n return url\n }\n }\n\n index = url.indexOf('?')\n if (index !== -1 && colon > index) {\n return url\n }\n\n index = url.indexOf('#')\n if (index !== -1 && colon > index) {\n return url\n }\n\n // eslint-disable-next-line no-script-url\n return 'javascript:void(0)'\n}\n","/**\n * @param {unknown} thing\n * @returns {boolean}\n */\nexport function whitespace(thing) {\n /** @type {string} */\n var value =\n // @ts-ignore looks like a node.\n thing && typeof thing === 'object' && thing.type === 'text'\n ? // @ts-ignore looks like a text.\n thing.value || ''\n : thing\n\n // HTML whitespace expression.\n // See .\n return typeof value === 'string' && value.replace(/[ \\t\\n\\f\\r]/g, '') === ''\n}\n","export const hastToReact = {\n classId: 'classID',\n dataType: 'datatype',\n itemId: 'itemID',\n strokeDashArray: 'strokeDasharray',\n strokeDashOffset: 'strokeDashoffset',\n strokeLineCap: 'strokeLinecap',\n strokeLineJoin: 'strokeLinejoin',\n strokeMiterLimit: 'strokeMiterlimit',\n typeOf: 'typeof',\n xLinkActuate: 'xlinkActuate',\n xLinkArcRole: 'xlinkArcrole',\n xLinkHref: 'xlinkHref',\n xLinkRole: 'xlinkRole',\n xLinkShow: 'xlinkShow',\n xLinkTitle: 'xlinkTitle',\n xLinkType: 'xlinkType',\n xmlnsXLink: 'xmlnsXlink'\n}\n","/**\n * @template T\n * @typedef {import('react').ComponentType} ComponentType\n */\n\n/**\n * @template T\n * @typedef {import('react').ComponentPropsWithoutRef} ComponentPropsWithoutRef\n */\n\n/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('unist').Position} Position\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').DocType} Doctype\n * @typedef {import('property-information').Info} Info\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('./complex-types').ReactMarkdownProps} ReactMarkdownProps\n *\n * @typedef Raw\n * @property {'raw'} type\n * @property {string} value\n *\n * @typedef Context\n * @property {Options} options\n * @property {Schema} schema\n * @property {number} listDepth\n *\n * @callback TransformLink\n * @param {string} href\n * @param {Array} children\n * @param {string?} title\n * @returns {string}\n *\n * @callback TransformImage\n * @param {string} src\n * @param {string} alt\n * @param {string?} title\n * @returns {string}\n *\n * @typedef {import('react').HTMLAttributeAnchorTarget} TransformLinkTargetType\n *\n * @callback TransformLinkTarget\n * @param {string} href\n * @param {Array} children\n * @param {string?} title\n * @returns {TransformLinkTargetType|undefined}\n *\n * @typedef {keyof JSX.IntrinsicElements} ReactMarkdownNames\n *\n * To do: is `data-sourcepos` typeable?\n *\n * @typedef {ComponentPropsWithoutRef<'code'> & ReactMarkdownProps & {inline?: boolean}} CodeProps\n * @typedef {ComponentPropsWithoutRef<'h1'> & ReactMarkdownProps & {level: number}} HeadingProps\n * @typedef {ComponentPropsWithoutRef<'li'> & ReactMarkdownProps & {checked: boolean|null, index: number, ordered: boolean}} LiProps\n * @typedef {ComponentPropsWithoutRef<'ol'> & ReactMarkdownProps & {depth: number, ordered: true}} OrderedListProps\n * @typedef {ComponentPropsWithoutRef<'table'> & ReactMarkdownProps & {style?: Record, isHeader: boolean}} TableCellProps\n * @typedef {ComponentPropsWithoutRef<'tr'> & ReactMarkdownProps & {isHeader: boolean}} TableRowProps\n * @typedef {ComponentPropsWithoutRef<'ul'> & ReactMarkdownProps & {depth: number, ordered: false}} UnorderedListProps\n *\n * @typedef {ComponentType} CodeComponent\n * @typedef {ComponentType} HeadingComponent\n * @typedef {ComponentType} LiComponent\n * @typedef {ComponentType} OrderedListComponent\n * @typedef {ComponentType} TableCellComponent\n * @typedef {ComponentType} TableRowComponent\n * @typedef {ComponentType} UnorderedListComponent\n *\n * @typedef SpecialComponents\n * @property {CodeComponent|ReactMarkdownNames} code\n * @property {HeadingComponent|ReactMarkdownNames} h1\n * @property {HeadingComponent|ReactMarkdownNames} h2\n * @property {HeadingComponent|ReactMarkdownNames} h3\n * @property {HeadingComponent|ReactMarkdownNames} h4\n * @property {HeadingComponent|ReactMarkdownNames} h5\n * @property {HeadingComponent|ReactMarkdownNames} h6\n * @property {LiComponent|ReactMarkdownNames} li\n * @property {OrderedListComponent|ReactMarkdownNames} ol\n * @property {TableCellComponent|ReactMarkdownNames} td\n * @property {TableCellComponent|ReactMarkdownNames} th\n * @property {TableRowComponent|ReactMarkdownNames} tr\n * @property {UnorderedListComponent|ReactMarkdownNames} ul\n *\n * @typedef {Partial & SpecialComponents>} Components\n *\n * @typedef Options\n * @property {boolean} [sourcePos=false]\n * @property {boolean} [rawSourcePos=false]\n * @property {boolean} [skipHtml=false]\n * @property {boolean} [includeElementIndex=false]\n * @property {null|false|TransformLink} [transformLinkUri]\n * @property {TransformImage} [transformImageUri]\n * @property {TransformLinkTargetType|TransformLinkTarget} [linkTarget]\n * @property {Components} [components]\n */\n\nimport React from 'react'\nimport ReactIs from 'react-is'\nimport {whitespace} from 'hast-util-whitespace'\nimport {svg, find, hastToReact} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport style from 'style-to-object'\n\nconst own = {}.hasOwnProperty\n\n// The table-related elements that must not contain whitespace text according\n// to React.\nconst tableElements = new Set(['table', 'thead', 'tbody', 'tfoot', 'tr'])\n\n/**\n * @param {Context} context\n * @param {Element|Root} node\n */\nexport function childrenToReact(context, node) {\n /** @type {Array} */\n const children = []\n let childIndex = -1\n /** @type {Comment|Doctype|Element|Raw|Text} */\n let child\n\n while (++childIndex < node.children.length) {\n child = node.children[childIndex]\n\n if (child.type === 'element') {\n children.push(toReact(context, child, childIndex, node))\n } else if (child.type === 'text') {\n // Currently, a warning is triggered by react for *any* white space in\n // tables.\n // So we drop it.\n // See: .\n // See: .\n // See: .\n // See: .\n if (\n node.type !== 'element' ||\n !tableElements.has(node.tagName) ||\n !whitespace(child)\n ) {\n children.push(child.value)\n }\n } else if (child.type === 'raw' && !context.options.skipHtml) {\n // Default behavior is to show (encoded) HTML.\n children.push(child.value)\n }\n }\n\n return children\n}\n\n/**\n * @param {Context} context\n * @param {Element} node\n * @param {number} index\n * @param {Element|Root} parent\n */\nfunction toReact(context, node, index, parent) {\n const options = context.options\n const parentSchema = context.schema\n /** @type {ReactMarkdownNames} */\n // @ts-expect-error assume a known HTML/SVG element.\n const name = node.tagName\n /** @type {Record} */\n const properties = {}\n let schema = parentSchema\n /** @type {string} */\n let property\n\n if (parentSchema.space === 'html' && name === 'svg') {\n schema = svg\n context.schema = schema\n }\n\n if (node.properties) {\n for (property in node.properties) {\n if (own.call(node.properties, property)) {\n addProperty(properties, property, node.properties[property], context)\n }\n }\n }\n\n if (name === 'ol' || name === 'ul') {\n context.listDepth++\n }\n\n const children = childrenToReact(context, node)\n\n if (name === 'ol' || name === 'ul') {\n context.listDepth--\n }\n\n // Restore parent schema.\n context.schema = parentSchema\n\n // Nodes created by plugins do not have positional info, in which case we use\n // an object that matches the position interface.\n const position = node.position || {\n start: {line: null, column: null, offset: null},\n end: {line: null, column: null, offset: null}\n }\n const component =\n options.components && own.call(options.components, name)\n ? options.components[name]\n : name\n const basic = typeof component === 'string' || component === React.Fragment\n\n if (!ReactIs.isValidElementType(component)) {\n throw new TypeError(\n `Component for name \\`${name}\\` not defined or is not renderable`\n )\n }\n\n properties.key = [\n name,\n position.start.line,\n position.start.column,\n index\n ].join('-')\n\n if (name === 'a' && options.linkTarget) {\n properties.target =\n typeof options.linkTarget === 'function'\n ? options.linkTarget(\n String(properties.href || ''),\n node.children,\n typeof properties.title === 'string' ? properties.title : null\n )\n : options.linkTarget\n }\n\n if (name === 'a' && options.transformLinkUri) {\n properties.href = options.transformLinkUri(\n String(properties.href || ''),\n node.children,\n typeof properties.title === 'string' ? properties.title : null\n )\n }\n\n if (\n !basic &&\n name === 'code' &&\n parent.type === 'element' &&\n parent.tagName !== 'pre'\n ) {\n properties.inline = true\n }\n\n if (\n !basic &&\n (name === 'h1' ||\n name === 'h2' ||\n name === 'h3' ||\n name === 'h4' ||\n name === 'h5' ||\n name === 'h6')\n ) {\n properties.level = Number.parseInt(name.charAt(1), 10)\n }\n\n if (name === 'img' && options.transformImageUri) {\n properties.src = options.transformImageUri(\n String(properties.src || ''),\n String(properties.alt || ''),\n typeof properties.title === 'string' ? properties.title : null\n )\n }\n\n if (!basic && name === 'li' && parent.type === 'element') {\n const input = getInputElement(node)\n properties.checked =\n input && input.properties ? Boolean(input.properties.checked) : null\n properties.index = getElementsBeforeCount(parent, node)\n properties.ordered = parent.tagName === 'ol'\n }\n\n if (!basic && (name === 'ol' || name === 'ul')) {\n properties.ordered = name === 'ol'\n properties.depth = context.listDepth\n }\n\n if (name === 'td' || name === 'th') {\n if (properties.align) {\n if (!properties.style) properties.style = {}\n // @ts-expect-error assume `style` is an object\n properties.style.textAlign = properties.align\n delete properties.align\n }\n\n if (!basic) {\n properties.isHeader = name === 'th'\n }\n }\n\n if (!basic && name === 'tr' && parent.type === 'element') {\n properties.isHeader = Boolean(parent.tagName === 'thead')\n }\n\n // If `sourcePos` is given, pass source information (line/column info from markdown source).\n if (options.sourcePos) {\n properties['data-sourcepos'] = flattenPosition(position)\n }\n\n if (!basic && options.rawSourcePos) {\n properties.sourcePosition = node.position\n }\n\n // If `includeElementIndex` is given, pass node index info to components.\n if (!basic && options.includeElementIndex) {\n properties.index = getElementsBeforeCount(parent, node)\n properties.siblingCount = getElementsBeforeCount(parent)\n }\n\n if (!basic) {\n properties.node = node\n }\n\n // Ensure no React warnings are emitted for void elements w/ children.\n return children.length > 0\n ? React.createElement(component, properties, children)\n : React.createElement(component, properties)\n}\n\n/**\n * @param {Element|Root} node\n * @returns {Element?}\n */\nfunction getInputElement(node) {\n let index = -1\n\n while (++index < node.children.length) {\n const child = node.children[index]\n\n if (child.type === 'element' && child.tagName === 'input') {\n return child\n }\n }\n\n return null\n}\n\n/**\n * @param {Element|Root} parent\n * @param {Element} [node]\n * @returns {number}\n */\nfunction getElementsBeforeCount(parent, node) {\n let index = -1\n let count = 0\n\n while (++index < parent.children.length) {\n if (parent.children[index] === node) break\n if (parent.children[index].type === 'element') count++\n }\n\n return count\n}\n\n/**\n * @param {Record} props\n * @param {string} prop\n * @param {unknown} value\n * @param {Context} ctx\n */\nfunction addProperty(props, prop, value, ctx) {\n const info = find(ctx.schema, prop)\n let result = value\n\n // Ignore nullish and `NaN` values.\n // eslint-disable-next-line no-self-compare\n if (result === null || result === undefined || result !== result) {\n return\n }\n\n // Accept `array`.\n // Most props are space-separated.\n if (Array.isArray(result)) {\n result = info.commaSeparated ? commas(result) : spaces(result)\n }\n\n if (info.property === 'style' && typeof result === 'string') {\n result = parseStyle(result)\n }\n\n if (info.space && info.property) {\n props[\n own.call(hastToReact, info.property)\n ? hastToReact[info.property]\n : info.property\n ] = result\n } else if (info.attribute) {\n props[info.attribute] = result\n }\n}\n\n/**\n * @param {string} value\n * @returns {Record}\n */\nfunction parseStyle(value) {\n /** @type {Record} */\n const result = {}\n\n try {\n style(value, iterator)\n } catch {\n // Silent.\n }\n\n return result\n\n /**\n * @param {string} name\n * @param {string} v\n */\n function iterator(name, v) {\n const k = name.slice(0, 4) === '-ms-' ? `ms-${name.slice(4)}` : name\n result[k.replace(/-([a-z])/g, styleReplacer)] = v\n }\n}\n\n/**\n * @param {unknown} _\n * @param {string} $1\n */\nfunction styleReplacer(_, $1) {\n return $1.toUpperCase()\n}\n\n/**\n * @param {Position|{start: {line: null, column: null, offset: null}, end: {line: null, column: null, offset: null}}} pos\n * @returns {string}\n */\nfunction flattenPosition(pos) {\n return [\n pos.start.line,\n ':',\n pos.start.column,\n '-',\n pos.end.line,\n ':',\n pos.end.column\n ]\n .map((d) => String(d))\n .join('')\n}\n","/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('react').ReactElement<{}>} ReactElement\n * @typedef {import('unified').PluggableList} PluggableList\n * @typedef {import('hast').Root} Root\n * @typedef {import('./rehype-filter.js').Options} FilterOptions\n * @typedef {import('./ast-to-react.js').Options} TransformOptions\n *\n * @typedef CoreOptions\n * @property {string} children\n *\n * @typedef PluginOptions\n * @property {PluggableList} [remarkPlugins=[]]\n * @property {PluggableList} [rehypePlugins=[]]\n * @property {import('remark-rehype').Options | undefined} [remarkRehypeOptions={}]\n *\n * @typedef LayoutOptions\n * @property {string} [className]\n *\n * @typedef {CoreOptions & PluginOptions & LayoutOptions & FilterOptions & TransformOptions} ReactMarkdownOptions\n *\n * @typedef Deprecation\n * @property {string} id\n * @property {string} [to]\n */\n\nimport React from 'react'\nimport {VFile} from 'vfile'\nimport {unified} from 'unified'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport PropTypes from 'prop-types'\nimport {html} from 'property-information'\nimport rehypeFilter from './rehype-filter.js'\nimport {uriTransformer} from './uri-transformer.js'\nimport {childrenToReact} from './ast-to-react.js'\n\nconst own = {}.hasOwnProperty\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {Record} */\nconst deprecated = {\n plugins: {to: 'plugins', id: 'change-plugins-to-remarkplugins'},\n renderers: {to: 'components', id: 'change-renderers-to-components'},\n astPlugins: {id: 'remove-buggy-html-in-markdown-parser'},\n allowDangerousHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n escapeHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n source: {to: 'children', id: 'change-source-to-children'},\n allowNode: {\n to: 'allowElement',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n allowedTypes: {\n to: 'allowedElements',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n disallowedTypes: {\n to: 'disallowedElements',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n includeNodeIndex: {\n to: 'includeElementIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n }\n}\n\n/**\n * React component to render markdown.\n *\n * @param {ReactMarkdownOptions} options\n * @returns {ReactElement}\n */\nexport function ReactMarkdown(options) {\n for (const key in deprecated) {\n if (own.call(deprecated, key) && own.call(options, key)) {\n const deprecation = deprecated[key]\n console.warn(\n `[react-markdown] Warning: please ${\n deprecation.to ? `use \\`${deprecation.to}\\` instead of` : 'remove'\n } \\`${key}\\` (see <${changelog}#${deprecation.id}> for more info)`\n )\n delete deprecated[key]\n }\n }\n\n const processor = unified()\n .use(remarkParse)\n .use(options.remarkPlugins || [])\n .use(remarkRehype, {\n ...options.remarkRehypeOptions,\n allowDangerousHtml: true\n })\n .use(options.rehypePlugins || [])\n .use(rehypeFilter, options)\n\n const file = new VFile()\n\n if (typeof options.children === 'string') {\n file.value = options.children\n } else if (options.children !== undefined && options.children !== null) {\n console.warn(\n `[react-markdown] Warning: please pass a string as \\`children\\` (not: \\`${options.children}\\`)`\n )\n }\n\n const hastNode = processor.runSync(processor.parse(file), file)\n\n if (hastNode.type !== 'root') {\n throw new TypeError('Expected a `root` node')\n }\n\n /** @type {ReactElement} */\n let result = React.createElement(\n React.Fragment,\n {},\n childrenToReact({options, schema: html, listDepth: 0}, hastNode)\n )\n\n if (options.className) {\n result = React.createElement('div', {className: options.className}, result)\n }\n\n return result\n}\n\nReactMarkdown.defaultProps = {transformLinkUri: uriTransformer}\n\nReactMarkdown.propTypes = {\n // Core options:\n children: PropTypes.string,\n // Layout options:\n className: PropTypes.string,\n // Filter options:\n allowElement: PropTypes.func,\n allowedElements: PropTypes.arrayOf(PropTypes.string),\n disallowedElements: PropTypes.arrayOf(PropTypes.string),\n unwrapDisallowed: PropTypes.bool,\n // Plugin options:\n remarkPlugins: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(\n // prettier-ignore\n // type-coverage:ignore-next-line\n PropTypes.any\n )\n ])\n )\n ])\n ),\n rehypePlugins: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(\n // prettier-ignore\n // type-coverage:ignore-next-line\n PropTypes.any\n )\n ])\n )\n ])\n ),\n // Transform options:\n sourcePos: PropTypes.bool,\n rawSourcePos: PropTypes.bool,\n skipHtml: PropTypes.bool,\n includeElementIndex: PropTypes.bool,\n transformLinkUri: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n linkTarget: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n transformImageUri: PropTypes.func,\n components: PropTypes.object\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 Options\n * Configuration (optional).\n * @property {Test} [ignore]\n * `unist-util-is` test used to assert parents\n *\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Text} Text\n * @typedef {Content|Root} Node\n * @typedef {Exclude, Root>} Parent\n *\n * @typedef {import('unist-util-visit-parents').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n *\n * @typedef RegExpMatchObject\n * @property {number} index\n * @property {string} input\n * @property {[Root, ...Array, Text]} stack\n *\n * @typedef {string|RegExp} Find\n * @typedef {string|ReplaceFunction} Replace\n *\n * @typedef {[Find, Replace]} FindAndReplaceTuple\n * @typedef {Record} FindAndReplaceSchema\n * @typedef {Array} FindAndReplaceList\n *\n * @typedef {[RegExp, ReplaceFunction]} Pair\n * @typedef {Array} Pairs\n */\n\n/**\n * @callback ReplaceFunction\n * @param {...any} parameters\n * @returns {Array|PhrasingContent|string|false|undefined|null}\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param tree mdast tree\n * @param find Value to find and remove. When `string`, escaped and made into a global `RegExp`\n * @param [replace] Value to insert.\n * * When `string`, turned into a Text node.\n * * When `Function`, called with the results of calling `RegExp.exec` as\n * arguments, in which case it can return a single or a list of `Node`,\n * a `string` (which is wrapped in a `Text` node), or `false` to not replace\n * @param [options] Configuration.\n */\nexport const findAndReplace =\n /**\n * @type {(\n * ((tree: Node, find: Find, replace?: Replace, options?: Options) => Node) &\n * ((tree: Node, schema: FindAndReplaceSchema|FindAndReplaceList, options?: Options) => Node)\n * )}\n **/\n (\n /**\n * @param {Node} tree\n * @param {Find|FindAndReplaceSchema|FindAndReplaceList} find\n * @param {Replace|Options} [replace]\n * @param {Options} [options]\n */\n function (tree, find, replace, options) {\n /** @type {Options|undefined} */\n let settings\n /** @type {FindAndReplaceSchema|FindAndReplaceList} */\n let schema\n\n if (typeof find === 'string' || find instanceof RegExp) {\n // @ts-expect-error don’t expect options twice.\n schema = [[find, replace]]\n settings = options\n } else {\n schema = find\n // @ts-expect-error don’t expect replace twice.\n settings = replace\n }\n\n if (!settings) {\n settings = {}\n }\n\n const ignored = convert(settings.ignore || [])\n const pairs = toPairs(schema)\n let pairIndex = -1\n\n while (++pairIndex < pairs.length) {\n visitParents(tree, 'text', visitor)\n }\n\n return tree\n\n /** @type {import('unist-util-visit-parents/complex-types').BuildVisitor} */\n function visitor(node, parents) {\n let index = -1\n /** @type {Parent|undefined} */\n let grandparent\n\n while (++index < parents.length) {\n const parent = /** @type {Parent} */ (parents[index])\n\n if (\n ignored(\n parent,\n // @ts-expect-error mdast vs. unist parent.\n grandparent ? grandparent.children.indexOf(parent) : undefined,\n grandparent\n )\n ) {\n return\n }\n\n grandparent = parent\n }\n\n if (grandparent) {\n // @ts-expect-error: stack is fine.\n return handler(node, parents)\n }\n }\n\n /**\n * @param {Text} node\n * @param {[Root, ...Array]} parents\n * @returns {VisitorResult}\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 // @ts-expect-error: TS is wrong, some of these children can be text.\n const index = parent.children.indexOf(node)\n let change = false\n /** @type {Array} */\n let nodes = []\n /** @type {number|undefined} */\n let position\n\n find.lastIndex = 0\n\n let match = find.exec(node.value)\n\n while (match) {\n 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 if (value !== false) {\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/**\n * @param {FindAndReplaceSchema|FindAndReplaceList} schema\n * @returns {Pairs}\n */\nfunction toPairs(schema) {\n /** @type {Pairs} */\n const result = []\n\n if (typeof schema !== 'object') {\n throw new TypeError('Expected array or object as schema')\n }\n\n if (Array.isArray(schema)) {\n let index = -1\n\n while (++index < schema.length) {\n result.push([\n toExpression(schema[index][0]),\n toFunction(schema[index][1])\n ])\n }\n } else {\n /** @type {string} */\n let key\n\n for (key in schema) {\n if (own.call(schema, key)) {\n result.push([toExpression(key), toFunction(schema[key])])\n }\n }\n }\n\n return result\n}\n\n/**\n * @param {Find} find\n * @returns {RegExp}\n */\nfunction toExpression(find) {\n return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * @param {Replace} replace\n * @returns {ReplaceFunction}\n */\nfunction toFunction(replace) {\n return typeof replace === 'function' ? replace : () => replace\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 * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Transform} FromMarkdownTransform\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown/lib/types.js').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-find-and-replace').ReplaceFunction} ReplaceFunction\n * @typedef {import('mdast-util-find-and-replace').RegExpMatchObject} RegExpMatchObject\n * @typedef {import('mdast-util-find-and-replace').PhrasingContent} PhrasingContent\n */\n\nimport {ccount} from 'ccount'\nimport {findAndReplace} from 'mdast-util-find-and-replace'\nimport {unicodePunctuation, unicodeWhitespace} from 'micromark-util-character'\n\nconst inConstruct = 'phrasing'\nconst notInConstruct = ['autolink', 'link', 'image', 'label']\n\n/** @type {FromMarkdownExtension} */\nexport const gfmAutolinkLiteralFromMarkdown = {\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/** @type {ToMarkdownExtension} */\nexport const gfmAutolinkLiteralToMarkdown = {\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 {character: ':', before: '[ps]', after: '\\\\/', inConstruct, notInConstruct}\n ]\n}\n\n/** @type {FromMarkdownHandle} */\nfunction enterLiteralAutolink(token) {\n this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction enterLiteralAutolinkValue(token) {\n this.config.enter.autolinkProtocol.call(this, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitLiteralAutolinkHttp(token) {\n this.config.exit.autolinkProtocol.call(this, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitLiteralAutolinkWww(token) {\n this.config.exit.data.call(this, token)\n const node = /** @type {Link} */ (this.stack[this.stack.length - 1])\n node.url = 'http://' + this.sliceSerialize(token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitLiteralAutolinkEmail(token) {\n this.config.exit.autolinkEmail.call(this, token)\n}\n\n/** @type {FromMarkdownHandle} */\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 [/([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/g, 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 */\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 {PhrasingContent} */\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 */\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 /** @type {number} */\n let closingParenIndex\n /** @type {number} */\n let openingParens\n /** @type {number} */\n let closingParens\n /** @type {string|undefined} */\n let trail\n\n if (trailExec) {\n url = url.slice(0, trailExec.index)\n trail = trailExec[0]\n closingParenIndex = trail.indexOf(')')\n openingParens = ccount(url, '(')\n 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\n return [url, trail]\n}\n\n/**\n * @param {RegExpMatchObject} match\n * @param {boolean} [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 (!email || code !== 47)\n )\n}\n","/**\n * @typedef {import('mdast').Association} Association\n */\n\nimport {decodeString} from 'micromark-util-decode-string'\n\n/**\n * The `label` of an association is the string value: character escapes and\n * references work, and casing is intact.\n * The `identifier` is used to match one association to another: controversially,\n * character escapes and references don’t work in this matching: `©` does\n * not match `©`, and `\\+` does not match `+`.\n * But casing is ignored (and whitespace) is trimmed and collapsed: ` A\\nb`\n * matches `a b`.\n * So, we do prefer the label when figuring out how we’re going to serialize:\n * it has whitespace, casing, and we can ignore most useless character escapes\n * and all character references.\n *\n * @param {Association} node\n * @returns {string}\n */\nexport function association(node) {\n if (node.label || !node.identifier) {\n return node.label || ''\n }\n\n return decodeString(node.identifier)\n}\n","/**\n * @typedef {import('unist').Point} Point\n * @typedef {import('../types.js').TrackFields} TrackFields\n */\n\n/**\n * Functions to track output positions.\n * This info isn’t used yet but suchs functionality allows line wrapping,\n * and theoretically source maps (though, is there practical use in that?).\n *\n * @param {TrackFields} options_\n */\nexport function track(options_) {\n // Defaults are used to prevent crashes when older utilities somehow activate\n // this code.\n /* c8 ignore next 5 */\n const options = options_ || {}\n const now = options.now || {}\n let lineShift = options.lineShift || 0\n let line = now.line || 1\n let column = now.column || 1\n\n return {move, current, shift}\n\n /**\n * Get the current tracked info.\n *\n * @returns {{now: Point, lineShift: number}}\n */\n function current() {\n return {now: {line, column}, lineShift}\n }\n\n /**\n * Define an increased line shift (the typical indent for lines).\n *\n * @param {number} value\n */\n function shift(value) {\n lineShift += value\n }\n\n /**\n * Move past a string.\n *\n * @param {string} value\n * @returns {string}\n */\n function move(value = '') {\n const chunks = value.split(/\\r?\\n|\\r/g)\n const tail = chunks[chunks.length - 1]\n line += chunks.length - 1\n column =\n chunks.length === 1 ? column + tail.length : 1 + tail.length + lineShift\n return value\n }\n}\n","/**\n * @typedef {import('../types.js').Node} Node\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').Join} Join\n * @typedef {import('../types.js').Context} Context\n * @typedef {import('../types.js').TrackFields} TrackFields\n */\n\nimport {track} from './track.js'\n\n/**\n * @param {Parent} parent\n * @param {Context} context\n * @param {TrackFields} safeOptions\n * @returns {string}\n */\nexport function containerFlow(parent, context, safeOptions) {\n const indexStack = context.indexStack\n const children = parent.children || []\n const tracker = track(safeOptions)\n /** @type {Array} */\n const results = []\n let index = -1\n\n indexStack.push(-1)\n\n while (++index < children.length) {\n const child = children[index]\n\n indexStack[indexStack.length - 1] = index\n\n results.push(\n tracker.move(\n context.handle(child, parent, context, {\n before: '\\n',\n after: '\\n',\n ...tracker.current()\n })\n )\n )\n\n if (child.type !== 'list') {\n context.bulletLastUsed = undefined\n }\n\n if (index < children.length - 1) {\n results.push(tracker.move(between(child, children[index + 1])))\n }\n }\n\n indexStack.pop()\n\n return results.join('')\n\n /**\n * @param {Node} left\n * @param {Node} right\n * @returns {string}\n */\n function between(left, right) {\n let index = context.join.length\n\n while (index--) {\n const result = context.join[index](left, right, parent, context)\n\n if (result === true || result === 1) {\n break\n }\n\n if (typeof result === 'number') {\n return '\\n'.repeat(1 + result)\n }\n\n if (result === false) {\n return '\\n\\n\\n\\n'\n }\n }\n\n return '\\n\\n'\n }\n}\n","/**\n * @callback Map\n * @param {string} value\n * @param {number} line\n * @param {boolean} blank\n * @returns {string}\n */\n\nconst eol = /\\r?\\n|\\r/g\n\n/**\n * @param {string} value\n * @param {Map} map\n * @returns {string}\n */\nexport function indentLines(value, map) {\n /** @type {Array} */\n const result = []\n let start = 0\n let line = 0\n /** @type {RegExpExecArray|null} */\n let match\n\n while ((match = eol.exec(value))) {\n one(value.slice(start, match.index))\n result.push(match[0])\n start = match.index + match[0].length\n line++\n }\n\n one(value.slice(start))\n\n return result.join('')\n\n /**\n * @param {string} value\n */\n function one(value) {\n result.push(map(value, line, !value))\n }\n}\n","/**\n * @typedef {import('../types.js').Unsafe} Unsafe\n */\n\n/**\n * @param {Unsafe} pattern\n * @returns {RegExp}\n */\nexport function patternCompile(pattern) {\n if (!pattern._compiled) {\n const before =\n (pattern.atBreak ? '[\\\\r\\\\n][\\\\t ]*' : '') +\n (pattern.before ? '(?:' + pattern.before + ')' : '')\n\n pattern._compiled = new RegExp(\n (before ? '(' + before + ')' : '') +\n (/[|\\\\{}()[\\]^$+*?.-]/.test(pattern.character) ? '\\\\' : '') +\n pattern.character +\n (pattern.after ? '(?:' + pattern.after + ')' : ''),\n 'g'\n )\n }\n\n return pattern._compiled\n}\n","/**\n * @typedef {import('../types.js').Unsafe} Unsafe\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 (!list) {\n return none\n }\n\n if (typeof list === 'string') {\n list = [list]\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 * @typedef {import('../types.js').Context} Context\n * @typedef {import('../types.js').SafeOptions} SafeOptions\n */\n\nimport {patternCompile} from './pattern-compile.js'\nimport {patternInScope} from './pattern-in-scope.js'\n\n/**\n * @param {Context} context\n * @param {string|null|undefined} input\n * @param {SafeOptions & {encode?: Array}} config\n * @returns {string}\n */\nexport function safe(context, input, config) {\n const value = (config.before || '') + (input || '') + (config.after || '')\n /** @type {Array} */\n const positions = []\n /** @type {Array} */\n const result = []\n /** @type {Record} */\n const infos = {}\n let index = -1\n\n while (++index < context.unsafe.length) {\n const pattern = context.unsafe[index]\n\n if (!patternInScope(context.stack, pattern)) {\n continue\n }\n\n const expression = patternCompile(pattern)\n /** @type {RegExpExecArray|null} */\n let match\n\n while ((match = expression.exec(value))) {\n const before = 'before' in pattern || Boolean(pattern.atBreak)\n const after = 'after' in pattern\n const position = match.index + (before ? match[1].length : 0)\n\n if (positions.includes(position)) {\n if (infos[position].before && !before) {\n infos[position].before = false\n }\n\n if (infos[position].after && !after) {\n infos[position].after = false\n }\n } else {\n positions.push(position)\n infos[position] = {before, after}\n }\n }\n }\n\n positions.sort(numerical)\n\n let start = config.before ? config.before.length : 0\n const end = value.length - (config.after ? config.after.length : 0)\n index = -1\n\n while (++index < positions.length) {\n const position = positions[index]\n\n // Character before or after matched:\n if (position < start || position >= end) {\n continue\n }\n\n // If this character is supposed to be escaped because it has a condition on\n // the next character, and the next character is definitly being escaped,\n // then skip this escape.\n if (\n (position + 1 < end &&\n positions[index + 1] === position + 1 &&\n infos[position].after &&\n !infos[position + 1].before &&\n !infos[position + 1].after) ||\n (positions[index - 1] === position - 1 &&\n infos[position].before &&\n !infos[position - 1].before &&\n !infos[position - 1].after)\n ) {\n continue\n }\n\n if (start !== position) {\n // If we have to use a character reference, an ampersand would be more\n // correct, but as backslashes only care about punctuation, either will\n // do the trick\n result.push(escapeBackslashes(value.slice(start, position), '\\\\'))\n }\n\n start = position\n\n if (\n /[!-/:-@[-`{-~]/.test(value.charAt(position)) &&\n (!config.encode || !config.encode.includes(value.charAt(position)))\n ) {\n // Character escape.\n result.push('\\\\')\n } else {\n // Character reference.\n result.push(\n '&#x' + value.charCodeAt(position).toString(16).toUpperCase() + ';'\n )\n start++\n }\n }\n\n result.push(escapeBackslashes(value.slice(start, end), config.after))\n\n return result.join('')\n}\n\n/**\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\nfunction numerical(a, b) {\n return a - b\n}\n\n/**\n * @param {string} value\n * @param {string} after\n * @returns {string}\n */\nfunction escapeBackslashes(value, after) {\n const expression = /\\\\(?=[!-/:-@[-`{-~])/g\n /** @type {Array} */\n const positions = []\n /** @type {Array} */\n const results = []\n const whole = value + after\n let index = -1\n let start = 0\n /** @type {RegExpExecArray|null} */\n let match\n\n while ((match = expression.exec(whole))) {\n positions.push(match.index)\n }\n\n while (++index < positions.length) {\n if (start !== positions[index]) {\n results.push(value.slice(start, positions[index]))\n }\n\n results.push('\\\\')\n start = positions[index]\n }\n\n results.push(value.slice(start))\n\n return results.join('')\n}\n","/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\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 * @typedef {import('mdast-util-to-markdown').Map} Map\n */\n\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {association} from 'mdast-util-to-markdown/lib/util/association.js'\nimport {containerFlow} from 'mdast-util-to-markdown/lib/util/container-flow.js'\nimport {indentLines} from 'mdast-util-to-markdown/lib/util/indent-lines.js'\nimport {safe} from 'mdast-util-to-markdown/lib/util/safe.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\n/**\n * @returns {FromMarkdownExtension}\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 /** @type {FromMarkdownHandle} */\n function enterFootnoteDefinition(token) {\n this.enter(\n {type: 'footnoteDefinition', identifier: '', label: '', children: []},\n token\n )\n }\n\n /** @type {FromMarkdownHandle} */\n function enterFootnoteDefinitionLabelString() {\n this.buffer()\n }\n\n /** @type {FromMarkdownHandle} */\n function exitFootnoteDefinitionLabelString(token) {\n const label = this.resume()\n const node = /** @type {FootnoteDefinition} */ (\n this.stack[this.stack.length - 1]\n )\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /** @type {FromMarkdownHandle} */\n function exitFootnoteDefinition(token) {\n this.exit(token)\n }\n\n /** @type {FromMarkdownHandle} */\n function enterFootnoteCall(token) {\n this.enter({type: 'footnoteReference', identifier: '', label: ''}, token)\n }\n\n /** @type {FromMarkdownHandle} */\n function enterFootnoteCallString() {\n this.buffer()\n }\n\n /** @type {FromMarkdownHandle} */\n function exitFootnoteCallString(token) {\n const label = this.resume()\n const node = /** @type {FootnoteDefinition} */ (\n this.stack[this.stack.length - 1]\n )\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /** @type {FromMarkdownHandle} */\n function exitFootnoteCall(token) {\n this.exit(token)\n }\n}\n\n/**\n * @returns {ToMarkdownExtension}\n */\nexport function gfmFootnoteToMarkdown() {\n footnoteReference.peek = footnoteReferencePeek\n\n return {\n // This is on by default already.\n unsafe: [{character: '[', inConstruct: ['phrasing', 'label', 'reference']}],\n handlers: {footnoteDefinition, footnoteReference}\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {FootnoteReference} node\n */\n function footnoteReference(node, _, context, safeOptions) {\n const tracker = track(safeOptions)\n let value = tracker.move('[^')\n const exit = context.enter('footnoteReference')\n const subexit = context.enter('reference')\n value += tracker.move(\n safe(context, association(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} */\n function footnoteReferencePeek() {\n return '['\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {FootnoteDefinition} node\n */\n function footnoteDefinition(node, _, context, safeOptions) {\n const tracker = track(safeOptions)\n let value = tracker.move('[^')\n const exit = context.enter('footnoteDefinition')\n const subexit = context.enter('label')\n value += tracker.move(\n safe(context, association(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 indentLines(containerFlow(node, context, tracker.current()), map)\n )\n exit()\n\n return value\n\n /** @type {Map} */\n function map(line, index, blank) {\n if (index) {\n return (blank ? '' : ' ') + line\n }\n\n return line\n }\n }\n}\n","/**\n * @typedef {import('../types.js').Node} Node\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').SafeOptions} SafeOptions\n * @typedef {import('../types.js').Context} Context\n */\n\nimport {track} from './track.js'\n\n/**\n * @param {Parent} parent\n * @param {Context} context\n * @param {SafeOptions} safeOptions\n * @returns {string}\n */\nexport function containerPhrasing(parent, context, safeOptions) {\n const indexStack = context.indexStack\n const children = parent.children || []\n /** @type {Array} */\n const results = []\n let index = -1\n let before = safeOptions.before\n\n indexStack.push(-1)\n let tracker = track(safeOptions)\n\n while (++index < children.length) {\n const child = children[index]\n /** @type {string} */\n let after\n\n indexStack[indexStack.length - 1] = index\n\n if (index + 1 < children.length) {\n // @ts-expect-error: hush, it’s actually a `zwitch`.\n let handle = context.handle.handlers[children[index + 1].type]\n if (handle && handle.peek) handle = handle.peek\n after = handle\n ? handle(children[index + 1], parent, context, {\n before: '',\n after: '',\n ...tracker.current()\n }).charAt(0)\n : ''\n } else {\n after = safeOptions.after\n }\n\n // In some cases, html (text) can be found in phrasing right after an eol.\n // When we’d serialize that, in most cases that would be seen as html\n // (flow).\n // As we can’t escape or so to prevent it from happening, we take a somewhat\n // reasonable approach: replace that eol with a space.\n // See: \n if (\n results.length > 0 &&\n (before === '\\r' || before === '\\n') &&\n child.type === 'html'\n ) {\n results[results.length - 1] = results[results.length - 1].replace(\n /(\\r?\\n|\\r)$/,\n ' '\n )\n before = ' '\n\n // To do: does this work to reset tracker?\n tracker = track(safeOptions)\n tracker.move(results.join(''))\n }\n\n results.push(\n tracker.move(\n context.handle(child, parent, context, {\n ...tracker.current(),\n before,\n after\n })\n )\n )\n\n before = results[results.length - 1].slice(-1)\n }\n\n indexStack.pop()\n\n return results.join('')\n}\n","/**\n * @typedef {import('mdast').Delete} Delete\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 {containerPhrasing} from 'mdast-util-to-markdown/lib/util/container-phrasing.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\n/** @type {FromMarkdownExtension} */\nexport const gfmStrikethroughFromMarkdown = {\n canContainEols: ['delete'],\n enter: {strikethrough: enterStrikethrough},\n exit: {strikethrough: exitStrikethrough}\n}\n\n/** @type {ToMarkdownExtension} */\nexport const gfmStrikethroughToMarkdown = {\n unsafe: [{character: '~', inConstruct: 'phrasing'}],\n handlers: {delete: handleDelete}\n}\n\nhandleDelete.peek = peekDelete\n\n/** @type {FromMarkdownHandle} */\nfunction enterStrikethrough(token) {\n this.enter({type: 'delete', children: []}, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitStrikethrough(token) {\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {Delete} node\n */\nfunction handleDelete(node, _, context, safeOptions) {\n const tracker = track(safeOptions)\n const exit = context.enter('emphasis')\n let value = tracker.move('~~')\n value += containerPhrasing(node, context, {\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","/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../types.js').Handle} Handle\n */\n\nimport {patternCompile} from '../util/pattern-compile.js'\n\ninlineCode.peek = inlineCodePeek\n\n/**\n * @type {Handle}\n * @param {InlineCode} node\n */\nexport function inlineCode(node, _, context) {\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 < context.unsafe.length) {\n const pattern = context.unsafe[index]\n const expression = patternCompile(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 * @type {Handle}\n */\nfunction inlineCodePeek() {\n return '`'\n}\n","/**\n * @typedef Options\n * Configuration (optional).\n * @property {string|null|Array} [align]\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} [padding=true]\n * Whether to add a space of padding between delimiters and cells.\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 {boolean} [delimiterStart=true]\n * Whether to begin each row with the delimiter.\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} [delimiterEnd=true]\n * Whether to end each row with the delimiter.\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} [alignDelimiters=true]\n * Whether to align the delimiters.\n * By default, they are aligned:\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 {(value: string) => number} [stringLength]\n * Function to detect the length of table cell content.\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, which receives the cell content\n * 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 * @typedef {Options} MarkdownTableOptions\n * @todo\n * Remove next major.\n */\n\n/**\n * Generate a markdown ([GFM](https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables)) table..\n *\n * @param {Array>} table\n * Table data (matrix of strings).\n * @param {Options} [options]\n * Configuration (optional).\n * @returns {string}\n */\nexport function markdownTable(table, options = {}) {\n const align = (options.align || []).concat()\n const stringLength = options.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 (options.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 options.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 (options.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 (options.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 (options.delimiterStart !== false && !columnIndex) {\n line.push('|')\n }\n\n if (\n options.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 !(options.alignDelimiters === false && cell === '') &&\n (options.delimiterStart !== false || columnIndex)\n ) {\n line.push(' ')\n }\n\n if (options.alignDelimiters !== false) {\n line.push(before)\n }\n\n line.push(cell)\n\n if (options.alignDelimiters !== false) {\n line.push(after)\n }\n\n if (options.padding !== false) {\n line.push(' ')\n }\n\n if (\n options.delimiterEnd !== false ||\n columnIndex !== mostCellsPerRow - 1\n ) {\n line.push('|')\n }\n }\n\n lines.push(\n options.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 * @returns {string}\n */\nfunction serialize(value) {\n return value === null || value === undefined ? '' : String(value)\n}\n\n/**\n * @param {string} value\n * @returns {number}\n */\nfunction defaultStringLength(value) {\n return value.length\n}\n\n/**\n * @param {string|null|undefined} value\n * @returns {number}\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 * @typedef {import('mdast').AlignType} AlignType\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('markdown-table').MarkdownTableOptions} MarkdownTableOptions\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 * @typedef {import('mdast-util-to-markdown').Context} ToMarkdownContext\n * @typedef {import('mdast-util-to-markdown').SafeOptions} SafeOptions\n *\n * @typedef Options\n * @property {boolean} [tableCellPadding=true]\n * @property {boolean} [tablePipeAlign=true]\n * @property {MarkdownTableOptions['stringLength']} [stringLength]\n */\n\nimport {containerPhrasing} from 'mdast-util-to-markdown/lib/util/container-phrasing.js'\nimport {inlineCode} from 'mdast-util-to-markdown/lib/handle/inline-code.js'\nimport {markdownTable} from 'markdown-table'\n\n/** @type {FromMarkdownExtension} */\nexport const gfmTableFromMarkdown = {\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/** @type {FromMarkdownHandle} */\nfunction enterTable(token) {\n /** @type {Array<'left'|'right'|'center'|'none'>} */\n // @ts-expect-error: `align` is custom.\n const align = token._align\n this.enter(\n {\n type: 'table',\n align: align.map((d) => (d === 'none' ? null : d)),\n children: []\n },\n token\n )\n this.setData('inTable', true)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitTable(token) {\n this.exit(token)\n this.setData('inTable')\n}\n\n/** @type {FromMarkdownHandle} */\nfunction enterRow(token) {\n this.enter({type: 'tableRow', children: []}, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exit(token) {\n this.exit(token)\n}\n\n/** @type {FromMarkdownHandle} */\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/** @type {FromMarkdownHandle} */\nfunction exitCodeText(token) {\n let value = this.resume()\n\n if (this.getData('inTable')) {\n value = value.replace(/\\\\([\\\\|])/g, replace)\n }\n\n const node = /** @type {InlineCode} */ (this.stack[this.stack.length - 1])\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 * @param {Options} [options]\n * @returns {ToMarkdownExtension}\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 table: handleTable,\n tableRow: handleTableRow,\n tableCell: handleTableCell,\n inlineCode: inlineCodeWithTable\n }\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {Table} node\n */\n function handleTable(node, _, context, safeOptions) {\n return serializeData(\n handleTableAsData(node, context, safeOptions),\n // @ts-expect-error: fixed in `markdown-table@3.0.1`.\n node.align\n )\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, _, context, safeOptions) {\n const row = handleTableRowAsData(node, context, safeOptions)\n // `markdown-table` will always add an align row\n const value = serializeData([row])\n return value.slice(0, value.indexOf('\\n'))\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {TableCell} node\n */\n function handleTableCell(node, _, context, safeOptions) {\n const exit = context.enter('tableCell')\n const subexit = context.enter('phrasing')\n const value = containerPhrasing(node, context, {\n ...safeOptions,\n before: around,\n after: around\n })\n subexit()\n exit()\n return value\n }\n\n /**\n * @param {Array>} matrix\n * @param {Array} [align]\n */\n function serializeData(matrix, align) {\n return markdownTable(matrix, {\n align,\n alignDelimiters,\n padding,\n stringLength\n })\n }\n\n /**\n * @param {Table} node\n * @param {ToMarkdownContext} context\n * @param {SafeOptions} safeOptions\n */\n function handleTableAsData(node, context, safeOptions) {\n const children = node.children\n let index = -1\n /** @type {Array>} */\n const result = []\n const subexit = context.enter('table')\n\n while (++index < children.length) {\n result[index] = handleTableRowAsData(\n children[index],\n context,\n safeOptions\n )\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @param {TableRow} node\n * @param {ToMarkdownContext} context\n * @param {SafeOptions} safeOptions\n */\n function handleTableRowAsData(node, context, safeOptions) {\n const children = node.children\n let index = -1\n /** @type {Array} */\n const result = []\n const subexit = context.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(\n children[index],\n node,\n context,\n safeOptions\n )\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {InlineCode} node\n */\n function inlineCodeWithTable(node, parent, context) {\n let value = inlineCode(node, parent, context)\n\n if (context.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').List} List\n * @typedef {import('../util/indent-lines.js').Map} Map\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').Handle} Handle\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkListItemIndent} from '../util/check-list-item-indent.js'\nimport {containerFlow} from '../util/container-flow.js'\nimport {indentLines} from '../util/indent-lines.js'\nimport {track} from '../util/track.js'\n\n/**\n * @type {Handle}\n * @param {ListItem} node\n */\nexport function listItem(node, parent, context, safeOptions) {\n const listItemIndent = checkListItemIndent(context)\n let bullet = context.bulletCurrent || checkBullet(context)\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 (context.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 = track(safeOptions)\n tracker.move(bullet + ' '.repeat(size - bullet.length))\n tracker.shift(size)\n const exit = context.enter('listItem')\n const value = indentLines(\n containerFlow(node, context, 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 * @typedef {import('../types.js').Context} Context\n * @typedef {import('../types.js').Options} Options\n */\n\n/**\n * @param {Context} context\n * @returns {Exclude}\n */\nexport function checkListItemIndent(context) {\n const style = context.options.listItemIndent || 'tab'\n\n // To do: remove in a major.\n // @ts-expect-error: deprecated.\n if (style === 1 || style === '1') {\n return 'one'\n }\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 * @typedef {import('../types.js').Context} Context\n * @typedef {import('../types.js').Options} Options\n */\n\n/**\n * @param {Context} context\n * @returns {Exclude}\n */\nexport function checkBullet(context) {\n const marker = context.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 * @typedef {Extract} Parent\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').BlockContent} BlockContent\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 {listItem} from 'mdast-util-to-markdown/lib/handle/list-item.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\n/** @type {FromMarkdownExtension} */\nexport const gfmTaskListItemFromMarkdown = {\n exit: {\n taskListCheckValueChecked: exitCheck,\n taskListCheckValueUnchecked: exitCheck,\n paragraph: exitParagraphWithTaskListItem\n }\n}\n\n/** @type {ToMarkdownExtension} */\nexport const gfmTaskListItemToMarkdown = {\n unsafe: [{atBreak: true, character: '-', after: '[:|-]'}],\n handlers: {listItem: listItemWithTaskListItem}\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitCheck(token) {\n const node = /** @type {ListItem} */ (this.stack[this.stack.length - 2])\n // We’re always in a paragraph, in a list item.\n node.checked = token.type === 'taskListCheckValueChecked'\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitParagraphWithTaskListItem(token) {\n const parent = /** @type {Parent} */ (this.stack[this.stack.length - 2])\n const node = /** @type {Paragraph} */ (this.stack[this.stack.length - 1])\n const siblings = parent.children\n const head = node.children[0]\n let index = -1\n /** @type {Paragraph|undefined} */\n let firstParaghraph\n\n if (\n parent &&\n parent.type === 'listItem' &&\n typeof parent.checked === 'boolean' &&\n head &&\n head.type === 'text'\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 this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {ListItem} node\n */\nfunction listItemWithTaskListItem(node, parent, context, safeOptions) {\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 = track(safeOptions)\n\n if (checkable) {\n tracker.move(checkbox)\n }\n\n let value = listItem(node, parent, context, {\n ...safeOptions,\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 * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n *\n * @typedef {import('mdast-util-gfm-table').Options} Options\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 * @returns {Array}\n */\nexport function gfmFromMarkdown() {\n return [\n gfmAutolinkLiteralFromMarkdown,\n gfmFootnoteFromMarkdown(),\n gfmStrikethroughFromMarkdown,\n gfmTableFromMarkdown,\n gfmTaskListItemFromMarkdown\n ]\n}\n\n/**\n * @param {Options} [options]\n * @returns {ToMarkdownExtension}\n */\nexport function gfmToMarkdown(options) {\n return {\n extensions: [\n gfmAutolinkLiteralToMarkdown,\n gfmFootnoteToMarkdown(),\n gfmStrikethroughToMarkdown,\n gfmTableToMarkdown(options),\n gfmTaskListItemToMarkdown\n ]\n }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('micromark-extension-gfm').Options & import('mdast-util-gfm').Options} Options\n */\n\nimport {gfm} from 'micromark-extension-gfm'\nimport {gfmFromMarkdown, gfmToMarkdown} from 'mdast-util-gfm'\n\n/**\n * Plugin to support GFM (autolink literals, footnotes, strikethrough, tables, tasklists).\n *\n * @type {import('unified').Plugin<[Options?]|void[], Root>}\n */\nexport default function remarkGfm(options = {}) {\n const data = this.data()\n\n add('micromarkExtensions', gfm(options))\n add('fromMarkdownExtensions', gfmFromMarkdown())\n add('toMarkdownExtensions', gfmToMarkdown(options))\n\n /**\n * @param {string} field\n * @param {unknown} value\n */\n function add(field, value) {\n const list = /** @type {unknown[]} */ (\n // Other extensions\n /* c8 ignore next 2 */\n data[field] ? data[field] : (data[field] = [])\n )\n\n list.push(value)\n }\n}\n","var own = {}.hasOwnProperty\n\n/**\n * Check if `node` has a set `name` property.\n *\n * @param {unknown} node\n * @param {string} name\n * @returns {boolean}\n */\nexport function hasProperty(node, name) {\n /** @type {unknown} */\n var value =\n name &&\n node &&\n typeof node === 'object' &&\n // @ts-ignore Looks like a node.\n node.type === 'element' &&\n // @ts-ignore Looks like an element.\n node.properties &&\n // @ts-ignore Looks like an element.\n own.call(node.properties, name) &&\n // @ts-ignore Looks like an element.\n node.properties[name]\n\n return value !== null && value !== undefined && value !== false\n}\n","/**\n * @typedef {import('hast').Parent} Parent\n * @typedef {import('hast').Root} Root\n * @typedef {Root|Parent['children'][number]} Node\n */\n\n/**\n * Rank of a heading: H1 -> 1, H2 -> 2, etc.\n *\n * @param {Node} node\n * @returns {number|null}\n */\nexport function headingRank(node) {\n var name =\n (node && node.type === 'element' && node.tagName.toLowerCase()) || ''\n var code =\n name.length === 2 && name.charCodeAt(0) === 104 /* `h` */\n ? name.charCodeAt(1)\n : 0\n return code > 48 /* `0` */ && code < 55 /* `7` */ ? code - 48 /* `0` */ : null\n}\n","/**\n * @fileoverview\n * Get the plain-text value of a hast node.\n * @longdescription\n * ## Use\n *\n * ```js\n * import {h} from 'hastscript'\n * import {toString} from 'hast-util-to-string'\n *\n * toString(h('p', 'Alpha'))\n * //=> 'Alpha'\n * toString(h('div', [h('b', 'Bold'), ' and ', h('i', 'italic'), '.']))\n * //=> 'Bold and italic.'\n * ```\n *\n * ## API\n *\n * ### `toString(node)`\n *\n * Transform a node to a string.\n */\n\n/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n * @typedef {Root|Root['children'][number]} Node\n */\n\n/**\n * Get the plain-text value of a hast node.\n *\n * @param {Node} node\n * @returns {string}\n */\nexport function toString(node) {\n // “The concatenation of data of all the Text node descendants of the context\n // object, in tree order.”\n if ('children' in node) {\n return all(node)\n }\n\n // “Context object’s data.”\n return 'value' in node ? node.value : ''\n}\n\n/**\n * @param {Node} node\n * @returns {string}\n */\nfunction one(node) {\n if (node.type === 'text') {\n return node.value\n }\n\n return 'children' in node ? all(node) : ''\n}\n\n/**\n * @param {Root|Element} node\n * @returns {string}\n */\nfunction all(node) {\n let index = -1\n /** @type {string[]} */\n const result = []\n\n while (++index < node.children.length) {\n result[index] = one(node.children[index])\n }\n\n return result.join('')\n}\n","/**\n * @typedef {import('hast').Root} Root\n */\n\nimport Slugger from 'github-slugger'\nimport {hasProperty} from 'hast-util-has-property'\nimport {headingRank} from 'hast-util-heading-rank'\nimport {toString} from 'hast-util-to-string'\nimport {visit} from 'unist-util-visit'\n\nconst slugs = new Slugger()\n\n/**\n * Plugin to add `id`s to headings.\n *\n * @type {import('unified').Plugin, Root>}\n */\nexport default function rehypeSlug() {\n return (tree) => {\n slugs.reset()\n\n visit(tree, 'element', (node) => {\n if (headingRank(node) && node.properties && !hasProperty(node, 'id')) {\n node.properties.id = slugs.slug(toString(node))\n }\n })\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('hast').Element} Element\n *\n * @typedef {string} TagName\n * @typedef {null|undefined|TagName|TestFunctionAnything|Array.} Test\n */\n\n/**\n * @template {Element} T\n * @typedef {null|undefined|T['tagName']|TestFunctionPredicate|Array.>} PredicateTest\n */\n\n/**\n * Check if an element passes a test\n *\n * @callback TestFunctionAnything\n * @param {Element} element\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {boolean|void}\n */\n\n/**\n * Check if an element passes a certain node test\n *\n * @template {Element} X\n * @callback TestFunctionPredicate\n * @param {Element} element\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {element is X}\n */\n\n/**\n * Check if a node is an element and passes a certain node test\n *\n * @callback AssertAnything\n * @param {unknown} [node]\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {boolean}\n */\n\n/**\n * Check if a node is an element and passes a certain node test\n *\n * @template {Element} Y\n * @callback AssertPredicate\n * @param {unknown} [node]\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {node is Y}\n */\n\n// Check if `node` is an `element` and whether it passes the given test.\nexport const isElement =\n /**\n * Check if a node is an element and passes a test.\n * When a `parent` node is known the `index` of node should also be given.\n *\n * @type {(\n * (() => false) &\n * ((node: unknown, test?: PredicateTest, index?: number, parent?: Parent, context?: unknown) => node is T) &\n * ((node: unknown, test: Test, index?: number, parent?: Parent, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * Check if a node passes a test.\n * When a `parent` node is known the `index` of node should also be given.\n *\n * @param {unknown} [node] Node to check\n * @param {Test} [test] When nullish, checks if `node` is a `Node`.\n * When `string`, works like passing `function (node) {return node.type === test}`.\n * When `function` checks if function passed the node is true.\n * When `array`, checks any one of the subtests pass.\n * @param {number} [index] Position of `node` in `parent`\n * @param {Parent} [parent] Parent of `node`\n * @param {unknown} [context] Context object to invoke `test` with\n * @returns {boolean} Whether test passed and `node` is an `Element` (object with `type` set to `element` and `tagName` set to a non-empty string).\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convertElement(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 for child node')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!parent.type || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n // @ts-expect-error Looks like a node.\n if (!node || !node.type || typeof node.type !== 'string') {\n return false\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 check.call(context, node, index, parent)\n }\n )\n\nexport const convertElement =\n /**\n * @type {(\n * ((test: T['tagName']|TestFunctionPredicate) => AssertPredicate) &\n * ((test?: Test) => AssertAnything)\n * )}\n */\n (\n /**\n * Generate an assertion from a check.\n * @param {Test} [test]\n * When nullish, checks if `node` is a `Node`.\n * When `string`, works like passing `function (node) {return 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 any one of the subtests pass.\n * @returns {AssertAnything}\n */\n function (test) {\n if (test === undefined || test === null) {\n return element\n }\n\n if (typeof test === 'string') {\n return tagNameFactory(test)\n }\n\n if (typeof test === 'object') {\n return anyFactory(test)\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n throw new Error('Expected function, string, or array as test')\n }\n )\n\n/**\n * @param {Array.} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n /** @type {Array.} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convertElement(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @param {unknown[]} parameters\n * @returns {boolean}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].call(this, ...parameters)) {\n return true\n }\n }\n\n return false\n }\n}\n\n/**\n * Utility to convert a string into a function which checks a given node’s tag\n * name for said string.\n *\n * @param {TagName} check\n * @returns {AssertAnything}\n */\nfunction tagNameFactory(check) {\n return tagName\n\n /**\n * @param {unknown} node\n * @returns {boolean}\n */\n function tagName(node) {\n return element(node) && node.tagName === check\n }\n}\n\n/**\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n return assertion\n\n /**\n * @this {unknown}\n * @param {unknown} node\n * @param {Array.} parameters\n * @returns {boolean}\n */\n function assertion(node, ...parameters) {\n // @ts-expect-error: fine.\n return element(node) && Boolean(check.call(this, node, ...parameters))\n }\n}\n\n/**\n * Utility to return true if this is an element.\n * @param {unknown} node\n * @returns {node is Element}\n */\nfunction element(node) {\n return Boolean(\n node &&\n typeof node === 'object' &&\n // @ts-expect-error Looks like a node.\n node.type === 'element' &&\n // @ts-expect-error Looks like an element.\n typeof node.tagName === 'string'\n )\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Parent} Parent\n * @typedef {import('hast').Element} Element\n * @typedef {Element['children'][number]} ElementChild\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast-util-is-element').Test} Test\n *\n * @typedef {'prepend'|'append'|'wrap'|'before'|'after'} Behavior\n *\n * @callback Build\n * @param {Element} node\n * @returns {ElementChild|ElementChild[]}\n *\n * @typedef Options\n * Configuration.\n * @property {Behavior} [behavior='prepend']\n * How to create links.\n * @property {Behavior} [behaviour]\n * Please use `behavior` instead\n * @property {Properties} [properties]\n * Extra properties to set on the link when injecting.\n * Defaults to `{ariaHidden: true, tabIndex: -1}` when `'prepend'` or\n * `'append'`.\n * @property {ElementChild|ElementChild[]|Build} [content={type: 'element', tagName: 'span', properties: {className: ['icon', 'icon-link']}, children: []}]\n * hast nodes to insert in the link.\n * @property {ElementChild|ElementChild[]|Build} [group]\n * hast node to wrap the heading and link with, if `behavior` is `'before'` or\n * `'after'`.\n * There is no default.\n * @property {Test} [test]\n * Test to define which heading elements are linked.\n * Any test that can be given to `hast-util-is-element` is supported.\n * The default (no test) is to link all headings.\n * Can be used to link only h1-h3, or for example all except h1.\n */\n\nimport extend from 'extend'\nimport {hasProperty} from 'hast-util-has-property'\nimport {headingRank} from 'hast-util-heading-rank'\nimport {convertElement} from 'hast-util-is-element'\nimport {visit, SKIP} from 'unist-util-visit'\n\n/** @type {Element} */\nconst contentDefaults = {\n type: 'element',\n tagName: 'span',\n properties: {className: ['icon', 'icon-link']},\n children: []\n}\n\n/**\n * Plugin to automatically add links to headings (h1-h6).\n *\n * @type {import('unified').Plugin<[Options?]|void[], Root>}\n */\nexport default function rehypeAutolinkHeadings(options = {}) {\n let props = options.properties\n const behavior = options.behaviour || options.behavior || 'prepend'\n const content = options.content || contentDefaults\n const group = options.group\n const is = convertElement(options.test)\n\n /** @type {import('unist-util-visit/complex-types').Visitor} */\n let method\n\n if (behavior === 'wrap') {\n method = wrap\n } else if (behavior === 'before' || behavior === 'after') {\n method = around\n } else {\n if (!props) {\n props = {ariaHidden: 'true', tabIndex: -1}\n }\n\n method = inject\n }\n\n return (tree) => {\n visit(tree, 'element', (node, index, parent) => {\n if (\n headingRank(node) &&\n hasProperty(node, 'id') &&\n is(node, index, parent)\n ) {\n return method(node, index, parent)\n }\n })\n }\n\n /** @type {import('unist-util-visit/complex-types').Visitor} */\n function inject(node) {\n node.children[behavior === 'prepend' ? 'unshift' : 'push'](\n create(node, extend(true, {}, props), toChildren(content, node))\n )\n\n return [SKIP]\n }\n\n /** @type {import('unist-util-visit/complex-types').Visitor} */\n function around(node, index, parent) {\n // Uncommon.\n /* c8 ignore next */\n if (typeof index !== 'number' || !parent) return\n\n const link = create(\n node,\n extend(true, {}, props),\n toChildren(content, node)\n )\n let nodes = behavior === 'before' ? [link, node] : [node, link]\n\n if (group) {\n const grouping = toNode(group, node)\n\n if (grouping && !Array.isArray(grouping) && grouping.type === 'element') {\n grouping.children = nodes\n nodes = [grouping]\n }\n }\n\n parent.children.splice(index, 1, ...nodes)\n\n return [SKIP, index + nodes.length]\n }\n\n /** @type {import('unist-util-visit/complex-types').Visitor} */\n function wrap(node) {\n node.children = [create(node, extend(true, {}, props), node.children)]\n return [SKIP]\n }\n\n /**\n * @param {ElementChild|ElementChild[]|Build} value\n * @param {Element} node\n * @returns {ElementChild[]}\n */\n function toChildren(value, node) {\n const result = toNode(value, node)\n return Array.isArray(result) ? result : [result]\n }\n\n /**\n * @param {ElementChild|ElementChild[]|Build} value\n * @param {Element} node\n * @returns {ElementChild|ElementChild[]}\n */\n function toNode(value, node) {\n if (typeof value === 'function') return value(node)\n return extend(true, Array.isArray(value) ? [] : {}, value)\n }\n\n /**\n * @param {Element} node\n * @param {Properties} props\n * @param {ElementChild[]} children\n * @returns {Element}\n */\n function create(node, props, children) {\n return {\n type: 'element',\n tagName: 'a',\n properties: Object.assign({}, props, {\n // Fix hast types and make them required.\n /* c8 ignore next */\n href: '#' + (node.properties || {}).id\n }),\n children\n }\n }\n}\n","/**\n * @typedef {import('./core.js').HChild} Child Acceptable child value\n * @typedef {import('./core.js').HProperties} Properties Acceptable properties value.\n *\n * @typedef {import('./jsx-classic').Element} s.JSX.Element\n * @typedef {import('./jsx-classic').IntrinsicAttributes} s.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic').IntrinsicElements} s.JSX.IntrinsicElements\n * @typedef {import('./jsx-classic').ElementChildrenAttribute} s.JSX.ElementChildrenAttribute\n */\n\nimport {svg} from 'property-information'\nimport {core} from './core.js'\nimport {svgCaseSensitiveTagNames} from './svg-case-sensitive-tag-names.js'\n\nexport const s = core(svg, 'g', svgCaseSensitiveTagNames)\n","export const svgCaseSensitiveTagNames = [\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'clipPath',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'foreignObject',\n 'glyphRef',\n 'linearGradient',\n 'radialGradient',\n 'solidColor',\n 'textArea',\n 'textPath'\n]\n","/**\n * Map of web namespaces.\n *\n * @type {Record}\n */\nexport const webNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg',\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace',\n xmlns: 'http://www.w3.org/2000/xmlns/'\n}\n","/**\n * @typedef {import('vfile').VFile} VFile\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {import('hast').Parent} Parent\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').DocType} Doctype\n * @typedef {Parent['children'][number]} Child\n * @typedef {Element['children'][number]} ElementChild\n * @typedef {Child|Root} Node\n * @typedef {import('parse5').Document} P5Document\n * @typedef {import('parse5').DocumentType} P5Doctype\n * @typedef {import('parse5').CommentNode} P5Comment\n * @typedef {import('parse5').TextNode} P5Text\n * @typedef {import('parse5').Element} P5Element\n * @typedef {import('parse5').ElementLocation} P5ElementLocation\n * @typedef {import('parse5').Location} P5Location\n * @typedef {import('parse5').Attribute} P5Attribute\n * @typedef {import('parse5').Node} P5Node\n *\n * @typedef {'html'|'svg'} Space\n *\n * @callback Handler\n * @param {Context} ctx\n * @param {P5Node} node\n * @param {Array.} [children]\n * @returns {Node}\n *\n * @typedef Options\n * @property {Space} [space='html'] Whether the root of the tree is in the `'html'` or `'svg'` space. If an element in with the SVG namespace is found in `ast`, `fromParse5` automatically switches to the SVG space when entering the element, and switches back when leaving\n * @property {VFile} [file] `VFile`, used to add positional information to nodes. If given, the file should have the original HTML source as its contents\n * @property {boolean} [verbose=false] Whether to add extra positional information about starting tags, closing tags, and attributes to elements. Note: not used without `file`\n *\n * @typedef Context\n * @property {Schema} schema\n * @property {VFile|undefined} file\n * @property {boolean|undefined} verbose\n * @property {boolean} location\n */\n\nimport {h, s} from 'hastscript'\nimport {html, svg, find} from 'property-information'\nimport {location} from 'vfile-location'\nimport {webNamespaces} from 'web-namespaces'\n\nconst own = {}.hasOwnProperty\n\n// Handlers.\nconst map = {\n '#document': root,\n '#document-fragment': root,\n '#text': text,\n '#comment': comment,\n '#documentType': doctype\n}\n\n/**\n * Transform Parse5’s AST to a hast tree.\n *\n * @param {P5Node} ast\n * @param {Options|VFile} [options]\n */\nexport function fromParse5(ast, options = {}) {\n /** @type {Options} */\n let settings\n /** @type {VFile|undefined} */\n let file\n\n if (isFile(options)) {\n file = options\n settings = {}\n } else {\n file = options.file\n settings = options\n }\n\n return transform(\n {\n schema: settings.space === 'svg' ? svg : html,\n file,\n verbose: settings.verbose,\n location: false\n },\n ast\n )\n}\n\n/**\n * Transform children.\n *\n * @param {Context} ctx\n * @param {P5Node} ast\n * @returns {Node}\n */\nfunction transform(ctx, ast) {\n const schema = ctx.schema\n /** @type {Handler} */\n // @ts-expect-error: index is fine.\n const fn = own.call(map, ast.nodeName) ? map[ast.nodeName] : element\n /** @type {Array.|undefined} */\n let children\n\n // Element.\n if ('tagName' in ast) {\n ctx.schema = ast.namespaceURI === webNamespaces.svg ? svg : html\n }\n\n if ('childNodes' in ast) {\n children = nodes(ctx, ast.childNodes)\n }\n\n const result = fn(ctx, ast, children)\n\n if ('sourceCodeLocation' in ast && ast.sourceCodeLocation && ctx.file) {\n // @ts-expect-error It’s fine.\n const position = createLocation(ctx, result, ast.sourceCodeLocation)\n\n if (position) {\n ctx.location = true\n result.position = position\n }\n }\n\n ctx.schema = schema\n\n return result\n}\n\n/**\n * Transform children.\n *\n * @param {Context} ctx\n * @param {Array.} children\n * @returns {Array.}\n */\nfunction nodes(ctx, children) {\n let index = -1\n /** @type {Array.} */\n const result = []\n\n while (++index < children.length) {\n // @ts-expect-error Assume no roots in children.\n result[index] = transform(ctx, children[index])\n }\n\n return result\n}\n\n/**\n * Transform a document.\n * Stores `ast.quirksMode` in `node.data.quirksMode`.\n *\n * @type {Handler}\n * @param {P5Document} ast\n * @param {Array.} children\n * @returns {Root}\n */\nfunction root(ctx, ast, children) {\n /** @type {Root} */\n const result = {\n type: 'root',\n children,\n data: {quirksMode: ast.mode === 'quirks' || ast.mode === 'limited-quirks'}\n }\n\n if (ctx.file && ctx.location) {\n const doc = String(ctx.file)\n const loc = location(doc)\n result.position = {\n start: loc.toPoint(0),\n end: loc.toPoint(doc.length)\n }\n }\n\n return result\n}\n\n/**\n * Transform a doctype.\n *\n * @type {Handler}\n * @returns {Doctype}\n */\nfunction doctype() {\n // @ts-expect-error Types are out of date.\n return {type: 'doctype'}\n}\n\n/**\n * Transform a text.\n *\n * @type {Handler}\n * @param {P5Text} ast\n * @returns {Text}\n */\nfunction text(_, ast) {\n return {type: 'text', value: ast.value}\n}\n\n/**\n * Transform a comment.\n *\n * @type {Handler}\n * @param {P5Comment} ast\n * @returns {Comment}\n */\nfunction comment(_, ast) {\n return {type: 'comment', value: ast.data}\n}\n\n/**\n * Transform an element.\n *\n * @type {Handler}\n * @param {P5Element} ast\n * @param {Array.} children\n * @returns {Element}\n */\nfunction element(ctx, ast, children) {\n const fn = ctx.schema.space === 'svg' ? s : h\n let index = -1\n /** @type {Object.} */\n const props = {}\n\n while (++index < ast.attrs.length) {\n const attribute = ast.attrs[index]\n props[(attribute.prefix ? attribute.prefix + ':' : '') + attribute.name] =\n attribute.value\n }\n\n const result = fn(ast.tagName, props, children)\n\n if (result.tagName === 'template' && 'content' in ast) {\n const pos = ast.sourceCodeLocation\n const startTag = pos && pos.startTag && position(pos.startTag)\n const endTag = pos && pos.endTag && position(pos.endTag)\n\n /** @type {Root} */\n // @ts-expect-error Types are wrong.\n const content = transform(ctx, ast.content)\n\n if (startTag && endTag && ctx.file) {\n content.position = {start: startTag.end, end: endTag.start}\n }\n\n result.content = content\n }\n\n return result\n}\n\n/**\n * Create clean positional information.\n *\n * @param {Context} ctx\n * @param {Node} node\n * @param {P5ElementLocation} location\n * @returns {Position|null}\n */\nfunction createLocation(ctx, node, location) {\n const result = position(location)\n\n if (node.type === 'element') {\n const tail = node.children[node.children.length - 1]\n\n // Bug for unclosed with children.\n // See: .\n if (\n result &&\n !location.endTag &&\n tail &&\n tail.position &&\n tail.position.end\n ) {\n result.end = Object.assign({}, tail.position.end)\n }\n\n if (ctx.verbose) {\n /** @type {Object.} */\n const props = {}\n /** @type {string} */\n let key\n\n for (key in location.attrs) {\n if (own.call(location.attrs, key)) {\n props[find(ctx.schema, key).property] = position(location.attrs[key])\n }\n }\n\n node.data = {\n position: {\n opening: position(location.startTag),\n closing: location.endTag ? position(location.endTag) : null,\n properties: props\n }\n }\n }\n }\n\n return result\n}\n\n/**\n * @param {P5Location} loc\n * @returns {Position|null}\n */\nfunction position(loc) {\n const start = point({\n line: loc.startLine,\n column: loc.startCol,\n offset: loc.startOffset\n })\n const end = point({\n line: loc.endLine,\n column: loc.endCol,\n offset: loc.endOffset\n })\n // @ts-expect-error `null` is fine.\n return start || end ? {start, end} : null\n}\n\n/**\n * @param {Point} point\n * @returns {Point|null}\n */\nfunction point(point) {\n return point.line && point.column ? point : null\n}\n\n/**\n * @param {VFile|Options} value\n * @returns {value is VFile}\n */\nfunction isFile(value) {\n return 'messages' in value\n}\n","/**\n * @typedef {import('unist').Point} Point\n * @typedef {import('vfile').VFile} VFile\n *\n * @typedef {Pick} PositionalPoint\n * @typedef {Required} FullPoint\n * @typedef {NonNullable} Offset\n */\n\n/**\n * Get transform functions for the given `document`.\n *\n * @param {string|Uint8Array|VFile} file\n */\nexport function location(file) {\n var value = String(file)\n /** @type {Array.} */\n var indices = []\n var search = /\\r?\\n|\\r/g\n\n while (search.test(value)) {\n indices.push(search.lastIndex)\n }\n\n indices.push(value.length + 1)\n\n return {toPoint, toOffset}\n\n /**\n * Get the line and column-based `point` for `offset` in the bound indices.\n * Returns a point with `undefined` values when given invalid or out of bounds\n * input.\n *\n * @param {Offset} offset\n * @returns {FullPoint}\n */\n function toPoint(offset) {\n var index = -1\n\n if (offset > -1 && offset < indices[indices.length - 1]) {\n while (++index < indices.length) {\n if (indices[index] > offset) {\n return {\n line: index + 1,\n column: offset - (indices[index - 1] || 0) + 1,\n offset\n }\n }\n }\n }\n\n return {line: undefined, column: undefined, offset: undefined}\n }\n\n /**\n * Get the `offset` for a line and column-based `point` in the bound indices.\n * Returns `-1` when given invalid or out of bounds input.\n *\n * @param {PositionalPoint} point\n * @returns {Offset}\n */\n function toOffset(point) {\n var line = point && point.line\n var column = point && point.column\n /** @type {number} */\n var offset\n\n if (\n typeof line === 'number' &&\n typeof column === 'number' &&\n !Number.isNaN(line) &&\n !Number.isNaN(column) &&\n line - 1 in indices\n ) {\n offset = (indices[line - 2] || 0) + column - 1 || 0\n }\n\n return offset > -1 && offset < indices[indices.length - 1] ? offset : -1\n }\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Text} Text\n *\n * @typedef {import('unist-util-is').AssertPredicate} AssertElement\n * @typedef {import('unist-util-is').AssertPredicate} AssertText\n * @typedef {import('unist-util-is').AssertPredicate} AssertRoot\n *\n * @callback CreateElementLike\n * @param {string} name\n * @param {any} attributes\n * @param {Array.} [children]\n * @returns {any}\n *\n * @typedef Context\n * @property {html|svg} schema\n * @property {string|null} prefix\n * @property {number} key\n * @property {boolean} react\n * @property {boolean} vue\n * @property {boolean} vdom\n * @property {boolean} hyperscript\n *\n * @typedef Options\n * @property {string|null} [prefix]\n * @property {'html'|'svg'} [space]\n */\n\nimport {html, svg, find, hastToReact} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport style from 'style-to-object'\nimport {webNamespaces} from 'web-namespaces'\nimport {convert} from 'unist-util-is'\n\nconst ns = /** @type {Record} */ (webNamespaces)\nconst toReact = /** @type {Record} */ (hastToReact)\n\nconst own = {}.hasOwnProperty\n\n/** @type {AssertRoot} */\n// @ts-expect-error it’s correct.\nconst root = convert('root')\n/** @type {AssertElement} */\n// @ts-expect-error it’s correct.\nconst element = convert('element')\n/** @type {AssertText} */\n// @ts-expect-error it’s correct.\nconst text = convert('text')\n\n/**\n * @template {CreateElementLike} H\n * @param {H} h\n * @param {Element|Root} tree\n * @param {string|boolean|Options} [options]\n * @returns {ReturnType}\n */\nexport function toH(h, tree, options) {\n if (typeof h !== 'function') {\n throw new TypeError('h is not a function')\n }\n\n const r = react(h)\n const v = vue(h)\n const vd = vdom(h)\n /** @type {string|boolean|null|undefined} */\n let prefix\n /** @type {Element} */\n let node\n\n if (typeof options === 'string' || typeof options === 'boolean') {\n prefix = options\n options = {}\n } else {\n if (!options) options = {}\n prefix = options.prefix\n }\n\n if (root(tree)) {\n // @ts-expect-error Allow `doctypes` in there, we’ll filter them out later.\n node =\n tree.children.length === 1 && element(tree.children[0])\n ? tree.children[0]\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: tree.children\n }\n } else if (element(tree)) {\n node = tree\n } else {\n throw new Error(\n // @ts-expect-error runtime.\n 'Expected root or element, not `' + ((tree && tree.type) || tree) + '`'\n )\n }\n\n return transform(h, node, {\n schema: options.space === 'svg' ? svg : html,\n prefix:\n prefix === undefined || prefix === null\n ? r || v || vd\n ? 'h-'\n : null\n : typeof prefix === 'string'\n ? prefix\n : prefix\n ? 'h-'\n : null,\n key: 0,\n react: r,\n vue: v,\n vdom: vd,\n hyperscript: hyperscript(h)\n })\n}\n\n/**\n * Transform a hast node through a hyperscript interface to *anything*!\n *\n * @template {CreateElementLike} H\n * @param {H} h\n * @param {Element} node\n * @param {Context} ctx\n */\nfunction transform(h, node, ctx) {\n const parentSchema = ctx.schema\n let schema = parentSchema\n let name = node.tagName\n /** @type {Record} */\n const attributes = {}\n /** @type {Array.|string>} */\n const nodes = []\n let index = -1\n /** @type {string} */\n let key\n\n if (parentSchema.space === 'html' && name.toLowerCase() === 'svg') {\n schema = svg\n ctx.schema = schema\n }\n\n for (key in node.properties) {\n if (node.properties && own.call(node.properties, key)) {\n addAttribute(attributes, key, node.properties[key], ctx, name)\n }\n }\n\n if (ctx.vdom) {\n if (schema.space === 'html') {\n name = name.toUpperCase()\n } else if (schema.space) {\n attributes.namespace = ns[schema.space]\n }\n }\n\n if (ctx.prefix) {\n ctx.key++\n attributes.key = ctx.prefix + ctx.key\n }\n\n if (node.children) {\n while (++index < node.children.length) {\n const value = node.children[index]\n\n if (element(value)) {\n nodes.push(transform(h, value, ctx))\n } else if (text(value)) {\n nodes.push(value.value)\n }\n }\n }\n\n // Restore parent schema.\n ctx.schema = parentSchema\n\n // Ensure no React warnings are triggered for void elements having children\n // passed in.\n return nodes.length > 0\n ? h.call(node, name, attributes, nodes)\n : h.call(node, name, attributes)\n}\n\n/**\n * @param {Record} props\n * @param {string} prop\n * @param {unknown} value\n * @param {Context} ctx\n * @param {string} name\n */\n// eslint-disable-next-line complexity, max-params\nfunction addAttribute(props, prop, value, ctx, name) {\n const info = find(ctx.schema, prop)\n /** @type {string|undefined} */\n let subprop\n\n // Ignore nullish and `NaN` values.\n // Ignore `false` and falsey known booleans for hyperlike DSLs.\n if (\n value === undefined ||\n value === null ||\n (typeof value === 'number' && Number.isNaN(value)) ||\n (value === false && (ctx.vue || ctx.vdom || ctx.hyperscript)) ||\n (!value && info.boolean && (ctx.vue || ctx.vdom || ctx.hyperscript))\n ) {\n return\n }\n\n if (Array.isArray(value)) {\n // Accept `array`.\n // Most props are space-separated.\n value = info.commaSeparated ? commas(value) : spaces(value)\n }\n\n // Treat `true` and truthy known booleans.\n if (info.boolean && ctx.hyperscript) {\n value = ''\n }\n\n // VDOM, Vue, and React accept `style` as object.\n if (\n info.property === 'style' &&\n typeof value === 'string' &&\n (ctx.react || ctx.vue || ctx.vdom)\n ) {\n value = parseStyle(value, name)\n }\n\n if (ctx.vue) {\n if (info.property !== 'style') subprop = 'attrs'\n } else if (!info.mustUseProperty) {\n if (ctx.vdom) {\n if (info.property !== 'style') subprop = 'attributes'\n } else if (ctx.hyperscript) {\n subprop = 'attrs'\n }\n }\n\n if (subprop) {\n props[subprop] = Object.assign(props[subprop] || {}, {\n [info.attribute]: value\n })\n } else if (info.space && ctx.react) {\n props[toReact[info.property] || info.property] = value\n } else {\n props[info.attribute] = value\n }\n}\n\n/**\n * Check if `h` is `react.createElement`.\n *\n * @param {CreateElementLike} h\n * @returns {boolean}\n */\nfunction react(h) {\n /** @type {unknown} */\n const node = h('div', {})\n return Boolean(\n node &&\n // @ts-expect-error Looks like a React node.\n ('_owner' in node || '_store' in node) &&\n // @ts-expect-error Looks like a React node.\n (node.key === undefined || node.key === null)\n )\n}\n\n/**\n * Check if `h` is `hyperscript`.\n *\n * @param {CreateElementLike} h\n * @returns {boolean}\n */\nfunction hyperscript(h) {\n return 'context' in h && 'cleanup' in h\n}\n\n/**\n * Check if `h` is `virtual-dom/h`.\n *\n * @param {CreateElementLike} h\n * @returns {boolean}\n */\nfunction vdom(h) {\n /** @type {unknown} */\n const node = h('div', {})\n // @ts-expect-error Looks like a vnode.\n return node.type === 'VirtualNode'\n}\n\n/**\n * Check if `h` is Vue.\n *\n * @param {CreateElementLike} h\n * @returns {boolean}\n */\nfunction vue(h) {\n /** @type {unknown} */\n const node = h('div', {})\n // @ts-expect-error Looks like a Vue node.\n return Boolean(node && node.context && node.context._isVue)\n}\n\n/**\n * @param {string} value\n * @param {string} tagName\n * @returns {Record}\n */\nfunction parseStyle(value, tagName) {\n /** @type {Record} */\n const result = {}\n\n try {\n style(value, (name, value) => {\n if (name.slice(0, 4) === '-ms-') name = 'ms-' + name.slice(4)\n\n result[\n name.replace(\n /-([a-z])/g,\n /**\n * @param {string} _\n * @param {string} $1\n * @returns {string}\n */ (_, $1) => $1.toUpperCase()\n )\n ] = value\n })\n } catch (error) {\n error.message =\n tagName + '[style]' + error.message.slice('undefined'.length)\n throw error\n }\n\n return result\n}\n","var own = {}.hasOwnProperty\n\n/**\n * @callback Handler\n * @param {...unknown} value\n * @return {unknown}\n *\n * @typedef {Record} Handlers\n *\n * @typedef {Object} Options\n * @property {Handler} [unknown]\n * @property {Handler} [invalid]\n * @property {Handlers} [handlers]\n */\n\n/**\n * Handle values based on a property.\n *\n * @param {string} key\n * @param {Options} [options]\n */\nexport function zwitch(key, options) {\n var settings = options || {}\n\n /**\n * Handle one value.\n * Based on the bound `key`, a respective handler will be called.\n * If `value` is not an object, or doesn’t have a `key` property, the special\n * “invalid” handler will be called.\n * If `value` has an unknown `key`, the special “unknown” handler will be\n * called.\n *\n * All arguments, and the context object, are passed through to the handler,\n * and it’s result is returned.\n *\n * @param {...unknown} [value]\n * @this {unknown}\n * @returns {unknown}\n * @property {Handler} invalid\n * @property {Handler} unknown\n * @property {Handlers} handlers\n */\n function one(value) {\n var fn = one.invalid\n var handlers = one.handlers\n\n if (value && own.call(value, key)) {\n fn = own.call(handlers, value[key]) ? handlers[value[key]] : one.unknown\n }\n\n if (fn) {\n return fn.apply(this, arguments)\n }\n }\n\n one.handlers = settings.handlers || {}\n one.invalid = settings.invalid\n one.unknown = settings.unknown\n\n return one\n}\n","/**\n * @typedef {import('parse5').Node} P5Node\n * @typedef {import('parse5').Document} P5Document\n * @typedef {import('parse5').DocumentFragment} P5Fragment\n * @typedef {import('parse5').DocumentType} P5Doctype\n * @typedef {import('parse5').CommentNode} P5Comment\n * @typedef {import('parse5').TextNode} P5Text\n * @typedef {import('parse5').Element} P5Element\n * @typedef {import('parse5').Attribute} P5Attribute\n * @typedef {import('parse5').ParentNode} P5Parent\n * @typedef {Exclude} P5Child\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('property-information').Info} Info\n * @typedef {'html'|'svg'} Space\n * @typedef {import('hast').Parent} Parent\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').DocType} Doctype\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {Parent['children'][number]} Child\n * @typedef {Child|Root} Node\n *\n * @callback Handle\n * @param {Node} node\n * @param {Schema} schema\n * @returns {P5Node}\n */\n\nimport {html, svg, find} from 'property-information'\nimport {toH} from 'hast-to-hyperscript'\nimport {webNamespaces} from 'web-namespaces'\nimport {zwitch} from 'zwitch'\n\nvar own = {}.hasOwnProperty\n\nvar one = zwitch('type', {handlers: {root, element, text, comment, doctype}})\n\n/**\n * Transform a tree from hast to Parse5’s AST.\n *\n * @param {Node} tree\n * @param {Space} [space='html']\n * @returns {P5Node}\n */\nexport function toParse5(tree, space) {\n // @ts-ignore Types are wrong.\n return one(tree, space === 'svg' ? svg : html)\n}\n\n/**\n * @type {Handle}\n * @param {Root} node\n * @returns {P5Document}\n */\nfunction root(node, schema) {\n /** @type {P5Document} */\n var p5 = {\n nodeName: '#document',\n mode: (node.data || {}).quirksMode ? 'quirks' : 'no-quirks',\n childNodes: []\n }\n // @ts-ignore Assume correct children.\n p5.childNodes = all(node.children, p5, schema)\n return patch(node, p5)\n}\n\n/**\n * @type {Handle}\n * @param {Root} node\n * @returns {P5Fragment}\n */\nfunction fragment(node, schema) {\n /** @type {P5Fragment} */\n var p5 = {nodeName: '#document-fragment', childNodes: []}\n // @ts-ignore Assume correct children.\n p5.childNodes = all(node.children, p5, schema)\n return patch(node, p5)\n}\n\n/**\n * @type {Handle}\n * @param {Doctype} node\n * @returns {P5Doctype}\n */\nfunction doctype(node) {\n return patch(node, {\n nodeName: '#documentType',\n name: 'html',\n publicId: '',\n systemId: '',\n parentNode: undefined\n })\n}\n\n/**\n * @type {Handle}\n * @param {Text} node\n * @returns {P5Text}\n */\nfunction text(node) {\n return patch(node, {\n nodeName: '#text',\n value: node.value,\n parentNode: undefined\n })\n}\n\n/**\n * @type {Handle}\n * @param {Comment} node\n * @returns {P5Comment}\n */\nfunction comment(node) {\n return patch(node, {\n nodeName: '#comment',\n data: node.value,\n parentNode: undefined\n })\n}\n\n/**\n * @type {Handle}\n * @param {Element} node\n * @returns {P5Element}\n */\nfunction element(node, schema) {\n /** @type {Space} */\n // @ts-ignore Assume space.\n var space = schema.space\n return toH(h, Object.assign({}, node, {children: []}), {space})\n\n /**\n * @param {string} name\n * @param {Object.} attrs\n */\n function h(name, attrs) {\n /** @type {Array.} */\n var values = []\n /** @type {Info} */\n var info\n /** @type {P5Attribute} */\n var value\n /** @type {string} */\n var key\n /** @type {number} */\n var index\n /** @type {P5Element} */\n var p5\n\n for (key in attrs) {\n if (!own.call(attrs, key) || attrs[key] === false) {\n continue\n }\n\n info = find(schema, key)\n\n if (info.boolean && !attrs[key]) {\n continue\n }\n\n value = {name: key, value: attrs[key] === true ? '' : String(attrs[key])}\n\n if (info.space && info.space !== 'html' && info.space !== 'svg') {\n index = key.indexOf(':')\n\n if (index < 0) {\n value.prefix = ''\n } else {\n value.name = key.slice(index + 1)\n value.prefix = key.slice(0, index)\n }\n\n value.namespace = webNamespaces[info.space]\n }\n\n values.push(value)\n }\n\n if (schema.space === 'html' && node.tagName === 'svg') schema = svg\n\n p5 = patch(node, {\n nodeName: name,\n tagName: name,\n attrs: values,\n namespaceURI: webNamespaces[schema.space],\n childNodes: [],\n parentNode: undefined\n })\n\n // @ts-ignore Assume correct children.\n p5.childNodes = all(node.children, p5, schema)\n\n // @ts-ignore Types are wrong.\n if (name === 'template') p5.content = fragment(node.content, schema)\n\n return p5\n }\n}\n\n/**\n * @param {Array.} children\n * @param {P5Parent} p5\n * @param {Schema} schema\n * @returns {Array.}\n */\nfunction all(children, p5, schema) {\n var index = -1\n /** @type {Array.} */\n var result = []\n /** @type {P5Child} */\n var child\n\n if (children) {\n while (++index < children.length) {\n // @ts-ignore Assume child.\n child = one(children[index], schema)\n\n // @ts-ignore types are wrong.\n child.parentNode = p5\n\n result.push(child)\n }\n }\n\n return result\n}\n\n/**\n * Patch specific properties.\n *\n * @template {P5Node} T\n * @param {Node} node\n * @param {T} p5\n * @returns {T}\n */\nfunction patch(node, p5) {\n var position = node.position\n\n if (position && position.start && position.end) {\n // @ts-ignore Types are wrong.\n p5.sourceCodeLocation = {\n startLine: position.start.line,\n startCol: position.start.column,\n startOffset: position.start.offset,\n endLine: position.end.line,\n endCol: position.end.column,\n endOffset: position.end.offset\n }\n }\n\n return p5\n}\n","/**\n * List of HTML void tag names.\n *\n * @type {Array}\n */\nexport const htmlVoidElements = [\n 'area',\n 'base',\n 'basefont',\n 'bgsound',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'frame',\n 'hr',\n 'image',\n 'img',\n 'input',\n 'isindex',\n 'keygen',\n 'link',\n 'menuitem',\n 'meta',\n 'nextid',\n 'param',\n 'source',\n 'track',\n 'wbr'\n]\n","/**\n * @typedef {import('vfile').VFile} VFile\n * @typedef {import('parse5').Document} P5Document\n * @typedef {import('parse5').DocumentFragment} P5Fragment\n * @typedef {Omit} P5Element\n * @typedef {import('parse5').Attribute} P5Attribute\n * @typedef {Omit & {startOffset: number|undefined, endOffset: number|undefined}} P5Location\n * @typedef {import('parse5').ParserOptions} P5ParserOptions\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').DocType} Doctype\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').Content} Content\n * @typedef {Root|Content} Node\n * @typedef {import('../complex-types').Raw} Raw\n *\n * @typedef {Omit & {value: {stitch: Node}}} Stitch\n *\n * @typedef Options\n * @property {Array} [passThrough]\n * List of custom hast node types to pass through (keep) in hast.\n * If the passed through nodes have children, those children are expected to\n * be hast and will be handled.\n *\n * @typedef HiddenTokenizer\n * @property {Array} __mixins\n * Way too simple, but works for us.\n * @property {HiddenPreprocessor} preprocessor\n * @property {(value: string) => void} write\n * @property {() => number} _consume\n * @property {Array} tokenQueue\n * @property {string} state\n * @property {string} returnState\n * @property {number} charRefCode\n * @property {Array} tempBuff\n * @property {Function} _flushCodePointsConsumedAsCharacterReference\n * @property {string} lastStartTagName\n * @property {number} consumedAfterSnapshot\n * @property {boolean} active\n * @property {HiddenToken|undefined} currentCharacterToken\n * @property {HiddenToken|undefined} currentToken\n * @property {unknown} currentAttr\n * @property {Function} NAMED_CHARACTER_REFERENCE_STATE\n * @property {Function} NUMERIC_CHARACTER_REFERENCE_END_STATE\n *\n * @typedef {Record & {location: P5Location}} HiddenToken\n *\n * @typedef HiddenPreprocessor\n * @property {string|undefined} html\n * @property {number} pos\n * @property {number} lastGapPos\n * @property {number} lastCharPos\n * @property {Array} gapStack\n * @property {boolean} skipNextNewLine\n * @property {boolean} lastChunkWritten\n * @property {boolean} endOfChunkHit\n *\n * @typedef HiddenLocationTracker\n * @property {P5Location|undefined} currentAttrLocation\n * @property {P5Location} ctLoc\n * @property {HiddenPosTracker} posTracker\n *\n * @typedef HiddenPosTracker\n * @property {boolean} isEol\n * @property {number} lineStartPos\n * @property {number} droppedBufferSize\n * @property {number} offset\n * @property {number} col\n * @property {number} line\n */\n\n// @ts-expect-error: untyped.\nimport Parser from 'parse5/lib/parser/index.js'\nimport {pointStart, pointEnd} from 'unist-util-position'\nimport {visit} from 'unist-util-visit'\nimport {fromParse5} from 'hast-util-from-parse5'\nimport {toParse5} from 'hast-util-to-parse5'\nimport {htmlVoidElements} from 'html-void-elements'\nimport {webNamespaces} from 'web-namespaces'\nimport {zwitch} from 'zwitch'\n\nconst inTemplateMode = 'IN_TEMPLATE_MODE'\nconst dataState = 'DATA_STATE'\nconst characterToken = 'CHARACTER_TOKEN'\nconst startTagToken = 'START_TAG_TOKEN'\nconst endTagToken = 'END_TAG_TOKEN'\nconst commentToken = 'COMMENT_TOKEN'\nconst doctypeToken = 'DOCTYPE_TOKEN'\n\n/** @type {P5ParserOptions} */\nconst parseOptions = {sourceCodeLocationInfo: true, scriptingEnabled: false}\n\n/**\n * Given a hast tree and an optional vfile (for positional info), return a new\n * parsed-again hast tree.\n *\n * @param tree\n * Original hast tree.\n * @param file\n * Virtual file for positional info, optional.\n * @param options\n * Configuration.\n */\nexport const raw =\n /**\n * @type {(\n * ((tree: Node, file: VFile|undefined, options?: Options) => Node) &\n * ((tree: Node, options?: Options) => Node)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {VFile} [file]\n * @param {Options} [options]\n */\n function (tree, file, options) {\n let index = -1\n const parser = new Parser(parseOptions)\n const one = zwitch('type', {\n // @ts-expect-error: hush.\n handlers: {root, element, text, comment, doctype, raw: handleRaw},\n // @ts-expect-error: hush.\n unknown\n })\n /** @type {boolean|undefined} */\n let stitches\n /** @type {HiddenTokenizer|undefined} */\n let tokenizer\n /** @type {HiddenPreprocessor|undefined} */\n let preprocessor\n /** @type {HiddenPosTracker|undefined} */\n let posTracker\n /** @type {HiddenLocationTracker|undefined} */\n let locationTracker\n\n if (isOptions(file)) {\n options = file\n file = undefined\n }\n\n if (options && options.passThrough) {\n while (++index < options.passThrough.length) {\n // @ts-expect-error: hush.\n one.handlers[options.passThrough[index]] = stitch\n }\n }\n\n const result = fromParse5(\n documentMode(tree) ? document() : fragment(),\n file\n )\n\n if (stitches) {\n visit(result, 'comment', (node, index, parent) => {\n const stitch = /** @type {Stitch} */ (/** @type {unknown} */ (node))\n if (stitch.value.stitch && parent !== null && index !== null) {\n // @ts-expect-error: assume the stitch is allowed.\n parent.children[index] = stitch.value.stitch\n return index\n }\n })\n }\n\n // Unpack if possible and when not given a `root`.\n if (\n tree.type !== 'root' &&\n result.type === 'root' &&\n result.children.length === 1\n ) {\n return result.children[0]\n }\n\n return result\n\n /**\n * @returns {P5Fragment}\n */\n function fragment() {\n /** @type {P5Element} */\n const context = {\n nodeName: 'template',\n tagName: 'template',\n attrs: [],\n namespaceURI: webNamespaces.html,\n childNodes: []\n }\n /** @type {P5Element} */\n const mock = {\n nodeName: 'documentmock',\n tagName: 'documentmock',\n attrs: [],\n namespaceURI: webNamespaces.html,\n childNodes: []\n }\n /** @type {P5Fragment} */\n const doc = {nodeName: '#document-fragment', childNodes: []}\n\n parser._bootstrap(mock, context)\n parser._pushTmplInsertionMode(inTemplateMode)\n parser._initTokenizerForFragmentParsing()\n parser._insertFakeRootElement()\n parser._resetInsertionMode()\n parser._findFormInFragmentContext()\n\n tokenizer = parser.tokenizer\n /* c8 ignore next */\n if (!tokenizer) throw new Error('Expected `tokenizer`')\n preprocessor = tokenizer.preprocessor\n locationTracker = tokenizer.__mixins[0]\n posTracker = locationTracker.posTracker\n\n one(tree)\n\n resetTokenizer()\n\n parser._adoptNodes(mock.childNodes[0], doc)\n\n return doc\n }\n\n /**\n * @returns {P5Document}\n */\n function document() {\n /** @type {P5Document} */\n const doc = parser.treeAdapter.createDocument()\n\n parser._bootstrap(doc, undefined)\n tokenizer = parser.tokenizer\n /* c8 ignore next */\n if (!tokenizer) throw new Error('Expected `tokenizer`')\n preprocessor = tokenizer.preprocessor\n locationTracker = tokenizer.__mixins[0]\n posTracker = locationTracker.posTracker\n\n one(tree)\n\n resetTokenizer()\n\n return doc\n }\n\n /**\n * @param {Array} nodes\n * @returns {void}\n */\n function all(nodes) {\n let index = -1\n\n /* istanbul ignore else - invalid nodes, see rehypejs/rehype-raw#7. */\n if (nodes) {\n while (++index < nodes.length) {\n one(nodes[index])\n }\n }\n }\n\n /**\n * @param {Root} node\n * @returns {void}\n */\n function root(node) {\n all(node.children)\n }\n\n /**\n * @param {Element} node\n * @returns {void}\n */\n function element(node) {\n resetTokenizer()\n parser._processToken(startTag(node), webNamespaces.html)\n\n all(node.children)\n\n if (!htmlVoidElements.includes(node.tagName)) {\n resetTokenizer()\n parser._processToken(endTag(node))\n }\n }\n\n /**\n * @param {Text} node\n * @returns {void}\n */\n function text(node) {\n resetTokenizer()\n parser._processToken({\n type: characterToken,\n chars: node.value,\n location: createParse5Location(node)\n })\n }\n\n /**\n * @param {Doctype} node\n * @returns {void}\n */\n function doctype(node) {\n resetTokenizer()\n parser._processToken({\n type: doctypeToken,\n name: 'html',\n forceQuirks: false,\n publicId: '',\n systemId: '',\n location: createParse5Location(node)\n })\n }\n\n /**\n * @param {Comment|Stitch} node\n * @returns {void}\n */\n function comment(node) {\n resetTokenizer()\n parser._processToken({\n type: commentToken,\n data: node.value,\n location: createParse5Location(node)\n })\n }\n\n /**\n * @param {Raw} node\n * @returns {void}\n */\n function handleRaw(node) {\n const start = pointStart(node)\n const line = start.line || 1\n const column = start.column || 1\n const offset = start.offset || 0\n\n /* c8 ignore next 4 */\n if (!preprocessor) throw new Error('Expected `preprocessor`')\n if (!tokenizer) throw new Error('Expected `tokenizer`')\n if (!posTracker) throw new Error('Expected `posTracker`')\n if (!locationTracker) throw new Error('Expected `locationTracker`')\n\n // Reset preprocessor:\n // See: .\n preprocessor.html = undefined\n preprocessor.pos = -1\n preprocessor.lastGapPos = -1\n preprocessor.lastCharPos = -1\n preprocessor.gapStack = []\n preprocessor.skipNextNewLine = false\n preprocessor.lastChunkWritten = false\n preprocessor.endOfChunkHit = false\n\n // Reset preprocessor mixin:\n // See: .\n posTracker.isEol = false\n posTracker.lineStartPos = -column + 1 // Looks weird, but ensures we get correct positional info.\n posTracker.droppedBufferSize = offset\n posTracker.offset = 0\n posTracker.col = 1\n posTracker.line = line\n\n // Reset location tracker:\n // See: .\n locationTracker.currentAttrLocation = undefined\n locationTracker.ctLoc = createParse5Location(node)\n\n // See the code for `parse` and `parseFragment`:\n // See: .\n tokenizer.write(node.value)\n parser._runParsingLoop(null)\n\n // Character references hang, so if we ended there, we need to flush\n // those too.\n // We reset the preprocessor as if the document ends here.\n // Then one single call to the relevant state does the trick, parse5\n // consumes the whole token.\n if (\n tokenizer.state === 'NAMED_CHARACTER_REFERENCE_STATE' ||\n tokenizer.state === 'NUMERIC_CHARACTER_REFERENCE_END_STATE'\n ) {\n preprocessor.lastChunkWritten = true\n tokenizer[tokenizer.state](tokenizer._consume())\n }\n }\n\n /**\n * @param {Node} node\n */\n function stitch(node) {\n stitches = true\n\n /** @type {Node} */\n let clone\n\n // Recurse, because to somewhat handle `[]` (where `[]` denotes the\n // passed through node).\n if ('children' in node) {\n clone = {\n ...node,\n children: raw(\n {type: 'root', children: node.children},\n file,\n options\n // @ts-expect-error Assume a given parent yields a parent.\n ).children\n }\n } else {\n clone = {...node}\n }\n\n // Hack: `value` is supposed to be a string, but as none of the tools\n // (`parse5` or `hast-util-from-parse5`) looks at it, we can pass nodes\n // through.\n comment({type: 'comment', value: {stitch: clone}})\n }\n\n function resetTokenizer() {\n /* c8 ignore next 2 */\n if (!tokenizer) throw new Error('Expected `tokenizer`')\n if (!posTracker) throw new Error('Expected `posTracker`')\n\n // Process final characters if they’re still there after hibernating.\n // Similar to:\n // See: .\n const token = tokenizer.currentCharacterToken\n\n if (token) {\n token.location.endLine = posTracker.line\n token.location.endCol = posTracker.col + 1\n token.location.endOffset = posTracker.offset + 1\n parser._processToken(token)\n }\n\n // Reset tokenizer:\n // See: .\n // Especially putting it back in the `data` state is useful: some elements,\n // like textareas and iframes, change the state.\n // See GH-7.\n // But also if broken HTML is in `raw`, and then a correct element is given.\n // See GH-11.\n tokenizer.tokenQueue = []\n tokenizer.state = dataState\n tokenizer.returnState = ''\n tokenizer.charRefCode = -1\n tokenizer.tempBuff = []\n tokenizer.lastStartTagName = ''\n tokenizer.consumedAfterSnapshot = -1\n tokenizer.active = false\n tokenizer.currentCharacterToken = undefined\n tokenizer.currentToken = undefined\n tokenizer.currentAttr = undefined\n }\n }\n )\n/**\n * @param {Element} node\n * @returns {HiddenToken}\n */\nfunction startTag(node) {\n /** @type {P5Location} */\n const location = Object.assign(createParse5Location(node))\n // @ts-expect-error extra positional info.\n location.startTag = Object.assign({}, location)\n\n // Untyped token.\n return {\n type: startTagToken,\n tagName: node.tagName,\n selfClosing: false,\n attrs: attributes(node),\n location\n }\n}\n\n/**\n * @param {Element} node\n * @returns {Array}\n */\nfunction attributes(node) {\n return toParse5({\n tagName: node.tagName,\n type: 'element',\n properties: node.properties,\n children: []\n // @ts-expect-error Assume element.\n }).attrs\n}\n\n/**\n * @param {Element} node\n * @returns {HiddenToken}\n */\nfunction endTag(node) {\n /** @type {P5Location} */\n const location = Object.assign(createParse5Location(node))\n // @ts-expect-error extra positional info.\n location.startTag = Object.assign({}, location)\n\n // Untyped token.\n return {\n type: endTagToken,\n tagName: node.tagName,\n attrs: [],\n location\n }\n}\n\n/**\n * @param {Node} node\n */\nfunction unknown(node) {\n throw new Error('Cannot compile `' + node.type + '` node')\n}\n\n/**\n * @param {Node} node\n * @returns {boolean}\n */\nfunction documentMode(node) {\n const head = node.type === 'root' ? node.children[0] : node\n return Boolean(\n head &&\n (head.type === 'doctype' ||\n (head.type === 'element' && head.tagName === 'html'))\n )\n}\n\n/**\n * @param {Node|Stitch} node\n * @returns {P5Location}\n */\nfunction createParse5Location(node) {\n const start = pointStart(node)\n const end = pointEnd(node)\n\n return {\n startLine: start.line,\n startCol: start.column,\n startOffset: start.offset,\n endLine: end.line,\n endCol: end.column,\n endOffset: end.offset\n }\n}\n\n/**\n * @param {VFile|Options|undefined} value\n * @return {value is Options}\n */\nfunction isOptions(value) {\n return Boolean(value && !('message' in value && 'messages' in value))\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-raw').Options} Options\n * @typedef {import('hast-util-raw')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\nimport {raw} from 'hast-util-raw'\n\n/**\n * Plugin to parse the tree again (and raw nodes).\n * Keeping positional info OK. 🙌\n *\n * @type {import('unified').Plugin<[Options?] | Array, Root>}\n */\nexport default function rehypeRaw(options = {}) {\n return (tree, file) => {\n // Assume that when a root was given, it’s also returned.\n const result = /** @type {Root} */ (raw(tree, file, options))\n return result\n }\n}\n","import { Element, Comment, Literal, ElementContent, RootContent, Properties } from 'hast';\nimport { RehypeAttrsOptions } from './';\n\nexport const getURLParameters = (url: string): Record =>\n(url.match(/([^?=&]+)(=([^&]*))/g) || []).reduce(\n (a: Record, v: string) => (\n (a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=') + 1)), a\n ),\n {},\n);\n\nexport const prevChild = (data: Literal[] = [], index: number): Comment | undefined => {\n let i = index;\n while (i > -1) {\n i--;\n if (!data[i]) return\n if ((data[i] && data[i].value && (data[i].value as string).replace(/(\\n|\\s)/g, '') !== '') || data[i].type !== 'text') {\n if (!/^rehype:/.test(data[i].value as string) || (data[i].type as string) !== 'comment') return;\n return data[i] as unknown as Comment;\n }\n }\n return;\n}\n\nexport const nextChild = (data: RootContent[] | ElementContent[] = [], index: number, tagName?: string): ElementContent | undefined => {\n let i = index;\n while (i < data.length) {\n i++;\n if (tagName) {\n const element = data[i] as Literal & Element;\n if (element && element.value && (element.value as string).replace(/(\\n|\\s)/g, '') !== '' || data[i] && (data[i].type as string) === 'element') {\n return element.tagName === tagName ? element : undefined\n }\n } else {\n const element = data[i] as ElementContent & Literal;\n if (!element || (element.type !== 'text' && (element.type as string) !== 'comment') || (element.type === 'text' && (element.value as string).replace(/(\\n|\\s)/g, '') !== '')) return;\n if ((element.type as string) === 'comment') {\n if (!/^rehype:/.test(element.value as string)) return;\n const nextNode = nextChild(data, i, 'pre')\n if (nextNode) return;\n return element;\n }\n }\n }\n return\n}\n\n/**\n * 获取代码注视的位置\n * @param data 数据\n * @param index 当前数据所在的位置\n * @returns 返回 当前参数数据 Object,`{}`\n */\nexport const getCommentObject = ({ value = '' }: Comment): Properties => {\n const param = getURLParameters(value.replace(/^rehype:/, ''));\n Object.keys(param).forEach((keyName: string) => {\n if (param[keyName] === 'true') {\n param[keyName] = true;\n }\n if (param[keyName] === 'false') {\n param[keyName] = false;\n }\n if (typeof param[keyName] === 'string' && !/^0/.test(param[keyName] as string) && !isNaN(+param[keyName])) {\n param[keyName] = +param[keyName];\n }\n })\n return param;\n}\n\nexport type DataConfig = {\n 'data-config': Properties\n}\n\nexport const propertiesHandle = (defaultAttrs?: Properties | null, attrs?: Properties, type?: RehypeAttrsOptions['properties']): Properties | DataConfig => {\n if (type === 'string') {\n return { ...defaultAttrs, 'data-config': JSON.stringify({ ...attrs, rehyp: true })}\n } else if (type === 'attr') {\n return { ...defaultAttrs, ...attrs}\n }\n return { ...defaultAttrs, 'data-config': { ...attrs, rehyp: true }}\n}","import { Plugin } from 'unified';\nimport { Root, Element, Comment, Properties, Literal } from 'hast';\nimport { visit } from 'unist-util-visit';\nimport { propertiesHandle, nextChild, prevChild, getCommentObject } from './utils';\n\nexport type RehypeAttrsOptions = {\n /**\n * ## `data`\n * \n * ```markdown\n * text\n * \n * ```\n * \n * ⇣⇣⇣⇣⇣⇣\n * \n * ```html\n *

text

\n * ```\n * \n * ## `string`\n * \n * ```markdown\n * text\n * \n * ```\n * \n * ⇣⇣⇣⇣⇣⇣\n * \n * ```html\n *

text

\n * ```\n * \n * ## attr\n * \n * ```markdown\n * text\n * \n * ```\n * ⇣⇣⇣⇣⇣⇣\n * ```html\n *

text

\n * ```\n */\n properties: 'data' | 'string' | 'attr';\n}\n\nconst defaultOptions: RehypeAttrsOptions = {\n properties: 'data',\n}\n\nconst rehypeAttrs: Plugin<[RehypeAttrsOptions?], Root> = (options) => {\n const opts = { ...defaultOptions, ...options }\n return (tree) => {\n visit(tree, 'element', (node, index, parent) => {\n if (node.tagName === 'pre' && node && Array.isArray(node.children) && parent && Array.isArray(parent.children) && parent.children.length > 1) {\n const firstChild = node.children[0] as Element;\n if (firstChild && firstChild.tagName === 'code' && typeof index === 'number') {\n const child = prevChild(parent.children as Literal[], index);\n if (child) {\n const attr = getCommentObject(child);\n if (Object.keys(attr).length > 0) {\n node.properties = { ...node.properties, ...{ 'data-type': 'rehyp' } }\n firstChild.properties = propertiesHandle(firstChild.properties, attr, opts.properties) as Properties\n }\n }\n }\n }\n\n if (/^(em|strong|b|a|i|p|pre|kbd|blockquote|h(1|2|3|4|5|6)|code|table|img|del|ul|ol)$/.test(node.tagName) && parent && Array.isArray(parent.children) && typeof index === 'number') {\n const child = nextChild(parent.children, index)\n if (child) {\n const attr = getCommentObject(child as Comment)\n if (Object.keys(attr).length > 0) {\n node.properties = propertiesHandle(node.properties, attr, opts.properties) as Properties\n }\n }\n }\n });\n }\n}\n\n\nexport default rehypeAttrs\n","import { Plugin } from 'unified';\nimport { Root, RootContent } from 'hast';\nimport { visit } from 'unist-util-visit';\n\nexport type RehypeIgnoreOptions = {\n /**\n * Character to use for opening delimiter, by default `rehype:ignore:start`\n */\n openDelimiter?: string;\n /**\n * Character to use for closing delimiter, by default `rehype:ignore:end`\n */\n closeDelimiter?: string;\n}\n\nconst rehypeIgnore: Plugin<[RehypeIgnoreOptions?], Root> = (options = {}) => {\n const { openDelimiter = 'rehype:ignore:start', closeDelimiter = 'rehype:ignore:end' } = options;\n return (tree) => {\n visit(tree, (node: Root | RootContent, index, parent) => {\n if (node.type === 'element' || node.type === 'root') {\n // const start = node.children.findIndex((item) => item.type === 'comment' && item.value === openDelimiter);\n // const end = node.children.findIndex((item) => item.type === 'comment' && item.value === closeDelimiter);\n // if (start > -1 && end > -1) {\n // node.children = node.children.filter((_, idx) => idx < start || idx > end);\n // }\n let start = false;\n node.children = node.children.filter((item) => {\n if (item.type === 'comment' && item.value.trim() === openDelimiter) {\n start = true;\n return false\n }\n if (item.type === 'comment' && item.value.trim() === closeDelimiter) {\n start = false;\n return false\n }\n \n return !start;\n })\n }\n });\n }\n}\n\nexport default rehypeIgnore;\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n */\n\n/**\n * Options for unist util filter\n *\n * @typedef {Object} FilterOptions\n * @property {boolean} [cascade=true] Whether to drop parent nodes if they had children, but all their children were filtered out.\n */\n\nimport {convert} from 'unist-util-is'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Create a new tree consisting of copies of all nodes that pass test.\n * The tree is walked in preorder (NLR), visiting the node itself, then its head, etc.\n *\n * @param tree Tree to filter.\n * @param options Configuration (optional).\n * @param test is-compatible test (such as a type).\n * @returns Given `tree` or `null` if it didn’t pass `test`.\n */\nexport const filter =\n /**\n * @type {(\n * ((node: Tree, options: FilterOptions, test: Check) => import('./complex-types').Matches) &\n * ((node: Tree, test: Check) => import('./complex-types').Matches) &\n * ((node: Tree, options?: FilterOptions) => Tree)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {FilterOptions} options\n * @param {Test} test\n * @returns {Node|null}\n */\n function (tree, options, test) {\n const is = convert(test || options)\n const cascade =\n options.cascade === undefined || options.cascade === null\n ? true\n : options.cascade\n\n return preorder(tree)\n\n /**\n * @param {Node} node\n * @param {number|undefined} [index]\n * @param {Parent|undefined} [parent]\n * @returns {Node|null}\n */\n function preorder(node, index, parent) {\n /** @type {Array.} */\n const children = []\n /** @type {number} */\n let childIndex\n /** @type {Node} */\n let result\n /** @type {string} */\n let key\n\n if (!is(node, index, parent)) return null\n\n // @ts-expect-error: Looks like a parent.\n if (node.children) {\n childIndex = -1\n\n // @ts-expect-error Looks like a parent.\n while (++childIndex < node.children.length) {\n // @ts-expect-error Looks like a parent.\n result = preorder(node.children[childIndex], childIndex, node)\n\n if (result) {\n children.push(result)\n }\n }\n\n // @ts-expect-error Looks like a parent.\n if (cascade && node.children.length > 0 && children.length === 0)\n return null\n }\n\n // Create a shallow clone, using the new children.\n /** @type {typeof node} */\n // @ts-expect-error all the fields will be copied over.\n const next = {}\n\n for (key in node) {\n if (own.call(node, key)) {\n // @ts-expect-error: Looks like a record.\n next[key] = key === 'children' ? children : node[key]\n }\n }\n\n return next\n }\n }\n )\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n * @typedef Options options\n * Configuration.\n * @property {boolean} [showLineNumbers]\n * Set `showLineNumbers` to `true` to always display line number\n * @property {boolean} [ignoreMissing]\n * Set `ignoreMissing` to `true` to ignore unsupported languages and line highlighting when no language is specified\n */\n\nimport { visit } from 'unist-util-visit'\nimport { toString } from 'hast-util-to-string'\nimport { filter } from 'unist-util-filter'\nimport rangeParser from 'parse-numeric-range'\n\n/**\n * @param {Element} node\n * @return {string|null}\n */\nconst getLanguage = (node) => {\n const className = node.properties.className\n //@ts-ignore\n for (const classListItem of className) {\n if (classListItem.slice(0, 9) === 'language-') {\n return classListItem.slice(9).toLowerCase()\n }\n }\n return null\n}\n\n/**\n * Create a closure that determines if we have to highlight the given index\n *\n * @param {string} meta\n * @return { (index:number) => boolean }\n */\nconst calculateLinesToHighlight = (meta) => {\n const RE = /{([\\d,-]+)}/\n // Remove space between {} e.g. {1, 3}\n const parsedMeta = meta\n .split(',')\n .map((str) => str.trim())\n .join()\n if (RE.test(parsedMeta)) {\n const strlineNumbers = RE.exec(parsedMeta)[1]\n const lineNumbers = rangeParser(strlineNumbers)\n return (index) => lineNumbers.includes(index + 1)\n } else {\n return () => false\n }\n}\n\n/**\n * Check if we want to start the line numbering from a given number or 1\n * showLineNumbers=5, will start the numbering from 5\n * @param {string} meta\n * @returns {number}\n */\nconst calculateStartingLine = (meta) => {\n const RE = /showLineNumbers=(?\\d+)/i\n // pick the line number after = using a named capturing group\n if (RE.test(meta)) {\n const {\n groups: { lines },\n } = RE.exec(meta)\n return Number(lines)\n }\n return 1\n}\n\n/**\n * Create container AST for node lines\n *\n * @param {number} number\n * @return {Element[]}\n */\nconst createLineNodes = (number) => {\n const a = new Array(number)\n for (let i = 0; i < number; i++) {\n a[i] = {\n type: 'element',\n tagName: 'span',\n properties: { className: [] },\n children: [],\n }\n }\n return a\n}\n\n/**\n * Split multiline text nodes into individual nodes with positioning\n * Add a node start and end line position information for each text node\n *\n * @return { (ast:Element['children']) => Element['children'] }\n *\n */\nconst addNodePositionClosure = () => {\n let startLineNum = 1\n /**\n * @param {Element['children']} ast\n * @return {Element['children']}\n */\n const addNodePosition = (ast) => {\n return ast.reduce((result, node) => {\n if (node.type === 'text') {\n const value = /** @type {string} */ (node.value)\n const numLines = (value.match(/\\n/g) || '').length\n if (numLines === 0) {\n node.position = {\n // column: 0 is to make the ts compiler happy but we do not use this field\n start: { line: startLineNum, column: 0 },\n end: { line: startLineNum, column: 0 },\n }\n result.push(node)\n } else {\n const lines = value.split('\\n')\n for (const [i, line] of lines.entries()) {\n result.push({\n type: 'text',\n value: i === lines.length - 1 ? line : line + '\\n',\n position: {\n start: { line: startLineNum + i },\n end: { line: startLineNum + i },\n },\n })\n }\n }\n startLineNum = startLineNum + numLines\n\n return result\n }\n\n if (Object.prototype.hasOwnProperty.call(node, 'children')) {\n const initialLineNum = startLineNum\n // @ts-ignore\n node.children = addNodePosition(node.children, startLineNum)\n result.push(node)\n node.position = {\n start: { line: initialLineNum, column: 0 },\n end: { line: startLineNum, column: 0 },\n }\n return result\n }\n\n result.push(node)\n return result\n }, [])\n }\n return addNodePosition\n}\n\n/**\n * Rehype prism plugin generator that highlights code blocks with refractor (prismjs)\n *\n * Pass in your own refractor object with the required languages registered:\n * https://github.com/wooorm/refractor#refractorregistersyntax\n *\n * @param {import('refractor/lib/core').Refractor} refractor\n * @return {import('unified').Plugin<[Options?], Root>}\n */\nconst rehypePrismGenerator = (refractor) => {\n return (options = {}) => {\n return (tree) => {\n visit(tree, 'element', visitor)\n }\n\n /**\n * @param {Element} node\n * @param {number} index\n * @param {Element} parent\n */\n function visitor(node, index, parent) {\n if (!parent || parent.tagName !== 'pre' || node.tagName !== 'code') {\n return\n }\n\n let meta = node.data && node.data.meta ? /** @type {string} */ (node.data.meta) : ''\n // Coerce className to array\n if (node.properties.className) {\n if (typeof node.properties.className === 'boolean') {\n node.properties.className = []\n } else if (!Array.isArray(node.properties.className)) {\n node.properties.className = [node.properties.className]\n }\n } else {\n node.properties.className = []\n }\n node.properties.className.push('code-highlight')\n const lang = getLanguage(node)\n\n /** @type {Element} */\n let refractorRoot\n\n // Syntax highlight\n if (lang) {\n try {\n // @ts-ignore\n refractorRoot = refractor.highlight(toString(node), lang)\n // @ts-ignore className is already an array\n parent.properties.className = (parent.properties.className || []).concat(\n 'language-' + lang\n )\n } catch (err) {\n if (options.ignoreMissing && /Unknown language/.test(err.message)) {\n refractorRoot = node\n } else {\n throw err\n }\n }\n } else {\n refractorRoot = node\n }\n\n refractorRoot.children = addNodePositionClosure()(refractorRoot.children)\n\n // Add position info to root\n if (refractorRoot.children.length > 0) {\n refractorRoot.position = {\n start: { line: refractorRoot.children[0].position.start.line, column: 0 },\n end: {\n line: refractorRoot.children[refractorRoot.children.length - 1].position.end.line,\n column: 0,\n },\n }\n } else {\n refractorRoot.position = {\n start: { line: 0, column: 0 },\n end: { line: 0, column: 0 },\n }\n }\n\n const shouldHighlightLine = calculateLinesToHighlight(meta)\n const startingLineNumber = calculateStartingLine(meta)\n const codeLineArray = createLineNodes(refractorRoot.position.end.line)\n\n const falseShowLineNumbersStr = [\n 'showlinenumbers=false',\n 'showlinenumbers=\"false\"',\n 'showlinenumbers={false}',\n ]\n for (const [i, line] of codeLineArray.entries()) {\n // Default class name for each line\n line.properties.className = ['code-line']\n\n // Syntax highlight\n const treeExtract = filter(\n refractorRoot,\n (node) => node.position.start.line <= i + 1 && node.position.end.line >= i + 1\n )\n line.children = treeExtract.children\n\n // Line number\n if (\n (meta.toLowerCase().includes('showLineNumbers'.toLowerCase()) ||\n options.showLineNumbers) &&\n !falseShowLineNumbersStr.some((str) => meta.toLowerCase().includes(str))\n ) {\n line.properties.line = [(i + startingLineNumber).toString()]\n line.properties.className.push('line-number')\n }\n\n // Line highlight\n if (shouldHighlightLine(i)) {\n line.properties.className.push('highlight-line')\n }\n\n // Diff classes\n if (lang === 'diff' && toString(line).substring(0, 1) === '-') {\n line.properties.className.push('deleted')\n } else if (lang === 'diff' && toString(line).substring(0, 1) === '+') {\n line.properties.className.push('inserted')\n }\n }\n\n // Remove possible trailing line when splitting by \\n which results in empty array\n if (\n codeLineArray.length > 0 &&\n toString(codeLineArray[codeLineArray.length - 1]).trim() === ''\n ) {\n codeLineArray.pop()\n }\n\n node.children = codeLineArray\n }\n }\n}\n\nexport default rehypePrismGenerator\n","import { refractor as refractorAll } from 'refractor/lib/all.js'\nimport rehypePrismGenerator from './generator.js'\n\n/**\n * Rehype prism plugin that highlights code blocks with refractor (prismjs)\n * This supports all the languages and should be used on the server side.\n *\n * Consider using rehypePrismCommon or rehypePrismGenerator to generate a plugin\n * that supports your required languages.\n */\nconst rehypePrismAll = rehypePrismGenerator(refractorAll)\n\nexport default rehypePrismAll\n","import { refractor as refractorCommon } from 'refractor/lib/common.js'\nimport rehypePrismGenerator from './generator.js'\n\n/**\n * Rehype prism plugin that highlights code blocks with refractor (prismjs)\n * Supported languages: https://github.com/wooorm/refractor#data\n *\n * Consider using rehypePrismGenerator to generate a plugin\n * that supports your required languages.\n */\nconst rehypePrismCommon = rehypePrismGenerator(refractorCommon)\n\nexport default rehypePrismCommon\n","const rtlRange = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC'\nconst ltrRange =\n 'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6' +\n '\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C' +\n '\\uFE00-\\uFE6F\\uFEFD-\\uFFFF'\n\n/* eslint-disable no-misleading-character-class */\nconst rtl = new RegExp('^[^' + ltrRange + ']*[' + rtlRange + ']')\nconst ltr = new RegExp('^[^' + rtlRange + ']*[' + ltrRange + ']')\n/* eslint-enable no-misleading-character-class */\n\n/**\n * Detect the direction of text: left-to-right, right-to-left, or neutral\n *\n * @param {string} value\n * @returns {'rtl'|'ltr'|'neutral'}\n */\nexport function direction(value) {\n const source = String(value || '')\n return rtl.test(source) ? 'rtl' : ltr.test(source) ? 'ltr' : 'neutral'\n}\n","/**\n * @typedef {import('./types.js').Node} Node\n * @typedef {import('./types.js').Element} Element\n * @typedef {import('./types.js').Parent} Parent\n * @typedef {import('hast-util-is-element').AssertPredicate} IsElement\n */\n\nimport {convertElement} from 'hast-util-is-element'\n\n/**\n * @param {Node} node\n * @returns {node is Parent}\n */\nexport function parent(node) {\n // @ts-expect-error: hush.\n return Array.isArray(node.children)\n}\n\n/** @type {IsElement} */\n// @ts-expect-error it works.\nexport const element = convertElement()\n","/**\n * @typedef {import('./types.js').SelectState} SelectState\n * @typedef {import('./types.js').HastNode} HastNode\n * @typedef {import('./types.js').ElementChild} ElementChild\n * @typedef {import('./types.js').Direction} Direction\n * @typedef {import('unist-util-visit/complex-types').Visitor} Visitor\n */\n\nimport {direction} from 'direction'\nimport {isElement} from 'hast-util-is-element'\nimport {toString} from 'hast-util-to-string'\nimport {svg} from 'property-information'\nimport {visit, EXIT, SKIP} from 'unist-util-visit'\nimport {element} from './util.js'\n\n/**\n * @param {SelectState} state\n * @param {HastNode} node\n * @returns {() => void}\n */\n// eslint-disable-next-line complexity\nexport function enterState(state, node) {\n const schema = state.schema\n const language = state.language\n const currentDirection = state.direction\n const editableOrEditingHost = state.editableOrEditingHost\n /** @type {Direction|undefined} */\n let dirInferred\n /** @type {boolean|undefined} */\n let found\n\n if (element(node) && node.properties) {\n const lang = node.properties.xmlLang || node.properties.lang\n const type = node.properties.type || 'text'\n const dir = dirProperty(node)\n\n if (lang !== undefined && lang !== null) {\n state.language = String(lang)\n found = true\n }\n\n if (schema && schema.space === 'html') {\n if (node.properties.contentEditable === 'true') {\n state.editableOrEditingHost = true\n found = true\n }\n\n if (isElement(node, 'svg')) {\n state.schema = svg\n found = true\n }\n\n // See: .\n // Explicit `[dir=rtl]`.\n if (dir === 'rtl') {\n dirInferred = dir\n } else if (\n // Explicit `[dir=ltr]`.\n dir === 'ltr' ||\n // HTML with an invalid or no `[dir]`.\n (dir !== 'auto' && isElement(node, 'html')) ||\n // `input[type=tel]` with an invalid or no `[dir]`.\n (dir !== 'auto' && isElement(node, 'input') && type === 'tel')\n ) {\n dirInferred = 'ltr'\n // `[dir=auto]` or `bdi` with an invalid or no `[dir]`.\n } else if (dir === 'auto' || isElement(node, 'bdi')) {\n if (isElement(node, 'textarea')) {\n // Check contents of `