commit 8d32b8b92b35671098fb11c835e1ed146ddc44fb Author: Seth Trowbridge Date: Tue Oct 6 09:41:27 2026 -0400 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6fd10a4 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/node_modules/* \ No newline at end of file diff --git a/dist/preact.d.ts b/dist/preact.d.ts new file mode 100644 index 0000000..587c323 --- /dev/null +++ b/dist/preact.d.ts @@ -0,0 +1,2726 @@ +//#endregion +//#region node_modules/preact/src/jsx.d.ts +type Defaultize = +// Distribute over unions +Props extends any // Make any properties included in Default optional + ? Partial>> // Include the remaining properties from Props + & Pick> : never; +declare namespace JSXInternal { + export type LibraryManagedAttributes = Component$1 extends { + defaultProps: infer Defaults; + } ? Defaultize : Props; + export interface IntrinsicAttributes { + key?: any; + } + export type ElementType

= { [K in keyof IntrinsicElements]: P extends IntrinsicElements[K] ? K : never; }[keyof IntrinsicElements] | ComponentType

; + export interface Element extends VNode {} + export type ElementClass = Component | FunctionComponent; + export interface ElementAttributesProperty { + props: any; + } + export interface ElementChildrenAttribute { + children: any; + } + export interface IntrinsicSVGElements { + svg: SVGAttributes; + animate: SVGAttributes; + circle: SVGAttributes; + animateMotion: SVGAttributes; + animateTransform: SVGAttributes; + clipPath: SVGAttributes; + defs: SVGAttributes; + desc: SVGAttributes; + ellipse: SVGAttributes; + feBlend: SVGAttributes; + feColorMatrix: SVGAttributes; + feComponentTransfer: SVGAttributes; + feComposite: SVGAttributes; + feConvolveMatrix: SVGAttributes; + feDiffuseLighting: SVGAttributes; + feDisplacementMap: SVGAttributes; + feDistantLight: SVGAttributes; + feDropShadow: SVGAttributes; + feFlood: SVGAttributes; + feFuncA: SVGAttributes; + feFuncB: SVGAttributes; + feFuncG: SVGAttributes; + feFuncR: SVGAttributes; + feGaussianBlur: SVGAttributes; + feImage: SVGAttributes; + feMerge: SVGAttributes; + feMergeNode: SVGAttributes; + feMorphology: SVGAttributes; + feOffset: SVGAttributes; + fePointLight: SVGAttributes; + feSpecularLighting: SVGAttributes; + feSpotLight: SVGAttributes; + feTile: SVGAttributes; + feTurbulence: SVGAttributes; + filter: SVGAttributes; + foreignObject: SVGAttributes; + g: SVGAttributes; + image: SVGAttributes; + line: SVGAttributes; + linearGradient: SVGAttributes; + marker: SVGAttributes; + mask: SVGAttributes; + metadata: SVGAttributes; + mpath: SVGAttributes; + path: SVGAttributes; + pattern: SVGAttributes; + polygon: SVGAttributes; + polyline: SVGAttributes; + radialGradient: SVGAttributes; + rect: SVGAttributes; + set: SVGAttributes; + stop: SVGAttributes; + switch: SVGAttributes; + symbol: SVGAttributes; + text: SVGAttributes; + textPath: SVGAttributes; + tspan: SVGAttributes; + use: SVGAttributes; + view: SVGAttributes; + } + export interface IntrinsicMathMLElements { + annotation: AnnotationMathMLAttributes; + 'annotation-xml': AnnotationXmlMathMLAttributes; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/maction */ + maction: MActionMathMLAttributes; + math: MathMathMLAttributes; + /** This feature is non-standard. See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/menclose */ + menclose: MEncloseMathMLAttributes; + merror: MErrorMathMLAttributes; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mfenced */ + mfenced: MFencedMathMLAttributes; + mfrac: MFracMathMLAttributes; + mi: MiMathMLAttributes; + mmultiscripts: MmultiScriptsMathMLAttributes; + mn: MNMathMLAttributes; + mo: MOMathMLAttributes; + mover: MOverMathMLAttributes; + mpadded: MPaddedMathMLAttributes; + mphantom: MPhantomMathMLAttributes; + mprescripts: MPrescriptsMathMLAttributes; + mroot: MRootMathMLAttributes; + mrow: MRowMathMLAttributes; + ms: MSMathMLAttributes; + mspace: MSpaceMathMLAttributes; + msqrt: MSqrtMathMLAttributes; + mstyle: MStyleMathMLAttributes; + msub: MSubMathMLAttributes; + msubsup: MSubsupMathMLAttributes; + msup: MSupMathMLAttributes; + mtable: MTableMathMLAttributes; + mtd: MTdMathMLAttributes; + mtext: MTextMathMLAttributes; + mtr: MTrMathMLAttributes; + munder: MUnderMathMLAttributes; + munderover: MUnderMathMLAttributes; + semantics: SemanticsMathMLAttributes; + } + export interface IntrinsicHTMLElements { + a: AccessibleAnchorHTMLAttributes; + abbr: HTMLAttributes; + address: HTMLAttributes; + area: AccessibleAreaHTMLAttributes; + article: ArticleHTMLAttributes; + aside: AsideHTMLAttributes; + audio: AudioHTMLAttributes; + b: HTMLAttributes; + base: BaseHTMLAttributes; + bdi: HTMLAttributes; + bdo: HTMLAttributes; + big: HTMLAttributes; + blockquote: BlockquoteHTMLAttributes; + body: HTMLAttributes; + br: BrHTMLAttributes; + button: ButtonHTMLAttributes; + canvas: CanvasHTMLAttributes; + caption: CaptionHTMLAttributes; + cite: HTMLAttributes; + code: HTMLAttributes; + col: ColHTMLAttributes; + colgroup: ColgroupHTMLAttributes; + data: DataHTMLAttributes; + datalist: DataListHTMLAttributes; + dd: DdHTMLAttributes; + del: DelHTMLAttributes; + details: DetailsHTMLAttributes; + dfn: HTMLAttributes; + dialog: DialogHTMLAttributes; + div: HTMLAttributes; + dl: DlHTMLAttributes; + dt: DtHTMLAttributes; + em: HTMLAttributes; + embed: EmbedHTMLAttributes; + fieldset: FieldsetHTMLAttributes; + figcaption: FigcaptionHTMLAttributes; + figure: HTMLAttributes; + footer: FooterHTMLAttributes; + form: FormHTMLAttributes; + h1: HeadingHTMLAttributes; + h2: HeadingHTMLAttributes; + h3: HeadingHTMLAttributes; + h4: HeadingHTMLAttributes; + h5: HeadingHTMLAttributes; + h6: HeadingHTMLAttributes; + head: HeadHTMLAttributes; + header: HeaderHTMLAttributes; + hgroup: HTMLAttributes; + hr: HrHTMLAttributes; + html: HtmlHTMLAttributes; + i: HTMLAttributes; + iframe: IframeHTMLAttributes; + img: AccessibleImgHTMLAttributes; + input: AccessibleInputHTMLAttributes; + ins: InsHTMLAttributes; + kbd: HTMLAttributes; + keygen: KeygenHTMLAttributes; + label: LabelHTMLAttributes; + legend: LegendHTMLAttributes; + li: LiHTMLAttributes; + link: LinkHTMLAttributes; + main: MainHTMLAttributes; + map: MapHTMLAttributes; + mark: HTMLAttributes; + marquee: MarqueeHTMLAttributes; + menu: MenuHTMLAttributes; + menuitem: HTMLAttributes; + meta: MetaHTMLAttributes; + meter: MeterHTMLAttributes; + nav: NavHTMLAttributes; + noscript: NoScriptHTMLAttributes; + object: ObjectHTMLAttributes; + ol: OlHTMLAttributes; + optgroup: OptgroupHTMLAttributes; + option: OptionHTMLAttributes; + output: OutputHTMLAttributes; + p: HTMLAttributes; + param: ParamHTMLAttributes; + picture: PictureHTMLAttributes; + pre: HTMLAttributes; + progress: ProgressHTMLAttributes; + q: QuoteHTMLAttributes; + rp: HTMLAttributes; + rt: HTMLAttributes; + ruby: HTMLAttributes; + s: HTMLAttributes; + samp: HTMLAttributes; + script: ScriptHTMLAttributes; + search: SearchHTMLAttributes; + section: HTMLAttributes; + select: AccessibleSelectHTMLAttributes; + selectedcontent: HTMLAttributes; + slot: SlotHTMLAttributes; + small: HTMLAttributes; + source: SourceHTMLAttributes; + span: HTMLAttributes; + strong: HTMLAttributes; + style: StyleHTMLAttributes; + sub: HTMLAttributes; + summary: HTMLAttributes; + sup: HTMLAttributes; + table: TableHTMLAttributes; + tbody: HTMLAttributes; + td: TdHTMLAttributes; + template: TemplateHTMLAttributes; + textarea: TextareaHTMLAttributes; + tfoot: HTMLAttributes; + th: ThHTMLAttributes; + thead: HTMLAttributes; + time: TimeHTMLAttributes; + title: TitleHTMLAttributes; + tr: HTMLAttributes; + track: TrackHTMLAttributes; + u: UlHTMLAttributes; + ul: HTMLAttributes; + var: HTMLAttributes; + video: VideoHTMLAttributes; + wbr: WbrHTMLAttributes; + } + export interface IntrinsicElements extends IntrinsicSVGElements, IntrinsicMathMLElements, IntrinsicHTMLElements {} +} +//#endregion +//#region node_modules/preact/src/dom.d.ts +// Implementations of some DOM events that are not available in TS 5.1 +interface ToggleEvent extends Event { + readonly newState: string; + readonly oldState: string; +} +declare var ToggleEvent: { + prototype: ToggleEvent; + new (type: string, eventInitDict?: ToggleEventInit): ToggleEvent; +}; +interface ToggleEventInit extends EventInit { + newState?: string; + oldState?: string; +} +interface CommandEvent extends Event { + readonly source: Element | null; + readonly command: string; +} +declare var CommandEvent: { + prototype: CommandEvent; + new (type: string, eventInitDict?: CommandEventInit): CommandEvent; +}; +interface CommandEventInit extends EventInit { + source: Element | null; + command: string; +} +/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/SnapEvent) */ +interface SnapEvent extends Event { + readonly snapTargetBlock: Element | null; + readonly snapTargetInline: Element | null; +} +declare var SnapEvent: { + prototype: SnapEvent; + new (type: string, eventInitDict?: SnapEventInit): SnapEvent; +}; +interface SnapEventInit extends EventInit { + snapTargetBlock?: Element | null; + snapTargetInline?: Element | null; +} +type Booleanish = boolean | 'true' | 'false'; +interface SignalLike { + value: T; + peek(): T; + subscribe(fn: (value: T) => void): () => void; +} +type Signalish = T | SignalLike; +type UnpackSignal = T extends SignalLike ? V : T; +type DOMCSSProperties = { [key in keyof Omit]?: string | number | null | undefined; }; +type AllCSSProperties = { + [key: string]: string | number | null | undefined; +}; +interface CSSProperties extends AllCSSProperties, DOMCSSProperties { + cssText?: string | null; +} +interface SVGAttributes extends HTMLAttributes { + 'accent-height'?: Signalish; + accentHeight?: Signalish; + accumulate?: Signalish<'none' | 'sum' | undefined>; + additive?: Signalish<'replace' | 'sum' | undefined>; + 'alignment-baseline'?: Signalish<'auto' | 'baseline' | 'before-edge' | 'text-before-edge' | 'middle' | 'central' | 'after-edge' | 'text-after-edge' | 'ideographic' | 'alphabetic' | 'hanging' | 'mathematical' | 'inherit' | undefined>; + alignmentBaseline?: Signalish<'auto' | 'baseline' | 'before-edge' | 'text-before-edge' | 'middle' | 'central' | 'after-edge' | 'text-after-edge' | 'ideographic' | 'alphabetic' | 'hanging' | 'mathematical' | 'inherit' | undefined>; + 'allow-reorder'?: Signalish<'no' | 'yes' | undefined>; + allowReorder?: Signalish<'no' | 'yes' | undefined>; + alphabetic?: Signalish; + amplitude?: Signalish; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/arabic-form */ + 'arabic-form'?: Signalish<'initial' | 'medial' | 'terminal' | 'isolated' | undefined>; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/arabic-form */ + arabicForm?: Signalish<'initial' | 'medial' | 'terminal' | 'isolated' | undefined>; + ascent?: Signalish; + attributeName?: Signalish; + attributeType?: Signalish; + azimuth?: Signalish; + baseFrequency?: Signalish; + 'baseline-shift'?: Signalish; + baselineShift?: Signalish; + baseProfile?: Signalish; + bbox?: Signalish; + begin?: Signalish; + bias?: Signalish; + by?: Signalish; + calcMode?: Signalish; + 'cap-height'?: Signalish; + capHeight?: Signalish; + clip?: Signalish; + 'clip-path'?: Signalish; + clipPath?: Signalish; + clipPathUnits?: Signalish; + 'clip-rule'?: Signalish; + clipRule?: Signalish; + 'color-interpolation'?: Signalish; + colorInterpolation?: Signalish; + 'color-interpolation-filters'?: Signalish<'auto' | 'sRGB' | 'linearRGB' | 'inherit' | undefined>; + colorInterpolationFilters?: Signalish<'auto' | 'sRGB' | 'linearRGB' | 'inherit' | undefined>; + 'color-profile'?: Signalish; + colorProfile?: Signalish; + 'color-rendering'?: Signalish; + colorRendering?: Signalish; + 'content-script-type'?: Signalish; + contentScriptType?: Signalish; + 'content-style-type'?: Signalish; + contentStyleType?: Signalish; + cursor?: Signalish; + cx?: Signalish; + cy?: Signalish; + d?: Signalish; + decelerate?: Signalish; + descent?: Signalish; + diffuseConstant?: Signalish; + direction?: Signalish; + display?: Signalish; + divisor?: Signalish; + 'dominant-baseline'?: Signalish; + dominantBaseline?: Signalish; + dur?: Signalish; + dx?: Signalish; + dy?: Signalish; + edgeMode?: Signalish; + elevation?: Signalish; + 'enable-background'?: Signalish; + enableBackground?: Signalish; + end?: Signalish; + exponent?: Signalish; + externalResourcesRequired?: Signalish; + fill?: Signalish; + 'fill-opacity'?: Signalish; + fillOpacity?: Signalish; + 'fill-rule'?: Signalish<'nonzero' | 'evenodd' | 'inherit' | undefined>; + fillRule?: Signalish<'nonzero' | 'evenodd' | 'inherit' | undefined>; + filter?: Signalish; + filterRes?: Signalish; + filterUnits?: Signalish; + 'flood-color'?: Signalish; + floodColor?: Signalish; + 'flood-opacity'?: Signalish; + floodOpacity?: Signalish; + focusable?: Signalish; + 'font-family'?: Signalish; + fontFamily?: Signalish; + 'font-size'?: Signalish; + fontSize?: Signalish; + 'font-size-adjust'?: Signalish; + fontSizeAdjust?: Signalish; + 'font-stretch'?: Signalish; + fontStretch?: Signalish; + 'font-style'?: Signalish; + fontStyle?: Signalish; + 'font-variant'?: Signalish; + fontVariant?: Signalish; + 'font-weight'?: Signalish; + fontWeight?: Signalish; + format?: Signalish; + from?: Signalish; + fx?: Signalish; + fy?: Signalish; + g1?: Signalish; + g2?: Signalish; + 'glyph-name'?: Signalish; + glyphName?: Signalish; + 'glyph-orientation-horizontal'?: Signalish; + glyphOrientationHorizontal?: Signalish; + 'glyph-orientation-vertical'?: Signalish; + glyphOrientationVertical?: Signalish; + glyphRef?: Signalish; + gradientTransform?: Signalish; + gradientUnits?: Signalish; + hanging?: Signalish; + height?: Signalish; + 'horiz-adv-x'?: Signalish; + horizAdvX?: Signalish; + 'horiz-origin-x'?: Signalish; + horizOriginX?: Signalish; + href?: Signalish; + hreflang?: Signalish; + hrefLang?: Signalish; + ideographic?: Signalish; + 'image-rendering'?: Signalish; + imageRendering?: Signalish; + in2?: Signalish; + in?: Signalish; + intercept?: Signalish; + k1?: Signalish; + k2?: Signalish; + k3?: Signalish; + k4?: Signalish; + k?: Signalish; + kernelMatrix?: Signalish; + kernelUnitLength?: Signalish; + kerning?: Signalish; + keyPoints?: Signalish; + keySplines?: Signalish; + keyTimes?: Signalish; + lengthAdjust?: Signalish; + 'letter-spacing'?: Signalish; + letterSpacing?: Signalish; + 'lighting-color'?: Signalish; + lightingColor?: Signalish; + limitingConeAngle?: Signalish; + local?: Signalish; + 'marker-end'?: Signalish; + markerEnd?: Signalish; + markerHeight?: Signalish; + 'marker-mid'?: Signalish; + markerMid?: Signalish; + 'marker-start'?: Signalish; + markerStart?: Signalish; + markerUnits?: Signalish; + markerWidth?: Signalish; + mask?: Signalish; + maskContentUnits?: Signalish; + maskUnits?: Signalish; + mathematical?: Signalish; + mode?: Signalish; + numOctaves?: Signalish; + offset?: Signalish; + opacity?: Signalish; + operator?: Signalish; + order?: Signalish; + orient?: Signalish; + orientation?: Signalish; + origin?: Signalish; + overflow?: Signalish; + 'overline-position'?: Signalish; + overlinePosition?: Signalish; + 'overline-thickness'?: Signalish; + overlineThickness?: Signalish; + 'paint-order'?: Signalish; + paintOrder?: Signalish; + 'panose-1'?: Signalish; + panose1?: Signalish; + pathLength?: Signalish; + patternContentUnits?: Signalish; + patternTransform?: Signalish; + patternUnits?: Signalish; + 'pointer-events'?: Signalish; + pointerEvents?: Signalish; + points?: Signalish; + pointsAtX?: Signalish; + pointsAtY?: Signalish; + pointsAtZ?: Signalish; + preserveAlpha?: Signalish; + preserveAspectRatio?: Signalish; + primitiveUnits?: Signalish; + r?: Signalish; + radius?: Signalish; + refX?: Signalish; + refY?: Signalish; + 'rendering-intent'?: Signalish; + renderingIntent?: Signalish; + repeatCount?: Signalish; + repeatDur?: Signalish; + requiredExtensions?: Signalish; + requiredFeatures?: Signalish; + restart?: Signalish; + result?: Signalish; + rotate?: Signalish; + rx?: Signalish; + ry?: Signalish; + scale?: Signalish; + seed?: Signalish; + 'shape-rendering'?: Signalish; + shapeRendering?: Signalish; + slope?: Signalish; + spacing?: Signalish; + specularConstant?: Signalish; + specularExponent?: Signalish; + speed?: Signalish; + spreadMethod?: Signalish; + startOffset?: Signalish; + stdDeviation?: Signalish; + stemh?: Signalish; + stemv?: Signalish; + stitchTiles?: Signalish; + 'stop-color'?: Signalish; + stopColor?: Signalish; + 'stop-opacity'?: Signalish; + stopOpacity?: Signalish; + 'strikethrough-position'?: Signalish; + strikethroughPosition?: Signalish; + 'strikethrough-thickness'?: Signalish; + strikethroughThickness?: Signalish; + string?: Signalish; + stroke?: Signalish; + 'stroke-dasharray'?: Signalish; + strokeDasharray?: Signalish; + 'stroke-dashoffset'?: Signalish; + strokeDashoffset?: Signalish; + 'stroke-linecap'?: Signalish<'butt' | 'round' | 'square' | 'inherit' | undefined>; + strokeLinecap?: Signalish<'butt' | 'round' | 'square' | 'inherit' | undefined>; + 'stroke-linejoin'?: Signalish<'miter' | 'round' | 'bevel' | 'inherit' | undefined>; + strokeLinejoin?: Signalish<'miter' | 'round' | 'bevel' | 'inherit' | undefined>; + 'stroke-miterlimit'?: Signalish; + strokeMiterlimit?: Signalish; + 'stroke-opacity'?: Signalish; + strokeOpacity?: Signalish; + 'stroke-width'?: Signalish; + strokeWidth?: Signalish; + surfaceScale?: Signalish; + systemLanguage?: Signalish; + tableValues?: Signalish; + targetX?: Signalish; + targetY?: Signalish; + 'text-anchor'?: Signalish; + textAnchor?: Signalish; + 'text-decoration'?: Signalish; + textDecoration?: Signalish; + textLength?: Signalish; + 'text-rendering'?: Signalish; + textRendering?: Signalish; + to?: Signalish; + transform?: Signalish; + 'transform-origin'?: Signalish; + transformOrigin?: Signalish; + type?: Signalish; + u1?: Signalish; + u2?: Signalish; + 'underline-position'?: Signalish; + underlinePosition?: Signalish; + 'underline-thickness'?: Signalish; + underlineThickness?: Signalish; + unicode?: Signalish; + 'unicode-bidi'?: Signalish; + unicodeBidi?: Signalish; + 'unicode-range'?: Signalish; + unicodeRange?: Signalish; + 'units-per-em'?: Signalish; + unitsPerEm?: Signalish; + 'v-alphabetic'?: Signalish; + vAlphabetic?: Signalish; + values?: Signalish; + 'vector-effect'?: Signalish; + vectorEffect?: Signalish; + version?: Signalish; + 'vert-adv-y'?: Signalish; + vertAdvY?: Signalish; + 'vert-origin-x'?: Signalish; + vertOriginX?: Signalish; + 'vert-origin-y'?: Signalish; + vertOriginY?: Signalish; + 'v-hanging'?: Signalish; + vHanging?: Signalish; + 'v-ideographic'?: Signalish; + vIdeographic?: Signalish; + viewBox?: Signalish; + viewTarget?: Signalish; + visibility?: Signalish; + 'v-mathematical'?: Signalish; + vMathematical?: Signalish; + width?: Signalish; + 'word-spacing'?: Signalish; + wordSpacing?: Signalish; + 'writing-mode'?: Signalish; + writingMode?: Signalish; + x1?: Signalish; + x2?: Signalish; + x?: Signalish; + xChannelSelector?: Signalish; + 'x-height'?: Signalish; + xHeight?: Signalish; + 'xlink:actuate'?: Signalish; + xlinkActuate?: Signalish; + 'xlink:arcrole'?: Signalish; + xlinkArcrole?: Signalish; + 'xlink:href'?: Signalish; + xlinkHref?: Signalish; + 'xlink:role'?: Signalish; + xlinkRole?: Signalish; + 'xlink:show'?: Signalish; + xlinkShow?: Signalish; + 'xlink:title'?: Signalish; + xlinkTitle?: Signalish; + 'xlink:type'?: Signalish; + xlinkType?: Signalish; + 'xml:base'?: Signalish; + xmlBase?: Signalish; + 'xml:lang'?: Signalish; + xmlLang?: Signalish; + xmlns?: Signalish; + xmlnsXlink?: Signalish; + 'xml:space'?: Signalish; + xmlSpace?: Signalish; + y1?: Signalish; + y2?: Signalish; + y?: Signalish; + yChannelSelector?: Signalish; + z?: Signalish; + zoomAndPan?: Signalish; +} +interface PathAttributes { + d: string; +} +type TargetedEvent = Omit & { + readonly currentTarget: Target; +}; +type TargetedAnimationEvent = TargetedEvent; +type TargetedClipboardEvent = TargetedEvent; +type TargetedCommandEvent = TargetedEvent; +type TargetedCompositionEvent = TargetedEvent; +type TargetedDragEvent = TargetedEvent; +type TargetedFocusEvent = TargetedEvent; +type TargetedInputEvent = TargetedEvent; +type TargetedKeyboardEvent = TargetedEvent; +type TargetedMouseEvent = TargetedEvent; +type TargetedPointerEvent = TargetedEvent; +type TargetedSnapEvent = TargetedEvent; +type TargetedSubmitEvent = TargetedEvent; +type TargetedTouchEvent = TargetedEvent; +type TargetedToggleEvent = TargetedEvent; +type TargetedTransitionEvent = TargetedEvent; +type TargetedUIEvent = TargetedEvent; +type TargetedWheelEvent = TargetedEvent; +type TargetedPictureInPictureEvent = TargetedEvent; +type EventHandler = { + bivarianceHack(event: E): void; +}['bivarianceHack']; +type AnimationEventHandler = EventHandler>; +type ClipboardEventHandler = EventHandler>; +type CommandEventHandler = EventHandler>; +type CompositionEventHandler = EventHandler>; +type DragEventHandler = EventHandler>; +type ToggleEventHandler = EventHandler>; +type FocusEventHandler = EventHandler>; +type GenericEventHandler = EventHandler>; +type InputEventHandler = EventHandler>; +type KeyboardEventHandler = EventHandler>; +type MouseEventHandler = EventHandler>; +type PointerEventHandler = EventHandler>; +type SnapEventHandler = EventHandler>; +type SubmitEventHandler = EventHandler>; +type TouchEventHandler = EventHandler>; +type TransitionEventHandler = EventHandler>; +type UIEventHandler = EventHandler>; +type WheelEventHandler = EventHandler>; +type PictureInPictureEventHandler = EventHandler>; +interface DOMAttributes extends PreactDOMAttributes { + // Image Events + onLoad?: GenericEventHandler | undefined; + onLoadCapture?: GenericEventHandler | undefined; + onError?: GenericEventHandler | undefined; + onErrorCapture?: GenericEventHandler | undefined; + // Clipboard Events + onCopy?: ClipboardEventHandler | undefined; + onCopyCapture?: ClipboardEventHandler | undefined; + onCut?: ClipboardEventHandler | undefined; + onCutCapture?: ClipboardEventHandler | undefined; + onPaste?: ClipboardEventHandler | undefined; + onPasteCapture?: ClipboardEventHandler | undefined; + // Composition Events + onCompositionEnd?: CompositionEventHandler | undefined; + onCompositionEndCapture?: CompositionEventHandler | undefined; + onCompositionStart?: CompositionEventHandler | undefined; + onCompositionStartCapture?: CompositionEventHandler | undefined; + onCompositionUpdate?: CompositionEventHandler | undefined; + onCompositionUpdateCapture?: CompositionEventHandler | undefined; + // Popover Events + onBeforeToggle?: ToggleEventHandler | undefined; + onToggle?: ToggleEventHandler | undefined; + // Dialog Events + onClose?: GenericEventHandler | undefined; + onCancel?: GenericEventHandler | undefined; + // Focus Events + onFocus?: FocusEventHandler | undefined; + onFocusCapture?: FocusEventHandler | undefined; + onFocusIn?: FocusEventHandler | undefined; + onFocusInCapture?: FocusEventHandler | undefined; + onFocusOut?: FocusEventHandler | undefined; + onFocusOutCapture?: FocusEventHandler | undefined; + onBlur?: FocusEventHandler | undefined; + onBlurCapture?: FocusEventHandler | undefined; + // Form Events + onChange?: GenericEventHandler | undefined; + onChangeCapture?: GenericEventHandler | undefined; + onInput?: InputEventHandler | undefined; + onInputCapture?: InputEventHandler | undefined; + onBeforeInput?: InputEventHandler | undefined; + onBeforeInputCapture?: InputEventHandler | undefined; + onSearch?: GenericEventHandler | undefined; + onSearchCapture?: GenericEventHandler | undefined; + onSubmit?: SubmitEventHandler | undefined; + onSubmitCapture?: SubmitEventHandler | undefined; + onInvalid?: GenericEventHandler | undefined; + onInvalidCapture?: GenericEventHandler | undefined; + onReset?: GenericEventHandler | undefined; + onResetCapture?: GenericEventHandler | undefined; + onFormData?: GenericEventHandler | undefined; + onFormDataCapture?: GenericEventHandler | undefined; + // Keyboard Events + onKeyDown?: KeyboardEventHandler | undefined; + onKeyDownCapture?: KeyboardEventHandler | undefined; + onKeyPress?: KeyboardEventHandler | undefined; + onKeyPressCapture?: KeyboardEventHandler | undefined; + onKeyUp?: KeyboardEventHandler | undefined; + onKeyUpCapture?: KeyboardEventHandler | undefined; + // Media Events + onAbort?: GenericEventHandler | undefined; + onAbortCapture?: GenericEventHandler | undefined; + onCanPlay?: GenericEventHandler | undefined; + onCanPlayCapture?: GenericEventHandler | undefined; + onCanPlayThrough?: GenericEventHandler | undefined; + onCanPlayThroughCapture?: GenericEventHandler | undefined; + onDurationChange?: GenericEventHandler | undefined; + onDurationChangeCapture?: GenericEventHandler | undefined; + onEmptied?: GenericEventHandler | undefined; + onEmptiedCapture?: GenericEventHandler | undefined; + onEncrypted?: GenericEventHandler | undefined; + onEncryptedCapture?: GenericEventHandler | undefined; + onEnded?: GenericEventHandler | undefined; + onEndedCapture?: GenericEventHandler | undefined; + onLoadedData?: GenericEventHandler | undefined; + onLoadedDataCapture?: GenericEventHandler | undefined; + onLoadedMetadata?: GenericEventHandler | undefined; + onLoadedMetadataCapture?: GenericEventHandler | undefined; + onLoadStart?: GenericEventHandler | undefined; + onLoadStartCapture?: GenericEventHandler | undefined; + onPause?: GenericEventHandler | undefined; + onPauseCapture?: GenericEventHandler | undefined; + onPlay?: GenericEventHandler | undefined; + onPlayCapture?: GenericEventHandler | undefined; + onPlaying?: GenericEventHandler | undefined; + onPlayingCapture?: GenericEventHandler | undefined; + onProgress?: GenericEventHandler | undefined; + onProgressCapture?: GenericEventHandler | undefined; + onRateChange?: GenericEventHandler | undefined; + onRateChangeCapture?: GenericEventHandler | undefined; + onSeeked?: GenericEventHandler | undefined; + onSeekedCapture?: GenericEventHandler | undefined; + onSeeking?: GenericEventHandler | undefined; + onSeekingCapture?: GenericEventHandler | undefined; + onStalled?: GenericEventHandler | undefined; + onStalledCapture?: GenericEventHandler | undefined; + onSuspend?: GenericEventHandler | undefined; + onSuspendCapture?: GenericEventHandler | undefined; + onTimeUpdate?: GenericEventHandler | undefined; + onTimeUpdateCapture?: GenericEventHandler | undefined; + onVolumeChange?: GenericEventHandler | undefined; + onVolumeChangeCapture?: GenericEventHandler | undefined; + onWaiting?: GenericEventHandler | undefined; + onWaitingCapture?: GenericEventHandler | undefined; + // MouseEvents + onClick?: MouseEventHandler | undefined; + onClickCapture?: MouseEventHandler | undefined; + onContextMenu?: MouseEventHandler | undefined; + onContextMenuCapture?: MouseEventHandler | undefined; + onDblClick?: MouseEventHandler | undefined; + onDblClickCapture?: MouseEventHandler | undefined; + onDrag?: DragEventHandler | undefined; + onDragCapture?: DragEventHandler | undefined; + onDragEnd?: DragEventHandler | undefined; + onDragEndCapture?: DragEventHandler | undefined; + onDragEnter?: DragEventHandler | undefined; + onDragEnterCapture?: DragEventHandler | undefined; + onDragExit?: DragEventHandler | undefined; + onDragExitCapture?: DragEventHandler | undefined; + onDragLeave?: DragEventHandler | undefined; + onDragLeaveCapture?: DragEventHandler | undefined; + onDragOver?: DragEventHandler | undefined; + onDragOverCapture?: DragEventHandler | undefined; + onDragStart?: DragEventHandler | undefined; + onDragStartCapture?: DragEventHandler | undefined; + onDrop?: DragEventHandler | undefined; + onDropCapture?: DragEventHandler | undefined; + onMouseDown?: MouseEventHandler | undefined; + onMouseDownCapture?: MouseEventHandler | undefined; + onMouseEnter?: MouseEventHandler | undefined; + onMouseEnterCapture?: MouseEventHandler | undefined; + onMouseLeave?: MouseEventHandler | undefined; + onMouseLeaveCapture?: MouseEventHandler | undefined; + onMouseMove?: MouseEventHandler | undefined; + onMouseMoveCapture?: MouseEventHandler | undefined; + onMouseOut?: MouseEventHandler | undefined; + onMouseOutCapture?: MouseEventHandler | undefined; + onMouseOver?: MouseEventHandler | undefined; + onMouseOverCapture?: MouseEventHandler | undefined; + onMouseUp?: MouseEventHandler | undefined; + onMouseUpCapture?: MouseEventHandler | undefined; + // TODO: Spec for `auxclick` events was changed to make it a PointerEvent but only + // Chrome has support for it yet. When more browsers align we should change this. + // https://developer.mozilla.org/en-US/docs/Web/API/Element/auxclick_event#browser_compatibility + onAuxClick?: MouseEventHandler | undefined; + onAuxClickCapture?: MouseEventHandler | undefined; + // Selection Events + onSelect?: GenericEventHandler | undefined; + onSelectCapture?: GenericEventHandler | undefined; + // Touch Events + onTouchCancel?: TouchEventHandler | undefined; + onTouchCancelCapture?: TouchEventHandler | undefined; + onTouchEnd?: TouchEventHandler | undefined; + onTouchEndCapture?: TouchEventHandler | undefined; + onTouchMove?: TouchEventHandler | undefined; + onTouchMoveCapture?: TouchEventHandler | undefined; + onTouchStart?: TouchEventHandler | undefined; + onTouchStartCapture?: TouchEventHandler | undefined; + // Pointer Events + onPointerOver?: PointerEventHandler | undefined; + onPointerOverCapture?: PointerEventHandler | undefined; + onPointerEnter?: PointerEventHandler | undefined; + onPointerEnterCapture?: PointerEventHandler | undefined; + onPointerDown?: PointerEventHandler | undefined; + onPointerDownCapture?: PointerEventHandler | undefined; + onPointerMove?: PointerEventHandler | undefined; + onPointerMoveCapture?: PointerEventHandler | undefined; + onPointerUp?: PointerEventHandler | undefined; + onPointerUpCapture?: PointerEventHandler | undefined; + onPointerCancel?: PointerEventHandler | undefined; + onPointerCancelCapture?: PointerEventHandler | undefined; + onPointerOut?: PointerEventHandler | undefined; + onPointerOutCapture?: PointerEventHandler | undefined; + onPointerLeave?: PointerEventHandler | undefined; + onPointerLeaveCapture?: PointerEventHandler | undefined; + onGotPointerCapture?: PointerEventHandler | undefined; + onGotPointerCaptureCapture?: PointerEventHandler | undefined; + onLostPointerCapture?: PointerEventHandler | undefined; + onLostPointerCaptureCapture?: PointerEventHandler | undefined; + // Scroll Events + onScroll?: GenericEventHandler | undefined; + onScrollCapture?: GenericEventHandler | undefined; + onScrollEnd?: GenericEventHandler | undefined; + onScrollEndCapture?: GenericEventHandler | undefined; + onScrollSnapChange?: SnapEventHandler | undefined; + onScrollSnapChangeCapture?: SnapEventHandler | undefined; + onScrollSnapChanging?: SnapEventHandler | undefined; + onScrollSnapChangingCapture?: SnapEventHandler | undefined; + // Wheel Events + onWheel?: WheelEventHandler | undefined; + onWheelCapture?: WheelEventHandler | undefined; + // Animation Events + onAnimationStart?: AnimationEventHandler | undefined; + onAnimationStartCapture?: AnimationEventHandler | undefined; + onAnimationEnd?: AnimationEventHandler | undefined; + onAnimationEndCapture?: AnimationEventHandler | undefined; + onAnimationIteration?: AnimationEventHandler | undefined; + onAnimationIterationCapture?: AnimationEventHandler | undefined; + // Transition Events + onTransitionCancel?: TransitionEventHandler; + onTransitionCancelCapture?: TransitionEventHandler; + onTransitionEnd?: TransitionEventHandler; + onTransitionEndCapture?: TransitionEventHandler; + onTransitionRun?: TransitionEventHandler; + onTransitionRunCapture?: TransitionEventHandler; + onTransitionStart?: TransitionEventHandler; + onTransitionStartCapture?: TransitionEventHandler; + // PictureInPicture Events + onEnterPictureInPicture?: PictureInPictureEventHandler; + onEnterPictureInPictureCapture?: PictureInPictureEventHandler; + onLeavePictureInPicture?: PictureInPictureEventHandler; + onLeavePictureInPictureCapture?: PictureInPictureEventHandler; + onResize?: PictureInPictureEventHandler; + onResizeCapture?: PictureInPictureEventHandler; + onCommand?: CommandEventHandler; +} +// All the WAI-ARIA 1.1 attributes from https://www.w3.org/TR/wai-aria-1.1/ +interface AriaAttributes { + /** Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application. */ + 'aria-activedescendant'?: Signalish; + /** Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute. */ + 'aria-atomic'?: Signalish; + /** + * Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be + * presented if they are made. + */ + 'aria-autocomplete'?: Signalish<'none' | 'inline' | 'list' | 'both' | undefined>; + /** + * Defines a string value that labels the current element, which is intended to be converted into Braille. + * @see aria-label. + */ + 'aria-braillelabel'?: Signalish; + /** + * Defines a human-readable, author-localized abbreviated description for the role of an element, which is intended to be converted into Braille. + * @see aria-roledescription. + */ + 'aria-brailleroledescription'?: Signalish; + /** Indicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user. */ + 'aria-busy'?: Signalish; + /** + * Indicates the current "checked" state of checkboxes, radio buttons, and other widgets. + * @see aria-pressed + * @see aria-selected. + */ + 'aria-checked'?: Signalish; + /** + * Defines the total number of columns in a table, grid, or treegrid. + * @see aria-colindex. + */ + 'aria-colcount'?: Signalish; + /** + * Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid. + * @see aria-colcount + * @see aria-colspan. + */ + 'aria-colindex'?: Signalish; + /** + * Defines a human readable text alternative of aria-colindex. + * @see aria-rowindextext. + */ + 'aria-colindextext'?: Signalish; + /** + * Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid. + * @see aria-colindex + * @see aria-rowspan. + */ + 'aria-colspan'?: Signalish; + /** + * Identifies the element (or elements) whose contents or presence are controlled by the current element. + * @see aria-owns. + */ + 'aria-controls'?: Signalish; + /** Indicates the element that represents the current item within a container or set of related elements. */ + 'aria-current'?: Signalish; + /** + * Identifies the element (or elements) that describes the object. + * @see aria-labelledby + */ + 'aria-describedby'?: Signalish; + /** + * Defines a string value that describes or annotates the current element. + * @see related aria-describedby. + */ + 'aria-description'?: Signalish; + /** + * Identifies the element that provides a detailed, extended description for the object. + * @see aria-describedby. + */ + 'aria-details'?: Signalish; + /** + * Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable. + * @see aria-hidden + * @see aria-readonly. + */ + 'aria-disabled'?: Signalish; + /** + * Indicates what functions can be performed when a dragged object is released on the drop target. + * @deprecated in ARIA 1.1 + */ + 'aria-dropeffect'?: Signalish<'none' | 'copy' | 'execute' | 'link' | 'move' | 'popup' | undefined>; + /** + * Identifies the element that provides an error message for the object. + * @see aria-invalid + * @see aria-describedby. + */ + 'aria-errormessage'?: Signalish; + /** Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed. */ + 'aria-expanded'?: Signalish; + /** + * Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion, + * allows assistive technology to override the general default of reading in document source order. + */ + 'aria-flowto'?: Signalish; + /** + * Indicates an element's "grabbed" state in a drag-and-drop operation. + * @deprecated in ARIA 1.1 + */ + 'aria-grabbed'?: Signalish; + /** Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element. */ + 'aria-haspopup'?: Signalish; + /** + * Indicates whether the element is exposed to an accessibility API. + * @see aria-disabled. + */ + 'aria-hidden'?: Signalish; + /** + * Indicates the entered value does not conform to the format expected by the application. + * @see aria-errormessage. + */ + 'aria-invalid'?: Signalish; + /** Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element. */ + 'aria-keyshortcuts'?: Signalish; + /** + * Defines a string value that labels the current element. + * @see aria-labelledby. + */ + 'aria-label'?: Signalish; + /** + * Identifies the element (or elements) that labels the current element. + * @see aria-describedby. + */ + 'aria-labelledby'?: Signalish; + /** Defines the hierarchical level of an element within a structure. */ + 'aria-level'?: Signalish; + /** Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region. */ + 'aria-live'?: Signalish<'off' | 'assertive' | 'polite' | undefined>; + /** Indicates whether an element is modal when displayed. */ + 'aria-modal'?: Signalish; + /** Indicates whether a text box accepts multiple lines of input or only a single line. */ + 'aria-multiline'?: Signalish; + /** Indicates that the user may select more than one item from the current selectable descendants. */ + 'aria-multiselectable'?: Signalish; + /** Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous. */ + 'aria-orientation'?: Signalish<'horizontal' | 'vertical' | undefined>; + /** + * Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship + * between DOM elements where the DOM hierarchy cannot be used to represent the relationship. + * @see aria-controls. + */ + 'aria-owns'?: Signalish; + /** + * Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. + * A hint could be a sample value or a brief description of the expected format. + */ + 'aria-placeholder'?: Signalish; + /** + * Defines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. + * @see aria-setsize. + */ + 'aria-posinset'?: Signalish; + /** + * Indicates the current "pressed" state of toggle buttons. + * @see aria-checked + * @see aria-selected. + */ + 'aria-pressed'?: Signalish; + /** + * Indicates that the element is not editable, but is otherwise operable. + * @see aria-disabled. + */ + 'aria-readonly'?: Signalish; + /** + * Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. + * @see aria-atomic. + */ + 'aria-relevant'?: Signalish<'additions' | 'additions removals' | 'additions text' | 'all' | 'removals' | 'removals additions' | 'removals text' | 'text' | 'text additions' | 'text removals' | undefined>; + /** Indicates that user input is required on the element before a form may be submitted. */ + 'aria-required'?: Signalish; + /** Defines a human-readable, author-localized description for the role of an element. */ + 'aria-roledescription'?: Signalish; + /** + * Defines the total number of rows in a table, grid, or treegrid. + * @see aria-rowindex. + */ + 'aria-rowcount'?: Signalish; + /** + * Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid. + * @see aria-rowcount + * @see aria-rowspan. + */ + 'aria-rowindex'?: Signalish; + /** + * Defines a human readable text alternative of aria-rowindex. + * @see aria-colindextext. + */ + 'aria-rowindextext'?: Signalish; + /** + * Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid. + * @see aria-rowindex + * @see aria-colspan. + */ + 'aria-rowspan'?: Signalish; + /** + * Indicates the current "selected" state of various widgets. + * @see aria-checked + * @see aria-pressed. + */ + 'aria-selected'?: Signalish; + /** + * Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. + * @see aria-posinset. + */ + 'aria-setsize'?: Signalish; + /** Indicates if items in a table or grid are sorted in ascending or descending order. */ + 'aria-sort'?: Signalish<'none' | 'ascending' | 'descending' | 'other' | undefined>; + /** Defines the maximum allowed value for a range widget. */ + 'aria-valuemax'?: Signalish; + /** Defines the minimum allowed value for a range widget. */ + 'aria-valuemin'?: Signalish; + /** + * Defines the current value for a range widget. + * @see aria-valuetext. + */ + 'aria-valuenow'?: Signalish; + /** Defines the human readable text alternative of aria-valuenow for a range widget. */ + 'aria-valuetext'?: Signalish; +} +// All the WAI-ARIA 1.2 role attribute values from https://www.w3.org/TR/wai-aria-1.2/#role_definitions +type WAIAriaRole = 'alert' | 'alertdialog' | 'application' | 'article' | 'banner' | 'blockquote' | 'button' | 'caption' | 'cell' | 'checkbox' | 'code' | 'columnheader' | 'combobox' | 'command' | 'complementary' | 'composite' | 'contentinfo' | 'definition' | 'deletion' | 'dialog' | 'directory' | 'document' | 'emphasis' | 'feed' | 'figure' | 'form' | 'grid' | 'gridcell' | 'group' | 'heading' | 'img' | 'input' | 'insertion' | 'landmark' | 'link' | 'list' | 'listbox' | 'listitem' | 'log' | 'main' | 'marquee' | 'math' | 'meter' | 'menu' | 'menubar' | 'menuitem' | 'menuitemcheckbox' | 'menuitemradio' | 'navigation' | 'none' | 'note' | 'option' | 'paragraph' | 'presentation' | 'progressbar' | 'radio' | 'radiogroup' | 'range' | 'region' | 'roletype' | 'row' | 'rowgroup' | 'rowheader' | 'scrollbar' | 'search' | 'searchbox' | 'section' | 'sectionhead' | 'select' | 'separator' | 'slider' | 'spinbutton' | 'status' | 'strong' | 'structure' | 'subscript' | 'superscript' | 'switch' | 'tab' | 'table' | 'tablist' | 'tabpanel' | 'term' | 'textbox' | 'time' | 'timer' | 'toolbar' | 'tooltip' | 'tree' | 'treegrid' | 'treeitem' | 'widget' | 'window' | 'none presentation'; +// All the Digital Publishing WAI-ARIA 1.0 role attribute values from https://www.w3.org/TR/dpub-aria-1.0/#role_definitions +type DPubAriaRole = 'doc-abstract' | 'doc-acknowledgments' | 'doc-afterword' | 'doc-appendix' | 'doc-backlink' | 'doc-biblioentry' | 'doc-bibliography' | 'doc-biblioref' | 'doc-chapter' | 'doc-colophon' | 'doc-conclusion' | 'doc-cover' | 'doc-credit' | 'doc-credits' | 'doc-dedication' | 'doc-endnote' | 'doc-endnotes' | 'doc-epigraph' | 'doc-epilogue' | 'doc-errata' | 'doc-example' | 'doc-footnote' | 'doc-foreword' | 'doc-glossary' | 'doc-glossref' | 'doc-index' | 'doc-introduction' | 'doc-noteref' | 'doc-notice' | 'doc-pagebreak' | 'doc-pagelist' | 'doc-part' | 'doc-preface' | 'doc-prologue' | 'doc-pullquote' | 'doc-qna' | 'doc-subtitle' | 'doc-tip' | 'doc-toc'; +type AriaRole = WAIAriaRole | DPubAriaRole; +interface AllHTMLAttributes extends ClassAttributes, DOMAttributes, AriaAttributes { + // Standard HTML Attributes + accept?: Signalish; + 'accept-charset'?: Signalish; + acceptCharset?: Signalish; + accesskey?: Signalish; + accessKey?: Signalish; + action?: Signalish; + allow?: Signalish; + allowfullscreen?: Signalish; + allowFullScreen?: Signalish; + allowtransparency?: Signalish; + allowTransparency?: Signalish; + alt?: Signalish; + as?: Signalish; + async?: Signalish; + autocomplete?: Signalish; + autoComplete?: Signalish; + autocorrect?: Signalish; + autoCorrect?: Signalish; + autofocus?: Signalish; + autoFocus?: Signalish; + autoplay?: Signalish; + autoPlay?: Signalish; + capture?: Signalish; + cellpadding?: Signalish; + cellPadding?: Signalish; + cellspacing?: Signalish; + cellSpacing?: Signalish; + charset?: Signalish; + charSet?: Signalish; + challenge?: Signalish; + checked?: Signalish; + cite?: Signalish; + class?: Signalish; + className?: Signalish; + cols?: Signalish; + colspan?: Signalish; + colSpan?: Signalish; + command?: Signalish; + commandfor?: Signalish; + commandFor?: Signalish; + content?: Signalish; + contenteditable?: Signalish; + contentEditable?: Signalish; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/contextmenu */ + contextmenu?: Signalish; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/contextmenu */ + contextMenu?: Signalish; + controls?: Signalish; + controlslist?: Signalish; + controlsList?: Signalish; + coords?: Signalish; + crossorigin?: Signalish; + crossOrigin?: Signalish; + currentTime?: Signalish; + data?: Signalish; + datetime?: Signalish; + dateTime?: Signalish; + default?: Signalish; + defaultChecked?: Signalish; + defaultMuted?: Signalish; + defaultPlaybackRate?: Signalish; + defaultValue?: Signalish; + defer?: Signalish; + dir?: Signalish<'auto' | 'rtl' | 'ltr' | undefined>; + disabled?: Signalish; + disableremoteplayback?: Signalish; + disableRemotePlayback?: Signalish; + download?: Signalish; + decoding?: Signalish<'sync' | 'async' | 'auto' | undefined>; + draggable?: Signalish; + enctype?: Signalish; + encType?: Signalish; + enterkeyhint?: Signalish<'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send' | undefined>; + elementtiming?: Signalish; + elementTiming?: Signalish; + exportparts?: Signalish; + for?: Signalish; + form?: Signalish; + formaction?: Signalish; + formAction?: Signalish; + formenctype?: Signalish; + formEncType?: Signalish; + formmethod?: Signalish; + formMethod?: Signalish; + formnovalidate?: Signalish; + formNoValidate?: Signalish; + formtarget?: Signalish; + formTarget?: Signalish; + frameborder?: Signalish; + frameBorder?: Signalish; + headers?: Signalish; + height?: Signalish; + hidden?: Signalish; + high?: Signalish; + href?: Signalish; + hreflang?: Signalish; + hrefLang?: Signalish; + htmlFor?: Signalish; + 'http-equiv'?: Signalish; + httpEquiv?: Signalish; + icon?: Signalish; + id?: Signalish; + indeterminate?: Signalish; + inert?: Signalish; + inputmode?: Signalish; + inputMode?: Signalish; + integrity?: Signalish; + is?: Signalish; + keyparams?: Signalish; + keyParams?: Signalish; + keytype?: Signalish; + keyType?: Signalish; + kind?: Signalish; + label?: Signalish; + lang?: Signalish; + list?: Signalish; + loading?: Signalish<'eager' | 'lazy' | undefined>; + loop?: Signalish; + low?: Signalish; + manifest?: Signalish; + marginheight?: Signalish; + marginHeight?: Signalish; + marginwidth?: Signalish; + marginWidth?: Signalish; + max?: Signalish; + maxlength?: Signalish; + maxLength?: Signalish; + media?: Signalish; + mediaGroup?: Signalish; + method?: Signalish; + min?: Signalish; + minlength?: Signalish; + minLength?: Signalish; + multiple?: Signalish; + muted?: Signalish; + name?: Signalish; + nomodule?: Signalish; + nonce?: Signalish; + novalidate?: Signalish; + noValidate?: Signalish; + open?: Signalish; + optimum?: Signalish; + part?: Signalish; + pattern?: Signalish; + ping?: Signalish; + placeholder?: Signalish; + playsinline?: Signalish; + playsInline?: Signalish; + playbackRate?: Signalish; + popover?: Signalish<'auto' | 'hint' | 'manual' | boolean | undefined>; + popovertarget?: Signalish; + popoverTarget?: Signalish; + popovertargetaction?: Signalish<'hide' | 'show' | 'toggle' | undefined>; + popoverTargetAction?: Signalish<'hide' | 'show' | 'toggle' | undefined>; + poster?: Signalish; + preload?: Signalish<'auto' | 'metadata' | 'none' | undefined>; + preservesPitch?: Signalish; + radioGroup?: Signalish; + readonly?: Signalish; + readOnly?: Signalish; + referrerpolicy?: Signalish<'no-referrer' | 'no-referrer-when-downgrade' | 'origin' | 'origin-when-cross-origin' | 'same-origin' | 'strict-origin' | 'strict-origin-when-cross-origin' | 'unsafe-url' | undefined>; + rel?: Signalish; + required?: Signalish; + reversed?: Signalish; + role?: Signalish; + rows?: Signalish; + rowspan?: Signalish; + rowSpan?: Signalish; + sandbox?: Signalish; + scope?: Signalish; + scoped?: Signalish; + scrolling?: Signalish; + seamless?: Signalish; + selected?: Signalish; + shape?: Signalish; + size?: Signalish; + sizes?: Signalish; + slot?: Signalish; + span?: Signalish; + spellcheck?: Signalish; + src?: Signalish; + srcdoc?: Signalish; + srcDoc?: Signalish; + srclang?: Signalish; + srcLang?: Signalish; + srcset?: Signalish; + srcSet?: Signalish; + srcObject?: Signalish; + start?: Signalish; + step?: Signalish; + style?: Signalish; + summary?: Signalish; + tabindex?: Signalish; + tabIndex?: Signalish; + target?: Signalish; + title?: Signalish; + type?: Signalish; + usemap?: Signalish; + useMap?: Signalish; + value?: Signalish; + volume?: Signalish; + width?: Signalish; + wmode?: Signalish; + wrap?: Signalish; + // Non-standard Attributes + autocapitalize?: Signalish<'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters' | undefined>; + autoCapitalize?: Signalish<'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters' | undefined>; + disablePictureInPicture?: Signalish; + results?: Signalish; + translate?: Signalish; + // RDFa Attributes + about?: Signalish; + datatype?: Signalish; + inlist?: Signalish; + prefix?: Signalish; + property?: Signalish; + resource?: Signalish; + typeof?: Signalish; + vocab?: Signalish; + // Microdata Attributes + itemprop?: Signalish; + itemProp?: Signalish; + itemscope?: Signalish; + itemScope?: Signalish; + itemtype?: Signalish; + itemType?: Signalish; + itemid?: Signalish; + itemID?: Signalish; + itemref?: Signalish; + itemRef?: Signalish; +} +interface HTMLAttributes extends ClassAttributes, DOMAttributes, AriaAttributes { + // Standard HTML Attributes + accesskey?: Signalish; + accessKey?: Signalish; + autocapitalize?: Signalish<'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters' | undefined>; + autoCapitalize?: Signalish<'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters' | undefined>; + autocorrect?: Signalish; + autoCorrect?: Signalish; + autofocus?: Signalish; + autoFocus?: Signalish; + class?: Signalish; + className?: Signalish; + contenteditable?: Signalish; + contentEditable?: Signalish; + dir?: Signalish<'auto' | 'rtl' | 'ltr' | undefined>; + draggable?: Signalish; + enterkeyhint?: Signalish<'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send' | undefined>; + exportparts?: Signalish; + hidden?: Signalish; + id?: Signalish; + inert?: Signalish; + inputmode?: Signalish; + inputMode?: Signalish; + is?: Signalish; + lang?: Signalish; + nonce?: Signalish; + part?: Signalish; + popover?: Signalish<'auto' | 'hint' | 'manual' | boolean | undefined>; + slot?: Signalish; + spellcheck?: Signalish; + style?: Signalish; + tabindex?: Signalish; + tabIndex?: Signalish; + title?: Signalish; + translate?: Signalish; + // WAI-ARIA Attributes + // Most elements only allow a subset of roles and so this + // is overwritten in many of the per-element interfaces below + role?: Signalish; + // Non-standard Attributes + disablepictureinpicture?: Signalish; + disablePictureInPicture?: Signalish; + elementtiming?: Signalish; + elementTiming?: Signalish; + results?: Signalish; + // RDFa Attributes + about?: Signalish; + datatype?: Signalish; + inlist?: Signalish; + prefix?: Signalish; + property?: Signalish; + resource?: Signalish; + typeof?: Signalish; + vocab?: Signalish; + // Microdata Attributes + itemid?: Signalish; + itemID?: Signalish; + itemprop?: Signalish; + itemProp?: Signalish; + itemref?: Signalish; + itemRef?: Signalish; + itemscope?: Signalish; + itemScope?: Signalish; + itemtype?: Signalish; + itemType?: Signalish; +} +type HTMLAttributeReferrerPolicy = '' | 'no-referrer' | 'no-referrer-when-downgrade' | 'origin' | 'origin-when-cross-origin' | 'same-origin' | 'strict-origin' | 'strict-origin-when-cross-origin' | 'unsafe-url'; +type HTMLAttributeAnchorTarget = '_self' | '_blank' | '_parent' | '_top' | (string & {}); +interface PartialAnchorHTMLAttributes extends HTMLAttributes { + download?: Signalish; + hreflang?: Signalish; + hrefLang?: Signalish; + media?: Signalish; + ping?: Signalish; + rel?: Signalish; + target?: Signalish; + type?: Signalish; + referrerpolicy?: Signalish; + referrerPolicy?: Signalish; +} +type AnchorAriaRoles = { + href: Signalish; + role?: Signalish<'link' | 'button' | 'checkbox' | 'menuitem' | 'menuitemcheckbox' | 'menuitemradio' | 'option' | 'radio' | 'switch' | 'tab' | 'treeitem' | 'doc-backlink' | 'doc-biblioref' | 'doc-glossref' | 'doc-noteref' | undefined>; +} | { + href?: never; + role?: Signalish; +}; +type AccessibleAnchorHTMLAttributes = Omit, 'role'> & AnchorAriaRoles; +interface AnchorHTMLAttributes extends PartialAnchorHTMLAttributes { + href?: Signalish; + role?: Signalish; +} +interface PartialAreaHTMLAttributes extends HTMLAttributes { + alt?: Signalish; + coords?: Signalish; + download?: Signalish; + hreflang?: Signalish; + hrefLang?: Signalish; + media?: Signalish; + referrerpolicy?: Signalish; + referrerPolicy?: Signalish; + rel?: Signalish; + shape?: Signalish; + target?: Signalish; +} +type AreaAriaRoles = { + href: Signalish; + role?: Signalish<'link' | undefined>; +} | { + href?: never; + role?: Signalish<'button' | 'link' | undefined>; +}; +type AccessibleAreaHTMLAttributes = Omit, 'role'> & AreaAriaRoles; +interface AreaHTMLAttributes extends PartialAreaHTMLAttributes { + href?: Signalish; + role?: Signalish<'button' | 'link' | undefined>; +} +interface ArticleHTMLAttributes extends HTMLAttributes { + role?: Signalish<'article' | 'application' | 'document' | 'feed' | 'main' | 'none' | 'presentation' | 'region' | undefined>; +} +interface AsideHTMLAttributes extends HTMLAttributes { + role?: Signalish<'complementary' | 'feed' | 'none' | 'note' | 'presentation' | 'region' | 'search' | 'doc-dedication' | 'doc-example' | 'doc-footnote' | 'doc-glossary' | 'doc-pullquote' | 'doc-tip' | undefined>; +} +interface AudioHTMLAttributes extends MediaHTMLAttributes { + role?: Signalish<'application' | undefined>; +} +interface BaseHTMLAttributes extends HTMLAttributes { + href?: Signalish; + role?: never; + target?: Signalish; +} +interface BlockquoteHTMLAttributes extends HTMLAttributes { + cite?: Signalish; +} +interface BrHTMLAttributes extends HTMLAttributes { + role?: Signalish<'none' | 'presentation' | undefined>; +} +interface ButtonHTMLAttributes extends HTMLAttributes { + command?: Signalish; + commandfor?: Signalish; + commandFor?: Signalish; + disabled?: Signalish; + form?: Signalish; + formaction?: Signalish; + formAction?: Signalish; + formenctype?: Signalish; + formEncType?: Signalish; + formmethod?: Signalish; + formMethod?: Signalish; + formnovalidate?: Signalish; + formNoValidate?: Signalish; + formtarget?: Signalish; + formTarget?: Signalish; + name?: Signalish; + popovertarget?: Signalish; + popoverTarget?: Signalish; + popovertargetaction?: Signalish<'hide' | 'show' | 'toggle' | undefined>; + popoverTargetAction?: Signalish<'hide' | 'show' | 'toggle' | undefined>; + role?: Signalish<'button' | 'checkbox' | 'combobox' | 'gridcell' | 'link' | 'menuitem' | 'menuitemcheckbox' | 'menuitemradio' | 'option' | 'radio' | 'separator' | 'slider' | 'switch' | 'tab' | 'treeitem' | undefined>; + type?: Signalish<'submit' | 'reset' | 'button' | undefined>; + value?: Signalish; +} +interface CanvasHTMLAttributes extends HTMLAttributes { + height?: Signalish; + width?: Signalish; +} +interface CaptionHTMLAttributes extends HTMLAttributes { + role?: 'caption'; +} +interface ColHTMLAttributes extends HTMLAttributes { + role?: never; + span?: Signalish; + width?: Signalish; +} +interface ColgroupHTMLAttributes extends HTMLAttributes { + role?: never; + span?: Signalish; +} +interface DataHTMLAttributes extends HTMLAttributes { + value?: Signalish; +} +interface DataListHTMLAttributes extends HTMLAttributes { + role?: Signalish<'listbox' | undefined>; +} +interface DdHTMLAttributes extends HTMLAttributes { + role?: never; +} +interface DelHTMLAttributes extends HTMLAttributes { + cite?: Signalish; + datetime?: Signalish; + dateTime?: Signalish; +} +interface DetailsHTMLAttributes extends HTMLAttributes { + name?: Signalish; + open?: Signalish; + role?: Signalish<'group' | undefined>; +} +interface DialogHTMLAttributes extends HTMLAttributes { + onCancel?: GenericEventHandler | undefined; + onClose?: GenericEventHandler | undefined; + open?: Signalish; + closedby?: Signalish<'none' | 'closerequest' | 'any' | undefined>; + closedBy?: Signalish<'none' | 'closerequest' | 'any' | undefined>; + role?: Signalish<'dialog' | 'alertdialog' | undefined>; +} +interface DlHTMLAttributes extends HTMLAttributes { + role?: Signalish<'group' | 'list' | 'none' | 'presentation' | undefined>; +} +interface DtHTMLAttributes extends HTMLAttributes { + role?: Signalish<'listitem' | undefined>; +} +interface EmbedHTMLAttributes extends HTMLAttributes { + height?: Signalish; + role?: Signalish<'application' | 'document' | 'img' | 'none' | 'presentation' | undefined>; + src?: Signalish; + type?: Signalish; + width?: Signalish; +} +interface FieldsetHTMLAttributes extends HTMLAttributes { + disabled?: Signalish; + form?: Signalish; + name?: Signalish; + role?: Signalish<'group' | 'none' | 'presentation' | 'radiogroup' | undefined>; +} +interface FigcaptionHTMLAttributes extends HTMLAttributes { + role?: Signalish<'group' | 'none' | 'presentation' | undefined>; +} +interface FooterHTMLAttributes extends HTMLAttributes { + role?: Signalish<'contentinfo' | 'group' | 'none' | 'presentation' | 'doc-footnote' | undefined>; +} +interface FormHTMLAttributes extends HTMLAttributes { + 'accept-charset'?: Signalish; + acceptCharset?: Signalish; + action?: Signalish; + autocomplete?: Signalish; + autoComplete?: Signalish; + enctype?: Signalish; + encType?: Signalish; + method?: Signalish; + name?: Signalish; + novalidate?: Signalish; + noValidate?: Signalish; + rel?: Signalish; + role?: Signalish<'form' | 'none' | 'presentation' | 'search' | undefined>; + target?: Signalish; +} +interface HeadingHTMLAttributes extends HTMLAttributes { + role?: Signalish<'heading' | 'none' | 'presentation' | 'tab' | 'doc-subtitle' | undefined>; +} +interface HeadHTMLAttributes extends HTMLAttributes { + role?: never; +} +interface HeaderHTMLAttributes extends HTMLAttributes { + role?: Signalish<'banner' | 'group' | 'none' | 'presentation' | undefined>; +} +interface HrHTMLAttributes extends HTMLAttributes { + role?: Signalish<'separator' | 'none' | 'presentation' | 'doc-pagebreak' | undefined>; +} +interface HtmlHTMLAttributes extends HTMLAttributes { + role?: Signalish<'document' | undefined>; +} +interface IframeHTMLAttributes extends HTMLAttributes { + allow?: Signalish; + allowfullscreen?: Signalish; + allowFullScreen?: Signalish; + allowtransparency?: Signalish; + allowTransparency?: Signalish; + /** @deprecated */ + frameborder?: Signalish; + /** @deprecated */ + frameBorder?: Signalish; + height?: Signalish; + loading?: Signalish<'eager' | 'lazy' | undefined>; + /** @deprecated */ + marginheight?: Signalish; + /** @deprecated */ + marginHeight?: Signalish; + /** @deprecated */ + marginwidth?: Signalish; + /** @deprecated */ + marginWidth?: Signalish; + name?: Signalish; + referrerpolicy?: Signalish; + referrerPolicy?: Signalish; + role?: Signalish<'application' | 'document' | 'img' | 'none' | 'presentation' | undefined>; + sandbox?: Signalish; + /** @deprecated */ + scrolling?: Signalish; + seamless?: Signalish; + src?: Signalish; + srcdoc?: Signalish; + srcDoc?: Signalish; + width?: Signalish; +} +type HTMLAttributeCrossOrigin = 'anonymous' | 'use-credentials'; +interface PartialImgHTMLAttributes extends HTMLAttributes { + crossorigin?: Signalish; + crossOrigin?: Signalish; + decoding?: Signalish<'async' | 'auto' | 'sync' | undefined>; + fetchpriority?: Signalish<'high' | 'auto' | 'low' | undefined>; + fetchPriority?: Signalish<'high' | 'auto' | 'low' | undefined>; + height?: Signalish; + loading?: Signalish<'eager' | 'lazy' | undefined>; + referrerpolicy?: Signalish; + referrerPolicy?: Signalish; + sizes?: Signalish; + src?: Signalish; + srcset?: Signalish; + srcSet?: Signalish; + usemap?: Signalish; + useMap?: Signalish; + width?: Signalish; +} +type ImgAriaRolesAccessibleName = Signalish<'img' | 'button' | 'checkbox' | 'link' | 'menuitem' | 'menuitemcheckbox' | 'menuitemradio' | 'meter' | 'option' | 'progressbar' | 'radio' | 'scrollbar' | 'separator' | 'slider' | 'switch' | 'tab' | 'treeitem' | 'doc-cover' | undefined>; +type ImgAriaRoles = { + 'aria-label': Signalish; + role?: ImgAriaRolesAccessibleName; +} | { + 'aria-labelledby': Signalish; + role?: ImgAriaRolesAccessibleName; +} | { + alt: Signalish; + role?: ImgAriaRolesAccessibleName; +} | { + title: Signalish; + role?: ImgAriaRolesAccessibleName; +} | { + 'aria-label'?: never; + 'aria-labelledby'?: never; + alt?: never; + title?: never; + role?: Signalish<'img' | 'none' | 'presentation' | undefined>; +}; +type AccessibleImgHTMLAttributes = Omit, 'role' | 'aria-label' | 'aria-labelledby' | 'title'> & ImgAriaRoles; +interface ImgHTMLAttributes extends PartialImgHTMLAttributes { + alt?: Signalish; + 'aria-label'?: Signalish; + 'aria-labelledby'?: Signalish; + href?: Signalish; + role?: ImgAriaRolesAccessibleName | Signalish<'img' | 'none' | 'presentation' | undefined>; + title?: Signalish; +} +type HTMLInputTypeAttribute = 'button' | 'checkbox' | 'color' | 'date' | 'datetime-local' | 'email' | 'file' | 'hidden' | 'image' | 'month' | 'number' | 'password' | 'radio' | 'range' | 'reset' | 'search' | 'submit' | 'tel' | 'text' | 'time' | 'url' | 'week'; +interface PartialInputHTMLAttributes extends HTMLAttributes { + accept?: Signalish; + alt?: Signalish; + autocomplete?: Signalish; + autoComplete?: Signalish; + capture?: Signalish<'user' | 'environment' | undefined>; // https://www.w3.org/TR/html-media-capture/#the-capture-attribute + checked?: Signalish; + defaultChecked?: Signalish; + defaultValue?: Signalish; + disabled?: Signalish; + enterKeyHint?: Signalish<'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send' | undefined>; + form?: Signalish; + formaction?: Signalish; + formAction?: Signalish; + formenctype?: Signalish; + formEncType?: Signalish; + formmethod?: Signalish; + formMethod?: Signalish; + formnovalidate?: Signalish; + formNoValidate?: Signalish; + formtarget?: Signalish; + formTarget?: Signalish; + height?: Signalish; + indeterminate?: Signalish; + max?: Signalish; + maxlength?: Signalish; + maxLength?: Signalish; + min?: Signalish; + minlength?: Signalish; + minLength?: Signalish; + multiple?: Signalish; + name?: Signalish; + pattern?: Signalish; + placeholder?: Signalish; + readonly?: Signalish; + readOnly?: Signalish; + required?: Signalish; + size?: Signalish; + src?: Signalish; + step?: Signalish; + type?: Signalish; + value?: Signalish; + width?: Signalish; + onChange?: GenericEventHandler | undefined; +} +type InputAriaRoles = { + type: Signalish<'button'>; + role?: Signalish<'button' | 'checkbox' | 'combobox' | 'gridcell' | 'link' | 'menuitem' | 'menuitemcheckbox' | 'menuitemradio' | 'option' | 'radio' | 'separator' | 'slider' | 'switch' | 'tab' | 'treeitem' | undefined>; +} | { + type: Signalish<'checkbox'>; + role?: Signalish<'checkbox' | 'button' | 'menuitemcheckbox' | 'option' | 'switch' | undefined>; +} | { + type: Signalish<'email'>; + list?: never; + role?: Signalish<'textbox' | undefined>; +} | { + type: Signalish<'image'>; + role?: Signalish<'button' | 'checkbox' | 'gridcell' | 'link' | 'menuitem' | 'menuitemcheckbox' | 'menuitemradio' | 'option' | 'separator' | 'slider' | 'switch' | 'tab' | 'treeitem' | undefined>; +} | { + type: Signalish<'number'>; + role?: Signalish<'spinbutton' | undefined>; +} | { + type: Signalish<'radio'>; + role?: Signalish<'radio' | 'menuitemradio' | undefined>; +} | { + type: Signalish<'range'>; + role?: Signalish<'slider' | undefined>; +} | { + type: Signalish<'reset'>; + role?: Signalish<'button' | 'checkbox' | 'combobox' | 'gridcell' | 'link' | 'menuitem' | 'menuitemcheckbox' | 'menuitemradio' | 'option' | 'radio' | 'separator' | 'slider' | 'switch' | 'tab' | 'treeitem' | undefined>; +} | { + type: Signalish<'search'>; + list?: never; + role?: Signalish<'searchbox' | undefined>; +} | { + type: Signalish<'submit'>; + role?: Signalish<'button' | 'checkbox' | 'combobox' | 'gridcell' | 'link' | 'menuitem' | 'menuitemcheckbox' | 'menuitemradio' | 'option' | 'radio' | 'separator' | 'slider' | 'switch' | 'tab' | 'treeitem' | undefined>; +} | { + type: Signalish<'tel'>; + list?: never; + role?: Signalish<'textbox' | undefined>; +} | { + type?: Signalish<'text'>; + list?: never; + role?: Signalish<'textbox' | 'combobox' | 'searchbox' | 'spinbutton' | undefined>; +} | { + type?: Signalish<'text' | 'search' | 'tel' | 'url' | 'email'>; + list: Signalish; + role?: Signalish<'combobox' | undefined>; +} | { + type: Signalish<'url'>; + list?: never; + role?: Signalish<'textbox' | undefined>; +} | { + type: Signalish<'color' | 'date' | 'datetime-local' | 'file' | 'hidden' | 'month' | 'password' | 'time' | 'week'>; + role?: never; +}; +type AccessibleInputHTMLAttributes = Omit, 'role'> & InputAriaRoles; +interface InputHTMLAttributes extends PartialInputHTMLAttributes { + type?: Signalish; + role?: Signalish<'button' | 'checkbox' | 'combobox' | 'gridcell' | 'link' | 'menuitem' | 'menuitemcheckbox' | 'menuitemradio' | 'option' | 'radio' | 'searchbox' | 'separator' | 'slider' | 'spinbutton' | 'switch' | 'tab' | 'textbox' | 'treeitem' | undefined>; +} +interface InsHTMLAttributes extends HTMLAttributes { + cite?: Signalish; + datetime?: Signalish; + dateTime?: Signalish; +} +interface KeygenHTMLAttributes extends HTMLAttributes { + challenge?: Signalish; + disabled?: Signalish; + form?: Signalish; + keytype?: Signalish; + keyType?: Signalish; + keyparams?: Signalish; + keyParams?: Signalish; + name?: Signalish; +} +interface LabelHTMLAttributes extends HTMLAttributes { + for?: Signalish; + form?: Signalish; + htmlFor?: Signalish; + role?: never; +} +interface LegendHTMLAttributes extends HTMLAttributes { + role?: never; +} +interface LiHTMLAttributes extends HTMLAttributes { + value?: Signalish; +} +interface LinkHTMLAttributes extends HTMLAttributes { + as?: Signalish; + crossorigin?: Signalish; + crossOrigin?: Signalish; + fetchpriority?: Signalish<'high' | 'low' | 'auto' | undefined>; + fetchPriority?: Signalish<'high' | 'low' | 'auto' | undefined>; + href?: Signalish; + hreflang?: Signalish; + hrefLang?: Signalish; + integrity?: Signalish; + media?: Signalish; + imageSrcSet?: Signalish; + referrerpolicy?: Signalish; + referrerPolicy?: Signalish; + rel?: Signalish; + role?: never; + sizes?: Signalish; + type?: Signalish; + charset?: Signalish; + charSet?: Signalish; +} +interface MainHTMLAttributes extends HTMLAttributes { + role?: Signalish<'main' | undefined>; +} +interface MapHTMLAttributes extends HTMLAttributes { + name?: Signalish; + role?: never; +} +interface MarqueeHTMLAttributes extends HTMLAttributes { + behavior?: Signalish<'scroll' | 'slide' | 'alternate' | undefined>; + bgcolor?: Signalish; + bgColor?: Signalish; + direction?: Signalish<'left' | 'right' | 'up' | 'down' | undefined>; + height?: Signalish; + hspace?: Signalish; + loop?: Signalish; + scrollamount?: Signalish; + scrollAmount?: Signalish; + scrolldelay?: Signalish; + scrollDelay?: Signalish; + truespeed?: Signalish; + trueSpeed?: Signalish; + vspace?: Signalish; + width?: Signalish; +} +interface MediaHTMLAttributes extends HTMLAttributes { + autoplay?: Signalish; + autoPlay?: Signalish; + controls?: Signalish; + controlslist?: Signalish; + controlsList?: Signalish; + crossorigin?: Signalish; + crossOrigin?: Signalish; + currentTime?: Signalish; + defaultMuted?: Signalish; + defaultPlaybackRate?: Signalish; + disableremoteplayback?: Signalish; + disableRemotePlayback?: Signalish; + loop?: Signalish; + mediaGroup?: Signalish; + muted?: Signalish; + playbackRate?: Signalish; + preload?: Signalish<'auto' | 'metadata' | 'none' | undefined>; + preservesPitch?: Signalish; + src?: Signalish; + srcObject?: Signalish; + volume?: Signalish; +} +interface MenuHTMLAttributes extends HTMLAttributes { + role: 'list' | 'group' | 'listbox' | 'menu' | 'menubar' | 'none' | 'presentation' | 'radiogroup' | 'tablist' | 'toolbar' | 'tree'; + type?: Signalish; +} +interface MetaHTMLAttributes extends HTMLAttributes { + charset?: Signalish; + charSet?: Signalish; + content?: Signalish; + 'http-equiv'?: Signalish; + httpEquiv?: Signalish; + name?: Signalish; + media?: Signalish; + role?: never; +} +interface MeterHTMLAttributes extends HTMLAttributes { + form?: Signalish; + high?: Signalish; + low?: Signalish; + max?: Signalish; + min?: Signalish; + optimum?: Signalish; + role?: Signalish<'meter' | undefined>; + value?: Signalish; +} +interface NavHTMLAttributes extends HTMLAttributes { + role?: Signalish<'navigation' | 'menu' | 'menubar' | 'none' | 'presentation' | 'tablist' | undefined>; +} +interface NoScriptHTMLAttributes extends HTMLAttributes { + role?: never; +} +interface ObjectHTMLAttributes extends HTMLAttributes { + classid?: Signalish; + classID?: Signalish; + data?: Signalish; + form?: Signalish; + height?: Signalish; + name?: Signalish; + role?: Signalish<'application' | 'document' | 'img' | undefined>; + type?: Signalish; + usemap?: Signalish; + useMap?: Signalish; + width?: Signalish; + wmode?: Signalish; +} +interface OlHTMLAttributes extends HTMLAttributes { + reversed?: Signalish; + role?: Signalish<'list' | 'group' | 'listbox' | 'menu' | 'menubar' | 'none' | 'presentation' | 'radiogroup' | 'tablist' | 'toolbar' | 'tree' | undefined>; + start?: Signalish; + type?: Signalish<'1' | 'a' | 'A' | 'i' | 'I' | undefined>; +} +interface OptgroupHTMLAttributes extends HTMLAttributes { + disabled?: Signalish; + label?: Signalish; + role?: Signalish<'group' | undefined>; +} +interface OptionHTMLAttributes extends HTMLAttributes { + disabled?: Signalish; + label?: Signalish; + role?: Signalish<'option' | undefined>; + selected?: Signalish; + value?: Signalish; +} +interface OutputHTMLAttributes extends HTMLAttributes { + for?: Signalish; + form?: Signalish; + htmlFor?: Signalish; + name?: Signalish; +} +interface ParamHTMLAttributes extends HTMLAttributes { + name?: Signalish; + role?: never; + value?: Signalish; +} +interface PictureHTMLAttributes extends HTMLAttributes { + role?: never; +} +interface ProgressHTMLAttributes extends HTMLAttributes { + max?: Signalish; + role?: Signalish<'progressbar' | undefined>; + value?: Signalish; +} +interface QuoteHTMLAttributes extends HTMLAttributes { + cite?: Signalish; +} +interface ScriptHTMLAttributes extends HTMLAttributes { + async?: Signalish; + /** @deprecated */ + charset?: Signalish; + /** @deprecated */ + charSet?: Signalish; + crossorigin?: Signalish; + crossOrigin?: Signalish; + defer?: Signalish; + integrity?: Signalish; + nomodule?: Signalish; + noModule?: Signalish; + referrerpolicy?: Signalish; + referrerPolicy?: Signalish; + role?: never; + src?: Signalish; + type?: Signalish; +} +interface SearchHTMLAttributes extends HTMLAttributes { + role?: Signalish<'search' | 'form' | 'group' | 'none' | 'presentation' | 'region' | undefined>; +} +interface PartialSelectHTMLAttributes extends HTMLAttributes { + autocomplete?: Signalish; + autoComplete?: Signalish; + defaultValue?: Signalish; + disabled?: Signalish; + form?: Signalish; + name?: Signalish; + required?: Signalish; + size?: Signalish; + value?: Signalish; + onChange?: GenericEventHandler | undefined; +} +type SelectAriaRoles = { + multiple?: never; + // Spec states this branch is limited to "no `multiple` attribute AND no `size` attribute greater than 1". + // `1` as a default, however, caused some web compat issues and forced Firefox to default to `0` instead. + size?: 0 | 1 | never; + role?: Signalish<'combobox' | 'menu' | undefined>; +} | { + multiple?: Signalish; + size?: Signalish; + role?: Signalish<'listbox' | undefined>; +}; +type AccessibleSelectHTMLAttributes = Omit, 'role'> & SelectAriaRoles; +interface SelectHTMLAttributes extends PartialSelectHTMLAttributes { + multiple?: Signalish; + size?: Signalish; + role?: Signalish<'combobox' | 'listbox' | 'menu' | undefined>; +} +interface SlotHTMLAttributes extends HTMLAttributes { + name?: Signalish; + role?: never; +} +interface SourceHTMLAttributes extends HTMLAttributes { + height?: Signalish; + media?: Signalish; + role?: never; + sizes?: Signalish; + src?: Signalish; + srcset?: Signalish; + srcSet?: Signalish; + type?: Signalish; + width?: Signalish; +} +interface StyleHTMLAttributes extends HTMLAttributes { + media?: Signalish; + role?: never; + scoped?: Signalish; + type?: Signalish; +} +interface TableHTMLAttributes extends HTMLAttributes { + cellpadding?: Signalish; + cellPadding?: Signalish; + cellspacing?: Signalish; + cellSpacing?: Signalish; + summary?: Signalish; + width?: Signalish; +} +interface TdHTMLAttributes extends HTMLAttributes { + align?: Signalish<'left' | 'center' | 'right' | 'justify' | 'char' | undefined>; + colspan?: Signalish; + colSpan?: Signalish; + headers?: Signalish; + rowspan?: Signalish; + rowSpan?: Signalish; + scope?: Signalish; + abbr?: Signalish; + height?: Signalish; + width?: Signalish; + valign?: Signalish<'top' | 'middle' | 'bottom' | 'baseline' | undefined>; +} +interface TemplateHTMLAttributes extends HTMLAttributes { + role?: never; +} +interface TextareaHTMLAttributes extends HTMLAttributes { + autocomplete?: Signalish; + autoComplete?: Signalish; + cols?: Signalish; + defaultValue?: Signalish; + dirname?: Signalish; + dirName?: Signalish; + disabled?: Signalish; + form?: Signalish; + maxlength?: Signalish; + maxLength?: Signalish; + minlength?: Signalish; + minLength?: Signalish; + name?: Signalish; + placeholder?: Signalish; + readonly?: Signalish; + readOnly?: Signalish; + required?: Signalish; + role?: Signalish<'textbox' | undefined>; + rows?: Signalish; + value?: Signalish; + wrap?: Signalish; + onChange?: GenericEventHandler | undefined; +} +interface ThHTMLAttributes extends HTMLAttributes { + align?: Signalish<'left' | 'center' | 'right' | 'justify' | 'char' | undefined>; + colspan?: Signalish; + colSpan?: Signalish; + headers?: Signalish; + rowspan?: Signalish; + rowSpan?: Signalish; + scope?: Signalish; + abbr?: Signalish; +} +interface TimeHTMLAttributes extends HTMLAttributes { + datetime?: Signalish; + dateTime?: Signalish; +} +interface TitleHTMLAttributes extends HTMLAttributes { + role?: never; +} +interface TrackHTMLAttributes extends MediaHTMLAttributes { + default?: Signalish; + kind?: Signalish; + label?: Signalish; + role?: never; + srclang?: Signalish; + srcLang?: Signalish; +} +interface UlHTMLAttributes extends HTMLAttributes { + role?: Signalish<'list' | 'group' | 'listbox' | 'menu' | 'menubar' | 'none' | 'presentation' | 'radiogroup' | 'tablist' | 'toolbar' | 'tree' | undefined>; +} +interface VideoHTMLAttributes extends MediaHTMLAttributes { + disablepictureinpicture?: Signalish; + disablePictureInPicture?: Signalish; + height?: Signalish; + playsinline?: Signalish; + playsInline?: Signalish; + poster?: Signalish; + width?: Signalish; + role?: Signalish<'application' | undefined>; +} +interface WbrHTMLAttributes extends HTMLAttributes { + role?: Signalish<'none' | 'presentation' | undefined>; +} +type DetailedHTMLProps, RefType extends EventTarget = EventTarget> = HA; +interface MathMLAttributes extends HTMLAttributes { + dir?: Signalish<'ltr' | 'rtl' | undefined>; + displaystyle?: Signalish; + /** @deprecated This feature is non-standard. See https://developer.mozilla.org/en-US/docs/Web/MathML/Global_attributes/href */ + href?: Signalish; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Global_attributes/mathbackground */ + mathbackground?: Signalish; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Global_attributes/mathcolor */ + mathcolor?: Signalish; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Global_attributes/mathsize */ + mathsize?: Signalish; + nonce?: Signalish; + scriptlevel?: Signalish; +} +interface AnnotationMathMLAttributes extends MathMLAttributes { + encoding?: Signalish; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/semantics#src */ + src?: Signalish; +} +interface AnnotationXmlMathMLAttributes extends MathMLAttributes { + encoding?: Signalish; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/semantics#src */ + src?: Signalish; +} +interface MActionMathMLAttributes extends MathMLAttributes { + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/maction#actiontype */ + actiontype?: Signalish<'statusline' | 'toggle' | undefined>; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/maction#selection */ + selection?: Signalish; +} +interface MathMathMLAttributes extends MathMLAttributes { + display?: Signalish<'block' | 'inline' | undefined>; +} +interface MEncloseMathMLAttributes extends MathMLAttributes { + notation?: Signalish; +} +interface MErrorMathMLAttributes extends MathMLAttributes {} +interface MFencedMathMLAttributes extends MathMLAttributes { + close?: Signalish; + open?: Signalish; + separators?: Signalish; +} +interface MFracMathMLAttributes extends MathMLAttributes { + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mfrac#denomalign */ + denomalign?: Signalish<'center' | 'left' | 'right' | undefined>; + linethickness?: Signalish; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mfrac#numalign */ + numalign?: Signalish<'center' | 'left' | 'right' | undefined>; +} +interface MiMathMLAttributes extends MathMLAttributes { + /** The only value allowed in the current specification is normal (case insensitive) + * See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mi#mathvariant */ + mathvariant?: Signalish<'normal' | 'bold' | 'italic' | 'bold-italic' | 'double-struck' | 'bold-fraktur' | 'script' | 'bold-script' | 'fraktur' | 'sans-serif' | 'bold-sans-serif' | 'sans-serif-italic' | 'sans-serif-bold-italic' | 'monospace' | 'initial' | 'tailed' | 'looped' | 'stretched' | undefined>; +} +interface MmultiScriptsMathMLAttributes extends MathMLAttributes { + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mmultiscripts#subscriptshift */ + subscriptshift?: Signalish; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mmultiscripts#superscriptshift */ + superscriptshift?: Signalish; +} +interface MNMathMLAttributes extends MathMLAttributes {} +interface MOMathMLAttributes extends MathMLAttributes { + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mo#accent */ + accent?: Signalish; + fence?: Signalish; + largeop?: Signalish; + lspace?: Signalish; + maxsize?: Signalish; + minsize?: Signalish; + movablelimits?: Signalish; + rspace?: Signalish; + separator?: Signalish; + stretchy?: Signalish; + symmetric?: Signalish; +} +interface MOverMathMLAttributes extends MathMLAttributes { + accent?: Signalish; +} +interface MPaddedMathMLAttributes extends MathMLAttributes { + depth?: Signalish; + height?: Signalish; + lspace?: Signalish; + voffset?: Signalish; + width?: Signalish; +} +interface MPhantomMathMLAttributes extends MathMLAttributes {} +interface MPrescriptsMathMLAttributes extends MathMLAttributes {} +interface MRootMathMLAttributes extends MathMLAttributes {} +interface MRowMathMLAttributes extends MathMLAttributes {} +interface MSMathMLAttributes extends MathMLAttributes { + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/ms#browser_compatibility */ + lquote?: Signalish; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/ms#browser_compatibility */ + rquote?: Signalish; +} +interface MSpaceMathMLAttributes extends MathMLAttributes { + depth?: Signalish; + height?: Signalish; + width?: Signalish; +} +interface MSqrtMathMLAttributes extends MathMLAttributes {} +interface MStyleMathMLAttributes extends MathMLAttributes { + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#background */ + background?: Signalish; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#color */ + color?: Signalish; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#fontsize */ + fontsize?: Signalish; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#fontstyle */ + fontstyle?: Signalish; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#fontweight */ + fontweight?: Signalish; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#scriptminsize */ + scriptminsize?: Signalish; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle#scriptsizemultiplier */ + scriptsizemultiplier?: Signalish; +} +interface MSubMathMLAttributes extends MathMLAttributes { + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msub#subscriptshift */ + subscriptshift?: Signalish; +} +interface MSubsupMathMLAttributes extends MathMLAttributes { + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msubsup#subscriptshift */ + subscriptshift?: Signalish; + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msubsup#superscriptshift */ + superscriptshift?: Signalish; +} +interface MSupMathMLAttributes extends MathMLAttributes { + /** @deprecated See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msup#superscriptshift */ + superscriptshift?: Signalish; +} +interface MTableMathMLAttributes extends MathMLAttributes { + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#align */ + align?: Signalish<'axis' | 'baseline' | 'bottom' | 'center' | 'top' | undefined>; + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#columnalign */ + columnalign?: Signalish<'center' | 'left' | 'right' | undefined>; + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#columnlines */ + columnlines?: Signalish<'dashed' | 'none' | 'solid' | undefined>; + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#columnspacing */ + columnspacing?: Signalish; + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#frame */ + frame?: Signalish<'dashed' | 'none' | 'solid' | undefined>; + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#framespacing */ + framespacing?: Signalish; + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#rowalign */ + rowalign?: Signalish<'axis' | 'baseline' | 'bottom' | 'center' | 'top' | undefined>; + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#rowlines */ + rowlines?: Signalish<'dashed' | 'none' | 'solid' | undefined>; + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#rowspacing */ + rowspacing?: Signalish; + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable#width */ + width?: Signalish; +} +interface MTdMathMLAttributes extends MathMLAttributes { + columnspan?: Signalish; + rowspan?: Signalish; + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtd#columnalign */ + columnalign?: Signalish<'center' | 'left' | 'right' | undefined>; + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtd#rowalign */ + rowalign?: Signalish<'axis' | 'baseline' | 'bottom' | 'center' | 'top' | undefined>; +} +interface MTextMathMLAttributes extends MathMLAttributes {} +interface MTrMathMLAttributes extends MathMLAttributes { + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtr#columnalign */ + columnalign?: Signalish<'center' | 'left' | 'right' | undefined>; + /** Non-standard attribute See https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtr#rowalign */ + rowalign?: Signalish<'axis' | 'baseline' | 'bottom' | 'center' | 'top' | undefined>; +} +interface MUnderMathMLAttributes extends MathMLAttributes { + accentunder?: Signalish; +} +interface MUnderoverMathMLAttributes extends MathMLAttributes { + accent?: Signalish; + accentunder?: Signalish; +} +interface SemanticsMathMLAttributes extends MathMLAttributes {} +declare namespace index_d_exports$2 { + export { AccessibleAnchorHTMLAttributes, AccessibleAreaHTMLAttributes, AccessibleImgHTMLAttributes, AccessibleInputHTMLAttributes, AccessibleSelectHTMLAttributes, AllCSSProperties, AllHTMLAttributes, AnchorAriaRoles, AnchorHTMLAttributes, AnimationEventHandler, AnnotationMathMLAttributes, AnnotationXmlMathMLAttributes, AnyComponent, AreaAriaRoles, AreaHTMLAttributes, AriaAttributes, AriaRole, ArticleHTMLAttributes, AsideHTMLAttributes, Attributes, AudioHTMLAttributes, BaseHTMLAttributes, BlockquoteHTMLAttributes, BrHTMLAttributes, ButtonHTMLAttributes, CSSProperties, CanvasHTMLAttributes, CaptionHTMLAttributes, ClassAttributes, ClipboardEventHandler, ColHTMLAttributes, ColgroupHTMLAttributes, CommandEventHandler, Component, ComponentChild, ComponentChildren, ComponentClass, ComponentConstructor, ComponentFactory, ComponentProps, ComponentType, CompositionEventHandler, Consumer, ContainerNode, Context, ContextType, DOMAttributes, DOMCSSProperties, DPubAriaRole, DataHTMLAttributes, DataListHTMLAttributes, DdHTMLAttributes, DelHTMLAttributes, DetailedHTMLProps, DetailsHTMLAttributes, DialogHTMLAttributes, DlHTMLAttributes, DragEventHandler, DtHTMLAttributes, EmbedHTMLAttributes, ErrorInfo, EventHandler, FieldsetHTMLAttributes, FigcaptionHTMLAttributes, FocusEventHandler, FooterHTMLAttributes, FormHTMLAttributes, Fragment, FunctionComponent, FunctionalComponent, GenericEventHandler, HTMLAttributeAnchorTarget, HTMLAttributeCrossOrigin, HTMLAttributeReferrerPolicy, HTMLAttributes, HTMLInputTypeAttribute, HeadHTMLAttributes, HeaderHTMLAttributes, HeadingHTMLAttributes, HrHTMLAttributes, HtmlHTMLAttributes, IframeHTMLAttributes, ImgAriaRoles, ImgAriaRolesAccessibleName, ImgHTMLAttributes, InputAriaRoles, InputEventHandler, InputHTMLAttributes, InsHTMLAttributes, JSX, Key, KeyboardEventHandler, KeygenHTMLAttributes, LabelHTMLAttributes, LegendHTMLAttributes, LiHTMLAttributes, LinkHTMLAttributes, MActionMathMLAttributes, MEncloseMathMLAttributes, MErrorMathMLAttributes, MFencedMathMLAttributes, MFracMathMLAttributes, MNMathMLAttributes, MOMathMLAttributes, MOverMathMLAttributes, MPaddedMathMLAttributes, MPhantomMathMLAttributes, MPrescriptsMathMLAttributes, MRootMathMLAttributes, MRowMathMLAttributes, MSMathMLAttributes, MSpaceMathMLAttributes, MSqrtMathMLAttributes, MStyleMathMLAttributes, MSubMathMLAttributes, MSubsupMathMLAttributes, MSupMathMLAttributes, MTableMathMLAttributes, MTdMathMLAttributes, MTextMathMLAttributes, MTrMathMLAttributes, MUnderMathMLAttributes, MUnderoverMathMLAttributes, MainHTMLAttributes, MapHTMLAttributes, MarqueeHTMLAttributes, MathMLAttributes, MathMathMLAttributes, MediaHTMLAttributes, MenuHTMLAttributes, MetaHTMLAttributes, MeterHTMLAttributes, MiMathMLAttributes, MmultiScriptsMathMLAttributes, MouseEventHandler, NavHTMLAttributes, NoScriptHTMLAttributes, ObjectHTMLAttributes, OlHTMLAttributes, OptgroupHTMLAttributes, OptionHTMLAttributes, Options, OutputHTMLAttributes, ParamHTMLAttributes, PartialAnchorHTMLAttributes, PartialAreaHTMLAttributes, PartialImgHTMLAttributes, PartialInputHTMLAttributes, PartialSelectHTMLAttributes, PathAttributes, PictureHTMLAttributes, PictureInPictureEventHandler, PointerEventHandler, PreactConsumer, PreactContext, PreactDOMAttributes, PreactProvider, ProgressHTMLAttributes, Provider, QuoteHTMLAttributes, Ref, RefCallback, RefObject, RenderableProps, SVGAttributes, ScriptHTMLAttributes, SearchHTMLAttributes, SelectAriaRoles, SelectHTMLAttributes, SemanticsMathMLAttributes, SignalLike, Signalish, SlotHTMLAttributes, SnapEventHandler, SourceHTMLAttributes, StyleHTMLAttributes, SubmitEventHandler, TableHTMLAttributes, TargetedAnimationEvent, TargetedClipboardEvent, TargetedCommandEvent, TargetedCompositionEvent, TargetedDragEvent, TargetedEvent, TargetedFocusEvent, TargetedInputEvent, TargetedKeyboardEvent, TargetedMouseEvent, TargetedPictureInPictureEvent, TargetedPointerEvent, TargetedSnapEvent, TargetedSubmitEvent, TargetedToggleEvent, TargetedTouchEvent, TargetedTransitionEvent, TargetedUIEvent, TargetedWheelEvent, TdHTMLAttributes, TemplateHTMLAttributes, TextareaHTMLAttributes, ThHTMLAttributes, TimeHTMLAttributes, TitleHTMLAttributes, ToggleEventHandler, TouchEventHandler, TrackHTMLAttributes, TransitionEventHandler, UIEventHandler, UlHTMLAttributes, UnpackSignal, VNode, VideoHTMLAttributes, WAIAriaRole, WbrHTMLAttributes, WheelEventHandler, cloneElement, createContext, createElement, createPortal, createRef, h, hydrate, isValidElement, options, render, toChildArray }; +} +import JSX = JSXInternal; +// +// Preact Virtual DOM +// ----------------------------------- +interface VNode

