content/hifi-content/caitlyn/production/facialEmoter/script.js
2022-02-13 22:19:19 +01:00

113 lines
No EOL
3.1 KiB
JavaScript

var states = [];
//TODO: Remember to move these to a separate lib.
function createElement(type, className, content) {
var element = document.createElement(type);
element.className = className;
if (content) {
if (content instanceof Element) {
element.appendChild(content);
} else {
element.innerText = content;
}
}
return element;
}
function createDiv(className, content) {
return createElement("div", className, content);
}
function createTitle(title) {
var spanTitle = createElement("span", "", title);
return createDiv("drop-title", spanTitle);
}
function createButton(title, event) {
var button = createElement("div", "button");
if (title instanceof Array) {
button.appendChild(createElement("span", "", title[0] + " " + title[1]));
button.className = "button " + title[1].toLowerCase();
button.onclick = function (e) {
event(e, title); // Additiona info inject
}
} else {
button.appendChild(createElement("span", "", title));
button.onclick = function (e) {
event(e, title); // Additiona info inject
}
}
return button;
}
function dropDown(root, title, list, clickEvent) {
var contentGroup = document.createElement("div");
contentGroup.className = "content-group unfurl";
var dropElement = document.createElement("div");
dropElement.className = "drop-down";
var ids = {};
var titleElement = createTitle(title);
contentGroup.appendChild(titleElement);
var listElement = createElement("div", "content-wrap");
for (var i = 0; i < list.length; i++) {
var button = createButton(list[i], clickEvent);
if (list[i] instanceof Array) {
ids[list[i][0]] = button;
} else {
ids[list[i]] = button;
}
listElement.appendChild(button);
}
listElement.appendChild(createElement("div", "clear"))
dropElement.append(listElement);
contentGroup.append(dropElement);
root.appendChild(contentGroup);
titleElement.onclick = function (e) {
if (contentGroup.className.indexOf("unfurl") === -1) {
contentGroup.className = "content-group unfurl";
dropElement.style.maxHeight = listElement.clientHeight;
} else {
contentGroup.className = "content-group";
dropElement.style.maxHeight = 0;
}
};
dropElement.style.maxHeight = listElement.clientHeight;
return ids;
}
var emitEvent = function (event, message = "") {
if (EventBridge) {
EventBridge.emitWebEvent(JSON.stringify({
type: event,
message: message
}));
} else {
console.info("Attempted to emit event", event, message);
}
}
var playback = function (e, info) {
if (info instanceof Array) {
emitEvent("emote_app_play", info[0]);
} else {
emitEvent("emote_app_play", info);
}
}
var toggle = function (e, info) {
if (info instanceof Array) {
emitEvent("emote_app_toggle", info[0]);
} else {
emitEvent("emote_app_toggle", info);
}
}