@pie-players/pie-context 0.3.47 → 0.3.48
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/events.js.map +1 -1
- package/dist/root.js +1 -1
- package/dist/root.js.map +1 -1
- package/package.json +1 -1
package/dist/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAEA,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 { ContextCallback, ContextType, UnknownContext } 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/root.js
CHANGED
package/dist/root.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root.js","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"root.js","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"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","sourcesContent":["import { type ContextProviderEvent, ContextRequestEvent } 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"]}
|