@quartz-community/encrypted-pages 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../node_modules/html-void-elements/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/aria.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/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/index.js","../node_modules/zwitch/index.js","../node_modules/stringify-entities/lib/core.js","../node_modules/stringify-entities/lib/util/to-hexadecimal.js","../node_modules/stringify-entities/lib/util/to-decimal.js","../node_modules/character-entities-legacy/index.js","../node_modules/character-entities-html4/index.js","../node_modules/stringify-entities/lib/constant/dangerous.js","../node_modules/stringify-entities/lib/util/to-named.js","../node_modules/stringify-entities/lib/util/format-smart.js","../node_modules/stringify-entities/lib/index.js","../node_modules/hast-util-to-html/lib/handle/comment.js","../node_modules/hast-util-to-html/lib/handle/doctype.js","../node_modules/ccount/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/hast-util-whitespace/lib/index.js","../node_modules/hast-util-to-html/lib/omission/util/siblings.js","../node_modules/hast-util-to-html/lib/omission/omission.js","../node_modules/hast-util-to-html/lib/omission/closing.js","../node_modules/hast-util-to-html/lib/omission/opening.js","../node_modules/hast-util-to-html/lib/handle/element.js","../node_modules/hast-util-to-html/lib/handle/text.js","../node_modules/hast-util-to-html/lib/handle/raw.js","../node_modules/hast-util-to-html/lib/handle/root.js","../node_modules/hast-util-to-html/lib/handle/index.js","../node_modules/hast-util-to-html/lib/index.js","../src/transformer.ts","../node_modules/@quartz-community/types/src/index.ts","../src/emitter.ts","../src/components/styles/encrypted.scss","../src/components/scripts/encrypted.inline.ts","../node_modules/preact/src/constants.js","../node_modules/preact/src/options.js","../node_modules/preact/src/diff/catch-error.js","../node_modules/preact/src/component.js","../node_modules/preact/src/diff/props.js","../node_modules/preact/src/create-context.js","../node_modules/preact/jsx-runtime/src/index.js","../src/components/EncryptedPage.tsx"],"names":["key","_","html","svg","one","all","own","stringify","increment","siblings","body","tbody","head","child","x","y","emptyChildren","defaultOptions","t","l","options","__e","error","vnode","oldVNode","errorInfo","component","ctor","handled","__","__c","constructor","getDerivedStateFromError","setState","__d","componentDidCatch","__E","e","Promise","prototype","then","bind","resolve","setTimeout","Math","random","toString","vnodeId","createVNode","type","props","isStaticChildren","__source","__self","ref","i","normalizedProps","__k","__b","__v","__i","__u","u"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * List of HTML void tag names.\n *\n * @type {Array<string>}\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 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n]\n","/**\n * @import {Schema as SchemaType, Space} from 'property-information'\n */\n\n/** @type {SchemaType} */\nexport class Schema {\n /**\n * @param {SchemaType['property']} property\n * Property.\n * @param {SchemaType['normal']} normal\n * Normal.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Schema.\n */\n constructor(property, normal, space) {\n this.normal = normal\n this.property = property\n\n if (space) {\n this.space = space\n }\n }\n}\n\nSchema.prototype.normal = {}\nSchema.prototype.property = {}\nSchema.prototype.space = undefined\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {ReadonlyArray<Schema>} definitions\n * Definitions.\n * @param {Space | undefined} [space]\n * Space.\n * @returns {Schema}\n * Schema.\n */\nexport function merge(definitions, space) {\n /** @type {Record<string, Info>} */\n const property = {}\n /** @type {Record<string, string>} */\n const normal = {}\n\n for (const definition of definitions) {\n Object.assign(property, definition.property)\n Object.assign(normal, definition.normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * Get the cleaned case insensitive form of an attribute or property.\n *\n * @param {string} value\n * An attribute-like or property-like name.\n * @returns {string}\n * Value that can be used to look up the properly cased property on a\n * `Schema`.\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","/**\n * @import {Info as InfoType} from 'property-information'\n */\n\n/** @type {InfoType} */\nexport class Info {\n /**\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @returns\n * Info.\n */\n constructor(property, attribute) {\n this.attribute = attribute\n this.property = property\n }\n}\n\nInfo.prototype.attribute = ''\nInfo.prototype.booleanish = false\nInfo.prototype.boolean = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.defined = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.number = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.property = ''\nInfo.prototype.spaceSeparated = false\nInfo.prototype.space = undefined\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","/**\n * @import {Space} from 'property-information'\n */\n\nimport {Info} from './info.js'\nimport * as types from './types.js'\n\nconst checks = /** @type {ReadonlyArray<keyof typeof types>} */ (\n Object.keys(types)\n)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @param {number | null | undefined} [mask]\n * Mask.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Info.\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @template {keyof DefinedInfo} Key\n * Key type.\n * @param {DefinedInfo} values\n * Info.\n * @param {Key} key\n * Key.\n * @param {DefinedInfo[Key]} value\n * Value.\n * @returns {undefined}\n * Nothing.\n */\nfunction mark(values, key, value) {\n if (value) {\n values[key] = value\n }\n}\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\n/**\n * @typedef Definition\n * Definition of a schema.\n * @property {Record<string, string> | undefined} [attributes]\n * Normalzed names to special attribute case.\n * @property {ReadonlyArray<string> | undefined} [mustUseProperty]\n * Normalized names that must be set as properties.\n * @property {Record<string, number | null>} properties\n * Property names to their types.\n * @property {Space | undefined} [space]\n * Space.\n * @property {Transform} transform\n * Transform a property name.\n */\n\n/**\n * @callback Transform\n * Transform.\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Attribute.\n */\n\nimport {normalize} from '../normalize.js'\nimport {DefinedInfo} from './defined-info.js'\nimport {Schema} from './schema.js'\n\n/**\n * @param {Definition} definition\n * Definition.\n * @returns {Schema}\n * Schema.\n */\nexport function create(definition) {\n /** @type {Record<string, Info>} */\n const properties = {}\n /** @type {Record<string, string>} */\n const normals = {}\n\n for (const [property, value] of Object.entries(definition.properties)) {\n const info = new DefinedInfo(\n property,\n definition.transform(definition.attributes || {}, property),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(property)\n ) {\n info.mustUseProperty = true\n }\n\n properties[property] = info\n\n normals[normalize(property)] = property\n normals[normalize(info.attribute)] = property\n }\n\n return new Schema(properties, normals, definition.space)\n}\n","import {create} from './util/create.js'\nimport {booleanish, number, spaceSeparated} from './util/types.js'\n\nexport const aria = create({\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n },\n transform(_, property) {\n return property === 'role'\n ? property\n : 'aria-' + property.slice(4).toLowerCase()\n }\n})\n","/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} attribute\n * Attribute.\n * @returns {string}\n * Transformed attribute.\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Transformed property.\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n booleanish,\n boolean,\n commaSeparated,\n number,\n overloadedBoolean,\n spaceSeparated\n} from './util/types.js'\n\nexport const html = create({\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alpha: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n closedBy: null,\n colorSpace: null,\n cols: number,\n colSpan: number,\n command: null,\n commandFor: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: overloadedBoolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootCustomElementRegistry: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shadowRootSerializable: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n credentialless: boolean,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n exportParts: commaSeparated,\n part: spaceSeparated,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n },\n space: 'html',\n transform: caseInsensitiveTransform\n})\n","import {caseSensitiveTransform} from './util/case-sensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n boolean,\n commaOrSpaceSeparated,\n commaSeparated,\n number,\n spaceSeparated\n} from './util/types.js'\n\nexport const svg = create({\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n maskType: 'mask-type',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n transformOrigin: 'transform-origin',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskType: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n transformOrigin: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n },\n space: 'svg',\n transform: caseSensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n },\n space: 'xlink',\n transform(_, property) {\n return 'xlink:' + property.slice(5).toLowerCase()\n }\n})\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n properties: {xmlnsXLink: null, xmlns: null},\n space: 'xmlns',\n transform: caseInsensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n properties: {xmlBase: null, xmlLang: null, xmlSpace: null},\n space: 'xml',\n transform(_, property) {\n return 'xml:' + property.slice(3).toLowerCase()\n }\n})\n","/**\n * @import {Schema} from 'property-information'\n */\n\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\nimport {normalize} from './normalize.js'\n\nconst cap = /[A-Z]/g\nconst dash = /-[a-z]/g\nconst valid = /^data[-\\w.:]+$/i\n\n/**\n * Look up info on a property.\n *\n * In most cases the given `schema` contains info on the property.\n * All standard,\n * most legacy,\n * and some non-standard properties are supported.\n * For these cases,\n * the returned `Info` has hints about the value of the property.\n *\n * `name` can also be a valid data attribute or property,\n * in which case an `Info` object with the correctly cased `attribute` and\n * `property` is returned.\n *\n * `name` can be an unknown attribute,\n * in which case an `Info` object with `attribute` and `property` set to the\n * given name is returned.\n * It is not recommended to provide unsupported legacy or recently specced\n * properties.\n *\n *\n * @param {Schema} schema\n * Schema;\n * either the `html` or `svg` export.\n * @param {string} value\n * An attribute-like or property-like name;\n * it will be passed through `normalize` to hopefully find the correct info.\n * @returns {Info}\n * Info.\n */\nexport function find(schema, value) {\n const normal = normalize(value)\n let property = value\n let Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n // Turn it into a property.\n const rest = value.slice(5).replace(dash, camelcase)\n property = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n } else {\n // Turn it into an attribute.\n const rest = value.slice(4)\n\n if (!dash.test(rest)) {\n let dashes = rest.replace(cap, kebab)\n\n if (dashes.charAt(0) !== '-') {\n dashes = '-' + dashes\n }\n\n value = 'data' + dashes\n }\n }\n\n Type = DefinedInfo\n }\n\n return new Type(property, value)\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Kebab.\n */\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Camel.\n */\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n","// Note: types exposed from `index.d.ts`.\nimport {merge} from './lib/util/merge.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\nimport {xlink} from './lib/xlink.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {xml} from './lib/xml.js'\n\nexport {hastToReact} from './lib/hast-to-react.js'\n\nexport const html = merge([aria, htmlBase, xlink, xmlns, xml], 'html')\n\nexport {find} from './lib/find.js'\nexport {normalize} from './lib/normalize.js'\n\nexport const svg = merge([aria, svgBase, xlink, xmlns, xml], 'svg')\n","/**\n * @callback Handler\n * Handle a value, with a certain ID field set to a certain value.\n * The ID field is passed to `zwitch`, and it’s value is this function’s\n * place on the `handlers` record.\n * @param {...any} parameters\n * Arbitrary parameters passed to the zwitch.\n * The first will be an object with a certain ID field set to a certain value.\n * @returns {any}\n * Anything!\n */\n\n/**\n * @callback UnknownHandler\n * Handle values that do have a certain ID field, but it’s set to a value\n * that is not listed in the `handlers` record.\n * @param {unknown} value\n * An object with a certain ID field set to an unknown value.\n * @param {...any} rest\n * Arbitrary parameters passed to the zwitch.\n * @returns {any}\n * Anything!\n */\n\n/**\n * @callback InvalidHandler\n * Handle values that do not have a certain ID field.\n * @param {unknown} value\n * Any unknown value.\n * @param {...any} rest\n * Arbitrary parameters passed to the zwitch.\n * @returns {void|null|undefined|never}\n * This should crash or return nothing.\n */\n\n/**\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @typedef Options\n * Configuration (required).\n * @property {Invalid} [invalid]\n * Handler to use for invalid values.\n * @property {Unknown} [unknown]\n * Handler to use for unknown values.\n * @property {Handlers} [handlers]\n * Handlers to use.\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Handle values based on a field.\n *\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @param {string} key\n * Field to switch on.\n * @param {Options<Invalid, Unknown, Handlers>} [options]\n * Configuration (required).\n * @returns {{unknown: Unknown, invalid: Invalid, handlers: Handlers, (...parameters: Parameters<Handlers[keyof Handlers]>): ReturnType<Handlers[keyof Handlers]>, (...parameters: Parameters<Unknown>): ReturnType<Unknown>}}\n */\nexport function zwitch(key, options) {\n const settings = options || {}\n\n /**\n * Handle one value.\n *\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 * @this {unknown}\n * Any context object.\n * @param {unknown} [value]\n * Any value.\n * @param {...unknown} parameters\n * Arbitrary parameters passed to the zwitch.\n * @property {Handler} invalid\n * Handle for values that do not have a certain ID field.\n * @property {Handler} unknown\n * Handle values that do have a certain ID field, but it’s set to a value\n * that is not listed in the `handlers` record.\n * @property {Handlers} handlers\n * Record of handlers.\n * @returns {unknown}\n * Anything.\n */\n function one(value, ...parameters) {\n /** @type {Handler|undefined} */\n let fn = one.invalid\n const handlers = one.handlers\n\n if (value && own.call(value, key)) {\n // @ts-expect-error Indexable.\n const id = String(value[key])\n // @ts-expect-error Indexable.\n fn = own.call(handlers, id) ? handlers[id] : one.unknown\n }\n\n if (fn) {\n return fn.call(this, value, ...parameters)\n }\n }\n\n one.handlers = settings.handlers || {}\n one.invalid = settings.invalid\n one.unknown = settings.unknown\n\n // @ts-expect-error: matches!\n return one\n}\n","/**\n * @typedef CoreOptions\n * @property {ReadonlyArray<string>} [subset=[]]\n * Whether to only escape the given subset of characters.\n * @property {boolean} [escapeOnly=false]\n * Whether to only escape possibly dangerous characters.\n * Those characters are `\"`, `&`, `'`, `<`, `>`, and `` ` ``.\n *\n * @typedef FormatOptions\n * @property {(code: number, next: number, options: CoreWithFormatOptions) => string} format\n * Format strategy.\n *\n * @typedef {CoreOptions & FormatOptions & import('./util/format-smart.js').FormatSmartOptions} CoreWithFormatOptions\n */\n\nconst defaultSubsetRegex = /[\"&'<>`]/g\nconst surrogatePairsRegex = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g\nconst controlCharactersRegex =\n // eslint-disable-next-line no-control-regex, unicorn/no-hex-escape\n /[\\x01-\\t\\v\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g\nconst regexEscapeRegex = /[|\\\\{}()[\\]^$+*?.]/g\n\n/** @type {WeakMap<ReadonlyArray<string>, RegExp>} */\nconst subsetToRegexCache = new WeakMap()\n\n/**\n * Encode certain characters in `value`.\n *\n * @param {string} value\n * @param {CoreWithFormatOptions} options\n * @returns {string}\n */\nexport function core(value, options) {\n value = value.replace(\n options.subset\n ? charactersToExpressionCached(options.subset)\n : defaultSubsetRegex,\n basic\n )\n\n if (options.subset || options.escapeOnly) {\n return value\n }\n\n return (\n value\n // Surrogate pairs.\n .replace(surrogatePairsRegex, surrogate)\n // BMP control characters (C0 except for LF, CR, SP; DEL; and some more\n // non-ASCII ones).\n .replace(controlCharactersRegex, basic)\n )\n\n /**\n * @param {string} pair\n * @param {number} index\n * @param {string} all\n */\n function surrogate(pair, index, all) {\n return options.format(\n (pair.charCodeAt(0) - 0xd800) * 0x400 +\n pair.charCodeAt(1) -\n 0xdc00 +\n 0x10000,\n all.charCodeAt(index + 2),\n options\n )\n }\n\n /**\n * @param {string} character\n * @param {number} index\n * @param {string} all\n */\n function basic(character, index, all) {\n return options.format(\n character.charCodeAt(0),\n all.charCodeAt(index + 1),\n options\n )\n }\n}\n\n/**\n * A wrapper function that caches the result of `charactersToExpression` with a WeakMap.\n * This can improve performance when tooling calls `charactersToExpression` repeatedly\n * with the same subset.\n *\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpressionCached(subset) {\n let cached = subsetToRegexCache.get(subset)\n\n if (!cached) {\n cached = charactersToExpression(subset)\n subsetToRegexCache.set(subset, cached)\n }\n\n return cached\n}\n\n/**\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpression(subset) {\n /** @type {Array<string>} */\n const groups = []\n let index = -1\n\n while (++index < subset.length) {\n groups.push(subset[index].replace(regexEscapeRegex, '\\\\$&'))\n }\n\n return new RegExp('(?:' + groups.join('|') + ')', 'g')\n}\n","const hexadecimalRegex = /[\\dA-Fa-f]/\n\n/**\n * Configurable ways to encode characters as hexadecimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toHexadecimal(code, next, omit) {\n const value = '&#x' + code.toString(16).toUpperCase()\n return omit && next && !hexadecimalRegex.test(String.fromCharCode(next))\n ? value\n : value + ';'\n}\n","const decimalRegex = /\\d/\n\n/**\n * Configurable ways to encode characters as decimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toDecimal(code, next, omit) {\n const value = '&#' + String(code)\n return omit && next && !decimalRegex.test(String.fromCharCode(next))\n ? value\n : value + ';'\n}\n","/**\n * List of legacy HTML named character references that don’t need a trailing semicolon.\n *\n * @type {Array<string>}\n */\nexport const characterEntitiesLegacy = [\n 'AElig',\n 'AMP',\n 'Aacute',\n 'Acirc',\n 'Agrave',\n 'Aring',\n 'Atilde',\n 'Auml',\n 'COPY',\n 'Ccedil',\n 'ETH',\n 'Eacute',\n 'Ecirc',\n 'Egrave',\n 'Euml',\n 'GT',\n 'Iacute',\n 'Icirc',\n 'Igrave',\n 'Iuml',\n 'LT',\n 'Ntilde',\n 'Oacute',\n 'Ocirc',\n 'Ograve',\n 'Oslash',\n 'Otilde',\n 'Ouml',\n 'QUOT',\n 'REG',\n 'THORN',\n 'Uacute',\n 'Ucirc',\n 'Ugrave',\n 'Uuml',\n 'Yacute',\n 'aacute',\n 'acirc',\n 'acute',\n 'aelig',\n 'agrave',\n 'amp',\n 'aring',\n 'atilde',\n 'auml',\n 'brvbar',\n 'ccedil',\n 'cedil',\n 'cent',\n 'copy',\n 'curren',\n 'deg',\n 'divide',\n 'eacute',\n 'ecirc',\n 'egrave',\n 'eth',\n 'euml',\n 'frac12',\n 'frac14',\n 'frac34',\n 'gt',\n 'iacute',\n 'icirc',\n 'iexcl',\n 'igrave',\n 'iquest',\n 'iuml',\n 'laquo',\n 'lt',\n 'macr',\n 'micro',\n 'middot',\n 'nbsp',\n 'not',\n 'ntilde',\n 'oacute',\n 'ocirc',\n 'ograve',\n 'ordf',\n 'ordm',\n 'oslash',\n 'otilde',\n 'ouml',\n 'para',\n 'plusmn',\n 'pound',\n 'quot',\n 'raquo',\n 'reg',\n 'sect',\n 'shy',\n 'sup1',\n 'sup2',\n 'sup3',\n 'szlig',\n 'thorn',\n 'times',\n 'uacute',\n 'ucirc',\n 'ugrave',\n 'uml',\n 'uuml',\n 'yacute',\n 'yen',\n 'yuml'\n]\n","/**\n * Map of named character references from HTML 4.\n *\n * @type {Record<string, string>}\n */\nexport const characterEntitiesHtml4 = {\n nbsp: ' ',\n iexcl: '¡',\n cent: '¢',\n pound: '£',\n curren: '¤',\n yen: '¥',\n brvbar: '¦',\n sect: '§',\n uml: '¨',\n copy: '©',\n ordf: 'ª',\n laquo: '«',\n not: '¬',\n shy: '­',\n reg: '®',\n macr: '¯',\n deg: '°',\n plusmn: '±',\n sup2: '²',\n sup3: '³',\n acute: '´',\n micro: 'µ',\n para: '¶',\n middot: '·',\n cedil: '¸',\n sup1: '¹',\n ordm: 'º',\n raquo: '»',\n frac14: '¼',\n frac12: '½',\n frac34: '¾',\n iquest: '¿',\n Agrave: 'À',\n Aacute: 'Á',\n Acirc: 'Â',\n Atilde: 'Ã',\n Auml: 'Ä',\n Aring: 'Å',\n AElig: 'Æ',\n Ccedil: 'Ç',\n Egrave: 'È',\n Eacute: 'É',\n Ecirc: 'Ê',\n Euml: 'Ë',\n Igrave: 'Ì',\n Iacute: 'Í',\n Icirc: 'Î',\n Iuml: 'Ï',\n ETH: 'Ð',\n Ntilde: 'Ñ',\n Ograve: 'Ò',\n Oacute: 'Ó',\n Ocirc: 'Ô',\n Otilde: 'Õ',\n Ouml: 'Ö',\n times: '×',\n Oslash: 'Ø',\n Ugrave: 'Ù',\n Uacute: 'Ú',\n Ucirc: 'Û',\n Uuml: 'Ü',\n Yacute: 'Ý',\n THORN: 'Þ',\n szlig: 'ß',\n agrave: 'à',\n aacute: 'á',\n acirc: 'â',\n atilde: 'ã',\n auml: 'ä',\n aring: 'å',\n aelig: 'æ',\n ccedil: 'ç',\n egrave: 'è',\n eacute: 'é',\n ecirc: 'ê',\n euml: 'ë',\n igrave: 'ì',\n iacute: 'í',\n icirc: 'î',\n iuml: 'ï',\n eth: 'ð',\n ntilde: 'ñ',\n ograve: 'ò',\n oacute: 'ó',\n ocirc: 'ô',\n otilde: 'õ',\n ouml: 'ö',\n divide: '÷',\n oslash: 'ø',\n ugrave: 'ù',\n uacute: 'ú',\n ucirc: 'û',\n uuml: 'ü',\n yacute: 'ý',\n thorn: 'þ',\n yuml: 'ÿ',\n fnof: 'ƒ',\n Alpha: 'Α',\n Beta: 'Β',\n Gamma: 'Γ',\n Delta: 'Δ',\n Epsilon: 'Ε',\n Zeta: 'Ζ',\n Eta: 'Η',\n Theta: 'Θ',\n Iota: 'Ι',\n Kappa: 'Κ',\n Lambda: 'Λ',\n Mu: 'Μ',\n Nu: 'Ν',\n Xi: 'Ξ',\n Omicron: 'Ο',\n Pi: 'Π',\n Rho: 'Ρ',\n Sigma: 'Σ',\n Tau: 'Τ',\n Upsilon: 'Υ',\n Phi: 'Φ',\n Chi: 'Χ',\n Psi: 'Ψ',\n Omega: 'Ω',\n alpha: 'α',\n beta: 'β',\n gamma: 'γ',\n delta: 'δ',\n epsilon: 'ε',\n zeta: 'ζ',\n eta: 'η',\n theta: 'θ',\n iota: 'ι',\n kappa: 'κ',\n lambda: 'λ',\n mu: 'μ',\n nu: 'ν',\n xi: 'ξ',\n omicron: 'ο',\n pi: 'π',\n rho: 'ρ',\n sigmaf: 'ς',\n sigma: 'σ',\n tau: 'τ',\n upsilon: 'υ',\n phi: 'φ',\n chi: 'χ',\n psi: 'ψ',\n omega: 'ω',\n thetasym: 'ϑ',\n upsih: 'ϒ',\n piv: 'ϖ',\n bull: '•',\n hellip: '…',\n prime: '′',\n Prime: '″',\n oline: '‾',\n frasl: '⁄',\n weierp: '℘',\n image: 'ℑ',\n real: 'ℜ',\n trade: '™',\n alefsym: 'ℵ',\n larr: '←',\n uarr: '↑',\n rarr: '→',\n darr: '↓',\n harr: '↔',\n crarr: '↵',\n lArr: '⇐',\n uArr: '⇑',\n rArr: '⇒',\n dArr: '⇓',\n hArr: '⇔',\n forall: '∀',\n part: '∂',\n exist: '∃',\n empty: '∅',\n nabla: '∇',\n isin: '∈',\n notin: '∉',\n ni: '∋',\n prod: '∏',\n sum: '∑',\n minus: '−',\n lowast: '∗',\n radic: '√',\n prop: '∝',\n infin: '∞',\n ang: '∠',\n and: '∧',\n or: '∨',\n cap: '∩',\n cup: '∪',\n int: '∫',\n there4: '∴',\n sim: '∼',\n cong: '≅',\n asymp: '≈',\n ne: '≠',\n equiv: '≡',\n le: '≤',\n ge: '≥',\n sub: '⊂',\n sup: '⊃',\n nsub: '⊄',\n sube: '⊆',\n supe: '⊇',\n oplus: '⊕',\n otimes: '⊗',\n perp: '⊥',\n sdot: '⋅',\n lceil: '⌈',\n rceil: '⌉',\n lfloor: '⌊',\n rfloor: '⌋',\n lang: '〈',\n rang: '〉',\n loz: '◊',\n spades: '♠',\n clubs: '♣',\n hearts: '♥',\n diams: '♦',\n quot: '\"',\n amp: '&',\n lt: '<',\n gt: '>',\n OElig: 'Œ',\n oelig: 'œ',\n Scaron: 'Š',\n scaron: 'š',\n Yuml: 'Ÿ',\n circ: 'ˆ',\n tilde: '˜',\n ensp: ' ',\n emsp: ' ',\n thinsp: ' ',\n zwnj: '‌',\n zwj: '‍',\n lrm: '‎',\n rlm: '‏',\n ndash: '–',\n mdash: '—',\n lsquo: '‘',\n rsquo: '’',\n sbquo: '‚',\n ldquo: '“',\n rdquo: '”',\n bdquo: '„',\n dagger: '†',\n Dagger: '‡',\n permil: '‰',\n lsaquo: '‹',\n rsaquo: '›',\n euro: '€'\n}\n","/**\n * List of legacy (that don’t need a trailing `;`) named references which could,\n * depending on what follows them, turn into a different meaning\n *\n * @type {Array<string>}\n */\nexport const dangerous = [\n 'cent',\n 'copy',\n 'divide',\n 'gt',\n 'lt',\n 'not',\n 'para',\n 'times'\n]\n","import {characterEntitiesLegacy} from 'character-entities-legacy'\nimport {characterEntitiesHtml4} from 'character-entities-html4'\nimport {dangerous} from '../constant/dangerous.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * `characterEntitiesHtml4` but inverted.\n *\n * @type {Record<string, string>}\n */\nconst characters = {}\n\n/** @type {string} */\nlet key\n\nfor (key in characterEntitiesHtml4) {\n if (own.call(characterEntitiesHtml4, key)) {\n characters[characterEntitiesHtml4[key]] = key\n }\n}\n\nconst notAlphanumericRegex = /[^\\dA-Za-z]/\n\n/**\n * Configurable ways to encode characters as named references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @param {boolean|undefined} attribute\n * @returns {string}\n */\nexport function toNamed(code, next, omit, attribute) {\n const character = String.fromCharCode(code)\n\n if (own.call(characters, character)) {\n const name = characters[character]\n const value = '&' + name\n\n if (\n omit &&\n characterEntitiesLegacy.includes(name) &&\n !dangerous.includes(name) &&\n (!attribute ||\n (next &&\n next !== 61 /* `=` */ &&\n notAlphanumericRegex.test(String.fromCharCode(next))))\n ) {\n return value\n }\n\n return value + ';'\n }\n\n return ''\n}\n","/**\n * @typedef FormatSmartOptions\n * @property {boolean} [useNamedReferences=false]\n * Prefer named character references (`&amp;`) where possible.\n * @property {boolean} [useShortestReferences=false]\n * Prefer the shortest possible reference, if that results in less bytes.\n * **Note**: `useNamedReferences` can be omitted when using `useShortestReferences`.\n * @property {boolean} [omitOptionalSemicolons=false]\n * Whether to omit semicolons when possible.\n * **Note**: This creates what HTML calls “parse errors” but is otherwise still valid HTML — don’t use this except when building a minifier.\n * Omitting semicolons is possible for certain named and numeric references in some cases.\n * @property {boolean} [attribute=false]\n * Create character references which don’t fail in attributes.\n * **Note**: `attribute` only applies when operating dangerously with\n * `omitOptionalSemicolons: true`.\n */\n\nimport {toHexadecimal} from './to-hexadecimal.js'\nimport {toDecimal} from './to-decimal.js'\nimport {toNamed} from './to-named.js'\n\n/**\n * Configurable ways to encode a character yielding pretty or small results.\n *\n * @param {number} code\n * @param {number} next\n * @param {FormatSmartOptions} options\n * @returns {string}\n */\nexport function formatSmart(code, next, options) {\n let numeric = toHexadecimal(code, next, options.omitOptionalSemicolons)\n /** @type {string|undefined} */\n let named\n\n if (options.useNamedReferences || options.useShortestReferences) {\n named = toNamed(\n code,\n next,\n options.omitOptionalSemicolons,\n options.attribute\n )\n }\n\n // Use the shortest numeric reference when requested.\n // A simple algorithm would use decimal for all code points under 100, as\n // those are shorter than hexadecimal:\n //\n // * `&#99;` vs `&#x63;` (decimal shorter)\n // * `&#100;` vs `&#x64;` (equal)\n //\n // However, because we take `next` into consideration when `omit` is used,\n // And it would be possible that decimals are shorter on bigger values as\n // well if `next` is hexadecimal but not decimal, we instead compare both.\n if (\n (options.useShortestReferences || !named) &&\n options.useShortestReferences\n ) {\n const decimal = toDecimal(code, next, options.omitOptionalSemicolons)\n\n if (decimal.length < numeric.length) {\n numeric = decimal\n }\n }\n\n return named &&\n (!options.useShortestReferences || named.length < numeric.length)\n ? named\n : numeric\n}\n","/**\n * @typedef {import('./core.js').CoreOptions & import('./util/format-smart.js').FormatSmartOptions} Options\n * @typedef {import('./core.js').CoreOptions} LightOptions\n */\n\nimport {core} from './core.js'\nimport {formatSmart} from './util/format-smart.js'\nimport {formatBasic} from './util/format-basic.js'\n\n/**\n * Encode special characters in `value`.\n *\n * @param {string} value\n * Value to encode.\n * @param {Options} [options]\n * Configuration.\n * @returns {string}\n * Encoded value.\n */\nexport function stringifyEntities(value, options) {\n return core(value, Object.assign({format: formatSmart}, options))\n}\n\n/**\n * Encode special characters in `value` as hexadecimals.\n *\n * @param {string} value\n * Value to encode.\n * @param {LightOptions} [options]\n * Configuration.\n * @returns {string}\n * Encoded value.\n */\nexport function stringifyEntitiesLight(value, options) {\n return core(value, Object.assign({format: formatBasic}, options))\n}\n","/**\n * @import {Comment, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\nconst htmlCommentRegex = /^>|^->|<!--|-->|--!>|<!-$/g\n\n// Declare arrays as variables so it can be cached by `stringifyEntities`\nconst bogusCommentEntitySubset = ['>']\nconst commentEntitySubset = ['<', '>']\n\n/**\n * Serialize a comment.\n *\n * @param {Comment} node\n * Node to handle.\n * @param {number | undefined} _1\n * Index of `node` in `parent.\n * @param {Parents | undefined} _2\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function comment(node, _1, _2, state) {\n // See: <https://html.spec.whatwg.org/multipage/syntax.html#comments>\n return state.settings.bogusComments\n ? '<?' +\n stringifyEntities(\n node.value,\n Object.assign({}, state.settings.characterReferences, {\n subset: bogusCommentEntitySubset\n })\n ) +\n '>'\n : '<!--' + node.value.replace(htmlCommentRegex, encode) + '-->'\n\n /**\n * @param {string} $0\n */\n function encode($0) {\n return stringifyEntities(\n $0,\n Object.assign({}, state.settings.characterReferences, {\n subset: commentEntitySubset\n })\n )\n }\n}\n","/**\n * @import {Doctype, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\n/**\n * Serialize a doctype.\n *\n * @param {Doctype} _1\n * Node to handle.\n * @param {number | undefined} _2\n * Index of `node` in `parent.\n * @param {Parents | undefined} _3\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function doctype(_1, _2, _3, state) {\n return (\n '<!' +\n (state.settings.upperDoctype ? 'DOCTYPE' : 'doctype') +\n (state.settings.tightDoctype ? '' : ' ') +\n 'html>'\n )\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 for `stringify`.\n * @property {boolean} [padLeft=true]\n * Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n * Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n * Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n * Comma-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n /** @type {Array<string>} */\n const tokens = []\n const input = String(value || '')\n let index = input.indexOf(',')\n let start = 0\n /** @type {boolean} */\n let end = false\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n const token = input.slice(start, index).trim()\n\n if (token || !end) {\n tokens.push(token)\n }\n\n start = index + 1\n index = input.indexOf(',', start)\n }\n\n return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @param {Options} [options]\n * Configuration for `stringify` (optional).\n * @returns {string}\n * Comma-separated tokens.\n */\nexport function stringify(values, options) {\n const settings = options || {}\n\n // Ensure the last empty entry is seen.\n const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n return input\n .join(\n (settings.padRight ? ' ' : '') +\n ',' +\n (settings.padLeft === false ? '' : ' ')\n )\n .trim()\n}\n","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n * Space-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n const input = String(value || '').trim()\n return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @returns {string}\n * Space-separated tokens.\n */\nexport function stringify(values) {\n return values.join(' ').trim()\n}\n","/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See <https://infra.spec.whatwg.org/#ascii-whitespace>.\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n * Thing to check (`Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n * whose `value` field is checked.\n */\nexport function whitespace(thing) {\n return typeof thing === 'object'\n ? thing.type === 'text'\n ? empty(thing.value)\n : false\n : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n return value.replace(re, '') === ''\n}\n","/**\n * @import {Parents, RootContent} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\n\nexport const siblingAfter = siblings(1)\nexport const siblingBefore = siblings(-1)\n\n/** @type {Array<RootContent>} */\nconst emptyChildren = []\n\n/**\n * Factory to check siblings in a direction.\n *\n * @param {number} increment\n */\nfunction siblings(increment) {\n return sibling\n\n /**\n * Find applicable siblings in a direction.\n *\n * @template {Parents} Parent\n * Parent type.\n * @param {Parent | undefined} parent\n * Parent.\n * @param {number | undefined} index\n * Index of child in `parent`.\n * @param {boolean | undefined} [includeWhitespace=false]\n * Whether to include whitespace (default: `false`).\n * @returns {Parent extends {children: Array<infer Child>} ? Child | undefined : never}\n * Child of parent.\n */\n function sibling(parent, index, includeWhitespace) {\n const siblings = parent ? parent.children : emptyChildren\n let offset = (index || 0) + increment\n let next = siblings[offset]\n\n if (!includeWhitespace) {\n while (next && whitespace(next)) {\n offset += increment\n next = siblings[offset]\n }\n }\n\n // @ts-expect-error: it’s a correct child.\n return next\n }\n}\n","/**\n * @import {Element, Parents} from 'hast'\n */\n\n/**\n * @callback OmitHandle\n * Check if a tag can be omitted.\n * @param {Element} element\n * Element to check.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether to omit a tag.\n *\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Factory to check if a given node can have a tag omitted.\n *\n * @param {Record<string, OmitHandle>} handlers\n * Omission handlers, where each key is a tag name, and each value is the\n * corresponding handler.\n * @returns {OmitHandle}\n * Whether to omit a tag of an element.\n */\nexport function omission(handlers) {\n return omit\n\n /**\n * Check if a given node can have a tag omitted.\n *\n * @type {OmitHandle}\n */\n function omit(node, index, parent) {\n return (\n own.call(handlers, node.tagName) &&\n handlers[node.tagName](node, index, parent)\n )\n }\n}\n","/**\n * @import {Element, Parents} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingAfter} from './util/siblings.js'\nimport {omission} from './omission.js'\n\nexport const closing = omission({\n body,\n caption: headOrColgroupOrCaption,\n colgroup: headOrColgroupOrCaption,\n dd,\n dt,\n head: headOrColgroupOrCaption,\n html,\n li,\n optgroup,\n option,\n p,\n rp: rubyElement,\n rt: rubyElement,\n tbody,\n td: cells,\n tfoot,\n th: cells,\n thead,\n tr\n})\n\n/**\n * Macro for `</head>`, `</colgroup>`, and `</caption>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction headOrColgroupOrCaption(_, index, parent) {\n const next = siblingAfter(parent, index, true)\n return (\n !next ||\n (next.type !== 'comment' &&\n !(next.type === 'text' && whitespace(next.value.charAt(0))))\n )\n}\n\n/**\n * Whether to omit `</html>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction html(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</body>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction body(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</p>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction p(_, index, parent) {\n const next = siblingAfter(parent, index)\n return next\n ? next.type === 'element' &&\n (next.tagName === 'address' ||\n next.tagName === 'article' ||\n next.tagName === 'aside' ||\n next.tagName === 'blockquote' ||\n next.tagName === 'details' ||\n next.tagName === 'div' ||\n next.tagName === 'dl' ||\n next.tagName === 'fieldset' ||\n next.tagName === 'figcaption' ||\n next.tagName === 'figure' ||\n next.tagName === 'footer' ||\n next.tagName === 'form' ||\n next.tagName === 'h1' ||\n next.tagName === 'h2' ||\n next.tagName === 'h3' ||\n next.tagName === 'h4' ||\n next.tagName === 'h5' ||\n next.tagName === 'h6' ||\n next.tagName === 'header' ||\n next.tagName === 'hgroup' ||\n next.tagName === 'hr' ||\n next.tagName === 'main' ||\n next.tagName === 'menu' ||\n next.tagName === 'nav' ||\n next.tagName === 'ol' ||\n next.tagName === 'p' ||\n next.tagName === 'pre' ||\n next.tagName === 'section' ||\n next.tagName === 'table' ||\n next.tagName === 'ul')\n : !parent ||\n // Confusing parent.\n !(\n parent.type === 'element' &&\n (parent.tagName === 'a' ||\n parent.tagName === 'audio' ||\n parent.tagName === 'del' ||\n parent.tagName === 'ins' ||\n parent.tagName === 'map' ||\n parent.tagName === 'noscript' ||\n parent.tagName === 'video')\n )\n}\n\n/**\n * Whether to omit `</li>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction li(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'li')\n}\n\n/**\n * Whether to omit `</dt>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction dt(_, index, parent) {\n const next = siblingAfter(parent, index)\n return Boolean(\n next &&\n next.type === 'element' &&\n (next.tagName === 'dt' || next.tagName === 'dd')\n )\n}\n\n/**\n * Whether to omit `</dd>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction dd(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'dt' || next.tagName === 'dd'))\n )\n}\n\n/**\n * Whether to omit `</rt>` or `</rp>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction rubyElement(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'rp' || next.tagName === 'rt'))\n )\n}\n\n/**\n * Whether to omit `</optgroup>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction optgroup(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'optgroup')\n}\n\n/**\n * Whether to omit `</option>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction option(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'option' || next.tagName === 'optgroup'))\n )\n}\n\n/**\n * Whether to omit `</thead>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction thead(_, index, parent) {\n const next = siblingAfter(parent, index)\n return Boolean(\n next &&\n next.type === 'element' &&\n (next.tagName === 'tbody' || next.tagName === 'tfoot')\n )\n}\n\n/**\n * Whether to omit `</tbody>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tbody(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'tbody' || next.tagName === 'tfoot'))\n )\n}\n\n/**\n * Whether to omit `</tfoot>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tfoot(_, index, parent) {\n return !siblingAfter(parent, index)\n}\n\n/**\n * Whether to omit `</tr>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tr(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'tr')\n}\n\n/**\n * Whether to omit `</td>` or `</th>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction cells(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'td' || next.tagName === 'th'))\n )\n}\n","/**\n * @import {Element, Parents} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingAfter, siblingBefore} from './util/siblings.js'\nimport {closing} from './closing.js'\nimport {omission} from './omission.js'\n\nexport const opening = omission({\n body,\n colgroup,\n head,\n html,\n tbody\n})\n\n/**\n * Whether to omit `<html>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction html(node) {\n const head = siblingAfter(node, -1)\n return !head || head.type !== 'comment'\n}\n\n/**\n * Whether to omit `<head>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction head(node) {\n /** @type {Set<string>} */\n const seen = new Set()\n\n // Whether `srcdoc` or not,\n // make sure the content model at least doesn’t have too many `base`s/`title`s.\n for (const child of node.children) {\n if (\n child.type === 'element' &&\n (child.tagName === 'base' || child.tagName === 'title')\n ) {\n if (seen.has(child.tagName)) return false\n seen.add(child.tagName)\n }\n }\n\n // “May be omitted if the element is empty,\n // or if the first thing inside the head element is an element.”\n const child = node.children[0]\n return !child || child.type === 'element'\n}\n\n/**\n * Whether to omit `<body>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction body(node) {\n const head = siblingAfter(node, -1, true)\n\n return (\n !head ||\n (head.type !== 'comment' &&\n !(head.type === 'text' && whitespace(head.value.charAt(0))) &&\n !(\n head.type === 'element' &&\n (head.tagName === 'meta' ||\n head.tagName === 'link' ||\n head.tagName === 'script' ||\n head.tagName === 'style' ||\n head.tagName === 'template')\n ))\n )\n}\n\n/**\n * Whether to omit `<colgroup>`.\n * The spec describes some logic for the opening tag, but it’s easier to\n * implement in the closing tag, to the same effect, so we handle it there\n * instead.\n *\n * @param {Element} node\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction colgroup(node, index, parent) {\n const previous = siblingBefore(parent, index)\n const head = siblingAfter(node, -1, true)\n\n // Previous colgroup was already omitted.\n if (\n parent &&\n previous &&\n previous.type === 'element' &&\n previous.tagName === 'colgroup' &&\n closing(previous, parent.children.indexOf(previous), parent)\n ) {\n return false\n }\n\n return Boolean(head && head.type === 'element' && head.tagName === 'col')\n}\n\n/**\n * Whether to omit `<tbody>`.\n *\n * @param {Element} node\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction tbody(node, index, parent) {\n const previous = siblingBefore(parent, index)\n const head = siblingAfter(node, -1)\n\n // Previous table section was already omitted.\n if (\n parent &&\n previous &&\n previous.type === 'element' &&\n (previous.tagName === 'thead' || previous.tagName === 'tbody') &&\n closing(previous, parent.children.indexOf(previous), parent)\n ) {\n return false\n }\n\n return Boolean(head && head.type === 'element' && head.tagName === 'tr')\n}\n","/**\n * @import {Element, Parents, Properties} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {ccount} from 'ccount'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {find, svg} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringifyEntities} from 'stringify-entities'\nimport {closing} from '../omission/closing.js'\nimport {opening} from '../omission/opening.js'\n\n/**\n * Maps of subsets.\n *\n * Each value is a matrix of tuples.\n * The value at `0` causes parse errors, the value at `1` is valid.\n * Of both, the value at `0` is unsafe, and the value at `1` is safe.\n *\n * @type {Record<'double' | 'name' | 'single' | 'unquoted', Array<[Array<string>, Array<string>]>>}\n */\nconst constants = {\n // See: <https://html.spec.whatwg.org/#attribute-name-state>.\n name: [\n ['\\t\\n\\f\\r &/=>'.split(''), '\\t\\n\\f\\r \"&\\'/=>`'.split('')],\n ['\\0\\t\\n\\f\\r \"&\\'/<=>'.split(''), '\\0\\t\\n\\f\\r \"&\\'/<=>`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(unquoted)-state>.\n unquoted: [\n ['\\t\\n\\f\\r &>'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')],\n ['\\0\\t\\n\\f\\r \"&\\'<=>`'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(single-quoted)-state>.\n single: [\n [\"&'\".split(''), '\"&\\'`'.split('')],\n [\"\\0&'\".split(''), '\\0\"&\\'`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(double-quoted)-state>.\n double: [\n ['\"&'.split(''), '\"&\\'`'.split('')],\n ['\\0\"&'.split(''), '\\0\"&\\'`'.split('')]\n ]\n}\n\n/**\n * Serialize an element node.\n *\n * @param {Element} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function element(node, index, parent, state) {\n const schema = state.schema\n const omit = schema.space === 'svg' ? false : state.settings.omitOptionalTags\n let selfClosing =\n schema.space === 'svg'\n ? state.settings.closeEmptyElements\n : state.settings.voids.includes(node.tagName.toLowerCase())\n /** @type {Array<string>} */\n const parts = []\n /** @type {string} */\n let last\n\n if (schema.space === 'html' && node.tagName === 'svg') {\n state.schema = svg\n }\n\n const attributes = serializeAttributes(state, node.properties)\n\n const content = state.all(\n schema.space === 'html' && node.tagName === 'template' ? node.content : node\n )\n\n state.schema = schema\n\n // If the node is categorised as void, but it has children, remove the\n // categorisation.\n // This enables for example `menuitem`s, which are void in W3C HTML but not\n // void in WHATWG HTML, to be stringified properly.\n // Note: `menuitem` has since been removed from the HTML spec, and so is no\n // longer void.\n if (content) selfClosing = false\n\n if (attributes || !omit || !opening(node, index, parent)) {\n parts.push('<', node.tagName, attributes ? ' ' + attributes : '')\n\n if (\n selfClosing &&\n (schema.space === 'svg' || state.settings.closeSelfClosing)\n ) {\n last = attributes.charAt(attributes.length - 1)\n if (\n !state.settings.tightSelfClosing ||\n last === '/' ||\n (last && last !== '\"' && last !== \"'\")\n ) {\n parts.push(' ')\n }\n\n parts.push('/')\n }\n\n parts.push('>')\n }\n\n parts.push(content)\n\n if (!selfClosing && (!omit || !closing(node, index, parent))) {\n parts.push('</' + node.tagName + '>')\n }\n\n return parts.join('')\n}\n\n/**\n * @param {State} state\n * @param {Properties | null | undefined} properties\n * @returns {string}\n */\nfunction serializeAttributes(state, properties) {\n /** @type {Array<string>} */\n const values = []\n let index = -1\n /** @type {string} */\n let key\n\n if (properties) {\n for (key in properties) {\n if (properties[key] !== null && properties[key] !== undefined) {\n const value = serializeAttribute(state, key, properties[key])\n if (value) values.push(value)\n }\n }\n }\n\n while (++index < values.length) {\n const last = state.settings.tightAttributes\n ? values[index].charAt(values[index].length - 1)\n : undefined\n\n // In tight mode, don’t add a space after quoted attributes.\n if (index !== values.length - 1 && last !== '\"' && last !== \"'\") {\n values[index] += ' '\n }\n }\n\n return values.join('')\n}\n\n/**\n * @param {State} state\n * @param {string} key\n * @param {Properties[keyof Properties]} value\n * @returns {string}\n */\nfunction serializeAttribute(state, key, value) {\n const info = find(state.schema, key)\n const x =\n state.settings.allowParseErrors && state.schema.space === 'html' ? 0 : 1\n const y = state.settings.allowDangerousCharacters ? 0 : 1\n let quote = state.quote\n /** @type {string | undefined} */\n let result\n\n if (info.overloadedBoolean && (value === info.attribute || value === '')) {\n value = true\n } else if (\n (info.boolean || info.overloadedBoolean) &&\n (typeof value !== 'string' || value === info.attribute || value === '')\n ) {\n value = Boolean(value)\n }\n\n if (\n value === null ||\n value === undefined ||\n value === false ||\n (typeof value === 'number' && Number.isNaN(value))\n ) {\n return ''\n }\n\n const name = stringifyEntities(\n info.attribute,\n Object.assign({}, state.settings.characterReferences, {\n // Always encode without parse errors in non-HTML.\n subset: constants.name[x][y]\n })\n )\n\n // No value.\n // There is currently only one boolean property in SVG: `[download]` on\n // `<a>`.\n // This property does not seem to work in browsers (Firefox, Safari, Chrome),\n // so I can’t test if dropping the value works.\n // But I assume that it should:\n //\n // ```html\n // <!doctype html>\n // <svg viewBox=\"0 0 100 100\">\n // <a href=https://example.com download>\n // <circle cx=50 cy=40 r=35 />\n // </a>\n // </svg>\n // ```\n //\n // See: <https://github.com/wooorm/property-information/blob/main/lib/svg.js>\n if (value === true) return name\n\n // `spaces` doesn’t accept a second argument, but it’s given here just to\n // keep the code cleaner.\n value = Array.isArray(value)\n ? (info.commaSeparated ? commas : spaces)(value, {\n padLeft: !state.settings.tightCommaSeparatedLists\n })\n : String(value)\n\n if (state.settings.collapseEmptyAttributes && !value) return name\n\n // Check unquoted value.\n if (state.settings.preferUnquoted) {\n result = stringifyEntities(\n value,\n Object.assign({}, state.settings.characterReferences, {\n attribute: true,\n subset: constants.unquoted[x][y]\n })\n )\n }\n\n // If we don’t want unquoted, or if `value` contains character references when\n // unquoted…\n if (result !== value) {\n // If the alternative is less common than `quote`, switch.\n if (\n state.settings.quoteSmart &&\n ccount(value, quote) > ccount(value, state.alternative)\n ) {\n quote = state.alternative\n }\n\n result =\n quote +\n stringifyEntities(\n value,\n Object.assign({}, state.settings.characterReferences, {\n // Always encode without parse errors in non-HTML.\n subset: (quote === \"'\" ? constants.single : constants.double)[x][y],\n attribute: true\n })\n ) +\n quote\n }\n\n // Don’t add a `=` for unquoted empties.\n return name + (result ? '=' + result : result)\n}\n","/**\n * @import {Parents, Text} from 'hast'\n * @import {Raw} from 'mdast-util-to-hast'\n * @import {State} from '../index.js'\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\n// Declare array as variable so it can be cached by `stringifyEntities`\nconst textEntitySubset = ['<', '&']\n\n/**\n * Serialize a text node.\n *\n * @param {Raw | Text} node\n * Node to handle.\n * @param {number | undefined} _\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function text(node, _, parent, state) {\n // Check if content of `node` should be escaped.\n return parent &&\n parent.type === 'element' &&\n (parent.tagName === 'script' || parent.tagName === 'style')\n ? node.value\n : stringifyEntities(\n node.value,\n Object.assign({}, state.settings.characterReferences, {\n subset: textEntitySubset\n })\n )\n}\n","/**\n * @import {Parents} from 'hast'\n * @import {Raw} from 'mdast-util-to-hast'\n * @import {State} from '../index.js'\n */\n\nimport {text} from './text.js'\n\n/**\n * Serialize a raw node.\n *\n * @param {Raw} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function raw(node, index, parent, state) {\n return state.settings.allowDangerousHtml\n ? node.value\n : text(node, index, parent, state)\n}\n","/**\n * @import {Parents, Root} from 'hast'\n * @import {State} from '../index.js'\n */\n\n/**\n * Serialize a root.\n *\n * @param {Root} node\n * Node to handle.\n * @param {number | undefined} _1\n * Index of `node` in `parent.\n * @param {Parents | undefined} _2\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function root(node, _1, _2, state) {\n return state.all(node)\n}\n","/**\n * @import {Nodes, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {zwitch} from 'zwitch'\nimport {comment} from './comment.js'\nimport {doctype} from './doctype.js'\nimport {element} from './element.js'\nimport {raw} from './raw.js'\nimport {root} from './root.js'\nimport {text} from './text.js'\n\n/**\n * @type {(node: Nodes, index: number | undefined, parent: Parents | undefined, state: State) => string}\n */\nexport const handle = zwitch('type', {\n invalid,\n unknown,\n handlers: {comment, doctype, element, raw, root, text}\n})\n\n/**\n * Fail when a non-node is found in the tree.\n *\n * @param {unknown} node\n * Unknown value.\n * @returns {never}\n * Never.\n */\nfunction invalid(node) {\n throw new Error('Expected node, not `' + node + '`')\n}\n\n/**\n * Fail when a node with an unknown type is found in the tree.\n *\n * @param {unknown} node_\n * Unknown node.\n * @returns {never}\n * Never.\n */\nfunction unknown(node_) {\n // `type` is guaranteed by runtime JS.\n const node = /** @type {Nodes} */ (node_)\n throw new Error('Cannot compile unknown node `' + node.type + '`')\n}\n","/**\n * @import {Nodes, Parents, RootContent} from 'hast'\n * @import {Schema} from 'property-information'\n * @import {Options as StringifyEntitiesOptions} from 'stringify-entities'\n */\n\n/**\n * @typedef {Omit<StringifyEntitiesOptions, 'attribute' | 'escapeOnly' | 'subset'>} CharacterReferences\n *\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [allowDangerousCharacters=false]\n * Do not encode some characters which cause XSS vulnerabilities in older\n * browsers (default: `false`).\n *\n * > ⚠️ **Danger**: only set this if you completely trust the content.\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n * Allow `raw` nodes and insert them as raw HTML (default: `false`).\n *\n * When `false`, `Raw` nodes are encoded.\n *\n * > ⚠️ **Danger**: only set this if you completely trust the content.\n * @property {boolean | null | undefined} [allowParseErrors=false]\n * Do not encode characters which cause parse errors (even though they work),\n * to save bytes (default: `false`).\n *\n * Not used in the SVG space.\n *\n * > 👉 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [bogusComments=false]\n * Use “bogus comments” instead of comments to save byes: `<?charlie>`\n * instead of `<!--charlie-->` (default: `false`).\n *\n * > 👉 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn’t pretty).\n * @property {CharacterReferences | null | undefined} [characterReferences]\n * Configure how to serialize character references (optional).\n * @property {boolean | null | undefined} [closeEmptyElements=false]\n * Close SVG elements without any content with slash (`/`) on the opening tag\n * instead of an end tag: `<circle />` instead of `<circle></circle>`\n * (default: `false`).\n *\n * See `tightSelfClosing` to control whether a space is used before the\n * slash.\n *\n * Not used in the HTML space.\n * @property {boolean | null | undefined} [closeSelfClosing=false]\n * Close self-closing nodes with an extra slash (`/`): `<img />` instead of\n * `<img>` (default: `false`).\n *\n * See `tightSelfClosing` to control whether a space is used before the\n * slash.\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [collapseEmptyAttributes=false]\n * Collapse empty attributes: get `class` instead of `class=\"\"` (default:\n * `false`).\n *\n * Not used in the SVG space.\n *\n * > 👉 **Note**: boolean attributes (such as `hidden`) are always collapsed.\n * @property {boolean | null | undefined} [omitOptionalTags=false]\n * Omit optional opening and closing tags (default: `false`).\n *\n * For example, in `<ol><li>one</li><li>two</li></ol>`, both `</li>` closing\n * tags can be omitted.\n * The first because it’s followed by another `li`, the last because it’s\n * followed by nothing.\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [preferUnquoted=false]\n * Leave attributes unquoted if that results in less bytes (default: `false`).\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [quoteSmart=false]\n * Use the other quote if that results in less bytes (default: `false`).\n * @property {Quote | null | undefined} [quote='\"']\n * Preferred quote to use (default: `'\"'`).\n * @property {Space | null | undefined} [space='html']\n * When an `<svg>` element is found in the HTML space, this package already\n * automatically switches to and from the SVG space when entering and exiting\n * it (default: `'html'`).\n *\n * > 👉 **Note**: hast is not XML.\n * > It supports SVG as embedded in HTML.\n * > It does not support the features available in XML.\n * > Passing SVG might break but fragments of modern SVG should be fine.\n * > Use [`xast`][xast] if you need to support SVG as XML.\n * @property {boolean | null | undefined} [tightAttributes=false]\n * Join attributes together, without whitespace, if possible: get\n * `class=\"a b\"title=\"c d\"` instead of `class=\"a b\" title=\"c d\"` to save\n * bytes (default: `false`).\n *\n * Not used in the SVG space.\n *\n * > 👉 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [tightCommaSeparatedLists=false]\n * Join known comma-separated attribute values with just a comma (`,`),\n * instead of padding them on the right as well (`,␠`, where `␠` represents a\n * space) (default: `false`).\n * @property {boolean | null | undefined} [tightDoctype=false]\n * Drop unneeded spaces in doctypes: `<!doctypehtml>` instead of\n * `<!doctype html>` to save bytes (default: `false`).\n *\n * > 👉 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [tightSelfClosing=false]\n * Do not use an extra space when closing self-closing elements: `<img/>`\n * instead of `<img />` (default: `false`).\n *\n * > 👉 **Note**: only used if `closeSelfClosing: true` or\n * > `closeEmptyElements: true`.\n * @property {boolean | null | undefined} [upperDoctype=false]\n * Use a `<!DOCTYPE…` instead of `<!doctype…` (default: `false`).\n *\n * Useless except for XHTML.\n * @property {ReadonlyArray<string> | null | undefined} [voids]\n * Tag names of elements to serialize without closing tag (default: `html-void-elements`).\n *\n * Not used in the SVG space.\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass this, because\n * > hast is not for XML, and HTML will not add more void elements.\n *\n * @typedef {'\"' | \"'\"} Quote\n * HTML quotes for attribute values.\n *\n * @typedef {Omit<Required<{[key in keyof Options]: Exclude<Options[key], null | undefined>}>, 'space' | 'quote'>} Settings\n *\n * @typedef {'html' | 'svg'} Space\n * Namespace.\n *\n * @typedef State\n * Info passed around about the current state.\n * @property {(node: Parents | undefined) => string} all\n * Serialize the children of a parent node.\n * @property {Quote} alternative\n * Alternative quote.\n * @property {(node: Nodes, index: number | undefined, parent: Parents | undefined) => string} one\n * Serialize one node.\n * @property {Quote} quote\n * Preferred quote.\n * @property {Schema} schema\n * Current schema.\n * @property {Settings} settings\n * User configuration.\n */\n\nimport {htmlVoidElements} from 'html-void-elements'\nimport {html, svg} from 'property-information'\nimport {handle} from './handle/index.js'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/** @type {CharacterReferences} */\nconst emptyCharacterReferences = {}\n\n/** @type {Array<never>} */\nconst emptyChildren = []\n\n/**\n * Serialize hast as HTML.\n *\n * @param {Array<RootContent> | Nodes} tree\n * Tree to serialize.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized HTML.\n */\nexport function toHtml(tree, options) {\n const options_ = options || emptyOptions\n const quote = options_.quote || '\"'\n const alternative = quote === '\"' ? \"'\" : '\"'\n\n if (quote !== '\"' && quote !== \"'\") {\n throw new Error('Invalid quote `' + quote + '`, expected `\\'` or `\"`')\n }\n\n /** @type {State} */\n const state = {\n one,\n all,\n settings: {\n omitOptionalTags: options_.omitOptionalTags || false,\n allowParseErrors: options_.allowParseErrors || false,\n allowDangerousCharacters: options_.allowDangerousCharacters || false,\n quoteSmart: options_.quoteSmart || false,\n preferUnquoted: options_.preferUnquoted || false,\n tightAttributes: options_.tightAttributes || false,\n upperDoctype: options_.upperDoctype || false,\n tightDoctype: options_.tightDoctype || false,\n bogusComments: options_.bogusComments || false,\n tightCommaSeparatedLists: options_.tightCommaSeparatedLists || false,\n tightSelfClosing: options_.tightSelfClosing || false,\n collapseEmptyAttributes: options_.collapseEmptyAttributes || false,\n allowDangerousHtml: options_.allowDangerousHtml || false,\n voids: options_.voids || htmlVoidElements,\n characterReferences:\n options_.characterReferences || emptyCharacterReferences,\n closeSelfClosing: options_.closeSelfClosing || false,\n closeEmptyElements: options_.closeEmptyElements || false\n },\n schema: options_.space === 'svg' ? svg : html,\n quote,\n alternative\n }\n\n return state.one(\n Array.isArray(tree) ? {type: 'root', children: tree} : tree,\n undefined,\n undefined\n )\n}\n\n/**\n * Serialize a node.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {Nodes} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {string}\n * Serialized node.\n */\nfunction one(node, index, parent) {\n return handle(node, index, parent, this)\n}\n\n/**\n * Serialize all children of `parent`.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {Parents | undefined} parent\n * Parent whose children to serialize.\n * @returns {string}\n */\nexport function all(parent) {\n /** @type {Array<string>} */\n const results = []\n const children = (parent && parent.children) || emptyChildren\n let index = -1\n\n while (++index < children.length) {\n results[index] = this.one(children[index], index, parent)\n }\n\n return results.join('')\n}\n","import crypto from \"node:crypto\";\nimport type { PluggableList, Plugin } from \"unified\";\nimport type { Root as HastRoot, Element, ElementContent } from \"hast\";\nimport type { VFile } from \"vfile\";\nimport { toHtml } from \"hast-util-to-html\";\nimport type { QuartzTransformerPlugin } from \"@quartz-community/types\";\nimport type { EncryptedPagesOptions } from \"./types\";\n\nconst ALGORITHM = \"aes-256-gcm\";\nconst KEY_LENGTH = 32;\nconst IV_LENGTH = 12;\nconst SALT_LENGTH = 16;\nconst AUTH_TAG_LENGTH = 16;\n\nconst defaultOptions: EncryptedPagesOptions = {\n iterations: 600_000,\n passwordField: \"password\",\n unlistWhenEncrypted: false,\n};\n\nexport function encryptAesGcm(plaintext: string, password: string, iterations: number): string {\n const salt = crypto.randomBytes(SALT_LENGTH);\n const iv = crypto.randomBytes(IV_LENGTH);\n\n const key = crypto.pbkdf2Sync(password, salt, iterations, KEY_LENGTH, \"sha256\");\n\n const cipher = crypto.createCipheriv(ALGORITHM, key, iv);\n const encrypted = Buffer.concat([cipher.update(plaintext, \"utf8\"), cipher.final()]);\n const authTag = cipher.getAuthTag();\n\n const result = Buffer.concat([salt, iv, authTag, encrypted]);\n return result.toString(\"base64\");\n}\n\nexport function decrypt(encryptedBase64: string, password: string, iterations: number): string {\n const buffer = Buffer.from(encryptedBase64, \"base64\");\n\n const salt = buffer.subarray(0, SALT_LENGTH);\n const iv = buffer.subarray(SALT_LENGTH, SALT_LENGTH + IV_LENGTH);\n const authTag = buffer.subarray(\n SALT_LENGTH + IV_LENGTH,\n SALT_LENGTH + IV_LENGTH + AUTH_TAG_LENGTH,\n );\n const ciphertext = buffer.subarray(SALT_LENGTH + IV_LENGTH + AUTH_TAG_LENGTH);\n\n const key = crypto.pbkdf2Sync(password, salt, iterations, KEY_LENGTH, \"sha256\");\n\n const decipher = crypto.createDecipheriv(ALGORITHM, key, iv);\n decipher.setAuthTag(authTag);\n\n return decipher.update(ciphertext, undefined, \"utf8\") + decipher.final(\"utf8\");\n}\n\nconst rehypeEncryptedPages = (options: EncryptedPagesOptions): Plugin<[], HastRoot> => {\n return () => (tree: HastRoot, file: VFile) => {\n const frontmatter = (file.data?.frontmatter ?? {}) as Record<string, unknown>;\n const password = frontmatter[options.passwordField];\n\n if (typeof password !== \"string\" || password.length === 0) {\n return;\n }\n\n const html = toHtml(tree, { allowDangerousHtml: true });\n\n const encryptedData = encryptAesGcm(html, password, options.iterations);\n\n const encryptedContainer: Element = {\n type: \"element\",\n tagName: \"div\",\n properties: {\n className: [\"encrypted-page\", \"popover-hint\"],\n \"data-encrypted\": encryptedData,\n \"data-iterations\": String(options.iterations),\n },\n children: [],\n };\n\n tree.children = [encryptedContainer as ElementContent];\n\n const data = file.data as Record<string, unknown>;\n data.encrypted = true;\n data.text = \"\";\n data.description = \"\";\n\n const frontmatterUnlisted = frontmatter.unlisted;\n if (typeof frontmatterUnlisted === \"boolean\") {\n data.unlisted = frontmatterUnlisted;\n } else if (options.unlistWhenEncrypted) {\n data.unlisted = true;\n }\n\n if (frontmatter.stealth === true) {\n data.stealth = true;\n data.unlisted = true;\n }\n };\n};\n\nexport const EncryptedPages: QuartzTransformerPlugin<Partial<EncryptedPagesOptions>> = (\n userOptions?: Partial<EncryptedPagesOptions>,\n) => {\n const options = { ...defaultOptions, ...userOptions };\n return {\n name: \"EncryptedPages\",\n htmlPlugins(): PluggableList {\n return [rehypeEncryptedPages(options)];\n },\n };\n};\n","import type { Root as HtmlRoot } from \"hast\";\nimport type { Root as MdRoot } from \"mdast\";\nimport type { Data, VFile } from \"vfile\";\nimport type { PluggableList } from \"unified\";\n\n// ============================================================================\n// Path Types - Branded string types for type-safe file paths\n// ============================================================================\n\nexport type FilePath = string & { _brand: \"FilePath\" };\nexport type FullSlug = string & { _brand: \"FullSlug\" };\nexport type SimpleSlug = string & { _brand: \"SimpleSlug\" };\n\nexport function joinSegments(...segments: string[]): FilePath {\n return segments\n .filter((segment) => segment.length > 0)\n .join(\"/\")\n .replace(/\\/+/g, \"/\") as FilePath;\n}\n\n// ============================================================================\n// Resource Types - CSS/JS resources that plugins can inject\n// ============================================================================\n\nexport type JSResource =\n | {\n loadTime: \"beforeDOMReady\" | \"afterDOMReady\";\n moduleType?: \"module\";\n spaPreserve?: boolean;\n src: string;\n contentType: \"external\";\n }\n | {\n loadTime: \"beforeDOMReady\" | \"afterDOMReady\";\n moduleType?: \"module\";\n spaPreserve?: boolean;\n script: string;\n contentType: \"inline\";\n };\n\nexport type CSSResource = {\n content: string;\n inline?: boolean;\n spaPreserve?: boolean;\n};\n\nexport interface StaticResources {\n css: CSSResource[];\n js: JSResource[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n additionalHead: any[];\n}\n\n// ============================================================================\n// Config Types - Quartz configuration\n// ============================================================================\n\n/**\n * Flat configuration object that components receive as `cfg` prop.\n * This matches Quartz's `GlobalConfiguration` — the resolved config\n * passed to components at render time (i.e. `ctx.cfg.configuration`).\n */\nexport interface GlobalConfiguration {\n pageTitle?: string;\n pageTitleSuffix?: string;\n enableSPA?: boolean;\n enablePopovers?: boolean;\n analytics?: unknown;\n ignorePatterns?: string[];\n defaultDateType?: string;\n baseUrl?: string;\n theme?: unknown;\n locale?: string;\n}\n\n/**\n * Full Quartz config with nested `configuration` property.\n * This is what `BuildCtx.cfg` holds — used in plugin hooks\n * (transformers, filters, emitters), NOT in component props.\n */\nexport interface QuartzConfig {\n configuration: GlobalConfiguration;\n plugins?: unknown;\n externalPlugins?: unknown;\n}\n\n// ============================================================================\n// Context Types - Build context passed to plugin hooks\n// ============================================================================\n\nexport interface Argv {\n directory: string;\n verbose: boolean;\n output: string;\n serve: boolean;\n watch: boolean;\n port: number;\n wsPort: number;\n remoteDevHost?: string;\n concurrency?: number;\n}\n\nexport interface BuildCtx {\n buildId: string;\n argv: Argv;\n cfg: QuartzConfig;\n allSlugs: FullSlug[];\n allFiles: FilePath[];\n incremental: boolean;\n}\n\n// ============================================================================\n// VFile Types - Content data types\n// ============================================================================\n\nexport type QuartzPluginData = Data;\nexport type MarkdownContent = [MdRoot, VFile];\nexport type ProcessedContent = [HtmlRoot, VFile];\n\n// ============================================================================\n// Core Component Types - The contract between Quartz and plugins\n// ============================================================================\n\nexport type QuartzComponentProps = {\n ctx: unknown;\n externalResources: StaticResources;\n fileData: QuartzPluginData & Record<string, unknown>;\n cfg: GlobalConfiguration;\n children: unknown;\n tree: unknown;\n allFiles: (QuartzPluginData & Record<string, unknown>)[];\n displayClass?: \"mobile-only\" | \"desktop-only\";\n [key: string]: unknown;\n};\n\nexport type QuartzComponent = ((props: QuartzComponentProps) => unknown) & {\n css?: string | string[] | undefined;\n beforeDOMLoaded?: string | string[] | undefined;\n afterDOMLoaded?: string | string[] | undefined;\n};\n\nexport type QuartzComponentConstructor<\n Options extends object | undefined = undefined,\n> = (opts?: Options) => QuartzComponent;\n\nexport type StringResource = string | string[];\n\n// ============================================================================\n// Plugin Types - What Quartz expects from plugins\n// ============================================================================\n\ntype OptionType = object | undefined;\ntype ExternalResourcesFn = (\n ctx: BuildCtx,\n) => Partial<StaticResources> | undefined;\n\nexport type { ExternalResourcesFn };\n\nexport interface PluginTypes {\n transformers: QuartzTransformerPluginInstance[];\n filters: QuartzFilterPluginInstance[];\n emitters: QuartzEmitterPluginInstance[];\n pageTypes: QuartzPageTypePluginInstance[];\n}\n\nexport type QuartzTransformerPlugin<Options extends OptionType = undefined> = (\n opts?: Options,\n) => QuartzTransformerPluginInstance;\n\nexport type QuartzTransformerPluginInstance = {\n name: string;\n textTransform?: (ctx: BuildCtx, src: string) => string;\n markdownPlugins?: (ctx: BuildCtx) => PluggableList;\n htmlPlugins?: (ctx: BuildCtx) => PluggableList;\n externalResources?: ExternalResourcesFn;\n};\n\nexport type QuartzFilterPlugin<Options extends OptionType = undefined> = (\n opts?: Options,\n) => QuartzFilterPluginInstance;\n\nexport type QuartzFilterPluginInstance = {\n name: string;\n shouldPublish(ctx: BuildCtx, content: ProcessedContent): boolean;\n};\n\nexport type ChangeEvent = {\n type: \"add\" | \"change\" | \"delete\";\n path: FilePath;\n file?: VFile;\n};\n\nexport type QuartzEmitterPlugin<Options extends OptionType = undefined> = (\n opts?: Options,\n) => QuartzEmitterPluginInstance;\n\nexport type QuartzEmitterPluginInstance = {\n name: string;\n emit: (\n ctx: BuildCtx,\n content: ProcessedContent[],\n resources: StaticResources,\n ) => Promise<FilePath[]> | AsyncGenerator<FilePath>;\n partialEmit?: (\n ctx: BuildCtx,\n content: ProcessedContent[],\n resources: StaticResources,\n changeEvents: ChangeEvent[],\n ) => Promise<FilePath[]> | AsyncGenerator<FilePath> | null;\n getQuartzComponents?: (ctx: BuildCtx) => QuartzComponent[];\n externalResources?: ExternalResourcesFn;\n};\n\n// ============================================================================\n// PageType Plugin Types - Declarative page rendering plugins\n// ============================================================================\n\n/**\n * Matcher function: determines if a source file belongs to a page type.\n * Returns true if the page type should own this file.\n */\nexport type PageMatcher = (args: {\n slug: FullSlug;\n fileData: QuartzPluginData & Record<string, unknown>;\n cfg: GlobalConfiguration;\n}) => boolean;\n\n/**\n * Virtual page descriptor for page types that generate pages\n * from aggregated data (e.g., tag indexes, folder listings).\n */\nexport interface VirtualPage {\n slug: FullSlug;\n title: string;\n data: Partial<QuartzPluginData> & Record<string, unknown>;\n}\n\n/**\n * Generator function: produces virtual pages from all processed content.\n * Used by page types that don't match source files but instead create\n * synthetic pages (e.g., one page per tag, one page per folder).\n */\nexport type PageGenerator = (args: {\n content: ProcessedContent[];\n cfg: GlobalConfiguration;\n ctx: BuildCtx;\n}) => VirtualPage[];\n\n/** A function that mutates a HAST tree at render time, when allFiles is available. */\nexport type TreeTransform = (\n root: HtmlRoot,\n slug: FullSlug,\n componentData: QuartzComponentProps,\n) => void;\n\n/**\n * A PageType plugin definition.\n *\n * PageTypes are a declarative abstraction over page-rendering emitters.\n * Each PageType declares which files it owns (via `match`), optionally\n * generates virtual pages (via `generate`), and provides a body component\n * and layout reference for rendering.\n */\nexport type QuartzPageTypePlugin<Options extends OptionType = undefined> = (\n opts?: Options,\n) => QuartzPageTypePluginInstance;\n\nexport type QuartzPageTypePluginInstance = {\n name: string;\n /** Higher priority wins when multiple page types match the same file. Default: 0. */\n priority?: number;\n /** File extensions this page type handles (e.g. [\".canvas\"]). Files with these extensions are excluded from the default asset emitter and processed by generate() instead. */\n fileExtensions?: string[];\n /** Determines which source files this page type owns. */\n match: PageMatcher;\n /** Produces virtual pages from aggregated content data. */\n generate?: PageGenerator;\n /** Layout key — references a key in `layout.byPageType`. */\n layout: string;\n /** Optional page frame name (e.g. \"default\", \"full-width\", \"canvas\"). Defaults to \"default\". */\n frame?: string;\n /** The body component constructor for this page type. */\n body: QuartzComponentConstructor;\n /** Optional render-time HAST tree transforms (e.g. resolving inline codeblocks). */\n treeTransforms?: (ctx: BuildCtx) => TreeTransform[];\n};\n\n// ============================================================================\n// PageFrame Types — Custom page layout frames\n// ============================================================================\n\n/**\n * Props passed to a PageFrame's render function.\n * Contains the resolved layout components and the shared component data.\n */\nexport interface PageFrameProps {\n /** Component data shared across all components on the page */\n componentData: QuartzComponentProps;\n /** The Head component (rendered in <head>) — NOT used by frames, included for completeness */\n head: QuartzComponent;\n /** Header slot components (rendered inside <header>) */\n header: QuartzComponent[];\n /** Components rendered before the page body */\n beforeBody: QuartzComponent[];\n /** The page body component (Content) */\n pageBody: QuartzComponent;\n /** Components rendered after the page body */\n afterBody: QuartzComponent[];\n /** Left sidebar components */\n left: QuartzComponent[];\n /** Right sidebar components */\n right: QuartzComponent[];\n /** Footer components */\n footer: QuartzComponent[];\n}\n\n/**\n * A PageFrame defines the inner HTML structure of a page inside the\n * `<div id=\"quartz-root\">` shell. Different frames can produce completely\n * different layouts (e.g. with/without sidebars, horizontal scroll, etc.)\n * while the outer shell (html, head, body, quartz-root) remains stable\n * for SPA navigation.\n *\n * The `render` function returns `unknown` to avoid coupling to a specific\n * JSX runtime (Preact, React, etc.). Quartz core casts this to JSX.Element.\n */\nexport interface PageFrame {\n /** Unique name for this frame (e.g. \"default\", \"full-width\", \"canvas\") */\n name: string;\n /** Render the inner page structure. Returns a JSX tree to be placed inside Body > #quartz-body. */\n render: (props: PageFrameProps) => unknown;\n /** Optional CSS string to include when this frame is active */\n css?: string;\n}\n\nexport type HTMLAttributes = Record<\n string,\n string | number | boolean | undefined\n>;\n\nexport type EventHandler = (event: Event) => void;\n\nexport type CleanupFunction = () => void;\n\nexport type ClassValue =\n | string\n | number\n | boolean\n | undefined\n | null\n | ClassValue[];\n\n// ============================================================================\n// Content Index Types - Data shape for contentIndex.json\n// ============================================================================\n\nexport type ContentDetails = {\n slug: FullSlug;\n filePath: FilePath;\n title: string;\n links: string[];\n tags: string[];\n content: string;\n richContent?: string;\n date?: Date;\n description?: string;\n};\n\nexport type ContentIndex = Record<FullSlug, ContentDetails>;\n\n// ============================================================================\n// Sort & Theme Types\n// ============================================================================\n\nexport type SortFn = (f1: QuartzPluginData, f2: QuartzPluginData) => number;\n\nexport type ThemeKey = \"lightMode\" | \"darkMode\";\n\nexport type ValidDateType = \"created\" | \"modified\" | \"published\";\n\n// ============================================================================\n// VFile DataMap Augmentation — canonical vfile shape for Quartz\n// ============================================================================\n\ndeclare module \"vfile\" {\n interface DataMap {\n slug: FullSlug;\n filePath: FilePath;\n relativePath: FilePath;\n description: string;\n text: string;\n links: SimpleSlug[];\n toc: { depth: number; text: string; slug: string }[];\n collapseToc: boolean;\n blocks: Record<string, import(\"hast\").Element>;\n htmlAst: import(\"hast\").Root;\n hasMermaidDiagram: boolean | undefined;\n frontmatter: { [key: string]: unknown } & {\n title: string;\n } & Partial<{\n tags: string[];\n aliases: string[];\n modified: string;\n created: string;\n published: string;\n description: string;\n socialDescription: string;\n publish: boolean | string;\n draft: boolean | string;\n lang: string;\n enableToc: string;\n cssclasses: string[];\n socialImage: string;\n comments: boolean | string;\n }>;\n dates: {\n created: Date;\n modified: Date;\n published: Date;\n };\n defaultDateType?: ValidDateType;\n }\n}\n","import path from \"node:path\";\nimport fs from \"node:fs/promises\";\nimport type { Root, Element } from \"hast\";\nimport type {\n BuildCtx,\n FilePath,\n ProcessedContent,\n QuartzEmitterPlugin,\n} from \"@quartz-community/types\";\nimport { joinSegments } from \"@quartz-community/types\";\nimport { encryptAesGcm } from \"./transformer\";\nimport type { EncryptedContentIndexOptions } from \"./types\";\n\nexport const SHADOW_INDEX_VERSION = 1 as const;\n\nconst defaultOptions: EncryptedContentIndexOptions = {\n outputPath: \"static/encryptedContentIndex.json\",\n passwordField: \"password\",\n};\n\nexport interface ShadowIndexBlob {\n ciphertext: string;\n iterations: number;\n}\n\nexport interface ShadowIndexFile {\n version: typeof SHADOW_INDEX_VERSION;\n entries: ShadowIndexBlob[];\n}\n\nexport interface ShadowContentIndexEntry {\n slug: string;\n entry: {\n slug: string;\n filePath: string;\n title: string;\n links: string[];\n tags: string[];\n content: string;\n description: string;\n };\n}\n\nfunction buildShadowEntry(data: Record<string, unknown>): ShadowContentIndexEntry | null {\n const slug = data.slug;\n if (typeof slug !== \"string\" || slug.length === 0) return null;\n\n const frontmatter = (data.frontmatter as Record<string, unknown> | undefined) ?? {};\n const title = typeof frontmatter.title === \"string\" ? frontmatter.title : \"\";\n const tags = Array.isArray(frontmatter.tags)\n ? (frontmatter.tags as unknown[]).filter((t): t is string => typeof t === \"string\")\n : [];\n\n const links = Array.isArray(data.links)\n ? (data.links as unknown[]).filter((l): l is string => typeof l === \"string\")\n : [];\n\n const filePath = typeof data.relativePath === \"string\" ? data.relativePath : \"\";\n\n return {\n slug,\n entry: {\n slug,\n filePath,\n title,\n links,\n tags,\n content: \"\",\n description: \"\",\n },\n };\n}\n\nexport const EncryptedContentIndex: QuartzEmitterPlugin<Partial<EncryptedContentIndexOptions>> = (\n userOptions?: Partial<EncryptedContentIndexOptions>,\n) => {\n const options = { ...defaultOptions, ...userOptions };\n\n const emitAll = async (ctx: BuildCtx, content: ProcessedContent[]): Promise<FilePath[]> => {\n const passwordField = options.passwordField;\n const entries: ShadowIndexBlob[] = [];\n\n for (const [tree, file] of content) {\n const data = (file.data ?? {}) as Record<string, unknown>;\n if (data.encrypted !== true) continue;\n if (data.unlisted !== true) continue;\n if (data.stealth === true) continue;\n\n const frontmatter = (data.frontmatter as Record<string, unknown> | undefined) ?? {};\n const password = frontmatter[passwordField];\n if (typeof password !== \"string\" || password.length === 0) continue;\n\n const iterations = extractIterationsFromTree(tree as Root);\n const shadowEntry = buildShadowEntry(data);\n if (!shadowEntry) continue;\n\n const plaintext = JSON.stringify(shadowEntry);\n const ciphertext = encryptAesGcm(plaintext, password, iterations);\n\n entries.push({ ciphertext, iterations });\n }\n\n const shadowFile: ShadowIndexFile = {\n version: SHADOW_INDEX_VERSION,\n entries,\n };\n\n const outputPath = joinSegments(ctx.argv.output, options.outputPath) as FilePath;\n const dir = path.dirname(outputPath);\n await fs.mkdir(dir, { recursive: true });\n await fs.writeFile(outputPath, JSON.stringify(shadowFile));\n\n return [outputPath];\n };\n\n return {\n name: \"EncryptedContentIndex\",\n emit: emitAll,\n partialEmit: emitAll,\n };\n};\n\nfunction extractIterationsFromTree(tree: Root): number {\n for (const child of tree.children ?? []) {\n if (child.type !== \"element\") continue;\n const el = child as Element;\n const props = el.properties ?? {};\n const dataIterations = props[\"data-iterations\"];\n if (typeof dataIterations === \"string\") {\n const parsed = parseInt(dataIterations, 10);\n if (!Number.isNaN(parsed) && parsed > 0) return parsed;\n }\n if (typeof dataIterations === \"number\" && dataIterations > 0) return dataIterations;\n }\n return 600_000;\n}\n",".encrypted-page {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 300px;\n padding: 2rem;\n}\n\n.encrypted-page-form {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1rem;\n max-width: 400px;\n width: 100%;\n text-align: center;\n}\n\n.encrypted-page-icon {\n color: var(--gray, #6b7280);\n opacity: 0.6;\n}\n\n.encrypted-page-label {\n color: var(--darkgray, #4b5563);\n font-size: 0.95rem;\n margin: 0;\n line-height: 1.5;\n}\n\n.encrypted-page-input-row {\n display: flex;\n gap: 0.5rem;\n width: 100%;\n}\n\n.encrypted-page-input {\n flex: 1;\n padding: 0.5rem 0.75rem;\n border: 1px solid var(--lightgray, #d1d5db);\n border-radius: 4px;\n font-size: 0.9rem;\n font-family: inherit;\n background: var(--light, #fff);\n color: var(--dark, #111);\n outline: none;\n transition: border-color 0.15s ease;\n}\n.encrypted-page-input:focus {\n border-color: var(--secondary, #3b82f6);\n}\n.encrypted-page-input:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.encrypted-page-submit {\n padding: 0.5rem 1.25rem;\n border: none;\n border-radius: 4px;\n font-size: 0.9rem;\n font-family: inherit;\n font-weight: 600;\n cursor: pointer;\n background: var(--secondary, #3b82f6);\n color: var(--light, #fff);\n transition: background 0.15s ease, opacity 0.15s ease;\n white-space: nowrap;\n}\n.encrypted-page-submit:hover:not(:disabled) {\n opacity: 0.9;\n}\n.encrypted-page-submit:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.encrypted-page-error {\n color: var(--red, #dc2626);\n font-size: 0.85rem;\n margin: 0;\n}","var S=\"encrypted-pages-passwords\",m=\"encrypted-pages:decryptedShadowEntries\";function v(t){let e=atob(t),n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return n}async function b(t,e,n){let r=new TextEncoder,o=await window.crypto.subtle.importKey(\"raw\",r.encode(t),\"PBKDF2\",!1,[\"deriveKey\"]);return window.crypto.subtle.deriveKey({name:\"PBKDF2\",salt:e,iterations:n,hash:\"SHA-256\"},o,{name:\"AES-GCM\",length:256},!1,[\"decrypt\"])}async function T(t,e,n){let r=v(t),o=r.slice(0,16),i=r.slice(16,28),c=r.slice(28,44),a=r.slice(44),s=new Uint8Array(a.length+c.length);s.set(a,0),s.set(c,a.length);let d=await b(e,o,n),l=await window.crypto.subtle.decrypt({name:\"AES-GCM\",iv:i},d,s);return new TextDecoder().decode(l)}function h(){try{let t=sessionStorage.getItem(S);if(!t)return[];let e=JSON.parse(t);return Array.isArray(e)?e:[]}catch{return[]}}function A(t){let e=h();e.includes(t)||(e.push(t),sessionStorage.setItem(S,JSON.stringify(e)))}function L(){try{let t=sessionStorage.getItem(m);if(!t)return{};let e=JSON.parse(t);return e&&typeof e==\"object\"?e:{}}catch{return{}}}function N(t){try{sessionStorage.setItem(m,JSON.stringify(t))}catch{}}function I(t,e){let n=t.querySelector(\".encrypted-page-error\");n&&(n.textContent=e,n.style.display=\"block\")}function _(t){let e=t.querySelector(\".encrypted-page-error\");e&&(e.style.display=\"none\",e.textContent=\"\")}function w(t,e){let n=t.querySelector(\".encrypted-page-submit\"),r=t.querySelector(\".encrypted-page-input\");n&&(n.disabled=e,n.textContent=e?\"Decrypting\\u2026\":\"Unlock\"),r&&(r.disabled=e)}function x(){let t=document.querySelectorAll(\"script\");for(let e of t){let r=(e.textContent??\"\").match(/fetch\\([\"']([^\"']+contentIndex\\.json)[\"']\\)/);if(r)return r[1].replace(/contentIndex\\.json$/,\"encryptedContentIndex.json\")}return new URL(\"static/encryptedContentIndex.json\",document.baseURI).toString()}var p=null;async function H(){if(p)return p;let t=x();return p=fetch(t).then(e=>{if(!e.ok)throw new Error(`shadow index HTTP ${e.status}`);return e.json()}).then(e=>!e||e.version!==1||!Array.isArray(e.entries)?{version:1,entries:[]}:e).catch(()=>({version:1,entries:[]})),p}async function D(t,e,n){let r={},o={...n},i=!1;for(let c=0;c<t.entries.length;c++){let a=String(c);if(n[a]){let d=n[a];d&&d.slug&&(r[d.slug]=d.entry);continue}let s=t.entries[c];if(!(!s||typeof s.ciphertext!=\"string\"))for(let d of e)try{let l=await T(s.ciphertext,d,s.iterations),u=JSON.parse(l);u&&typeof u.slug==\"string\"&&u.entry&&(r[u.slug]=u.entry,o[a]=u,i=!0);break}catch{}}return i&&N(o),r}async function G(t){let e=Object.keys(t);if(e.length!==0){try{let n=await(typeof fetchData<\"u\"?fetchData:Promise.resolve(null));if(!n||typeof n!=\"object\")return;let r=n.content&&typeof n.content==\"object\"?n.content:n;for(let o of e)o in r||(r[o]=t[o])}catch{return}document.dispatchEvent(new CustomEvent(\"content-index-updated\",{detail:{slugs:e}})),document.dispatchEvent(new CustomEvent(\"render\"))}}var y=!1;async function f(){if(y)return;let t=h();if(t.length!==0){y=!0;try{let e=await H();if(!e.entries||e.entries.length===0)return;let n=L(),r=await D(e,t,n);await G(r)}finally{y=!1}}}async function E(t,e){let n=t.getAttribute(\"data-encrypted\"),r=parseInt(t.getAttribute(\"data-iterations\")||\"600000\",10);if(!n)return!1;try{let o=await T(n,e,r);if(t.parentElement){let c=document.createElement(\"div\");c.innerHTML=o,t.replaceWith(...c.childNodes)}return A(e),document.dispatchEvent(new CustomEvent(\"render\")),f(),!0}catch{return!1}}function g(){let t=document.querySelectorAll(\".encrypted-page\");if(t.length===0){f();return}for(let e of t){if(e.querySelector(\".encrypted-page-form\")||!e.getAttribute(\"data-encrypted\"))continue;let r=document.createElement(\"div\");r.className=\"encrypted-page-form\",r.innerHTML=['<div class=\"encrypted-page-icon\" aria-hidden=\"true\">','<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">','<rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"></rect>','<path d=\"M7 11V7a5 5 0 0 1 10 0v4\"></path>',\"</svg>\",\"</div>\",'<p class=\"encrypted-page-label\">This page is encrypted. Enter the password to view its content.</p>','<div class=\"encrypted-page-input-row\">','<input type=\"password\" class=\"encrypted-page-input\" placeholder=\"Password\" autocomplete=\"off\" />','<button type=\"button\" class=\"encrypted-page-submit\">Unlock</button>',\"</div>\",'<p class=\"encrypted-page-error\" style=\"display:none\"></p>'].join(\"\"),e.appendChild(r);let o=r.querySelector(\".encrypted-page-input\"),i=r.querySelector(\".encrypted-page-submit\");async function c(){let s=o?.value;if(!s)return;_(e),w(e,!0),await E(e,s)||(w(e,!1),I(e,\"Incorrect password. Please try again.\"),o&&(o.value=\"\",o.focus()))}i&&i.addEventListener(\"click\",c),o&&o.addEventListener(\"keydown\",s=>{s.key===\"Enter\"&&(s.preventDefault(),c())});let a=h();a.length>0&&(async()=>{for(let s of a)if(await E(e,s))return})()}f()}document.addEventListener(\"nav\",()=>{g()});document.addEventListener(\"render\",()=>{document.querySelectorAll(\".encrypted-page\").length>0&&g()});var C=new MutationObserver(t=>{for(let e of t)for(let n of e.addedNodes){if(!(n instanceof HTMLElement))continue;if((n.classList?.contains(\"encrypted-page\")?[n]:[...n.querySelectorAll(\".encrypted-page\")]).filter(i=>!i.querySelector(\".encrypted-page-form\")).length>0){g();return}}});C.observe(document.body,{childList:!0,subtree:!0});\n","/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 2;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 1;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nexport const MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nexport const NULL = null;\nexport const UNDEFINED = undefined;\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { NULL } from '../constants';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw the error that was caught (except\n * for unmounting when this parameter is the highest parent that was being\n * unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component,\n\t\t/** @type {import('../internal').ComponentType} */\n\t\tctor,\n\t\t/** @type {boolean} */\n\t\thandled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != NULL) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != NULL) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE, NULL } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != NULL && this._nextState != this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == NULL) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](https://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == NULL) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: NULL;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != NULL && sibling._dom != NULL) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : NULL;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tif (component._parentDom && component._dirty) {\n\t\tlet oldVNode = component._vnode,\n\t\t\toldDom = oldVNode._dom,\n\t\t\tcommitQueue = [],\n\t\t\trefQueue = [],\n\t\t\tnewVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.namespaceURI,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : NULL,\n\t\t\tcommitQueue,\n\t\t\toldDom == NULL ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\t\toldVNode._dom = oldVNode._parent = null;\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != NULL && vnode._component != NULL) {\n\t\tvnode._dom = vnode._component.base = NULL;\n\t\tvnode._children.some(child => {\n\t\t\tif (child != NULL && child._dom != NULL) {\n\t\t\t\treturn (vnode._dom = vnode._component.base = child._dom);\n\t\t\t}\n\t\t});\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce != options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\ttry {\n\t\tlet c,\n\t\t\tl = 1;\n\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\twhile (rerenderQueue.length) {\n\t\t\t// Keep the rerender queue sorted by (depth, insertion order). The queue\n\t\t\t// will initially be sorted on the first iteration only if it has more than 1 item.\n\t\t\t//\n\t\t\t// New items can be added to the queue e.g. when rerendering a provider, so we want to\n\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t// single pass\n\t\t\tif (rerenderQueue.length > l) {\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\n\t\t\tc = rerenderQueue.shift();\n\t\t\tl = rerenderQueue.length;\n\n\t\t\trenderComponent(c);\n\t\t}\n\t} finally {\n\t\trerenderQueue.length = process._rerenderCount = 0;\n\t}\n}\n\nprocess._rerenderCount = 0;\n","import { IS_NON_DIMENSIONAL, NULL, SVG_NAMESPACE } from '../constants';\nimport options from '../options';\n\n// Per-instance unique key for event clock stamps. Each Preact copy on the page\n// gets its own random suffix so that `_dispatched` / `_attached` properties on\n// shared event objects and handler functions cannot collide across instances.\n// ~1 in 60M collision odds - if you have that many praect versions on the page,\n// you deserve some weird bugs.\n// In 11 we can replace this with a\n// Symbol\nlet _id = Math.random().toString(8),\n\tEVENT_DISPATCHED = '__d' + _id,\n\tEVENT_ATTACHED = '__a' + _id;\n\nfunction setStyle(style, key, value) {\n\tif (key[0] == '-') {\n\t\tstyle.setProperty(key, value == NULL ? '' : value);\n\t} else if (value == NULL) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\nconst CAPTURE_REGEX = /(PointerCapture)$|Capture$/i;\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {string} namespace Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, namespace) {\n\tlet useCapture;\n\n\to: if (name == 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] != oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] == 'o' && name[1] == 'n') {\n\t\tuseCapture = name != (name = name.replace(CAPTURE_REGEX, '$1'));\n\t\tconst lowerCaseName = name.toLowerCase();\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (lowerCaseName in dom || name == 'onFocusOut' || name == 'onFocusIn')\n\t\t\tname = lowerCaseName.slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue[EVENT_ATTACHED] = eventClock;\n\t\t\t\tdom.addEventListener(\n\t\t\t\t\tname,\n\t\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\t\tuseCapture\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tvalue[EVENT_ATTACHED] = oldValue[EVENT_ATTACHED];\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (namespace == SVG_NAMESPACE) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname != 'popover' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == NULL ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != NULL && (value !== false || name[4] == '-')) {\n\t\t\tdom.setAttribute(name, name == 'popover' && value == true ? '' : value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {import('../internal').PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e[EVENT_DISPATCHED] == NULL) {\n\t\t\t\te[EVENT_DISPATCHED] = eventClock++;\n\n\t\t\t\t// When `e[EVENT_DISPATCHED]` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e[EVENT_DISPATCHED] < eventHandler[EVENT_ATTACHED]) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n","import { enqueueRender } from './component';\nimport { NULL } from './constants';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tfunction Context(props) {\n\t\tif (!this.getChildContext) {\n\t\t\t/** @type {Set<import('./internal').Component> | null} */\n\t\t\tlet subs = new Set();\n\t\t\tlet ctx = {};\n\t\t\tctx[Context._id] = this;\n\n\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\tthis.componentWillUnmount = () => {\n\t\t\t\tsubs = NULL;\n\t\t\t};\n\n\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t// @ts-expect-error even\n\t\t\t\tif (this.props.value != _props.value) {\n\t\t\t\t\tsubs.forEach(c => {\n\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.sub = c => {\n\t\t\t\tsubs.add(c);\n\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\tif (subs) {\n\t\t\t\t\t\tsubs.delete(c);\n\t\t\t\t\t}\n\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\treturn props.children;\n\t}\n\n\tContext._id = '__cC' + i++;\n\tContext._defaultValue = defaultValue;\n\n\t/** @type {import('./internal').FunctionComponent} */\n\tContext.Consumer = (props, contextValue) => {\n\t\treturn props.children(contextValue);\n\t};\n\n\t// we could also get rid of _contextRef entirely\n\tContext.Provider =\n\t\tContext._contextRef =\n\t\tContext.Consumer.contextType =\n\t\t\tContext;\n\n\treturn Context;\n}\n","import { options, Fragment } from 'preact';\nimport { encodeEntities } from './utils';\nimport { IS_NON_DIMENSIONAL } from '../../src/constants';\n\nlet vnodeId = 0;\n\nconst isArray = Array.isArray;\n\n/**\n * @fileoverview\n * This file exports various methods that implement Babel's \"automatic\" JSX runtime API:\n * - jsx(type, props, key)\n * - jsxs(type, props, key)\n * - jsxDEV(type, props, key, __source, __self)\n *\n * The implementation of createVNode here is optimized for performance.\n * Benchmarks: https://esbench.com/bench/5f6b54a0b4632100a7dcd2b3\n */\n\n/**\n * JSX.Element factory used by Babel's {runtime:\"automatic\"} JSX transform\n * @param {VNode['type']} type\n * @param {VNode['props']} props\n * @param {VNode['key']} [key]\n * @param {unknown} [isStaticChildren]\n * @param {unknown} [__source]\n * @param {unknown} [__self]\n */\nfunction createVNode(type, props, key, isStaticChildren, __source, __self) {\n\tif (!props) props = {};\n\t// We'll want to preserve `ref` in props to get rid of the need for\n\t// forwardRef components in the future, but that should happen via\n\t// a separate PR.\n\tlet normalizedProps = props,\n\t\tref,\n\t\ti;\n\n\tif ('ref' in normalizedProps) {\n\t\tnormalizedProps = {};\n\t\tfor (i in props) {\n\t\t\tif (i == 'ref') {\n\t\t\t\tref = props[i];\n\t\t\t} else {\n\t\t\t\tnormalizedProps[i] = props[i];\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @type {VNode & { __source: any; __self: any }} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops: normalizedProps,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: --vnodeId,\n\t\t_index: -1,\n\t\t_flags: 0,\n\t\t__source,\n\t\t__self\n\t};\n\n\t// If a Component VNode, check for and apply defaultProps.\n\t// Note: `type` is often a String, and can be `undefined` in development.\n\tif (typeof type === 'function' && (ref = type.defaultProps)) {\n\t\tfor (i in ref)\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = ref[i];\n\t\t\t}\n\t}\n\n\tif (options.vnode) options.vnode(vnode);\n\treturn vnode;\n}\n\n/**\n * Create a template vnode. This function is not expected to be\n * used directly, but rather through a precompile JSX transform\n * @param {string[]} templates\n * @param {Array<string | null | VNode>} exprs\n * @returns {VNode}\n */\nfunction jsxTemplate(templates, ...exprs) {\n\tconst vnode = createVNode(Fragment, { tpl: templates, exprs });\n\t// Bypass render to string top level Fragment optimization\n\tvnode.key = vnode._vnode;\n\treturn vnode;\n}\n\nconst JS_TO_CSS = {};\nconst CSS_REGEX = /[A-Z]/g;\n\n/**\n * Unwrap potential signals.\n * @param {*} value\n * @returns {*}\n */\nfunction normalizeAttrValue(value) {\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.valueOf === 'function'\n\t\t? value.valueOf()\n\t\t: value;\n}\n\n/**\n * Serialize an HTML attribute to a string. This function is not\n * expected to be used directly, but rather through a precompile\n * JSX transform\n * @param {string} name The attribute name\n * @param {*} value The attribute value\n * @returns {string}\n */\nfunction jsxAttr(name, value) {\n\tif (options.attr) {\n\t\tconst result = options.attr(name, value);\n\t\tif (typeof result === 'string') return result;\n\t}\n\n\tvalue = normalizeAttrValue(value);\n\n\tif (name === 'ref' || name === 'key') return '';\n\tif (name === 'style' && typeof value === 'object') {\n\t\tlet str = '';\n\t\tfor (let prop in value) {\n\t\t\tlet val = value[prop];\n\t\t\tif (val != null && val !== '') {\n\t\t\t\tconst name =\n\t\t\t\t\tprop[0] == '-'\n\t\t\t\t\t\t? prop\n\t\t\t\t\t\t: JS_TO_CSS[prop] ||\n\t\t\t\t\t\t\t(JS_TO_CSS[prop] = prop.replace(CSS_REGEX, '-$&').toLowerCase());\n\n\t\t\t\tlet suffix = ';';\n\t\t\t\tif (\n\t\t\t\t\ttypeof val === 'number' &&\n\t\t\t\t\t// Exclude custom-attributes\n\t\t\t\t\t!name.startsWith('--') &&\n\t\t\t\t\t!IS_NON_DIMENSIONAL.test(name)\n\t\t\t\t) {\n\t\t\t\t\tsuffix = 'px;';\n\t\t\t\t}\n\t\t\t\tstr = str + name + ':' + val + suffix;\n\t\t\t}\n\t\t}\n\t\treturn name + '=\"' + encodeEntities(str) + '\"';\n\t}\n\n\tif (\n\t\tvalue == null ||\n\t\tvalue === false ||\n\t\ttypeof value === 'function' ||\n\t\ttypeof value === 'object'\n\t) {\n\t\treturn '';\n\t} else if (value === true) return name;\n\n\treturn name + '=\"' + encodeEntities('' + value) + '\"';\n}\n\n/**\n * Escape a dynamic child passed to `jsxTemplate`. This function\n * is not expected to be used directly, but rather through a\n * precompile JSX transform\n * @param {*} value\n * @returns {string | null | VNode | Array<string | null | VNode>}\n */\nfunction jsxEscape(value) {\n\tif (\n\t\tvalue == null ||\n\t\ttypeof value === 'boolean' ||\n\t\ttypeof value === 'function'\n\t) {\n\t\treturn null;\n\t}\n\n\tif (typeof value === 'object') {\n\t\t// Check for VNode\n\t\tif (value.constructor === undefined) return value;\n\n\t\tif (isArray(value)) {\n\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\tvalue[i] = jsxEscape(value[i]);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t}\n\n\treturn encodeEntities('' + value);\n}\n\nexport {\n\tcreateVNode as jsx,\n\tcreateVNode as jsxs,\n\tcreateVNode as jsxDEV,\n\tFragment,\n\t// precompiled JSX transform\n\tjsxTemplate,\n\tjsxAttr,\n\tjsxEscape\n};\n","import type {\n QuartzComponent,\n QuartzComponentProps,\n QuartzComponentConstructor,\n} from \"@quartz-community/types\";\nimport style from \"./styles/encrypted.scss\";\n// @ts-expect-error - inline script import handled by Quartz bundler\nimport script from \"./scripts/encrypted.inline.ts\";\n\nexport interface EncryptedPageComponentOptions {\n /** CSS class name for the component wrapper. */\n className?: string;\n}\n\nexport default ((opts?: EncryptedPageComponentOptions) => {\n const { className = \"encrypted-page-wrapper\" } = opts ?? {};\n\n const Component: QuartzComponent = (_props: QuartzComponentProps) => {\n // The actual encrypted container is injected by the transformer's rehype plugin.\n // This component only provides CSS and the client-side decryption script.\n // It renders an empty wrapper that the encrypted content appears inside.\n return <div class={className} />;\n };\n\n Component.css = style;\n Component.afterDOMLoaded = script;\n\n return Component;\n}) satisfies QuartzComponentConstructor;\n"]}
1
+ {"version":3,"sources":["../node_modules/html-void-elements/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/aria.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/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/index.js","../node_modules/zwitch/index.js","../node_modules/stringify-entities/lib/core.js","../node_modules/stringify-entities/lib/util/to-hexadecimal.js","../node_modules/stringify-entities/lib/util/to-decimal.js","../node_modules/character-entities-legacy/index.js","../node_modules/character-entities-html4/index.js","../node_modules/stringify-entities/lib/constant/dangerous.js","../node_modules/stringify-entities/lib/util/to-named.js","../node_modules/stringify-entities/lib/util/format-smart.js","../node_modules/stringify-entities/lib/index.js","../node_modules/hast-util-to-html/lib/handle/comment.js","../node_modules/hast-util-to-html/lib/handle/doctype.js","../node_modules/ccount/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/hast-util-whitespace/lib/index.js","../node_modules/hast-util-to-html/lib/omission/util/siblings.js","../node_modules/hast-util-to-html/lib/omission/omission.js","../node_modules/hast-util-to-html/lib/omission/closing.js","../node_modules/hast-util-to-html/lib/omission/opening.js","../node_modules/hast-util-to-html/lib/handle/element.js","../node_modules/hast-util-to-html/lib/handle/text.js","../node_modules/hast-util-to-html/lib/handle/raw.js","../node_modules/hast-util-to-html/lib/handle/root.js","../node_modules/hast-util-to-html/lib/handle/index.js","../node_modules/hast-util-to-html/lib/index.js","../src/transformer.ts","../node_modules/@quartz-community/types/src/index.ts","../src/emitter.ts","../src/components/styles/encrypted.scss","../src/components/scripts/encrypted.inline.ts","../node_modules/preact/src/constants.js","../node_modules/preact/src/options.js","../node_modules/preact/src/diff/catch-error.js","../node_modules/preact/src/component.js","../node_modules/preact/src/diff/props.js","../node_modules/preact/src/create-context.js","../node_modules/preact/jsx-runtime/src/index.js","../src/components/EncryptedPage.tsx"],"names":["key","_","html","svg","one","all","own","stringify","increment","siblings","body","tbody","head","child","x","y","emptyChildren","defaultOptions","t","l","options","__e","error","vnode","oldVNode","errorInfo","component","ctor","handled","__","__c","constructor","getDerivedStateFromError","setState","__d","componentDidCatch","__E","e","Promise","prototype","then","bind","resolve","setTimeout","Math","random","toString","vnodeId","createVNode","type","props","isStaticChildren","__source","__self","ref","i","normalizedProps","__k","__b","__v","__i","__u","u"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * List of HTML void tag names.\n *\n * @type {Array<string>}\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 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n]\n","/**\n * @import {Schema as SchemaType, Space} from 'property-information'\n */\n\n/** @type {SchemaType} */\nexport class Schema {\n /**\n * @param {SchemaType['property']} property\n * Property.\n * @param {SchemaType['normal']} normal\n * Normal.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Schema.\n */\n constructor(property, normal, space) {\n this.normal = normal\n this.property = property\n\n if (space) {\n this.space = space\n }\n }\n}\n\nSchema.prototype.normal = {}\nSchema.prototype.property = {}\nSchema.prototype.space = undefined\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {ReadonlyArray<Schema>} definitions\n * Definitions.\n * @param {Space | undefined} [space]\n * Space.\n * @returns {Schema}\n * Schema.\n */\nexport function merge(definitions, space) {\n /** @type {Record<string, Info>} */\n const property = {}\n /** @type {Record<string, string>} */\n const normal = {}\n\n for (const definition of definitions) {\n Object.assign(property, definition.property)\n Object.assign(normal, definition.normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * Get the cleaned case insensitive form of an attribute or property.\n *\n * @param {string} value\n * An attribute-like or property-like name.\n * @returns {string}\n * Value that can be used to look up the properly cased property on a\n * `Schema`.\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","/**\n * @import {Info as InfoType} from 'property-information'\n */\n\n/** @type {InfoType} */\nexport class Info {\n /**\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @returns\n * Info.\n */\n constructor(property, attribute) {\n this.attribute = attribute\n this.property = property\n }\n}\n\nInfo.prototype.attribute = ''\nInfo.prototype.booleanish = false\nInfo.prototype.boolean = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.defined = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.number = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.property = ''\nInfo.prototype.spaceSeparated = false\nInfo.prototype.space = undefined\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","/**\n * @import {Space} from 'property-information'\n */\n\nimport {Info} from './info.js'\nimport * as types from './types.js'\n\nconst checks = /** @type {ReadonlyArray<keyof typeof types>} */ (\n Object.keys(types)\n)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @param {number | null | undefined} [mask]\n * Mask.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Info.\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @template {keyof DefinedInfo} Key\n * Key type.\n * @param {DefinedInfo} values\n * Info.\n * @param {Key} key\n * Key.\n * @param {DefinedInfo[Key]} value\n * Value.\n * @returns {undefined}\n * Nothing.\n */\nfunction mark(values, key, value) {\n if (value) {\n values[key] = value\n }\n}\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\n/**\n * @typedef Definition\n * Definition of a schema.\n * @property {Record<string, string> | undefined} [attributes]\n * Normalzed names to special attribute case.\n * @property {ReadonlyArray<string> | undefined} [mustUseProperty]\n * Normalized names that must be set as properties.\n * @property {Record<string, number | null>} properties\n * Property names to their types.\n * @property {Space | undefined} [space]\n * Space.\n * @property {Transform} transform\n * Transform a property name.\n */\n\n/**\n * @callback Transform\n * Transform.\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Attribute.\n */\n\nimport {normalize} from '../normalize.js'\nimport {DefinedInfo} from './defined-info.js'\nimport {Schema} from './schema.js'\n\n/**\n * @param {Definition} definition\n * Definition.\n * @returns {Schema}\n * Schema.\n */\nexport function create(definition) {\n /** @type {Record<string, Info>} */\n const properties = {}\n /** @type {Record<string, string>} */\n const normals = {}\n\n for (const [property, value] of Object.entries(definition.properties)) {\n const info = new DefinedInfo(\n property,\n definition.transform(definition.attributes || {}, property),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(property)\n ) {\n info.mustUseProperty = true\n }\n\n properties[property] = info\n\n normals[normalize(property)] = property\n normals[normalize(info.attribute)] = property\n }\n\n return new Schema(properties, normals, definition.space)\n}\n","import {create} from './util/create.js'\nimport {booleanish, number, spaceSeparated} from './util/types.js'\n\nexport const aria = create({\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n },\n transform(_, property) {\n return property === 'role'\n ? property\n : 'aria-' + property.slice(4).toLowerCase()\n }\n})\n","/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} attribute\n * Attribute.\n * @returns {string}\n * Transformed attribute.\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Transformed property.\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n booleanish,\n boolean,\n commaSeparated,\n number,\n overloadedBoolean,\n spaceSeparated\n} from './util/types.js'\n\nexport const html = create({\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alpha: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n closedBy: null,\n colorSpace: null,\n cols: number,\n colSpan: number,\n command: null,\n commandFor: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: overloadedBoolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootCustomElementRegistry: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shadowRootSerializable: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n credentialless: boolean,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n exportParts: commaSeparated,\n part: spaceSeparated,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n },\n space: 'html',\n transform: caseInsensitiveTransform\n})\n","import {caseSensitiveTransform} from './util/case-sensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n boolean,\n commaOrSpaceSeparated,\n commaSeparated,\n number,\n spaceSeparated\n} from './util/types.js'\n\nexport const svg = create({\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n maskType: 'mask-type',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n transformOrigin: 'transform-origin',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskType: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n transformOrigin: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n },\n space: 'svg',\n transform: caseSensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n },\n space: 'xlink',\n transform(_, property) {\n return 'xlink:' + property.slice(5).toLowerCase()\n }\n})\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n properties: {xmlnsXLink: null, xmlns: null},\n space: 'xmlns',\n transform: caseInsensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n properties: {xmlBase: null, xmlLang: null, xmlSpace: null},\n space: 'xml',\n transform(_, property) {\n return 'xml:' + property.slice(3).toLowerCase()\n }\n})\n","/**\n * @import {Schema} from 'property-information'\n */\n\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\nimport {normalize} from './normalize.js'\n\nconst cap = /[A-Z]/g\nconst dash = /-[a-z]/g\nconst valid = /^data[-\\w.:]+$/i\n\n/**\n * Look up info on a property.\n *\n * In most cases the given `schema` contains info on the property.\n * All standard,\n * most legacy,\n * and some non-standard properties are supported.\n * For these cases,\n * the returned `Info` has hints about the value of the property.\n *\n * `name` can also be a valid data attribute or property,\n * in which case an `Info` object with the correctly cased `attribute` and\n * `property` is returned.\n *\n * `name` can be an unknown attribute,\n * in which case an `Info` object with `attribute` and `property` set to the\n * given name is returned.\n * It is not recommended to provide unsupported legacy or recently specced\n * properties.\n *\n *\n * @param {Schema} schema\n * Schema;\n * either the `html` or `svg` export.\n * @param {string} value\n * An attribute-like or property-like name;\n * it will be passed through `normalize` to hopefully find the correct info.\n * @returns {Info}\n * Info.\n */\nexport function find(schema, value) {\n const normal = normalize(value)\n let property = value\n let Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n // Turn it into a property.\n const rest = value.slice(5).replace(dash, camelcase)\n property = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n } else {\n // Turn it into an attribute.\n const rest = value.slice(4)\n\n if (!dash.test(rest)) {\n let dashes = rest.replace(cap, kebab)\n\n if (dashes.charAt(0) !== '-') {\n dashes = '-' + dashes\n }\n\n value = 'data' + dashes\n }\n }\n\n Type = DefinedInfo\n }\n\n return new Type(property, value)\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Kebab.\n */\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Camel.\n */\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n","// Note: types exposed from `index.d.ts`.\nimport {merge} from './lib/util/merge.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\nimport {xlink} from './lib/xlink.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {xml} from './lib/xml.js'\n\nexport {hastToReact} from './lib/hast-to-react.js'\n\nexport const html = merge([aria, htmlBase, xlink, xmlns, xml], 'html')\n\nexport {find} from './lib/find.js'\nexport {normalize} from './lib/normalize.js'\n\nexport const svg = merge([aria, svgBase, xlink, xmlns, xml], 'svg')\n","/**\n * @callback Handler\n * Handle a value, with a certain ID field set to a certain value.\n * The ID field is passed to `zwitch`, and it’s value is this function’s\n * place on the `handlers` record.\n * @param {...any} parameters\n * Arbitrary parameters passed to the zwitch.\n * The first will be an object with a certain ID field set to a certain value.\n * @returns {any}\n * Anything!\n */\n\n/**\n * @callback UnknownHandler\n * Handle values that do have a certain ID field, but it’s set to a value\n * that is not listed in the `handlers` record.\n * @param {unknown} value\n * An object with a certain ID field set to an unknown value.\n * @param {...any} rest\n * Arbitrary parameters passed to the zwitch.\n * @returns {any}\n * Anything!\n */\n\n/**\n * @callback InvalidHandler\n * Handle values that do not have a certain ID field.\n * @param {unknown} value\n * Any unknown value.\n * @param {...any} rest\n * Arbitrary parameters passed to the zwitch.\n * @returns {void|null|undefined|never}\n * This should crash or return nothing.\n */\n\n/**\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @typedef Options\n * Configuration (required).\n * @property {Invalid} [invalid]\n * Handler to use for invalid values.\n * @property {Unknown} [unknown]\n * Handler to use for unknown values.\n * @property {Handlers} [handlers]\n * Handlers to use.\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Handle values based on a field.\n *\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @param {string} key\n * Field to switch on.\n * @param {Options<Invalid, Unknown, Handlers>} [options]\n * Configuration (required).\n * @returns {{unknown: Unknown, invalid: Invalid, handlers: Handlers, (...parameters: Parameters<Handlers[keyof Handlers]>): ReturnType<Handlers[keyof Handlers]>, (...parameters: Parameters<Unknown>): ReturnType<Unknown>}}\n */\nexport function zwitch(key, options) {\n const settings = options || {}\n\n /**\n * Handle one value.\n *\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 * @this {unknown}\n * Any context object.\n * @param {unknown} [value]\n * Any value.\n * @param {...unknown} parameters\n * Arbitrary parameters passed to the zwitch.\n * @property {Handler} invalid\n * Handle for values that do not have a certain ID field.\n * @property {Handler} unknown\n * Handle values that do have a certain ID field, but it’s set to a value\n * that is not listed in the `handlers` record.\n * @property {Handlers} handlers\n * Record of handlers.\n * @returns {unknown}\n * Anything.\n */\n function one(value, ...parameters) {\n /** @type {Handler|undefined} */\n let fn = one.invalid\n const handlers = one.handlers\n\n if (value && own.call(value, key)) {\n // @ts-expect-error Indexable.\n const id = String(value[key])\n // @ts-expect-error Indexable.\n fn = own.call(handlers, id) ? handlers[id] : one.unknown\n }\n\n if (fn) {\n return fn.call(this, value, ...parameters)\n }\n }\n\n one.handlers = settings.handlers || {}\n one.invalid = settings.invalid\n one.unknown = settings.unknown\n\n // @ts-expect-error: matches!\n return one\n}\n","/**\n * @typedef CoreOptions\n * @property {ReadonlyArray<string>} [subset=[]]\n * Whether to only escape the given subset of characters.\n * @property {boolean} [escapeOnly=false]\n * Whether to only escape possibly dangerous characters.\n * Those characters are `\"`, `&`, `'`, `<`, `>`, and `` ` ``.\n *\n * @typedef FormatOptions\n * @property {(code: number, next: number, options: CoreWithFormatOptions) => string} format\n * Format strategy.\n *\n * @typedef {CoreOptions & FormatOptions & import('./util/format-smart.js').FormatSmartOptions} CoreWithFormatOptions\n */\n\nconst defaultSubsetRegex = /[\"&'<>`]/g\nconst surrogatePairsRegex = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g\nconst controlCharactersRegex =\n // eslint-disable-next-line no-control-regex, unicorn/no-hex-escape\n /[\\x01-\\t\\v\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g\nconst regexEscapeRegex = /[|\\\\{}()[\\]^$+*?.]/g\n\n/** @type {WeakMap<ReadonlyArray<string>, RegExp>} */\nconst subsetToRegexCache = new WeakMap()\n\n/**\n * Encode certain characters in `value`.\n *\n * @param {string} value\n * @param {CoreWithFormatOptions} options\n * @returns {string}\n */\nexport function core(value, options) {\n value = value.replace(\n options.subset\n ? charactersToExpressionCached(options.subset)\n : defaultSubsetRegex,\n basic\n )\n\n if (options.subset || options.escapeOnly) {\n return value\n }\n\n return (\n value\n // Surrogate pairs.\n .replace(surrogatePairsRegex, surrogate)\n // BMP control characters (C0 except for LF, CR, SP; DEL; and some more\n // non-ASCII ones).\n .replace(controlCharactersRegex, basic)\n )\n\n /**\n * @param {string} pair\n * @param {number} index\n * @param {string} all\n */\n function surrogate(pair, index, all) {\n return options.format(\n (pair.charCodeAt(0) - 0xd800) * 0x400 +\n pair.charCodeAt(1) -\n 0xdc00 +\n 0x10000,\n all.charCodeAt(index + 2),\n options\n )\n }\n\n /**\n * @param {string} character\n * @param {number} index\n * @param {string} all\n */\n function basic(character, index, all) {\n return options.format(\n character.charCodeAt(0),\n all.charCodeAt(index + 1),\n options\n )\n }\n}\n\n/**\n * A wrapper function that caches the result of `charactersToExpression` with a WeakMap.\n * This can improve performance when tooling calls `charactersToExpression` repeatedly\n * with the same subset.\n *\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpressionCached(subset) {\n let cached = subsetToRegexCache.get(subset)\n\n if (!cached) {\n cached = charactersToExpression(subset)\n subsetToRegexCache.set(subset, cached)\n }\n\n return cached\n}\n\n/**\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpression(subset) {\n /** @type {Array<string>} */\n const groups = []\n let index = -1\n\n while (++index < subset.length) {\n groups.push(subset[index].replace(regexEscapeRegex, '\\\\$&'))\n }\n\n return new RegExp('(?:' + groups.join('|') + ')', 'g')\n}\n","const hexadecimalRegex = /[\\dA-Fa-f]/\n\n/**\n * Configurable ways to encode characters as hexadecimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toHexadecimal(code, next, omit) {\n const value = '&#x' + code.toString(16).toUpperCase()\n return omit && next && !hexadecimalRegex.test(String.fromCharCode(next))\n ? value\n : value + ';'\n}\n","const decimalRegex = /\\d/\n\n/**\n * Configurable ways to encode characters as decimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toDecimal(code, next, omit) {\n const value = '&#' + String(code)\n return omit && next && !decimalRegex.test(String.fromCharCode(next))\n ? value\n : value + ';'\n}\n","/**\n * List of legacy HTML named character references that don’t need a trailing semicolon.\n *\n * @type {Array<string>}\n */\nexport const characterEntitiesLegacy = [\n 'AElig',\n 'AMP',\n 'Aacute',\n 'Acirc',\n 'Agrave',\n 'Aring',\n 'Atilde',\n 'Auml',\n 'COPY',\n 'Ccedil',\n 'ETH',\n 'Eacute',\n 'Ecirc',\n 'Egrave',\n 'Euml',\n 'GT',\n 'Iacute',\n 'Icirc',\n 'Igrave',\n 'Iuml',\n 'LT',\n 'Ntilde',\n 'Oacute',\n 'Ocirc',\n 'Ograve',\n 'Oslash',\n 'Otilde',\n 'Ouml',\n 'QUOT',\n 'REG',\n 'THORN',\n 'Uacute',\n 'Ucirc',\n 'Ugrave',\n 'Uuml',\n 'Yacute',\n 'aacute',\n 'acirc',\n 'acute',\n 'aelig',\n 'agrave',\n 'amp',\n 'aring',\n 'atilde',\n 'auml',\n 'brvbar',\n 'ccedil',\n 'cedil',\n 'cent',\n 'copy',\n 'curren',\n 'deg',\n 'divide',\n 'eacute',\n 'ecirc',\n 'egrave',\n 'eth',\n 'euml',\n 'frac12',\n 'frac14',\n 'frac34',\n 'gt',\n 'iacute',\n 'icirc',\n 'iexcl',\n 'igrave',\n 'iquest',\n 'iuml',\n 'laquo',\n 'lt',\n 'macr',\n 'micro',\n 'middot',\n 'nbsp',\n 'not',\n 'ntilde',\n 'oacute',\n 'ocirc',\n 'ograve',\n 'ordf',\n 'ordm',\n 'oslash',\n 'otilde',\n 'ouml',\n 'para',\n 'plusmn',\n 'pound',\n 'quot',\n 'raquo',\n 'reg',\n 'sect',\n 'shy',\n 'sup1',\n 'sup2',\n 'sup3',\n 'szlig',\n 'thorn',\n 'times',\n 'uacute',\n 'ucirc',\n 'ugrave',\n 'uml',\n 'uuml',\n 'yacute',\n 'yen',\n 'yuml'\n]\n","/**\n * Map of named character references from HTML 4.\n *\n * @type {Record<string, string>}\n */\nexport const characterEntitiesHtml4 = {\n nbsp: ' ',\n iexcl: '¡',\n cent: '¢',\n pound: '£',\n curren: '¤',\n yen: '¥',\n brvbar: '¦',\n sect: '§',\n uml: '¨',\n copy: '©',\n ordf: 'ª',\n laquo: '«',\n not: '¬',\n shy: '­',\n reg: '®',\n macr: '¯',\n deg: '°',\n plusmn: '±',\n sup2: '²',\n sup3: '³',\n acute: '´',\n micro: 'µ',\n para: '¶',\n middot: '·',\n cedil: '¸',\n sup1: '¹',\n ordm: 'º',\n raquo: '»',\n frac14: '¼',\n frac12: '½',\n frac34: '¾',\n iquest: '¿',\n Agrave: 'À',\n Aacute: 'Á',\n Acirc: 'Â',\n Atilde: 'Ã',\n Auml: 'Ä',\n Aring: 'Å',\n AElig: 'Æ',\n Ccedil: 'Ç',\n Egrave: 'È',\n Eacute: 'É',\n Ecirc: 'Ê',\n Euml: 'Ë',\n Igrave: 'Ì',\n Iacute: 'Í',\n Icirc: 'Î',\n Iuml: 'Ï',\n ETH: 'Ð',\n Ntilde: 'Ñ',\n Ograve: 'Ò',\n Oacute: 'Ó',\n Ocirc: 'Ô',\n Otilde: 'Õ',\n Ouml: 'Ö',\n times: '×',\n Oslash: 'Ø',\n Ugrave: 'Ù',\n Uacute: 'Ú',\n Ucirc: 'Û',\n Uuml: 'Ü',\n Yacute: 'Ý',\n THORN: 'Þ',\n szlig: 'ß',\n agrave: 'à',\n aacute: 'á',\n acirc: 'â',\n atilde: 'ã',\n auml: 'ä',\n aring: 'å',\n aelig: 'æ',\n ccedil: 'ç',\n egrave: 'è',\n eacute: 'é',\n ecirc: 'ê',\n euml: 'ë',\n igrave: 'ì',\n iacute: 'í',\n icirc: 'î',\n iuml: 'ï',\n eth: 'ð',\n ntilde: 'ñ',\n ograve: 'ò',\n oacute: 'ó',\n ocirc: 'ô',\n otilde: 'õ',\n ouml: 'ö',\n divide: '÷',\n oslash: 'ø',\n ugrave: 'ù',\n uacute: 'ú',\n ucirc: 'û',\n uuml: 'ü',\n yacute: 'ý',\n thorn: 'þ',\n yuml: 'ÿ',\n fnof: 'ƒ',\n Alpha: 'Α',\n Beta: 'Β',\n Gamma: 'Γ',\n Delta: 'Δ',\n Epsilon: 'Ε',\n Zeta: 'Ζ',\n Eta: 'Η',\n Theta: 'Θ',\n Iota: 'Ι',\n Kappa: 'Κ',\n Lambda: 'Λ',\n Mu: 'Μ',\n Nu: 'Ν',\n Xi: 'Ξ',\n Omicron: 'Ο',\n Pi: 'Π',\n Rho: 'Ρ',\n Sigma: 'Σ',\n Tau: 'Τ',\n Upsilon: 'Υ',\n Phi: 'Φ',\n Chi: 'Χ',\n Psi: 'Ψ',\n Omega: 'Ω',\n alpha: 'α',\n beta: 'β',\n gamma: 'γ',\n delta: 'δ',\n epsilon: 'ε',\n zeta: 'ζ',\n eta: 'η',\n theta: 'θ',\n iota: 'ι',\n kappa: 'κ',\n lambda: 'λ',\n mu: 'μ',\n nu: 'ν',\n xi: 'ξ',\n omicron: 'ο',\n pi: 'π',\n rho: 'ρ',\n sigmaf: 'ς',\n sigma: 'σ',\n tau: 'τ',\n upsilon: 'υ',\n phi: 'φ',\n chi: 'χ',\n psi: 'ψ',\n omega: 'ω',\n thetasym: 'ϑ',\n upsih: 'ϒ',\n piv: 'ϖ',\n bull: '•',\n hellip: '…',\n prime: '′',\n Prime: '″',\n oline: '‾',\n frasl: '⁄',\n weierp: '℘',\n image: 'ℑ',\n real: 'ℜ',\n trade: '™',\n alefsym: 'ℵ',\n larr: '←',\n uarr: '↑',\n rarr: '→',\n darr: '↓',\n harr: '↔',\n crarr: '↵',\n lArr: '⇐',\n uArr: '⇑',\n rArr: '⇒',\n dArr: '⇓',\n hArr: '⇔',\n forall: '∀',\n part: '∂',\n exist: '∃',\n empty: '∅',\n nabla: '∇',\n isin: '∈',\n notin: '∉',\n ni: '∋',\n prod: '∏',\n sum: '∑',\n minus: '−',\n lowast: '∗',\n radic: '√',\n prop: '∝',\n infin: '∞',\n ang: '∠',\n and: '∧',\n or: '∨',\n cap: '∩',\n cup: '∪',\n int: '∫',\n there4: '∴',\n sim: '∼',\n cong: '≅',\n asymp: '≈',\n ne: '≠',\n equiv: '≡',\n le: '≤',\n ge: '≥',\n sub: '⊂',\n sup: '⊃',\n nsub: '⊄',\n sube: '⊆',\n supe: '⊇',\n oplus: '⊕',\n otimes: '⊗',\n perp: '⊥',\n sdot: '⋅',\n lceil: '⌈',\n rceil: '⌉',\n lfloor: '⌊',\n rfloor: '⌋',\n lang: '〈',\n rang: '〉',\n loz: '◊',\n spades: '♠',\n clubs: '♣',\n hearts: '♥',\n diams: '♦',\n quot: '\"',\n amp: '&',\n lt: '<',\n gt: '>',\n OElig: 'Œ',\n oelig: 'œ',\n Scaron: 'Š',\n scaron: 'š',\n Yuml: 'Ÿ',\n circ: 'ˆ',\n tilde: '˜',\n ensp: ' ',\n emsp: ' ',\n thinsp: ' ',\n zwnj: '‌',\n zwj: '‍',\n lrm: '‎',\n rlm: '‏',\n ndash: '–',\n mdash: '—',\n lsquo: '‘',\n rsquo: '’',\n sbquo: '‚',\n ldquo: '“',\n rdquo: '”',\n bdquo: '„',\n dagger: '†',\n Dagger: '‡',\n permil: '‰',\n lsaquo: '‹',\n rsaquo: '›',\n euro: '€'\n}\n","/**\n * List of legacy (that don’t need a trailing `;`) named references which could,\n * depending on what follows them, turn into a different meaning\n *\n * @type {Array<string>}\n */\nexport const dangerous = [\n 'cent',\n 'copy',\n 'divide',\n 'gt',\n 'lt',\n 'not',\n 'para',\n 'times'\n]\n","import {characterEntitiesLegacy} from 'character-entities-legacy'\nimport {characterEntitiesHtml4} from 'character-entities-html4'\nimport {dangerous} from '../constant/dangerous.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * `characterEntitiesHtml4` but inverted.\n *\n * @type {Record<string, string>}\n */\nconst characters = {}\n\n/** @type {string} */\nlet key\n\nfor (key in characterEntitiesHtml4) {\n if (own.call(characterEntitiesHtml4, key)) {\n characters[characterEntitiesHtml4[key]] = key\n }\n}\n\nconst notAlphanumericRegex = /[^\\dA-Za-z]/\n\n/**\n * Configurable ways to encode characters as named references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @param {boolean|undefined} attribute\n * @returns {string}\n */\nexport function toNamed(code, next, omit, attribute) {\n const character = String.fromCharCode(code)\n\n if (own.call(characters, character)) {\n const name = characters[character]\n const value = '&' + name\n\n if (\n omit &&\n characterEntitiesLegacy.includes(name) &&\n !dangerous.includes(name) &&\n (!attribute ||\n (next &&\n next !== 61 /* `=` */ &&\n notAlphanumericRegex.test(String.fromCharCode(next))))\n ) {\n return value\n }\n\n return value + ';'\n }\n\n return ''\n}\n","/**\n * @typedef FormatSmartOptions\n * @property {boolean} [useNamedReferences=false]\n * Prefer named character references (`&amp;`) where possible.\n * @property {boolean} [useShortestReferences=false]\n * Prefer the shortest possible reference, if that results in less bytes.\n * **Note**: `useNamedReferences` can be omitted when using `useShortestReferences`.\n * @property {boolean} [omitOptionalSemicolons=false]\n * Whether to omit semicolons when possible.\n * **Note**: This creates what HTML calls “parse errors” but is otherwise still valid HTML — don’t use this except when building a minifier.\n * Omitting semicolons is possible for certain named and numeric references in some cases.\n * @property {boolean} [attribute=false]\n * Create character references which don’t fail in attributes.\n * **Note**: `attribute` only applies when operating dangerously with\n * `omitOptionalSemicolons: true`.\n */\n\nimport {toHexadecimal} from './to-hexadecimal.js'\nimport {toDecimal} from './to-decimal.js'\nimport {toNamed} from './to-named.js'\n\n/**\n * Configurable ways to encode a character yielding pretty or small results.\n *\n * @param {number} code\n * @param {number} next\n * @param {FormatSmartOptions} options\n * @returns {string}\n */\nexport function formatSmart(code, next, options) {\n let numeric = toHexadecimal(code, next, options.omitOptionalSemicolons)\n /** @type {string|undefined} */\n let named\n\n if (options.useNamedReferences || options.useShortestReferences) {\n named = toNamed(\n code,\n next,\n options.omitOptionalSemicolons,\n options.attribute\n )\n }\n\n // Use the shortest numeric reference when requested.\n // A simple algorithm would use decimal for all code points under 100, as\n // those are shorter than hexadecimal:\n //\n // * `&#99;` vs `&#x63;` (decimal shorter)\n // * `&#100;` vs `&#x64;` (equal)\n //\n // However, because we take `next` into consideration when `omit` is used,\n // And it would be possible that decimals are shorter on bigger values as\n // well if `next` is hexadecimal but not decimal, we instead compare both.\n if (\n (options.useShortestReferences || !named) &&\n options.useShortestReferences\n ) {\n const decimal = toDecimal(code, next, options.omitOptionalSemicolons)\n\n if (decimal.length < numeric.length) {\n numeric = decimal\n }\n }\n\n return named &&\n (!options.useShortestReferences || named.length < numeric.length)\n ? named\n : numeric\n}\n","/**\n * @typedef {import('./core.js').CoreOptions & import('./util/format-smart.js').FormatSmartOptions} Options\n * @typedef {import('./core.js').CoreOptions} LightOptions\n */\n\nimport {core} from './core.js'\nimport {formatSmart} from './util/format-smart.js'\nimport {formatBasic} from './util/format-basic.js'\n\n/**\n * Encode special characters in `value`.\n *\n * @param {string} value\n * Value to encode.\n * @param {Options} [options]\n * Configuration.\n * @returns {string}\n * Encoded value.\n */\nexport function stringifyEntities(value, options) {\n return core(value, Object.assign({format: formatSmart}, options))\n}\n\n/**\n * Encode special characters in `value` as hexadecimals.\n *\n * @param {string} value\n * Value to encode.\n * @param {LightOptions} [options]\n * Configuration.\n * @returns {string}\n * Encoded value.\n */\nexport function stringifyEntitiesLight(value, options) {\n return core(value, Object.assign({format: formatBasic}, options))\n}\n","/**\n * @import {Comment, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\nconst htmlCommentRegex = /^>|^->|<!--|-->|--!>|<!-$/g\n\n// Declare arrays as variables so it can be cached by `stringifyEntities`\nconst bogusCommentEntitySubset = ['>']\nconst commentEntitySubset = ['<', '>']\n\n/**\n * Serialize a comment.\n *\n * @param {Comment} node\n * Node to handle.\n * @param {number | undefined} _1\n * Index of `node` in `parent.\n * @param {Parents | undefined} _2\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function comment(node, _1, _2, state) {\n // See: <https://html.spec.whatwg.org/multipage/syntax.html#comments>\n return state.settings.bogusComments\n ? '<?' +\n stringifyEntities(\n node.value,\n Object.assign({}, state.settings.characterReferences, {\n subset: bogusCommentEntitySubset\n })\n ) +\n '>'\n : '<!--' + node.value.replace(htmlCommentRegex, encode) + '-->'\n\n /**\n * @param {string} $0\n */\n function encode($0) {\n return stringifyEntities(\n $0,\n Object.assign({}, state.settings.characterReferences, {\n subset: commentEntitySubset\n })\n )\n }\n}\n","/**\n * @import {Doctype, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\n/**\n * Serialize a doctype.\n *\n * @param {Doctype} _1\n * Node to handle.\n * @param {number | undefined} _2\n * Index of `node` in `parent.\n * @param {Parents | undefined} _3\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function doctype(_1, _2, _3, state) {\n return (\n '<!' +\n (state.settings.upperDoctype ? 'DOCTYPE' : 'doctype') +\n (state.settings.tightDoctype ? '' : ' ') +\n 'html>'\n )\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 for `stringify`.\n * @property {boolean} [padLeft=true]\n * Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n * Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n * Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n * Comma-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n /** @type {Array<string>} */\n const tokens = []\n const input = String(value || '')\n let index = input.indexOf(',')\n let start = 0\n /** @type {boolean} */\n let end = false\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n const token = input.slice(start, index).trim()\n\n if (token || !end) {\n tokens.push(token)\n }\n\n start = index + 1\n index = input.indexOf(',', start)\n }\n\n return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @param {Options} [options]\n * Configuration for `stringify` (optional).\n * @returns {string}\n * Comma-separated tokens.\n */\nexport function stringify(values, options) {\n const settings = options || {}\n\n // Ensure the last empty entry is seen.\n const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n return input\n .join(\n (settings.padRight ? ' ' : '') +\n ',' +\n (settings.padLeft === false ? '' : ' ')\n )\n .trim()\n}\n","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n * Space-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n const input = String(value || '').trim()\n return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @returns {string}\n * Space-separated tokens.\n */\nexport function stringify(values) {\n return values.join(' ').trim()\n}\n","/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See <https://infra.spec.whatwg.org/#ascii-whitespace>.\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n * Thing to check (`Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n * whose `value` field is checked.\n */\nexport function whitespace(thing) {\n return typeof thing === 'object'\n ? thing.type === 'text'\n ? empty(thing.value)\n : false\n : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n return value.replace(re, '') === ''\n}\n","/**\n * @import {Parents, RootContent} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\n\nexport const siblingAfter = siblings(1)\nexport const siblingBefore = siblings(-1)\n\n/** @type {Array<RootContent>} */\nconst emptyChildren = []\n\n/**\n * Factory to check siblings in a direction.\n *\n * @param {number} increment\n */\nfunction siblings(increment) {\n return sibling\n\n /**\n * Find applicable siblings in a direction.\n *\n * @template {Parents} Parent\n * Parent type.\n * @param {Parent | undefined} parent\n * Parent.\n * @param {number | undefined} index\n * Index of child in `parent`.\n * @param {boolean | undefined} [includeWhitespace=false]\n * Whether to include whitespace (default: `false`).\n * @returns {Parent extends {children: Array<infer Child>} ? Child | undefined : never}\n * Child of parent.\n */\n function sibling(parent, index, includeWhitespace) {\n const siblings = parent ? parent.children : emptyChildren\n let offset = (index || 0) + increment\n let next = siblings[offset]\n\n if (!includeWhitespace) {\n while (next && whitespace(next)) {\n offset += increment\n next = siblings[offset]\n }\n }\n\n // @ts-expect-error: it’s a correct child.\n return next\n }\n}\n","/**\n * @import {Element, Parents} from 'hast'\n */\n\n/**\n * @callback OmitHandle\n * Check if a tag can be omitted.\n * @param {Element} element\n * Element to check.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether to omit a tag.\n *\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Factory to check if a given node can have a tag omitted.\n *\n * @param {Record<string, OmitHandle>} handlers\n * Omission handlers, where each key is a tag name, and each value is the\n * corresponding handler.\n * @returns {OmitHandle}\n * Whether to omit a tag of an element.\n */\nexport function omission(handlers) {\n return omit\n\n /**\n * Check if a given node can have a tag omitted.\n *\n * @type {OmitHandle}\n */\n function omit(node, index, parent) {\n return (\n own.call(handlers, node.tagName) &&\n handlers[node.tagName](node, index, parent)\n )\n }\n}\n","/**\n * @import {Element, Parents} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingAfter} from './util/siblings.js'\nimport {omission} from './omission.js'\n\nexport const closing = omission({\n body,\n caption: headOrColgroupOrCaption,\n colgroup: headOrColgroupOrCaption,\n dd,\n dt,\n head: headOrColgroupOrCaption,\n html,\n li,\n optgroup,\n option,\n p,\n rp: rubyElement,\n rt: rubyElement,\n tbody,\n td: cells,\n tfoot,\n th: cells,\n thead,\n tr\n})\n\n/**\n * Macro for `</head>`, `</colgroup>`, and `</caption>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction headOrColgroupOrCaption(_, index, parent) {\n const next = siblingAfter(parent, index, true)\n return (\n !next ||\n (next.type !== 'comment' &&\n !(next.type === 'text' && whitespace(next.value.charAt(0))))\n )\n}\n\n/**\n * Whether to omit `</html>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction html(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</body>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction body(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</p>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction p(_, index, parent) {\n const next = siblingAfter(parent, index)\n return next\n ? next.type === 'element' &&\n (next.tagName === 'address' ||\n next.tagName === 'article' ||\n next.tagName === 'aside' ||\n next.tagName === 'blockquote' ||\n next.tagName === 'details' ||\n next.tagName === 'div' ||\n next.tagName === 'dl' ||\n next.tagName === 'fieldset' ||\n next.tagName === 'figcaption' ||\n next.tagName === 'figure' ||\n next.tagName === 'footer' ||\n next.tagName === 'form' ||\n next.tagName === 'h1' ||\n next.tagName === 'h2' ||\n next.tagName === 'h3' ||\n next.tagName === 'h4' ||\n next.tagName === 'h5' ||\n next.tagName === 'h6' ||\n next.tagName === 'header' ||\n next.tagName === 'hgroup' ||\n next.tagName === 'hr' ||\n next.tagName === 'main' ||\n next.tagName === 'menu' ||\n next.tagName === 'nav' ||\n next.tagName === 'ol' ||\n next.tagName === 'p' ||\n next.tagName === 'pre' ||\n next.tagName === 'section' ||\n next.tagName === 'table' ||\n next.tagName === 'ul')\n : !parent ||\n // Confusing parent.\n !(\n parent.type === 'element' &&\n (parent.tagName === 'a' ||\n parent.tagName === 'audio' ||\n parent.tagName === 'del' ||\n parent.tagName === 'ins' ||\n parent.tagName === 'map' ||\n parent.tagName === 'noscript' ||\n parent.tagName === 'video')\n )\n}\n\n/**\n * Whether to omit `</li>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction li(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'li')\n}\n\n/**\n * Whether to omit `</dt>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction dt(_, index, parent) {\n const next = siblingAfter(parent, index)\n return Boolean(\n next &&\n next.type === 'element' &&\n (next.tagName === 'dt' || next.tagName === 'dd')\n )\n}\n\n/**\n * Whether to omit `</dd>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction dd(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'dt' || next.tagName === 'dd'))\n )\n}\n\n/**\n * Whether to omit `</rt>` or `</rp>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction rubyElement(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'rp' || next.tagName === 'rt'))\n )\n}\n\n/**\n * Whether to omit `</optgroup>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction optgroup(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'optgroup')\n}\n\n/**\n * Whether to omit `</option>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction option(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'option' || next.tagName === 'optgroup'))\n )\n}\n\n/**\n * Whether to omit `</thead>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction thead(_, index, parent) {\n const next = siblingAfter(parent, index)\n return Boolean(\n next &&\n next.type === 'element' &&\n (next.tagName === 'tbody' || next.tagName === 'tfoot')\n )\n}\n\n/**\n * Whether to omit `</tbody>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tbody(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'tbody' || next.tagName === 'tfoot'))\n )\n}\n\n/**\n * Whether to omit `</tfoot>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tfoot(_, index, parent) {\n return !siblingAfter(parent, index)\n}\n\n/**\n * Whether to omit `</tr>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tr(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'tr')\n}\n\n/**\n * Whether to omit `</td>` or `</th>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction cells(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'td' || next.tagName === 'th'))\n )\n}\n","/**\n * @import {Element, Parents} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingAfter, siblingBefore} from './util/siblings.js'\nimport {closing} from './closing.js'\nimport {omission} from './omission.js'\n\nexport const opening = omission({\n body,\n colgroup,\n head,\n html,\n tbody\n})\n\n/**\n * Whether to omit `<html>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction html(node) {\n const head = siblingAfter(node, -1)\n return !head || head.type !== 'comment'\n}\n\n/**\n * Whether to omit `<head>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction head(node) {\n /** @type {Set<string>} */\n const seen = new Set()\n\n // Whether `srcdoc` or not,\n // make sure the content model at least doesn’t have too many `base`s/`title`s.\n for (const child of node.children) {\n if (\n child.type === 'element' &&\n (child.tagName === 'base' || child.tagName === 'title')\n ) {\n if (seen.has(child.tagName)) return false\n seen.add(child.tagName)\n }\n }\n\n // “May be omitted if the element is empty,\n // or if the first thing inside the head element is an element.”\n const child = node.children[0]\n return !child || child.type === 'element'\n}\n\n/**\n * Whether to omit `<body>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction body(node) {\n const head = siblingAfter(node, -1, true)\n\n return (\n !head ||\n (head.type !== 'comment' &&\n !(head.type === 'text' && whitespace(head.value.charAt(0))) &&\n !(\n head.type === 'element' &&\n (head.tagName === 'meta' ||\n head.tagName === 'link' ||\n head.tagName === 'script' ||\n head.tagName === 'style' ||\n head.tagName === 'template')\n ))\n )\n}\n\n/**\n * Whether to omit `<colgroup>`.\n * The spec describes some logic for the opening tag, but it’s easier to\n * implement in the closing tag, to the same effect, so we handle it there\n * instead.\n *\n * @param {Element} node\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction colgroup(node, index, parent) {\n const previous = siblingBefore(parent, index)\n const head = siblingAfter(node, -1, true)\n\n // Previous colgroup was already omitted.\n if (\n parent &&\n previous &&\n previous.type === 'element' &&\n previous.tagName === 'colgroup' &&\n closing(previous, parent.children.indexOf(previous), parent)\n ) {\n return false\n }\n\n return Boolean(head && head.type === 'element' && head.tagName === 'col')\n}\n\n/**\n * Whether to omit `<tbody>`.\n *\n * @param {Element} node\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction tbody(node, index, parent) {\n const previous = siblingBefore(parent, index)\n const head = siblingAfter(node, -1)\n\n // Previous table section was already omitted.\n if (\n parent &&\n previous &&\n previous.type === 'element' &&\n (previous.tagName === 'thead' || previous.tagName === 'tbody') &&\n closing(previous, parent.children.indexOf(previous), parent)\n ) {\n return false\n }\n\n return Boolean(head && head.type === 'element' && head.tagName === 'tr')\n}\n","/**\n * @import {Element, Parents, Properties} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {ccount} from 'ccount'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {find, svg} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringifyEntities} from 'stringify-entities'\nimport {closing} from '../omission/closing.js'\nimport {opening} from '../omission/opening.js'\n\n/**\n * Maps of subsets.\n *\n * Each value is a matrix of tuples.\n * The value at `0` causes parse errors, the value at `1` is valid.\n * Of both, the value at `0` is unsafe, and the value at `1` is safe.\n *\n * @type {Record<'double' | 'name' | 'single' | 'unquoted', Array<[Array<string>, Array<string>]>>}\n */\nconst constants = {\n // See: <https://html.spec.whatwg.org/#attribute-name-state>.\n name: [\n ['\\t\\n\\f\\r &/=>'.split(''), '\\t\\n\\f\\r \"&\\'/=>`'.split('')],\n ['\\0\\t\\n\\f\\r \"&\\'/<=>'.split(''), '\\0\\t\\n\\f\\r \"&\\'/<=>`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(unquoted)-state>.\n unquoted: [\n ['\\t\\n\\f\\r &>'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')],\n ['\\0\\t\\n\\f\\r \"&\\'<=>`'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(single-quoted)-state>.\n single: [\n [\"&'\".split(''), '\"&\\'`'.split('')],\n [\"\\0&'\".split(''), '\\0\"&\\'`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(double-quoted)-state>.\n double: [\n ['\"&'.split(''), '\"&\\'`'.split('')],\n ['\\0\"&'.split(''), '\\0\"&\\'`'.split('')]\n ]\n}\n\n/**\n * Serialize an element node.\n *\n * @param {Element} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function element(node, index, parent, state) {\n const schema = state.schema\n const omit = schema.space === 'svg' ? false : state.settings.omitOptionalTags\n let selfClosing =\n schema.space === 'svg'\n ? state.settings.closeEmptyElements\n : state.settings.voids.includes(node.tagName.toLowerCase())\n /** @type {Array<string>} */\n const parts = []\n /** @type {string} */\n let last\n\n if (schema.space === 'html' && node.tagName === 'svg') {\n state.schema = svg\n }\n\n const attributes = serializeAttributes(state, node.properties)\n\n const content = state.all(\n schema.space === 'html' && node.tagName === 'template' ? node.content : node\n )\n\n state.schema = schema\n\n // If the node is categorised as void, but it has children, remove the\n // categorisation.\n // This enables for example `menuitem`s, which are void in W3C HTML but not\n // void in WHATWG HTML, to be stringified properly.\n // Note: `menuitem` has since been removed from the HTML spec, and so is no\n // longer void.\n if (content) selfClosing = false\n\n if (attributes || !omit || !opening(node, index, parent)) {\n parts.push('<', node.tagName, attributes ? ' ' + attributes : '')\n\n if (\n selfClosing &&\n (schema.space === 'svg' || state.settings.closeSelfClosing)\n ) {\n last = attributes.charAt(attributes.length - 1)\n if (\n !state.settings.tightSelfClosing ||\n last === '/' ||\n (last && last !== '\"' && last !== \"'\")\n ) {\n parts.push(' ')\n }\n\n parts.push('/')\n }\n\n parts.push('>')\n }\n\n parts.push(content)\n\n if (!selfClosing && (!omit || !closing(node, index, parent))) {\n parts.push('</' + node.tagName + '>')\n }\n\n return parts.join('')\n}\n\n/**\n * @param {State} state\n * @param {Properties | null | undefined} properties\n * @returns {string}\n */\nfunction serializeAttributes(state, properties) {\n /** @type {Array<string>} */\n const values = []\n let index = -1\n /** @type {string} */\n let key\n\n if (properties) {\n for (key in properties) {\n if (properties[key] !== null && properties[key] !== undefined) {\n const value = serializeAttribute(state, key, properties[key])\n if (value) values.push(value)\n }\n }\n }\n\n while (++index < values.length) {\n const last = state.settings.tightAttributes\n ? values[index].charAt(values[index].length - 1)\n : undefined\n\n // In tight mode, don’t add a space after quoted attributes.\n if (index !== values.length - 1 && last !== '\"' && last !== \"'\") {\n values[index] += ' '\n }\n }\n\n return values.join('')\n}\n\n/**\n * @param {State} state\n * @param {string} key\n * @param {Properties[keyof Properties]} value\n * @returns {string}\n */\nfunction serializeAttribute(state, key, value) {\n const info = find(state.schema, key)\n const x =\n state.settings.allowParseErrors && state.schema.space === 'html' ? 0 : 1\n const y = state.settings.allowDangerousCharacters ? 0 : 1\n let quote = state.quote\n /** @type {string | undefined} */\n let result\n\n if (info.overloadedBoolean && (value === info.attribute || value === '')) {\n value = true\n } else if (\n (info.boolean || info.overloadedBoolean) &&\n (typeof value !== 'string' || value === info.attribute || value === '')\n ) {\n value = Boolean(value)\n }\n\n if (\n value === null ||\n value === undefined ||\n value === false ||\n (typeof value === 'number' && Number.isNaN(value))\n ) {\n return ''\n }\n\n const name = stringifyEntities(\n info.attribute,\n Object.assign({}, state.settings.characterReferences, {\n // Always encode without parse errors in non-HTML.\n subset: constants.name[x][y]\n })\n )\n\n // No value.\n // There is currently only one boolean property in SVG: `[download]` on\n // `<a>`.\n // This property does not seem to work in browsers (Firefox, Safari, Chrome),\n // so I can’t test if dropping the value works.\n // But I assume that it should:\n //\n // ```html\n // <!doctype html>\n // <svg viewBox=\"0 0 100 100\">\n // <a href=https://example.com download>\n // <circle cx=50 cy=40 r=35 />\n // </a>\n // </svg>\n // ```\n //\n // See: <https://github.com/wooorm/property-information/blob/main/lib/svg.js>\n if (value === true) return name\n\n // `spaces` doesn’t accept a second argument, but it’s given here just to\n // keep the code cleaner.\n value = Array.isArray(value)\n ? (info.commaSeparated ? commas : spaces)(value, {\n padLeft: !state.settings.tightCommaSeparatedLists\n })\n : String(value)\n\n if (state.settings.collapseEmptyAttributes && !value) return name\n\n // Check unquoted value.\n if (state.settings.preferUnquoted) {\n result = stringifyEntities(\n value,\n Object.assign({}, state.settings.characterReferences, {\n attribute: true,\n subset: constants.unquoted[x][y]\n })\n )\n }\n\n // If we don’t want unquoted, or if `value` contains character references when\n // unquoted…\n if (result !== value) {\n // If the alternative is less common than `quote`, switch.\n if (\n state.settings.quoteSmart &&\n ccount(value, quote) > ccount(value, state.alternative)\n ) {\n quote = state.alternative\n }\n\n result =\n quote +\n stringifyEntities(\n value,\n Object.assign({}, state.settings.characterReferences, {\n // Always encode without parse errors in non-HTML.\n subset: (quote === \"'\" ? constants.single : constants.double)[x][y],\n attribute: true\n })\n ) +\n quote\n }\n\n // Don’t add a `=` for unquoted empties.\n return name + (result ? '=' + result : result)\n}\n","/**\n * @import {Parents, Text} from 'hast'\n * @import {Raw} from 'mdast-util-to-hast'\n * @import {State} from '../index.js'\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\n// Declare array as variable so it can be cached by `stringifyEntities`\nconst textEntitySubset = ['<', '&']\n\n/**\n * Serialize a text node.\n *\n * @param {Raw | Text} node\n * Node to handle.\n * @param {number | undefined} _\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function text(node, _, parent, state) {\n // Check if content of `node` should be escaped.\n return parent &&\n parent.type === 'element' &&\n (parent.tagName === 'script' || parent.tagName === 'style')\n ? node.value\n : stringifyEntities(\n node.value,\n Object.assign({}, state.settings.characterReferences, {\n subset: textEntitySubset\n })\n )\n}\n","/**\n * @import {Parents} from 'hast'\n * @import {Raw} from 'mdast-util-to-hast'\n * @import {State} from '../index.js'\n */\n\nimport {text} from './text.js'\n\n/**\n * Serialize a raw node.\n *\n * @param {Raw} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function raw(node, index, parent, state) {\n return state.settings.allowDangerousHtml\n ? node.value\n : text(node, index, parent, state)\n}\n","/**\n * @import {Parents, Root} from 'hast'\n * @import {State} from '../index.js'\n */\n\n/**\n * Serialize a root.\n *\n * @param {Root} node\n * Node to handle.\n * @param {number | undefined} _1\n * Index of `node` in `parent.\n * @param {Parents | undefined} _2\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function root(node, _1, _2, state) {\n return state.all(node)\n}\n","/**\n * @import {Nodes, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {zwitch} from 'zwitch'\nimport {comment} from './comment.js'\nimport {doctype} from './doctype.js'\nimport {element} from './element.js'\nimport {raw} from './raw.js'\nimport {root} from './root.js'\nimport {text} from './text.js'\n\n/**\n * @type {(node: Nodes, index: number | undefined, parent: Parents | undefined, state: State) => string}\n */\nexport const handle = zwitch('type', {\n invalid,\n unknown,\n handlers: {comment, doctype, element, raw, root, text}\n})\n\n/**\n * Fail when a non-node is found in the tree.\n *\n * @param {unknown} node\n * Unknown value.\n * @returns {never}\n * Never.\n */\nfunction invalid(node) {\n throw new Error('Expected node, not `' + node + '`')\n}\n\n/**\n * Fail when a node with an unknown type is found in the tree.\n *\n * @param {unknown} node_\n * Unknown node.\n * @returns {never}\n * Never.\n */\nfunction unknown(node_) {\n // `type` is guaranteed by runtime JS.\n const node = /** @type {Nodes} */ (node_)\n throw new Error('Cannot compile unknown node `' + node.type + '`')\n}\n","/**\n * @import {Nodes, Parents, RootContent} from 'hast'\n * @import {Schema} from 'property-information'\n * @import {Options as StringifyEntitiesOptions} from 'stringify-entities'\n */\n\n/**\n * @typedef {Omit<StringifyEntitiesOptions, 'attribute' | 'escapeOnly' | 'subset'>} CharacterReferences\n *\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [allowDangerousCharacters=false]\n * Do not encode some characters which cause XSS vulnerabilities in older\n * browsers (default: `false`).\n *\n * > ⚠️ **Danger**: only set this if you completely trust the content.\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n * Allow `raw` nodes and insert them as raw HTML (default: `false`).\n *\n * When `false`, `Raw` nodes are encoded.\n *\n * > ⚠️ **Danger**: only set this if you completely trust the content.\n * @property {boolean | null | undefined} [allowParseErrors=false]\n * Do not encode characters which cause parse errors (even though they work),\n * to save bytes (default: `false`).\n *\n * Not used in the SVG space.\n *\n * > 👉 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [bogusComments=false]\n * Use “bogus comments” instead of comments to save byes: `<?charlie>`\n * instead of `<!--charlie-->` (default: `false`).\n *\n * > 👉 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn’t pretty).\n * @property {CharacterReferences | null | undefined} [characterReferences]\n * Configure how to serialize character references (optional).\n * @property {boolean | null | undefined} [closeEmptyElements=false]\n * Close SVG elements without any content with slash (`/`) on the opening tag\n * instead of an end tag: `<circle />` instead of `<circle></circle>`\n * (default: `false`).\n *\n * See `tightSelfClosing` to control whether a space is used before the\n * slash.\n *\n * Not used in the HTML space.\n * @property {boolean | null | undefined} [closeSelfClosing=false]\n * Close self-closing nodes with an extra slash (`/`): `<img />` instead of\n * `<img>` (default: `false`).\n *\n * See `tightSelfClosing` to control whether a space is used before the\n * slash.\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [collapseEmptyAttributes=false]\n * Collapse empty attributes: get `class` instead of `class=\"\"` (default:\n * `false`).\n *\n * Not used in the SVG space.\n *\n * > 👉 **Note**: boolean attributes (such as `hidden`) are always collapsed.\n * @property {boolean | null | undefined} [omitOptionalTags=false]\n * Omit optional opening and closing tags (default: `false`).\n *\n * For example, in `<ol><li>one</li><li>two</li></ol>`, both `</li>` closing\n * tags can be omitted.\n * The first because it’s followed by another `li`, the last because it’s\n * followed by nothing.\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [preferUnquoted=false]\n * Leave attributes unquoted if that results in less bytes (default: `false`).\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [quoteSmart=false]\n * Use the other quote if that results in less bytes (default: `false`).\n * @property {Quote | null | undefined} [quote='\"']\n * Preferred quote to use (default: `'\"'`).\n * @property {Space | null | undefined} [space='html']\n * When an `<svg>` element is found in the HTML space, this package already\n * automatically switches to and from the SVG space when entering and exiting\n * it (default: `'html'`).\n *\n * > 👉 **Note**: hast is not XML.\n * > It supports SVG as embedded in HTML.\n * > It does not support the features available in XML.\n * > Passing SVG might break but fragments of modern SVG should be fine.\n * > Use [`xast`][xast] if you need to support SVG as XML.\n * @property {boolean | null | undefined} [tightAttributes=false]\n * Join attributes together, without whitespace, if possible: get\n * `class=\"a b\"title=\"c d\"` instead of `class=\"a b\" title=\"c d\"` to save\n * bytes (default: `false`).\n *\n * Not used in the SVG space.\n *\n * > 👉 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [tightCommaSeparatedLists=false]\n * Join known comma-separated attribute values with just a comma (`,`),\n * instead of padding them on the right as well (`,␠`, where `␠` represents a\n * space) (default: `false`).\n * @property {boolean | null | undefined} [tightDoctype=false]\n * Drop unneeded spaces in doctypes: `<!doctypehtml>` instead of\n * `<!doctype html>` to save bytes (default: `false`).\n *\n * > 👉 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [tightSelfClosing=false]\n * Do not use an extra space when closing self-closing elements: `<img/>`\n * instead of `<img />` (default: `false`).\n *\n * > 👉 **Note**: only used if `closeSelfClosing: true` or\n * > `closeEmptyElements: true`.\n * @property {boolean | null | undefined} [upperDoctype=false]\n * Use a `<!DOCTYPE…` instead of `<!doctype…` (default: `false`).\n *\n * Useless except for XHTML.\n * @property {ReadonlyArray<string> | null | undefined} [voids]\n * Tag names of elements to serialize without closing tag (default: `html-void-elements`).\n *\n * Not used in the SVG space.\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass this, because\n * > hast is not for XML, and HTML will not add more void elements.\n *\n * @typedef {'\"' | \"'\"} Quote\n * HTML quotes for attribute values.\n *\n * @typedef {Omit<Required<{[key in keyof Options]: Exclude<Options[key], null | undefined>}>, 'space' | 'quote'>} Settings\n *\n * @typedef {'html' | 'svg'} Space\n * Namespace.\n *\n * @typedef State\n * Info passed around about the current state.\n * @property {(node: Parents | undefined) => string} all\n * Serialize the children of a parent node.\n * @property {Quote} alternative\n * Alternative quote.\n * @property {(node: Nodes, index: number | undefined, parent: Parents | undefined) => string} one\n * Serialize one node.\n * @property {Quote} quote\n * Preferred quote.\n * @property {Schema} schema\n * Current schema.\n * @property {Settings} settings\n * User configuration.\n */\n\nimport {htmlVoidElements} from 'html-void-elements'\nimport {html, svg} from 'property-information'\nimport {handle} from './handle/index.js'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/** @type {CharacterReferences} */\nconst emptyCharacterReferences = {}\n\n/** @type {Array<never>} */\nconst emptyChildren = []\n\n/**\n * Serialize hast as HTML.\n *\n * @param {Array<RootContent> | Nodes} tree\n * Tree to serialize.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized HTML.\n */\nexport function toHtml(tree, options) {\n const options_ = options || emptyOptions\n const quote = options_.quote || '\"'\n const alternative = quote === '\"' ? \"'\" : '\"'\n\n if (quote !== '\"' && quote !== \"'\") {\n throw new Error('Invalid quote `' + quote + '`, expected `\\'` or `\"`')\n }\n\n /** @type {State} */\n const state = {\n one,\n all,\n settings: {\n omitOptionalTags: options_.omitOptionalTags || false,\n allowParseErrors: options_.allowParseErrors || false,\n allowDangerousCharacters: options_.allowDangerousCharacters || false,\n quoteSmart: options_.quoteSmart || false,\n preferUnquoted: options_.preferUnquoted || false,\n tightAttributes: options_.tightAttributes || false,\n upperDoctype: options_.upperDoctype || false,\n tightDoctype: options_.tightDoctype || false,\n bogusComments: options_.bogusComments || false,\n tightCommaSeparatedLists: options_.tightCommaSeparatedLists || false,\n tightSelfClosing: options_.tightSelfClosing || false,\n collapseEmptyAttributes: options_.collapseEmptyAttributes || false,\n allowDangerousHtml: options_.allowDangerousHtml || false,\n voids: options_.voids || htmlVoidElements,\n characterReferences:\n options_.characterReferences || emptyCharacterReferences,\n closeSelfClosing: options_.closeSelfClosing || false,\n closeEmptyElements: options_.closeEmptyElements || false\n },\n schema: options_.space === 'svg' ? svg : html,\n quote,\n alternative\n }\n\n return state.one(\n Array.isArray(tree) ? {type: 'root', children: tree} : tree,\n undefined,\n undefined\n )\n}\n\n/**\n * Serialize a node.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {Nodes} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {string}\n * Serialized node.\n */\nfunction one(node, index, parent) {\n return handle(node, index, parent, this)\n}\n\n/**\n * Serialize all children of `parent`.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {Parents | undefined} parent\n * Parent whose children to serialize.\n * @returns {string}\n */\nexport function all(parent) {\n /** @type {Array<string>} */\n const results = []\n const children = (parent && parent.children) || emptyChildren\n let index = -1\n\n while (++index < children.length) {\n results[index] = this.one(children[index], index, parent)\n }\n\n return results.join('')\n}\n","import crypto from \"node:crypto\";\nimport type { PluggableList, Plugin } from \"unified\";\nimport type { Root as HastRoot, Element, ElementContent } from \"hast\";\nimport type { VFile } from \"vfile\";\nimport { toHtml } from \"hast-util-to-html\";\nimport type { BuildCtx, ProcessedContent, QuartzTransformerPlugin } from \"@quartz-community/types\";\nimport type { EncryptedPagesOptions } from \"./types\";\n\nconst ALGORITHM = \"aes-256-gcm\";\nconst KEY_LENGTH = 32;\nconst IV_LENGTH = 12;\nconst SALT_LENGTH = 16;\nconst AUTH_TAG_LENGTH = 16;\n\nconst defaultOptions: EncryptedPagesOptions = {\n iterations: 600_000,\n passwordField: \"password\",\n unlistWhenEncrypted: false,\n};\n\nexport function encryptAesGcm(plaintext: string, password: string, iterations: number): string {\n const salt = crypto.randomBytes(SALT_LENGTH);\n const iv = crypto.randomBytes(IV_LENGTH);\n\n const key = crypto.pbkdf2Sync(password, salt, iterations, KEY_LENGTH, \"sha256\");\n\n const cipher = crypto.createCipheriv(ALGORITHM, key, iv);\n const encrypted = Buffer.concat([cipher.update(plaintext, \"utf8\"), cipher.final()]);\n const authTag = cipher.getAuthTag();\n\n const result = Buffer.concat([salt, iv, authTag, encrypted]);\n return result.toString(\"base64\");\n}\n\nexport function decrypt(encryptedBase64: string, password: string, iterations: number): string {\n const buffer = Buffer.from(encryptedBase64, \"base64\");\n\n const salt = buffer.subarray(0, SALT_LENGTH);\n const iv = buffer.subarray(SALT_LENGTH, SALT_LENGTH + IV_LENGTH);\n const authTag = buffer.subarray(\n SALT_LENGTH + IV_LENGTH,\n SALT_LENGTH + IV_LENGTH + AUTH_TAG_LENGTH,\n );\n const ciphertext = buffer.subarray(SALT_LENGTH + IV_LENGTH + AUTH_TAG_LENGTH);\n\n const key = crypto.pbkdf2Sync(password, salt, iterations, KEY_LENGTH, \"sha256\");\n\n const decipher = crypto.createDecipheriv(ALGORITHM, key, iv);\n decipher.setAuthTag(authTag);\n\n return decipher.update(ciphertext, undefined, \"utf8\") + decipher.final(\"utf8\");\n}\n\n/**\n * Passwords of the pages whose rendered body the transformer encrypted without a password in\n * their own frontmatter (a `.base` or `.canvas` page that inherits one), for the\n * {@link EncryptedContentIndex} emitter. Kept out of `file.data`, where a component could show it.\n */\nexport const inheritedPasswords = new WeakMap<object, string>();\n\nfunction encryptTree(\n tree: HastRoot,\n file: VFile,\n password: string,\n options: EncryptedPagesOptions,\n): void {\n const frontmatter = (file.data?.frontmatter ?? {}) as Record<string, unknown>;\n const html = toHtml(tree, { allowDangerousHtml: true });\n\n const encryptedData = encryptAesGcm(html, password, options.iterations);\n\n const encryptedContainer: Element = {\n type: \"element\",\n tagName: \"div\",\n properties: {\n className: [\"encrypted-page\", \"popover-hint\"],\n \"data-encrypted\": encryptedData,\n \"data-iterations\": String(options.iterations),\n },\n children: [],\n };\n\n tree.children = [encryptedContainer as ElementContent];\n\n const data = file.data as Record<string, unknown>;\n data.encrypted = true;\n data.text = \"\";\n data.description = \"\";\n\n const frontmatterUnlisted = frontmatter.unlisted;\n if (typeof frontmatterUnlisted === \"boolean\") {\n data.unlisted = frontmatterUnlisted;\n } else if (options.unlistWhenEncrypted) {\n data.unlisted = true;\n }\n\n if (frontmatter.stealth === true) {\n data.stealth = true;\n data.unlisted = true;\n }\n}\n\nfunction passwordIn(frontmatter: unknown, options: EncryptedPagesOptions): string | undefined {\n const password = (frontmatter as Record<string, unknown> | undefined)?.[options.passwordField];\n return typeof password === \"string\" && password.length > 0 ? password : undefined;\n}\n\nconst rehypeEncryptedPages = (options: EncryptedPagesOptions): Plugin<[], HastRoot> => {\n return () => (tree: HastRoot, file: VFile) => {\n const password = passwordIn(file.data?.frontmatter, options);\n if (password) encryptTree(tree, file, password, options);\n };\n};\n\n/**\n * Pages that page types render from files (`.base`, `.canvas`, Excalidraw drawings), which\n * Quartz 5.1+ hands to `virtualPageHtmlPlugins` (quartz-community/bases-page#11). A page whose\n * frontmatter has a password (a drawing stored as Markdown) is encrypted with it, like a note.\n * A file without frontmatter (`.base`, `.canvas`, `.excalidraw`) can't hold a password: it is\n * encrypted with the password of the encrypted published pages that link to it (the first by\n * slug when they differ), so a canvas linked from a protected note is protected too. Linked only\n * from unencrypted pages, it stays unencrypted.\n */\nconst rehypeEncryptedVirtualPages = (\n options: EncryptedPagesOptions,\n content: ProcessedContent[],\n): Plugin<[], HastRoot> => {\n const passwordBySlug = new Map<string, string>();\n for (const [, file] of content) {\n const password = passwordIn(file.data?.frontmatter, options);\n if (password && typeof file.data?.slug === \"string\")\n passwordBySlug.set(file.data.slug, password);\n }\n\n return () => (tree: HastRoot, file: VFile) => {\n const own = passwordIn(file.data?.frontmatter, options);\n if (own) {\n encryptTree(tree, file, own, options);\n return;\n }\n\n const relativePath = file.data?.relativePath;\n if (typeof relativePath !== \"string\" || relativePath.toLowerCase().endsWith(\".md\")) return;\n const referencedBy = (file.data as Record<string, unknown>).referencedBy;\n if (!Array.isArray(referencedBy)) return;\n const inherited = [...referencedBy]\n .filter((slug): slug is string => typeof slug === \"string\")\n .sort()\n .map((slug) => passwordBySlug.get(slug))\n .find((password) => password !== undefined);\n if (!inherited) return;\n\n encryptTree(tree, file, inherited, options);\n inheritedPasswords.set(file.data, inherited);\n };\n};\n\nexport const EncryptedPages: QuartzTransformerPlugin<Partial<EncryptedPagesOptions>> = (\n userOptions?: Partial<EncryptedPagesOptions>,\n) => {\n const options = { ...defaultOptions, ...userOptions };\n // a variable, not a literal: `virtualPageHtmlPlugins` is newer than the declared types\n const instance: ReturnType<QuartzTransformerPlugin> & {\n virtualPageHtmlPlugins(ctx: BuildCtx, content: ProcessedContent[]): PluggableList;\n } = {\n name: \"EncryptedPages\",\n htmlPlugins(): PluggableList {\n return [rehypeEncryptedPages(options)];\n },\n virtualPageHtmlPlugins(_ctx, content): PluggableList {\n return [rehypeEncryptedVirtualPages(options, content)];\n },\n };\n return instance;\n};\n","import type { Root as HtmlRoot } from \"hast\";\nimport type { Root as MdRoot } from \"mdast\";\nimport type { Data, VFile } from \"vfile\";\nimport type { PluggableList } from \"unified\";\n\n// ============================================================================\n// Path Types - Branded string types for type-safe file paths\n// ============================================================================\n\nexport type FilePath = string & { _brand: \"FilePath\" };\nexport type FullSlug = string & { _brand: \"FullSlug\" };\nexport type SimpleSlug = string & { _brand: \"SimpleSlug\" };\n\nexport function joinSegments(...segments: string[]): FilePath {\n return segments\n .filter((segment) => segment.length > 0)\n .join(\"/\")\n .replace(/\\/+/g, \"/\") as FilePath;\n}\n\n// ============================================================================\n// Resource Types - CSS/JS resources that plugins can inject\n// ============================================================================\n\nexport type JSResource =\n | {\n loadTime: \"beforeDOMReady\" | \"afterDOMReady\";\n moduleType?: \"module\";\n spaPreserve?: boolean;\n src: string;\n contentType: \"external\";\n }\n | {\n loadTime: \"beforeDOMReady\" | \"afterDOMReady\";\n moduleType?: \"module\";\n spaPreserve?: boolean;\n script: string;\n contentType: \"inline\";\n };\n\nexport type CSSResource = {\n content: string;\n inline?: boolean;\n spaPreserve?: boolean;\n};\n\nexport interface StaticResources {\n css: CSSResource[];\n js: JSResource[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n additionalHead: any[];\n}\n\n// ============================================================================\n// Config Types - Quartz configuration\n// ============================================================================\n\n/**\n * Flat configuration object that components receive as `cfg` prop.\n * This matches Quartz's `GlobalConfiguration` — the resolved config\n * passed to components at render time (i.e. `ctx.cfg.configuration`).\n */\nexport interface GlobalConfiguration {\n pageTitle?: string;\n pageTitleSuffix?: string;\n enableSPA?: boolean;\n enablePopovers?: boolean;\n analytics?: unknown;\n ignorePatterns?: string[];\n defaultDateType?: string;\n baseUrl?: string;\n theme?: unknown;\n locale?: string;\n}\n\n/**\n * Full Quartz config with nested `configuration` property.\n * This is what `BuildCtx.cfg` holds — used in plugin hooks\n * (transformers, filters, emitters), NOT in component props.\n */\nexport interface QuartzConfig {\n configuration: GlobalConfiguration;\n plugins?: unknown;\n externalPlugins?: unknown;\n}\n\n// ============================================================================\n// Context Types - Build context passed to plugin hooks\n// ============================================================================\n\nexport interface Argv {\n directory: string;\n verbose: boolean;\n output: string;\n serve: boolean;\n watch: boolean;\n port: number;\n wsPort: number;\n remoteDevHost?: string;\n concurrency?: number;\n}\n\nexport interface BuildCtx {\n buildId: string;\n argv: Argv;\n cfg: QuartzConfig;\n allSlugs: FullSlug[];\n allFiles: FilePath[];\n incremental: boolean;\n}\n\n// ============================================================================\n// VFile Types - Content data types\n// ============================================================================\n\nexport type QuartzPluginData = Data;\nexport type MarkdownContent = [MdRoot, VFile];\nexport type ProcessedContent = [HtmlRoot, VFile];\n\n// ============================================================================\n// Core Component Types - The contract between Quartz and plugins\n// ============================================================================\n\nexport type QuartzComponentProps = {\n ctx: unknown;\n externalResources: StaticResources;\n fileData: QuartzPluginData & Record<string, unknown>;\n cfg: GlobalConfiguration;\n children: unknown;\n tree: unknown;\n allFiles: (QuartzPluginData & Record<string, unknown>)[];\n displayClass?: \"mobile-only\" | \"desktop-only\";\n [key: string]: unknown;\n};\n\nexport type QuartzComponent = ((props: QuartzComponentProps) => unknown) & {\n css?: string | string[] | undefined;\n beforeDOMLoaded?: string | string[] | undefined;\n afterDOMLoaded?: string | string[] | undefined;\n};\n\nexport type QuartzComponentConstructor<\n Options extends object | undefined = undefined,\n> = (opts?: Options) => QuartzComponent;\n\nexport type StringResource = string | string[];\n\n// ============================================================================\n// Plugin Types - What Quartz expects from plugins\n// ============================================================================\n\ntype OptionType = object | undefined;\ntype ExternalResourcesFn = (\n ctx: BuildCtx,\n) => Partial<StaticResources> | undefined;\n\nexport type { ExternalResourcesFn };\n\nexport interface PluginTypes {\n transformers: QuartzTransformerPluginInstance[];\n filters: QuartzFilterPluginInstance[];\n emitters: QuartzEmitterPluginInstance[];\n pageTypes: QuartzPageTypePluginInstance[];\n}\n\nexport type QuartzTransformerPlugin<Options extends OptionType = undefined> = (\n opts?: Options,\n) => QuartzTransformerPluginInstance;\n\nexport type QuartzTransformerPluginInstance = {\n name: string;\n textTransform?: (ctx: BuildCtx, src: string) => string;\n markdownPlugins?: (ctx: BuildCtx) => PluggableList;\n htmlPlugins?: (ctx: BuildCtx) => PluggableList;\n externalResources?: ExternalResourcesFn;\n};\n\nexport type QuartzFilterPlugin<Options extends OptionType = undefined> = (\n opts?: Options,\n) => QuartzFilterPluginInstance;\n\nexport type QuartzFilterPluginInstance = {\n name: string;\n shouldPublish(ctx: BuildCtx, content: ProcessedContent): boolean;\n};\n\nexport type ChangeEvent = {\n type: \"add\" | \"change\" | \"delete\";\n path: FilePath;\n file?: VFile;\n};\n\nexport type QuartzEmitterPlugin<Options extends OptionType = undefined> = (\n opts?: Options,\n) => QuartzEmitterPluginInstance;\n\nexport type QuartzEmitterPluginInstance = {\n name: string;\n emit: (\n ctx: BuildCtx,\n content: ProcessedContent[],\n resources: StaticResources,\n ) => Promise<FilePath[]> | AsyncGenerator<FilePath>;\n partialEmit?: (\n ctx: BuildCtx,\n content: ProcessedContent[],\n resources: StaticResources,\n changeEvents: ChangeEvent[],\n ) => Promise<FilePath[]> | AsyncGenerator<FilePath> | null;\n getQuartzComponents?: (ctx: BuildCtx) => QuartzComponent[];\n externalResources?: ExternalResourcesFn;\n};\n\n// ============================================================================\n// PageType Plugin Types - Declarative page rendering plugins\n// ============================================================================\n\n/**\n * Matcher function: determines if a source file belongs to a page type.\n * Returns true if the page type should own this file.\n */\nexport type PageMatcher = (args: {\n slug: FullSlug;\n fileData: QuartzPluginData & Record<string, unknown>;\n cfg: GlobalConfiguration;\n}) => boolean;\n\n/**\n * Virtual page descriptor for page types that generate pages\n * from aggregated data (e.g., tag indexes, folder listings).\n */\nexport interface VirtualPage {\n slug: FullSlug;\n title: string;\n data: Partial<QuartzPluginData> & Record<string, unknown>;\n}\n\n/**\n * Generator function: produces virtual pages from all processed content.\n * Used by page types that don't match source files but instead create\n * synthetic pages (e.g., one page per tag, one page per folder).\n */\nexport type PageGenerator = (args: {\n content: ProcessedContent[];\n cfg: GlobalConfiguration;\n ctx: BuildCtx;\n}) => VirtualPage[];\n\n/** A function that mutates a HAST tree at render time, when allFiles is available. */\nexport type TreeTransform = (\n root: HtmlRoot,\n slug: FullSlug,\n componentData: QuartzComponentProps,\n) => void;\n\n/**\n * A PageType plugin definition.\n *\n * PageTypes are a declarative abstraction over page-rendering emitters.\n * Each PageType declares which files it owns (via `match`), optionally\n * generates virtual pages (via `generate`), and provides a body component\n * and layout reference for rendering.\n */\nexport type QuartzPageTypePlugin<Options extends OptionType = undefined> = (\n opts?: Options,\n) => QuartzPageTypePluginInstance;\n\nexport type QuartzPageTypePluginInstance = {\n name: string;\n /** Higher priority wins when multiple page types match the same file. Default: 0. */\n priority?: number;\n /** File extensions this page type handles (e.g. [\".canvas\"]). Files with these extensions are excluded from the default asset emitter and processed by generate() instead. */\n fileExtensions?: string[];\n /** Determines which source files this page type owns. */\n match: PageMatcher;\n /** Produces virtual pages from aggregated content data. */\n generate?: PageGenerator;\n /** Layout key — references a key in `layout.byPageType`. */\n layout: string;\n /** Optional page frame name (e.g. \"default\", \"full-width\", \"canvas\"). Defaults to \"default\". */\n frame?: string;\n /** The body component constructor for this page type. */\n body: QuartzComponentConstructor;\n /** Optional render-time HAST tree transforms (e.g. resolving inline codeblocks). */\n treeTransforms?: (ctx: BuildCtx) => TreeTransform[];\n};\n\n// ============================================================================\n// PageFrame Types — Custom page layout frames\n// ============================================================================\n\n/**\n * Props passed to a PageFrame's render function.\n * Contains the resolved layout components and the shared component data.\n */\nexport interface PageFrameProps {\n /** Component data shared across all components on the page */\n componentData: QuartzComponentProps;\n /** The Head component (rendered in <head>) — NOT used by frames, included for completeness */\n head: QuartzComponent;\n /** Header slot components (rendered inside <header>) */\n header: QuartzComponent[];\n /** Components rendered before the page body */\n beforeBody: QuartzComponent[];\n /** The page body component (Content) */\n pageBody: QuartzComponent;\n /** Components rendered after the page body */\n afterBody: QuartzComponent[];\n /** Left sidebar components */\n left: QuartzComponent[];\n /** Right sidebar components */\n right: QuartzComponent[];\n /** Footer components */\n footer: QuartzComponent[];\n}\n\n/**\n * A PageFrame defines the inner HTML structure of a page inside the\n * `<div id=\"quartz-root\">` shell. Different frames can produce completely\n * different layouts (e.g. with/without sidebars, horizontal scroll, etc.)\n * while the outer shell (html, head, body, quartz-root) remains stable\n * for SPA navigation.\n *\n * The `render` function returns `unknown` to avoid coupling to a specific\n * JSX runtime (Preact, React, etc.). Quartz core casts this to JSX.Element.\n */\nexport interface PageFrame {\n /** Unique name for this frame (e.g. \"default\", \"full-width\", \"canvas\") */\n name: string;\n /** Render the inner page structure. Returns a JSX tree to be placed inside Body > #quartz-body. */\n render: (props: PageFrameProps) => unknown;\n /** Optional CSS string to include when this frame is active */\n css?: string;\n}\n\nexport type HTMLAttributes = Record<\n string,\n string | number | boolean | undefined\n>;\n\nexport type EventHandler = (event: Event) => void;\n\nexport type CleanupFunction = () => void;\n\nexport type ClassValue =\n | string\n | number\n | boolean\n | undefined\n | null\n | ClassValue[];\n\n// ============================================================================\n// Content Index Types - Data shape for contentIndex.json\n// ============================================================================\n\nexport type ContentDetails = {\n slug: FullSlug;\n filePath: FilePath;\n title: string;\n links: string[];\n tags: string[];\n content: string;\n richContent?: string;\n date?: Date;\n description?: string;\n};\n\nexport type ContentIndex = Record<FullSlug, ContentDetails>;\n\n// ============================================================================\n// Sort & Theme Types\n// ============================================================================\n\nexport type SortFn = (f1: QuartzPluginData, f2: QuartzPluginData) => number;\n\nexport type ThemeKey = \"lightMode\" | \"darkMode\";\n\nexport type ValidDateType = \"created\" | \"modified\" | \"published\";\n\n// ============================================================================\n// VFile DataMap Augmentation — canonical vfile shape for Quartz\n// ============================================================================\n\ndeclare module \"vfile\" {\n interface DataMap {\n slug: FullSlug;\n filePath: FilePath;\n relativePath: FilePath;\n description: string;\n text: string;\n links: SimpleSlug[];\n toc: { depth: number; text: string; slug: string }[];\n collapseToc: boolean;\n blocks: Record<string, import(\"hast\").Element>;\n htmlAst: import(\"hast\").Root;\n hasMermaidDiagram: boolean | undefined;\n frontmatter: { [key: string]: unknown } & {\n title: string;\n } & Partial<{\n tags: string[];\n aliases: string[];\n modified: string;\n created: string;\n published: string;\n description: string;\n socialDescription: string;\n publish: boolean | string;\n draft: boolean | string;\n lang: string;\n enableToc: string;\n cssclasses: string[];\n socialImage: string;\n comments: boolean | string;\n }>;\n dates: {\n created: Date;\n modified: Date;\n published: Date;\n };\n defaultDateType?: ValidDateType;\n }\n}\n","import path from \"node:path\";\nimport fs from \"node:fs/promises\";\nimport type { Root, Element } from \"hast\";\nimport type {\n BuildCtx,\n FilePath,\n ProcessedContent,\n QuartzEmitterPlugin,\n} from \"@quartz-community/types\";\nimport { joinSegments } from \"@quartz-community/types\";\nimport { encryptAesGcm, inheritedPasswords } from \"./transformer\";\nimport type { EncryptedContentIndexOptions } from \"./types\";\n\nexport const SHADOW_INDEX_VERSION = 1 as const;\n\nconst defaultOptions: EncryptedContentIndexOptions = {\n outputPath: \"static/encryptedContentIndex.json\",\n passwordField: \"password\",\n};\n\nexport interface ShadowIndexBlob {\n ciphertext: string;\n iterations: number;\n}\n\nexport interface ShadowIndexFile {\n version: typeof SHADOW_INDEX_VERSION;\n entries: ShadowIndexBlob[];\n}\n\nexport interface ShadowContentIndexEntry {\n slug: string;\n entry: {\n slug: string;\n filePath: string;\n title: string;\n links: string[];\n tags: string[];\n content: string;\n description: string;\n };\n}\n\nfunction buildShadowEntry(data: Record<string, unknown>): ShadowContentIndexEntry | null {\n const slug = data.slug;\n if (typeof slug !== \"string\" || slug.length === 0) return null;\n\n const frontmatter = (data.frontmatter as Record<string, unknown> | undefined) ?? {};\n const title = typeof frontmatter.title === \"string\" ? frontmatter.title : \"\";\n const tags = Array.isArray(frontmatter.tags)\n ? (frontmatter.tags as unknown[]).filter((t): t is string => typeof t === \"string\")\n : [];\n\n const links = Array.isArray(data.links)\n ? (data.links as unknown[]).filter((l): l is string => typeof l === \"string\")\n : [];\n\n const filePath = typeof data.relativePath === \"string\" ? data.relativePath : \"\";\n\n return {\n slug,\n entry: {\n slug,\n filePath,\n title,\n links,\n tags,\n content: \"\",\n description: \"\",\n },\n };\n}\n\nexport const EncryptedContentIndex: QuartzEmitterPlugin<Partial<EncryptedContentIndexOptions>> = (\n userOptions?: Partial<EncryptedContentIndexOptions>,\n) => {\n const options = { ...defaultOptions, ...userOptions };\n\n const emitAll = async (ctx: BuildCtx, content: ProcessedContent[]): Promise<FilePath[]> => {\n const passwordField = options.passwordField;\n const entries: ShadowIndexBlob[] = [];\n\n for (const [tree, file] of content) {\n const data = (file.data ?? {}) as Record<string, unknown>;\n if (data.encrypted !== true) continue;\n if (data.unlisted !== true) continue;\n if (data.stealth === true) continue;\n\n const frontmatter = (data.frontmatter as Record<string, unknown> | undefined) ?? {};\n const password = frontmatter[passwordField] ?? inheritedPasswords.get(file.data);\n if (typeof password !== \"string\" || password.length === 0) continue;\n\n const iterations = extractIterationsFromTree(tree as Root);\n const shadowEntry = buildShadowEntry(data);\n if (!shadowEntry) continue;\n\n const plaintext = JSON.stringify(shadowEntry);\n const ciphertext = encryptAesGcm(plaintext, password, iterations);\n\n entries.push({ ciphertext, iterations });\n }\n\n const shadowFile: ShadowIndexFile = {\n version: SHADOW_INDEX_VERSION,\n entries,\n };\n\n const outputPath = joinSegments(ctx.argv.output, options.outputPath) as FilePath;\n const dir = path.dirname(outputPath);\n await fs.mkdir(dir, { recursive: true });\n await fs.writeFile(outputPath, JSON.stringify(shadowFile));\n\n return [outputPath];\n };\n\n return {\n name: \"EncryptedContentIndex\",\n emit: emitAll,\n partialEmit: emitAll,\n };\n};\n\nfunction extractIterationsFromTree(tree: Root): number {\n for (const child of tree.children ?? []) {\n if (child.type !== \"element\") continue;\n const el = child as Element;\n const props = el.properties ?? {};\n const dataIterations = props[\"data-iterations\"];\n if (typeof dataIterations === \"string\") {\n const parsed = parseInt(dataIterations, 10);\n if (!Number.isNaN(parsed) && parsed > 0) return parsed;\n }\n if (typeof dataIterations === \"number\" && dataIterations > 0) return dataIterations;\n }\n return 600_000;\n}\n",".encrypted-page {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 300px;\n padding: 2rem;\n}\n\n.encrypted-page-form {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1rem;\n max-width: 400px;\n width: 100%;\n text-align: center;\n}\n\n.encrypted-page-icon {\n color: var(--gray, #6b7280);\n opacity: 0.6;\n}\n\n.encrypted-page-label {\n color: var(--darkgray, #4b5563);\n font-size: 0.95rem;\n margin: 0;\n line-height: 1.5;\n}\n\n.encrypted-page-input-row {\n display: flex;\n gap: 0.5rem;\n width: 100%;\n}\n\n.encrypted-page-input {\n flex: 1;\n padding: 0.5rem 0.75rem;\n border: 1px solid var(--lightgray, #d1d5db);\n border-radius: 4px;\n font-size: 0.9rem;\n font-family: inherit;\n background: var(--light, #fff);\n color: var(--dark, #111);\n outline: none;\n transition: border-color 0.15s ease;\n}\n.encrypted-page-input:focus {\n border-color: var(--secondary, #3b82f6);\n}\n.encrypted-page-input:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.encrypted-page-submit {\n padding: 0.5rem 1.25rem;\n border: none;\n border-radius: 4px;\n font-size: 0.9rem;\n font-family: inherit;\n font-weight: 600;\n cursor: pointer;\n background: var(--secondary, #3b82f6);\n color: var(--light, #fff);\n transition: background 0.15s ease, opacity 0.15s ease;\n white-space: nowrap;\n}\n.encrypted-page-submit:hover:not(:disabled) {\n opacity: 0.9;\n}\n.encrypted-page-submit:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.encrypted-page-error {\n color: var(--red, #dc2626);\n font-size: 0.85rem;\n margin: 0;\n}","var S=\"encrypted-pages-passwords\",m=\"encrypted-pages:decryptedShadowEntries\";function v(t){let e=atob(t),n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return n}async function b(t,e,n){let r=new TextEncoder,o=await window.crypto.subtle.importKey(\"raw\",r.encode(t),\"PBKDF2\",!1,[\"deriveKey\"]);return window.crypto.subtle.deriveKey({name:\"PBKDF2\",salt:e,iterations:n,hash:\"SHA-256\"},o,{name:\"AES-GCM\",length:256},!1,[\"decrypt\"])}async function T(t,e,n){let r=v(t),o=r.slice(0,16),i=r.slice(16,28),c=r.slice(28,44),a=r.slice(44),s=new Uint8Array(a.length+c.length);s.set(a,0),s.set(c,a.length);let d=await b(e,o,n),l=await window.crypto.subtle.decrypt({name:\"AES-GCM\",iv:i},d,s);return new TextDecoder().decode(l)}function h(){try{let t=sessionStorage.getItem(S);if(!t)return[];let e=JSON.parse(t);return Array.isArray(e)?e:[]}catch{return[]}}function A(t){let e=h();e.includes(t)||(e.push(t),sessionStorage.setItem(S,JSON.stringify(e)))}function L(){try{let t=sessionStorage.getItem(m);if(!t)return{};let e=JSON.parse(t);return e&&typeof e==\"object\"?e:{}}catch{return{}}}function N(t){try{sessionStorage.setItem(m,JSON.stringify(t))}catch{}}function I(t,e){let n=t.querySelector(\".encrypted-page-error\");n&&(n.textContent=e,n.style.display=\"block\")}function _(t){let e=t.querySelector(\".encrypted-page-error\");e&&(e.style.display=\"none\",e.textContent=\"\")}function w(t,e){let n=t.querySelector(\".encrypted-page-submit\"),r=t.querySelector(\".encrypted-page-input\");n&&(n.disabled=e,n.textContent=e?\"Decrypting\\u2026\":\"Unlock\"),r&&(r.disabled=e)}function x(){let t=document.querySelectorAll(\"script\");for(let e of t){let r=(e.textContent??\"\").match(/fetch\\([\"']([^\"']+contentIndex\\.json)[\"']\\)/);if(r)return r[1].replace(/contentIndex\\.json$/,\"encryptedContentIndex.json\")}return new URL(\"static/encryptedContentIndex.json\",document.baseURI).toString()}var p=null;async function H(){if(p)return p;let t=x();return p=fetch(t).then(e=>{if(!e.ok)throw new Error(`shadow index HTTP ${e.status}`);return e.json()}).then(e=>!e||e.version!==1||!Array.isArray(e.entries)?{version:1,entries:[]}:e).catch(()=>({version:1,entries:[]})),p}async function D(t,e,n){let r={},o={...n},i=!1;for(let c=0;c<t.entries.length;c++){let a=String(c);if(n[a]){let d=n[a];d&&d.slug&&(r[d.slug]=d.entry);continue}let s=t.entries[c];if(!(!s||typeof s.ciphertext!=\"string\"))for(let d of e)try{let l=await T(s.ciphertext,d,s.iterations),u=JSON.parse(l);u&&typeof u.slug==\"string\"&&u.entry&&(r[u.slug]=u.entry,o[a]=u,i=!0);break}catch{}}return i&&N(o),r}async function G(t){let e=Object.keys(t);if(e.length!==0){try{let n=await(typeof fetchData<\"u\"?fetchData:Promise.resolve(null));if(!n||typeof n!=\"object\")return;let r=n.content&&typeof n.content==\"object\"?n.content:n;for(let o of e)o in r||(r[o]=t[o])}catch{return}document.dispatchEvent(new CustomEvent(\"content-index-updated\",{detail:{slugs:e}})),document.dispatchEvent(new CustomEvent(\"render\"))}}var y=!1;async function f(){if(y)return;let t=h();if(t.length!==0){y=!0;try{let e=await H();if(!e.entries||e.entries.length===0)return;let n=L(),r=await D(e,t,n);await G(r)}finally{y=!1}}}async function E(t,e){let n=t.getAttribute(\"data-encrypted\"),r=parseInt(t.getAttribute(\"data-iterations\")||\"600000\",10);if(!n)return!1;try{let o=await T(n,e,r);if(t.parentElement){let c=document.createElement(\"div\");c.innerHTML=o,t.replaceWith(...c.childNodes)}return A(e),document.dispatchEvent(new CustomEvent(\"render\")),f(),!0}catch{return!1}}function g(){let t=document.querySelectorAll(\".encrypted-page\");if(t.length===0){f();return}for(let e of t){if(e.querySelector(\".encrypted-page-form\")||!e.getAttribute(\"data-encrypted\"))continue;let r=document.createElement(\"div\");r.className=\"encrypted-page-form\",r.innerHTML=['<div class=\"encrypted-page-icon\" aria-hidden=\"true\">','<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">','<rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"></rect>','<path d=\"M7 11V7a5 5 0 0 1 10 0v4\"></path>',\"</svg>\",\"</div>\",'<p class=\"encrypted-page-label\">This page is encrypted. Enter the password to view its content.</p>','<div class=\"encrypted-page-input-row\">','<input type=\"password\" class=\"encrypted-page-input\" placeholder=\"Password\" autocomplete=\"off\" />','<button type=\"button\" class=\"encrypted-page-submit\">Unlock</button>',\"</div>\",'<p class=\"encrypted-page-error\" style=\"display:none\"></p>'].join(\"\"),e.appendChild(r);let o=r.querySelector(\".encrypted-page-input\"),i=r.querySelector(\".encrypted-page-submit\");async function c(){let s=o?.value;if(!s)return;_(e),w(e,!0),await E(e,s)||(w(e,!1),I(e,\"Incorrect password. Please try again.\"),o&&(o.value=\"\",o.focus()))}i&&i.addEventListener(\"click\",c),o&&o.addEventListener(\"keydown\",s=>{s.key===\"Enter\"&&(s.preventDefault(),c())});let a=h();a.length>0&&(async()=>{for(let s of a)if(await E(e,s))return})()}f()}document.addEventListener(\"nav\",()=>{g()});document.addEventListener(\"render\",()=>{document.querySelectorAll(\".encrypted-page\").length>0&&g()});var C=new MutationObserver(t=>{for(let e of t)for(let n of e.addedNodes){if(!(n instanceof HTMLElement))continue;if((n.classList?.contains(\"encrypted-page\")?[n]:[...n.querySelectorAll(\".encrypted-page\")]).filter(i=>!i.querySelector(\".encrypted-page-form\")).length>0){g();return}}});C.observe(document.body,{childList:!0,subtree:!0});\n","/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 2;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 1;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nexport const MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nexport const NULL = null;\nexport const UNDEFINED = undefined;\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { NULL } from '../constants';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw the error that was caught (except\n * for unmounting when this parameter is the highest parent that was being\n * unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component,\n\t\t/** @type {import('../internal').ComponentType} */\n\t\tctor,\n\t\t/** @type {boolean} */\n\t\thandled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != NULL) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != NULL) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE, NULL } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != NULL && this._nextState != this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == NULL) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](https://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == NULL) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: NULL;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != NULL && sibling._dom != NULL) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : NULL;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tif (component._parentDom && component._dirty) {\n\t\tlet oldVNode = component._vnode,\n\t\t\toldDom = oldVNode._dom,\n\t\t\tcommitQueue = [],\n\t\t\trefQueue = [],\n\t\t\tnewVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.namespaceURI,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : NULL,\n\t\t\tcommitQueue,\n\t\t\toldDom == NULL ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\t\toldVNode._dom = oldVNode._parent = null;\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != NULL && vnode._component != NULL) {\n\t\tvnode._dom = vnode._component.base = NULL;\n\t\tvnode._children.some(child => {\n\t\t\tif (child != NULL && child._dom != NULL) {\n\t\t\t\treturn (vnode._dom = vnode._component.base = child._dom);\n\t\t\t}\n\t\t});\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce != options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\ttry {\n\t\tlet c,\n\t\t\tl = 1;\n\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\twhile (rerenderQueue.length) {\n\t\t\t// Keep the rerender queue sorted by (depth, insertion order). The queue\n\t\t\t// will initially be sorted on the first iteration only if it has more than 1 item.\n\t\t\t//\n\t\t\t// New items can be added to the queue e.g. when rerendering a provider, so we want to\n\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t// single pass\n\t\t\tif (rerenderQueue.length > l) {\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\n\t\t\tc = rerenderQueue.shift();\n\t\t\tl = rerenderQueue.length;\n\n\t\t\trenderComponent(c);\n\t\t}\n\t} finally {\n\t\trerenderQueue.length = process._rerenderCount = 0;\n\t}\n}\n\nprocess._rerenderCount = 0;\n","import { IS_NON_DIMENSIONAL, NULL, SVG_NAMESPACE } from '../constants';\nimport options from '../options';\n\n// Per-instance unique key for event clock stamps. Each Preact copy on the page\n// gets its own random suffix so that `_dispatched` / `_attached` properties on\n// shared event objects and handler functions cannot collide across instances.\n// ~1 in 60M collision odds - if you have that many praect versions on the page,\n// you deserve some weird bugs.\n// In 11 we can replace this with a\n// Symbol\nlet _id = Math.random().toString(8),\n\tEVENT_DISPATCHED = '__d' + _id,\n\tEVENT_ATTACHED = '__a' + _id;\n\nfunction setStyle(style, key, value) {\n\tif (key[0] == '-') {\n\t\tstyle.setProperty(key, value == NULL ? '' : value);\n\t} else if (value == NULL) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\nconst CAPTURE_REGEX = /(PointerCapture)$|Capture$/i;\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {string} namespace Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, namespace) {\n\tlet useCapture;\n\n\to: if (name == 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] != oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] == 'o' && name[1] == 'n') {\n\t\tuseCapture = name != (name = name.replace(CAPTURE_REGEX, '$1'));\n\t\tconst lowerCaseName = name.toLowerCase();\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (lowerCaseName in dom || name == 'onFocusOut' || name == 'onFocusIn')\n\t\t\tname = lowerCaseName.slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue[EVENT_ATTACHED] = eventClock;\n\t\t\t\tdom.addEventListener(\n\t\t\t\t\tname,\n\t\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\t\tuseCapture\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tvalue[EVENT_ATTACHED] = oldValue[EVENT_ATTACHED];\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (namespace == SVG_NAMESPACE) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname != 'popover' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == NULL ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != NULL && (value !== false || name[4] == '-')) {\n\t\t\tdom.setAttribute(name, name == 'popover' && value == true ? '' : value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {import('../internal').PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e[EVENT_DISPATCHED] == NULL) {\n\t\t\t\te[EVENT_DISPATCHED] = eventClock++;\n\n\t\t\t\t// When `e[EVENT_DISPATCHED]` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e[EVENT_DISPATCHED] < eventHandler[EVENT_ATTACHED]) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n","import { enqueueRender } from './component';\nimport { NULL } from './constants';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tfunction Context(props) {\n\t\tif (!this.getChildContext) {\n\t\t\t/** @type {Set<import('./internal').Component> | null} */\n\t\t\tlet subs = new Set();\n\t\t\tlet ctx = {};\n\t\t\tctx[Context._id] = this;\n\n\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\tthis.componentWillUnmount = () => {\n\t\t\t\tsubs = NULL;\n\t\t\t};\n\n\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t// @ts-expect-error even\n\t\t\t\tif (this.props.value != _props.value) {\n\t\t\t\t\tsubs.forEach(c => {\n\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.sub = c => {\n\t\t\t\tsubs.add(c);\n\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\tif (subs) {\n\t\t\t\t\t\tsubs.delete(c);\n\t\t\t\t\t}\n\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\treturn props.children;\n\t}\n\n\tContext._id = '__cC' + i++;\n\tContext._defaultValue = defaultValue;\n\n\t/** @type {import('./internal').FunctionComponent} */\n\tContext.Consumer = (props, contextValue) => {\n\t\treturn props.children(contextValue);\n\t};\n\n\t// we could also get rid of _contextRef entirely\n\tContext.Provider =\n\t\tContext._contextRef =\n\t\tContext.Consumer.contextType =\n\t\t\tContext;\n\n\treturn Context;\n}\n","import { options, Fragment } from 'preact';\nimport { encodeEntities } from './utils';\nimport { IS_NON_DIMENSIONAL } from '../../src/constants';\n\nlet vnodeId = 0;\n\nconst isArray = Array.isArray;\n\n/**\n * @fileoverview\n * This file exports various methods that implement Babel's \"automatic\" JSX runtime API:\n * - jsx(type, props, key)\n * - jsxs(type, props, key)\n * - jsxDEV(type, props, key, __source, __self)\n *\n * The implementation of createVNode here is optimized for performance.\n * Benchmarks: https://esbench.com/bench/5f6b54a0b4632100a7dcd2b3\n */\n\n/**\n * JSX.Element factory used by Babel's {runtime:\"automatic\"} JSX transform\n * @param {VNode['type']} type\n * @param {VNode['props']} props\n * @param {VNode['key']} [key]\n * @param {unknown} [isStaticChildren]\n * @param {unknown} [__source]\n * @param {unknown} [__self]\n */\nfunction createVNode(type, props, key, isStaticChildren, __source, __self) {\n\tif (!props) props = {};\n\t// We'll want to preserve `ref` in props to get rid of the need for\n\t// forwardRef components in the future, but that should happen via\n\t// a separate PR.\n\tlet normalizedProps = props,\n\t\tref,\n\t\ti;\n\n\tif ('ref' in normalizedProps) {\n\t\tnormalizedProps = {};\n\t\tfor (i in props) {\n\t\t\tif (i == 'ref') {\n\t\t\t\tref = props[i];\n\t\t\t} else {\n\t\t\t\tnormalizedProps[i] = props[i];\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @type {VNode & { __source: any; __self: any }} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops: normalizedProps,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: --vnodeId,\n\t\t_index: -1,\n\t\t_flags: 0,\n\t\t__source,\n\t\t__self\n\t};\n\n\t// If a Component VNode, check for and apply defaultProps.\n\t// Note: `type` is often a String, and can be `undefined` in development.\n\tif (typeof type === 'function' && (ref = type.defaultProps)) {\n\t\tfor (i in ref)\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = ref[i];\n\t\t\t}\n\t}\n\n\tif (options.vnode) options.vnode(vnode);\n\treturn vnode;\n}\n\n/**\n * Create a template vnode. This function is not expected to be\n * used directly, but rather through a precompile JSX transform\n * @param {string[]} templates\n * @param {Array<string | null | VNode>} exprs\n * @returns {VNode}\n */\nfunction jsxTemplate(templates, ...exprs) {\n\tconst vnode = createVNode(Fragment, { tpl: templates, exprs });\n\t// Bypass render to string top level Fragment optimization\n\tvnode.key = vnode._vnode;\n\treturn vnode;\n}\n\nconst JS_TO_CSS = {};\nconst CSS_REGEX = /[A-Z]/g;\n\n/**\n * Unwrap potential signals.\n * @param {*} value\n * @returns {*}\n */\nfunction normalizeAttrValue(value) {\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.valueOf === 'function'\n\t\t? value.valueOf()\n\t\t: value;\n}\n\n/**\n * Serialize an HTML attribute to a string. This function is not\n * expected to be used directly, but rather through a precompile\n * JSX transform\n * @param {string} name The attribute name\n * @param {*} value The attribute value\n * @returns {string}\n */\nfunction jsxAttr(name, value) {\n\tif (options.attr) {\n\t\tconst result = options.attr(name, value);\n\t\tif (typeof result === 'string') return result;\n\t}\n\n\tvalue = normalizeAttrValue(value);\n\n\tif (name === 'ref' || name === 'key') return '';\n\tif (name === 'style' && typeof value === 'object') {\n\t\tlet str = '';\n\t\tfor (let prop in value) {\n\t\t\tlet val = value[prop];\n\t\t\tif (val != null && val !== '') {\n\t\t\t\tconst name =\n\t\t\t\t\tprop[0] == '-'\n\t\t\t\t\t\t? prop\n\t\t\t\t\t\t: JS_TO_CSS[prop] ||\n\t\t\t\t\t\t\t(JS_TO_CSS[prop] = prop.replace(CSS_REGEX, '-$&').toLowerCase());\n\n\t\t\t\tlet suffix = ';';\n\t\t\t\tif (\n\t\t\t\t\ttypeof val === 'number' &&\n\t\t\t\t\t// Exclude custom-attributes\n\t\t\t\t\t!name.startsWith('--') &&\n\t\t\t\t\t!IS_NON_DIMENSIONAL.test(name)\n\t\t\t\t) {\n\t\t\t\t\tsuffix = 'px;';\n\t\t\t\t}\n\t\t\t\tstr = str + name + ':' + val + suffix;\n\t\t\t}\n\t\t}\n\t\treturn name + '=\"' + encodeEntities(str) + '\"';\n\t}\n\n\tif (\n\t\tvalue == null ||\n\t\tvalue === false ||\n\t\ttypeof value === 'function' ||\n\t\ttypeof value === 'object'\n\t) {\n\t\treturn '';\n\t} else if (value === true) return name;\n\n\treturn name + '=\"' + encodeEntities('' + value) + '\"';\n}\n\n/**\n * Escape a dynamic child passed to `jsxTemplate`. This function\n * is not expected to be used directly, but rather through a\n * precompile JSX transform\n * @param {*} value\n * @returns {string | null | VNode | Array<string | null | VNode>}\n */\nfunction jsxEscape(value) {\n\tif (\n\t\tvalue == null ||\n\t\ttypeof value === 'boolean' ||\n\t\ttypeof value === 'function'\n\t) {\n\t\treturn null;\n\t}\n\n\tif (typeof value === 'object') {\n\t\t// Check for VNode\n\t\tif (value.constructor === undefined) return value;\n\n\t\tif (isArray(value)) {\n\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\tvalue[i] = jsxEscape(value[i]);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t}\n\n\treturn encodeEntities('' + value);\n}\n\nexport {\n\tcreateVNode as jsx,\n\tcreateVNode as jsxs,\n\tcreateVNode as jsxDEV,\n\tFragment,\n\t// precompiled JSX transform\n\tjsxTemplate,\n\tjsxAttr,\n\tjsxEscape\n};\n","import type {\n QuartzComponent,\n QuartzComponentProps,\n QuartzComponentConstructor,\n} from \"@quartz-community/types\";\nimport style from \"./styles/encrypted.scss\";\n// @ts-expect-error - inline script import handled by Quartz bundler\nimport script from \"./scripts/encrypted.inline.ts\";\n\nexport interface EncryptedPageComponentOptions {\n /** CSS class name for the component wrapper. */\n className?: string;\n}\n\nexport default ((opts?: EncryptedPageComponentOptions) => {\n const { className = \"encrypted-page-wrapper\" } = opts ?? {};\n\n const Component: QuartzComponent = (_props: QuartzComponentProps) => {\n // The actual encrypted container is injected by the transformer's rehype plugin.\n // This component only provides CSS and the client-side decryption script.\n // It renders an empty wrapper that the encrypted content appears inside.\n return <div class={className} />;\n };\n\n Component.css = style;\n Component.afterDOMLoaded = script;\n\n return Component;\n}) satisfies QuartzComponentConstructor;\n"]}