1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.IframeManager = void 0;
|
4 | var IframeManager = (function () {
|
5 | function IframeManager() {
|
6 | var _this = this;
|
7 | this.listener = function (event) {
|
8 | var data = event.data;
|
9 | var message = data.message;
|
10 | var _data = data.data;
|
11 | var stack = _this.event.get(message);
|
12 | if (!stack) {
|
13 | return;
|
14 | }
|
15 | stack.forEach(function (func) {
|
16 | func(_data);
|
17 | });
|
18 | };
|
19 | console.log('init iframe manager');
|
20 | this.event = new Map();
|
21 | if (typeof window == 'undefined') {
|
22 | console.log('window is undefined');
|
23 | return;
|
24 | }
|
25 | window.addEventListener('message', this.listener);
|
26 | }
|
27 | IframeManager.prototype.subscribe = function (eventName, func) {
|
28 | if (!this.event.has(eventName)) {
|
29 | this.event.set(eventName, new Set([func]));
|
30 | return;
|
31 | }
|
32 | var stack = this.event.get(eventName) || new Set();
|
33 | if (stack.has(func)) {
|
34 | console.error('has same function');
|
35 | return;
|
36 | }
|
37 | stack.add(func);
|
38 | this.event.set(eventName, stack);
|
39 | };
|
40 | IframeManager.prototype.unSubscribe = function (eventName, func) {
|
41 | if (!this.event.has(eventName)) {
|
42 | console.error('there are no subscribe');
|
43 | return;
|
44 | }
|
45 | var stack = this.event.get(eventName) || new Set();
|
46 | stack.delete(func);
|
47 | this.event.set(eventName, stack);
|
48 | };
|
49 | IframeManager.prototype.unSubscribeAll = function () {
|
50 | this.event = new Map();
|
51 | };
|
52 | IframeManager.prototype.triggerEvent = function (_a) {
|
53 | var _b;
|
54 | var iframeRef = _a.iframeRef, eventName = _a.eventName, data = _a.data;
|
55 | (_b = iframeRef === null || iframeRef === void 0 ? void 0 : iframeRef.contentWindow) === null || _b === void 0 ? void 0 : _b.postMessage({
|
56 | msg: eventName,
|
57 | data: data
|
58 | }, '*');
|
59 | };
|
60 | return IframeManager;
|
61 | }());
|
62 | exports.IframeManager = IframeManager;
|