{ + type: ComponentType

| string; + props: P & { + children: ComponentChildren; + }; + key: Key; + /** + * ref is not guaranteed by React.ReactElement, for compatibility reasons + * with popular react libs we define it as optional too + */ + ref?: Ref | null; + /** + * The time this `vnode` started rendering. Will only be set when + * the devtools are attached. + * Default value: `0` + */ + startTime?: number; + /** + * The time that the rendering of this `vnode` was completed. Will only be + * set when the devtools are attached. + * Default value: `-1` + */ + endTime?: number; +} +// +// Preact Component interface +// ----------------------------------- +type Key = string | number | any; +type RefObject = { + current: T; +}; +type RefCallback = (instance: T | null) => void | (() => void); +type Ref = RefCallback | RefObject | null; +type ComponentChild = VNode | object | string | number | bigint | boolean | null | undefined; +type ComponentChildren = ComponentChild[] | ComponentChild; +interface Attributes { + key?: Key | undefined; + jsx?: boolean | undefined; +} +interface ClassAttributes extends Attributes { + ref?: Ref; +} +interface PreactDOMAttributes { + children?: ComponentChildren; + dangerouslySetInnerHTML?: { + __html: Parameters[0]; + }; +} +interface ErrorInfo { + componentStack?: string; +} +type RenderableProps = P & Readonly; +}>; +type ComponentType

