@exponential-at/ui-element 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,15 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/element.ts", "../src/events.ts", "../src/transport.ts", "../src/icons.ts", "../src/extensions.ts", "../src/index.ts"],
4
+ "sourcesContent": [
5
+ "// FEED-130: `<exponential-surface>`, the Exponential UI custom element. ONE\n// painter, two entry points: the element writes no DOM of its own, it mounts\n// the Solid renderer's `<ExponentialSurface>` into itself (light DOM) with a\n// props object of getters over signals, so an attribute or property change\n// re-binds exactly what reads it. The element is `display: contents` (one\n// shared `:where(<tag>)` rule `define()` installs, so any author rule wins):\n// the surface's `.xui-surface` root is THE box, where React's div would be.\n//\n// Mounting: the first element attached in a task mounts at once; the others\n// attached in the same task mount together in a microtask, inside ONE Solid\n// batch (hundreds of fresh per-surface sheets measured once, not a style\n// recalc + layout per element).\n//\n// Inputs: attributes (strings) and properties (any value), each one signal\n// created in the constructor (a property set before the element is attached\n// works; the constructor never touches attributes, parser-created elements\n// forbid it). Outputs: the host plugin's callbacks AND DOM events (events.ts).\n// Sources, in order: the `surface` property (a `createSurface` store), a\n// host (the `host` property or one built from `src`, transport.ts), the\n// store `apply()` creates, else the fixture `root`/`templates`/`data`.\n\nimport { Show, batch, createComponent, createEffect, createMemo, createRoot, createSignal, onCleanup, untrack, type Accessor, type JSX, type Setter } from \"solid-js\"\nimport { render } from \"solid-js/web\"\nimport type { ExponentialHost, ModeName, ScrollAlign, SurfaceCommand, ThemeIssue, TransportStatus, UiNode } from \"@exponential-at/ui\"\nimport { setPointer, type DataModel } from \"@exponential-at/ui/web\"\nimport { ExponentialSurface, createHostSurface, createSurface, extensionCatalogs, hostPlugin, px } from \"@exponential-at/ui-solid\"\nimport type { A2uiMessage, ExponentialSurfaceProps, HostPlugin, SolidExtension, SurfaceHandle, SurfaceState, ThemeInput } from \"@exponential-at/ui-solid\"\nimport { emit, emitWaiting, joinPending } from \"./events\"\nimport { createHost, decideTransport, transportKey } from \"./transport\"\n\nexport const TAG = `exponential-surface`\n\ntype Density = NonNullable<ExponentialSurfaceProps[`density`]>\ntype Contrast = NonNullable<ExponentialSurfaceProps[`contrast`]>\ntype Mode = ModeName | `system`\ntype Direction = `ltr` | `rtl`\n\n/** attribute → property. */\nconst ATTRIBUTES = {\n theme: `theme`,\n mode: `mode`,\n density: `density`,\n contrast: `contrast`,\n locale: `locale`,\n \"time-zone\": `timeZone`,\n direction: `direction`,\n width: `width`,\n height: `height`,\n \"surface-id\": `surfaceId`,\n src: `src`,\n post: `post`,\n transport: `transport`,\n} as const\ntype AttrName = keyof typeof ATTRIBUTES\ntype AttrProp = (typeof ATTRIBUTES)[AttrName]\nconst ATTRIBUTE_OF = Object.fromEntries(Object.entries(ATTRIBUTES).map(([a, p]) => [p, a])) as Record<AttrProp, AttrName>\n\nconst pick = <T extends string>(value: unknown, allowed: readonly T[]): T | undefined => (typeof value === `string` && (allowed as readonly string[]).includes(value) ? (value as T) : undefined)\n\n/** A numeric string = px, any other string = a CSS length. */\nexport function lengthOf(value: number | string | null | undefined): number | string | undefined {\n if (value === null || value === undefined || value === ``) return undefined\n if (typeof value === `number`) return Number.isFinite(value) ? value : undefined\n const t = value.trim()\n return /^-?\\d+(\\.\\d+)?$/.test(t) ? Number(t) : t\n}\n\n/** Every settable property (the upgrade pass). */\nconst PROPERTIES = [...Object.values(ATTRIBUTES), `surface`, `root`, `templates`, `data`, `host`, `plugin`, `extensions`, `strings`, `states`, `measure`, `viewportHeight`] as const\n\nconst isConnectable = (h: ExponentialHost) => h.hasTransport && h.status === `closed`\n\n/** The elements attached in the current task after the first one: mounted\n * together in a microtask (connectedCallback). */\nlet burst: Set<ExponentialSurfaceElement> | null = null\n\nexport class ExponentialSurfaceElement extends HTMLElement {\n static get observedAttributes(): string[] {\n return Object.keys(ATTRIBUTES)\n }\n\n // One signal per input (attribute-backed or not).\n #theme = createSignal<ThemeInput | undefined>(undefined)\n #mode = createSignal<string | undefined>(undefined)\n #density = createSignal<string | undefined>(undefined)\n #contrast = createSignal<string | undefined>(undefined)\n #locale = createSignal<string | undefined>(undefined)\n #timeZone = createSignal<string | undefined>(undefined)\n #direction = createSignal<string | undefined>(undefined)\n #width = createSignal<number | string | undefined>(undefined)\n #height = createSignal<number | string | undefined>(undefined)\n #surfaceId = createSignal<string | undefined>(undefined)\n #src = createSignal<string | undefined>(undefined)\n #post = createSignal<string | undefined>(undefined)\n #transport = createSignal<string | undefined>(undefined)\n #surface = createSignal<SurfaceState | undefined>(undefined)\n #root = createSignal<UiNode | null | undefined>(undefined)\n #templates = createSignal<Readonly<Record<string, UiNode>> | undefined>(undefined)\n #data = createSignal<DataModel | undefined>(undefined)\n #host = createSignal<ExponentialHost | undefined>(undefined)\n #plugin = createSignal<HostPlugin | undefined>(undefined)\n #extensions = createSignal<readonly SolidExtension[] | undefined>(undefined)\n #strings = createSignal<Record<string, string> | undefined>(undefined)\n #states = createSignal<readonly string[] | undefined>(undefined)\n #measure = createSignal<ExponentialSurfaceProps[`measure`]>(undefined)\n #viewportHeight = createSignal<number | undefined>(undefined)\n /** The store `apply()` made (and its owner's disposer). */\n #store = createSignal<SurfaceState | null>(null)\n #storeDispose?: () => void\n /** The host built from `src` (owned: connected and closed here). */\n #built?: { key: string; host: ExponentialHost }\n #status = createSignal<{ status: TransportStatus; detail?: string } | undefined>(undefined)\n /** VAPP-107: why `src`/`post` built no host (the URL policy denied one). */\n #denied = createSignal<string | undefined>(undefined)\n #liveHost?: ExponentialHost\n #currentSurface: Accessor<SurfaceState | null> = () => null\n #handle: SurfaceHandle | null = null\n #ready = false\n #dispose?: () => void\n /** Set while a property writes its attribute (the callback must not\n * overwrite a non-string value). */\n #reflecting = false\n\n // --- attributes ---------------------------------------------------------\n\n attributeChangedCallback(name: string, _old: string | null, value: string | null): void {\n if (this.#reflecting) return\n const prop = ATTRIBUTES[name as AttrName]\n if (prop) this.#signal(prop)[1](() => value ?? undefined)\n }\n\n #signal(prop: AttrProp): [Accessor<unknown>, Setter<unknown>] {\n switch (prop) {\n case `theme`:\n return this.#theme as never\n case `mode`:\n return this.#mode as never\n case `density`:\n return this.#density as never\n case `contrast`:\n return this.#contrast as never\n case `locale`:\n return this.#locale as never\n case `timeZone`:\n return this.#timeZone as never\n case `direction`:\n return this.#direction as never\n case `width`:\n return this.#width as never\n case `height`:\n return this.#height as never\n case `surfaceId`:\n return this.#surfaceId as never\n case `src`:\n return this.#src as never\n case `post`:\n return this.#post as never\n case `transport`:\n return this.#transport as never\n }\n }\n\n /** A property set: a string reflects to its attribute, null/undefined\n * removes it, any other value (an object theme, a number width) stays a\n * property only. */\n #setAttrProp(prop: AttrProp, value: unknown): void {\n const attr = ATTRIBUTE_OF[prop]\n if (typeof value === `string` || value === null || value === undefined) {\n this.#reflecting = true\n try {\n if (typeof value === `string`) this.setAttribute(attr, value)\n else this.removeAttribute(attr)\n } finally {\n this.#reflecting = false\n }\n }\n this.#signal(prop)[1](() => value ?? undefined)\n }\n\n get theme(): ThemeInput | undefined {\n return this.#theme[0]()\n }\n set theme(v: ThemeInput | undefined | null) {\n this.#setAttrProp(`theme`, v)\n }\n get mode(): Mode | undefined {\n return this.#mode[0]() as Mode | undefined\n }\n set mode(v: Mode | undefined | null) {\n this.#setAttrProp(`mode`, v)\n }\n get density(): Density | undefined {\n return this.#density[0]() as Density | undefined\n }\n set density(v: Density | undefined | null) {\n this.#setAttrProp(`density`, v)\n }\n get contrast(): Contrast | undefined {\n return this.#contrast[0]() as Contrast | undefined\n }\n set contrast(v: Contrast | undefined | null) {\n this.#setAttrProp(`contrast`, v)\n }\n get locale(): string | undefined {\n return this.#locale[0]()\n }\n set locale(v: string | undefined | null) {\n this.#setAttrProp(`locale`, v)\n }\n get timeZone(): string | undefined {\n return this.#timeZone[0]()\n }\n set timeZone(v: string | undefined | null) {\n this.#setAttrProp(`timeZone`, v)\n }\n get direction(): Direction | undefined {\n return this.#direction[0]() as Direction | undefined\n }\n set direction(v: Direction | undefined | null) {\n this.#setAttrProp(`direction`, v)\n }\n get width(): number | string | undefined {\n return this.#width[0]()\n }\n set width(v: number | string | undefined | null) {\n this.#setAttrProp(`width`, v)\n }\n get height(): number | string | undefined {\n return this.#height[0]()\n }\n set height(v: number | string | undefined | null) {\n this.#setAttrProp(`height`, v)\n }\n /** The surface id (`surface-id`, default `main`). */\n get surfaceId(): string {\n return this.#surfaceId[0]() || `main`\n }\n set surfaceId(v: string | undefined | null) {\n this.#setAttrProp(`surfaceId`, v)\n }\n get src(): string | undefined {\n return this.#src[0]()\n }\n set src(v: string | undefined | null) {\n this.#setAttrProp(`src`, v)\n }\n get post(): string | undefined {\n return this.#post[0]()\n }\n set post(v: string | undefined | null) {\n this.#setAttrProp(`post`, v)\n }\n get transport(): string | undefined {\n return this.#transport[0]()\n }\n set transport(v: string | undefined | null) {\n this.#setAttrProp(`transport`, v)\n }\n\n // --- properties ---------------------------------------------------------\n\n get surface(): SurfaceState | undefined {\n return this.#surface[0]()\n }\n set surface(v: SurfaceState | undefined | null) {\n this.#surface[1](() => v ?? undefined)\n }\n get root(): UiNode | null | undefined {\n return this.#root[0]()\n }\n set root(v: UiNode | null | undefined) {\n this.#root[1](() => v)\n }\n get templates(): Readonly<Record<string, UiNode>> | undefined {\n return this.#templates[0]()\n }\n set templates(v: Readonly<Record<string, UiNode>> | undefined | null) {\n this.#templates[1](() => v ?? undefined)\n }\n get data(): DataModel | undefined {\n return this.#data[0]()\n }\n set data(v: DataModel | undefined | null) {\n this.#data[1](() => v ?? undefined)\n }\n get host(): ExponentialHost | undefined {\n return this.#host[0]()\n }\n set host(v: ExponentialHost | undefined | null) {\n this.#host[1](() => v ?? undefined)\n }\n get plugin(): HostPlugin | undefined {\n return this.#plugin[0]()\n }\n set plugin(v: HostPlugin | undefined | null) {\n this.#plugin[1](() => v ?? undefined)\n }\n get extensions(): readonly SolidExtension[] | undefined {\n return this.#extensions[0]()\n }\n set extensions(v: readonly SolidExtension[] | undefined | null) {\n this.#extensions[1](() => v ?? undefined)\n }\n get strings(): Record<string, string> | undefined {\n return this.#strings[0]()\n }\n set strings(v: Record<string, string> | undefined | null) {\n this.#strings[1](() => v ?? undefined)\n }\n get states(): readonly string[] | undefined {\n return this.#states[0]()\n }\n set states(v: readonly string[] | undefined | null) {\n this.#states[1](() => v ?? undefined)\n }\n get measure(): ExponentialSurfaceProps[`measure`] {\n return this.#measure[0]()\n }\n set measure(v: ExponentialSurfaceProps[`measure`] | null) {\n this.#measure[1](() => v ?? undefined)\n }\n get viewportHeight(): number | undefined {\n return this.#viewportHeight[0]()\n }\n set viewportHeight(v: number | undefined | null) {\n this.#viewportHeight[1](() => v ?? undefined)\n }\n\n // --- read-only ----------------------------------------------------------\n\n /** The painted surface's handle; null until the first paint. */\n get handle(): SurfaceHandle | null {\n return this.#handle\n }\n /** The active store's reduce issues. */\n get issues(): SurfaceState[`issues`] {\n return this.surfaceState?.issues ?? []\n }\n /** The host's transport state (a host property or one built from `src`);\n * `closed` when the URL policy denied `src`/`post` (see `statusDetail`). */\n get status(): TransportStatus | undefined {\n return (this.#liveHost ?? this.#host[0]())?.status ?? this.#status[0]()?.status\n }\n /** The transport's detail (an error, or `src denied by the URL policy (private)`). */\n get statusDetail(): string | undefined {\n return (this.#liveHost ?? this.#host[0]())?.statusDetail ?? this.#status[0]()?.detail\n }\n /** The state painted: the `surface` property, the host's surface, or the\n * store `apply()` made. */\n get surfaceState(): SurfaceState | null {\n return untrack(() => this.#surface[0]() ?? this.#currentSurface() ?? this.#ownStore())\n }\n\n // --- sources ------------------------------------------------------------\n\n #ownStore(): SurfaceState | null {\n const s = this.#store[0]()\n return s && s.surfaceId === this.surfaceId ? s : null\n }\n\n /** The host in use: the property, else one built from `src` (rebuilt when\n * src/post/transport change; the old one is closed). VAPP-107: `src` and\n * `post` pass the page's URL policy (`plugin.urls`) first; a denied one\n * builds no host (the status says why). */\n #activeHost(): ExponentialHost | undefined {\n const given = this.#host[0]()\n if (given) {\n this.#dropBuilt()\n this.#denied[1](undefined)\n return given\n }\n const src = this.#src[0]()\n if (!src) {\n this.#dropBuilt()\n this.#denied[1](undefined)\n return undefined\n }\n const attrs = { src, post: this.#post[0](), transport: this.#transport[0]() }\n const policy = this.#plugin[0]()?.urls\n const decision = decideTransport(attrs, policy)\n if (!decision.allowed) {\n this.#dropBuilt()\n this.#denied[1](decision.reason)\n return undefined\n }\n this.#denied[1](undefined)\n const key = transportKey(attrs)\n if (this.#built?.key !== key) {\n this.#dropBuilt()\n this.#built = { key, host: createHost(attrs, extensionCatalogs(untrack(() => this.#extensions[0]()) ?? []), policy) }\n }\n return this.#built.host\n }\n\n #dropBuilt(): void {\n const b = this.#built\n this.#built = undefined\n b?.host.close()\n }\n\n // --- methods ------------------------------------------------------------\n\n /** One A2UI server message: to the `surface` property, else the host,\n * else a store made on first use (surface id = `surfaceId`). */\n apply(message: A2uiMessage): void {\n const given = untrack(() => this.#surface[0]())\n if (given) return given.apply(message)\n const host = untrack(() => this.#activeHost())\n if (host) {\n host.receive(message)\n return\n }\n let store = untrack(() => this.#ownStore())\n if (!store) {\n this.#storeDispose?.()\n const surfaceId = this.surfaceId\n store = createRoot((dispose) => {\n this.#storeDispose = dispose\n return createSurface({ surfaceId })\n })\n this.#store[1](() => store)\n }\n store.apply(message)\n }\n\n /** Write the data model (the active store's; in fixture mode a new `data`). */\n setData(pointer: string, value: unknown): void {\n const state = this.surfaceState\n if (state) state.setData(pointer, value)\n else this.data = setPointer(untrack(() => this.#data[0]()) ?? {}, pointer, value)\n }\n\n /** Back to the store's initial state (a host surface ignores it). */\n reset(): void {\n this.surfaceState?.reset()\n }\n\n run(command: SurfaceCommand): void {\n this.#handle?.run(command)\n }\n focus(id?: string | FocusOptions): boolean {\n if (typeof id !== `string`) {\n super.focus(id)\n return true\n }\n return this.#handle?.focus(id) ?? false\n }\n announce(text: string, live?: `polite` | `assertive`): void {\n this.#handle?.announce(text, live)\n }\n scrollIntoView(id?: string | boolean | ScrollIntoViewOptions): boolean {\n if (typeof id !== `string`) {\n super.scrollIntoView(id)\n return true\n }\n return this.#handle?.scrollIntoView(id) ?? false\n }\n scrollToIndex(id: string, index: number, align?: ScrollAlign): boolean {\n return this.#handle?.scrollToIndex(id, index, align) ?? false\n }\n\n // --- the plugin ---------------------------------------------------------\n\n /** The page's plugin with every callback also dispatched as an event. */\n #elementPlugin(base: HostPlugin): HostPlugin {\n return {\n ...base,\n onAction: (e) => {\n const own = base.onAction?.(e)\n return joinPending([own, ...emitWaiting(this, `xui-action`, e)])\n },\n onInput: (e) => {\n const own = base.onInput?.(e)\n return joinPending([own, ...emitWaiting(this, `xui-input`, e)])\n },\n onUpload: (files, target) => {\n const own = base.onUpload?.(files, target)\n return joinPending([own, ...emitWaiting(this, `xui-upload`, { files, target })])\n },\n onFunctionCall: (call) => {\n const own = base.onFunctionCall?.(call)\n let answered = false\n let answer: unknown\n emit(this, `xui-function-call`, {\n call,\n respond: (value) => {\n if (answered) return\n answered = true\n answer = value\n },\n })\n return answered ? answer : own\n },\n openUrl: (url) => {\n if (!emit(this, `xui-open-url`, { url }, true)) return\n if (base.openUrl) base.openUrl(url)\n else if (typeof window !== `undefined`) window.open(url, `_blank`, `noopener,noreferrer`)\n },\n onPaintError: (error) => {\n base.onPaintError?.(error)\n emit(this, `xui-paint-error`, { error })\n },\n onThemeIssues: (issues: ThemeIssue[]) => {\n base.onThemeIssues?.(issues)\n emit(this, `xui-theme-issues`, { issues })\n },\n onUnknown: (node) => {\n base.onUnknown?.(node)\n emit(this, `xui-unknown`, { node })\n },\n }\n }\n\n /** The plugin for a host surface: `hostPlugin` over the element's, with\n * the open still announced (`xui-open-url`) before the host opens it. */\n #hostPlugin(host: ExponentialHost, base: HostPlugin): HostPlugin {\n const merged = hostPlugin(host, this.#elementPlugin(base))\n return {\n ...merged,\n openUrl: (url) => {\n if (!emit(this, `xui-open-url`, { url }, true)) return\n if (base.openUrl) base.openUrl(url)\n else host.openUrl(url)\n },\n }\n }\n\n // --- mounting -----------------------------------------------------------\n\n /** A property set on the element before it was upgraded is an own data\n * property shadowing the accessor: move it onto the accessor. */\n #upgradeProperties(): void {\n for (const name of PROPERTIES) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) continue\n const value = (this as unknown as Record<string, unknown>)[name]\n delete (this as unknown as Record<string, unknown>)[name]\n ;(this as unknown as Record<string, unknown>)[name] = value\n }\n }\n\n connectedCallback(): void {\n this.#upgradeProperties()\n if (this.#dispose) return\n if (burst) {\n burst.add(this)\n return\n }\n burst = new Set()\n queueMicrotask(() => {\n const pending = burst\n burst = null\n if (pending?.size) batch(() => pending.forEach((el) => el.#mount()))\n })\n this.#mount()\n }\n\n #mount(): void {\n if (this.#dispose || !this.isConnected) return\n this.replaceChildren()\n this.#ready = false\n this.#dispose = render(() => this.#view(), this)\n }\n\n disconnectedCallback(): void {\n burst?.delete(this)\n const dispose = this.#dispose\n this.#dispose = undefined\n dispose?.()\n this.#handle = null\n this.#currentSurface = () => null\n this.#dropBuilt()\n this.#status[1](undefined)\n }\n\n #view() {\n const host = createMemo(() => this.#activeHost())\n // The host's state → `status` + `xui-status`; a host with a transport\n // that never connected is connected now (one built here is closed on\n // detach and on rebuild; a host property stays the page's).\n createEffect(() => {\n const h = host()\n this.#liveHost = h\n if (!h) {\n // A denied src/post: closed, with the reason, as a transport error would be.\n const reason = this.#denied[0]()\n const s = reason ? { status: `closed` as const, detail: reason } : undefined\n this.#status[1](s)\n if (s) emit(this, `xui-status`, s)\n return\n }\n let last: { status: TransportStatus; detail?: string } | undefined\n const check = () => {\n if (last && last.status === h.status && last.detail === h.statusDetail) return\n last = { status: h.status, detail: h.statusDetail }\n this.#status[1](last)\n emit(this, `xui-status`, h.statusDetail === undefined ? { status: h.status } : { status: h.status, detail: h.statusDetail })\n }\n const unsubscribe = h.subscribe(check)\n if (isConnectable(h)) h.connect()\n check()\n onCleanup(() => {\n unsubscribe()\n if (this.#liveHost === h) this.#liveHost = undefined\n })\n })\n const hostSurface = createMemo(() => {\n const h = host()\n return h ? createHostSurface(h, this.surfaceId) : undefined\n })\n const current = createMemo((): SurfaceState | null => this.#surface[0]() ?? hostSurface()?.() ?? this.#ownStore())\n this.#currentSurface = current\n const plugin = createMemo(() => {\n const base = this.#plugin[0]() ?? {}\n const h = host()\n return h ? this.#hostPlugin(h, base) : this.#elementPlugin(base)\n })\n const fixture = () => !current()\n const height = () => lengthOf(this.#height[0]())\n const handleRef = (handle: SurfaceHandle) => {\n this.#handle = handle\n if (this.#ready) return\n this.#ready = true\n queueMicrotask(() => {\n if (this.#handle === handle && this.isConnected) emit(this, `xui-ready`, { handle })\n })\n }\n const el = this\n const props: ExponentialSurfaceProps = {\n get surface() {\n return current() ?? undefined\n },\n get root() {\n return fixture() ? el.#root[0]() : undefined\n },\n get templates() {\n return fixture() ? el.#templates[0]() : undefined\n },\n get data() {\n return fixture() ? el.#data[0]() : undefined\n },\n get theme() {\n return current()?.theme ?? el.#theme[0]()\n },\n get mode() {\n return pick(el.#mode[0](), [`light`, `dark`, `system`] as const)\n },\n get density() {\n return pick(el.#density[0](), [`compact`, `default`, `comfortable`] as const)\n },\n get contrast() {\n return pick(el.#contrast[0](), [`normal`, `high`, `system`] as const)\n },\n get locale() {\n return el.#locale[0]() || undefined\n },\n get timeZone() {\n return el.#timeZone[0]() || undefined\n },\n get direction() {\n return pick(el.#direction[0](), [`ltr`, `rtl`] as const)\n },\n get width() {\n return lengthOf(el.#width[0]())\n },\n get style() {\n const h = height()\n return h === undefined ? undefined : { height: px(h) }\n },\n get viewportHeight() {\n return el.#viewportHeight[0]()\n },\n get strings() {\n return el.#strings[0]()\n },\n get extensions() {\n return el.#extensions[0]()\n },\n get states() {\n return el.#states[0]()\n },\n get measure() {\n return el.#measure[0]()\n },\n get host() {\n return plugin()\n },\n get id() {\n return el.surfaceId\n },\n handleRef,\n }\n // A host surface paints only once the host has it; a src/post the URL\n // policy denied (no host) paints nothing either.\n return createComponent(Show as unknown as (p: { when: boolean; children: JSX.Element }) => JSX.Element, {\n get when() {\n return (!host() && !el.#denied[0]()) || el.#surface[0]() !== undefined || current() !== null\n },\n get children() {\n return createComponent(ExponentialSurface, props)\n },\n })\n }\n}\n\n",
6
+ "// FEED-130: what `<exponential-surface>` tells the page. Every renderer\n// callback of the host plugin is ALSO a DOM event on the element (a\n// `CustomEvent`, bubbling and composed), so a framework-less page listens\n// instead of building a plugin. The ones the painter waits on (`xui-action`,\n// `xui-input`, `xui-upload`) carry `waitUntil(promise)`: the plugin's promise\n// and every listener's are JOINED, so the control stays pending until all\n// settle. The ones that need a return value (option sources, media,\n// resolveUrl, Markdown…) stay plugin-only.\n\nimport type { FunctionCallInfo, ThemeIssue, TransportStatus, UiNode } from \"@exponential-at/ui\"\nimport type { PaintError, SurfaceActionEvent, SurfaceHandle, SurfaceInputEvent } from \"@exponential-at/ui-solid\"\nimport type { ExponentialSurfaceElement } from \"./element\"\n\n/** Keeps the source control pending until `promise` settles. */\nexport interface WaitUntil {\n waitUntil: (promise: Promise<unknown>) => void\n}\n\nexport type SurfaceActionDetail = SurfaceActionEvent & WaitUntil\n/** `waitUntil` acknowledges the input's revision when it settles. */\nexport type SurfaceInputDetail = SurfaceInputEvent & WaitUntil\nexport interface FunctionCallDetail {\n call: FunctionCallInfo\n /** The call's result (the first `respond` wins; none = the plugin's\n * `onFunctionCall` result, else undefined). A promise keeps the source\n * control pending. */\n respond: (value: unknown) => void\n}\n/** Cancelable: `preventDefault()` = the page opens it (or not) itself. */\nexport interface OpenUrlDetail {\n url: string\n}\nexport interface UploadDetail extends WaitUntil {\n files: File[]\n target: { nodeId: string; name: string }\n}\nexport interface StatusDetail {\n status: TransportStatus\n detail?: string\n}\n\nexport interface ExponentialSurfaceEventMap {\n \"xui-action\": CustomEvent<SurfaceActionDetail>\n \"xui-input\": CustomEvent<SurfaceInputDetail>\n \"xui-function-call\": CustomEvent<FunctionCallDetail>\n \"xui-open-url\": CustomEvent<OpenUrlDetail>\n \"xui-upload\": CustomEvent<UploadDetail>\n \"xui-paint-error\": CustomEvent<{ error: PaintError }>\n \"xui-theme-issues\": CustomEvent<{ issues: ThemeIssue[] }>\n \"xui-unknown\": CustomEvent<{ node: UiNode }>\n \"xui-status\": CustomEvent<StatusDetail>\n \"xui-ready\": CustomEvent<{ handle: SurfaceHandle }>\n}\n\nexport type ExponentialSurfaceEventName = keyof ExponentialSurfaceEventMap\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"exponential-surface\": ExponentialSurfaceElement\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n interface HTMLElementEventMap extends ExponentialSurfaceEventMap {}\n}\n\ntype DetailOf<K extends ExponentialSurfaceEventName> = ExponentialSurfaceEventMap[K] extends CustomEvent<infer D> ? D : never\n\n/** Dispatch one event; returns false when a listener cancelled it. */\nexport function emit<K extends ExponentialSurfaceEventName>(target: EventTarget, name: K, detail: DetailOf<K>, cancelable = false): boolean {\n return target.dispatchEvent(new CustomEvent(name, { detail, bubbles: true, composed: true, cancelable }))\n}\n\nconst isThenable = (v: unknown): v is PromiseLike<unknown> => typeof v === `object` && v !== null && typeof (v as { then?: unknown }).then === `function`\n\n/** The plugin's result and every `waitUntil` promise, joined: undefined when\n * none is a promise (the painter acknowledges at once), else one promise\n * that settles with all of them (and rejects with the first rejection). */\nexport function joinPending(results: readonly unknown[]): Promise<void> | undefined {\n const pending = results.filter(isThenable)\n if (pending.length === 0) return undefined\n return Promise.all(pending).then(() => undefined)\n}\n\n/** Dispatch a waiting event: `base` + `waitUntil`; returns the promises the\n * listeners handed over. */\nexport function emitWaiting<K extends `xui-action` | `xui-input` | `xui-upload`>(target: EventTarget, name: K, base: Omit<DetailOf<K>, `waitUntil`>): Promise<unknown>[] {\n const waits: Promise<unknown>[] = []\n const detail = { ...base, waitUntil: (p: Promise<unknown>) => void waits.push(Promise.resolve(p)) } as DetailOf<K>\n emit(target, name, detail)\n return waits\n}\n",
7
+ "// FEED-130: the element's `src` / `post` / `transport` attributes → the host\n// API (`ExponentialHost` over one of the SDK's transports), so a page\n// streams a surface with markup alone. `ws:`/`wss:` or `transport=\"ws\"` =\n// WebSocket frames, `transport=\"sse\"` = Server-Sent Events, anything else =\n// A2UI JSONL over a streamed HTTP response; client messages POST to `post`\n// (default `src`). The element owns a host it built: connect on attach,\n// close on detach or when the three change.\n//\n// VAPP-107: `src` and `post` pass the page's URL policy (`plugin.urls`, the\n// same one every href passes) BEFORE a transport exists: a private,\n// loopback or link-local host is denied unless `allowPrivate` opts it in\n// (the page's own private origin is, as for every href), a `hosts`\n// allowlist holds, `schemes: [\"https\"]` means https + wss only, and a\n// javascript:/file:/data: src never connects. ws(s) urls are decided as\n// their http(s) twins (the policy knows http hosts). Denied = no host, no\n// request; the element reports `closed` with the reason.\n\nimport { DEFAULT_URL_SCHEMES, ExponentialHost, JsonlStreamTransport, SseTransport, WebSocketTransport, decideUrl } from \"@exponential-at/ui\"\nimport type { ExtensionDef, Transport, UrlDecision, UrlPolicy } from \"@exponential-at/ui\"\nimport { ownPrivateHosts } from \"@exponential-at/ui/web\"\n\nexport type TransportKind = `jsonl` | `sse` | `ws`\n\nexport interface TransportAttributes {\n src: string\n post?: string | null\n transport?: string | null\n}\n\n/** Which transport the attributes name. */\nexport function transportKind(attrs: TransportAttributes): TransportKind {\n if (attrs.transport === `ws` || /^wss?:/i.test(attrs.src)) return `ws`\n if (attrs.transport === `sse`) return `sse`\n return `jsonl`\n}\n\nexport function createTransport(attrs: TransportAttributes): Transport {\n const kind = transportKind(attrs)\n const postUrl = attrs.post || undefined\n if (kind === `ws`) return new WebSocketTransport({ url: attrs.src })\n if (kind === `sse`) return new SseTransport({ url: attrs.src, postUrl })\n return new JsonlStreamTransport({ url: attrs.src, postUrl })\n}\n\n/** The decision for `src` and `post` under the page's URL policy. */\nexport interface TransportDecision {\n allowed: boolean\n src: UrlDecision\n /** Only when `post` is set. */\n post?: UrlDecision\n /** Why not, for the element's status (`src denied by the URL policy (private)`). */\n reason?: string\n}\n\nconst WS_OF: Record<string, string> = { http: `ws`, https: `wss` }\n\n/** The transport schemes a URL policy allows: its http(s) entries (default\n * both) and their ws(s) twins; nothing else (mailto, tel, javascript,\n * file, data never carry a transport). */\nexport function transportSchemes(policy: UrlPolicy | undefined): string[] {\n const http = (policy?.schemes ?? DEFAULT_URL_SCHEMES).filter((s) => s === `http` || s === `https`)\n return [...http, ...http.map((s) => WS_OF[s]!)]\n}\n\nconst documentBase = (): string | undefined => (typeof document !== `undefined` && document.baseURI ? document.baseURI : undefined)\n\nfunction decideOne(url: string, policy: UrlPolicy | undefined, schemes: readonly string[]): UrlDecision {\n const baseUrl = policy?.baseUrl ?? documentBase()\n let parsed: URL\n try {\n parsed = new URL(url.trim(), baseUrl)\n } catch {\n return { allowed: false, reason: `invalid` }\n }\n const scheme = parsed.protocol.replace(/:$/, ``).toLowerCase()\n if (!schemes.includes(scheme)) return { allowed: false, url: parsed.href, reason: `scheme` }\n // ws(s) decided as http(s): the host allowlist and the private-host rule apply alike.\n const twin = scheme === `ws` ? `http:${parsed.href.slice(3)}` : scheme === `wss` ? `https:${parsed.href.slice(4)}` : parsed.href\n const own = ownPrivateHosts()\n const allowPrivate = own.length ? [...(policy?.allowPrivate ?? []), ...own] : policy?.allowPrivate\n const d = decideUrl({ schemes: [`http`, `https`], hosts: policy?.hosts, allowPrivate, baseUrl }, twin)\n return d.allowed ? { allowed: true, url: parsed.href } : { allowed: false, url: parsed.href, reason: d.reason }\n}\n\n/** VAPP-107: `src` (and `post` when set) under the page's URL policy. */\nexport function decideTransport(attrs: TransportAttributes, policy?: UrlPolicy): TransportDecision {\n const schemes = transportSchemes(policy)\n const src = decideOne(attrs.src, policy, schemes)\n const post = attrs.post ? decideOne(attrs.post, policy, schemes) : undefined\n const denied = !src.allowed ? [`src`, src] as const : post && !post.allowed ? [`post`, post] as const : undefined\n return denied ? { allowed: false, src, post, reason: `${denied[0]} denied by the URL policy (${denied[1].reason})` } : { allowed: true, src, post }\n}\n\n/** A host over the attributes' transport (not connected yet). `extensions`\n * = the catalogs of the element's `extensions` at build time (the host's\n * reducer must know them, or an extension component reduces to Unknown).\n * VAPP-107: `policy` (the page's URL policy, default the SDK's) decides\n * `src` and `post` first; a denied one throws before any transport exists. */\nexport function createHost(attrs: TransportAttributes, extensions: readonly ExtensionDef[] = [], policy?: UrlPolicy): ExponentialHost {\n const decision = decideTransport(attrs, policy)\n if (!decision.allowed) throw new Error(`exponential-ui: ${decision.reason}`)\n return new ExponentialHost({ transport: createTransport(attrs), extensions })\n}\n\n/** The identity of a built host: a change rebuilds it. */\nexport const transportKey = (attrs: TransportAttributes): string => `${transportKind(attrs)}\\u0000${attrs.src}\\u0000${attrs.post ?? ``}`\n",
8
+ "// FEED-130: icons for a page with no component framework. The Solid painter\n// draws the catalog's `Icon` names through `plugin.icons` (Solid\n// components); `iconsFromSvg` wraps plain SVG MARKUP strings (an icon\n// sprite, lucide-static, a CMS) into such components. A host icon that is\n// not a lucide-solid glyph is painted AS IT IS (icons.tsx `PaintIcon`), so\n// the wrapper itself writes what lucide-react's `<svg>` root carries for\n// the props it is handed: `width`/`height` = `width` ?? `size` ?? 24,\n// `class` = the markup's classes + the painter's, `aria-hidden=\"true\"`\n// unless an aria-*/role/title prop is passed, `stroke` = `color`,\n// `stroke-width` = `strokeWidth`, and every other string/number attribute\n// (`data-icon`, `data-slot`…) as given. The markup is the host's (trusted);\n// scripts, `foreignObject`, `on*` handlers and `javascript:` links are\n// dropped anyway.\n\nimport { createRenderEffect } from \"solid-js\"\nimport type { IconComponent, IconMap } from \"@exponential-at/ui-solid\"\n\nconst SKIP = new Set([`size`, `class`, `color`, `strokeWidth`, `absoluteStrokeWidth`, `children`, `ref`, `width`, `height`])\n\nfunction sanitize(root: Element): void {\n for (const el of Array.from(root.querySelectorAll(`script,foreignObject`))) el.remove()\n for (const el of [root, ...Array.from(root.querySelectorAll(`*`))]) {\n for (const a of Array.from(el.attributes)) {\n if (/^on/i.test(a.name) || (/(^|:)href$/i.test(a.name) && /^\\s*javascript:/i.test(a.value))) el.removeAttribute(a.name)\n }\n }\n}\n\nfunction parse(markup: string): SVGSVGElement | null {\n if (typeof document === `undefined`) return null\n const t = document.createElement(`template`)\n t.innerHTML = markup.trim()\n const svg = t.content.firstElementChild\n if (!svg || svg.localName !== `svg`) return null\n sanitize(svg)\n return svg as SVGSVGElement\n}\n\nconst classTokens = (...values: (string | null | undefined)[]): string =>\n values\n .flatMap((v) => (v ?? ``).split(/\\s+/))\n .filter((c, i, all) => c !== `` && all.indexOf(c) === i)\n .join(` `)\n\n/** One SVG markup string as an icon component. */\nexport function svgIcon(markup: string): IconComponent {\n let template: SVGSVGElement | null | undefined\n return ((props: Record<string, unknown>) => {\n if (template === undefined) template = parse(markup)\n if (!template) return null\n const svg = template.cloneNode(true) as SVGSVGElement\n const base = template.getAttribute(`class`)\n let written = new Set<string>()\n createRenderEffect(() => {\n const next = new Set<string>()\n const set = (name: string, value: unknown) => {\n if (value === undefined || value === null || value === false) return\n svg.setAttribute(name, String(value))\n next.add(name)\n }\n const size = props.size as number | string | undefined\n set(`width`, props.width ?? size ?? 24)\n set(`height`, props.height ?? size ?? 24)\n const cls = classTokens(base, props.class as string | undefined)\n if (cls) set(`class`, cls)\n if (props.color !== undefined) set(`stroke`, props.color)\n if (props.strokeWidth !== undefined) set(`stroke-width`, props.strokeWidth)\n const keys = Object.keys(props)\n const a11y = keys.some((k) => k.startsWith(`aria-`) || k === `role` || k === `title`)\n if (!a11y) set(`aria-hidden`, `true`)\n for (const k of keys) {\n if (SKIP.has(k)) continue\n const v = props[k]\n if (typeof v === `string` || typeof v === `number` || v === true) set(k, v)\n }\n // Attributes a previous run wrote and this one does not: back to the\n // markup's own value (or gone).\n for (const name of written) {\n if (next.has(name)) continue\n const own = template!.getAttribute(name)\n if (own === null) svg.removeAttribute(name)\n else svg.setAttribute(name, own)\n }\n written = next\n })\n return svg\n }) as unknown as IconComponent\n}\n\n/** A registry name → SVG markup lookup, as the icon map `plugin.icons`\n * takes. A name it has no markup for falls through to the renderer's own\n * glyphs (then the placeholder). One component per distinct markup. */\nexport function iconsFromSvg(resolve: (name: string) => string | undefined): IconMap {\n const byMarkup = new Map<string, IconComponent>()\n return (name: string) => {\n const markup = resolve(name)\n if (!markup) return undefined\n let icon = byMarkup.get(markup)\n if (!icon) {\n icon = svgIcon(markup)\n byMarkup.set(markup, icon)\n }\n return icon\n }\n}\n\n",
9
+ "// FEED-130: extensions without a framework. An `ElementPainter` is a plain\n// function: the node, its resolved props, the theme and mode in, ONE DOM\n// element out. `defineElementExtension` adapts each into the Solid\n// extension component the painter expects: the painter runs in a memo over\n// the node, props, theme, mode and root attributes (a change paints a NEW\n// element, which replaces the old; Solid inserts a DOM node as it is), and\n// the node's children and slots are resolved once through Solid's\n// `children()` (the same nodes move into each new element).\n\nimport { children as resolveChildren, createMemo, getOwner, runWithOwner, untrack } from \"solid-js\"\nimport type { JSX } from \"solid-js\"\nimport type { ExtensionDef, ModeName, ResolvedTheme, UiNode } from \"@exponential-at/ui\"\nimport { defineSolidExtension, registerExtension as registerSolidExtension, type ExtensionComponent, type ExtensionComponentProps, type RegisterExtensionOptions, type SolidExtension } from \"@exponential-at/ui-solid\"\n\nexport interface ElementPaintContext {\n node: UiNode\n /** The node's props, resolved against the data model. */\n props: Record<string, unknown>\n theme: ResolvedTheme\n mode: ModeName\n tokens: ResolvedTheme[`tokens`]\n /** Fire one of the node's `on` handlers (`own` = what the element just\n * wrote, by prop). A promise = the host is still handling it. */\n emit: (event: string, payload?: Record<string, unknown>, own?: Record<string, unknown>) => Promise<void> | void\n /** What the renderer wants on the root: `class`, `data-xui-id`,\n * `data-xui-c`, recipe `data-r-*`/`data-m-*`, `data-xs`, aria, `dir`,\n * `style` (kebab-case keys). */\n rootProps: Record<string, unknown>\n /** Sets `rootProps` on `el` (classes added to its own). */\n applyRootProps: (el: Element) => void\n /** The node's painted children (append them where they belong). */\n children: () => Node[]\n /** One slot's painted nodes (empty when the node has no such slot). */\n slot: (name: string) => Node[]\n}\n\nexport type ElementPainter = (ctx: ElementPaintContext) => Element\n\n/** `rootProps` onto an element: classes merge, `style` entries are set one\n * by one, null/undefined skip, everything else as a string. */\nexport function applyRootProps(el: Element, rootProps: Record<string, unknown>): void {\n for (const [name, value] of Object.entries(rootProps)) {\n if (value === undefined || value === null) continue\n if (name === `class`) {\n for (const c of String(value).split(/\\s+/)) if (c) el.classList.add(c)\n } else if (name === `style`) {\n const style = (el as HTMLElement).style\n if (!style || typeof value !== `object`) continue\n for (const [k, v] of Object.entries(value as Record<string, unknown>)) if (v !== undefined && v !== null) style.setProperty(k, String(v))\n } else el.setAttribute(name, String(value))\n }\n}\n\nconst toNodes = (value: unknown): Node[] => {\n const out: Node[] = []\n const visit = (v: unknown) => {\n if (Array.isArray(v)) v.forEach(visit)\n else if (typeof v === `function`) visit((v as () => unknown)())\n else if (v instanceof Node) out.push(v)\n else if (typeof v === `string` || typeof v === `number`) out.push(document.createTextNode(String(v)))\n }\n visit(value)\n return out\n}\n\nfunction adapt(painter: ElementPainter): ExtensionComponent {\n return (p: ExtensionComponentProps): JSX.Element => {\n const owner = getOwner()\n const kids = resolveChildren(() => p.children)\n const slots = new Map<string, () => unknown>()\n const slotOf = (name: string) => {\n let hit = slots.get(name)\n if (!hit) {\n // Created under the component (not the paint memo): a re-paint keeps\n // the slot's painted subtree.\n hit = runWithOwner(owner, () => resolveChildren(() => untrack(() => p.slots)[name])) as () => unknown\n slots.set(name, hit)\n }\n return hit\n }\n for (const name of Object.keys(untrack(() => p.node.slots) ?? {})) slotOf(name)\n const painted = createMemo(() => {\n const rootProps = p.rootProps\n const ctx: ElementPaintContext = {\n node: p.node,\n props: p.props,\n theme: p.theme,\n mode: p.mode,\n tokens: p.tokens,\n emit: p.emit,\n rootProps,\n applyRootProps: (el) => applyRootProps(el, rootProps),\n children: () => toNodes(kids()),\n slot: (name) => (p.node.slots?.[name] ? toNodes(slotOf(name)()) : []),\n }\n return painter(ctx)\n })\n return painted as unknown as JSX.Element\n }\n}\n\n/** A per-surface extension (the `extensions` property) or, through\n * `registerExtension`, a page-wide one, painted by vanilla painters. A\n * `components` key naming a core native OVERRIDES its painter. */\nexport function defineElementExtension(options: { catalog?: ExtensionDef | unknown; components: Record<string, ElementPainter> }): SolidExtension {\n const components: Record<string, ExtensionComponent> = {}\n for (const [name, painter] of Object.entries(options.components)) components[name] = adapt(painter)\n return defineSolidExtension({ catalog: options.catalog as ExtensionDef | undefined, components })\n}\n\n/** Register an extension for every surface on the page (Solid's\n * `registerExtension`), taking a `defineElementExtension` /\n * `defineSolidExtension` result as well as the raw options. Returns the\n * unregister function. */\nexport function registerExtension(extension: SolidExtension | RegisterExtensionOptions): () => void {\n const options: RegisterExtensionOptions = `catalog` in extension && extension.catalog === null ? { components: extension.components } : (extension as RegisterExtensionOptions)\n return registerSolidExtension(options)\n}\n",
10
+ "// @exponential-at/ui-element — Exponential UI as a custom element (FEED-130):\n// `<exponential-surface>` paints a core A2UI surface in any page, with no\n// framework, by mounting the Solid renderer inside itself (the same DOM,\n// stylesheet and runtime themes as the React renderer). This entry has no\n// side effects: `define()` registers the tag (`./define` does it on import,\n// `./standalone` is the self-contained bundle).\n\nimport { ExponentialSurfaceElement, TAG } from \"./element\"\n\nexport { ExponentialSurfaceElement, TAG, lengthOf } from \"./element\"\nexport { iconsFromSvg, svgIcon } from \"./icons\"\nexport { defineElementExtension, registerExtension, applyRootProps } from \"./extensions\"\nexport type { ElementPainter, ElementPaintContext } from \"./extensions\"\nexport { createHost, createTransport, transportKind, decideTransport, transportSchemes } from \"./transport\"\nexport type { TransportKind, TransportAttributes, TransportDecision } from \"./transport\"\nexport type { SurfaceActionDetail, SurfaceInputDetail, FunctionCallDetail, OpenUrlDetail, UploadDetail, StatusDetail, WaitUntil, ExponentialSurfaceEventMap, ExponentialSurfaceEventName } from \"./events\"\nexport { defineSolidExtension, createSurface } from \"@exponential-at/ui-solid\"\nexport type { A2uiMessage, SurfaceState, SurfaceHandle, HostPlugin, IconMap, IconComponent, ThemeInput, SolidExtension } from \"@exponential-at/ui-solid\"\n\n/** Register the element under `tag` (default `exponential-surface`).\n * Idempotent; a tag already taken by another class throws. Another tag\n * gets its own subclass (one constructor per tag). */\nexport function define(tag: string = TAG): void {\n if (typeof customElements === `undefined`) return\n const existing = customElements.get(tag)\n if (existing) {\n if (existing === ExponentialSurfaceElement || existing.prototype instanceof ExponentialSurfaceElement) return\n throw new Error(`exponential-ui: <${tag}> is already defined by another class (a second copy of @exponential-at/ui-element, or another library); pick another tag with define(\"my-surface\")`)\n }\n customElements.define(tag, tag === TAG ? ExponentialSurfaceElement : class extends ExponentialSurfaceElement {})\n installHostRule(tag)\n}\n\n/** ONE document rule per tag, `:where(<tag>){display:contents}` (specificity\n * 0: any author rule wins): the element is no box of its own, the surface's\n * `.xui-surface` root is. Idempotent; nothing without a document. */\nexport function installHostRule(tag: string): void {\n if (typeof document === `undefined` || !document.head) return\n if (document.head.querySelector(`style[data-xui-element=\"${tag}\"]`)) return\n const style = document.createElement(`style`)\n style.setAttribute(`data-xui-element`, tag)\n style.textContent = `:where(${tag}){display:contents}`\n document.head.appendChild(style)\n}\n"
11
+ ],
12
+ "mappings": "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",
13
+ "debugId": "61792AA23A38D24D64756E2164756E21",
14
+ "names": []
15
+ }
package/dist/define.js ADDED
@@ -0,0 +1,44 @@
1
+ import {
2
+ transportKind2,
3
+ createTransport2,
4
+ transportSchemes2,
5
+ decideTransport2,
6
+ createHost2,
7
+ TAG2,
8
+ lengthOf2,
9
+ ExponentialSurfaceElement2,
10
+ svgIcon2,
11
+ iconsFromSvg2,
12
+ applyRootProps2,
13
+ defineElementExtension2,
14
+ registerExtension2,
15
+ define2,
16
+ installHostRule2,
17
+ defineSolidExtension2,
18
+ createSurface2
19
+ } from "./chunks/index-yte5bftp.js";
20
+
21
+ // packages/exponential-ui-element/src/define.ts
22
+ define2();
23
+ export {
24
+ ExponentialSurfaceElement2 as ExponentialSurfaceElement,
25
+ TAG2 as TAG,
26
+ applyRootProps2 as applyRootProps,
27
+ createHost2 as createHost,
28
+ createSurface2 as createSurface,
29
+ createTransport2 as createTransport,
30
+ decideTransport2 as decideTransport,
31
+ define2 as define,
32
+ defineElementExtension2 as defineElementExtension,
33
+ defineSolidExtension2 as defineSolidExtension,
34
+ iconsFromSvg2 as iconsFromSvg,
35
+ installHostRule2 as installHostRule,
36
+ lengthOf2 as lengthOf,
37
+ registerExtension2 as registerExtension,
38
+ svgIcon2 as svgIcon,
39
+ transportKind2 as transportKind,
40
+ transportSchemes2 as transportSchemes
41
+ };
42
+
43
+ //# debugId=603368E39518685264756E2164756E21
44
+ //# sourceMappingURL=define.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/define.ts"],
4
+ "sourcesContent": [
5
+ "// FEED-130: the side-effect entry: importing it registers\n// `<exponential-surface>` (idempotent) and re-exports the package.\nimport { define } from \"./index\"\n\ndefine()\n\nexport * from \"./index\"\n"
6
+ ],
7
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;AAIA,QAAO;",
8
+ "debugId": "603368E39518685264756E2164756E21",
9
+ "names": []
10
+ }
package/dist/index.js ADDED
@@ -0,0 +1,41 @@
1
+ import {
2
+ transportKind2,
3
+ createTransport2,
4
+ transportSchemes2,
5
+ decideTransport2,
6
+ createHost2,
7
+ TAG2,
8
+ lengthOf2,
9
+ ExponentialSurfaceElement2,
10
+ svgIcon2,
11
+ iconsFromSvg2,
12
+ applyRootProps2,
13
+ defineElementExtension2,
14
+ registerExtension2,
15
+ define2,
16
+ installHostRule2,
17
+ defineSolidExtension2,
18
+ createSurface2
19
+ } from "./chunks/index-yte5bftp.js";
20
+ export {
21
+ ExponentialSurfaceElement2 as ExponentialSurfaceElement,
22
+ TAG2 as TAG,
23
+ applyRootProps2 as applyRootProps,
24
+ createHost2 as createHost,
25
+ createSurface2 as createSurface,
26
+ createTransport2 as createTransport,
27
+ decideTransport2 as decideTransport,
28
+ define2 as define,
29
+ defineElementExtension2 as defineElementExtension,
30
+ defineSolidExtension2 as defineSolidExtension,
31
+ iconsFromSvg2 as iconsFromSvg,
32
+ installHostRule2 as installHostRule,
33
+ lengthOf2 as lengthOf,
34
+ registerExtension2 as registerExtension,
35
+ svgIcon2 as svgIcon,
36
+ transportKind2 as transportKind,
37
+ transportSchemes2 as transportSchemes
38
+ };
39
+
40
+ //# debugId=B91DC2B95CC242B164756E2164756E21
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "B91DC2B95CC242B164756E2164756E21",
8
+ "names": []
9
+ }