@ecopages/radiant 0.1.6 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -40,6 +40,6 @@ bun install @ecopages/radiant
40
40
  | `./mixins` | Contains mixin modules. |
41
41
  | `./mixins/with-kita` | Mixin for Kita functionality. |
42
42
  | `./tools` | Contains utility modules. |
43
- | `./tools/stringify-attribute` | Utility for stringifying attributes. |
43
+ | `./tools/stringify-typed` | Utility for stringifying attributes. |
44
44
  | `./tools/event-emitter` | Utility for emitting events. |
45
45
  | `./utils` | Contains additional utility modules. |
@@ -7,7 +7,6 @@ type ContextProviderOptions<T extends UnknownContext> = {
7
7
  initialValue?: T['__context__'];
8
8
  hydrate?: AttributeTypeConstant;
9
9
  };
10
- export declare const HYDRATE_ATTRIBUTE = "hydrate-context";
11
10
  /**
12
11
  * Represents a context provider that allows setting and getting the context,
13
12
  * as well as subscribing to context updates.
@@ -175,8 +175,6 @@ class ContextSubscriptionRequestEvent extends Event {
175
175
  }
176
176
 
177
177
  // src/context/context-provider.ts
178
- var HYDRATE_ATTRIBUTE = "hydrate-context";
179
-
180
178
  class ContextProvider {
181
179
  host;
182
180
  context;
@@ -187,10 +185,10 @@ class ContextProvider {
187
185
  this.context = options.context;
188
186
  let contextValue = options.initialValue;
189
187
  if (options.hydrate) {
190
- const hydrationValue = this.host.getAttribute(HYDRATE_ATTRIBUTE);
191
- if (hydrationValue) {
188
+ const hydrationScriptElement = this.host.querySelector("script[data-hydration]");
189
+ if (hydrationScriptElement?.textContent) {
190
+ const hydrationValue = hydrationScriptElement.textContent;
192
191
  const parsedHydrationValue = readAttributeValue(hydrationValue, options.hydrate);
193
- this.host.removeAttribute(HYDRATE_ATTRIBUTE);
194
192
  if (options.hydrate === Object && this.isObject(parsedHydrationValue) && (this.isObject(contextValue) || typeof contextValue === "undefined")) {
195
193
  contextValue = {
196
194
  ...contextValue ?? {},
@@ -276,8 +274,7 @@ class ContextProvider {
276
274
  };
277
275
  }
278
276
  export {
279
- HYDRATE_ATTRIBUTE,
280
277
  ContextProvider
281
278
  };
282
279
 
283
- //# debugId=92838E4143DC2D6464756E2164756E21
280
+ //# debugId=19BF7CBFBD9F2B6364756E2164756E21
@@ -4,9 +4,9 @@
4
4
  "sourcesContent": [
5
5
  "export type AttributeTypeConstant = typeof Array | typeof Boolean | typeof Number | typeof Object | typeof String;\n\nexport type AttributeTypeDefault = Array<unknown> | boolean | number | Record<string, unknown> | string;\n\n/**\n * Parses the given attribute type constant and returns its corresponding string representation.\n *\n * @param constant - The attribute type constant to parse.\n * @returns The string representation of the attribute type constant.\n */\nexport function parseAttributeTypeConstant(constant?: AttributeTypeConstant) {\n switch (constant) {\n case Array:\n return 'array';\n case Boolean:\n return 'boolean';\n case Number:\n return 'number';\n case Object:\n return 'object';\n case String:\n return 'string';\n }\n}\n\n/**\n * Parses the attribute type default value and returns its type as a string.\n *\n * @param defaultValue - The default value of the attribute type.\n * @returns The type of the default value as a string.\n */\nexport function parseAttributeTypeDefault(defaultValue?: AttributeTypeDefault) {\n switch (typeof defaultValue) {\n case 'boolean':\n return 'boolean';\n case 'number':\n return 'number';\n case 'string':\n return 'string';\n }\n\n if (Array.isArray(defaultValue)) return 'array';\n if (Object.prototype.toString.call(defaultValue) === '[object Object]') return 'object';\n}\n\n/**\n * Returns the default value for a given attribute type.\n *\n * @param type - The attribute type constant.\n * @returns The default value for the specified attribute type.\n */\nexport function defaultValueForType(type: AttributeTypeConstant): unknown {\n switch (type) {\n case Number:\n return 0;\n case String:\n return '';\n case Boolean:\n return false;\n default:\n return null;\n }\n}\n\ntype Reader = (value: string) => number | string | boolean | object | unknown[];\n\n/**\n * Utility function to parse a JSON string safely\n */\nfunction parseJSON<T>(value: string): T {\n try {\n return JSON.parse(value);\n } catch (error) {\n throw new TypeError('Invalid JSON string');\n }\n}\n\n/**\n * Object that maps attribute types to reader functions.\n * @type {Object.<string, Reader>}\n */\nconst readers: { [type: string]: Reader } = {\n array(value: string): unknown[] {\n const array = parseJSON<unknown[]>(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`Expected an array but got a value of type \"${typeof array}\"`);\n }\n return array;\n },\n\n boolean(value: string): boolean {\n return !(value === '0' || String(value).toLowerCase() === 'false');\n },\n\n number(value: string): number {\n const number = Number(value.replace(/_/g, ''));\n return number;\n },\n\n object(value: string): object {\n const object = JSON.parse(value);\n if (object === null || typeof object !== 'object' || Array.isArray(object)) {\n throw new TypeError(\n `expected value of type \"object\" but instead got value \"${value}\" of type \"${parseAttributeTypeDefault(\n object,\n )}\"`,\n );\n }\n return object;\n },\n\n string(value: string): string {\n return value;\n },\n};\n\ntype Writer = (value: unknown) => string;\n\n/**\n * Object that maps attribute types to writer functions.\n * @type {Object.<string, Writer>}\n */\nconst writers: { [type: string]: Writer } = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\n\nfunction writeJSON(value: unknown) {\n return JSON.stringify(value);\n}\n\nfunction writeString(value: unknown) {\n return `${value}`;\n}\n\n/**\n * Reads the attribute value based on the provided type.\n * @param value - The attribute value to be read.\n * @param type - The type of the attribute.\n * @returns The parsed attribute value.\n * @throws {TypeError} If the provided type is unknown.\n */\nexport function readAttributeValue(value: string, type: AttributeTypeConstant) {\n const readerType = parseAttributeTypeConstant(type);\n if (!readerType) throw new TypeError(`[radiant-element] Unknown type \"${type}\"`);\n return readers[readerType](value);\n}\n\nexport type ReadAttributeValueReturnType = ReturnType<typeof readAttributeValue>;\n\n/**\n * Writes the attribute value based on the provided type.\n *\n * @param value - The value to be written.\n * @param type - The type of the attribute.\n * @returns The written attribute value.\n * @throws {TypeError} If the provided type is unknown.\n */\nexport function writeAttributeValue(value: unknown, type: AttributeTypeConstant) {\n const writerType = parseAttributeTypeConstant(type);\n if (!writerType) throw new TypeError(`[radiant-element] Unknown type \"${type}\"`);\n return (writers[writerType] || writers.default)(value);\n}\n\nexport type WriteAttributeValueReturnType = ReturnType<typeof writeAttributeValue>;\n\n/*\n * Type guard functions for each type in AttributeTypeConstant\n */\nfunction isBoolean(value: unknown): value is boolean {\n return typeof value === 'boolean';\n}\n\nfunction isNumber(value: unknown): value is number {\n return typeof value === 'number';\n}\n\nfunction isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n\nfunction isArray(value: unknown): value is Array<unknown> {\n return Array.isArray(value);\n}\n\nfunction isObject(value: unknown): value is object {\n return typeof value === 'object' && !Array.isArray(value) && value !== null;\n}\n\n/*\n * Check function to ensure defaultValue matches the type\n */\nexport function isValueOfType(type: AttributeTypeConstant, defaultValue: unknown): boolean {\n switch (type) {\n case Boolean:\n return isBoolean(defaultValue);\n case Number:\n return isNumber(defaultValue);\n case String:\n return isString(defaultValue);\n case Array:\n return isArray(defaultValue);\n case Object:\n return isObject(defaultValue);\n default:\n return false;\n }\n}\n",
6
6
  "import type { Context, ContextCallback, ContextType, UnknownContext } from './types';\n\n/**\n * List of events which can be emitted by a context provider or requester.\n */\nexport enum ContextEventsTypes {\n SUBSCRIPTION_REQUEST = 'context--subscription-request',\n CONTEXT_REQUEST = 'context-request',\n ON_MOUNT = 'context--on-mount',\n}\n\n/**\n * An event fired by a context requester to signal it desires a named context.\n *\n * A provider should inspect the `context` property of the event to determine if it has a value that can\n * satisfy the request, calling the `callback` with the requested value if so.\n *\n * If the requested context event contains a truthy `subscribe` value, then a provider can call the callback\n * multiple times if the value is changed, if this is the case the provider should pass an `unsubscribe`\n * function to the callback which requesters can invoke to indicate they no longer wish to receive these updates.\n */\nexport class ContextRequestEvent<T extends UnknownContext> extends Event {\n public constructor(\n public readonly context: T,\n public readonly callback: ContextCallback<ContextType<T>>,\n public readonly subscribe?: boolean,\n ) {\n super(ContextEventsTypes.CONTEXT_REQUEST, { bubbles: true, composed: true });\n }\n}\n\n/**\n * A type which represents a subscription to a context value.\n */\nexport type ContextSubscription<T extends UnknownContext> = {\n select?: (context: ContextType<T>) => unknown;\n callback: (value: unknown) => void;\n};\n\n/**\n * An event fired by a context provider to signal that a context value has been mounted and is available for consumption.\n */\nexport class ContextOnMountEvent extends CustomEvent<{ context: UnknownContext }> {\n public constructor(context: UnknownContext) {\n super(ContextEventsTypes.ON_MOUNT, {\n detail: { context },\n bubbles: true,\n composed: true,\n });\n }\n}\n\n/**\n * An event fired by a context requester to signal it desires a named context.\n *\n * A provider should inspect the `context` property of the event to determine if it has a value that can\n * satisfy the request, calling the `callback` with the requested value if so.\n *\n * If the requested context event contains a truthy `subscribe` value, then a provider can call the callback\n * multiple times if the value is changed, if this is the case the provider should pass an `unsubscribe`\n * function to the callback which requesters can invoke to indicate they no longer wish to receive these updates.\n *\n * It accepts a `selector` property which can be used to request a specific property of the context value.\n */\nexport class ContextSubscriptionRequestEvent<T extends UnknownContext> extends Event {\n public constructor(\n public readonly context: T,\n public readonly callback: (value: ContextType<T> | { [K in keyof ContextType<T>]: ContextType<T>[K] }) => void,\n public readonly select?: (context: ContextType<T>) => unknown,\n public readonly subscribe?: boolean,\n ) {\n super(ContextEventsTypes.SUBSCRIPTION_REQUEST, {\n bubbles: true,\n composed: true,\n });\n }\n}\n\ndeclare global {\n interface HTMLElementEventMap {\n /**\n * A 'context-request-subscription' event can be emitted by any element which desires\n * a context value to be injected by an external provider.\n */\n [ContextEventsTypes.SUBSCRIPTION_REQUEST]: ContextSubscriptionRequestEvent<UnknownContext>;\n /**\n * A context-request-provider event can be emitted by a context requester to signal\n * that it desires a context value to be provided by a context provider.\n */\n [ContextEventsTypes.CONTEXT_REQUEST]: ContextRequestEvent<Context<unknown, unknown>>;\n /**\n * A 'context-mount' event can be emitted by a context provider to signal\n * that a context value has been mounted and is available for consumption.\n */\n [ContextEventsTypes.ON_MOUNT]: ContextOnMountEvent;\n }\n}\n",