= ComponentClass

| FunctionComponent

; +type ComponentFactory

= ComponentType

; +type ComponentProps | keyof JSXInternal.IntrinsicElements> = C extends ComponentType ? P : C extends keyof JSXInternal.IntrinsicElements ? JSXInternal.IntrinsicElements[C] : {}; +interface FunctionComponent

{ + (props: RenderableProps

, context?: any): ComponentChildren; + displayName?: string; +} +interface FunctionalComponent

extends FunctionComponent

{} +interface ComponentClass

{ + new (props: P, context?: any): Component; + displayName?: string; + contextType?: Context; + getDerivedStateFromProps?(props: Readonly

, state: Readonly): Partial | null; + getDerivedStateFromError?(error: any): Partial | null; +} +interface ComponentConstructor

extends ComponentClass {} +// Type alias for a component instance considered generally, whether stateless or stateful. +type AnyComponent

= FunctionComponent

| ComponentConstructor; +// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging +interface Component

{ + componentWillMount?(): void; + componentDidMount?(): void; + componentWillUnmount?(): void; + getChildContext?(): object; + componentWillReceiveProps?(nextProps: Readonly

, nextContext: any): void; + shouldComponentUpdate?(nextProps: Readonly

, nextState: Readonly, nextContext: any): boolean; + componentWillUpdate?(nextProps: Readonly

, nextState: Readonly, nextContext: any): void; + getSnapshotBeforeUpdate?(oldProps: Readonly

, oldState: Readonly): any; + componentDidUpdate?(previousProps: Readonly

, previousState: Readonly, snapshot: any): void; + componentDidCatch?(error: any, errorInfo: ErrorInfo): void; +} +declare abstract class Component { + constructor(props?: P, context?: any); + static displayName?: string; + static contextType?: Context; + // Static members cannot reference class type parameters. This is not + // supported in TypeScript. Reusing the same type arguments from `Component` + // will lead to an impossible state where one cannot satisfy the type + // constraint under no circumstances, see #1356.In general type arguments + // seem to be a bit buggy and not supported well at the time of this + // writing with TS 3.3.3333. + static getDerivedStateFromProps?(props: Readonly, state: Readonly): object | null; + static getDerivedStateFromError?(error: any): object | null; + state: Readonly; + props: RenderableProps

; + context: any; + // From https://github.com/DefinitelyTyped/DefinitelyTyped/blob/e836acc75a78cf0655b5dfdbe81d69fdd4d8a252/types/react/index.d.ts#L402 + // // We MUST keep setState() as a unified signature because it allows proper checking of the method return type. + // // See: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/18365#issuecomment-351013257 + setState(state: ((prevState: Readonly, props: Readonly

) => Pick | Partial | null) | (Pick | Partial | null), callback?: () => void): void; + forceUpdate(callback?: () => void): void; + abstract render(props?: RenderableProps

, state?: Readonly, context?: any): ComponentChildren; +} +// +// Preact createElement +// ----------------------------------- +declare function createElement(type: 'input', props: (DOMAttributes & ClassAttributes) | null, ...children: ComponentChildren[]): VNode & ClassAttributes>; +declare function createElement

