@phemium-costaisa/amazon-quicksight-embedding-sdk
Version:
JS SDK for embedding Amazon QuickSight
94 lines (93 loc) • 4.11 kB
JavaScript
;
// 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;