@mittwald/flow-remote-elements 1.5.0-next.48 → 1.5.0-next.49
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.
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import { eventHandlerContext } from "@mittwald/flow-react-components";
|
|
2
1
|
import { RemoteElement, RemoteEvent } from "@mittwald/flow-remote-core";
|
|
3
2
|
//#region src/lib/FlowRemoteElement.ts
|
|
3
|
+
var eventHandlerContextKey = Symbol.for("@mittwald/flow-remote-elements/eventHandlerContext");
|
|
4
|
+
var runInEventHandlerContext = (type, fn) => {
|
|
5
|
+
const cascade = globalThis[eventHandlerContextKey];
|
|
6
|
+
return cascade ? cascade.run({ remoteEvent: { type } }, fn) : fn();
|
|
7
|
+
};
|
|
4
8
|
var FlowRemoteElement = class FlowRemoteElement extends RemoteElement {
|
|
5
9
|
eventListenerMap = /* @__PURE__ */ new Map();
|
|
6
10
|
/**
|
|
@@ -19,7 +23,7 @@ var FlowRemoteElement = class FlowRemoteElement extends RemoteElement {
|
|
|
19
23
|
}
|
|
20
24
|
addEventListener(type, listener, options) {
|
|
21
25
|
const handleEvent = listener ? "handleEvent" in listener ? listener.handleEvent : listener : () => void 0;
|
|
22
|
-
const handleRemoteEvent = (event) =>
|
|
26
|
+
const handleRemoteEvent = (event) => runInEventHandlerContext(event.type, () => handleEvent(event instanceof RemoteEvent ? event.detail : event));
|
|
23
27
|
this.eventListenerMap.set(listener, handleRemoteEvent);
|
|
24
28
|
return super.addEventListener(type, handleRemoteEvent, options);
|
|
25
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlowRemoteElement.mjs","names":[],"sources":["../../../src/lib/FlowRemoteElement.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"FlowRemoteElement.mjs","names":[],"sources":["../../../src/lib/FlowRemoteElement.ts"],"sourcesContent":["import {\n RemoteElement,\n RemoteEvent,\n type Version,\n} from \"@mittwald/flow-remote-core\";\nimport type { EmptyObject } from \"type-fest\";\n\n// eslint-disable-next-line\ntype ExplicitAny = any;\n\n/*\n * React Flow's `eventHandlerContext`, registered under this key by\n * `packages/components/src/lib/remote/eventHandlerContext.ts`. Read per event:\n * nothing orders this module after React Flow's. Absent without React Flow.\n */\nconst eventHandlerContextKey = Symbol.for(\n \"@mittwald/flow-remote-elements/eventHandlerContext\",\n);\n\ninterface EventHandlerCascade {\n run: <R>(value: { remoteEvent: { type: string } }, fn: () => R) => R;\n}\n\nconst runInEventHandlerContext = <R>(type: string, fn: () => R): R => {\n const cascade = (\n globalThis as Partial<\n Record<typeof eventHandlerContextKey, EventHandlerCascade>\n >\n )[eventHandlerContextKey];\n\n return cascade ? cascade.run({ remoteEvent: { type } }, fn) : fn();\n};\n\nexport class FlowRemoteElement<\n Properties extends Record<string, ExplicitAny> = EmptyObject,\n Methods extends Record<string, (...args: ExplicitAny[]) => void> =\n EmptyObject,\n Slots extends Record<string, ExplicitAny> = EmptyObject,\n EventListeners extends Record<string, ExplicitAny> = EmptyObject,\n> extends RemoteElement<Properties, Methods, Slots, EventListeners> {\n private eventListenerMap = new Map<\n EventListenerOrEventListenerObject,\n EventListenerOrEventListenerObject\n >();\n\n /**\n * This property is used to check if the host component has received its\n * remote props. If not, rendering the underlying component is skipped.\n */\n public static initializationPropertyName = \"data-flr-initialized\" as const;\n\n public static versionPropertyName = \"data-flr-version\" as const;\n\n static override get remoteProperties() {\n return {\n ...super.remoteAttributes,\n \"data-testid\": {},\n [FlowRemoteElement.initializationPropertyName]: {},\n [FlowRemoteElement.versionPropertyName]: {},\n };\n }\n\n public override addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): void {\n const handleEvent: EventListener = listener\n ? \"handleEvent\" in listener\n ? listener.handleEvent\n : listener\n : () => undefined;\n\n const handleRemoteEvent: EventListener = (event) =>\n runInEventHandlerContext(event.type, () =>\n handleEvent(event instanceof RemoteEvent ? event.detail : event),\n );\n\n this.eventListenerMap.set(listener, handleRemoteEvent);\n return super.addEventListener(type, handleRemoteEvent, options);\n }\n\n public override removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ) {\n const wrappedEventListener = this.eventListenerMap.get(listener);\n this.eventListenerMap.delete(listener);\n super.removeEventListener(type, wrappedEventListener ?? listener, options);\n }\n}\n\nexport interface FlowRemoteElementMetaData {\n [FlowRemoteElement.initializationPropertyName]?: boolean;\n [FlowRemoteElement.versionPropertyName]?: Version;\n}\n"],"mappings":";;AAeA,IAAM,yBAAyB,OAAO,IACpC,oDACF;AAMA,IAAM,4BAA+B,MAAc,OAAmB;CACpE,MAAM,UACJ,WAGA;CAEF,OAAO,UAAU,QAAQ,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,GAAG;AACnE;AAEA,IAAa,oBAAb,MAAa,0BAMH,cAA0D;CAClE,mCAA2B,IAAI,IAG7B;;;;;CAMF,OAAc,6BAA6B;CAE3C,OAAc,sBAAsB;CAEpC,WAAoB,mBAAmB;EACrC,OAAO;GACL,GAAG,MAAM;GACT,eAAe,CAAC;IACf,kBAAkB,6BAA6B,CAAC;IAChD,kBAAkB,sBAAsB,CAAC;EAC5C;CACF;CAEA,iBACE,MACA,UACA,SACM;EACN,MAAM,cAA6B,WAC/B,iBAAiB,WACf,SAAS,cACT,iBACI,KAAA;EAEV,MAAM,qBAAoC,UACxC,yBAAyB,MAAM,YAC7B,YAAY,iBAAiB,cAAc,MAAM,SAAS,KAAK,CACjE;EAEF,KAAK,iBAAiB,IAAI,UAAU,iBAAiB;EACrD,OAAO,MAAM,iBAAiB,MAAM,mBAAmB,OAAO;CAChE;CAEA,oBACE,MACA,UACA,SACA;EACA,MAAM,uBAAuB,KAAK,iBAAiB,IAAI,QAAQ;EAC/D,KAAK,iBAAiB,OAAO,QAAQ;EACrC,MAAM,oBAAoB,MAAM,wBAAwB,UAAU,OAAO;CAC3E;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mittwald/flow-remote-elements",
|
|
3
|
-
"version": "1.5.0-next.
|
|
3
|
+
"version": "1.5.0-next.49",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Flow compatible remote elements that can be used in a remote environment",
|
|
6
6
|
"homepage": "https://flow.mittwald.de",
|
|
@@ -28,14 +28,14 @@
|
|
|
28
28
|
"test:compile": "tsc --noEmit && tsc --noEmit -p tsconfig.vite.json"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@mittwald/flow-remote-core": "1.5.0-next.
|
|
31
|
+
"@mittwald/flow-remote-core": "1.5.0-next.49",
|
|
32
32
|
"remeda": "^2.43.0",
|
|
33
33
|
"type-fest": "^5.7.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@mittwald/flow-core": "1.5.0-next.
|
|
37
|
-
"@mittwald/flow-react-components": "1.5.0-next.
|
|
38
|
-
"@mittwald/typescript-config": "1.5.0-next.
|
|
36
|
+
"@mittwald/flow-core": "1.5.0-next.49",
|
|
37
|
+
"@mittwald/flow-react-components": "1.5.0-next.49",
|
|
38
|
+
"@mittwald/typescript-config": "1.5.0-next.49",
|
|
39
39
|
"@types/node": "^25.9.3",
|
|
40
40
|
"nx": "^22.7.5",
|
|
41
41
|
"rimraf": "^6.1.3",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"vite-plugin-externalize-deps": "^0.10.0"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
|
-
"@mittwald/flow-react-components": "1.5.0-next.
|
|
49
|
+
"@mittwald/flow-react-components": "1.5.0-next.49"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "5af9457a3e3dc275a9032ffec18e03fd87dba7d8"
|
|
52
52
|
}
|