, T extends HTMLElement>(type: keyof JSXInternal.IntrinsicElements, props: (ClassAttributes & P) | null, ...children: ComponentChildren[]): VNode & P>; +declare function createElement

, T extends HTMLElement>(type: keyof JSXInternal.IntrinsicSVGElements, props: (ClassAttributes & P) | null, ...children: ComponentChildren[]): VNode & P>; +declare function createElement(type: string, props: (ClassAttributes & HTMLAttributes & SVGAttributes) | null, ...children: ComponentChildren[]): VNode & HTMLAttributes & SVGAttributes>; +declare function createElement

(type: ComponentType

| string, props: (Attributes & P) | null, ...children: ComponentChildren[]): VNode

; +declare namespace createElement { + export import JSX = JSXInternal; +} +declare function h(type: 'input', props: (DOMAttributes & ClassAttributes) | null, ...children: ComponentChildren[]): VNode & ClassAttributes>; +declare function h

, T extends HTMLElement>(type: keyof JSXInternal.IntrinsicElements, props: (ClassAttributes & P) | null, ...children: ComponentChildren[]): VNode & P>; +declare function h

, T extends HTMLElement>(type: keyof JSXInternal.IntrinsicSVGElements, props: (ClassAttributes & P) | null, ...children: ComponentChildren[]): VNode & P>; +declare function h(type: string, props: (ClassAttributes & HTMLAttributes & SVGAttributes) | null, ...children: ComponentChildren[]): VNode<(ClassAttributes & HTMLAttributes & SVGAttributes) | null>; +declare function h

