iframe.io 0.0.4 → 0.0.8
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/index.js +70 -24
- package/package.json +6 -4
package/dist/index.js
CHANGED
|
@@ -10,7 +10,19 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
};
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
14
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
15
|
+
if (ar || !(i in from)) {
|
|
16
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
17
|
+
ar[i] = from[i];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
21
|
+
};
|
|
13
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
function newObject(data) {
|
|
24
|
+
return JSON.parse(JSON.stringify(data));
|
|
25
|
+
}
|
|
14
26
|
var IFrameIO = /** @class */ (function () {
|
|
15
27
|
function IFrameIO(options) {
|
|
16
28
|
if (options && typeof options !== 'object')
|
|
@@ -19,7 +31,7 @@ var IFrameIO = /** @class */ (function () {
|
|
|
19
31
|
this.Events = {};
|
|
20
32
|
this.peer = { type: 'IFRAME' };
|
|
21
33
|
if (options.type)
|
|
22
|
-
this.peer.type = options.type;
|
|
34
|
+
this.peer.type = options.type.toUpperCase();
|
|
23
35
|
}
|
|
24
36
|
IFrameIO.prototype.debug = function () {
|
|
25
37
|
var args = [];
|
|
@@ -45,21 +57,20 @@ var IFrameIO = /** @class */ (function () {
|
|
|
45
57
|
|| typeof data !== 'object'
|
|
46
58
|
|| !data.hasOwnProperty('_event'))
|
|
47
59
|
return;
|
|
48
|
-
var _b = data, _event = _b._event, payload = _b.payload;
|
|
60
|
+
var _b = data, _event = _b._event, payload = _b.payload, callback = _b.callback;
|
|
49
61
|
_this.debug("[".concat(_this.peer.type, "] Message: ").concat(_event), payload || '');
|
|
50
62
|
// Handshake or availability check events
|
|
51
|
-
if (_event == 'pong')
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
// Trigger listeners
|
|
57
|
-
_this.
|
|
58
|
-
// Delete once event listeners
|
|
59
|
-
delete _this.Events[_event + '--@once'];
|
|
63
|
+
if (_event == 'pong') {
|
|
64
|
+
// Content Window is connected to iframe
|
|
65
|
+
_this.trigger('connect');
|
|
66
|
+
return _this.debug("[".concat(_this.peer.type, "] connected"));
|
|
67
|
+
}
|
|
68
|
+
// Trigger available event listeners
|
|
69
|
+
_this.trigger(_event, payload, callback);
|
|
60
70
|
}, false);
|
|
61
71
|
this.debug("[".concat(this.peer.type, "] Initiate connection: IFrame origin <").concat(iframeOrigin, ">"));
|
|
62
72
|
this.emit('ping');
|
|
73
|
+
return this;
|
|
63
74
|
};
|
|
64
75
|
IFrameIO.prototype.listen = function (hostOrigin) {
|
|
65
76
|
// Listening to connection from the content window
|
|
@@ -84,19 +95,47 @@ var IFrameIO = /** @class */ (function () {
|
|
|
84
95
|
// Origin different from handshaked source origin
|
|
85
96
|
else if (origin !== _this.peer.origin)
|
|
86
97
|
throw new Error('Invalid Origin');
|
|
87
|
-
var _event = data._event, payload = data.payload;
|
|
98
|
+
var _event = data._event, payload = data.payload, callback = data.callback;
|
|
88
99
|
_this.debug("[".concat(_this.peer.type, "] Message: ").concat(_event), payload || '');
|
|
89
100
|
// Handshake or availability check events
|
|
90
|
-
if (_event == 'ping')
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
return _this.debug("[".concat(_this.peer.type, "]
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
delete _this.Events[_event + '--@once'];
|
|
101
|
+
if (_event == 'ping') {
|
|
102
|
+
_this.emit('pong');
|
|
103
|
+
// Iframe is connected to content window
|
|
104
|
+
_this.trigger('connect');
|
|
105
|
+
return _this.debug("[".concat(_this.peer.type, "] connected"));
|
|
106
|
+
}
|
|
107
|
+
// Trigger available event listeners
|
|
108
|
+
_this.trigger(_event, payload, callback);
|
|
99
109
|
}, false);
|
|
110
|
+
return this;
|
|
111
|
+
};
|
|
112
|
+
IFrameIO.prototype.trigger = function (_event, payload, callback) {
|
|
113
|
+
var _this = this;
|
|
114
|
+
// Volatile event
|
|
115
|
+
if (!this.Events[_event]
|
|
116
|
+
&& !this.Events[_event + '--@once'])
|
|
117
|
+
return this.debug("[".concat(this.peer.type, "] No <").concat(_event, "> listener defined"));
|
|
118
|
+
var callbackFn = callback ?
|
|
119
|
+
function (error) {
|
|
120
|
+
var args = [];
|
|
121
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
122
|
+
args[_i - 1] = arguments[_i];
|
|
123
|
+
}
|
|
124
|
+
_this.emit(_event + '--@callback', { error: error || false, args: args });
|
|
125
|
+
return;
|
|
126
|
+
} : undefined;
|
|
127
|
+
var listeners = [];
|
|
128
|
+
if (this.Events[_event + '--@once']) {
|
|
129
|
+
// Once triggable event
|
|
130
|
+
_event += '--@once';
|
|
131
|
+
listeners = this.Events[_event];
|
|
132
|
+
// Delete once event listeners after triggered
|
|
133
|
+
delete this.Events[_event];
|
|
134
|
+
}
|
|
135
|
+
else
|
|
136
|
+
listeners = this.Events[_event];
|
|
137
|
+
// Trigger listeners
|
|
138
|
+
listeners.map(function (fn) { return payload ? fn(payload, callbackFn) : fn(callbackFn); });
|
|
100
139
|
};
|
|
101
140
|
IFrameIO.prototype.emit = function (_event, payload, fn) {
|
|
102
141
|
if (!this.peer.source)
|
|
@@ -105,10 +144,17 @@ var IFrameIO = /** @class */ (function () {
|
|
|
105
144
|
fn = payload;
|
|
106
145
|
payload = null;
|
|
107
146
|
}
|
|
108
|
-
this.peer.source.postMessage(JSON.parse(JSON.stringify({ _event: _event, payload: payload })), this.peer.origin);
|
|
109
147
|
// Acknowledge/callback event listener
|
|
110
|
-
|
|
111
|
-
|
|
148
|
+
var hasCallback = false;
|
|
149
|
+
if (typeof fn === 'function') {
|
|
150
|
+
var callbackFunction_1 = fn;
|
|
151
|
+
this.once(_event + '--@callback', function (_a) {
|
|
152
|
+
var error = _a.error, args = _a.args;
|
|
153
|
+
return callbackFunction_1.apply(void 0, __spreadArray([error], args, false));
|
|
154
|
+
});
|
|
155
|
+
hasCallback = true;
|
|
156
|
+
}
|
|
157
|
+
this.peer.source.postMessage(newObject({ _event: _event, payload: payload, callback: hasCallback }), this.peer.origin);
|
|
112
158
|
return this;
|
|
113
159
|
};
|
|
114
160
|
IFrameIO.prototype.on = function (_event, fn) {
|
package/package.json
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iframe.io",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.8",
|
|
4
4
|
"description": "Easy and friendly API to connect and interact between content window and its containing iframe",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
|
-
"type": "commonjs",
|
|
7
6
|
"types": "./src/index.d.ts",
|
|
8
7
|
"exports": {
|
|
9
|
-
"
|
|
10
|
-
|
|
8
|
+
".": {
|
|
9
|
+
"import": "./dist/index.js",
|
|
10
|
+
"require": "./dist/index.js",
|
|
11
|
+
"types": "./src/index.d.ts"
|
|
12
|
+
}
|
|
11
13
|
},
|
|
12
14
|
"private": false,
|
|
13
15
|
"scripts": {
|