seatable-html-page-sdk 0.0.2 → 0.0.4
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/LICENSE +201 -0
- package/README.md +3 -3
- package/dist/index.js +4354 -3
- package/dist/index.js.map +1 -0
- package/dist/index.min.js +2 -0
- package/dist/index.min.js.map +1 -0
- package/es/apis/html-page-api.js +104 -0
- package/es/apis/html-page-api.js.map +1 -0
- package/es/iframe-adapter.js +213 -261
- package/es/iframe-adapter.js.map +1 -0
- package/es/index.js +1 -0
- package/es/index.js.map +1 -0
- package/es/sdk.js +107 -134
- package/es/sdk.js.map +1 -0
- package/lib/apis/html-page-api.js +112 -0
- package/lib/apis/html-page-api.js.map +1 -0
- package/lib/iframe-adapter.js +213 -269
- package/lib/iframe-adapter.js.map +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -0
- package/lib/sdk.js +106 -140
- package/lib/sdk.js.map +1 -0
- package/package.json +14 -6
- package/es/apis/universal-app-api.js +0 -92
- package/lib/apis/universal-app-api.js +0 -102
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-page-api.js","sources":["../../src/apis/html-page-api.js"],"sourcesContent":["import axios from 'axios';\n\nclass HTMLPageAPI {\n async initWithAccountToken({ server, accountToken, appUuid }) {\n this.initServer(server);\n this.appUuid = appUuid;\n if (this.server && this.appUuid) {\n try {\n const res = await axios.get(`${this.server}api/v2.1/universal-apps/${this.appUuid}/access-token/`, {\n headers: { Authorization: 'Token ' + accountToken }\n });\n this.accessToken = res.data?.access_token || '';\n this.createReq();\n } catch (error) {\n console.log('Authorization failed');\n }\n }\n }\n\n init({ server, accessToken, appUuid }) {\n this.initServer(server);\n this.accessToken = accessToken || '';\n this.appUuid = appUuid;\n if (this.accessToken && this.server && this.appUuid) {\n this.createReq();\n }\n }\n\n initServer(server) {\n if (!server) return;\n this.server = server.endsWith('/') ? server : `${server}/`;\n }\n\n createReq() {\n this.req = axios.create({\n baseURL: this.server,\n headers: {\n Authorization: 'Token ' + this.accessToken,\n },\n });\n }\n\n listRows(page_id, table_name, start, limit) {\n const url = `${this.server}api/v2.1/universal-apps/${this.appUuid}/html-page-rows/`;\n const params = { page_id, table_name, start, limit };\n return this.req.get(url, { params });\n }\n\n addRow(page_id, table_name, row_data, row_links_data) {\n const url = `${this.server}api/v2.1/universal-apps/${this.appUuid}/html-page-rows/`;\n const data = { page_id, table_name, row_data, row_links_data };\n return this.req.post(url, data);\n }\n\n addRows(page_id, table_name, rows_data, rows_links_data) {\n const url = `${this.server}api/v2.1/universal-apps/${this.appUuid}/html-page-rows/batch/`;\n const data = { page_id, table_name, rows_data, rows_links_data };\n return this.req.post(url, data);\n }\n\n updateRows(page_id, table_name, rows_data) {\n const url = `${this.server}api/v2.1/universal-apps/${this.appUuid}/html-page-rows/`;\n const data = { page_id, table_name, rows_data };\n return this.req.put(url, data);\n }\n\n deleteRows(page_id, table_name, rows_ids) {\n const url = `${this.server}api/v2.1/universal-apps/${this.appUuid}/html-page-rows/`;\n const data = { page_id, table_name, rows_ids };\n return this.req.delete(url, data);\n }\n}\n\nexport default HTMLPageAPI;\n"],"names":["HTMLPageAPI","initWithAccountToken","_ref","server","accountToken","appUuid","initServer","res","axios","get","headers","Authorization","accessToken","data","access_token","createReq","error","console","log","init","_ref2","endsWith","req","create","baseURL","listRows","page_id","table_name","start","limit","url","params","addRow","row_data","row_links_data","post","addRows","rows_data","rows_links_data","updateRows","put","deleteRows","rows_ids","delete"],"mappings":"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"}
|
package/es/iframe-adapter.js
CHANGED
|
@@ -1,46 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
3
|
-
import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
|
|
4
|
-
import _createClass from '@babel/runtime/helpers/createClass';
|
|
5
|
-
import _regeneratorRuntime from '@babel/runtime/regenerator';
|
|
6
|
-
|
|
7
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
8
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
9
|
-
var POST_MESSAGE_TYPE = {
|
|
1
|
+
const POST_MESSAGE_TYPE = {
|
|
10
2
|
HTML_PAGE_REQUEST: 'HTML_PAGE_REQUEST',
|
|
11
3
|
HTML_PAGE_RESPONSE: 'HTML_PAGE_RESPONSE',
|
|
12
4
|
HTML_PAGE_EVENT: 'HTML_PAGE_EVENT',
|
|
13
5
|
WINDOW_EVENT: 'WINDOW_EVENT'
|
|
14
6
|
};
|
|
15
|
-
|
|
7
|
+
const POST_MESSAGE_REQUEST_TYPE = {
|
|
16
8
|
GET_SERVER: 'get_server',
|
|
17
9
|
GET_ACCESS_TOKEN: 'get_access_token',
|
|
18
10
|
GET_APP_UUID: 'get_app_uuid',
|
|
19
11
|
GET_PAGE_ID: 'get_page_id'
|
|
20
12
|
};
|
|
21
|
-
|
|
13
|
+
const WINDOW_EVENT_SOURCE_TYPE = {
|
|
22
14
|
APP: 'app',
|
|
23
15
|
IFRAME: 'iframe'
|
|
24
16
|
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
17
|
+
const SUPPORT_WINDOW_MOUSE_EVENT_TYPES = ['click', 'dblclick', 'mousemove', 'mouseenter', 'mouseleave', 'mousedown', 'mouseup', 'contextmenu'];
|
|
18
|
+
const SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES = ['keydown', 'keyup', 'keypress'];
|
|
19
|
+
const SUPPORT_WINDOW_DRAG_EVENT_TYPES = ['dragstart', 'dragover', 'drag', 'dragend', 'dragenter', 'dragleave', 'drop'];
|
|
20
|
+
const HIGH_FREQUENCY_WINDOW_EVENT_TYPES = ['mousemove', 'dragover'];
|
|
21
|
+
const hasOwnProperty = (obj, key) => {
|
|
30
22
|
return Object.prototype.hasOwnProperty.call(obj, key);
|
|
31
23
|
};
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
for (
|
|
24
|
+
const generatorBase64Code = function () {
|
|
25
|
+
let keyLength = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 4;
|
|
26
|
+
let possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz0123456789';
|
|
27
|
+
let key = '';
|
|
28
|
+
for (let i = 0; i < keyLength; i++) {
|
|
37
29
|
key += possible.charAt(Math.floor(Math.random() * possible.length));
|
|
38
30
|
}
|
|
39
31
|
return key;
|
|
40
32
|
};
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
33
|
+
const createWindowEventData = _ref => {
|
|
34
|
+
let {
|
|
35
|
+
eventType,
|
|
36
|
+
event
|
|
37
|
+
} = _ref;
|
|
44
38
|
if (SUPPORT_WINDOW_MOUSE_EVENT_TYPES.includes(eventType)) {
|
|
45
39
|
return {
|
|
46
40
|
type: eventType,
|
|
@@ -77,9 +71,8 @@ var createWindowEventData = function createWindowEventData(_ref) {
|
|
|
77
71
|
* IframeAdapter – enables secure postMessage communication in production environments
|
|
78
72
|
* For HTML page running inside an iframe
|
|
79
73
|
*/
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
_classCallCheck(this, IframeAdapter);
|
|
74
|
+
class IframeAdapter {
|
|
75
|
+
constructor(options) {
|
|
83
76
|
this.options = options || {};
|
|
84
77
|
this.selfWindow = window.parent === window.self;
|
|
85
78
|
this.targetOrigin = this.options.targetOrigin || '*';
|
|
@@ -88,256 +81,215 @@ var IframeAdapter = /*#__PURE__*/function () {
|
|
|
88
81
|
this.timeout = this.options.timeout || 10000;
|
|
89
82
|
this.setupMessageListener();
|
|
90
83
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
while (hasOwnProperty(this.pendingRequests, id)) {
|
|
96
|
-
id = generatorBase64Code();
|
|
97
|
-
}
|
|
98
|
-
return id;
|
|
84
|
+
generatorRequestId() {
|
|
85
|
+
let id = generatorBase64Code();
|
|
86
|
+
while (hasOwnProperty(this.pendingRequests, id)) {
|
|
87
|
+
id = generatorBase64Code();
|
|
99
88
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
source: WINDOW_EVENT_SOURCE_TYPE.IFRAME
|
|
116
|
-
})
|
|
89
|
+
return id;
|
|
90
|
+
}
|
|
91
|
+
setupMessageListener() {
|
|
92
|
+
if (this.selfWindow) return;
|
|
93
|
+
window.addEventListener('message', this.handleMessage.bind(this));
|
|
94
|
+
this.setEventsListener();
|
|
95
|
+
}
|
|
96
|
+
postWindowEvent(eventData) {
|
|
97
|
+
if (!eventData) return;
|
|
98
|
+
window.parent.postMessage({
|
|
99
|
+
type: POST_MESSAGE_TYPE.WINDOW_EVENT,
|
|
100
|
+
params: {
|
|
101
|
+
event_data: {
|
|
102
|
+
...eventData,
|
|
103
|
+
source: WINDOW_EVENT_SOURCE_TYPE.IFRAME
|
|
117
104
|
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
event: event
|
|
136
|
-
});
|
|
105
|
+
}
|
|
106
|
+
}, this.targetOrigin);
|
|
107
|
+
}
|
|
108
|
+
setEventsListener() {
|
|
109
|
+
let rafId = null;
|
|
110
|
+
let pendingEvent = null;
|
|
111
|
+
[...SUPPORT_WINDOW_MOUSE_EVENT_TYPES, ...SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES, ...SUPPORT_WINDOW_DRAG_EVENT_TYPES].forEach(eventType => {
|
|
112
|
+
window.addEventListener(eventType, event => {
|
|
113
|
+
if (event.source === WINDOW_EVENT_SOURCE_TYPE.APP) return;
|
|
114
|
+
if (HIGH_FREQUENCY_WINDOW_EVENT_TYPES.includes(eventType)) {
|
|
115
|
+
// High-frequency events that need throttling (use RAF to limit to 60fps)
|
|
116
|
+
// Use requestAnimationFrame for throttling high-frequency events
|
|
117
|
+
// Store the latest event with necessary data
|
|
118
|
+
pendingEvent = createWindowEventData({
|
|
119
|
+
eventType,
|
|
120
|
+
event
|
|
121
|
+
});
|
|
137
122
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
}
|
|
148
|
-
return;
|
|
123
|
+
// Only schedule a new frame if one isn't already scheduled
|
|
124
|
+
if (rafId === null) {
|
|
125
|
+
rafId = requestAnimationFrame(() => {
|
|
126
|
+
if (pendingEvent) {
|
|
127
|
+
this.postWindowEvent(pendingEvent);
|
|
128
|
+
pendingEvent = null;
|
|
129
|
+
rafId = null;
|
|
130
|
+
}
|
|
131
|
+
});
|
|
149
132
|
}
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
150
135
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
136
|
+
// Low-frequency events
|
|
137
|
+
this.postWindowEvent(createWindowEventData({
|
|
138
|
+
eventType,
|
|
139
|
+
event
|
|
140
|
+
}));
|
|
141
|
+
}, true);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
async request(method, params) {
|
|
145
|
+
if (this.selfWindow) {
|
|
146
|
+
return new Promise(resolve => {
|
|
147
|
+
resolve(null);
|
|
157
148
|
});
|
|
158
149
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
}
|
|
172
|
-
return _context.abrupt("return", new Promise(function (resolve) {
|
|
173
|
-
resolve(null);
|
|
174
|
-
}));
|
|
175
|
-
case 1:
|
|
176
|
-
requestId = this.generatorRequestId();
|
|
177
|
-
return _context.abrupt("return", new Promise(function (resolve, reject) {
|
|
178
|
-
_this2.pendingRequests[requestId] = {
|
|
179
|
-
resolve: resolve,
|
|
180
|
-
reject: reject
|
|
181
|
-
};
|
|
182
|
-
window.parent.postMessage({
|
|
183
|
-
type: POST_MESSAGE_TYPE.HTML_PAGE_REQUEST,
|
|
184
|
-
requestId: requestId,
|
|
185
|
-
method: method,
|
|
186
|
-
params: params
|
|
187
|
-
}, _this2.targetOrigin);
|
|
188
|
-
|
|
189
|
-
// request timeout
|
|
190
|
-
// reject and clear the pending request
|
|
191
|
-
var timeoutId = setTimeout(function () {
|
|
192
|
-
if (hasOwnProperty(_this2.pendingRequests, requestId)) {
|
|
193
|
-
delete _this2.pendingRequests[requestId];
|
|
194
|
-
reject(new Error("Request timeout: ".concat(method)));
|
|
195
|
-
}
|
|
196
|
-
}, _this2.timeout);
|
|
150
|
+
const requestId = this.generatorRequestId();
|
|
151
|
+
return new Promise((resolve, reject) => {
|
|
152
|
+
this.pendingRequests[requestId] = {
|
|
153
|
+
resolve,
|
|
154
|
+
reject
|
|
155
|
+
};
|
|
156
|
+
window.parent.postMessage({
|
|
157
|
+
type: POST_MESSAGE_TYPE.HTML_PAGE_REQUEST,
|
|
158
|
+
requestId,
|
|
159
|
+
method,
|
|
160
|
+
params
|
|
161
|
+
}, this.targetOrigin);
|
|
197
162
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
}
|
|
203
|
-
}));
|
|
204
|
-
case 2:
|
|
205
|
-
case "end":
|
|
206
|
-
return _context.stop();
|
|
207
|
-
}
|
|
208
|
-
}, _callee, this);
|
|
209
|
-
}));
|
|
210
|
-
function request(_x, _x2) {
|
|
211
|
-
return _request.apply(this, arguments);
|
|
212
|
-
}
|
|
213
|
-
return request;
|
|
214
|
-
}()
|
|
215
|
-
}, {
|
|
216
|
-
key: "handleMessage",
|
|
217
|
-
value: function handleMessage(event) {
|
|
218
|
-
var _event$data = event.data,
|
|
219
|
-
type = _event$data.type,
|
|
220
|
-
requestId = _event$data.requestId,
|
|
221
|
-
data = _event$data.data,
|
|
222
|
-
error = _event$data.error,
|
|
223
|
-
eventType = _event$data.eventType,
|
|
224
|
-
payload = _event$data.payload;
|
|
225
|
-
if (type === POST_MESSAGE_TYPE.HTML_PAGE_RESPONSE) {
|
|
226
|
-
var pending = this.pendingRequests[requestId];
|
|
227
|
-
if (pending) {
|
|
228
|
-
clearTimeout(pending.timeoutId);
|
|
163
|
+
// request timeout
|
|
164
|
+
// reject and clear the pending request
|
|
165
|
+
const timeoutId = setTimeout(() => {
|
|
166
|
+
if (hasOwnProperty(this.pendingRequests, requestId)) {
|
|
229
167
|
delete this.pendingRequests[requestId];
|
|
230
|
-
|
|
231
|
-
pending.reject(new Error(error));
|
|
232
|
-
} else {
|
|
233
|
-
pending.resolve(data ? JSON.parse(data) : null);
|
|
234
|
-
}
|
|
168
|
+
reject(new Error(`Request timeout: ${method}`));
|
|
235
169
|
}
|
|
236
|
-
}
|
|
237
|
-
this.emitEvent(eventType, payload);
|
|
238
|
-
} else if (type === POST_MESSAGE_TYPE.WINDOW_EVENT) {
|
|
239
|
-
var eventData = data.event_data;
|
|
240
|
-
if (!eventData) return;
|
|
241
|
-
var syntheticEvent;
|
|
242
|
-
var targetElement;
|
|
243
|
-
if (SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES.includes(eventData.type)) {
|
|
244
|
-
syntheticEvent = new KeyboardEvent(eventData.type, {
|
|
245
|
-
bubbles: true,
|
|
246
|
-
cancelable: true,
|
|
247
|
-
key: eventData.key,
|
|
248
|
-
code: eventData.code,
|
|
249
|
-
keyCode: eventData.keyCode,
|
|
250
|
-
ctrlKey: eventData.ctrlKey,
|
|
251
|
-
shiftKey: eventData.shiftKey,
|
|
252
|
-
altKey: eventData.altKey,
|
|
253
|
-
metaKey: eventData.metaKey,
|
|
254
|
-
repeat: eventData.repeat,
|
|
255
|
-
view: window
|
|
256
|
-
});
|
|
257
|
-
targetElement = document.activeElement || document.body;
|
|
258
|
-
} else if (SUPPORT_WINDOW_MOUSE_EVENT_TYPES.includes(eventData.type)) {
|
|
259
|
-
syntheticEvent = new MouseEvent(eventData.type, {
|
|
260
|
-
bubbles: true,
|
|
261
|
-
cancelable: true,
|
|
262
|
-
view: window,
|
|
263
|
-
clientX: eventData.x,
|
|
264
|
-
clientY: eventData.y,
|
|
265
|
-
screenX: eventData.x,
|
|
266
|
-
screenY: eventData.y,
|
|
267
|
-
button: eventData.button,
|
|
268
|
-
buttons: eventData.buttons
|
|
269
|
-
});
|
|
270
|
-
var elementAtPoint = document.elementFromPoint(eventData.x, eventData.y);
|
|
271
|
-
targetElement = elementAtPoint || document.body;
|
|
272
|
-
} else if (SUPPORT_WINDOW_DRAG_EVENT_TYPES.includes(eventData.type)) {
|
|
273
|
-
syntheticEvent = new DragEvent(eventData.type, {
|
|
274
|
-
bubbles: true,
|
|
275
|
-
cancelable: true,
|
|
276
|
-
view: window,
|
|
277
|
-
clientX: eventData.x,
|
|
278
|
-
clientY: eventData.y,
|
|
279
|
-
screenX: eventData.x,
|
|
280
|
-
screenY: eventData.y,
|
|
281
|
-
button: eventData.button,
|
|
282
|
-
buttons: eventData.buttons
|
|
283
|
-
});
|
|
284
|
-
var _elementAtPoint = document.elementFromPoint(eventData.x, eventData.y);
|
|
285
|
-
targetElement = _elementAtPoint || document.body;
|
|
286
|
-
}
|
|
287
|
-
if (!targetElement || !syntheticEvent) return;
|
|
170
|
+
}, this.timeout);
|
|
288
171
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
172
|
+
// save timeoutId for the pending request
|
|
173
|
+
const pending = this.pendingRequests[requestId];
|
|
174
|
+
if (pending) {
|
|
175
|
+
pending.timeoutId = timeoutId;
|
|
292
176
|
}
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
handlers.splice(index, 1);
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
handleMessage(event) {
|
|
180
|
+
const {
|
|
181
|
+
type,
|
|
182
|
+
requestId,
|
|
183
|
+
data,
|
|
184
|
+
error,
|
|
185
|
+
eventType,
|
|
186
|
+
payload
|
|
187
|
+
} = event.data;
|
|
188
|
+
if (type === POST_MESSAGE_TYPE.HTML_PAGE_RESPONSE) {
|
|
189
|
+
const pending = this.pendingRequests[requestId];
|
|
190
|
+
if (pending) {
|
|
191
|
+
clearTimeout(pending.timeoutId);
|
|
192
|
+
delete this.pendingRequests[requestId];
|
|
193
|
+
if (error) {
|
|
194
|
+
pending.reject(new Error(error));
|
|
195
|
+
} else {
|
|
196
|
+
pending.resolve(data ? JSON.parse(data) : null);
|
|
314
197
|
}
|
|
315
198
|
}
|
|
199
|
+
} else if (type === POST_MESSAGE_TYPE.HTML_PAGE_EVENT) {
|
|
200
|
+
this.emitEvent(eventType, payload);
|
|
201
|
+
} else if (type === POST_MESSAGE_TYPE.WINDOW_EVENT) {
|
|
202
|
+
const eventData = data.event_data;
|
|
203
|
+
if (!eventData) return;
|
|
204
|
+
let syntheticEvent;
|
|
205
|
+
let targetElement;
|
|
206
|
+
if (SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES.includes(eventData.type)) {
|
|
207
|
+
syntheticEvent = new KeyboardEvent(eventData.type, {
|
|
208
|
+
bubbles: true,
|
|
209
|
+
cancelable: true,
|
|
210
|
+
key: eventData.key,
|
|
211
|
+
code: eventData.code,
|
|
212
|
+
keyCode: eventData.keyCode,
|
|
213
|
+
ctrlKey: eventData.ctrlKey,
|
|
214
|
+
shiftKey: eventData.shiftKey,
|
|
215
|
+
altKey: eventData.altKey,
|
|
216
|
+
metaKey: eventData.metaKey,
|
|
217
|
+
repeat: eventData.repeat,
|
|
218
|
+
view: window
|
|
219
|
+
});
|
|
220
|
+
targetElement = document.activeElement || document.body;
|
|
221
|
+
} else if (SUPPORT_WINDOW_MOUSE_EVENT_TYPES.includes(eventData.type)) {
|
|
222
|
+
syntheticEvent = new MouseEvent(eventData.type, {
|
|
223
|
+
bubbles: true,
|
|
224
|
+
cancelable: true,
|
|
225
|
+
view: window,
|
|
226
|
+
clientX: eventData.x,
|
|
227
|
+
clientY: eventData.y,
|
|
228
|
+
screenX: eventData.x,
|
|
229
|
+
screenY: eventData.y,
|
|
230
|
+
button: eventData.button,
|
|
231
|
+
buttons: eventData.buttons
|
|
232
|
+
});
|
|
233
|
+
const elementAtPoint = document.elementFromPoint(eventData.x, eventData.y);
|
|
234
|
+
targetElement = elementAtPoint || document.body;
|
|
235
|
+
} else if (SUPPORT_WINDOW_DRAG_EVENT_TYPES.includes(eventData.type)) {
|
|
236
|
+
syntheticEvent = new DragEvent(eventData.type, {
|
|
237
|
+
bubbles: true,
|
|
238
|
+
cancelable: true,
|
|
239
|
+
view: window,
|
|
240
|
+
clientX: eventData.x,
|
|
241
|
+
clientY: eventData.y,
|
|
242
|
+
screenX: eventData.x,
|
|
243
|
+
screenY: eventData.y,
|
|
244
|
+
button: eventData.button,
|
|
245
|
+
buttons: eventData.buttons
|
|
246
|
+
});
|
|
247
|
+
const elementAtPoint = document.elementFromPoint(eventData.x, eventData.y);
|
|
248
|
+
targetElement = elementAtPoint || document.body;
|
|
249
|
+
}
|
|
250
|
+
if (!targetElement || !syntheticEvent) return;
|
|
251
|
+
|
|
252
|
+
// Dispatch once on the target element, it will bubble up naturally
|
|
253
|
+
syntheticEvent.source = eventData.source;
|
|
254
|
+
targetElement.dispatchEvent(syntheticEvent);
|
|
316
255
|
}
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
handlers.forEach(function (handler) {
|
|
322
|
-
try {
|
|
323
|
-
handler(payload);
|
|
324
|
-
} catch (error) {
|
|
325
|
-
// eslint-disable-next-line
|
|
326
|
-
console.error("Error in event handler for ".concat(eventType, ":"), error);
|
|
327
|
-
}
|
|
328
|
-
});
|
|
256
|
+
}
|
|
257
|
+
on(eventType, handler) {
|
|
258
|
+
if (!hasOwnProperty(this.eventHandlers, eventType)) {
|
|
259
|
+
this.eventHandlers[eventType] = [];
|
|
329
260
|
}
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
261
|
+
this.eventHandlers[eventType].push(handler);
|
|
262
|
+
return () => this.off(eventType, handler);
|
|
263
|
+
}
|
|
264
|
+
off(eventType, handler) {
|
|
265
|
+
const handlers = this.eventHandlers[eventType];
|
|
266
|
+
if (handlers) {
|
|
267
|
+
const index = handlers.indexOf(handler);
|
|
268
|
+
if (index !== -1) {
|
|
269
|
+
handlers.splice(index, 1);
|
|
270
|
+
}
|
|
339
271
|
}
|
|
340
|
-
}
|
|
341
|
-
|
|
272
|
+
}
|
|
273
|
+
emitEvent(eventType, payload) {
|
|
274
|
+
const handlers = this.eventHandlers[eventType] || [];
|
|
275
|
+
handlers.forEach(handler => {
|
|
276
|
+
try {
|
|
277
|
+
handler(payload);
|
|
278
|
+
} catch (error) {
|
|
279
|
+
// eslint-disable-next-line
|
|
280
|
+
console.error(`Error in event handler for ${eventType}:`, error);
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
destroy() {
|
|
285
|
+
this.pendingRequests.forEach(pending => {
|
|
286
|
+
clearTimeout(pending.timeoutId);
|
|
287
|
+
pending.reject(new Error('Adapter destroyed'));
|
|
288
|
+
});
|
|
289
|
+
this.pendingRequests = {};
|
|
290
|
+
this.eventHandlers = {};
|
|
291
|
+
}
|
|
292
|
+
}
|
|
342
293
|
|
|
343
294
|
export { IframeAdapter, POST_MESSAGE_REQUEST_TYPE };
|
|
295
|
+
//# sourceMappingURL=iframe-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iframe-adapter.js","sources":["../src/iframe-adapter.js"],"sourcesContent":["const POST_MESSAGE_TYPE = {\n HTML_PAGE_REQUEST: 'HTML_PAGE_REQUEST',\n HTML_PAGE_RESPONSE: 'HTML_PAGE_RESPONSE',\n HTML_PAGE_EVENT: 'HTML_PAGE_EVENT',\n WINDOW_EVENT: 'WINDOW_EVENT',\n};\n\nexport const POST_MESSAGE_REQUEST_TYPE = {\n GET_SERVER: 'get_server',\n GET_ACCESS_TOKEN: 'get_access_token',\n GET_APP_UUID: 'get_app_uuid',\n GET_PAGE_ID: 'get_page_id',\n};\n\nconst WINDOW_EVENT_SOURCE_TYPE = {\n APP: 'app',\n IFRAME: 'iframe',\n};\nconst SUPPORT_WINDOW_MOUSE_EVENT_TYPES = ['click', 'dblclick', 'mousemove', 'mouseenter', 'mouseleave', 'mousedown', 'mouseup', 'contextmenu'];\nconst SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES = ['keydown', 'keyup', 'keypress'];\nconst SUPPORT_WINDOW_DRAG_EVENT_TYPES = ['dragstart', 'dragover', 'drag', 'dragend', 'dragenter', 'dragleave', 'drop'];\nconst HIGH_FREQUENCY_WINDOW_EVENT_TYPES = ['mousemove', 'dragover'];\n\nconst hasOwnProperty = (obj, key) => {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\nconst generatorBase64Code = (keyLength = 4) => {\n let possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz0123456789';\n let key = '';\n for (let i = 0; i < keyLength; i++) {\n key += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n return key;\n};\n\nconst createWindowEventData = ({ eventType, event }) => {\n if (SUPPORT_WINDOW_MOUSE_EVENT_TYPES.includes(eventType)) {\n return {\n type: eventType,\n x: event.x,\n y: event.y,\n button: event.button,\n buttons: event.buttons,\n };\n }\n if (SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES.includes(eventType)) {\n return {\n type: eventType,\n key: event.key,\n code: event.code,\n keyCode: event.keyCode,\n ctrlKey: event.ctrlKey,\n shiftKey: event.shiftKey,\n altKey: event.altKey,\n metaKey: event.metaKey,\n repeat: event.repeat,\n };\n }\n if (SUPPORT_WINDOW_DRAG_EVENT_TYPES.includes(eventType)) {\n return {\n type: eventType,\n x: event.x,\n y: event.y,\n };\n }\n return null;\n};\n\n/**\n * IframeAdapter – enables secure postMessage communication in production environments\n * For HTML page running inside an iframe\n */\nexport class IframeAdapter {\n constructor(options) {\n this.options = options || {};\n this.selfWindow = window.parent === window.self;\n this.targetOrigin = this.options.targetOrigin || '*';\n this.pendingRequests = {};\n this.eventHandlers = {};\n this.timeout = this.options.timeout || 10000;\n this.setupMessageListener();\n }\n\n generatorRequestId() {\n let id = generatorBase64Code();\n while (hasOwnProperty(this.pendingRequests, id)) {\n id = generatorBase64Code();\n }\n return id;\n }\n\n setupMessageListener() {\n if (this.selfWindow) return;\n window.addEventListener('message', this.handleMessage.bind(this));\n this.setEventsListener();\n }\n\n postWindowEvent(eventData) {\n if (!eventData) return;\n window.parent.postMessage({\n type: POST_MESSAGE_TYPE.WINDOW_EVENT,\n params: {\n event_data: {\n ...eventData,\n source: WINDOW_EVENT_SOURCE_TYPE.IFRAME,\n }\n }\n }, this.targetOrigin);\n }\n\n setEventsListener() {\n let rafId = null;\n let pendingEvent = null;\n [\n ...SUPPORT_WINDOW_MOUSE_EVENT_TYPES,\n ...SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES,\n ...SUPPORT_WINDOW_DRAG_EVENT_TYPES,\n ].forEach(eventType => {\n window.addEventListener(eventType, (event) => {\n if (event.source === WINDOW_EVENT_SOURCE_TYPE.APP) return;\n if (HIGH_FREQUENCY_WINDOW_EVENT_TYPES.includes(eventType)) {\n // High-frequency events that need throttling (use RAF to limit to 60fps)\n // Use requestAnimationFrame for throttling high-frequency events\n // Store the latest event with necessary data\n pendingEvent = createWindowEventData({ eventType, event });\n\n // Only schedule a new frame if one isn't already scheduled\n if (rafId === null) {\n rafId = requestAnimationFrame(() => {\n if (pendingEvent) {\n this.postWindowEvent(pendingEvent);\n pendingEvent = null;\n rafId = null;\n }\n });\n }\n return;\n }\n\n // Low-frequency events\n this.postWindowEvent(createWindowEventData({ eventType, event }));\n }, true);\n });\n }\n\n async request(method, params) {\n if (this.selfWindow) {\n return new Promise((resolve) => {\n resolve(null);\n });\n }\n const requestId = this.generatorRequestId();\n return new Promise((resolve, reject) => {\n this.pendingRequests[requestId] = { resolve, reject };\n window.parent.postMessage({\n type: POST_MESSAGE_TYPE.HTML_PAGE_REQUEST,\n requestId,\n method,\n params\n }, this.targetOrigin);\n\n // request timeout\n // reject and clear the pending request\n const timeoutId = setTimeout(() => {\n if (hasOwnProperty(this.pendingRequests, requestId)) {\n delete this.pendingRequests[requestId];\n reject(new Error(`Request timeout: ${method}`));\n }\n }, this.timeout);\n\n // save timeoutId for the pending request\n const pending = this.pendingRequests[requestId];\n if (pending) {\n pending.timeoutId = timeoutId;\n }\n });\n }\n\n handleMessage(event) {\n const { type, requestId, data, error, eventType, payload } = event.data;\n if (type === POST_MESSAGE_TYPE.HTML_PAGE_RESPONSE) {\n const pending = this.pendingRequests[requestId];\n if (pending) {\n clearTimeout(pending.timeoutId);\n delete this.pendingRequests[requestId];\n if (error) {\n pending.reject(new Error(error));\n } else {\n pending.resolve(data ? JSON.parse(data) : null);\n }\n }\n } else if (type === POST_MESSAGE_TYPE.HTML_PAGE_EVENT) {\n this.emitEvent(eventType, payload);\n } else if (type === POST_MESSAGE_TYPE.WINDOW_EVENT) {\n const eventData = data.event_data;\n if (!eventData) return;\n let syntheticEvent;\n let targetElement;\n if (SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES.includes(eventData.type)) {\n syntheticEvent = new KeyboardEvent(eventData.type, {\n bubbles: true,\n cancelable: true,\n key: eventData.key,\n code: eventData.code,\n keyCode: eventData.keyCode,\n ctrlKey: eventData.ctrlKey,\n shiftKey: eventData.shiftKey,\n altKey: eventData.altKey,\n metaKey: eventData.metaKey,\n repeat: eventData.repeat,\n view: window,\n });\n targetElement = document.activeElement || document.body;\n } else if (SUPPORT_WINDOW_MOUSE_EVENT_TYPES.includes(eventData.type)) {\n syntheticEvent = new MouseEvent(eventData.type, {\n bubbles: true,\n cancelable: true,\n view: window,\n clientX: eventData.x,\n clientY: eventData.y,\n screenX: eventData.x,\n screenY: eventData.y,\n button: eventData.button,\n buttons: eventData.buttons,\n });\n const elementAtPoint = document.elementFromPoint(eventData.x, eventData.y);\n targetElement = elementAtPoint || document.body;\n } else if (SUPPORT_WINDOW_DRAG_EVENT_TYPES.includes(eventData.type)) {\n syntheticEvent = new DragEvent(eventData.type, {\n bubbles: true,\n cancelable: true,\n view: window,\n clientX: eventData.x,\n clientY: eventData.y,\n screenX: eventData.x,\n screenY: eventData.y,\n button: eventData.button,\n buttons: eventData.buttons,\n });\n const elementAtPoint = document.elementFromPoint(eventData.x, eventData.y);\n targetElement = elementAtPoint || document.body;\n }\n\n if (!targetElement || !syntheticEvent) return;\n\n // Dispatch once on the target element, it will bubble up naturally\n syntheticEvent.source = eventData.source;\n targetElement.dispatchEvent(syntheticEvent);\n }\n }\n\n on(eventType, handler) {\n if (!hasOwnProperty(this.eventHandlers, eventType)) {\n this.eventHandlers[eventType] = [];\n }\n this.eventHandlers[eventType].push(handler);\n return () => this.off(eventType, handler);\n }\n\n off(eventType, handler) {\n const handlers = this.eventHandlers[eventType];\n if (handlers) {\n const index = handlers.indexOf(handler);\n if (index !== -1) {\n handlers.splice(index, 1);\n }\n }\n }\n\n emitEvent(eventType, payload) {\n const handlers = this.eventHandlers[eventType] || [];\n handlers.forEach(handler => {\n try {\n handler(payload);\n } catch (error) {\n // eslint-disable-next-line\n console.error(`Error in event handler for ${eventType}:`, error);\n }\n });\n }\n\n destroy() {\n this.pendingRequests.forEach(pending => {\n clearTimeout(pending.timeoutId);\n pending.reject(new Error('Adapter destroyed'));\n });\n this.pendingRequests = {};\n this.eventHandlers = {};\n }\n}\n"],"names":["POST_MESSAGE_TYPE","HTML_PAGE_REQUEST","HTML_PAGE_RESPONSE","HTML_PAGE_EVENT","WINDOW_EVENT","POST_MESSAGE_REQUEST_TYPE","GET_SERVER","GET_ACCESS_TOKEN","GET_APP_UUID","GET_PAGE_ID","WINDOW_EVENT_SOURCE_TYPE","APP","IFRAME","SUPPORT_WINDOW_MOUSE_EVENT_TYPES","SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES","SUPPORT_WINDOW_DRAG_EVENT_TYPES","HIGH_FREQUENCY_WINDOW_EVENT_TYPES","hasOwnProperty","obj","key","Object","prototype","call","generatorBase64Code","keyLength","arguments","length","undefined","possible","i","charAt","Math","floor","random","createWindowEventData","_ref","eventType","event","includes","type","x","y","button","buttons","code","keyCode","ctrlKey","shiftKey","altKey","metaKey","repeat","IframeAdapter","constructor","options","selfWindow","window","parent","self","targetOrigin","pendingRequests","eventHandlers","timeout","setupMessageListener","generatorRequestId","id","addEventListener","handleMessage","bind","setEventsListener","postWindowEvent","eventData","postMessage","params","event_data","source","rafId","pendingEvent","forEach","requestAnimationFrame","request","method","Promise","resolve","requestId","reject","timeoutId","setTimeout","Error","pending","data","error","payload","clearTimeout","JSON","parse","emitEvent","syntheticEvent","targetElement","KeyboardEvent","bubbles","cancelable","view","document","activeElement","body","MouseEvent","clientX","clientY","screenX","screenY","elementAtPoint","elementFromPoint","DragEvent","dispatchEvent","on","handler","push","off","handlers","index","indexOf","splice","console","destroy"],"mappings":"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"}
|
package/es/index.js
CHANGED
package/es/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|