(type: ComponentType

| string, props: (Attributes & P) | null, ...children: ComponentChildren[]): VNode; +declare namespace h { + export import JSX = JSXInternal; +} +// +// Preact render +// ----------------------------------- +interface ContainerNode { + readonly nodeType: number; + readonly parentNode: ContainerNode | null; + readonly firstChild: ContainerNode | null; + readonly childNodes: ArrayLike; + insertBefore(node: ContainerNode, child: ContainerNode | null): ContainerNode; + appendChild(node: ContainerNode): ContainerNode; + removeChild(child: ContainerNode): ContainerNode; +} +declare function render(vnode: ComponentChild, parent: ContainerNode): void; +declare function hydrate(vnode: ComponentChild, parent: ContainerNode): void; +declare function createPortal(vnode: ComponentChildren, container: ContainerNode): VNode; +declare function cloneElement(vnode: VNode, props?: any, ...children: ComponentChildren[]): VNode; +declare function cloneElement

(vnode: VNode

, props?: any, ...children: ComponentChildren[]): VNode

; +// +// Preact Built-in Components +// ----------------------------------- +// TODO: Revisit what the public type of this is... +declare const Fragment: FunctionComponent<{}>; +// +// Preact options +// ----------------------------------- +/** + * Global options for preact + */ +interface Options { + /** Attach a hook that is invoked whenever a VNode is created. */ + vnode?(vnode: VNode): void; + /** Attach a hook that is invoked immediately before a vnode is unmounted. */ + unmount?(vnode: VNode): void; + /** Attach a hook that is invoked after a vnode has rendered. */ + diffed?(vnode: VNode): void; + event?(e: Event): any; + requestAnimationFrame?(callback: () => void): void; + debounceRendering?(cb: () => void): void; + useDebugValue?(value: string | number): void; + _addHookName?(name: string | number): void; + __suspenseDidResolve?(vnode: VNode, cb: () => void): void; + // __canSuspenseResolve?(vnode: VNode, cb: () => void): void; + /** + * Customize attribute serialization when a precompiled JSX transform + * is used. + */ + attr?(name: string, value: any): string | void; +} +declare const options: Options; +// +// Preact helpers +// ----------------------------------- +declare function createRef(): RefObject; +declare function toChildArray(children: ComponentChildren): Array; +declare function isValidElement(vnode: any): vnode is VNode; +// +// Context +// ----------------------------------- +interface Consumer extends FunctionComponent<{ + children: (value: T) => ComponentChildren; +}> {} +interface PreactConsumer extends Consumer {} +interface Provider extends FunctionComponent<{ + value: T; + children?: ComponentChildren; +}> {} +interface PreactProvider extends Provider {} +type ContextType> = C extends Context ? T : never; +interface Context extends preact.Provider { + Consumer: preact.Consumer; + Provider: preact.Provider; + displayName?: string; +} +interface PreactContext extends Context {} +declare function createContext(defaultValue: T): Context; +declare namespace index_d_exports$1 { + export { Fragment, JSXInternal as JSX, jsx, jsxAttr, jsxDEV, jsxEscape, jsxTemplate, jsxs }; +} +declare function jsx(type: string, props: HTMLAttributes & SVGAttributes & Record & { + children?: ComponentChild; +}, key?: string): VNode; +declare function jsx

