{"size": 9210, "ext": "js", "max_stars_repo_path": "node_modules/magic-sdk/dist/module/iframe-controller.js", "max_stars_repo_name": "cyrilferte/potatoDAO", "max_stars_repo_stars_event_min_datetime": null, "max_stars_repo_stars_event_max_datetime": null, "max_issues_repo_path": "node_modules/magic-sdk/dist/module/iframe-controller.js", "max_issues_repo_name": "cyrilferte/potatoDAO", "max_issues_repo_issues_event_min_datetime": null, "max_issues_repo_issues_event_max_datetime": null, "max_forks_repo_path": "node_modules/magic-sdk/dist/module/iframe-controller.js", "max_forks_repo_name": "cyrilferte/potatoDAO", "max_forks_repo_forks_event_min_datetime": null, "max_forks_repo_forks_event_max_datetime": null}
{"max_stars_count": null, "max_issues_count": null, "max_forks_count": null, "avg_line_length": 43.0373831776, "max_line_length": 169, "alphanum_fraction": 0.5120521173}
/* eslint-disable no-underscore-dangle */
var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
var __generator = (this && this.__generator) || function (thisArg, body) {
    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
    function verb(n) { return function (v) { return step([n, v]); }; }
    function step(op) {
        if (f) throw new TypeError("Generator is already executing.");
        while (_) try {
            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
            if (y = 0, t) op = [op[0] & 2, t.value];
            switch (op[0]) {
                case 0: case 1: t = op; break;
                case 4: _.label++; return { value: op[1], done: false };
                case 5: _.label++; y = op[1]; op = [0]; continue;
                case 7: op = _.ops.pop(); _.trys.pop(); continue;
                default:
                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
                    if (t[2]) _.ops.pop();
                    _.trys.pop(); continue;
            }
            op = body.call(thisArg, _);
        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
    }
};
var __values = (this && this.__values) || function(o) {
    var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
    if (m) return m.call(o);
    if (o && typeof o.length === "number") return {
        next: function () {
            if (o && i >= o.length) o = void 0;
            return { value: o && o[i++], done: !o };
        }
    };
    throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read = (this && this.__read) || function (o, n) {
    var m = typeof Symbol === "function" && o[Symbol.iterator];
    if (!m) return o;
    var i = m.call(o), r, ar = [], e;
    try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
    }
    catch (error) { e = { error: error }; }
    finally {
        try {
            if (r && !r.done && (m = i["return"])) m.call(i);
        }
        finally { if (e) throw e.error; }
    }
    return ar;
};
import { ViewController, createDuplicateIframeWarning, createURL, createModalNotReadyError } from '@magic-sdk/provider';
/**
 * Magic `<iframe>` overlay styles. These base styles enable `<iframe>` UI
 * to render above all other DOM content.
 */
var overlayStyles = {
    display: 'none',
    position: 'fixed',
    top: '0',
    right: '0',
    width: '100%',
    height: '100%',
    borderRadius: '0',
    border: 'none',
    zIndex: '2147483647',
};
/**
 * Apply iframe styles to the given element.
 * @param elem - An element to apply styles using CSSOM.
 */
function applyOverlayStyles(elem) {
    var e_1, _a;
    try {
        for (var _b = __values(Object.entries(overlayStyles)), _c = _b.next(); !_c.done; _c = _b.next()) {
            var _d = __read(_c.value, 2), cssProperty = _d[0], value = _d[1];
            /* eslint-disable-next-line no-param-reassign */
            elem.style[cssProperty] = value;
        }
    }
    catch (e_1_1) { e_1 = { error: e_1_1 }; }
    finally {
        try {
            if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
        }
        finally { if (e_1) throw e_1.error; }
    }
}
/**
 * Checks if the given query params are associated with an active `<iframe>`
 * instance.
 *
 * @param encodedQueryParams - The unique, encoded query parameters to check for
 * duplicates against.
 */
function checkForSameSrcInstances(encodedQueryParams) {
    var iframes = [].slice.call(document.querySelectorAll('.magic-iframe'));
    return Boolean(iframes.find(function (iframe) { return iframe.src.includes(encodedQueryParams); }));
}
/**
 * View controller for the Magic `<iframe>` overlay.
 */
var IframeController = /** @class */ (function (_super) {
    __extends(IframeController, _super);
    function IframeController() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    IframeController.prototype.init = function () {
        this.iframe = this.createIframe();
    };
    IframeController.prototype.createIframe = function () {
        var _this = this;
        return new Promise(function (resolve) {
            var onload = function () {
                if (!checkForSameSrcInstances(encodeURIComponent(_this.encodedQueryParams))) {
                    var iframe = document.createElement('iframe');
                    iframe.classList.add('magic-iframe');
                    iframe.dataset.magicIframeLabel = createURL(_this.endpoint).host;
                    iframe.src = createURL("/send?params=" + encodeURIComponent(_this.encodedQueryParams), _this.endpoint).href;
                    applyOverlayStyles(iframe);
                    document.body.appendChild(iframe);
                    resolve(iframe);
                }
                else {
                    createDuplicateIframeWarning().log();
                }
            };
            // Check DOM state and load...
            if (['loaded', 'interactive', 'complete'].includes(document.readyState)) {
                onload();
            }
            else {
                // ...or check load events to load
                window.addEventListener('load', onload, false);
            }
        });
    };
    IframeController.prototype.showOverlay = function () {
        return __awaiter(this, void 0, void 0, function () {
            var overlayResolved;
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0: return [4 /*yield*/, this.iframe];
                    case 1:
                        overlayResolved = _a.sent();
                        overlayResolved.style.display = 'block';
                        return [2 /*return*/];
                }
            });
        });
    };
    IframeController.prototype.hideOverlay = function () {
        return __awaiter(this, void 0, void 0, function () {
            var overlayResolved;
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0: return [4 /*yield*/, this.iframe];
                    case 1:
                        overlayResolved = _a.sent();
                        overlayResolved.style.display = 'none';
                        return [2 /*return*/];
                }
            });
        });
    };
    IframeController.prototype.postMessage = function (data) {
        return __awaiter(this, void 0, void 0, function () {
            var iframe;
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0: return [4 /*yield*/, this.iframe];
                    case 1:
                        iframe = _a.sent();
                        if (iframe && iframe.contentWindow) {
                            iframe.contentWindow.postMessage(data, this.endpoint);
                        }
                        else {
                            throw createModalNotReadyError();
                        }
                        return [2 /*return*/];
                }
            });
        });
    };
    return IframeController;
}(ViewController));
export { IframeController };
//# sourceMappingURL=iframe-controller.js.map