7
- "import type { RadiantElement } from '@/core/radiant-element';\nimport { type AttributeTypeConstant, readAttributeValue } from '@/utils/attribute-utils';\nimport {\n ContextEventsTypes,\n ContextOnMountEvent,\n type ContextRequestEvent,\n type ContextSubscription,\n type ContextSubscriptionRequestEvent,\n} from './events';\nimport type { Context, ContextType, UnknownContext } from './types';\n\ntype ContextProviderOptions<T extends UnknownContext> = {\n context: UnknownContext;\n initialValue?: T['__context__'];\n hydrate?: AttributeTypeConstant;\n};\n\nexport const HYDRATE_ATTRIBUTE = 'hydrate-context';\n\n/**\n * Represents a context provider that allows setting and getting the context,\n * as well as subscribing to context updates.\n *\n * @template T - The type of the context.\n */\nexport interface IContextProvider<T extends Context<unknown, unknown>> {\n /**\n * Sets the context with the provided update and invokes the optional callback function.\n *\n * @param update - The partial update to be applied to the context.\n * @param callback - An optional callback function that receives the updated context.\n */\n setContext: (update: Partial<ContextType<T>>, callback?: (context: ContextType<T>) => void) => void;\n\n /**\n * Gets the current context.\n *\n * @returns The current context.\n */\n getContext: () => ContextType<T>;\n\n /**\n * Subscribes to context updates.\n *\n * @param subscription - The subscription object that defines the callback function to be invoked on context updates.\n */\n subscribe: (subscription: ContextSubscription<T>) => void;\n}\n\n/**\n * It creates a context provider that allows setting and getting the context,\n * It will also be in charge of notifying the subscribers when the context changes.\n *\n * @template T - The type of the context.\n * @implements IContextProvider\n *\n * @example\n * ```ts\n * export class MyElement extends RadiantElement {\n * provider = new ContextProvider<typeof myContext>(this, {\n * context: myContext,\n * initialValue: {\n * value: 'Hello World',\n * },\n * });\n * ```\n */\nexport class ContextProvider<T extends Context<unknown, unknown>> implements IContextProvider<T> {\n private host: RadiantElement;\n private context: UnknownContext;\n private value: ContextType<T> | undefined;\n subscriptions: ContextSubscription<T>[] = [];\n\n /**\n * Creates a new instance of the ContextProvider.\n *\n * @param host - The host element that will contain the context provider.\n * @param options - The options to configure the context provider.\n */\n constructor(host: RadiantElement, options: ContextProviderOptions<T>) {\n this.host = host;\n this.context = options.context;\n let contextValue: T['__context__'] | undefined = options.initialValue;\n\n if (options.hydrate) {\n const hydrationValue = this.host.getAttribute(HYDRATE_ATTRIBUTE);\n\n if (hydrationValue) {\n const parsedHydrationValue = readAttributeValue(hydrationValue, options.hydrate) as ContextType<T>;\n this.host.removeAttribute(HYDRATE_ATTRIBUTE);\n\n if (\n options.hydrate === Object &&\n this.isObject(parsedHydrationValue) &&\n (this.isObject(contextValue) || typeof contextValue === 'undefined')\n ) {\n contextValue = {\n ...(contextValue ?? {}),\n ...parsedHydrationValue,\n };\n } else {\n contextValue = parsedHydrationValue;\n }\n }\n }\n\n this.value = contextValue as ContextType<T>;\n\n this.registerEvents();\n this.host.dispatchEvent(new ContextOnMountEvent(this.context));\n }\n\n setContext = (update: Partial<ContextType<T>>, callback?: (context: ContextType<T>) => void) => {\n if (typeof this.value === 'object') {\n const oldContext = { ...this.value };\n this.value = { ...this.value, ...update };\n if (callback) callback(this.value);\n this.notifySubscribers(this.value, oldContext);\n }\n };\n\n getContext = () => {\n return this.value as ContextType<T>;\n };\n\n subscribe = ({ select, callback }: ContextSubscription<T>) => {\n this.subscriptions.push({ select, callback });\n };\n\n private isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && !Array.isArray(value) && value !== null;\n }\n\n private notifySubscribers = (newContext: ContextType<T>, prevContext: ContextType<T>) => {\n for (const sub of this.subscriptions) {\n if (!sub.select) return this.sendSubscriptionUpdate(sub, newContext);\n const newSelected = sub.select(newContext);\n const prevSelected = sub.select(prevContext);\n if (newSelected !== prevSelected) {\n this.sendSubscriptionUpdate(sub, newContext);\n }\n }\n };\n\n private sendSubscriptionUpdate = ({ select, callback }: ContextSubscription<T>, context: ContextType<T>) => {\n if (!select) callback(context);\n else callback(select(context));\n };\n\n private handleSubscriptionRequest = ({\n select,\n callback,\n subscribe,\n }: {\n select?: ContextSubscription<T>['select'];\n callback: ContextSubscription<T>['callback'];\n subscribe?: boolean;\n }) => {\n if (subscribe) this.subscribe({ select, callback });\n\n if (!this.value) return;\n\n if (select) {\n callback(select(this.value));\n } else {\n callback(this.value as ContextType<T>);\n }\n };\n\n private onSubscriptionRequest = (event: ContextSubscriptionRequestEvent<UnknownContext>) => {\n const { context, callback, subscribe, select, target } = event;\n if (context !== this.context) return;\n\n event.stopPropagation();\n\n (target as HTMLElement).dispatchEvent(new ContextOnMountEvent(this.context));\n\n this.handleSubscriptionRequest({ select, callback, subscribe });\n };\n\n private onContextRequest = (event: ContextRequestEvent<UnknownContext>) => {\n const { context, callback } = event;\n if (context !== this.context) return;\n event.stopPropagation();\n callback(this);\n };\n\n private registerEvents = () => {\n this.host.addEventListener(ContextEventsTypes.SUBSCRIPTION_REQUEST, this.onSubscriptionRequest);\n this.host.addEventListener(ContextEventsTypes.CONTEXT_REQUEST, this.onContextRequest);\n };\n}\n"
7
+ "import type { RadiantElement } from '@/core/radiant-element';\nimport { type AttributeTypeConstant, readAttributeValue } from '@/utils/attribute-utils';\nimport { query } from '..';\nimport {\n ContextEventsTypes,\n ContextOnMountEvent,\n type ContextRequestEvent,\n type ContextSubscription,\n type ContextSubscriptionRequestEvent,\n} from './events';\nimport type { Context, ContextType, UnknownContext } from './types';\n\ntype ContextProviderOptions<T extends UnknownContext> = {\n context: UnknownContext;\n initialValue?: T['__context__'];\n hydrate?: AttributeTypeConstant;\n};\n\n/**\n * Represents a context provider that allows setting and getting the context,\n * as well as subscribing to context updates.\n *\n * @template T - The type of the context.\n */\nexport interface IContextProvider<T extends Context<unknown, unknown>> {\n /**\n * Sets the context with the provided update and invokes the optional callback function.\n *\n * @param update - The partial update to be applied to the context.\n * @param callback - An optional callback function that receives the updated context.\n */\n setContext: (update: Partial<ContextType<T>>, callback?: (context: ContextType<T>) => void) => void;\n\n /**\n * Gets the current context.\n *\n * @returns The current context.\n */\n getContext: () => ContextType<T>;\n\n /**\n * Subscribes to context updates.\n *\n * @param subscription - The subscription object that defines the callback function to be invoked on context updates.\n */\n subscribe: (subscription: ContextSubscription<T>) => void;\n}\n\n/**\n * It creates a context provider that allows setting and getting the context,\n * It will also be in charge of notifying the subscribers when the context changes.\n *\n * @template T - The type of the context.\n * @implements IContextProvider\n *\n * @example\n * ```ts\n * export class MyElement extends RadiantElement {\n * provider = new ContextProvider<typeof myContext>(this, {\n * context: myContext,\n * initialValue: {\n * value: 'Hello World',\n * },\n * });\n * ```\n */\nexport class ContextProvider<T extends Context<unknown, unknown>> implements IContextProvider<T> {\n private host: RadiantElement;\n private context: UnknownContext;\n private value: ContextType<T> | undefined;\n\n subscriptions: ContextSubscription<T>[] = [];\n\n /**\n * Creates a new instance of the ContextProvider.\n *\n * @param host - The host element that will contain the context provider.\n * @param options - The options to configure the context provider.\n */\n constructor(host: RadiantElement, options: ContextProviderOptions<T>) {\n this.host = host;\n this.context = options.context;\n let contextValue: T['__context__'] | undefined = options.initialValue;\n\n if (options.hydrate) {\n const hydrationScriptElement = this.host.querySelector('script[data-hydration]');\n if (hydrationScriptElement?.textContent) {\n const hydrationValue = hydrationScriptElement.textContent;\n const parsedHydrationValue = readAttributeValue(hydrationValue, options.hydrate) as ContextType<T>;\n\n if (\n options.hydrate === Object &&\n this.isObject(parsedHydrationValue) &&\n (this.isObject(contextValue) || typeof contextValue === 'undefined')\n ) {\n contextValue = {\n ...(contextValue ?? {}),\n ...parsedHydrationValue,\n };\n } else {\n contextValue = parsedHydrationValue;\n }\n }\n }\n\n this.value = contextValue as ContextType<T>;\n\n this.registerEvents();\n this.host.dispatchEvent(new ContextOnMountEvent(this.context));\n }\n\n setContext = (update: Partial<ContextType<T>>, callback?: (context: ContextType<T>) => void) => {\n if (typeof this.value === 'object') {\n const oldContext = { ...this.value };\n this.value = { ...this.value, ...update };\n if (callback) callback(this.value);\n this.notifySubscribers(this.value, oldContext);\n }\n };\n\n getContext = () => {\n return this.value as ContextType<T>;\n };\n\n subscribe = ({ select, callback }: ContextSubscription<T>) => {\n this.subscriptions.push({ select, callback });\n };\n\n private isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && !Array.isArray(value) && value !== null;\n }\n\n private notifySubscribers = (newContext: ContextType<T>, prevContext: ContextType<T>) => {\n for (const sub of this.subscriptions) {\n if (!sub.select) return this.sendSubscriptionUpdate(sub, newContext);\n const newSelected = sub.select(newContext);\n const prevSelected = sub.select(prevContext);\n if (newSelected !== prevSelected) {\n this.sendSubscriptionUpdate(sub, newContext);\n }\n }\n };\n\n private sendSubscriptionUpdate = ({ select, callback }: ContextSubscription<T>, context: ContextType<T>) => {\n if (!select) callback(context);\n else callback(select(context));\n };\n\n private handleSubscriptionRequest = ({\n select,\n callback,\n subscribe,\n }: {\n select?: ContextSubscription<T>['select'];\n callback: ContextSubscription<T>['callback'];\n subscribe?: boolean;\n }) => {\n if (subscribe) this.subscribe({ select, callback });\n\n if (!this.value) return;\n\n if (select) {\n callback(select(this.value));\n } else {\n callback(this.value as ContextType<T>);\n }\n };\n\n private onSubscriptionRequest = (event: ContextSubscriptionRequestEvent<UnknownContext>) => {\n const { context, callback, subscribe, select, target } = event;\n if (context !== this.context) return;\n\n event.stopPropagation();\n\n (target as HTMLElement).dispatchEvent(new ContextOnMountEvent(this.context));\n\n this.handleSubscriptionRequest({ select, callback, subscribe });\n };\n\n private onContextRequest = (event: ContextRequestEvent<UnknownContext>) => {\n const { context, callback } = event;\n if (context !== this.context) return;\n event.stopPropagation();\n callback(this);\n };\n\n private registerEvents = () => {\n this.host.addEventListener(ContextEventsTypes.SUBSCRIPTION_REQUEST, this.onSubscriptionRequest);\n this.host.addEventListener(ContextEventsTypes.CONTEXT_REQUEST, this.onContextRequest);\n };\n}\n"
8
8
  ],
9
- "mappings": "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",
10
- "debugId": "92838E4143DC2D6464756E2164756E21",
9
+ "mappings": "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",
10
+ "debugId": "19BF7CBFBD9F2B6364756E2164756E21",
11
11
  "names": []
12
12
  }
@@ -175,8 +175,6 @@ class ContextSubscriptionRequestEvent extends Event {
175
175
  }
176
176
 
177
177
  // src/context/context-provider.ts