(type: ComponentType

, props: Attributes & P & { + children?: ComponentChild; +}, key?: string): VNode; +declare function jsxs(type: string, props: HTMLAttributes & SVGAttributes & Record & { + children?: ComponentChild[]; +}, key?: string): VNode; +declare function jsxs

(type: ComponentType

, props: Attributes & P & { + children?: ComponentChild[]; +}, key?: string): VNode; +declare function jsxDEV(type: string, props: HTMLAttributes & SVGAttributes & Record & { + children?: ComponentChildren; +}, key?: string): VNode; +declare function jsxDEV

(type: ComponentType

, props: Attributes & P & { + children?: ComponentChildren; +}, key?: string): VNode; +// These are not expected to be used manually, but by a JSX transform +declare function jsxTemplate(template: string[], ...expressions: any[]): VNode; +declare function jsxAttr(name: string, value: any): string | null; +declare function jsxEscape(value: T): string | null | VNode | Array; +declare namespace index_d_exports { + export { Dispatch, Reducer, StateUpdater, useCallback, useContext, useDebugValue, useEffect, useErrorBoundary, useId, useImperativeHandle, useLayoutEffect, useMemo, useReducer, useRef, useState }; +} +type Inputs = ReadonlyArray; +type Dispatch = (value: A) => void; +type StateUpdater = S | ((prevState: S) => S); +/** + * Returns a stateful value, and a function to update it. + * @param initialState The initial value (or a function that returns the initial value) + */ +declare function useState(initialState: S | (() => S)): [S, Dispatch>]; +declare function useState(): [S | undefined, Dispatch>]; +type Reducer = (prevState: S, action: A) => S; +/** + * An alternative to `useState`. + * + * `useReducer` is usually preferable to `useState` when you have complex state logic that involves + * multiple sub-values. It also lets you optimize performance for components that trigger deep + * updates because you can pass `dispatch` down instead of callbacks. + * @param reducer Given the current state and an action, returns the new state + * @param initialState The initial value to store as state + */ +declare function useReducer(reducer: Reducer, initialState: S): [S, Dispatch]; +/** + * An alternative to `useState`. + * + * `useReducer` is usually preferable to `useState` when you have complex state logic that involves + * multiple sub-values. It also lets you optimize performance for components that trigger deep + * updates because you can pass `dispatch` down instead of callbacks. + * @param reducer Given the current state and an action, returns the new state + * @param initialArg The initial argument to pass to the `init` function + * @param init A function that, given the `initialArg`, returns the initial value to store as state + */ +declare function useReducer(reducer: Reducer, initialArg: I, init: (arg: I) => S): [S, Dispatch]; +/** + * `useRef` returns a mutable ref object whose `.current` property is initialized to the passed argument + * (`initialValue`). The returned object will persist for the full lifetime of the component. + * + * Note that `useRef()` is useful for more than the `ref` attribute. It’s handy for keeping any mutable + * value around similar to how you’d use instance fields in classes. + * + * @param initialValue the initial value to store in the ref object + */ +declare function useRef(initialValue: T): RefObject; +declare function useRef(initialValue: T | null): RefObject; +declare function useRef(initialValue: T | undefined): RefObject; +type EffectCallback = () => void | (() => void); +/** + * Accepts a function that contains imperative, possibly effectful code. + * The effects run after browser paint, without blocking it. + * + * @param effect Imperative function that can return a cleanup function + * @param inputs If present, effect will only activate if the values in the list change (using ===). + */ +declare function useEffect(effect: EffectCallback, inputs?: Inputs): void; +/** + * @param ref The ref that will be mutated + * @param create The function that will be executed to get the value that will be attached to + * ref.current + * @param inputs If present, effect will only activate if the values in the list change (using ===). + */ +declare function useImperativeHandle(ref: Ref, create: () => R, inputs?: Inputs): void; +/** + * Accepts a function that contains imperative, possibly effectful code. + * Use this to read layout from the DOM and synchronously re-render. + * Updates scheduled inside `useLayoutEffect` will be flushed synchronously, after all DOM mutations but before the browser has a chance to paint. + * Prefer the standard `useEffect` hook when possible to avoid blocking visual updates. + * + * @param effect Imperative function that can return a cleanup function + * @param inputs If present, effect will only activate if the values in the list change (using ===). + */ +declare function useLayoutEffect(effect: EffectCallback, inputs?: Inputs): void; +/** + * Returns a memoized version of the callback that only changes if one of the `inputs` + * has changed (using ===). + */ +declare function useCallback(callback: T, inputs: Inputs): T; +/** + * Pass a factory function and an array of inputs. + * useMemo will only recompute the memoized value when one of the inputs has changed. + * This optimization helps to avoid expensive calculations on every render. + * If no array is provided, a new value will be computed whenever a new function instance is passed as the first argument. + */ +// for `inputs`, allow undefined, but don't make it optional as that is very likely a mistake +declare function useMemo(factory: () => T, inputs: Inputs | undefined): T; +/** + * Returns the current context value, as given by the nearest context provider for the given context. + * When the provider updates, this Hook will trigger a rerender with the latest context value. + * + * @param context The context you want to use + */ +declare function useContext(context: PreactContext): T; +/** + * Customize the displayed value in the devtools panel. + * + * @param value Custom hook name or object that is passed to formatter + * @param formatter Formatter to modify value before sending it to the devtools + */ +declare function useDebugValue(value: T, formatter?: (value: T) => any): void; +declare function useErrorBoundary(callback?: (error: any, errorInfo: ErrorInfo) => Promise | void): [any, () => void]; +declare function useId(): string; +//#endregion +//#region src/preact.d.ts +declare const _default: { + createElement(type: "input", props: (DOMAttributes & ClassAttributes) | null, ...children: ComponentChildren[]): VNode & ClassAttributes>; + createElement

, T extends HTMLElement>(type: keyof JSXInternal.IntrinsicElements, props: (ClassAttributes & P) | null, ...children: ComponentChildren[]): VNode & P>; + createElement

, T extends HTMLElement>(type: keyof JSXInternal.IntrinsicSVGElements, props: (ClassAttributes & P) | null, ...children: ComponentChildren[]): VNode & P>; + createElement(type: string, props: (ClassAttributes & HTMLAttributes & SVGAttributes) | null, ...children: ComponentChildren[]): VNode & HTMLAttributes & SVGAttributes>; + createElement

(type: ComponentType

| string, props: (Attributes & P) | null, ...children: ComponentChildren[]): VNode

; + h(type: "input", props: (DOMAttributes & ClassAttributes) | null, ...children: ComponentChildren[]): VNode & ClassAttributes>; + h

, T extends HTMLElement>(type: keyof JSXInternal.IntrinsicElements, props: (ClassAttributes & P) | null, ...children: ComponentChildren[]): VNode & P>; + h

, T extends HTMLElement>(type: keyof JSXInternal.IntrinsicSVGElements, props: (ClassAttributes & P) | null, ...children: ComponentChildren[]): VNode & P>; + h(type: string, props: (ClassAttributes & HTMLAttributes & SVGAttributes) | null, ...children: ComponentChildren[]): VNode<(ClassAttributes & HTMLAttributes & SVGAttributes) | null>; + h

