UNPKG

@phemium-costaisa/amazon-quicksight-embedding-sdk

Version:
94 lines (93 loc) 4.11 kB
"use strict"; // Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; exports.__esModule = true; var commons_1 = require("../../commons"); var createExperienceFrame_1 = __importDefault(require("../createExperienceFrame")); var enums_1 = require("../../enums"); var _1 = require("."); var commons_2 = require("../commons"); var createControlFrame = function (container, controlOptions, onChange, onMessage) { var eventManager = controlOptions.eventManager, urlInfo = controlOptions.urlInfo, contextId = controlOptions.contextId; var experience = { experienceType: enums_1.ExperienceType.CONTROL }; var internalExperience = __assign(__assign({}, experience), { contextId: contextId, discriminator: 0 }); var controlUrl = (0, _1.getControlExperienceBaseUrl)(experience, urlInfo).href; var experienceEventListenerBuilder = eventManager.experienceEventListenerBuilder, invokeEventListener = eventManager.invokeEventListener; var experienceIdentifier = (0, _1.getControlExperienceIdentifier)(internalExperience); experienceEventListenerBuilder(experienceIdentifier, onMessage); var _a = (0, createExperienceFrame_1["default"])({ frameOptions: { url: controlUrl, container: container, width: '0px', height: '0px', onChange: onChange }, contentOptions: { onMessage: onMessage }, transformedContentOptions: {}, controlOptions: { eventManager: eventManager, contextId: contextId, timeout: commons_1.FRAME_TIMEOUT, urlInfo: urlInfo }, internalExperience: internalExperience, experienceIdentifier: experienceIdentifier }), internalSend = _a.internalSend, frame = _a.frame; var sendAcknowledgment = function (messageEvent) { var _a; var acknowledgment = { eventName: enums_1.MessageEventName.ACKNOWLEDGE, eventTarget: internalExperience, message: { eventName: messageEvent.eventName, eventTarget: messageEvent.eventTarget } }; ((_a = window.requestIdleCallback) === null || _a === void 0 ? void 0 : _a.call(window, function () { return internalSend(acknowledgment); })) || internalSend(acknowledgment); }; var messageListener = function (event) { var _messageEvent = event.data; if ((0, commons_1.isMessageEvent)(_messageEvent)) { try { var incomingExperienceIdentifier = (0, commons_2.getExperienceIdentifier)(_messageEvent.eventTarget); invokeEventListener(incomingExperienceIdentifier, _messageEvent); sendAcknowledgment(_messageEvent); } catch (error) { onChange === null || onChange === void 0 ? void 0 : onChange({ eventName: enums_1.ChangeEventName.UNRECOGNIZED_EVENT_TARGET, eventLevel: enums_1.ChangeEventLevel.WARN, message: 'Message with unrecognized event target received', data: { eventTarget: _messageEvent.eventTarget } }, { frame: frame }); console.warn('Message with unrecognized event target received'); } } }; window.addEventListener('message', messageListener); return { internalSend: internalSend }; }; exports["default"] = createControlFrame;