178
- var HYDRATE_ATTRIBUTE = "hydrate-context";
179
-
180
178
  class ContextProvider {
181
179
  host;
182
180
  context;
@@ -187,10 +185,10 @@ class ContextProvider {
187
185
  this.context = options.context;
188
186
  let contextValue = options.initialValue;
189
187
  if (options.hydrate) {
190
- const hydrationValue = this.host.getAttribute(HYDRATE_ATTRIBUTE);
191
- if (hydrationValue) {
188
+ const hydrationScriptElement = this.host.querySelector("script[data-hydration]");
189
+ if (hydrationScriptElement?.textContent) {
190
+ const hydrationValue = hydrationScriptElement.textContent;
192
191
  const parsedHydrationValue = readAttributeValue(hydrationValue, options.hydrate);
193
- this.host.removeAttribute(HYDRATE_ATTRIBUTE);
194
192
  if (options.hydrate === Object && this.isObject(parsedHydrationValue) && (this.isObject(contextValue) || typeof contextValue === "undefined")) {
195
193
  contextValue = {
196
194
  ...contextValue ?? {},
@@ -291,4 +289,4 @@ export {
291
289
  provideContext
292
290
  };
293
291
 
294
- //# debugId=F925B58B3C7D0C0864756E2164756E21
292
+ //# debugId=BE8FEAD4164CEEEB64756E2164756E21
@@ -4,10 +4,10 @@
4
4
  "sourcesContent": [
5
5
  "export type AttributeTypeConstant = typeof Array | typeof Boolean | typeof Number | typeof Object | typeof String;\n\nexport type AttributeTypeDefault = Array<unknown> | boolean | number | Record<string, unknown> | string;\n\n/**\n * Parses the given attribute type constant and returns its corresponding string representation.\n *\n * @param constant - The attribute type constant to parse.\n * @returns The string representation of the attribute type constant.\n */\nexport function parseAttributeTypeConstant(constant?: AttributeTypeConstant) {\n switch (constant) {\n case Array:\n return 'array';\n case Boolean:\n return 'boolean';\n case Number:\n return 'number';\n case Object:\n return 'object';\n case String:\n return 'string';\n }\n}\n\n/**\n * Parses the attribute type default value and returns its type as a string.\n *\n * @param defaultValue - The default value of the attribute type.\n * @returns The type of the default value as a string.\n */\nexport function parseAttributeTypeDefault(defaultValue?: AttributeTypeDefault) {\n switch (typeof defaultValue) {\n case 'boolean':\n return 'boolean';\n case 'number':\n return 'number';\n case 'string':\n return 'string';\n }\n\n if (Array.isArray(defaultValue)) return 'array';\n if (Object.prototype.toString.call(defaultValue) === '[object Object]') return 'object';\n}\n\n/**\n * Returns the default value for a given attribute type.\n *\n * @param type - The attribute type constant.\n * @returns The default value for the specified attribute type.\n */\nexport function defaultValueForType(type: AttributeTypeConstant): unknown {\n switch (type) {\n case Number:\n return 0;\n case String:\n return '';\n case Boolean:\n return false;\n default:\n return null;\n }\n}\n\ntype Reader = (value: string) => number | string | boolean | object | unknown[];\n\n/**\n * Utility function to parse a JSON string safely\n */\nfunction parseJSON<T>(value: string): T {\n try {\n return JSON.parse(value);\n } catch (error) {\n throw new TypeError('Invalid JSON string');\n }\n}\n\n/**\n * Object that maps attribute types to reader functions.\n * @type {Object.<string, Reader>}\n */\nconst readers: { [type: string]: Reader } = {\n array(value: string): unknown[] {\n const array = parseJSON<unknown[]>(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`Expected an array but got a value of type \"${typeof array}\"`);\n }\n return array;\n },\n\n boolean(value: string): boolean {\n return !(value === '0' || String(value).toLowerCase() === 'false');\n },\n\n number(value: string): number {\n const number = Number(value.replace(/_/g, ''));\n return number;\n },\n\n object(value: string): object {\n const object = JSON.parse(value);\n if (object === null || typeof object !== 'object' || Array.isArray(object)) {\n throw new TypeError(\n `expected value of type \"object\" but instead got value \"${value}\" of type \"${parseAttributeTypeDefault(\n object,\n )}\"`,\n );\n }\n return object;\n },\n\n string(value: string): string {\n return value;\n },\n};\n\ntype Writer = (value: unknown) => string;\n\n/**\n * Object that maps attribute types to writer functions.\n * @type {Object.<string, Writer>}\n */\nconst writers: { [type: string]: Writer } = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\n\nfunction writeJSON(value: unknown) {\n return JSON.stringify(value);\n}\n\nfunction writeString(value: unknown) {\n return `${value}`;\n}\n\n/**\n * Reads the attribute value based on the provided type.\n * @param value - The attribute value to be read.\n * @param type - The type of the attribute.\n * @returns The parsed attribute value.\n * @throws {TypeError} If the provided type is unknown.\n */\nexport function readAttributeValue(value: string, type: AttributeTypeConstant) {\n const readerType = parseAttributeTypeConstant(type);\n if (!readerType) throw new TypeError(`[radiant-element] Unknown type \"${type}\"`);\n return readers[readerType](value);\n}\n\nexport type ReadAttributeValueReturnType = ReturnType<typeof readAttributeValue>;\n\n/**\n * Writes the attribute value based on the provided type.\n *\n * @param value - The value to be written.\n * @param type - The type of the attribute.\n * @returns The written attribute value.\n * @throws {TypeError} If the provided type is unknown.\n */\nexport function writeAttributeValue(value: unknown, type: AttributeTypeConstant) {\n const writerType = parseAttributeTypeConstant(type);\n if (!writerType) throw new TypeError(`[radiant-element] Unknown type \"${type}\"`);\n return (writers[writerType] || writers.default)(value);\n}\n\nexport type WriteAttributeValueReturnType = ReturnType<typeof writeAttributeValue>;\n\n/*\n * Type guard functions for each type in AttributeTypeConstant\n */\nfunction isBoolean(value: unknown): value is boolean {\n return typeof value === 'boolean';\n}\n\nfunction isNumber(value: unknown): value is number {\n return typeof value === 'number';\n}\n\nfunction isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n\nfunction isArray(value: unknown): value is Array<unknown> {\n return Array.isArray(value);\n}\n\nfunction isObject(value: unknown): value is object {\n return typeof value === 'object' && !Array.isArray(value) && value !== null;\n}\n\n/*\n * Check function to ensure defaultValue matches the type\n */\nexport function isValueOfType(type: AttributeTypeConstant, defaultValue: unknown): boolean {\n switch (type) {\n case Boolean:\n return isBoolean(defaultValue);\n case Number:\n return isNumber(defaultValue);\n case String:\n return isString(defaultValue);\n case Array:\n return isArray(defaultValue);\n case Object:\n return isObject(defaultValue);\n default:\n return false;\n }\n}\n",
6
6
  "import type { Context, ContextCallback, ContextType, UnknownContext } from './types';\n\n/**\n * List of events which can be emitted by a context provider or requester.\n */\nexport enum ContextEventsTypes {\n SUBSCRIPTION_REQUEST = 'context--subscription-request',\n CONTEXT_REQUEST = 'context-request',\n ON_MOUNT = 'context--on-mount',\n}\n\n/**\n * An event fired by a context requester to signal it desires a named context.\n *\n * A provider should inspect the `context` property of the event to determine if it has a value that can\n * satisfy the request, calling the `callback` with the requested value if so.\n *\n * If the requested context event contains a truthy `subscribe` value, then a provider can call the callback\n * multiple times if the value is changed, if this is the case the provider should pass an `unsubscribe`\n * function to the callback which requesters can invoke to indicate they no longer wish to receive these updates.\n */\nexport class ContextRequestEvent<T extends UnknownContext> extends Event {\n public constructor(\n public readonly context: T,\n public readonly callback: ContextCallback<ContextType<T>>,\n public readonly subscribe?: boolean,\n ) {\n super(ContextEventsTypes.CONTEXT_REQUEST, { bubbles: true, composed: true });\n }\n}\n\n/**\n * A type which represents a subscription to a context value.\n */\nexport type ContextSubscription<T extends UnknownContext> = {\n select?: (context: ContextType<T>) => unknown;\n callback: (value: unknown) => void;\n};\n\n/**\n * An event fired by a context provider to signal that a context value has been mounted and is available for consumption.\n */\nexport class ContextOnMountEvent extends CustomEvent<{ context: UnknownContext }> {\n public constructor(context: UnknownContext) {\n super(ContextEventsTypes.ON_MOUNT, {\n detail: { context },\n bubbles: true,\n composed: true,\n });\n }\n}\n\n/**\n * An event fired by a context requester to signal it desires a named context.\n *\n * A provider should inspect the `context` property of the event to determine if it has a value that can\n * satisfy the request, calling the `callback` with the requested value if so.\n *\n * If the requested context event contains a truthy `subscribe` value, then a provider can call the callback\n * multiple times if the value is changed, if this is the case the provider should pass an `unsubscribe`\n * function to the callback which requesters can invoke to indicate they no longer wish to receive these updates.\n *\n * It accepts a `selector` property which can be used to request a specific property of the context value.\n */\nexport class ContextSubscriptionRequestEvent<T extends UnknownContext> extends Event {\n public constructor(\n public readonly context: T,\n public readonly callback: (value: ContextType<T> | { [K in keyof ContextType<T>]: ContextType<T>[K] }) => void,\n public readonly select?: (context: ContextType<T>) => unknown,\n public readonly subscribe?: boolean,\n ) {\n super(ContextEventsTypes.SUBSCRIPTION_REQUEST, {\n bubbles: true,\n composed: true,\n });\n }\n}\n\ndeclare global {\n interface HTMLElementEventMap {\n /**\n * A 'context-request-subscription' event can be emitted by any element which desires\n * a context value to be injected by an external provider.\n */\n [ContextEventsTypes.SUBSCRIPTION_REQUEST]: ContextSubscriptionRequestEvent<UnknownContext>;\n /**\n * A context-request-provider event can be emitted by a context requester to signal\n * that it desires a context value to be provided by a context provider.\n */\n [ContextEventsTypes.CONTEXT_REQUEST]: ContextRequestEvent<Context<unknown, unknown>>;\n /**\n * A 'context-mount' event can be emitted by a context provider to signal\n * that a context value has been mounted and is available for consumption.\n */\n [ContextEventsTypes.ON_MOUNT]: ContextOnMountEvent;\n }\n}\n",
7
- "import type { RadiantElement } from '@/core/radiant-element';\nimport { type AttributeTypeConstant, readAttributeValue } from '@/utils/attribute-utils';\nimport {\n ContextEventsTypes,\n ContextOnMountEvent,\n type ContextRequestEvent,\n type ContextSubscription,\n type ContextSubscriptionRequestEvent,\n} from './events';\nimport type { Context, ContextType, UnknownContext } from './types';\n\ntype ContextProviderOptions<T extends UnknownContext> = {\n context: UnknownContext;\n initialValue?: T['__context__'];\n hydrate?: AttributeTypeConstant;\n};\n\nexport const HYDRATE_ATTRIBUTE = 'hydrate-context';\n\n/**\n * Represents a context provider that allows setting and getting the context,\n * as well as subscribing to context updates.\n *\n * @template T - The type of the context.\n */\nexport interface IContextProvider<T extends Context<unknown, unknown>> {\n /**\n * Sets the context with the provided update and invokes the optional callback function.\n *\n * @param update - The partial update to be applied to the context.\n * @param callback - An optional callback function that receives the updated context.\n */\n setContext: (update: Partial<ContextType<T>>, callback?: (context: ContextType<T>) => void) => void;\n\n /**\n * Gets the current context.\n *\n * @returns The current context.\n */\n getContext: () => ContextType<T>;\n\n /**\n * Subscribes to context updates.\n *\n * @param subscription - The subscription object that defines the callback function to be invoked on context updates.\n */\n subscribe: (subscription: ContextSubscription<T>) => void;\n}\n\n/**\n * It creates a context provider that allows setting and getting the context,\n * It will also be in charge of notifying the subscribers when the context changes.\n *\n * @template T - The type of the context.\n * @implements IContextProvider\n *\n * @example\n * ```ts\n * export class MyElement extends RadiantElement {\n * provider = new ContextProvider<typeof myContext>(this, {\n * context: myContext,\n * initialValue: {\n * value: 'Hello World',\n * },\n * });\n * ```\n */\nexport class ContextProvider<T extends Context<unknown, unknown>> implements IContextProvider<T> {\n private host: RadiantElement;\n private context: UnknownContext;\n private value: ContextType<T> | undefined;\n subscriptions: ContextSubscription<T>[] = [];\n\n /**\n * Creates a new instance of the ContextProvider.\n *\n * @param host - The host element that will contain the context provider.\n * @param options - The options to configure the context provider.\n */\n constructor(host: RadiantElement, options: ContextProviderOptions<T>) {\n this.host = host;\n this.context = options.context;\n let contextValue: T['__context__'] | undefined = options.initialValue;\n\n if (options.hydrate) {\n const hydrationValue = this.host.getAttribute(HYDRATE_ATTRIBUTE);\n\n if (hydrationValue) {\n const parsedHydrationValue = readAttributeValue(hydrationValue, options.hydrate) as ContextType<T>;\n this.host.removeAttribute(HYDRATE_ATTRIBUTE);\n\n if (\n options.hydrate === Object &&\n this.isObject(parsedHydrationValue) &&\n (this.isObject(contextValue) || typeof contextValue === 'undefined')\n ) {\n contextValue = {\n ...(contextValue ?? {}),\n ...parsedHydrationValue,\n };\n } else {\n contextValue = parsedHydrationValue;\n }\n }\n }\n\n this.value = contextValue as ContextType<T>;\n\n this.registerEvents();\n this.host.dispatchEvent(new ContextOnMountEvent(this.context));\n }\n\n setContext = (update: Partial<ContextType<T>>, callback?: (context: ContextType<T>) => void) => {\n if (typeof this.value === 'object') {\n const oldContext = { ...this.value };\n this.value = { ...this.value, ...update };\n if (callback) callback(this.value);\n this.notifySubscribers(this.value, oldContext);\n }\n };\n\n getContext = () => {\n return this.value as ContextType<T>;\n };\n\n subscribe = ({ select, callback }: ContextSubscription<T>) => {\n this.subscriptions.push({ select, callback });\n };\n\n private isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && !Array.isArray(value) && value !== null;\n }\n\n private notifySubscribers = (newContext: ContextType<T>, prevContext: ContextType<T>) => {\n for (const sub of this.subscriptions) {\n if (!sub.select) return this.sendSubscriptionUpdate(sub, newContext);\n const newSelected = sub.select(newContext);\n const prevSelected = sub.select(prevContext);\n if (newSelected !== prevSelected) {\n this.sendSubscriptionUpdate(sub, newContext);\n }\n }\n };\n\n private sendSubscriptionUpdate = ({ select, callback }: ContextSubscription<T>, context: ContextType<T>) => {\n if (!select) callback(context);\n else callback(select(context));\n };\n\n private handleSubscriptionRequest = ({\n select,\n callback,\n subscribe,\n }: {\n select?: ContextSubscription<T>['select'];\n callback: ContextSubscription<T>['callback'];\n subscribe?: boolean;\n }) => {\n if (subscribe) this.subscribe({ select, callback });\n\n if (!this.value) return;\n\n if (select) {\n callback(select(this.value));\n } else {\n callback(this.value as ContextType<T>);\n }\n };\n\n private onSubscriptionRequest = (event: ContextSubscriptionRequestEvent<UnknownContext>) => {\n const { context, callback, subscribe, select, target } = event;\n if (context !== this.context) return;\n\n event.stopPropagation();\n\n (target as HTMLElement).dispatchEvent(new ContextOnMountEvent(this.context));\n\n this.handleSubscriptionRequest({ select, callback, subscribe });\n };\n\n private onContextRequest = (event: ContextRequestEvent<UnknownContext>) => {\n const { context, callback } = event;\n if (context !== this.context) return;\n event.stopPropagation();\n callback(this);\n };\n\n private registerEvents = () => {\n this.host.addEventListener(ContextEventsTypes.SUBSCRIPTION_REQUEST, this.onSubscriptionRequest);\n this.host.addEventListener(ContextEventsTypes.CONTEXT_REQUEST, this.onContextRequest);\n };\n}\n",
7
+ "import type { RadiantElement } from '@/core/radiant-element';\nimport { type AttributeTypeConstant, readAttributeValue } from '@/utils/attribute-utils';\nimport { query } from '..';\nimport {\n ContextEventsTypes,\n ContextOnMountEvent,\n type ContextRequestEvent,\n type ContextSubscription,\n type ContextSubscriptionRequestEvent,\n} from './events';\nimport type { Context, ContextType, UnknownContext } from './types';\n\ntype ContextProviderOptions<T extends UnknownContext> = {\n context: UnknownContext;\n initialValue?: T['__context__'];\n hydrate?: AttributeTypeConstant;\n};\n\n/**\n * Represents a context provider that allows setting and getting the context,\n * as well as subscribing to context updates.\n *\n * @template T - The type of the context.\n */\nexport interface IContextProvider<T extends Context<unknown, unknown>> {\n /**\n * Sets the context with the provided update and invokes the optional callback function.\n *\n * @param update - The partial update to be applied to the context.\n * @param callback - An optional callback function that receives the updated context.\n */\n setContext: (update: Partial<ContextType<T>>, callback?: (context: ContextType<T>) => void) => void;\n\n /**\n * Gets the current context.\n *\n * @returns The current context.\n */\n getContext: () => ContextType<T>;\n\n /**\n * Subscribes to context updates.\n *\n * @param subscription - The subscription object that defines the callback function to be invoked on context updates.\n */\n subscribe: (subscription: ContextSubscription<T>) => void;\n}\n\n/**\n * It creates a context provider that allows setting and getting the context,\n * It will also be in charge of notifying the subscribers when the context changes.\n *\n * @template T - The type of the context.\n * @implements IContextProvider\n *\n * @example\n * ```ts\n * export class MyElement extends RadiantElement {\n * provider = new ContextProvider<typeof myContext>(this, {\n * context: myContext,\n * initialValue: {\n * value: 'Hello World',\n * },\n * });\n * ```\n */\nexport class ContextProvider<T extends Context<unknown, unknown>> implements IContextProvider<T> {\n private host: RadiantElement;\n private context: UnknownContext;\n private value: ContextType<T> | undefined;\n\n subscriptions: ContextSubscription<T>[] = [];\n\n /**\n * Creates a new instance of the ContextProvider.\n *\n * @param host - The host element that will contain the context provider.\n * @param options - The options to configure the context provider.\n */\n constructor(host: RadiantElement, options: ContextProviderOptions<T>) {\n this.host = host;\n this.context = options.context;\n let contextValue: T['__context__'] | undefined = options.initialValue;\n\n if (options.hydrate) {\n const hydrationScriptElement = this.host.querySelector('script[data-hydration]');\n if (hydrationScriptElement?.textContent) {\n const hydrationValue = hydrationScriptElement.textContent;\n const parsedHydrationValue = readAttributeValue(hydrationValue, options.hydrate) as ContextType<T>;\n\n if (\n options.hydrate === Object &&\n this.isObject(parsedHydrationValue) &&\n (this.isObject(contextValue) || typeof contextValue === 'undefined')\n ) {\n contextValue = {\n ...(contextValue ?? {}),\n ...parsedHydrationValue,\n };\n } else {\n contextValue = parsedHydrationValue;\n }\n }\n }\n\n this.value = contextValue as ContextType<T>;\n\n this.registerEvents();\n this.host.dispatchEvent(new ContextOnMountEvent(this.context));\n }\n\n setContext = (update: Partial<ContextType<T>>, callback?: (context: ContextType<T>) => void) => {\n if (typeof this.value === 'object') {\n const oldContext = { ...this.value };\n this.value = { ...this.value, ...update };\n if (callback) callback(this.value);\n this.notifySubscribers(this.value, oldContext);\n }\n };\n\n getContext = () => {\n return this.value as ContextType<T>;\n };\n\n subscribe = ({ select, callback }: ContextSubscription<T>) => {\n this.subscriptions.push({ select, callback });\n };\n\n private isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && !Array.isArray(value) && value !== null;\n }\n\n private notifySubscribers = (newContext: ContextType<T>, prevContext: ContextType<T>) => {\n for (const sub of this.subscriptions) {\n if (!sub.select) return this.sendSubscriptionUpdate(sub, newContext);\n const newSelected = sub.select(newContext);\n const prevSelected = sub.select(prevContext);\n if (newSelected !== prevSelected) {\n this.sendSubscriptionUpdate(sub, newContext);\n }\n }\n };\n\n private sendSubscriptionUpdate = ({ select, callback }: ContextSubscription<T>, context: ContextType<T>) => {\n if (!select) callback(context);\n else callback(select(context));\n };\n\n private handleSubscriptionRequest = ({\n select,\n callback,\n subscribe,\n }: {\n select?: ContextSubscription<T>['select'];\n callback: ContextSubscription<T>['callback'];\n subscribe?: boolean;\n }) => {\n if (subscribe) this.subscribe({ select, callback });\n\n if (!this.value) return;\n\n if (select) {\n callback(select(this.value));\n } else {\n callback(this.value as ContextType<T>);\n }\n };\n\n private onSubscriptionRequest = (event: ContextSubscriptionRequestEvent<UnknownContext>) => {\n const { context, callback, subscribe, select, target } = event;\n if (context !== this.context) return;\n\n event.stopPropagation();\n\n (target as HTMLElement).dispatchEvent(new ContextOnMountEvent(this.context));\n\n this.handleSubscriptionRequest({ select, callback, subscribe });\n };\n\n private onContextRequest = (event: ContextRequestEvent<UnknownContext>) => {\n const { context, callback } = event;\n if (context !== this.context) return;\n event.stopPropagation();\n callback(this);\n };\n\n private registerEvents = () => {\n this.host.addEventListener(ContextEventsTypes.SUBSCRIPTION_REQUEST, this.onSubscriptionRequest);\n this.host.addEventListener(ContextEventsTypes.CONTEXT_REQUEST, this.onContextRequest);\n };\n}\n",
8
8
  "import { ContextProvider } from '@/context/context-provider';\nimport type { UnknownContext } from '@/context/types';\nimport type { RadiantElement } from '@/core/radiant-element';\nimport type { AttributeTypeConstant } from '@/utils/attribute-utils';\n\ntype CreateContextOptions<T extends UnknownContext> = {\n context: T;\n initialValue?: T['__context__'];\n hydrate?: AttributeTypeConstant;\n};\n\n/**\n * A decorator to provide a context to the target element.\n * @param contextToProvide\n * @returns\n */\nexport function provideContext<T extends UnknownContext>({ context, initialValue, hydrate }: CreateContextOptions<T>) {\n return (proto: RadiantElement, propertyKey: string) => {\n const originalConnectedCallback = proto.connectedCallback;\n\n proto.connectedCallback = function (this: RadiantElement) {\n originalConnectedCallback.call(this);\n (this as any)[propertyKey] = new ContextProvider<T>(this, { context, initialValue, hydrate });\n this.connectedContextCallback(context);\n };\n };\n}\n"
9
9
  ],
10
- "mappings": "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",
11
- "debugId": "F925B58B3C7D0C0864756E2164756E21",
10
+ "mappings": "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",
11
+ "debugId": "BE8FEAD4164CEEEB64756E2164756E21",
12
12
  "names": []
13
13
  }
@@ -178,8 +178,6 @@ class ContextSubscriptionRequestEvent extends Event {
178
178
  }
179
179
 
180
180
  // src/context/context-provider.ts
181
- var HYDRATE_ATTRIBUTE = "hydrate-context";
182
-
183
181
  class ContextProvider {
184
182
  host;
185
183
  context;
@@ -190,10 +188,10 @@ class ContextProvider {
190
188
  this.context = options.context;
191
189
  let contextValue = options.initialValue;
192
190
  if (options.hydrate) {
193
- const hydrationValue = this.host.getAttribute(HYDRATE_ATTRIBUTE);
194
- if (hydrationValue) {
191
+ const hydrationScriptElement = this.host.querySelector("script[data-hydration]");
192
+ if (hydrationScriptElement?.textContent) {
193
+ const hydrationValue = hydrationScriptElement.textContent;
195
194
  const parsedHydrationValue = readAttributeValue(hydrationValue, options.hydrate);
196
- this.host.removeAttribute(HYDRATE_ATTRIBUTE);
197
195
  if (options.hydrate === Object && this.isObject(parsedHydrationValue) && (this.isObject(contextValue) || typeof contextValue === "undefined")) {
198
196
  contextValue = {
199
197
  ...contextValue ?? {},
@@ -330,7 +328,6 @@ export {
330
328
  createContext,
331
329
  contextSelector,
332
330
  consumeContext,
333
- HYDRATE_ATTRIBUTE,
334
331
  ContextSubscriptionRequestEvent,
335
332
  ContextRequestEvent,
336
333
  ContextProvider,
@@ -338,4 +335,4 @@ export {
338
335
  ContextEventsTypes
339
336
  };
340
337
 
341
- //# debugId=D75F336EBA07D2EB64756E2164756E21
338
+ //# debugId=A716B50D997FCD8964756E2164756E21
@@ -5,12 +5,12 @@
5
5
  "export type AttributeTypeConstant = typeof Array | typeof Boolean | typeof Number | typeof Object | typeof String;\n\nexport type AttributeTypeDefault = Array<unknown> | boolean | number | Record<string, unknown> | string;\n\n/**\n * Parses the given attribute type constant and returns its corresponding string representation.\n *\n * @param constant - The attribute type constant to parse.\n * @returns The string representation of the attribute type constant.\n */\nexport function parseAttributeTypeConstant(constant?: AttributeTypeConstant) {\n switch (constant) {\n case Array:\n return 'array';\n case Boolean:\n return 'boolean';\n case Number:\n return 'number';\n case Object:\n return 'object';\n case String:\n return 'string';\n }\n}\n\n/**\n * Parses the attribute type default value and returns its type as a string.\n *\n * @param defaultValue - The default value of the attribute type.\n * @returns The type of the default value as a string.\n */\nexport function parseAttributeTypeDefault(defaultValue?: AttributeTypeDefault) {\n switch (typeof defaultValue) {\n case 'boolean':\n return 'boolean';\n case 'number':\n return 'number';\n case 'string':\n return 'string';\n }\n\n if (Array.isArray(defaultValue)) return 'array';\n if (Object.prototype.toString.call(defaultValue) === '[object Object]') return 'object';\n}\n\n/**\n * Returns the default value for a given attribute type.\n *\n * @param type - The attribute type constant.\n * @returns The default value for the specified attribute type.\n */\nexport function defaultValueForType(type: AttributeTypeConstant): unknown {\n switch (type) {\n case Number:\n return 0;\n case String:\n return '';\n case Boolean:\n return false;\n default:\n return null;\n }\n}\n\ntype Reader = (value: string) => number | string | boolean | object | unknown[];\n\n/**\n * Utility function to parse a JSON string safely\n */\nfunction parseJSON<T>(value: string): T {\n try {\n return JSON.parse(value);\n } catch (error) {\n throw new TypeError('Invalid JSON string');\n }\n}\n\n/**\n * Object that maps attribute types to reader functions.\n * @type {Object.<string, Reader>}\n */\nconst readers: { [type: string]: Reader } = {\n array(value: string): unknown[] {\n const array = parseJSON<unknown[]>(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`Expected an array but got a value of type \"${typeof array}\"`);\n }\n return array;\n },\n\n boolean(value: string): boolean {\n return !(value === '0' || String(value).toLowerCase() === 'false');\n },\n\n number(value: string): number {\n const number = Number(value.replace(/_/g, ''));\n return number;\n },\n\n object(value: string): object {\n const object = JSON.parse(value);\n if (object === null || typeof object !== 'object' || Array.isArray(object)) {\n throw new TypeError(\n `expected value of type \"object\" but instead got value \"${value}\" of type \"${parseAttributeTypeDefault(\n object,\n )}\"`,\n );\n }\n return object;\n },\n\n string(value: string): string {\n return value;\n },\n};\n\ntype Writer = (value: unknown) => string;\n\n/**\n * Object that maps attribute types to writer functions.\n * @type {Object.<string, Writer>}\n */\nconst writers: { [type: string]: Writer } = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\n\nfunction writeJSON(value: unknown) {\n return JSON.stringify(value);\n}\n\nfunction writeString(value: unknown) {\n return `${value}`;\n}\n\n/**\n * Reads the attribute value based on the provided type.\n * @param value - The attribute value to be read.\n * @param type - The type of the attribute.\n * @returns The parsed attribute value.\n * @throws {TypeError} If the provided type is unknown.\n */\nexport function readAttributeValue(value: string, type: AttributeTypeConstant) {\n const readerType = parseAttributeTypeConstant(type);\n if (!readerType) throw new TypeError(`[radiant-element] Unknown type \"${type}\"`);\n return readers[readerType](value);\n}\n\nexport type ReadAttributeValueReturnType = ReturnType<typeof readAttributeValue>;\n\n/**\n * Writes the attribute value based on the provided type.\n *\n * @param value - The value to be written.\n * @param type - The type of the attribute.\n * @returns The written attribute value.\n * @throws {TypeError} If the provided type is unknown.\n */\nexport function writeAttributeValue(value: unknown, type: AttributeTypeConstant) {\n const writerType = parseAttributeTypeConstant(type);\n if (!writerType) throw new TypeError(`[radiant-element] Unknown type \"${type}\"`);\n return (writers[writerType] || writers.default)(value);\n}\n\nexport type WriteAttributeValueReturnType = ReturnType<typeof writeAttributeValue>;\n\n/*\n * Type guard functions for each type in AttributeTypeConstant\n */\nfunction isBoolean(value: unknown): value is boolean {\n return typeof value === 'boolean';\n}\n\nfunction isNumber(value: unknown): value is number {\n return typeof value === 'number';\n}\n\nfunction isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n\nfunction isArray(value: unknown): value is Array<unknown> {\n return Array.isArray(value);\n}\n\nfunction isObject(value: unknown): value is object {\n return typeof value === 'object' && !Array.isArray(value) && value !== null;\n}\n\n/*\n * Check function to ensure defaultValue matches the type\n */\nexport function isValueOfType(type: AttributeTypeConstant, defaultValue: unknown): boolean {\n switch (type) {\n case Boolean:\n return isBoolean(defaultValue);\n case Number:\n return isNumber(defaultValue);\n case String:\n return isString(defaultValue);\n case Array:\n return isArray(defaultValue);\n case Object:\n return isObject(defaultValue);\n default:\n return false;\n }\n}\n",
6
6
  "import type { Context } from './types';\n\n/**\n * A function which creates a Context value object\n */\nexport const createContext = <ValueType>(key: unknown) => key as Context<typeof key, ValueType>;\n",
7
7
  "import type { Context, ContextCallback, ContextType, UnknownContext } from './types';\n\n/**\n * List of events which can be emitted by a context provider or requester.\n */\nexport enum ContextEventsTypes {\n SUBSCRIPTION_REQUEST = 'context--subscription-request',\n CONTEXT_REQUEST = 'context-request',\n ON_MOUNT = 'context--on-mount',\n}\n\n/**\n * An event fired by a context requester to signal it desires a named context.\n *\n * A provider should inspect the `context` property of the event to determine if it has a value that can\n * satisfy the request, calling the `callback` with the requested value if so.\n *\n * If the requested context event contains a truthy `subscribe` value, then a provider can call the callback\n * multiple times if the value is changed, if this is the case the provider should pass an `unsubscribe`\n * function to the callback which requesters can invoke to indicate they no longer wish to receive these updates.\n */\nexport class ContextRequestEvent<T extends UnknownContext> extends Event {\n public constructor(\n public readonly context: T,\n public readonly callback: ContextCallback<ContextType<T>>,\n public readonly subscribe?: boolean,\n ) {\n super(ContextEventsTypes.CONTEXT_REQUEST, { bubbles: true, composed: true });\n }\n}\n\n/**\n * A type which represents a subscription to a context value.\n */\nexport type ContextSubscription<T extends UnknownContext> = {\n select?: (context: ContextType<T>) => unknown;\n callback: (value: unknown) => void;\n};\n\n/**\n * An event fired by a context provider to signal that a context value has been mounted and is available for consumption.\n */\nexport class ContextOnMountEvent extends CustomEvent<{ context: UnknownContext }> {\n public constructor(context: UnknownContext) {\n super(ContextEventsTypes.ON_MOUNT, {\n detail: { context },\n bubbles: true,\n composed: true,\n });\n }\n}\n\n/**\n * An event fired by a context requester to signal it desires a named context.\n *\n * A provider should inspect the `context` property of the event to determine if it has a value that can\n * satisfy the request, calling the `callback` with the requested value if so.\n *\n * If the requested context event contains a truthy `subscribe` value, then a provider can call the callback\n * multiple times if the value is changed, if this is the case the provider should pass an `unsubscribe`\n * function to the callback which requesters can invoke to indicate they no longer wish to receive these updates.\n *\n * It accepts a `selector` property which can be used to request a specific property of the context value.\n */\nexport class ContextSubscriptionRequestEvent<T extends UnknownContext> extends Event {\n public constructor(\n public readonly context: T,\n public readonly callback: (value: ContextType<T> | { [K in keyof ContextType<T>]: ContextType<T>[K] }) => void,\n public readonly select?: (context: ContextType<T>) => unknown,\n public readonly subscribe?: boolean,\n ) {\n super(ContextEventsTypes.SUBSCRIPTION_REQUEST, {\n bubbles: true,\n composed: true,\n });\n }\n}\n\ndeclare global {\n interface HTMLElementEventMap {\n /**\n * A 'context-request-subscription' event can be emitted by any element which desires\n * a context value to be injected by an external provider.\n */\n [ContextEventsTypes.SUBSCRIPTION_REQUEST]: ContextSubscriptionRequestEvent<UnknownContext>;\n /**\n * A context-request-provider event can be emitted by a context requester to signal\n * that it desires a context value to be provided by a context provider.\n */\n [ContextEventsTypes.CONTEXT_REQUEST]: ContextRequestEvent<Context<unknown, unknown>>;\n /**\n * A 'context-mount' event can be emitted by a context provider to signal\n * that a context value has been mounted and is available for consumption.\n */\n [ContextEventsTypes.ON_MOUNT]: ContextOnMountEvent;\n }\n}\n",
8
- "import type { RadiantElement } from '@/core/radiant-element';\nimport { type AttributeTypeConstant, readAttributeValue } from '@/utils/attribute-utils';\nimport {\n ContextEventsTypes,\n ContextOnMountEvent,\n type ContextRequestEvent,\n type ContextSubscription,\n type ContextSubscriptionRequestEvent,\n} from './events';\nimport type { Context, ContextType, UnknownContext } from './types';\n\ntype ContextProviderOptions<T extends UnknownContext> = {\n context: UnknownContext;\n initialValue?: T['__context__'];\n hydrate?: AttributeTypeConstant;\n};\n\nexport const HYDRATE_ATTRIBUTE = 'hydrate-context';\n\n/**\n * Represents a context provider that allows setting and getting the context,\n * as well as subscribing to context updates.\n *\n * @template T - The type of the context.\n */\nexport interface IContextProvider<T extends Context<unknown, unknown>> {\n /**\n * Sets the context with the provided update and invokes the optional callback function.\n *\n * @param update - The partial update to be applied to the context.\n * @param callback - An optional callback function that receives the updated context.\n */\n setContext: (update: Partial<ContextType<T>>, callback?: (context: ContextType<T>) => void) => void;\n\n /**\n * Gets the current context.\n *\n * @returns The current context.\n */\n getContext: () => ContextType<T>;\n\n /**\n * Subscribes to context updates.\n *\n * @param subscription - The subscription object that defines the callback function to be invoked on context updates.\n */\n subscribe: (subscription: ContextSubscription<T>) => void;\n}\n\n/**\n * It creates a context provider that allows setting and getting the context,\n * It will also be in charge of notifying the subscribers when the context changes.\n *\n * @template T - The type of the context.\n * @implements IContextProvider\n *\n * @example\n * ```ts\n * export class MyElement extends RadiantElement {\n * provider = new ContextProvider<typeof myContext>(this, {\n * context: myContext,\n * initialValue: {\n * value: 'Hello World',\n * },\n * });\n * ```\n */\nexport class ContextProvider<T extends Context<unknown, unknown>> implements IContextProvider<T> {\n private host: RadiantElement;\n private context: UnknownContext;\n private value: ContextType<T> | undefined;\n subscriptions: ContextSubscription<T>[] = [];\n\n /**\n * Creates a new instance of the ContextProvider.\n *\n * @param host - The host element that will contain the context provider.\n * @param options - The options to configure the context provider.\n */\n constructor(host: RadiantElement, options: ContextProviderOptions<T>) {\n this.host = host;\n this.context = options.context;\n let contextValue: T['__context__'] | undefined = options.initialValue;\n\n if (options.hydrate) {\n const hydrationValue = this.host.getAttribute(HYDRATE_ATTRIBUTE);\n\n if (hydrationValue) {\n const parsedHydrationValue = readAttributeValue(hydrationValue, options.hydrate) as ContextType<T>;\n this.host.removeAttribute(HYDRATE_ATTRIBUTE);\n\n if (\n options.hydrate === Object &&\n this.isObject(parsedHydrationValue) &&\n (this.isObject(contextValue) || typeof contextValue === 'undefined')\n ) {\n contextValue = {\n ...(contextValue ?? {}),\n ...parsedHydrationValue,\n };\n } else {\n contextValue = parsedHydrationValue;\n }\n }\n }\n\n this.value = contextValue as ContextType<T>;\n\n this.registerEvents();\n this.host.dispatchEvent(new ContextOnMountEvent(this.context));\n }\n\n setContext = (update: Partial<ContextType<T>>, callback?: (context: ContextType<T>) => void) => {\n if (typeof this.value === 'object') {\n const oldContext = { ...this.value };\n this.value = { ...this.value, ...update };\n if (callback) callback(this.value);\n this.notifySubscribers(this.value, oldContext);\n }\n };\n\n getContext = () => {\n return this.value as ContextType<T>;\n };\n\n subscribe = ({ select, callback }: ContextSubscription<T>) => {\n this.subscriptions.push({ select, callback });\n };\n\n private isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && !Array.isArray(value) && value !== null;\n }\n\n private notifySubscribers = (newContext: ContextType<T>, prevContext: ContextType<T>) => {\n for (const sub of this.subscriptions) {\n if (!sub.select) return this.sendSubscriptionUpdate(sub, newContext);\n const newSelected = sub.select(newContext);\n const prevSelected = sub.select(prevContext);\n if (newSelected !== prevSelected) {\n this.sendSubscriptionUpdate(sub, newContext);\n }\n }\n };\n\n private sendSubscriptionUpdate = ({ select, callback }: ContextSubscription<T>, context: ContextType<T>) => {\n if (!select) callback(context);\n else callback(select(context));\n };\n\n private handleSubscriptionRequest = ({\n select,\n callback,\n subscribe,\n }: {\n select?: ContextSubscription<T>['select'];\n callback: ContextSubscription<T>['callback'];\n subscribe?: boolean;\n }) => {\n if (subscribe) this.subscribe({ select, callback });\n\n if (!this.value) return;\n\n if (select) {\n callback(select(this.value));\n } else {\n callback(this.value as ContextType<T>);\n }\n };\n\n private onSubscriptionRequest = (event: ContextSubscriptionRequestEvent<UnknownContext>) => {\n const { context, callback, subscribe, select, target } = event;\n if (context !== this.context) return;\n\n event.stopPropagation();\n\n (target as HTMLElement).dispatchEvent(new ContextOnMountEvent(this.context));\n\n this.handleSubscriptionRequest({ select, callback, subscribe });\n };\n\n private onContextRequest = (event: ContextRequestEvent<UnknownContext>) => {\n const { context, callback } = event;\n if (context !== this.context) return;\n event.stopPropagation();\n callback(this);\n };\n\n private registerEvents = () => {\n this.host.addEventListener(ContextEventsTypes.SUBSCRIPTION_REQUEST, this.onSubscriptionRequest);\n this.host.addEventListener(ContextEventsTypes.CONTEXT_REQUEST, this.onContextRequest);\n };\n}\n",
8
+ "import type { RadiantElement } from '@/core/radiant-element';\nimport { type AttributeTypeConstant, readAttributeValue } from '@/utils/attribute-utils';\nimport { query } from '..';\nimport {\n ContextEventsTypes,\n ContextOnMountEvent,\n type ContextRequestEvent,\n type ContextSubscription,\n type ContextSubscriptionRequestEvent,\n} from './events';\nimport type { Context, ContextType, UnknownContext } from './types';\n\ntype ContextProviderOptions<T extends UnknownContext> = {\n context: UnknownContext;\n initialValue?: T['__context__'];\n hydrate?: AttributeTypeConstant;\n};\n\n/**\n * Represents a context provider that allows setting and getting the context,\n * as well as subscribing to context updates.\n *\n * @template T - The type of the context.\n */\nexport interface IContextProvider<T extends Context<unknown, unknown>> {\n /**\n * Sets the context with the provided update and invokes the optional callback function.\n *\n * @param update - The partial update to be applied to the context.\n * @param callback - An optional callback function that receives the updated context.\n */\n setContext: (update: Partial<ContextType<T>>, callback?: (context: ContextType<T>) => void) => void;\n\n /**\n * Gets the current context.\n *\n * @returns The current context.\n */\n getContext: () => ContextType<T>;\n\n /**\n * Subscribes to context updates.\n *\n * @param subscription - The subscription object that defines the callback function to be invoked on context updates.\n */\n subscribe: (subscription: ContextSubscription<T>) => void;\n}\n\n/**\n * It creates a context provider that allows setting and getting the context,\n * It will also be in charge of notifying the subscribers when the context changes.\n *\n * @template T - The type of the context.\n * @implements IContextProvider\n *\n * @example\n * ```ts\n * export class MyElement extends RadiantElement {\n * provider = new ContextProvider<typeof myContext>(this, {\n * context: myContext,\n * initialValue: {\n * value: 'Hello World',\n * },\n * });\n * ```\n */\nexport class ContextProvider<T extends Context<unknown, unknown>> implements IContextProvider<T> {\n private host: RadiantElement;\n private context: UnknownContext;\n private value: ContextType<T> | undefined;\n\n subscriptions: ContextSubscription<T>[] = [];\n\n /**\n * Creates a new instance of the ContextProvider.\n *\n * @param host - The host element that will contain the context provider.\n * @param options - The options to configure the context provider.\n */\n constructor(host: RadiantElement, options: ContextProviderOptions<T>) {\n this.host = host;\n this.context = options.context;\n let contextValue: T['__context__'] | undefined = options.initialValue;\n\n if (options.hydrate) {\n const hydrationScriptElement = this.host.querySelector('script[data-hydration]');\n if (hydrationScriptElement?.textContent) {\n const hydrationValue = hydrationScriptElement.textContent;\n const parsedHydrationValue = readAttributeValue(hydrationValue, options.hydrate) as ContextType<T>;\n\n if (\n options.hydrate === Object &&\n this.isObject(parsedHydrationValue) &&\n (this.isObject(contextValue) || typeof contextValue === 'undefined')\n ) {\n contextValue = {\n ...(contextValue ?? {}),\n ...parsedHydrationValue,\n };\n } else {\n contextValue = parsedHydrationValue;\n }\n }\n }\n\n this.value = contextValue as ContextType<T>;\n\n this.registerEvents();\n this.host.dispatchEvent(new ContextOnMountEvent(this.context));\n }\n\n setContext = (update: Partial<ContextType<T>>, callback?: (context: ContextType<T>) => void) => {\n if (typeof this.value === 'object') {\n const oldContext = { ...this.value };\n this.value = { ...this.value, ...update };\n if (callback) callback(this.value);\n this.notifySubscribers(this.value, oldContext);\n }\n };\n\n getContext = () => {\n return this.value as ContextType<T>;\n };\n\n subscribe = ({ select, callback }: ContextSubscription<T>) => {\n this.subscriptions.push({ select, callback });\n };\n\n private isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && !Array.isArray(value) && value !== null;\n }\n\n private notifySubscribers = (newContext: ContextType<T>, prevContext: ContextType<T>) => {\n for (const sub of this.subscriptions) {\n if (!sub.select) return this.sendSubscriptionUpdate(sub, newContext);\n const newSelected = sub.select(newContext);\n const prevSelected = sub.select(prevContext);\n if (newSelected !== prevSelected) {\n this.sendSubscriptionUpdate(sub, newContext);\n }\n }\n };\n\n private sendSubscriptionUpdate = ({ select, callback }: ContextSubscription<T>, context: ContextType<T>) => {\n if (!select) callback(context);\n else callback(select(context));\n };\n\n private handleSubscriptionRequest = ({\n select,\n callback,\n subscribe,\n }: {\n select?: ContextSubscription<T>['select'];\n callback: ContextSubscription<T>['callback'];\n subscribe?: boolean;\n }) => {\n if (subscribe) this.subscribe({ select, callback });\n\n if (!this.value) return;\n\n if (select) {\n callback(select(this.value));\n } else {\n callback(this.value as ContextType<T>);\n }\n };\n\n private onSubscriptionRequest = (event: ContextSubscriptionRequestEvent<UnknownContext>) => {\n const { context, callback, subscribe, select, target } = event;\n if (context !== this.context) return;\n\n event.stopPropagation();\n\n (target as HTMLElement).dispatchEvent(new ContextOnMountEvent(this.context));\n\n this.handleSubscriptionRequest({ select, callback, subscribe });\n };\n\n private onContextRequest = (event: ContextRequestEvent<UnknownContext>) => {\n const { context, callback } = event;\n if (context !== this.context) return;\n event.stopPropagation();\n callback(this);\n };\n\n private registerEvents = () => {\n this.host.addEventListener(ContextEventsTypes.SUBSCRIPTION_REQUEST, this.onSubscriptionRequest);\n this.host.addEventListener(ContextEventsTypes.CONTEXT_REQUEST, this.onContextRequest);\n };\n}\n",
9
9
  "import { ContextProvider } from '@/context/context-provider';\nimport type { UnknownContext } from '@/context/types';\nimport type { RadiantElement } from '@/core/radiant-element';\nimport type { AttributeTypeConstant } from '@/utils/attribute-utils';\n\ntype CreateContextOptions<T extends UnknownContext> = {\n context: T;\n initialValue?: T['__context__'];\n hydrate?: AttributeTypeConstant;\n};\n\n/**\n * A decorator to provide a context to the target element.\n * @param contextToProvide\n * @returns\n */\nexport function provideContext<T extends UnknownContext>({ context, initialValue, hydrate }: CreateContextOptions<T>) {\n return (proto: RadiantElement, propertyKey: string) => {\n const originalConnectedCallback = proto.connectedCallback;\n\n proto.connectedCallback = function (this: RadiantElement) {\n originalConnectedCallback.call(this);\n (this as any)[propertyKey] = new ContextProvider<T>(this, { context, initialValue, hydrate });\n this.connectedContextCallback(context);\n };\n };\n}\n",
10
10
  "import { ContextRequestEvent } from '@/context/events';\nimport type { UnknownContext } from '@/context/types';\nimport type { RadiantElement } from '@/core/radiant-element';\n\n/**\n * A decorator to provide a context to the target element.\n * @param contextToProvide\n * @returns\n */\nexport function consumeContext(contextToProvide: UnknownContext) {\n return (proto: RadiantElement, propertyKey: string) => {\n const originalConnectedCallback = proto.connectedCallback;\n\n proto.connectedCallback = function (this: RadiantElement) {\n originalConnectedCallback.call(this);\n this.dispatchEvent(\n new ContextRequestEvent(contextToProvide, (context) => {\n (this as any)[propertyKey] = context;\n this.connectedContextCallback(contextToProvide);\n }),\n );\n };\n };\n}\n",
11
11
  "import { ContextSubscriptionRequestEvent } from '@/context/events';\nimport type { Context, ContextType, UnknownContext } from '@/context/types';\nimport type { RadiantElement } from '@/core/radiant-element';\n\ntype ArgsType<T extends UnknownContext> = SubscribeToContextOptions<T>['select'] extends (...args: any[]) => infer R\n ? R\n : ContextType<T>;\n\ntype SubscribeToContextOptions<T extends UnknownContext> = {\n context: T;\n select?: (context: T['__context__']) => unknown;\n subscribe?: boolean;\n};\n/**\n * A decorator to subscribe to a context selector.\n * @param context The context to subscribe to.\n * @param selector The selector to subscribe to. If not provided, the whole context will be subscribed to.\n * @param subscribe @default true Whether to subscribe or unsubscribe. Optional.\n * @returns\n */\nexport function contextSelector<T extends Context<unknown, unknown>>({\n context,\n select,\n subscribe = true,\n}: SubscribeToContextOptions<T>) {\n return (proto: RadiantElement, _: string, descriptor: PropertyDescriptor) => {\n const originalMethod = descriptor.value;\n const originalConnectedCallback = proto.connectedCallback;\n\n proto.connectedCallback = function (this: RadiantElement) {\n originalConnectedCallback.call(this);\n this.dispatchEvent(new ContextSubscriptionRequestEvent(context, originalMethod.bind(this), select, subscribe));\n };\n\n descriptor.value = function (...args: ArgsType<T>[]) {\n const result = originalMethod.apply(this, args);\n return result;\n };\n\n return descriptor;\n };\n}\n"
12
12
  ],
13
- "mappings": "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",
14
- "debugId": "D75F336EBA07D2EB64756E2164756E21",
13
+ "mappings": "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",
14
+ "debugId": "A716B50D997FCD8964756E2164756E21",
15
15
  "names": []
16
16
  }
@@ -0,0 +1,9 @@
1
+ import type { RadiantElement } from '../core/radiant-element';
2
+ /**
3
+ * A decorator to bind a method to the instance.
4
+ * @param target {@link RadiantElement}
5
+ * @param propertyKey string
6
+ * @param descriptor {@link PropertyDescriptor}
7
+ * @returns
8
+ */
9
+ export declare function bound(target: RadiantElement, propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor;
@@ -0,0 +1,24 @@
1
+ // src/decorators/bound.ts
2
+ function bound(target, propertyKey, descriptor) {
3
+ const originalMethod = descriptor.value;
4
+ return {
5
+ configurable: true,
6
+ get() {
7
+ if (this === target.prototype || Object.hasOwn(this, propertyKey)) {
8
+ return originalMethod;
9
+ }
10
+ const boundMethod = originalMethod.bind(this);
11
+ Object.defineProperty(this, propertyKey, {
12
+ value: boundMethod,
13
+ configurable: true,
14
+ writable: true
15
+ });
16
+ return boundMethod;
17
+ }
18
+ };
19
+ }
20
+ export {
21
+ bound
22
+ };
23
+
24
+ //# debugId=90091E999EB96B5364756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/decorators/bound.ts"],
4
+ "sourcesContent": [
5
+ "import type { RadiantElement } from '@/core/radiant-element';\n\n/**\n * A decorator to bind a method to the instance.\n * @param target {@link RadiantElement}\n * @param propertyKey string\n * @param descriptor {@link PropertyDescriptor}\n * @returns\n */\nexport function bound(target: RadiantElement, propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor {\n const originalMethod = descriptor.value;\n\n return {\n configurable: true,\n get() {\n /**\n * Check if the method is already bound to the instance.\n */\n if (this === (target as any).prototype || Object.hasOwn(this, propertyKey)) {\n return originalMethod;\n }\n\n /**\n * Bind the method to the instance.\n */\n const boundMethod = originalMethod.bind(this);\n Object.defineProperty(this, propertyKey, {\n value: boundMethod,\n configurable: true,\n writable: true,\n });\n return boundMethod;\n },\n };\n}\n"
6
+ ],
7
+ "mappings": ";AASO,SAAS,KAAK,CAAC,QAAwB,aAAqB,YAAoD;AACrH,QAAM,iBAAiB,WAAW;AAElC,SAAO;AAAA,IACL,cAAc;AAAA,IACd,GAAG,GAAG;AAIJ,UAAI,SAAU,OAAe,aAAa,OAAO,OAAO,MAAM,WAAW,GAAG;AAC1E,eAAO;AAAA,MACT;AAKA,YAAM,cAAc,eAAe,KAAK,IAAI;AAC5C,aAAO,eAAe,MAAM,aAAa;AAAA,QACvC,OAAO;AAAA,QACP,cAAc;AAAA,QACd,UAAU;AAAA,MACZ,CAAC;AACD,aAAO;AAAA;AAAA,EAEX;AAAA;",
8
+ "debugId": "90091E999EB96B5364756E2164756E21",
9
+ "names": []
10
+ }
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/decorators/debounce.ts"],
4
4
  "sourcesContent": [
5
- "export function debounce(\n timeout: number,\n): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor {\n let timeoutRef: ReturnType<typeof setTimeout> | null = null;\n\n return (_target: any, _propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor => {\n const originalMethod = descriptor.value;\n\n descriptor.value = function debounce(...args: any[]) {\n if (timeoutRef !== null) {\n clearTimeout(timeoutRef);\n }\n\n timeoutRef = setTimeout(() => {\n originalMethod.apply(this, args);\n }, timeout);\n };\n\n return descriptor;\n };\n}\n"
5
+ "import type { RadiantElement } from '@/core/radiant-element';\n\nexport function debounce(\n timeout: number,\n): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor {\n let timeoutRef: ReturnType<typeof setTimeout> | null = null;\n\n return (_target: RadiantElement, _propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor => {\n const originalMethod = descriptor.value;\n\n descriptor.value = function debounce(...args: any[]) {\n if (timeoutRef !== null) {\n clearTimeout(timeoutRef);\n }\n\n timeoutRef = setTimeout(() => {\n originalMethod.apply(this, args);\n }, timeout);\n };\n\n return descriptor;\n };\n}\n"
6
6
  ],
7
- "mappings": ";AAAO,SAAS,QAAQ,CACtB,SAC0F;AAC1F,MAAI,aAAmD;AAEvD,SAAO,CAAC,SAAc,cAAsB,eAAuD;AACjG,UAAM,iBAAiB,WAAW;AAElC,eAAW,iBAAiB,QAAQ,IAAI,MAAa;AACnD,UAAI,eAAe,MAAM;AACvB,qBAAa,UAAU;AAAA,MACzB;AAEA,mBAAa,WAAW,MAAM;AAC5B,uBAAe,MAAM,MAAM,IAAI;AAAA,SAC9B,OAAO;AAAA;AAGZ,WAAO;AAAA;AAAA;",
7
+ "mappings": ";AAEO,SAAS,QAAQ,CACtB,SAC0F;AAC1F,MAAI,aAAmD;AAEvD,SAAO,CAAC,SAAyB,cAAsB,eAAuD;AAC5G,UAAM,iBAAiB,WAAW;AAElC,eAAW,iBAAiB,QAAQ,IAAI,MAAa;AACnD,UAAI,eAAe,MAAM;AACvB,qBAAa,UAAU;AAAA,MACzB;AAEA,mBAAa,WAAW,MAAM;AAC5B,uBAAe,MAAM,MAAM,IAAI;AAAA,SAC9B,OAAO;AAAA;AAGZ,WAAO;AAAA;AAAA;",
8
8
  "debugId": "30A0CC4182AD504664756E2164756E21",
9
9
  "names": []
10
10
  }
package/dist/index.js CHANGED
@@ -517,8 +517,6 @@ class ContextSubscriptionRequestEvent extends Event {
517
517
  }
518
518
 
519
519
  // src/context/context-provider.ts
520
- var HYDRATE_ATTRIBUTE = "hydrate-context";
521
-
522
520
  class ContextProvider {
523
521
  host;
524
522
  context;
@@ -529,10 +527,10 @@ class ContextProvider {
529
527
  this.context = options.context;
530
528
  let contextValue = options.initialValue;
531
529
  if (options.hydrate) {
532
- const hydrationValue = this.host.getAttribute(HYDRATE_ATTRIBUTE);
533
- if (hydrationValue) {
530
+ const hydrationScriptElement = this.host.querySelector("script[data-hydration]");
531
+ if (hydrationScriptElement?.textContent) {
532
+ const hydrationValue = hydrationScriptElement.textContent;
534
533
  const parsedHydrationValue = readAttributeValue(hydrationValue, options.hydrate);
535
- this.host.removeAttribute(HYDRATE_ATTRIBUTE);
536
534
  if (options.hydrate === Object && this.isObject(parsedHydrationValue) && (this.isObject(contextValue) || typeof contextValue === "undefined")) {
537
535
  contextValue = {
538
536
  ...contextValue ?? {},
@@ -683,13 +681,13 @@ function WithKita(Base) {
683
681
  }
684
682
  };
685
683
  }
686
- // src/tools/stringify-attribute.ts
687
- function stringifyAttribute(value) {
684
+ // src/tools/stringify-typed.ts
685
+ function stringifyTyped(value) {
688
686
  return JSON.stringify(value);
689
687
  }
690
688
  export {
691
689
  writeAttributeValue,
692
- stringifyAttribute,
690
+ stringifyTyped,
693
691
  readAttributeValue,
694
692
  reactiveProp,
695
693
  reactiveField,
@@ -708,7 +706,6 @@ export {
708
706
  consumeContext,
709
707
  WithKita,
710
708
  RadiantElement,
711
- HYDRATE_ATTRIBUTE,
712
709
  EventEmitter,
713
710
  ContextSubscriptionRequestEvent,
714
711
  ContextRequestEvent,
@@ -717,4 +714,4 @@ export {
717
714
  ContextEventsTypes
718
715
  };
719
716
 
720
- //# debugId=9F8C73D65206CDB164756E2164756E21
717
+ //# debugId=939C4DFAA83EB14964756E2164756E21
package/dist/index.js.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/decorators/custom-element.ts", "../src/tools/event-emitter.ts", "../src/decorators/event.ts", "../src/decorators/on-event.ts", "../src/decorators/on-updated.ts", "../src/decorators/query.ts", "../src/utils/attribute-utils.ts", "../src/decorators/reactive-prop.ts", "../src/decorators/reactive-field.ts", "../src/core/radiant-element.ts", "../src/context/create-context.ts", "../src/context/events.ts", "../src/context/context-provider.ts", "../src/context/decorators/provide-context.ts", "../src/context/decorators/consume-context.ts", "../src/context/decorators/context-selector.ts", "../src/mixins/with-kita.ts", "../src/tools/stringify-attribute.ts"],
3
+ "sources": ["../src/decorators/custom-element.ts", "../src/tools/event-emitter.ts", "../src/decorators/event.ts", "../src/decorators/on-event.ts", "../src/decorators/on-updated.ts", "../src/decorators/query.ts", "../src/utils/attribute-utils.ts", "../src/decorators/reactive-prop.ts", "../src/decorators/reactive-field.ts", "../src/core/radiant-element.ts", "../src/context/create-context.ts", "../src/context/events.ts", "../src/context/context-provider.ts", "../src/context/decorators/provide-context.ts", "../src/context/decorators/consume-context.ts", "../src/context/decorators/context-selector.ts", "../src/mixins/with-kita.ts", "../src/tools/stringify-typed.ts"],
4
4
  "sourcesContent": [
5
5
  "/**\n * Registers a web component with the given name on the global `window.customElements` registry.\n * @param name selector name.\n */\nexport function customElement(name: string) {\n return (target: CustomElementConstructor) => {\n if (!globalThis.window) return;\n if (!window.customElements.get(name)) {\n window.customElements.define(name, target);\n }\n };\n}\n",
6
6
  "import type { RadiantElement } from '..';\n\nexport interface EventEmitterConfig {\n name: string;\n bubbles?: boolean;\n cancelable?: boolean;\n composed?: boolean;\n}\n\n/**\n * A generic event emitter class that allows emitting custom events.\n *\n * @template T - The type of the event detail.\n */\nexport class EventEmitter<T = unknown> {\n private host: RadiantElement;\n private eventConfig: EventEmitterConfig;\n\n /**\n * Constructs a new instance of the EventEmitter class.\n *\n * @param host - The host element on which the events will be dispatched.\n * @param eventConfig - The configuration for the event.\n */\n constructor(host: RadiantElement, eventConfig: EventEmitterConfig) {\n this.host = host;\n this.eventConfig = eventConfig;\n }\n\n /**\n * Emits a custom event with the specified detail.\n *\n * @param detail - The detail object to be passed along with the event.\n */\n emit(detail?: T) {\n const event = new CustomEvent(this.eventConfig.name, {\n detail: detail,\n bubbles: this.eventConfig.bubbles,\n cancelable: this.eventConfig.cancelable,\n composed: this.eventConfig.composed,\n });\n this.host.dispatchEvent(event);\n }\n}\n",
@@ -14,14 +14,14 @@
14
14
  "import type { UnknownContext } from '@/context/types';\nimport type { AttributeTypeConstant, ReadAttributeValueReturnType, WriteAttributeValueReturnType } from '@/utils';\n\n/**\n * Possible positions to insert a rendered template.\n */\nexport type RenderInsertPosition = 'replace' | 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend';\n\n/**\n * Represents a Radiant element event listener.\n */\nexport type RadiantElementEventListener = {\n selector: string;\n type: string;\n listener: EventListener;\n id: string;\n options?: AddEventListenerOptions;\n};\n\n/**\n * Represents a property metadata object.\n */\nexport interface PropertyConfig {\n type: AttributeTypeConstant;\n propertyName: string;\n attributeKey: string;\n converter: {\n fromAttribute: (value: string) => ReadAttributeValueReturnType;\n toAttribute: (value: any) => WriteAttributeValueReturnType;\n };\n}\n\n/**\n * Represents an interface for a Radiant element.\n */\nexport interface IRadiantElement {\n /**\n * Called when a property of the element is updated.\n * @param changedProperty - The name of the changed property.\n * @param oldValue - The old value of the property.\n * @param newValue - The new value of the property.\n */\n updated(changedProperty: string, oldValue: unknown, newValue: unknown): void;\n\n /**\n * Subscribes to a Radiant element event.\n * @param event - The event listener to subscribe to.\n */\n subscribeEvent(event: RadiantElementEventListener): void;\n\n /**\n * Subscribes to multiple Radiant element events.\n * @param events - The array of event listeners to subscribe to.\n */\n subscribeEvents(events: RadiantElementEventListener[]): void;\n\n /**\n * Unsubscribes from a Radiant element event.\n * @param id - The ID of the event listener to unsubscribe from.\n */\n unsubscribeEvent(id: string): void;\n\n /**\n * Removes all subscribed events from the Radiant element.\n */\n removeAllSubscribedEvents(): void;\n\n /**\n * Renders a template into the specified target element.\n * @param options - The rendering options.\n * @param options.target - The target element to render the template into.\n * @param options.template - The template string to render.\n * @param options.insert - The position to insert the rendered template. (optional)\n */\n renderTemplate(options: {\n target: HTMLElement;\n template: string;\n insert?: RenderInsertPosition;\n }): void;\n\n /**\n * Called when the Radiant element is connected to a context.\n * @param context - The connected context.\n */\n connectedContextCallback(context: UnknownContext): void;\n}\n\n/**\n * A base class for creating custom elements with reactive properties and event subscriptions.\n * @extends HTMLElement\n * @implements IRadiantElement\n */\nexport class RadiantElement extends HTMLElement implements IRadiantElement {\n declare propertyConfigMap: Map<string, PropertyConfig>;\n declare updatesRegistry: Map<string, Set<string>>;\n private eventSubscriptions = new Map<string, RadiantElementEventListener>();\n private elementReady = false;\n\n connectedCallback() {\n this.elementReady = true;\n }\n\n connectedContextCallback(_contextName: UnknownContext): void {}\n\n disconnectedCallback() {\n this.removeAllSubscribedEvents();\n }\n\n updated(changedProperty: string, oldValue: unknown, value: unknown) {\n if (!this.elementReady || !this.updatesRegistry || oldValue === value) return;\n const updates = this.updatesRegistry.get(changedProperty);\n if (updates) {\n for (const update of updates) {\n (this as any)[update]();\n }\n }\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\n if (oldValue === newValue || !this.elementReady) return;\n\n if (name in this) {\n const config = this.propertyConfigMap.get(name);\n const transformedValue = newValue ? config?.converter.fromAttribute(newValue) : newValue;\n const transformedOldValue = oldValue ? config?.converter.fromAttribute(oldValue) : oldValue;\n (this as RadiantElement & { [key: string]: any })[name] = transformedValue;\n this.updated(name, transformedOldValue, transformedValue);\n }\n }\n\n renderTemplate({\n target = this,\n template,\n insert = 'replace',\n }: {\n target: HTMLElement;\n template: string;\n insert?: RenderInsertPosition;\n }) {\n switch (insert) {\n case 'replace':\n target.innerHTML = template;\n break;\n case 'beforeend':\n target.insertAdjacentHTML('beforeend', template);\n break;\n case 'afterbegin':\n target.insertAdjacentHTML('afterbegin', template);\n break;\n }\n }\n\n public subscribeEvents(events: RadiantElementEventListener[]): void {\n for (const event of events) {\n this.subscribeEvent(event);\n }\n }\n\n public subscribeEvent(eventConfig: RadiantElementEventListener): void {\n const delegatedListener = (delegatedEvent: Event) => {\n if (delegatedEvent.target && (delegatedEvent.target as Element).matches(eventConfig.selector)) {\n eventConfig.listener.call(this, delegatedEvent);\n }\n };\n\n this.addEventListener(eventConfig.type, delegatedListener, eventConfig.options);\n this.eventSubscriptions.set(eventConfig.id, { ...eventConfig, listener: delegatedListener });\n }\n\n public unsubscribeEvent(id: string): void {\n const eventSubscription = this.eventSubscriptions.get(id);\n if (eventSubscription) {\n this.removeEventListener(eventSubscription.type, eventSubscription.listener, eventSubscription.options);\n this.eventSubscriptions.delete(id);\n }\n }\n\n public removeAllSubscribedEvents(): void {\n for (const eventSubscription of this.eventSubscriptions.values()) {\n this.removeEventListener(eventSubscription.type, eventSubscription.listener, eventSubscription.options);\n }\n this.eventSubscriptions.clear();\n }\n}\n",
15
15
  "import type { Context } from './types';\n\n/**\n * A function which creates a Context value object\n */\nexport const createContext = <ValueType>(key: unknown) => key as Context<typeof key, ValueType>;\n",
16
16
  "import type { Context, ContextCallback, ContextType, UnknownContext } from './types';\n\n/**\n * List of events which can be emitted by a context provider or requester.\n */\nexport enum ContextEventsTypes {\n SUBSCRIPTION_REQUEST = 'context--subscription-request',\n CONTEXT_REQUEST = 'context-request',\n ON_MOUNT = 'context--on-mount',\n}\n\n/**\n * An event fired by a context requester to signal it desires a named context.\n *\n * A provider should inspect the `context` property of the event to determine if it has a value that can\n * satisfy the request, calling the `callback` with the requested value if so.\n *\n * If the requested context event contains a truthy `subscribe` value, then a provider can call the callback\n * multiple times if the value is changed, if this is the case the provider should pass an `unsubscribe`\n * function to the callback which requesters can invoke to indicate they no longer wish to receive these updates.\n */\nexport class ContextRequestEvent<T extends UnknownContext> extends Event {\n public constructor(\n public readonly context: T,\n public readonly callback: ContextCallback<ContextType<T>>,\n public readonly subscribe?: boolean,\n ) {\n super(ContextEventsTypes.CONTEXT_REQUEST, { bubbles: true, composed: true });\n }\n}\n\n/**\n * A type which represents a subscription to a context value.\n */\nexport type ContextSubscription<T extends UnknownContext> = {\n select?: (context: ContextType<T>) => unknown;\n callback: (value: unknown) => void;\n};\n\n/**\n * An event fired by a context provider to signal that a context value has been mounted and is available for consumption.\n */\nexport class ContextOnMountEvent extends CustomEvent<{ context: UnknownContext }> {\n public constructor(context: UnknownContext) {\n super(ContextEventsTypes.ON_MOUNT, {\n detail: { context },\n bubbles: true,\n composed: true,\n });\n }\n}\n\n/**\n * An event fired by a context requester to signal it desires a named context.\n *\n * A provider should inspect the `context` property of the event to determine if it has a value that can\n * satisfy the request, calling the `callback` with the requested value if so.\n *\n * If the requested context event contains a truthy `subscribe` value, then a provider can call the callback\n * multiple times if the value is changed, if this is the case the provider should pass an `unsubscribe`\n * function to the callback which requesters can invoke to indicate they no longer wish to receive these updates.\n *\n * It accepts a `selector` property which can be used to request a specific property of the context value.\n */\nexport class ContextSubscriptionRequestEvent<T extends UnknownContext> extends Event {\n public constructor(\n public readonly context: T,\n public readonly callback: (value: ContextType<T> | { [K in keyof ContextType<T>]: ContextType<T>[K] }) => void,\n public readonly select?: (context: ContextType<T>) => unknown,\n public readonly subscribe?: boolean,\n ) {\n super(ContextEventsTypes.SUBSCRIPTION_REQUEST, {\n bubbles: true,\n composed: true,\n });\n }\n}\n\ndeclare global {\n interface HTMLElementEventMap {\n /**\n * A 'context-request-subscription' event can be emitted by any element which desires\n * a context value to be injected by an external provider.\n */\n [ContextEventsTypes.SUBSCRIPTION_REQUEST]: ContextSubscriptionRequestEvent<UnknownContext>;\n /**\n * A context-request-provider event can be emitted by a context requester to signal\n * that it desires a context value to be provided by a context provider.\n */\n [ContextEventsTypes.CONTEXT_REQUEST]: ContextRequestEvent<Context<unknown, unknown>>;\n /**\n * A 'context-mount' event can be emitted by a context provider to signal\n * that a context value has been mounted and is available for consumption.\n */\n [ContextEventsTypes.ON_MOUNT]: ContextOnMountEvent;\n }\n}\n",
17
- "import type { RadiantElement } from '@/core/radiant-element';\nimport { type AttributeTypeConstant, readAttributeValue } from '@/utils/attribute-utils';\nimport {\n ContextEventsTypes,\n ContextOnMountEvent,\n type ContextRequestEvent,\n type ContextSubscription,\n type ContextSubscriptionRequestEvent,\n} from './events';\nimport type { Context, ContextType, UnknownContext } from './types';\n\ntype ContextProviderOptions<T extends UnknownContext> = {\n context: UnknownContext;\n initialValue?: T['__context__'];\n hydrate?: AttributeTypeConstant;\n};\n\nexport const HYDRATE_ATTRIBUTE = 'hydrate-context';\n\n/**\n * Represents a context provider that allows setting and getting the context,\n * as well as subscribing to context updates.\n *\n * @template T - The type of the context.\n */\nexport interface IContextProvider<T extends Context<unknown, unknown>> {\n /**\n * Sets the context with the provided update and invokes the optional callback function.\n *\n * @param update - The partial update to be applied to the context.\n * @param callback - An optional callback function that receives the updated context.\n */\n setContext: (update: Partial<ContextType<T>>, callback?: (context: ContextType<T>) => void) => void;\n\n /**\n * Gets the current context.\n *\n * @returns The current context.\n */\n getContext: () => ContextType<T>;\n\n /**\n * Subscribes to context updates.\n *\n * @param subscription - The subscription object that defines the callback function to be invoked on context updates.\n */\n subscribe: (subscription: ContextSubscription<T>) => void;\n}\n\n/**\n * It creates a context provider that allows setting and getting the context,\n * It will also be in charge of notifying the subscribers when the context changes.\n *\n * @template T - The type of the context.\n * @implements IContextProvider\n *\n * @example\n * ```ts\n * export class MyElement extends RadiantElement {\n * provider = new ContextProvider<typeof myContext>(this, {\n * context: myContext,\n * initialValue: {\n * value: 'Hello World',\n * },\n * });\n * ```\n */\nexport class ContextProvider<T extends Context<unknown, unknown>> implements IContextProvider<T> {\n private host: RadiantElement;\n private context: UnknownContext;\n private value: ContextType<T> | undefined;\n subscriptions: ContextSubscription<T>[] = [];\n\n /**\n * Creates a new instance of the ContextProvider.\n *\n * @param host - The host element that will contain the context provider.\n * @param options - The options to configure the context provider.\n */\n constructor(host: RadiantElement, options: ContextProviderOptions<T>) {\n this.host = host;\n this.context = options.context;\n let contextValue: T['__context__'] | undefined = options.initialValue;\n\n if (options.hydrate) {\n const hydrationValue = this.host.getAttribute(HYDRATE_ATTRIBUTE);\n\n if (hydrationValue) {\n const parsedHydrationValue = readAttributeValue(hydrationValue, options.hydrate) as ContextType<T>;\n this.host.removeAttribute(HYDRATE_ATTRIBUTE);\n\n if (\n options.hydrate === Object &&\n this.isObject(parsedHydrationValue) &&\n (this.isObject(contextValue) || typeof contextValue === 'undefined')\n ) {\n contextValue = {\n ...(contextValue ?? {}),\n ...parsedHydrationValue,\n };\n } else {\n contextValue = parsedHydrationValue;\n }\n }\n }\n\n this.value = contextValue as ContextType<T>;\n\n this.registerEvents();\n this.host.dispatchEvent(new ContextOnMountEvent(this.context));\n }\n\n setContext = (update: Partial<ContextType<T>>, callback?: (context: ContextType<T>) => void) => {\n if (typeof this.value === 'object') {\n const oldContext = { ...this.value };\n this.value = { ...this.value, ...update };\n if (callback) callback(this.value);\n this.notifySubscribers(this.value, oldContext);\n }\n };\n\n getContext = () => {\n return this.value as ContextType<T>;\n };\n\n subscribe = ({ select, callback }: ContextSubscription<T>) => {\n this.subscriptions.push({ select, callback });\n };\n\n private isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && !Array.isArray(value) && value !== null;\n }\n\n private notifySubscribers = (newContext: ContextType<T>, prevContext: ContextType<T>) => {\n for (const sub of this.subscriptions) {\n if (!sub.select) return this.sendSubscriptionUpdate(sub, newContext);\n const newSelected = sub.select(newContext);\n const prevSelected = sub.select(prevContext);\n if (newSelected !== prevSelected) {\n this.sendSubscriptionUpdate(sub, newContext);\n }\n }\n };\n\n private sendSubscriptionUpdate = ({ select, callback }: ContextSubscription<T>, context: ContextType<T>) => {\n if (!select) callback(context);\n else callback(select(context));\n };\n\n private handleSubscriptionRequest = ({\n select,\n callback,\n subscribe,\n }: {\n select?: ContextSubscription<T>['select'];\n callback: ContextSubscription<T>['callback'];\n subscribe?: boolean;\n }) => {\n if (subscribe) this.subscribe({ select, callback });\n\n if (!this.value) return;\n\n if (select) {\n callback(select(this.value));\n } else {\n callback(this.value as ContextType<T>);\n }\n };\n\n private onSubscriptionRequest = (event: ContextSubscriptionRequestEvent<UnknownContext>) => {\n const { context, callback, subscribe, select, target } = event;\n if (context !== this.context) return;\n\n event.stopPropagation();\n\n (target as HTMLElement).dispatchEvent(new ContextOnMountEvent(this.context));\n\n this.handleSubscriptionRequest({ select, callback, subscribe });\n };\n\n private onContextRequest = (event: ContextRequestEvent<UnknownContext>) => {\n const { context, callback } = event;\n if (context !== this.context) return;\n event.stopPropagation();\n callback(this);\n };\n\n private registerEvents = () => {\n this.host.addEventListener(ContextEventsTypes.SUBSCRIPTION_REQUEST, this.onSubscriptionRequest);\n this.host.addEventListener(ContextEventsTypes.CONTEXT_REQUEST, this.onContextRequest);\n };\n}\n",
17
+ "import type { RadiantElement } from '@/core/radiant-element';\nimport { type AttributeTypeConstant, readAttributeValue } from '@/utils/attribute-utils';\nimport { query } from '..';\nimport {\n ContextEventsTypes,\n ContextOnMountEvent,\n type ContextRequestEvent,\n type ContextSubscription,\n type ContextSubscriptionRequestEvent,\n} from './events';\nimport type { Context, ContextType, UnknownContext } from './types';\n\ntype ContextProviderOptions<T extends UnknownContext> = {\n context: UnknownContext;\n initialValue?: T['__context__'];\n hydrate?: AttributeTypeConstant;\n};\n\n/**\n * Represents a context provider that allows setting and getting the context,\n * as well as subscribing to context updates.\n *\n * @template T - The type of the context.\n */\nexport interface IContextProvider<T extends Context<unknown, unknown>> {\n /**\n * Sets the context with the provided update and invokes the optional callback function.\n *\n * @param update - The partial update to be applied to the context.\n * @param callback - An optional callback function that receives the updated context.\n */\n setContext: (update: Partial<ContextType<T>>, callback?: (context: ContextType<T>) => void) => void;\n\n /**\n * Gets the current context.\n *\n * @returns The current context.\n */\n getContext: () => ContextType<T>;\n\n /**\n * Subscribes to context updates.\n *\n * @param subscription - The subscription object that defines the callback function to be invoked on context updates.\n */\n subscribe: (subscription: ContextSubscription<T>) => void;\n}\n\n/**\n * It creates a context provider that allows setting and getting the context,\n * It will also be in charge of notifying the subscribers when the context changes.\n *\n * @template T - The type of the context.\n * @implements IContextProvider\n *\n * @example\n * ```ts\n * export class MyElement extends RadiantElement {\n * provider = new ContextProvider<typeof myContext>(this, {\n * context: myContext,\n * initialValue: {\n * value: 'Hello World',\n * },\n * });\n * ```\n */\nexport class ContextProvider<T extends Context<unknown, unknown>> implements IContextProvider<T> {\n private host: RadiantElement;\n private context: UnknownContext;\n private value: ContextType<T> | undefined;\n\n subscriptions: ContextSubscription<T>[] = [];\n\n /**\n * Creates a new instance of the ContextProvider.\n *\n * @param host - The host element that will contain the context provider.\n * @param options - The options to configure the context provider.\n */\n constructor(host: RadiantElement, options: ContextProviderOptions<T>) {\n this.host = host;\n this.context = options.context;\n let contextValue: T['__context__'] | undefined = options.initialValue;\n\n if (options.hydrate) {\n const hydrationScriptElement = this.host.querySelector('script[data-hydration]');\n if (hydrationScriptElement?.textContent) {\n const hydrationValue = hydrationScriptElement.textContent;\n const parsedHydrationValue = readAttributeValue(hydrationValue, options.hydrate) as ContextType<T>;\n\n if (\n options.hydrate === Object &&\n this.isObject(parsedHydrationValue) &&\n (this.isObject(contextValue) || typeof contextValue === 'undefined')\n ) {\n contextValue = {\n ...(contextValue ?? {}),\n ...parsedHydrationValue,\n };\n } else {\n contextValue = parsedHydrationValue;\n }\n }\n }\n\n this.value = contextValue as ContextType<T>;\n\n this.registerEvents();\n this.host.dispatchEvent(new ContextOnMountEvent(this.context));\n }\n\n setContext = (update: Partial<ContextType<T>>, callback?: (context: ContextType<T>) => void) => {\n if (typeof this.value === 'object') {\n const oldContext = { ...this.value };\n this.value = { ...this.value, ...update };\n if (callback) callback(this.value);\n this.notifySubscribers(this.value, oldContext);\n }\n };\n\n getContext = () => {\n return this.value as ContextType<T>;\n };\n\n subscribe = ({ select, callback }: ContextSubscription<T>) => {\n this.subscriptions.push({ select, callback });\n };\n\n private isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && !Array.isArray(value) && value !== null;\n }\n\n private notifySubscribers = (newContext: ContextType<T>, prevContext: ContextType<T>) => {\n for (const sub of this.subscriptions) {\n if (!sub.select) return this.sendSubscriptionUpdate(sub, newContext);\n const newSelected = sub.select(newContext);\n const prevSelected = sub.select(prevContext);\n if (newSelected !== prevSelected) {\n this.sendSubscriptionUpdate(sub, newContext);\n }\n }\n };\n\n private sendSubscriptionUpdate = ({ select, callback }: ContextSubscription<T>, context: ContextType<T>) => {\n if (!select) callback(context);\n else callback(select(context));\n };\n\n private handleSubscriptionRequest = ({\n select,\n callback,\n subscribe,\n }: {\n select?: ContextSubscription<T>['select'];\n callback: ContextSubscription<T>['callback'];\n subscribe?: boolean;\n }) => {\n if (subscribe) this.subscribe({ select, callback });\n\n if (!this.value) return;\n\n if (select) {\n callback(select(this.value));\n } else {\n callback(this.value as ContextType<T>);\n }\n };\n\n private onSubscriptionRequest = (event: ContextSubscriptionRequestEvent<UnknownContext>) => {\n const { context, callback, subscribe, select, target } = event;\n if (context !== this.context) return;\n\n event.stopPropagation();\n\n (target as HTMLElement).dispatchEvent(new ContextOnMountEvent(this.context));\n\n this.handleSubscriptionRequest({ select, callback, subscribe });\n };\n\n private onContextRequest = (event: ContextRequestEvent<UnknownContext>) => {\n const { context, callback } = event;\n if (context !== this.context) return;\n event.stopPropagation();\n callback(this);\n };\n\n private registerEvents = () => {\n this.host.addEventListener(ContextEventsTypes.SUBSCRIPTION_REQUEST, this.onSubscriptionRequest);\n this.host.addEventListener(ContextEventsTypes.CONTEXT_REQUEST, this.onContextRequest);\n };\n}\n",
18
18
  "import { ContextProvider } from '@/context/context-provider';\nimport type { UnknownContext } from '@/context/types';\nimport type { RadiantElement } from '@/core/radiant-element';\nimport type { AttributeTypeConstant } from '@/utils/attribute-utils';\n\ntype CreateContextOptions<T extends UnknownContext> = {\n context: T;\n initialValue?: T['__context__'];\n hydrate?: AttributeTypeConstant;\n};\n\n/**\n * A decorator to provide a context to the target element.\n * @param contextToProvide\n * @returns\n */\nexport function provideContext<T extends UnknownContext>({ context, initialValue, hydrate }: CreateContextOptions<T>) {\n return (proto: RadiantElement, propertyKey: string) => {\n const originalConnectedCallback = proto.connectedCallback;\n\n proto.connectedCallback = function (this: RadiantElement) {\n originalConnectedCallback.call(this);\n (this as any)[propertyKey] = new ContextProvider<T>(this, { context, initialValue, hydrate });\n this.connectedContextCallback(context);\n };\n };\n}\n",
19
19
  "import { ContextRequestEvent } from '@/context/events';\nimport type { UnknownContext } from '@/context/types';\nimport type { RadiantElement } from '@/core/radiant-element';\n\n/**\n * A decorator to provide a context to the target element.\n * @param contextToProvide\n * @returns\n */\nexport function consumeContext(contextToProvide: UnknownContext) {\n return (proto: RadiantElement, propertyKey: string) => {\n const originalConnectedCallback = proto.connectedCallback;\n\n proto.connectedCallback = function (this: RadiantElement) {\n originalConnectedCallback.call(this);\n this.dispatchEvent(\n new ContextRequestEvent(contextToProvide, (context) => {\n (this as any)[propertyKey] = context;\n this.connectedContextCallback(contextToProvide);\n }),\n );\n };\n };\n}\n",
20
20
  "import { ContextSubscriptionRequestEvent } from '@/context/events';\nimport type { Context, ContextType, UnknownContext } from '@/context/types';\nimport type { RadiantElement } from '@/core/radiant-element';\n\ntype ArgsType<T extends UnknownContext> = SubscribeToContextOptions<T>['select'] extends (...args: any[]) => infer R\n ? R\n : ContextType<T>;\n\ntype SubscribeToContextOptions<T extends UnknownContext> = {\n context: T;\n select?: (context: T['__context__']) => unknown;\n subscribe?: boolean;\n};\n/**\n * A decorator to subscribe to a context selector.\n * @param context The context to subscribe to.\n * @param selector The selector to subscribe to. If not provided, the whole context will be subscribed to.\n * @param subscribe @default true Whether to subscribe or unsubscribe. Optional.\n * @returns\n */\nexport function contextSelector<T extends Context<unknown, unknown>>({\n context,\n select,\n subscribe = true,\n}: SubscribeToContextOptions<T>) {\n return (proto: RadiantElement, _: string, descriptor: PropertyDescriptor) => {\n const originalMethod = descriptor.value;\n const originalConnectedCallback = proto.connectedCallback;\n\n proto.connectedCallback = function (this: RadiantElement) {\n originalConnectedCallback.call(this);\n this.dispatchEvent(new ContextSubscriptionRequestEvent(context, originalMethod.bind(this), select, subscribe));\n };\n\n descriptor.value = function (...args: ArgsType<T>[]) {\n const result = originalMethod.apply(this, args);\n return result;\n };\n\n return descriptor;\n };\n}\n",
21
21
  "import type { RadiantElement, RenderInsertPosition } from '@/core/radiant-element';\n\ntype Constructor<T> = new (...args: any[]) => T;\n\ntype WithKitaRenderTemplateProps = {\n target: HTMLElement;\n template: JSX.Element | string;\n insert?: RenderInsertPosition;\n};\n\ninterface WithKitaMixin {\n renderTemplate: (props: WithKitaRenderTemplateProps) => Promise<void>;\n}\n\n/**\n * A mixin that provides a method to render a JSX template into an HTMLElement.\n */\nexport function WithKita<T extends Constructor<RadiantElement>>(Base: T): T & Constructor<WithKitaMixin> {\n return class extends Base implements WithKitaMixin {\n override async renderTemplate({ target = this, template, insert = 'replace' }: WithKitaRenderTemplateProps) {\n const safeTemplate = typeof template !== 'string' ? template.toString() : template;\n switch (insert) {\n case 'replace':\n target.innerHTML = safeTemplate;\n break;\n case 'beforeend':\n target.insertAdjacentHTML('beforeend', safeTemplate);\n break;\n case 'afterbegin':\n target.insertAdjacentHTML('afterbegin', safeTemplate);\n break;\n }\n }\n } as T & Constructor<WithKitaMixin>;\n}\n",
22
- "/**\n * Converts the given value to a JSON string representation.\n * This can be very handy for passing complex objects as attributes.\n *\n * @param value - The value to be converted.\n * @returns The JSON string representation of the value.\n * @template T - The type of the value.\n *\n * @example <my-app class=\"radiant-todo\" hydrate-context={stringifyAttribute<MyType>(context)}>\n */\nexport function stringifyAttribute<T>(value: T): T {\n return JSON.stringify(value) as unknown as T;\n}\n"
22
+ "/**\n * Converts the given value to a JSON string representation or maintains the type based on the generic parameter.\n *\n * @param value - The value to be converted.\n * @returns The JSON string representation of the value or the value itself.\n * @template T - The type of the value.\n * @template R - The return type, defaults to T.\n *\n * @example\n * // For JSON string representation\n * <script type=\"application/json\" data-hydration>\n * {stringifyTyped<Partial<MyContext>, string>({ value: 'Hello World' })}\n * </script>\n *\n * // For maintaining the type\n * <my-app my-complex-attribute={stringifyTyped<MyType>(myData)}> // myData is of type MyType\n */\nexport function stringifyTyped<T, R = T>(value: T): R extends string ? string : T {\n return JSON.stringify(value) as unknown as R extends string ? string : T;\n}\n"
23
23
  ],
24
- "mappings": "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",
25
- "debugId": "9F8C73D65206CDB164756E2164756E21",
24
+ "mappings": "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",
25
+ "debugId": "939C4DFAA83EB14964756E2164756E21",
26
26
  "names": []
27
27
  }
@@ -1,2 +1,2 @@
1
- export * from './stringify-attribute';
1
+ export * from './stringify-typed';
2
2
  export * from './event-emitter';
@@ -17,13 +17,13 @@ class EventEmitter {
17
17
  }
18
18
  }
19
19
 
20
- // src/tools/stringify-attribute.ts
21
- function stringifyAttribute(value) {
20
+ // src/tools/stringify-typed.ts
21
+ function stringifyTyped(value) {
22
22
  return JSON.stringify(value);
23
23
  }
24
24
  export {
25
- stringifyAttribute,
25
+ stringifyTyped,
26
26
  EventEmitter
27
27
  };
28
28
 
29
- //# debugId=AC021311C8305C0D64756E2164756E21
29
+ //# debugId=A516128E55704E8064756E2164756E21
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/tools/event-emitter.ts", "../src/tools/stringify-attribute.ts"],
3
+ "sources": ["../src/tools/event-emitter.ts", "../src/tools/stringify-typed.ts"],
4
4
  "sourcesContent": [
5
5
  "import type { RadiantElement } from '..';\n\nexport interface EventEmitterConfig {\n name: string;\n bubbles?: boolean;\n cancelable?: boolean;\n composed?: boolean;\n}\n\n/**\n * A generic event emitter class that allows emitting custom events.\n *\n * @template T - The type of the event detail.\n */\nexport class EventEmitter<T = unknown> {\n private host: RadiantElement;\n private eventConfig: EventEmitterConfig;\n\n /**\n * Constructs a new instance of the EventEmitter class.\n *\n * @param host - The host element on which the events will be dispatched.\n * @param eventConfig - The configuration for the event.\n */\n constructor(host: RadiantElement, eventConfig: EventEmitterConfig) {\n this.host = host;\n this.eventConfig = eventConfig;\n }\n\n /**\n * Emits a custom event with the specified detail.\n *\n * @param detail - The detail object to be passed along with the event.\n */\n emit(detail?: T) {\n const event = new CustomEvent(this.eventConfig.name, {\n detail: detail,\n bubbles: this.eventConfig.bubbles,\n cancelable: this.eventConfig.cancelable,\n composed: this.eventConfig.composed,\n });\n this.host.dispatchEvent(event);\n }\n}\n",
6
- "/**\n * Converts the given value to a JSON string representation.\n * This can be very handy for passing complex objects as attributes.\n *\n * @param value - The value to be converted.\n * @returns The JSON string representation of the value.\n * @template T - The type of the value.\n *\n * @example <my-app class=\"radiant-todo\" hydrate-context={stringifyAttribute<MyType>(context)}>\n */\nexport function stringifyAttribute<T>(value: T): T {\n return JSON.stringify(value) as unknown as T;\n}\n"
6
+ "/**\n * Converts the given value to a JSON string representation or maintains the type based on the generic parameter.\n *\n * @param value - The value to be converted.\n * @returns The JSON string representation of the value or the value itself.\n * @template T - The type of the value.\n * @template R - The return type, defaults to T.\n *\n * @example\n * // For JSON string representation\n * <script type=\"application/json\" data-hydration>\n * {stringifyTyped<Partial<MyContext>, string>({ value: 'Hello World' })}\n * </script>\n *\n * // For maintaining the type\n * <my-app my-complex-attribute={stringifyTyped<MyType>(myData)}> // myData is of type MyType\n */\nexport function stringifyTyped<T, R = T>(value: T): R extends string ? string : T {\n return JSON.stringify(value) as unknown as R extends string ? string : T;\n}\n"
7
7
  ],
8
- "mappings": ";AAcO,MAAM,aAA0B;AAAA,EAC7B;AAAA,EACA;AAAA,EAQR,WAAW,CAAC,MAAsB,aAAiC;AACjE,SAAK,OAAO;AACZ,SAAK,cAAc;AAAA;AAAA,EAQrB,IAAI,CAAC,QAAY;AACf,UAAM,QAAQ,IAAI,YAAY,KAAK,YAAY,MAAM;AAAA,MACnD;AAAA,MACA,SAAS,KAAK,YAAY;AAAA,MAC1B,YAAY,KAAK,YAAY;AAAA,MAC7B,UAAU,KAAK,YAAY;AAAA,IAC7B,CAAC;AACD,SAAK,KAAK,cAAc,KAAK;AAAA;AAEjC;;;ACjCO,SAAS,kBAAqB,CAAC,OAAa;AACjD,SAAO,KAAK,UAAU,KAAK;AAAA;",
9
- "debugId": "AC021311C8305C0D64756E2164756E21",
8
+ "mappings": ";AAcO,MAAM,aAA0B;AAAA,EAC7B;AAAA,EACA;AAAA,EAQR,WAAW,CAAC,MAAsB,aAAiC;AACjE,SAAK,OAAO;AACZ,SAAK,cAAc;AAAA;AAAA,EAQrB,IAAI,CAAC,QAAY;AACf,UAAM,QAAQ,IAAI,YAAY,KAAK,YAAY,MAAM;AAAA,MACnD;AAAA,MACA,SAAS,KAAK,YAAY;AAAA,MAC1B,YAAY,KAAK,YAAY;AAAA,MAC7B,UAAU,KAAK,YAAY;AAAA,IAC7B,CAAC;AACD,SAAK,KAAK,cAAc,KAAK;AAAA;AAEjC;;;AC1BO,SAAS,cAAwB,CAAC,OAAyC;AAChF,SAAO,KAAK,UAAU,KAAK;AAAA;",
9
+ "debugId": "A516128E55704E8064756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Converts the given value to a JSON string representation or maintains the type based on the generic parameter.
3
+ *
4
+ * @param value - The value to be converted.
5
+ * @returns The JSON string representation of the value or the value itself.
6
+ * @template T - The type of the value.
7
+ * @template R - The return type, defaults to T.
8
+ *
9
+ * @example
10
+ * // For JSON string representation
11
+ * <script type="application/json" data-hydration>
12
+ * {stringifyTyped<Partial<MyContext>, string>({ value: 'Hello World' })}
13
+ * </script>
14
+ *
15
+ * // For maintaining the type
16
+ * <my-app my-complex-attribute={stringifyTyped<MyType>(myData)}> // myData is of type MyType
17
+ */
18
+ export declare function stringifyTyped<T, R = T>(value: T): R extends string ? string : T;
@@ -0,0 +1,9 @@
1
+ // src/tools/stringify-typed.ts
2
+ function stringifyTyped(value) {
3
+ return JSON.stringify(value);
4
+ }
5
+ export {
6
+ stringifyTyped
7
+ };
8
+
9
+ //# debugId=4776E3D8D4175B4F64756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/tools/stringify-typed.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Converts the given value to a JSON string representation or maintains the type based on the generic parameter.\n *\n * @param value - The value to be converted.\n * @returns The JSON string representation of the value or the value itself.\n * @template T - The type of the value.\n * @template R - The return type, defaults to T.\n *\n * @example\n * // For JSON string representation\n * <script type=\"application/json\" data-hydration>\n * {stringifyTyped<Partial<MyContext>, string>({ value: 'Hello World' })}\n * </script>\n *\n * // For maintaining the type\n * <my-app my-complex-attribute={stringifyTyped<MyType>(myData)}> // myData is of type MyType\n */\nexport function stringifyTyped<T, R = T>(value: T): R extends string ? string : T {\n return JSON.stringify(value) as unknown as R extends string ? string : T;\n}\n"
6
+ ],
7
+ "mappings": ";AAiBO,SAAS,cAAwB,CAAC,OAAyC;AAChF,SAAO,KAAK,UAAU,KAAK;AAAA;",
8
+ "debugId": "4776E3D8D4175B4F64756E2164756E21",
9
+ "names": []
10
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ecopages/radiant",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/ecopages/radiant.git"
@@ -75,6 +75,10 @@
75
75
  "types": "./dist/core/radiant-element.d.ts",
76
76
  "import": "./dist/core/radiant-element.js"
77
77
  },
78
+ "./decorators/bound": {
79
+ "types": "./dist/decorators/bound.d.ts",
80
+ "import": "./dist/decorators/bound.js"
81
+ },
78
82
  "./decorators/custom-element": {
79
83
  "types": "./dist/decorators/custom-element.d.ts",
80
84
  "import": "./dist/decorators/custom-element.js"
@@ -111,9 +115,9 @@
111
115
  "types": "./dist/mixins/with-kita.d.ts",
112
116
  "import": "./dist/mixins/with-kita.js"
113
117
  },
114
- "./tools/stringify-attribute": {
115
- "types": "./dist/tools/stringify-attribute.d.ts",
116
- "import": "./dist/tools/stringify-attribute.js"
118
+ "./tools/stringify-typed": {
119
+ "types": "./dist/tools/stringify-typed.d.ts",
120
+ "import": "./dist/tools/stringify-typed.js"
117
121
  },
118
122
  "./tools/event-emitter": {
119
123
  "types": "./dist/tools/event-emitter.d.ts",
@@ -1,11 +0,0 @@
1
- /**
2
- * Converts the given value to a JSON string representation.
3
- * This can be very handy for passing complex objects as attributes.
4
- *
5
- * @param value - The value to be converted.
6
- * @returns The JSON string representation of the value.
7
- * @template T - The type of the value.
8
- *
9
- * @example <my-app class="radiant-todo" hydrate-context={stringifyAttribute<MyType>(context)}>
10
- */
11
- export declare function stringifyAttribute<T>(value: T): T;
@@ -1,9 +0,0 @@
1
- // src/tools/stringify-attribute.ts
2
- function stringifyAttribute(value) {
3
- return JSON.stringify(value);
4
- }
5
- export {
6
- stringifyAttribute
7
- };
8
-
9
- //# debugId=D048CAC03A51E99A64756E2164756E21
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/tools/stringify-attribute.ts"],
4
- "sourcesContent": [
5
- "/**\n * Converts the given value to a JSON string representation.\n * This can be very handy for passing complex objects as attributes.\n *\n * @param value - The value to be converted.\n * @returns The JSON string representation of the value.\n * @template T - The type of the value.\n *\n * @example <my-app class=\"radiant-todo\" hydrate-context={stringifyAttribute<MyType>(context)}>\n */\nexport function stringifyAttribute<T>(value: T): T {\n return JSON.stringify(value) as unknown as T;\n}\n"
6
- ],
7
- "mappings": ";AAUO,SAAS,kBAAqB,CAAC,OAAa;AACjD,SAAO,KAAK,UAAU,KAAK;AAAA;",
8
- "debugId": "D048CAC03A51E99A64756E2164756E21",
9
- "names": []
10
- }