(type: ComponentType

| string, props: (Attributes & P) | null, ...children: ComponentChildren[]): VNode; + render(vnode: ComponentChild, parent: ContainerNode): void; + hydrate(vnode: ComponentChild, parent: ContainerNode): void; + createPortal(vnode: ComponentChildren, container: ContainerNode): VNode; + cloneElement(vnode: VNode, props?: any, ...children: ComponentChildren[]): VNode; + cloneElement

(vnode: VNode

, props?: any, ...children: ComponentChildren[]): VNode

; + createRef(): RefObject; + toChildArray(children: ComponentChildren): Array; + isValidElement(vnode: any): vnode is VNode; + createContext(defaultValue: T): Context; + Component: typeof Component; + Fragment: FunctionComponent<{}>; + options: Options; + ToggleEvent: { + prototype: undefined; + new (type: string, eventInitDict?: undefined): undefined; + }; + CommandEvent: { + prototype: undefined; + new (type: string, eventInitDict?: undefined): undefined; + }; + SnapEvent: { + prototype: undefined; + new (type: string, eventInitDict?: undefined): undefined; + }; + useState(initialState: S | (() => S)): [S, Dispatch>]; + useState(): [S | undefined, Dispatch>]; + useReducer(reducer: Reducer, initialState: S): [S, Dispatch]; + useReducer(reducer: Reducer, initialArg: I, init: (arg: I) => S): [S, Dispatch]; + useRef(initialValue: T): RefObject; + useRef(initialValue: T | null): RefObject; + useRef(initialValue: T | undefined): RefObject; + useEffect(effect: undefined, inputs?: undefined): void; + useImperativeHandle(ref: Ref, create: () => R, inputs?: undefined): void; + useLayoutEffect(effect: undefined, inputs?: undefined): void; + useCallback(callback: T, inputs: undefined): T; + useMemo(factory: () => T, inputs: undefined | undefined): T; + useContext(context: PreactContext): T; + useDebugValue(value: T, formatter?: (value: T) => any): void; + useErrorBoundary(callback?: (error: any, errorInfo: ErrorInfo) => Promise | void): [any, () => void]; + useId(): string; + jsx(type: string, props: HTMLAttributes & SVGAttributes & Record & { + children?: ComponentChild; + }, key?: string): VNode; + jsx

(type: ComponentType

, props: Attributes & P & { + children?: ComponentChild; + }, key?: string): VNode; + jsxs(type: string, props: HTMLAttributes & SVGAttributes & Record & { + children?: ComponentChild[]; + }, key?: string): VNode; + jsxs

(type: ComponentType

, props: Attributes & P & { + children?: ComponentChild[]; + }, key?: string): VNode; + jsxDEV(type: string, props: HTMLAttributes & SVGAttributes & Record & { + children?: ComponentChildren; + }, key?: string): VNode; + jsxDEV

