@pie-players/pie-context 0.3.42 → 0.3.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/consumer.d.ts +0 -1
- package/dist/consumer.js.map +1 -1
- package/dist/events.d.ts +0 -1
- package/dist/events.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js.map +1 -1
- package/dist/provider.d.ts +0 -1
- package/dist/provider.js.map +1 -1
- package/dist/root.d.ts +0 -1
- package/dist/root.js.map +1 -1
- package/dist/types.d.ts +0 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/dist/consumer.d.ts.map +0 -1
- package/dist/events.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/provider.d.ts.map +0 -1
- package/dist/root.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
package/dist/consumer.d.ts
CHANGED
|
@@ -21,4 +21,3 @@ export declare class ContextConsumer<T extends UnknownContext> {
|
|
|
21
21
|
}
|
|
22
22
|
export declare const consumeContext: <T extends UnknownContext>(host: Element, options: ContextConsumerOptions<T>) => ContextConsumer<T>;
|
|
23
23
|
export declare const requestContext: <T extends UnknownContext>(host: Element, context: T) => ContextType<T> | undefined;
|
|
24
|
-
//# sourceMappingURL=consumer.d.ts.map
|
package/dist/consumer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumer.js","sourceRoot":"","sources":["../src/consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AASlD,MAAM,OAAO,eAAe;IACV,IAAI,CAAU;IACd,OAAO,CAAI;IACX,SAAS,CAAU;IACnB,OAAO,CAAmC;IACnD,WAAW,GAAG,KAAK,CAAC;IACpB,WAAW,CAAc;IACzB,YAAY,CAAkB;IAEtC,YAAmB,IAAa,EAAE,OAAkC;QACnE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,CAAC;IAEM,OAAO;QACb,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,YAAY,EAAE,CAAC;IACrB,CAAC;IAEM,UAAU;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAC9B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,IAAW,KAAK;QACf,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAEgB,WAAW,GAAG,CAC9B,KAAqB,EACrB,WAAwB,EACjB,EAAE;QACT,IAAI,WAAW,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;YACtC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC;IAEK,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,aAAa,CACtB,IAAI,mBAAmB,CACtB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,CACd,CACD,CAAC;IACH,CAAC;CACD;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAC7B,IAAa,EACb,OAAkC,EACb,EAAE,CAAC,IAAI,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,CAC7B,IAAa,EACb,OAAU,EACmB,EAAE;IAC/B,IAAI,KAAiC,CAAC;IACtC,IAAI,CAAC,aAAa,CACjB,IAAI,mBAAmB,CACtB,OAAO,EACP,IAAI,EACJ,CAAC,SAAS,EAAE,EAAE;QACb,KAAK,GAAG,SAAS,CAAC;IACnB,CAAC,EACD,KAAK,CACL,CACD,CAAC;IACF,OAAO,KAAK,CAAC;AACd,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"consumer.js","sourceRoot":"","sources":["../src/consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AASlD,MAAM,OAAO,eAAe;IACV,IAAI,CAAU;IACd,OAAO,CAAI;IACX,SAAS,CAAU;IACnB,OAAO,CAAmC;IACnD,WAAW,GAAG,KAAK,CAAC;IACpB,WAAW,CAAc;IACzB,YAAY,CAAkB;IAEtC,YAAmB,IAAa,EAAE,OAAkC;QACnE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,CAAC;IAEM,OAAO;QACb,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,YAAY,EAAE,CAAC;IACrB,CAAC;IAEM,UAAU;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAC9B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,IAAW,KAAK;QACf,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAEgB,WAAW,GAAG,CAC9B,KAAqB,EACrB,WAAwB,EACjB,EAAE;QACT,IAAI,WAAW,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;YACtC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC;IAEK,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,aAAa,CACtB,IAAI,mBAAmB,CACtB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,CACd,CACD,CAAC;IACH,CAAC;CACD;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAC7B,IAAa,EACb,OAAkC,EACb,EAAE,CAAC,IAAI,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,CAC7B,IAAa,EACb,OAAU,EACmB,EAAE;IAC/B,IAAI,KAAiC,CAAC;IACtC,IAAI,CAAC,aAAa,CACjB,IAAI,mBAAmB,CACtB,OAAO,EACP,IAAI,EACJ,CAAC,SAAS,EAAE,EAAE;QACb,KAAK,GAAG,SAAS,CAAC;IACnB,CAAC,EACD,KAAK,CACL,CACD,CAAC;IACF,OAAO,KAAK,CAAC;AACd,CAAC,CAAC","sourcesContent":["import { ContextRequestEvent } from \"./events.js\";\nimport type { ContextType, UnknownContext } from \"./types.js\";\n\nexport interface ContextConsumerOptions<T extends UnknownContext> {\n\tcontext: T;\n\tsubscribe?: boolean;\n\tonValue?: (value: ContextType<T>) => void;\n}\n\nexport class ContextConsumer<T extends UnknownContext> {\n\tprivate readonly host: Element;\n\tprivate readonly context: T;\n\tprivate readonly subscribe: boolean;\n\tprivate readonly onValue?: (value: ContextType<T>) => void;\n\tprivate isConnected = false;\n\tprivate unsubscribe?: () => void;\n\tprivate currentValue?: ContextType<T>;\n\n\tpublic constructor(host: Element, options: ContextConsumerOptions<T>) {\n\t\tthis.host = host;\n\t\tthis.context = options.context;\n\t\tthis.subscribe = options.subscribe ?? true;\n\t\tthis.onValue = options.onValue;\n\t}\n\n\tpublic connect(): void {\n\t\tif (this.isConnected) return;\n\t\tthis.isConnected = true;\n\t\tthis.requestValue();\n\t}\n\n\tpublic disconnect(): void {\n\t\tif (!this.isConnected) return;\n\t\tthis.isConnected = false;\n\t\tthis.unsubscribe?.();\n\t\tthis.unsubscribe = undefined;\n\t}\n\n\tpublic get value(): ContextType<T> | undefined {\n\t\treturn this.currentValue;\n\t}\n\n\tprivate readonly handleValue = (\n\t\tvalue: ContextType<T>,\n\t\tunsubscribe?: () => void,\n\t): void => {\n\t\tif (unsubscribe !== this.unsubscribe) {\n\t\t\tthis.unsubscribe?.();\n\t\t\tthis.unsubscribe = unsubscribe;\n\t\t}\n\t\tif (!this.subscribe && this.unsubscribe) {\n\t\t\tthis.unsubscribe();\n\t\t\tthis.unsubscribe = undefined;\n\t\t}\n\t\tthis.currentValue = value;\n\t\tthis.onValue?.(value);\n\t};\n\n\tpublic requestValue(): void {\n\t\tthis.host.dispatchEvent(\n\t\t\tnew ContextRequestEvent(\n\t\t\t\tthis.context,\n\t\t\t\tthis.host,\n\t\t\t\tthis.handleValue,\n\t\t\t\tthis.subscribe,\n\t\t\t),\n\t\t);\n\t}\n}\n\nexport const consumeContext = <T extends UnknownContext>(\n\thost: Element,\n\toptions: ContextConsumerOptions<T>,\n): ContextConsumer<T> => new ContextConsumer(host, options);\n\nexport const requestContext = <T extends UnknownContext>(\n\thost: Element,\n\tcontext: T,\n): ContextType<T> | undefined => {\n\tlet value: ContextType<T> | undefined;\n\thost.dispatchEvent(\n\t\tnew ContextRequestEvent(\n\t\t\tcontext,\n\t\t\thost,\n\t\t\t(nextValue) => {\n\t\t\t\tvalue = nextValue;\n\t\t\t},\n\t\t\tfalse,\n\t\t),\n\t);\n\treturn value;\n};\n"]}
|
package/dist/events.d.ts
CHANGED
package/dist/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,mBAEX,SAAQ,KAAK;IACE,OAAO,CAAI;IACX,aAAa,CAAU;IACvB,QAAQ,CAAkC;IAC1C,SAAS,CAAW;IAEpC,YACC,OAAU,EACV,aAAsB,EACtB,QAAyC,EACzC,SAAmB;QAEnB,KAAK,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,KAAK,CAAC;IACrC,CAAC;CACD;AAED,MAAM,OAAO,oBAEX,SAAQ,KAAK;IACE,OAAO,CAAI;IACX,aAAa,CAAU;IAEvC,YAAmB,OAAU,EAAE,aAAsB;QACpD,KAAK,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACpC,CAAC;CACD"}
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,mBAEX,SAAQ,KAAK;IACE,OAAO,CAAI;IACX,aAAa,CAAU;IACvB,QAAQ,CAAkC;IAC1C,SAAS,CAAW;IAEpC,YACC,OAAU,EACV,aAAsB,EACtB,QAAyC,EACzC,SAAmB;QAEnB,KAAK,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,KAAK,CAAC;IACrC,CAAC;CACD;AAED,MAAM,OAAO,oBAEX,SAAQ,KAAK;IACE,OAAO,CAAI;IACX,aAAa,CAAU;IAEvC,YAAmB,OAAU,EAAE,aAAsB;QACpD,KAAK,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACpC,CAAC;CACD","sourcesContent":["import type {\n\tContextCallback,\n\tContextType,\n\tUnknownContext,\n} from \"./types.js\";\n\nexport class ContextRequestEvent<\n\tT extends UnknownContext = UnknownContext,\n> extends Event {\n\tpublic readonly context: T;\n\tpublic readonly contextTarget: Element;\n\tpublic readonly callback: ContextCallback<ContextType<T>>;\n\tpublic readonly subscribe?: boolean;\n\n\tpublic constructor(\n\t\tcontext: T,\n\t\tcontextTarget: Element,\n\t\tcallback: ContextCallback<ContextType<T>>,\n\t\tsubscribe?: boolean,\n\t) {\n\t\tsuper(\"context-request\", { bubbles: true, composed: true });\n\t\tthis.context = context;\n\t\tthis.contextTarget = contextTarget;\n\t\tthis.callback = callback;\n\t\tthis.subscribe = subscribe ?? false;\n\t}\n}\n\nexport class ContextProviderEvent<\n\tT extends UnknownContext = UnknownContext,\n> extends Event {\n\tpublic readonly context: T;\n\tpublic readonly contextTarget: Element;\n\n\tpublic constructor(context: T, contextTarget: Element) {\n\t\tsuper(\"context-provider\", { bubbles: true, composed: true });\n\t\tthis.context = context;\n\t\tthis.contextTarget = contextTarget;\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementEventMap {\n\t\t\"context-request\": ContextRequestEvent<UnknownContext>;\n\t\t\"context-provider\": ContextProviderEvent<UnknownContext>;\n\t}\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,4 +4,3 @@ export { provideContext, ContextProvider } from "./provider.js";
|
|
|
4
4
|
export { ContextRoot } from "./root.js";
|
|
5
5
|
export type { Context, ContextCallback, ContextType, UnknownContext, } from "./types.js";
|
|
6
6
|
export { createContext } from "./types.js";
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,cAAc,EACd,eAAe,EACf,cAAc,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAOxC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,cAAc,EACd,eAAe,EACf,cAAc,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAOxC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC","sourcesContent":["export {\n\tContextProviderEvent,\n\tContextRequestEvent,\n} from \"./events.js\";\nexport {\n\tconsumeContext,\n\tContextConsumer,\n\trequestContext,\n} from \"./consumer.js\";\nexport { provideContext, ContextProvider } from \"./provider.js\";\nexport { ContextRoot } from \"./root.js\";\nexport type {\n\tContext,\n\tContextCallback,\n\tContextType,\n\tUnknownContext,\n} from \"./types.js\";\nexport { createContext } from \"./types.js\";\n"]}
|
package/dist/provider.d.ts
CHANGED
|
@@ -20,4 +20,3 @@ export declare class ContextProvider<T extends UnknownContext> {
|
|
|
20
20
|
private notifySubscribers;
|
|
21
21
|
}
|
|
22
22
|
export declare const provideContext: <T extends UnknownContext>(host: Element, options: ContextProviderOptions<T>) => ContextProvider<T>;
|
|
23
|
-
//# sourceMappingURL=provider.d.ts.map
|
package/dist/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { ContextProviderEvent, ContextRequestEvent } from \"./events.js\";\nimport type { ContextType, UnknownContext } from \"./types.js\";\n\ninterface Subscription<ValueType> {\n\tconsumerHost: Element;\n\tcallback: (value: ValueType, unsubscribe?: () => void) => void;\n\tunsubscribe: () => void;\n}\n\nexport interface ContextProviderOptions<T extends UnknownContext> {\n\tcontext: T;\n\tinitialValue: ContextType<T>;\n}\n\nexport class ContextProvider<T extends UnknownContext> {\n\tprivate readonly host: Element;\n\tprivate readonly context: T;\n\tprivate currentValue: ContextType<T>;\n\tprivate readonly subscriptions = new Map<\n\t\t(value: ContextType<T>, unsubscribe?: () => void) => void,\n\t\tSubscription<ContextType<T>>\n\t>();\n\tprivate isConnected = false;\n\n\tpublic constructor(host: Element, options: ContextProviderOptions<T>) {\n\t\tthis.host = host;\n\t\tthis.context = options.context;\n\t\tthis.currentValue = options.initialValue;\n\t}\n\n\tpublic connect(): void {\n\t\tif (this.isConnected) return;\n\t\tthis.isConnected = true;\n\t\tthis.host.addEventListener(\n\t\t\t\"context-request\",\n\t\t\tthis.handleContextRequest as EventListener,\n\t\t);\n\t\tthis.host.addEventListener(\n\t\t\t\"context-provider\",\n\t\t\tthis.handleContextProvider as EventListener,\n\t\t);\n\t\tthis.host.dispatchEvent(new ContextProviderEvent(this.context, this.host));\n\t}\n\n\tpublic disconnect(): void {\n\t\tif (!this.isConnected) return;\n\t\tthis.isConnected = false;\n\t\tthis.host.removeEventListener(\n\t\t\t\"context-request\",\n\t\t\tthis.handleContextRequest as EventListener,\n\t\t);\n\t\tthis.host.removeEventListener(\n\t\t\t\"context-provider\",\n\t\t\tthis.handleContextProvider as EventListener,\n\t\t);\n\t\tthis.subscriptions.clear();\n\t}\n\n\tpublic setValue(value: ContextType<T>, force = false): void {\n\t\tif (!force && Object.is(this.currentValue, value)) return;\n\t\tthis.currentValue = value;\n\t\tthis.notifySubscribers();\n\t}\n\n\tpublic get value(): ContextType<T> {\n\t\treturn this.currentValue;\n\t}\n\n\tprivate getContextTarget(event: Event, fallback: Element): Element {\n\t\tif (\"contextTarget\" in event && event.contextTarget) {\n\t\t\treturn event.contextTarget as Element;\n\t\t}\n\t\tconst path =\n\t\t\ttypeof event.composedPath === \"function\" ? event.composedPath() : [];\n\t\tconst firstPathTarget = path[0];\n\t\treturn firstPathTarget ? (firstPathTarget as Element) : fallback;\n\t}\n\n\tprivate readonly handleContextRequest = (event: ContextRequestEvent) => {\n\t\tif (event.context !== this.context) return;\n\t\tconst consumerHost = this.getContextTarget(event, this.host);\n\t\tif (consumerHost === this.host) return;\n\n\t\t// Closest provider wins for this context key.\n\t\tevent.stopPropagation();\n\n\t\tif (!event.subscribe) {\n\t\t\tevent.callback(this.currentValue);\n\t\t\treturn;\n\t\t}\n\n\t\tconst existing = this.subscriptions.get(event.callback);\n\t\texisting?.unsubscribe();\n\n\t\tconst unsubscribe = () => {\n\t\t\tthis.subscriptions.delete(event.callback);\n\t\t};\n\n\t\tthis.subscriptions.set(event.callback, {\n\t\t\tconsumerHost,\n\t\t\tcallback: event.callback,\n\t\t\tunsubscribe,\n\t\t});\n\t\tevent.callback(this.currentValue, unsubscribe);\n\t};\n\n\tprivate readonly handleContextProvider = (event: ContextProviderEvent) => {\n\t\tif (event.context !== this.context) return;\n\t\tconst providerHost = this.getContextTarget(event, this.host);\n\t\tif (providerHost === this.host) return;\n\n\t\t// A newly connected nested provider should take over matching consumers.\n\t\tconst seen = new Set<unknown>();\n\t\tfor (const [callback, { consumerHost }] of this.subscriptions) {\n\t\t\tif (seen.has(callback)) continue;\n\t\t\tseen.add(callback);\n\t\t\tconsumerHost.dispatchEvent(\n\t\t\t\tnew ContextRequestEvent(this.context, consumerHost, callback, true),\n\t\t\t);\n\t\t}\n\t\tevent.stopPropagation();\n\t};\n\n\tprivate notifySubscribers(): void {\n\t\tfor (const subscription of this.subscriptions.values()) {\n\t\t\tsubscription.callback(this.currentValue, subscription.unsubscribe);\n\t\t}\n\t}\n}\n\nexport const provideContext = <T extends UnknownContext>(\n\thost: Element,\n\toptions: ContextProviderOptions<T>,\n): ContextProvider<T> => new ContextProvider(host, options);\n"]}
|
package/dist/root.d.ts
CHANGED
package/dist/root.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root.js","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"root.js","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype ContextProviderEvent,\n\tContextRequestEvent,\n} from \"./events.js\";\nimport type { UnknownContext } from \"./types.js\";\n\ntype ContextCallback = (value: unknown, unsubscribe?: () => void) => void;\n\ninterface PendingRequest {\n\trequestorRef: WeakRef<Element>;\n\tcallbackRef: WeakRef<ContextCallback>;\n}\n\ninterface PendingContext {\n\tcallbacks: WeakMap<Element, WeakSet<ContextCallback>>;\n\trequests: PendingRequest[];\n}\n\nconst getLivePending = (pending: PendingRequest[]) => {\n\tconst requests: PendingRequest[] = [];\n\tfor (const entry of pending) {\n\t\tif (entry.requestorRef.deref() && entry.callbackRef.deref()) {\n\t\t\trequests.push(entry);\n\t\t}\n\t}\n\treturn requests;\n};\n\nexport class ContextRoot {\n\tprivate readonly host: Element;\n\tprivate readonly pendingByContext = new Map<UnknownContext, PendingContext>();\n\tprivate attached = false;\n\n\tpublic constructor(host: Element) {\n\t\tthis.host = host;\n\t}\n\n\tpublic attach(): void {\n\t\tif (this.attached) return;\n\t\tthis.attached = true;\n\t\tthis.host.addEventListener(\n\t\t\t\"context-request\",\n\t\t\tthis.onContextRequest as EventListener,\n\t\t);\n\t\tthis.host.addEventListener(\n\t\t\t\"context-provider\",\n\t\t\tthis.onContextProvider as EventListener,\n\t\t);\n\t}\n\n\tpublic detach(): void {\n\t\tif (!this.attached) return;\n\t\tthis.attached = false;\n\t\tthis.host.removeEventListener(\n\t\t\t\"context-request\",\n\t\t\tthis.onContextRequest as EventListener,\n\t\t);\n\t\tthis.host.removeEventListener(\n\t\t\t\"context-provider\",\n\t\t\tthis.onContextProvider as EventListener,\n\t\t);\n\t\tthis.pendingByContext.clear();\n\t}\n\n\tprivate readonly onContextRequest = (event: ContextRequestEvent) => {\n\t\tif (!event.subscribe) return;\n\n\t\tlet pending = this.pendingByContext.get(event.context);\n\t\tif (!pending) {\n\t\t\tpending = {\n\t\t\t\tcallbacks: new WeakMap<Element, WeakSet<ContextCallback>>(),\n\t\t\t\trequests: [],\n\t\t\t};\n\t\t\tthis.pendingByContext.set(event.context, pending);\n\t\t}\n\n\t\tconst requestor = event.contextTarget;\n\t\tconst callback = event.callback as ContextCallback;\n\t\tlet seenForRequestor = pending.callbacks.get(requestor);\n\t\tif (!seenForRequestor) {\n\t\t\tseenForRequestor = new WeakSet<ContextCallback>();\n\t\t\tpending.callbacks.set(requestor, seenForRequestor);\n\t\t}\n\t\tif (seenForRequestor.has(callback)) return;\n\n\t\tseenForRequestor.add(callback);\n\t\tpending.requests.push({\n\t\t\trequestorRef: new WeakRef(requestor),\n\t\t\tcallbackRef: new WeakRef(callback),\n\t\t});\n\t\tpending.requests = getLivePending(pending.requests);\n\t};\n\n\tprivate readonly onContextProvider = (event: ContextProviderEvent) => {\n\t\tconst pending = this.pendingByContext.get(event.context);\n\t\tif (!pending || pending.requests.length === 0) return;\n\n\t\tthis.pendingByContext.delete(event.context);\n\t\tfor (const entry of pending.requests) {\n\t\t\tconst requestor = entry.requestorRef.deref();\n\t\t\tconst callback = entry.callbackRef.deref();\n\t\t\tif (!requestor || !callback) continue;\n\t\t\trequestor.dispatchEvent(\n\t\t\t\tnew ContextRequestEvent(event.context, requestor, callback, true),\n\t\t\t);\n\t\t}\n\t};\n}\n"]}
|
package/dist/types.d.ts
CHANGED
|
@@ -5,4 +5,3 @@ export type UnknownContext = Context<unknown, unknown>;
|
|
|
5
5
|
export type ContextType<T extends UnknownContext> = T extends Context<infer _K, infer V> ? V : never;
|
|
6
6
|
export type ContextCallback<ValueType> = (value: ValueType, unsubscribe?: () => void) => void;
|
|
7
7
|
export declare const createContext: <ValueType, KeyType = unknown>(key: KeyType) => Context<KeyType, ValueType>;
|
|
8
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,aAAa,GAAG,CAA+B,GAAY,EAAE,EAAE,CAC3E,GAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,aAAa,GAAG,CAA+B,GAAY,EAAE,EAAE,CAC3E,GAAkC,CAAC","sourcesContent":["export type Context<KeyType, ValueType> = KeyType & { __context__: ValueType };\n\nexport type UnknownContext = Context<unknown, unknown>;\n\nexport type ContextType<T extends UnknownContext> =\n\tT extends Context<infer _K, infer V> ? V : never;\n\nexport type ContextCallback<ValueType> = (\n\tvalue: ValueType,\n\tunsubscribe?: () => void,\n) => void;\n\nexport const createContext = <ValueType, KeyType = unknown>(key: KeyType) =>\n\tkey as Context<KeyType, ValueType>;\n"]}
|
package/package.json
CHANGED
package/dist/consumer.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../src/consumer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,cAAc;IAC/D,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CAC1C;AAED,qBAAa,eAAe,CAAC,CAAC,SAAS,cAAc;IACpD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAI;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAkC;IAC3D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAa;IACjC,OAAO,CAAC,YAAY,CAAC,CAAiB;gBAEnB,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAO7D,OAAO,IAAI,IAAI;IAMf,UAAU,IAAI,IAAI;IAOzB,IAAW,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAE7C;IAED,OAAO,CAAC,QAAQ,CAAC,WAAW,CAc1B;IAEK,YAAY,IAAI,IAAI;CAU3B;AAED,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,cAAc,EACtD,MAAM,OAAO,EACb,SAAS,sBAAsB,CAAC,CAAC,CAAC,KAChC,eAAe,CAAC,CAAC,CAAuC,CAAC;AAE5D,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,cAAc,EACtD,MAAM,OAAO,EACb,SAAS,CAAC,KACR,WAAW,CAAC,CAAC,CAAC,GAAG,SAanB,CAAC"}
|
package/dist/events.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,eAAe,EACf,WAAW,EACX,cAAc,EACd,MAAM,YAAY,CAAC;AAEpB,qBAAa,mBAAmB,CAC/B,CAAC,SAAS,cAAc,GAAG,cAAc,CACxC,SAAQ,KAAK;IACd,SAAgB,OAAO,EAAE,CAAC,CAAC;IAC3B,SAAgB,aAAa,EAAE,OAAO,CAAC;IACvC,SAAgB,QAAQ,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,SAAgB,SAAS,CAAC,EAAE,OAAO,CAAC;gBAGnC,OAAO,EAAE,CAAC,EACV,aAAa,EAAE,OAAO,EACtB,QAAQ,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EACzC,SAAS,CAAC,EAAE,OAAO;CAQpB;AAED,qBAAa,oBAAoB,CAChC,CAAC,SAAS,cAAc,GAAG,cAAc,CACxC,SAAQ,KAAK;IACd,SAAgB,OAAO,EAAE,CAAC,CAAC;IAC3B,SAAgB,aAAa,EAAE,OAAO,CAAC;gBAEpB,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,OAAO;CAKrD;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,mBAAmB;QAC5B,iBAAiB,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC;QACvD,kBAAkB,EAAE,oBAAoB,CAAC,cAAc,CAAC,CAAC;KACzD;CACD"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,cAAc,EACd,eAAe,EACf,cAAc,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,YAAY,EACX,OAAO,EACP,eAAe,EACf,WAAW,EACX,cAAc,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/provider.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAQ9D,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,cAAc;IAC/D,OAAO,EAAE,CAAC,CAAC;IACX,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;CAC7B;AAED,qBAAa,eAAe,CAAC,CAAC,SAAS,cAAc;IACpD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAI;IAC5B,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAG1B;IACJ,OAAO,CAAC,WAAW,CAAS;gBAET,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAM7D,OAAO,IAAI,IAAI;IAcf,UAAU,IAAI,IAAI;IAclB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,UAAQ,GAAG,IAAI;IAM3D,IAAW,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAEjC;IAED,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CA0BnC;IAEF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAepC;IAEF,OAAO,CAAC,iBAAiB;CAKzB;AAED,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,cAAc,EACtD,MAAM,OAAO,EACb,SAAS,sBAAsB,CAAC,CAAC,CAAC,KAChC,eAAe,CAAC,CAAC,CAAuC,CAAC"}
|
package/dist/root.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"AA4BA,qBAAa,WAAW;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6C;IAC9E,OAAO,CAAC,QAAQ,CAAS;gBAEN,IAAI,EAAE,OAAO;IAIzB,MAAM,IAAI,IAAI;IAad,MAAM,IAAI,IAAI;IAcrB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CA2B/B;IAEF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAahC;CACF"}
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,CAAC,OAAO,EAAE,SAAS,IAAI,OAAO,GAAG;IAAE,WAAW,EAAE,SAAS,CAAA;CAAE,CAAC;AAE/E,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAEvD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,cAAc,IAC/C,CAAC,SAAS,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAElD,MAAM,MAAM,eAAe,CAAC,SAAS,IAAI,CACxC,KAAK,EAAE,SAAS,EAChB,WAAW,CAAC,EAAE,MAAM,IAAI,KACpB,IAAI,CAAC;AAEV,eAAO,MAAM,aAAa,GAAI,SAAS,EAAE,OAAO,GAAG,OAAO,EAAE,KAAK,OAAO,KAChE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC"}
|