@nookuio/iframe 0.9.6 → 0.9.7

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/constants.js CHANGED
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.VIRTUAL_VUE_SFC_RENDERER_PAGE_PATH = exports.IFRAME_SOURCE_NAME = exports.EDITOR_SOURCE_NAME = exports.EDITOR_PAGE_PATH = exports.COMPONENT_PREVIEW_PAGE_PATH = void 0;
7
- const EDITOR_PAGE_PATH = exports.EDITOR_PAGE_PATH = `/__nooku__/editor`;
8
- const COMPONENT_PREVIEW_PAGE_PATH = exports.COMPONENT_PREVIEW_PAGE_PATH = `/__nooku__/component-preview`;
9
- const VIRTUAL_VUE_SFC_RENDERER_PAGE_PATH = exports.VIRTUAL_VUE_SFC_RENDERER_PAGE_PATH = `/__nooku__/virtual-sfc-editor`;
10
- const IFRAME_SOURCE_NAME = exports.IFRAME_SOURCE_NAME = "nooku-frame";
11
- const EDITOR_SOURCE_NAME = exports.EDITOR_SOURCE_NAME = "nooku-editor";
7
+ const EDITOR_PAGE_PATH = exports.EDITOR_PAGE_PATH = "/__nooku__/editor",
8
+ COMPONENT_PREVIEW_PAGE_PATH = exports.COMPONENT_PREVIEW_PAGE_PATH = "/__nooku__/component-preview",
9
+ VIRTUAL_VUE_SFC_RENDERER_PAGE_PATH = exports.VIRTUAL_VUE_SFC_RENDERER_PAGE_PATH = "/__nooku__/virtual-sfc-editor",
10
+ IFRAME_SOURCE_NAME = exports.IFRAME_SOURCE_NAME = "nooku-frame",
11
+ EDITOR_SOURCE_NAME = exports.EDITOR_SOURCE_NAME = "nooku-editor";
@@ -1,5 +1 @@
1
- export const EDITOR_PAGE_PATH = `/__nooku__/editor`;
2
- export const COMPONENT_PREVIEW_PAGE_PATH = `/__nooku__/component-preview`;
3
- export const VIRTUAL_VUE_SFC_RENDERER_PAGE_PATH = `/__nooku__/virtual-sfc-editor`;
4
- export const IFRAME_SOURCE_NAME = "nooku-frame";
5
- export const EDITOR_SOURCE_NAME = "nooku-editor";
1
+ export const EDITOR_PAGE_PATH="/__nooku__/editor",COMPONENT_PREVIEW_PAGE_PATH="/__nooku__/component-preview",VIRTUAL_VUE_SFC_RENDERER_PAGE_PATH="/__nooku__/virtual-sfc-editor",IFRAME_SOURCE_NAME="nooku-frame",EDITOR_SOURCE_NAME="nooku-editor";
@@ -4,139 +4,115 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createClient = createClient;
7
- function createClient(localCtx, options) {
7
+ function createClient(y, l) {
8
8
  const {
9
- invoke,
10
- handle,
11
- emit,
12
- handleEvent,
13
- serialize: _serialize,
14
- deserialize: _deserialize
15
- } = options;
16
- function serialize(data) {
9
+ invoke: c,
10
+ handle: f,
11
+ emit: o,
12
+ handleEvent: d,
13
+ serialize: x,
14
+ deserialize: v
15
+ } = l;
16
+ function g(e) {
17
17
  try {
18
- return _serialize ? _serialize(data) : JSON.stringify(data);
18
+ return x ? x(e) : JSON.stringify(e);
19
19
  } catch {
20
- return data;
20
+ return e;
21
21
  }
22
22
  }
23
- function deserialize(data) {
23
+ function R(e) {
24
24
  try {
25
- return _deserialize ? _deserialize(data) : JSON.parse(data);
25
+ return v ? v(e) : JSON.parse(e);
26
26
  } catch {
27
- return data;
27
+ return e;
28
28
  }
29
29
  }
30
- const listenersCollection = /* @__PURE__ */new Map();
31
- handle(async request => {
32
- const value = get(localCtx, request.key || "");
33
- if (value === void 0) return {
30
+ const u = new Map();
31
+ f(async e => {
32
+ const n = p(y, e.key || "");
33
+ if (n === void 0) return {
34
34
  type: "response",
35
- id: request.id,
36
- key: request.key,
35
+ id: e.id,
36
+ key: e.key,
37
37
  result: void 0
38
38
  };
39
- let args = request.args ? deserialize(request.args) : [];
40
- if (!Array.isArray(args)) args = [args];
41
- const result = typeof value === "function" ? await value(...args) : value;
39
+ let r = e.args ? R(e.args) : [];
40
+ Array.isArray(r) || (r = [r]);
41
+ const s = typeof n == "function" ? await n(...r) : n;
42
42
  return {
43
43
  type: "response",
44
- id: request.id,
45
- key: request.key,
46
- result: serialize(result)
44
+ id: e.id,
45
+ key: e.key,
46
+ result: g(s)
47
47
  };
48
+ }), d(e => {
49
+ const n = u.get(e.eventName);
50
+ if (!n?.length) return;
51
+ let r = e.args ? R(e.args) : [];
52
+ Array.isArray(r) || (r = [r]), n.forEach(s => s(...r));
48
53
  });
49
- handleEvent(request => {
50
- const currentEventListeners = listenersCollection.get(request.eventName);
51
- if (!currentEventListeners?.length) return;
52
- let args = request.args ? deserialize(request.args) : [];
53
- if (!Array.isArray(args)) args = [args];
54
- currentEventListeners.forEach(listener => listener(...args));
55
- });
56
- const proxyCache = /* @__PURE__ */new Map();
57
- function createProxyForPath(path) {
58
- const pathKey = path.join(".");
59
- if (proxyCache.has(pathKey)) {
60
- return proxyCache.get(pathKey);
61
- }
62
- const callHandler = async (...args) => {
63
- const request = {
64
- type: "request",
65
- id: `${pathKey}-${Date.now()}-${Math.random()}`,
66
- // More robust ID
67
- key: pathKey,
68
- args: serialize(args)
69
- };
70
- const response = await invoke(request);
71
- return deserialize(response.result);
72
- };
73
- const proxy = new Proxy(callHandler, {
74
- get(target, prop) {
75
- if (prop === "then") {
76
- const promise = target();
77
- return promise.then.bind(promise);
78
- }
79
- if (prop === "catch" || prop === "finally") {
80
- const promise = target();
81
- return promise[prop].bind(promise);
82
- }
83
- return createProxyForPath([...path, prop]);
54
+ const E = new Map();
55
+ function m(e) {
56
+ const n = e.join(".");
57
+ if (E.has(n)) return E.get(n);
58
+ const r = async (...i) => {
59
+ const t = {
60
+ type: "request",
61
+ id: `${n}-${Date.now()}-${Math.random()}`,
62
+ key: n,
63
+ args: g(i)
64
+ },
65
+ a = await c(t);
66
+ return R(a.result);
84
67
  },
85
- apply(target, thisArg, args) {
86
- return target.apply(thisArg, args);
87
- }
88
- });
89
- proxyCache.set(pathKey, proxy);
90
- return proxy;
91
- }
92
- const rootProxy = new Proxy({}, {
93
- get(_target, prop) {
94
- if (prop === "$context") return localCtx;
95
- if (prop === "on") {
96
- const subscribeHandler = (eventName, listener) => {
97
- const currentEventListeners = listenersCollection.get(eventName);
98
- if (!currentEventListeners) {
99
- listenersCollection.set(eventName, [listener]);
100
- return;
68
+ s = new Proxy(r, {
69
+ get(i, t) {
70
+ if (t === "then") {
71
+ const a = i();
72
+ return a.then.bind(a);
73
+ }
74
+ if (t === "catch" || t === "finally") {
75
+ const a = i();
76
+ return a[t].bind(a);
101
77
  }
102
- currentEventListeners.push(listener);
103
- };
104
- return subscribeHandler;
105
- }
106
- if (prop === "off") {
107
- const unsubscribeHandler = (eventName, listener) => {
108
- const index = listenersCollection.get(eventName)?.indexOf(listener);
109
- if (index === -1 || index === void 0) return;
110
- listenersCollection.get(eventName)?.splice(index, 1);
111
- };
112
- return unsubscribeHandler;
113
- }
114
- if (prop === "emit") {
115
- const emitHandler = (eventName, ...args) => {
116
- emit({
117
- eventName,
118
- args: serialize(args)
119
- });
120
- };
121
- return emitHandler;
122
- }
123
- if (prop === "removeAllListeners") return () => listenersCollection.clear();
124
- if (typeof prop === "symbol") return void 0;
125
- return createProxyForPath([prop]);
78
+ return m([...e, t]);
79
+ },
80
+ apply(i, t, a) {
81
+ return i.apply(t, a);
82
+ }
83
+ });
84
+ return E.set(n, s), s;
85
+ }
86
+ return new Proxy({}, {
87
+ get(e, n) {
88
+ if (n === "$context") return y;
89
+ if (n === "on") return (s, i) => {
90
+ const t = u.get(s);
91
+ if (!t) {
92
+ u.set(s, [i]);
93
+ return;
94
+ }
95
+ t.push(i);
96
+ };
97
+ if (n === "off") return (s, i) => {
98
+ const t = u.get(s)?.indexOf(i);
99
+ t === -1 || t === void 0 || u.get(s)?.splice(t, 1);
100
+ };
101
+ if (n === "emit") return (s, ...i) => {
102
+ o({
103
+ eventName: s,
104
+ args: g(i)
105
+ });
106
+ };
107
+ if (n === "removeAllListeners") return () => u.clear();
108
+ if (typeof n != "symbol") return m([n]);
126
109
  }
127
110
  });
128
- return rootProxy;
129
111
  }
130
- function get(obj, path, defaultValue) {
131
- if (!obj || typeof obj !== "object") return defaultValue;
132
- const pathArray = Array.isArray(path) ? path : path.replace(/\[(\d+)]/g, ".$1").replace(/\["([^"]+)"\]/g, ".$1").replace(/\['([^']+)'\]/g, ".$1").split(".").filter(Boolean);
133
- let result = obj;
134
- for (const key of pathArray) {
135
- if (result != null && typeof result === "object" && key in result) {
136
- result = result[key];
137
- } else {
138
- return defaultValue;
139
- }
140
- }
141
- return result;
112
+ function p(y, l, c) {
113
+ if (!y || typeof y != "object") return c;
114
+ const f = Array.isArray(l) ? l : l.replace(/\[(\d+)]/g, ".$1").replace(/\["([^"]+)"\]/g, ".$1").replace(/\['([^']+)'\]/g, ".$1").split(".").filter(Boolean);
115
+ let o = y;
116
+ for (const d of f) if (o != null && typeof o == "object" && d in o) o = o[d];else return c;
117
+ return o;
142
118
  }
@@ -1,130 +1 @@
1
- export function createClient(localCtx, options) {
2
- const { invoke, handle, emit, handleEvent, serialize: _serialize, deserialize: _deserialize } = options;
3
- function serialize(data) {
4
- try {
5
- return _serialize ? _serialize(data) : JSON.stringify(data);
6
- } catch {
7
- return data;
8
- }
9
- }
10
- function deserialize(data) {
11
- try {
12
- return _deserialize ? _deserialize(data) : JSON.parse(data);
13
- } catch {
14
- return data;
15
- }
16
- }
17
- const listenersCollection = /* @__PURE__ */ new Map();
18
- handle(async (request) => {
19
- const value = get(localCtx, request.key || "");
20
- if (value === void 0)
21
- return {
22
- type: "response",
23
- id: request.id,
24
- key: request.key,
25
- result: void 0
26
- };
27
- let args = request.args ? deserialize(request.args) : [];
28
- if (!Array.isArray(args)) args = [args];
29
- const result = typeof value === "function" ? await value(...args) : value;
30
- return {
31
- type: "response",
32
- id: request.id,
33
- key: request.key,
34
- result: serialize(result)
35
- };
36
- });
37
- handleEvent((request) => {
38
- const currentEventListeners = listenersCollection.get(request.eventName);
39
- if (!currentEventListeners?.length) return;
40
- let args = request.args ? deserialize(request.args) : [];
41
- if (!Array.isArray(args)) args = [args];
42
- currentEventListeners.forEach((listener) => listener(...args));
43
- });
44
- const proxyCache = /* @__PURE__ */ new Map();
45
- function createProxyForPath(path) {
46
- const pathKey = path.join(".");
47
- if (proxyCache.has(pathKey)) {
48
- return proxyCache.get(pathKey);
49
- }
50
- const callHandler = async (...args) => {
51
- const request = {
52
- type: "request",
53
- id: `${pathKey}-${Date.now()}-${Math.random()}`,
54
- // More robust ID
55
- key: pathKey,
56
- args: serialize(args)
57
- };
58
- const response = await invoke(request);
59
- return deserialize(response.result);
60
- };
61
- const proxy = new Proxy(callHandler, {
62
- get(target, prop) {
63
- if (prop === "then") {
64
- const promise = target();
65
- return promise.then.bind(promise);
66
- }
67
- if (prop === "catch" || prop === "finally") {
68
- const promise = target();
69
- return promise[prop].bind(promise);
70
- }
71
- return createProxyForPath([...path, prop]);
72
- },
73
- apply(target, thisArg, args) {
74
- return target.apply(thisArg, args);
75
- }
76
- });
77
- proxyCache.set(pathKey, proxy);
78
- return proxy;
79
- }
80
- const rootProxy = new Proxy(
81
- {},
82
- {
83
- get(_target, prop) {
84
- if (prop === "$context") return localCtx;
85
- if (prop === "on") {
86
- const subscribeHandler = (eventName, listener) => {
87
- const currentEventListeners = listenersCollection.get(eventName);
88
- if (!currentEventListeners) {
89
- listenersCollection.set(eventName, [listener]);
90
- return;
91
- }
92
- currentEventListeners.push(listener);
93
- };
94
- return subscribeHandler;
95
- }
96
- if (prop === "off") {
97
- const unsubscribeHandler = (eventName, listener) => {
98
- const index = listenersCollection.get(eventName)?.indexOf(listener);
99
- if (index === -1 || index === void 0) return;
100
- listenersCollection.get(eventName)?.splice(index, 1);
101
- };
102
- return unsubscribeHandler;
103
- }
104
- if (prop === "emit") {
105
- const emitHandler = (eventName, ...args) => {
106
- emit({ eventName, args: serialize(args) });
107
- };
108
- return emitHandler;
109
- }
110
- if (prop === "removeAllListeners") return () => listenersCollection.clear();
111
- if (typeof prop === "symbol") return void 0;
112
- return createProxyForPath([prop]);
113
- }
114
- }
115
- );
116
- return rootProxy;
117
- }
118
- function get(obj, path, defaultValue) {
119
- if (!obj || typeof obj !== "object") return defaultValue;
120
- const pathArray = Array.isArray(path) ? path : path.replace(/\[(\d+)]/g, ".$1").replace(/\["([^"]+)"\]/g, ".$1").replace(/\['([^']+)'\]/g, ".$1").split(".").filter(Boolean);
121
- let result = obj;
122
- for (const key of pathArray) {
123
- if (result != null && typeof result === "object" && key in result) {
124
- result = result[key];
125
- } else {
126
- return defaultValue;
127
- }
128
- }
129
- return result;
130
- }
1
+ export function createClient(y,l){const{invoke:c,handle:f,emit:o,handleEvent:d,serialize:x,deserialize:v}=l;function g(e){try{return x?x(e):JSON.stringify(e)}catch{return e}}function R(e){try{return v?v(e):JSON.parse(e)}catch{return e}}const u=new Map;f(async e=>{const n=p(y,e.key||"");if(n===void 0)return{type:"response",id:e.id,key:e.key,result:void 0};let r=e.args?R(e.args):[];Array.isArray(r)||(r=[r]);const s=typeof n=="function"?await n(...r):n;return{type:"response",id:e.id,key:e.key,result:g(s)}}),d(e=>{const n=u.get(e.eventName);if(!n?.length)return;let r=e.args?R(e.args):[];Array.isArray(r)||(r=[r]),n.forEach(s=>s(...r))});const E=new Map;function m(e){const n=e.join(".");if(E.has(n))return E.get(n);const r=async(...i)=>{const t={type:"request",id:`${n}-${Date.now()}-${Math.random()}`,key:n,args:g(i)},a=await c(t);return R(a.result)},s=new Proxy(r,{get(i,t){if(t==="then"){const a=i();return a.then.bind(a)}if(t==="catch"||t==="finally"){const a=i();return a[t].bind(a)}return m([...e,t])},apply(i,t,a){return i.apply(t,a)}});return E.set(n,s),s}return new Proxy({},{get(e,n){if(n==="$context")return y;if(n==="on")return(s,i)=>{const t=u.get(s);if(!t){u.set(s,[i]);return}t.push(i)};if(n==="off")return(s,i)=>{const t=u.get(s)?.indexOf(i);t===-1||t===void 0||u.get(s)?.splice(t,1)};if(n==="emit")return(s,...i)=>{o({eventName:s,args:g(i)})};if(n==="removeAllListeners")return()=>u.clear();if(typeof n!="symbol")return m([n])}})}function p(y,l,c){if(!y||typeof y!="object")return c;const f=Array.isArray(l)?l:l.replace(/\[(\d+)]/g,".$1").replace(/\["([^"]+)"\]/g,".$1").replace(/\['([^']+)'\]/g,".$1").split(".").filter(Boolean);let o=y;for(const d of f)if(o!=null&&typeof o=="object"&&d in o)o=o[d];else return c;return o}
package/dist/editor.d.ts CHANGED
@@ -2,10 +2,10 @@ import type { CoreIframeContext, CoreIframeEvents, EditorContext, EditorEvents }
2
2
  /**
3
3
  * This function should be called inside the editor
4
4
  */
5
- export declare function createEditorClient<IframeContext extends CoreIframeContext, IframeEvents extends CoreIframeEvents>(iframe: string | HTMLIFrameElement): { [K in keyof IframeContext]: IframeContext[K] extends (...args: any[]) => any ? (...args: Parameters<IframeContext[K]>) => Promise<Awaited<ReturnType<IframeContext[K]>>> : IframeContext[K] extends any[] ? Promise<IframeContext[K]> : IframeContext[K] extends object ? IframeContext[K] extends infer T ? { [K_1 in keyof T]: IframeContext[K][K_1] extends (...args: any[]) => any ? (...args: Parameters<IframeContext[K][K_1]>) => Promise<Awaited<ReturnType<IframeContext[K][K_1]>>> : IframeContext[K][K_1] extends any[] ? Promise<IframeContext[K][K_1]> : IframeContext[K][K_1] extends object ? IframeContext[K][K_1] extends infer T_1 ? { [K_2 in keyof T_1]: IframeContext[K][K_1][K_2] extends (...args: any[]) => any ? (...args: Parameters<IframeContext[K][K_1][K_2]>) => Promise<Awaited<ReturnType<IframeContext[K][K_1][K_2]>>> : IframeContext[K][K_1][K_2] extends any[] ? Promise<IframeContext[K][K_1][K_2]> : IframeContext[K][K_1][K_2] extends object ? IframeContext[K][K_1][K_2] extends infer T_2 ? { [K_3 in keyof T_2]: IframeContext[K][K_1][K_2][K_3] extends (...args: any[]) => any ? (...args: Parameters<IframeContext[K][K_1][K_2][K_3]>) => Promise<Awaited<ReturnType<IframeContext[K][K_1][K_2][K_3]>>> : IframeContext[K][K_1][K_2][K_3] extends any[] ? Promise<IframeContext[K][K_1][K_2][K_3]> : IframeContext[K][K_1][K_2][K_3] extends object ? IframeContext[K][K_1][K_2][K_3] extends infer T_3 ? { [K_4 in keyof T_3]: IframeContext[K][K_1][K_2][K_3][K_4] extends (...args: any[]) => any ? (...args: Parameters<IframeContext[K][K_1][K_2][K_3][K_4]>) => Promise<Awaited<ReturnType<IframeContext[K][K_1][K_2][K_3][K_4]>>> : IframeContext[K][K_1][K_2][K_3][K_4] extends any[] ? Promise<IframeContext[K][K_1][K_2][K_3][K_4]> : IframeContext[K][K_1][K_2][K_3][K_4] extends object ? IframeContext[K][K_1][K_2][K_3][K_4] extends infer T_4 ? { [K_5 in keyof T_4]: IframeContext[K][K_1][K_2][K_3][K_4][K_5] extends (...args: any[]) => any ? (...args: Parameters<IframeContext[K][K_1][K_2][K_3][K_4][K_5]>) => Promise<Awaited<ReturnType<IframeContext[K][K_1][K_2][K_3][K_4][K_5]>>> : IframeContext[K][K_1][K_2][K_3][K_4][K_5] extends any[] ? Promise<IframeContext[K][K_1][K_2][K_3][K_4][K_5]> : IframeContext[K][K_1][K_2][K_3][K_4][K_5] extends object ? IframeContext[K][K_1][K_2][K_3][K_4][K_5] extends infer T_5 ? { [K_6 in keyof T_5]: IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6] extends (...args: any[]) => any ? (...args: Parameters<IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6]>) => Promise<Awaited<ReturnType<IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6]>>> : IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6] extends any[] ? Promise<IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6]> : IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6] extends object ? IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6] extends infer T_6 ? { [K_7 in keyof T_6]: IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends (...args: any[]) => any ? (...args: Parameters<IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7]>) => Promise<Awaited<ReturnType<IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7]>>> : IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends any[] ? Promise<IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7]> : IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends object ? IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends infer T_7 ? { [K_8 in keyof T_7]: IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends (...args: any[]) => any ? (...args: Parameters<IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8]>) => Promise<Awaited<ReturnType<IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8]>>> : IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends any[] ? Promise<IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8]> : IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends object ? IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends infer T_8 ? { [K_9 in keyof T_8]: IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends (...args: any[]) => any ? (...args: Parameters<IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9]>) => Promise<Awaited<ReturnType<IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9]>>> : IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends any[] ? Promise<IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9]> : IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends object ? IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends infer T_9 ? { [K_10 in keyof T_9]: IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends (...args: any[]) => any ? (...args: Parameters<IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10]>) => Promise<Awaited<ReturnType<IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10]>>> : IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends any[] ? Promise<IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10]> : IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends object ? /*elided*/ any : Promise<IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10]>; } : never : Promise<IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9]>; } : never : Promise<IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8]>; } : never : Promise<IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6][K_7]>; } : never : Promise<IframeContext[K][K_1][K_2][K_3][K_4][K_5][K_6]>; } : never : Promise<IframeContext[K][K_1][K_2][K_3][K_4][K_5]>; } : never : Promise<IframeContext[K][K_1][K_2][K_3][K_4]>; } : never : Promise<IframeContext[K][K_1][K_2][K_3]>; } : never : Promise<IframeContext[K][K_1][K_2]>; } : never : Promise<IframeContext[K][K_1]>; } : never : Promise<IframeContext[K]>; } & {
5
+ export declare function createEditorClient<IframeContext extends CoreIframeContext, IframeEvents extends CoreIframeEvents>(iframe: string | HTMLIFrameElement): { [K in keyof IframeContext]: IframeContext[K] extends (...args: any[]) => any ? (...args: Parameters<IframeContext[K]>) => Promise<Awaited<ReturnType<IframeContext[K]>>> : IframeContext[K] extends any[] ? Promise<IframeContext[K]> : IframeContext[K] extends object ? IframeContext[K] extends infer T ? { [K_2 in keyof T]: T[K_2] extends (...args: any[]) => any ? (...args: Parameters<T[K_2]>) => Promise<Awaited<ReturnType<T[K_2]>>> : T[K_2] extends any[] ? Promise<T[K_2]> : T[K_2] extends object ? T[K_2] extends infer T_1 ? { [K_3 in keyof T_1]: T_1[K_3] extends (...args: any[]) => any ? (...args: Parameters<T_1[K_3]>) => Promise<Awaited<ReturnType<T_1[K_3]>>> : T_1[K_3] extends any[] ? Promise<T_1[K_3]> : T_1[K_3] extends object ? T_1[K_3] extends infer T_2 ? { [K_4 in keyof T_2]: T_2[K_4] extends (...args: any[]) => any ? (...args: Parameters<T_2[K_4]>) => Promise<Awaited<ReturnType<T_2[K_4]>>> : T_2[K_4] extends any[] ? Promise<T_2[K_4]> : T_2[K_4] extends object ? T_2[K_4] extends infer T_3 ? { [K_5 in keyof T_3]: T_3[K_5] extends (...args: any[]) => any ? (...args: Parameters<T_3[K_5]>) => Promise<Awaited<ReturnType<T_3[K_5]>>> : T_3[K_5] extends any[] ? Promise<T_3[K_5]> : T_3[K_5] extends object ? T_3[K_5] extends infer T_4 ? { [K_6 in keyof T_4]: T_4[K_6] extends (...args: any[]) => any ? (...args: Parameters<T_4[K_6]>) => Promise<Awaited<ReturnType<T_4[K_6]>>> : T_4[K_6] extends any[] ? Promise<T_4[K_6]> : T_4[K_6] extends object ? T_4[K_6] extends infer T_5 ? { [K_7 in keyof T_5]: T_5[K_7] extends (...args: any[]) => any ? (...args: Parameters<T_5[K_7]>) => Promise<Awaited<ReturnType<T_5[K_7]>>> : T_5[K_7] extends any[] ? Promise<T_5[K_7]> : T_5[K_7] extends object ? T_5[K_7] extends infer T_6 ? { [K_8 in keyof T_6]: T_6[K_8] extends (...args: any[]) => any ? (...args: Parameters<T_6[K_8]>) => Promise<Awaited<ReturnType<T_6[K_8]>>> : T_6[K_8] extends any[] ? Promise<T_6[K_8]> : T_6[K_8] extends object ? T_6[K_8] extends infer T_7 ? { [K_9 in keyof T_7]: T_7[K_9] extends (...args: any[]) => any ? (...args: Parameters<T_7[K_9]>) => Promise<Awaited<ReturnType<T_7[K_9]>>> : T_7[K_9] extends any[] ? Promise<T_7[K_9]> : T_7[K_9] extends object ? T_7[K_9] extends infer T_8 ? { [K_10 in keyof T_8]: T_8[K_10] extends (...args: any[]) => any ? (...args: Parameters<T_8[K_10]>) => Promise<Awaited<ReturnType<T_8[K_10]>>> : T_8[K_10] extends any[] ? Promise<T_8[K_10]> : T_8[K_10] extends object ? T_8[K_10] extends infer T_9 ? { [K_11 in keyof T_9]: T_9[K_11] extends (...args: any[]) => any ? (...args: Parameters<T_9[K_11]>) => Promise<Awaited<ReturnType<T_9[K_11]>>> : T_9[K_11] extends any[] ? Promise<T_9[K_11]> : T_9[K_11] extends object ? /*elided*/ any : Promise<T_9[K_11]>; } : never : Promise<T_8[K_10]>; } : never : Promise<T_7[K_9]>; } : never : Promise<T_6[K_8]>; } : never : Promise<T_5[K_7]>; } : never : Promise<T_4[K_6]>; } : never : Promise<T_3[K_5]>; } : never : Promise<T_2[K_4]>; } : never : Promise<T_1[K_3]>; } : never : Promise<T[K_2]>; } : never : Promise<IframeContext[K]>; } & {
6
6
  $context: EditorContext;
7
- on: <E extends keyof IframeEvents>(eventName: E, listener: (...args: IframeEvents[E] extends infer T_10 ? T_10 extends IframeEvents[E] ? T_10 extends (...args: infer A) => any ? A : never : never : never) => void) => void;
8
- off: <E extends keyof IframeEvents>(eventName: E, listener: (...args: IframeEvents[E] extends infer T_10 ? T_10 extends IframeEvents[E] ? T_10 extends (...args: infer A) => any ? A : never : never : never) => void) => void;
9
- emit: <E extends never>(eventName: E, ...args: EditorEvents[E] extends infer T_10 ? T_10 extends EditorEvents[E] ? T_10 extends (...args: infer A) => any ? A : never : never : never) => void;
7
+ on: <E extends keyof IframeEvents>(eventName: E, listener: (...args: IframeEvents[E] extends infer T ? T extends IframeEvents[E] ? T extends (...args: infer A) => any ? A : never : never : never) => void) => void;
8
+ off: <E extends keyof IframeEvents>(eventName: E, listener: (...args: IframeEvents[E] extends infer T ? T extends IframeEvents[E] ? T extends (...args: infer A) => any ? A : never : never : never) => void) => void;
9
+ emit: <E extends never>(eventName: E, ...args: EditorEvents[E] extends infer T ? T extends EditorEvents[E] ? T extends (...args: infer A) => any ? A : never : never : never) => void;
10
10
  removeAllListeners: () => void;
11
11
  };
package/dist/editor.js CHANGED
@@ -7,105 +7,81 @@ exports.createEditorClient = createEditorClient;
7
7
  var _constants = require("./constants");
8
8
  var _createClient = require("./createClient");
9
9
  var _telejson = require("telejson");
10
- function deserialize(data) {
11
- const parsed = (0, _telejson.parse)(data, {
12
- maxDepth: Infinity
13
- });
14
- const senitizeRefs = obj => {
15
- if (Array.isArray(obj)) {
16
- obj.forEach((item, index) => {
17
- obj[index] = senitizeRefs(item);
18
- });
19
- } else if (obj && typeof obj === "object") {
20
- if (obj.hasOwnProperty("__v_isRef")) {
21
- const newObj = {
22
- ...obj,
10
+ function y(a) {
11
+ const n = (0, _telejson.parse)(a, {
12
+ maxDepth: 1 / 0
13
+ }),
14
+ r = e => {
15
+ if (Array.isArray(e)) e.forEach((t, s) => {
16
+ e[s] = r(t);
17
+ });else if (e && typeof e == "object") {
18
+ if (e.hasOwnProperty("__v_isRef")) return {
19
+ ...e,
23
20
  __v_isRef: "true",
24
- // converted to string
25
- value: obj.hasOwnProperty("value") && obj.value !== void 0 ? obj.value : obj._value ?? obj._rawValue
21
+ value: e.hasOwnProperty("value") && e.value !== void 0 ? e.value : e._value ?? e._rawValue
26
22
  };
27
- return newObj;
28
- } else {
29
- Object.keys(obj).forEach(key => {
30
- obj[key] = senitizeRefs(obj[key]);
23
+ Object.keys(e).forEach(t => {
24
+ e[t] = r(e[t]);
31
25
  });
32
26
  }
33
- }
34
- return obj;
35
- };
36
- const d = senitizeRefs(parsed);
37
- return d;
27
+ return e;
28
+ };
29
+ return r(n);
38
30
  }
39
- function createEditorClient(iframe) {
40
- let iframeElement;
41
- function getIframe() {
42
- if (!iframeElement || !iframeElement.isConnected) {
43
- iframeElement = typeof iframe === "string" ? document.querySelector(`#${iframe}`) : iframe;
44
- }
45
- return iframeElement;
31
+ function createEditorClient(a) {
32
+ let n;
33
+ function r() {
34
+ return (!n || !n.isConnected) && (n = typeof a == "string" ? document.querySelector(`#${a}`) : a), n;
46
35
  }
47
- const client = (0, _createClient.createClient)({}, {
48
- handle(handler) {
49
- window.addEventListener("message", async event => {
50
- if (typeof event.data !== "object") return;
51
- if (event.data.source !== _constants.IFRAME_SOURCE_NAME || event.data.type === "event" || !event.data.request) return;
52
- const iframe2 = getIframe();
53
- if (!iframe2) return;
54
- const response = await handler(event.data.request);
55
- iframe2.contentWindow?.postMessage({
36
+ return (0, _createClient.createClient)({}, {
37
+ handle(e) {
38
+ window.addEventListener("message", async t => {
39
+ if (typeof t.data != "object" || t.data.source !== _constants.IFRAME_SOURCE_NAME || t.data.type === "event" || !t.data.request) return;
40
+ const s = r();
41
+ if (!s) return;
42
+ const o = await e(t.data.request);
43
+ s.contentWindow?.postMessage({
56
44
  source: _constants.EDITOR_SOURCE_NAME,
57
- response
45
+ response: o
58
46
  }, "*");
59
47
  });
60
48
  },
61
- async invoke(request) {
62
- const iframe2 = getIframe();
63
- if (!iframe2) return {
64
- type: "response",
65
- id: request.id,
66
- key: request.key,
67
- result: void 0
68
- };
69
- return new Promise((resolve, reject) => {
70
- const timeout = setTimeout(() => {
71
- window.removeEventListener("message", messageHandler);
72
- reject(new Error("Request timed out"));
49
+ async invoke(e) {
50
+ const t = r();
51
+ return t ? new Promise((s, o) => {
52
+ const c = setTimeout(() => {
53
+ window.removeEventListener("message", d), o(new Error("Request timed out"));
73
54
  }, 5e3);
74
- function messageHandler(event) {
75
- if (typeof event.data !== "object") return;
76
- if (event.data.source !== _constants.IFRAME_SOURCE_NAME || !event.data.response) return;
77
- if (event.data.response.id !== request.id) return;
78
- clearTimeout(timeout);
79
- window.removeEventListener("message", messageHandler);
80
- resolve(event.data.response);
55
+ function d(i) {
56
+ typeof i.data == "object" && (i.data.source !== _constants.IFRAME_SOURCE_NAME || !i.data.response || i.data.response.id === e.id && (clearTimeout(c), window.removeEventListener("message", d), s(i.data.response)));
81
57
  }
82
- iframe2.contentWindow?.postMessage({
58
+ t.contentWindow?.postMessage({
83
59
  source: _constants.EDITOR_SOURCE_NAME,
84
- request
85
- }, "*");
86
- window.addEventListener("message", messageHandler);
87
- });
60
+ request: e
61
+ }, "*"), window.addEventListener("message", d);
62
+ }) : {
63
+ type: "response",
64
+ id: e.id,
65
+ key: e.key,
66
+ result: void 0
67
+ };
88
68
  },
89
- emit(request) {
90
- const iframe2 = getIframe();
91
- if (!iframe2) return;
92
- iframe2.contentWindow?.postMessage({
69
+ emit(e) {
70
+ const t = r();
71
+ t && t.contentWindow?.postMessage({
93
72
  source: _constants.EDITOR_SOURCE_NAME,
94
73
  type: "event",
95
- request
74
+ request: e
96
75
  }, "*");
97
76
  },
98
- handleEvent(handleRequest) {
99
- window.addEventListener("message", event => {
100
- if (typeof event.data !== "object") return;
101
- if (event.data.source !== _constants.IFRAME_SOURCE_NAME || event.data.type !== "event" || !event.data.request) return;
102
- handleRequest(event.data.request);
77
+ handleEvent(e) {
78
+ window.addEventListener("message", t => {
79
+ typeof t.data == "object" && (t.data.source !== _constants.IFRAME_SOURCE_NAME || t.data.type !== "event" || !t.data.request || e(t.data.request));
103
80
  });
104
81
  },
105
- deserialize,
106
- serialize: v => (0, _telejson.stringify)(v, {
107
- maxDepth: Infinity
82
+ deserialize: y,
83
+ serialize: e => (0, _telejson.stringify)(e, {
84
+ maxDepth: 1 / 0
108
85
  })
109
86
  });
110
- return client;
111
87
  }