(type: ComponentType

, props: Attributes & P & { + children?: ComponentChildren; + }, key?: string): VNode; + jsxTemplate(template: string[], ...expressions: any[]): VNode; + jsxAttr(name: string, value: any): string | null; + jsxEscape(value: T): string | null | VNode | Array; +}; +//#endregion +export { _default as default }; \ No newline at end of file diff --git a/dist/preact.js b/dist/preact.js new file mode 100644 index 0000000..3ed63b5 --- /dev/null +++ b/dist/preact.js @@ -0,0 +1 @@ +var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r},n=/* @__PURE__ */ t({Component:()=>k,Fragment:()=>O,cloneElement:()=>T,createContext:()=>ce,createElement:()=>w,createPortal:()=>ue,createRef:()=>D,h:()=>w,hydrate:()=>se,isValidElement:()=>a,options:()=>r,render:()=>oe,toChildArray:()=>I}),r,i,a,o,s,c,l,u,d,f,p,m,h,g,_={},v=[],y=/^m(i|n|o|s|text|space)$/,b=Array.isArray,x=v.slice,S=Object.assign;function C(e){e&&e.parentNode&&e.remove()}function w(e,t,n){var r,i,a,o={},s=arguments.length;for(a in t)a==`key`?r=t[a]:a==`ref`&&typeof e!=`function`?i=t[a]:o[a]=t[a];return s>2&&(o.children=s>3?x.call(arguments,2):n),E(e,o,r,i,null)}function T(e,t,n){var r,i,a,o=S({},e.props),s=arguments.length;for(a in t)a==`key`?r=t[a]:a==`ref`&&typeof e.type!=`function`?i=t[a]:o[a]=t[a];return s>2&&(o.children=s>3?x.call(arguments,2):n),E(e.type,o,r===void 0?e.key:r,i===void 0?e.ref:i,null)}function E(e,t,n,a,o){var s={type:e,props:t,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:o||++i,__i:-1,__u:0};return!o&&r.vnode&&r.vnode(s),s}function D(){return{current:null}}function O(e){return e.children}function k(e,t){this.props=e,this.context=t,this.__g=0}function A(e,t){if(t==null)return e.__?A(e.__,e.__i+1):null;for(var n;tt&&o.sort(l),e=o.shift(),t=o.length,8&e.__g&&(i=void 0,a=void 0,s=(a=(n=e).__v).__e,u=[],d=[],(f=n.__P)&&((i=S({constructor:void 0},a)).__v=a.__v+1,r.vnode&&r.vnode(i),B(f,i,a,n.__n,f.namespaceURI,32&a.__u?[s]:null,u,s||A(a),32&a.__u,d),i.__v=a.__v,i.__.__k[i.__i]=i,re(u,i,d),a.__=a.__e=null,i.__e!=s&&j(i)))}finally{o.length=c=0}}function ee(e,t,n,r,i,a,o,s,c,l,u){var d,f,p,m,h,g,y=r.__k||v,b=t.length;for(c=P(n,t,y,c,b),d=0;dc?_--:_++,v=!0)):(~l||(i>h?_--:i>1]+!!u){for(i=n-1,a=n+1;i>=0||a=0?i--:a++])&&!(2&l.__u)&&s==l.key&&c==l.type)return o}return-1}function R(e,t,n){n??=``,t[0]==`-`?e.setProperty(t,n):e[t]=n}function z(e,t,n,r,i){var a;n:if(t==`style`){if(typeof n==`string`)e.style.cssText=n;else{if(typeof r==`string`&&(e.style.cssText=r=``),r)for(t in r)n&&t in n||R(e.style,t,``);if(n)for(t in n)r&&n[t]==r[t]||R(e.style,t,n[t])}}else if(t[0]==`o`&&t[1]==`n`)a=t!=(t=t.replace(f,`$1`)),(t=t.slice(2))[0]<`a`&&(t=t.toLowerCase()),(e.__e||={})[t+a]=n,n?r?n[d]=r[d]:(n[d]=p,e.addEventListener(t,a?h:m,a)):e.removeEventListener(t,a?h:m,a);else{if(i==`http://www.w3.org/2000/svg`)t=t.replace(/xlink(H|:h)/,`h`).replace(/sName$/,`s`);else if(t!=`width`&&t!=`height`&&t!=`href`&&t!=`list`&&t!=`form`&&t!=`tabIndex`&&t!=`download`&&t!=`rowSpan`&&t!=`colSpan`&&t!=`role`&&t!=`popover`&&t in e)try{e[t]=n??``;break n}catch{}typeof n==`function`||(n==null||!1===n&&t[4]!=`-`?e.removeAttribute(t):e.setAttribute(t,t==`popover`&&n==1?``:n))}}function te(e){return function(t){if(this.__e){var n=this.__e[t.type+e];if(t[u]==null)t[u]=p++;else if(t[u]O,jsx:()=>W,jsxAttr:()=>ve,jsxDEV:()=>W,jsxEscape:()=>ye,jsxTemplate:()=>he,jsxs:()=>W}),fe=/["&<]/;function U(e){if(!e.length||!fe.test(e))return e;for(var t=0,n=0,r=``,i=``;nIe,useContext:()=>Le,useDebugValue:()=>Re,useEffect:()=>je,useErrorBoundary:()=>ze,useId:()=>Be,useImperativeHandle:()=>Pe,useLayoutEffect:()=>Me,useMemo:()=>Fe,useReducer:()=>Ae,useRef:()=>Ne,useState:()=>ke}),G,K,q,xe,J=Object.is,Y=0,Se=[],X=[],Z=r,Ce=Z.__b,we=Z.__r,Te=Z.diffed,Ee=Z.__c,De=Z.unmount,Oe=Z.__;function Q(e,t){Z.__h&&Z.__h(K,e,Y||t),Y=0;var n=K.__H||(K.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function ke(e){return Y=1,Ae(qe,e)}function Ae(e,t,n){var r=Q(G++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):qe(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);J(t,n)||(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=K,!K.__f)){K.__f=!0;var i=K.shouldComponentUpdate;K.shouldComponentUpdate=function(e,t,n){var r=this.__H;if(!r)return!0;var a=!1,o=this.props!=e;if(r.__.some(function(e){e.__N&&(a=!0,J(e.__[0],e.__N[0])||(o=!0))}),i){var s=i.call(this,e,t,n);return a?s||o:s}return!a||o}}return r.__}function je(e,t){var n=Q(G++,3);!Z.__s&&Ke(n.__H,t)&&(n.__P=!0,n.__=e,n.u=t,K.__H.__h.push(n))}function Me(e,t){var n=Q(G++,4);!Z.__s&&Ke(n.__H,t)&&(n.__P=!1,n.__=e,n.u=t,K.__h.push(n))}function Ne(e){return Y=5,Fe(function(){return{current:e}},[])}function Pe(e,t,n){Y=6,Me(function(){if(typeof e==`function`){var n=e(t());return function(){e(null),n&&typeof n==`function`&&n()}}if(e)return e.current=t(),function(){return e.current=null}},n==null?n:n.concat(e))}function Fe(e,t){var n=Q(G++,7);return Ke(n.__H,t)&&(n.__=e(),n.__H=t),n.__}function Ie(e,t){return Y=8,Fe(function(){return e},t)}function Le(e){var t=K.context[e.__c],n=Q(G++,9);return n.c=e,t?(n.__??(n.__=!0,t.sub(K)),t.props.value):e.__}function Re(e,t){Z.useDebugValue&&Z.useDebugValue(t?t(e):e)}function ze(e){var t=Q(G++,10),n=ke();return t.__=e,K.componentDidCatch||(K.componentDidCatch=function(e,r){t.__&&t.__(e,r),n[1](e)}),[n[0],function(){n[1](void 0)}]}function Be(){var e=Q(G++,11);if(!e.__){for(var t=K.__v;!t.__m&&t.__;)t=t.__;var n=t.__m||(t.__m=[0,0]);e.__=`P`+n[0]+`-`+n[1]++}return e.__}function Ve(){var e;do{for(;e=X.shift();)try{$(e)}catch(t){Z.__e(t,{__:(e=e.__P)&&e.__v})}for(;e=Se.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some($),t.__h.some(Ge),t.__h=[]}catch(n){t.__h=[],Z.__e(n,e.__v)}}}while(X.length)}Z.__b=function(e){K=null,Ce&&Ce(e)},Z.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Oe&&Oe(e,t)},Z.__r=function(e){we&&we(e),G=0;var t=(K=e.__c).__H;t&&(q==K?K.__h=[]:(t.__h.some($),t.__h.some(Ge),G=0),t.__h=[],t.__.some(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})),q=K},Z.diffed=function(e){Te&&Te(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&We(Se.push(t)),t.__H.__.some(function(e){e.u&&(e.__H=e.u)})),q=K=null},Z.__c=function(e,t){t.some(function(e){try{e.__h.some($),e.__h=e.__h.filter(function(e){return!e.__||Ge(e)})}catch(n){t.some(function(e){e.__h&&=[]}),t=[],Z.__e(n,e.__v)}}),Ee&&Ee(e,t)},Z.unmount=function(e){De&&De(e);var t,n,r=e.__c;r&&r.__H&&(r.__H.__.some(function(r){try{if(r.__P&&r.__c){if(n===void 0){for(n=e.__;n&&(!n.__c||!n.__c.__P);)n=n.__;n&&=n.__c}r.__P=n,We(X.push(r))}else $(r)}catch(e){t=e}}),r.__H=void 0,t&&Z.__e(t,r.__v))};var He=typeof requestAnimationFrame==`function`;function Ue(e){var t,n=function(){clearTimeout(r),He&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);He&&(t=requestAnimationFrame(n))}function We(e){e!=1&&xe==Z.requestAnimationFrame||((xe=Z.requestAnimationFrame)||Ue)(Ve)}function $(e){var t=K,n=e.__c;typeof n==`function`&&(e.__c=void 0,n()),K=t}function Ge(e){var t=K;e.__c=e.__(),K=t}function Ke(e,t){return!e||e.length!=t.length||t.some(function(t,n){return!J(t,e[n])})}function qe(e,t){return typeof t==`function`?t(e):t}var Je={...de,...be,...n};export{Je as default}; \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..a95b209 --- /dev/null +++ b/index.html @@ -0,0 +1,10 @@ + + + + + Document + + + + + \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..dd75bf5 --- /dev/null +++ b/index.js @@ -0,0 +1,5 @@ +//@ts-check + +import E from "./dist/preact.js"; + +E.render( E.jsx("h1", {children:"hey!"}), document.body); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..26839a9 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,888 @@ +{ + "name": "preact-bundler", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "preact": "^11.0.0" + }, + "devDependencies": { + "rolldown": "1.2.12", + "rolldown-plugin-dts": "0.28.6", + "typescript": "5.9.3" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.152.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.152.0.tgz", + "integrity": "sha512-oM/5rLBm2tPkg0iBgkH/FOeR3PCDpY19GTgAZjMFM8h9WI9VW7cLgzp6nwtarYKmovavIQZ+Fe/RKX/8C8O/Rw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/oxc-project" + } + }, + "node_modules/@rolldown/binding-android-arm-eabi": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.12.tgz", + "integrity": "sha512-dB/a1214qKfHMXCpgqR4OZT+jS4kTyEXbQGJPqzobt5EwH5rX080pxE37alt3RzvR1bf1Yz/yGqRfrYAxuPw0A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.12.tgz", + "integrity": "sha512-7KHFgQ5VJxIHcLlrwrc3Xbds7oTNQT7Pgi9gQCJKrd2VGab/UksIOYp6VD8MzCstGxOKMgNamPwUCfxPdP1OHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.12.tgz", + "integrity": "sha512-3YIhqHD96nA5SaYNRBR16HnGv4oavZvXfD/ayHM+oYZ0WD/8lBAtf6zQua4kEyAvpqrluKXl0lnOBoiNby7x9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.12.tgz", + "integrity": "sha512-UuuJ35MFw4gmFOrE9pEqIV+K3syIKveph+Qc1/ljHZVdoDW4pz/JHR/eMVom+TZGl/5OOvGJOWaOCVt3ZfqhxA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.12.tgz", + "integrity": "sha512-uMvssit0a4W+/7D8CbHUvG719mH3R2jwXAlh/XcPvuHTE0g++LymF88DCGNX0HM2rBOn0xrzgXktIB6fLSJBTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.12.tgz", + "integrity": "sha512-XcFu0R0xWnwzSf4IQgFH1rJIckPN1pLy2R+4r9IDB7Yfu/ys9cVqfa4pBrMHj7a3gl8mIR4nRNPg0e5IvEVs6g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.12.tgz", + "integrity": "sha512-260UrKgn8tz39ak+SMDOirKzr7V04M9dWPw5llW00SwBivCZoWcRBKV1d8cXnRkUmSZA3BdiUmBHWk7734Ulpw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.12.tgz", + "integrity": "sha512-5YK1I9SqDkbPgc1IA8BgDl34suqUS2q0KWnBrirm0E51YjOs6eo6dV6jbQfNE/argHRSvd0QUGgtpIoYx+WWpw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.12.tgz", + "integrity": "sha512-Rkcrmp7eFRg74yL5fXEU91JEWbdEPLevWwGtXpmhbjlD1StScbWTmO94Bhly+Mo+ketKYkdmM1vNUKeWSlx8cQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.12.tgz", + "integrity": "sha512-qvK4DuAsQc2BSjlx+Xr+IzOIvvxbGZqxFwdWfG6F518Erj0GGISyQbJ6pIappnOxlNPzNHvo/L0BwB30GZ+zVw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.12.tgz", + "integrity": "sha512-Q9uLBO53Xd4QIq1WOycVQyPP1O4HhraEV2qqb3uTrnVw6QZih9duY4vNXOivL1xoUS1/z+W8eF4NMfl2a8Sdjw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.12.tgz", + "integrity": "sha512-3IBxWFMjbOZskDPKv8Lf9BCnahlKuHthWkYnyIxOH/QcJrFcS4EmcenthApkwr/5+nEqZlLzeYbxeMaX7A5u4g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.12.tgz", + "integrity": "sha512-xtX61xg4LKPkPWilZU1ynKClz5Gj4bf74LML4r3eVLWumKnGjoEr1OSHQhMdbBDoYTi+yjrujvpZe2pUnqCrrA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.12.tgz", + "integrity": "sha512-At7fPB6PCaIjzgIhEZFxuT+BBFqiQibJDT4d3PhiR3f4E7bbMZF4aKblbFfEM3sETRDd1YiQx/+U/g/B/ou5Ew==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.12.tgz", + "integrity": "sha512-WIw2haVKwjuYdXkHaoC0mF8Le71TuCBxjrdKqLbJGctbBABj+ClfmNvtbOnzpq3RokNo5+V1qhtSzJyXorsklQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@yuku-codegen/binding-android-arm64": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-codegen/binding-android-arm64/-/binding-android-arm64-0.10.2.tgz", + "integrity": "sha512-Oc2KInVkPfUjEB4PeV6X0NvIoyYTzDe/WmqFrTwBqKs6YKnz4A7XwWQvJTb7M0rLz9a6WgpUUiiS5QKaCi4O/g==", + "cpu": [ + "arm64" + ], + "deprecated": "yuku-codegen is pure JavaScript since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@yuku-codegen/binding-darwin-arm64": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-codegen/binding-darwin-arm64/-/binding-darwin-arm64-0.10.2.tgz", + "integrity": "sha512-3H7eNPIHJndUJXZ4QUGBPq1zC6RGcUZfm7bymJes+/N7wTVWUn1bxZ9JcozYHpkWQNm9f23G8YWbaHD9aYH72A==", + "cpu": [ + "arm64" + ], + "deprecated": "yuku-codegen is pure JavaScript since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@yuku-codegen/binding-darwin-x64": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-codegen/binding-darwin-x64/-/binding-darwin-x64-0.10.2.tgz", + "integrity": "sha512-AJOUpR2s3LF9AWiiub/Uyc/UoXNTWcq8hK3cVI6fUSXtwh34dG21J6hRuNlO6JVJFTo4o3ScVvZOrh/YFfUEAA==", + "cpu": [ + "x64" + ], + "deprecated": "yuku-codegen is pure JavaScript since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@yuku-codegen/binding-freebsd-x64": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-codegen/binding-freebsd-x64/-/binding-freebsd-x64-0.10.2.tgz", + "integrity": "sha512-ms7DcZu87u5CiK/wMwvpKAvAmtaqKjCQIXNweMLypG6qbuiaOMQf1jpbB5+j46xBcgCovo8TQMcv0bCQLKIL9w==", + "cpu": [ + "x64" + ], + "deprecated": "yuku-codegen is pure JavaScript since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@yuku-codegen/binding-linux-arm-gnu": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-codegen/binding-linux-arm-gnu/-/binding-linux-arm-gnu-0.10.2.tgz", + "integrity": "sha512-xJDpYAsKV5+eaiBhTYl05fvT6sst4PsCeuIFMRu9b0/WCSrNQPfCDtAQ5/MS6xNpsdujdZEPR+gmfWk3ZG5i3A==", + "cpu": [ + "arm" + ], + "deprecated": "yuku-codegen is pure JavaScript since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@yuku-codegen/binding-linux-arm-musl": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-codegen/binding-linux-arm-musl/-/binding-linux-arm-musl-0.10.2.tgz", + "integrity": "sha512-qfTkgd7AEx61l4K9VtXWCGTxc/fmXJ4ZheDz3i+/AAJUtg4sa0bPrc0VBxPggB/rayR8Z3+JfrBItuyanBJJ9Q==", + "cpu": [ + "arm" + ], + "deprecated": "yuku-codegen is pure JavaScript since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@yuku-codegen/binding-linux-arm64-gnu": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-codegen/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.10.2.tgz", + "integrity": "sha512-4e6Mifm/4UdjtU3D8mATIrvgP+xEiH8xtQOjd0zpd72XKWT7ug3sdyhq2utkkZFP6BvYp7SgZrI+aR4VeIOHdw==", + "cpu": [ + "arm64" + ], + "deprecated": "yuku-codegen is pure JavaScript since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@yuku-codegen/binding-linux-arm64-musl": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-codegen/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.10.2.tgz", + "integrity": "sha512-RdsJrUfDYFVV3JOmWFUWwSu31fa1APn12xDeIKxgl/YWxrabwtxsDBNjF2561c7tmcbiewdCUvngqRs8AyGVLA==", + "cpu": [ + "arm64" + ], + "deprecated": "yuku-codegen is pure JavaScript since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@yuku-codegen/binding-linux-x64-gnu": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-codegen/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.10.2.tgz", + "integrity": "sha512-mVzWimEPPreaPyXIUvxsHoJzvO7ckZ5j0LgQFHz04zQIRwt9A9T2hA7K5/jYjJKkMxWG/U2VjhGNwVhtyU+uqg==", + "cpu": [ + "x64" + ], + "deprecated": "yuku-codegen is pure JavaScript since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@yuku-codegen/binding-linux-x64-musl": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-codegen/binding-linux-x64-musl/-/binding-linux-x64-musl-0.10.2.tgz", + "integrity": "sha512-Y77fyISurmr2mvO1yeq3u+x/WJbACgPR4w+lzEVx30ViCxZzIGrZPRN1yEdZ9xUNPNsIO5thBHIdRNG+UGUG+Q==", + "cpu": [ + "x64" + ], + "deprecated": "yuku-codegen is pure JavaScript since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@yuku-codegen/binding-win32-arm64": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-codegen/binding-win32-arm64/-/binding-win32-arm64-0.10.2.tgz", + "integrity": "sha512-1+tGLyG0u5YYy0lev4ck7/0sd8xJ9SZde0dLut7qLDPZV5WVTV8x6OxNXUne/PGuHZyO1vK+txPQzzHOyXHGSw==", + "cpu": [ + "arm64" + ], + "deprecated": "yuku-codegen is pure JavaScript since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@yuku-codegen/binding-win32-x64": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-codegen/binding-win32-x64/-/binding-win32-x64-0.10.2.tgz", + "integrity": "sha512-8a2SExRohRbwC0MY4VpOF0/RSckrJ2ASZqAor5/RYSJJaeadR93n10gZzcKT6pY9ukiSOIZCRKVRD2tH73T0qA==", + "cpu": [ + "x64" + ], + "deprecated": "yuku-codegen is pure JavaScript since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@yuku-parser/binding-android-arm64": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-parser/binding-android-arm64/-/binding-android-arm64-0.10.2.tgz", + "integrity": "sha512-2VPBU9fRGRAQ2xPAvghnec3oou5Nrxm2Bezhf+13UMspAxQSkF/32r+ySKXSwIPA5/RivumDJDxAxc301Sgicw==", + "cpu": [ + "arm64" + ], + "deprecated": "yuku-parser runs on yuku-core since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@yuku-parser/binding-darwin-arm64": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.10.2.tgz", + "integrity": "sha512-LD+PMZE51tCYTOss5HBkm3/AE39MvcMDBfWJx7A4yDcjfNbAQDnHZKtzSOuqrswx+TQHY0ws5xn6+fWOwtmfBA==", + "cpu": [ + "arm64" + ], + "deprecated": "yuku-parser runs on yuku-core since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@yuku-parser/binding-darwin-x64": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-parser/binding-darwin-x64/-/binding-darwin-x64-0.10.2.tgz", + "integrity": "sha512-mmZ8cND+AoIIMRERyMinlg5ApHxP23B9jH2B5wT7T+dliPa9rubLxneB/SUjFwyUjGaFnB5G7t4YvpfbO5zbkQ==", + "cpu": [ + "x64" + ], + "deprecated": "yuku-parser runs on yuku-core since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@yuku-parser/binding-freebsd-x64": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.10.2.tgz", + "integrity": "sha512-gVIjaaIddbRfAhHlC8N809wQWml7mxfSVnzaLtzGXObTeFTPAg/YVnQXt1UOhPM1ah5eG/8Y0RUlNpB4GVe7eQ==", + "cpu": [ + "x64" + ], + "deprecated": "yuku-parser runs on yuku-core since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@yuku-parser/binding-linux-arm-gnu": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-parser/binding-linux-arm-gnu/-/binding-linux-arm-gnu-0.10.2.tgz", + "integrity": "sha512-q/XPPQQAPdlw05aPj30ygBhekmQryGOwxVraBgApjKK8yY1kNQgqq6XCYLF1WHSee+lhxclrTO7W0/bt7dR1GA==", + "cpu": [ + "arm" + ], + "deprecated": "yuku-parser runs on yuku-core since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@yuku-parser/binding-linux-arm-musl": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-parser/binding-linux-arm-musl/-/binding-linux-arm-musl-0.10.2.tgz", + "integrity": "sha512-A+Cb0I1hFF4wilTQpWs79k1aNnj4B2tkrHx3zsuUNF9BtVY2zPZ4yeQEM/zjXrS/qJlNMZVK9NrWJjwdpnTrfg==", + "cpu": [ + "arm" + ], + "deprecated": "yuku-parser runs on yuku-core since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@yuku-parser/binding-linux-arm64-gnu": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.10.2.tgz", + "integrity": "sha512-aGNSzqIqqphFwAdIFwVvKIyXD1Iy3CxrEJVIZAT87Ecyi4vCmmDD2v2l9h+Gd3/wSy3JZlOI792LJbKAjyy9rQ==", + "cpu": [ + "arm64" + ], + "deprecated": "yuku-parser runs on yuku-core since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@yuku-parser/binding-linux-arm64-musl": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.10.2.tgz", + "integrity": "sha512-Ddl1sF0rtuCXyHGSOV6dcmdx+ETv1iD+IVFqQuOjzkJZWclxJxdBWX6ZJMRtTiGqGUTbqLEKiTXxpR/Bvqk+2A==", + "cpu": [ + "arm64" + ], + "deprecated": "yuku-parser runs on yuku-core since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@yuku-parser/binding-linux-x64-gnu": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.10.2.tgz", + "integrity": "sha512-/nlcpR6IF5U+0m5L9wvAIXeQa2DT+BXuvqKDsTcOTlcc0B4dHNyqE5hTXsS4hAyimpy2ZK8A1zMNF5hTrjg2cg==", + "cpu": [ + "x64" + ], + "deprecated": "yuku-parser runs on yuku-core since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@yuku-parser/binding-linux-x64-musl": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.10.2.tgz", + "integrity": "sha512-GX80dxTQD/M/OryyuxJcFzFENzry3cDFPvCFTyWogNWQH3fSHfMrNfpwpl1YzMos1eV9NygK5GSDG7VArQlb4w==", + "cpu": [ + "x64" + ], + "deprecated": "yuku-parser runs on yuku-core since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@yuku-parser/binding-win32-arm64": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-parser/binding-win32-arm64/-/binding-win32-arm64-0.10.2.tgz", + "integrity": "sha512-agePQBV4VHewiGU0ACSjscZ/hJd283f9JfAF19Gf1rI5+wy5tTgx4GS36i0b3xim15AQ4RCpDRosEvhLZ4zAOw==", + "cpu": [ + "arm64" + ], + "deprecated": "yuku-parser runs on yuku-core since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@yuku-parser/binding-win32-x64": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-parser/binding-win32-x64/-/binding-win32-x64-0.10.2.tgz", + "integrity": "sha512-s8//CMpgL5+y1lvDCdyh1rwGI5+ytDJywFJRe1vnhI7n0j+caxshNucurikYLLVeQ2SYFex6aPrzgQxkabBQRA==", + "cpu": [ + "x64" + ], + "deprecated": "yuku-parser runs on yuku-core since 0.14", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@yuku-toolchain/types": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-toolchain/types/-/types-0.10.2.tgz", + "integrity": "sha512-sSeo4SSSToiS+sSD+bwn/s94EEcaLJ7tG5LCp8gFYC1G5VzxzX7fqB6m9RU1yMD8KTpu6zdU/I1NlQf8hVBJ9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/dts-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dts-resolver/-/dts-resolver-3.0.0.tgz", + "integrity": "sha512-1T1f+z+4tl9XD+m+0HBgWoL/nm0bOIffyWaUuUSBlFg/86IWvfx+wjNaO/ybU0AJzG9/Mi5hBUgGV6zCmWEN7Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + }, + "peerDependencies": { + "oxc-resolver": ">=11.0.0" + }, + "peerDependenciesMeta": { + "oxc-resolver": { + "optional": true + } + } + }, + "node_modules/get-tsconfig": { + "version": "5.0.0-beta.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-5.0.0-beta.6.tgz", + "integrity": "sha512-X6fBC0pmImC70gvX2zm56go9hx0MyoGVdG0tUCkg/D+Xnh5TJsOZ7iDbOdI3PvmtrDxnu1YdDufpK2QJX1Meqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "engines": { + "node": ">=20.20.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/obug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/obug/-/obug-3.0.0.tgz", + "integrity": "sha512-5vvB5+W7ePv+p3uqxi+RcW1XAzLW0/hxt3/4X4Lc4qHudzOhmBiBwOY6DRob4WnanAEGvNcLjF+KNOufrUoEQw==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT", + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/preact": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/preact/-/preact-11.0.0.tgz", + "integrity": "sha512-LRTLKuSe6VYPhvBDjwFaX+nuZnpsw6IN2GSboisAvhGsncylBmrbDCERhgKDn6yP2mAwbGvsB5OVyTe33M8gBg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + }, + "peerDependencies": { + "preact-render-to-string": ">=6.7.0" + }, + "peerDependenciesMeta": { + "preact-render-to-string": { + "optional": true + } + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/rolldown": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.12.tgz", + "integrity": "sha512-8wafseiaG80xmXSfqidUNqZcylTlhmPZZt+za2m+js2sFZ8dTNlhIOV2WcbIPx2hgwPBJpEUGFAMZ9bgBBLTSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.152.0", + "@rolldown/pluginutils": "^1.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm-eabi": "1.2.12", + "@rolldown/binding-android-arm64": "1.2.12", + "@rolldown/binding-darwin-arm64": "1.2.12", + "@rolldown/binding-darwin-x64": "1.2.12", + "@rolldown/binding-freebsd-x64": "1.2.12", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.12", + "@rolldown/binding-linux-arm64-gnu": "1.2.12", + "@rolldown/binding-linux-arm64-musl": "1.2.12", + "@rolldown/binding-linux-ppc64-gnu": "1.2.12", + "@rolldown/binding-linux-s390x-gnu": "1.2.12", + "@rolldown/binding-linux-x64-gnu": "1.2.12", + "@rolldown/binding-linux-x64-musl": "1.2.12", + "@rolldown/binding-openharmony-arm64": "1.2.12", + "@rolldown/binding-win32-arm64-msvc": "1.2.12", + "@rolldown/binding-win32-x64-msvc": "1.2.12" + } + }, + "node_modules/rolldown-plugin-dts": { + "version": "0.28.6", + "resolved": "https://registry.npmjs.org/rolldown-plugin-dts/-/rolldown-plugin-dts-0.28.6.tgz", + "integrity": "sha512-qKrFtBfRfR2hP233m7Ic9zf3wv6MSYdZghWKMdEO6dRYZGlNfINJAa1P5ZVvyHh3mrcd7IJQvIY8L9vnm+v5rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dts-resolver": "^3.0.0", + "get-tsconfig": "5.0.0-beta.6", + "obug": "^3.0.0", + "yuku-ast": "^0.10.1", + "yuku-codegen": "^0.10.1", + "yuku-parser": "^0.10.1" + }, + "engines": { + "node": "^22.18.0 || ^24.11.0 || >=26.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + }, + "peerDependencies": { + "@typescript/native-preview": "*", + "@volar/typescript": "~2.4.0", + "@vue/language-core": "~3.2.0 || ~3.3.0", + "rolldown": "^1.2.0", + "typescript": "^5.0.0 || ^6.0.0 || ~7.0.0", + "vue-tsc": "~3.2.0 || ~3.3.0" + }, + "peerDependenciesMeta": { + "@typescript/native-preview": { + "optional": true + }, + "@volar/typescript": { + "optional": true + }, + "@vue/language-core": { + "optional": true + }, + "typescript": { + "optional": true + }, + "vue-tsc": { + "optional": true + } + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/yuku-ast": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/yuku-ast/-/yuku-ast-0.10.2.tgz", + "integrity": "sha512-UnG9mA6giglCvSErft2/40TVFX750Sj1xgwddPLpG7J7rlr/P1wPADg9G2RK+d/1tNLtRVoLdMMOMVBB9561TQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@yuku-toolchain/types": "^0.10.2" + } + }, + "node_modules/yuku-codegen": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/yuku-codegen/-/yuku-codegen-0.10.2.tgz", + "integrity": "sha512-hentl2dtrF6cPjiAirtkfxfFZBA6Hdm61UqRJ7cA0qrlDNMk9PZGOjw5w1mx3E0hu/6pHcJF4dJW+D0SXHPZOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@yuku-toolchain/types": "^0.10.2" + }, + "optionalDependencies": { + "@yuku-codegen/binding-android-arm64": "0.10.2", + "@yuku-codegen/binding-darwin-arm64": "0.10.2", + "@yuku-codegen/binding-darwin-x64": "0.10.2", + "@yuku-codegen/binding-freebsd-x64": "0.10.2", + "@yuku-codegen/binding-linux-arm-gnu": "0.10.2", + "@yuku-codegen/binding-linux-arm-musl": "0.10.2", + "@yuku-codegen/binding-linux-arm64-gnu": "0.10.2", + "@yuku-codegen/binding-linux-arm64-musl": "0.10.2", + "@yuku-codegen/binding-linux-x64-gnu": "0.10.2", + "@yuku-codegen/binding-linux-x64-musl": "0.10.2", + "@yuku-codegen/binding-win32-arm64": "0.10.2", + "@yuku-codegen/binding-win32-x64": "0.10.2" + } + }, + "node_modules/yuku-parser": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/yuku-parser/-/yuku-parser-0.10.2.tgz", + "integrity": "sha512-CgaU0/PPjCAIEZ3WQroosOxTY3eeKldAN3h+vk8pMNz4+jl1CZzBR4pW+K/rRPF112VooCL5FdjJoiMNjDrL2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@yuku-toolchain/types": "^0.10.2", + "yuku-ast": "^0.10.2" + }, + "optionalDependencies": { + "@yuku-parser/binding-android-arm64": "0.10.2", + "@yuku-parser/binding-darwin-arm64": "0.10.2", + "@yuku-parser/binding-darwin-x64": "0.10.2", + "@yuku-parser/binding-freebsd-x64": "0.10.2", + "@yuku-parser/binding-linux-arm-gnu": "0.10.2", + "@yuku-parser/binding-linux-arm-musl": "0.10.2", + "@yuku-parser/binding-linux-arm64-gnu": "0.10.2", + "@yuku-parser/binding-linux-arm64-musl": "0.10.2", + "@yuku-parser/binding-linux-x64-gnu": "0.10.2", + "@yuku-parser/binding-linux-x64-musl": "0.10.2", + "@yuku-parser/binding-win32-arm64": "0.10.2", + "@yuku-parser/binding-win32-x64": "0.10.2" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..72270ab --- /dev/null +++ b/package.json @@ -0,0 +1,13 @@ +{ + "scripts": { + "build": "rolldown -c" + }, + "dependencies": { + "preact": "^11.0.0" + }, + "devDependencies": { + "rolldown": "1.2.12", + "rolldown-plugin-dts": "0.28.6", + "typescript": "5.9.3" + } +} diff --git a/rolldown.config.mjs b/rolldown.config.mjs new file mode 100644 index 0000000..b5e69b7 --- /dev/null +++ b/rolldown.config.mjs @@ -0,0 +1,34 @@ +import { defineConfig } from 'rolldown'; +import { dts } from 'rolldown-plugin-dts'; + +export default defineConfig([ + { + input: 'src/preact.ts', + output: { + format: 'es', + minify: true + } + }, + { + input: 'src/preact.ts', + plugins: [ + dts({ + emitDtsOnly: true, + tsconfig: false, + compilerOptions: { + allowSyntheticDefaultImports: true, + esModuleInterop: true, + module: 'ESNext', + moduleResolution: 'Bundler', + skipLibCheck: true, + target: 'ESNext' + } + }) + ], + output: { + dir: "dist", + format: 'es', + codeSplitting: false + } + } +]); diff --git a/src/preact.ts b/src/preact.ts new file mode 100644 index 0000000..42e6c53 --- /dev/null +++ b/src/preact.ts @@ -0,0 +1,11 @@ +import * as JSX from "preact/jsx-runtime"; + +import * as Hooks from "preact/hooks"; + +import * as Core from "preact"; + +export default { + ...JSX, + ...Hooks, + ...Core +} \ No newline at end of file