@monterosa/sdk-lvis 0.18.8 → 0.18.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm2017.js","sources":["../src/utils/date.js","../src/utils/sync.js","../src/utils/run.js","../src/utils/connection_adaptor.js","../src/factories/base.js","../src/factories/frame.js","../src/elements/entity.js","../src/utils/storage.js","../src/project.js","../src/elements/frame.js","../src/elements/poll.js","../src/elements/mixins/fadeable.js","../src/elements/poll.powerbar.js","../src/elements/mixins/revealable.js","../src/elements/mixins/multivotable.js","../src/elements/quiz.js","../src/elements/quiz.prediction.js","../src/elements/quiz.trivia.js","../src/elements/diametric.js","../src/elements/diametric.swing.js","../src/elements/diametric.emoting.js","../src/elements/poll.regular.js","../src/elements/poll.flexipoll.js","../src/factories/poll.js","../src/elements/data.js","../src/factories/data.js","../src/elements/curation.js","../src/factories/curation.js","../src/factories/factories.js","../src/utils/control.js","../src/constants.js","../src/event.js","../src/listings.js","../src/user.js","../src/index.js"],"sourcesContent":["import Emitter from 'tiny-emitter';\n\nconst LViSDate = new Emitter();\n\nLViSDate.trigger = LViSDate.emit;\nLViSDate.bind = LViSDate.on;\nLViSDate.unbind = LViSDate.off;\n\nLViSDate.ON_TICK = 'tick';\nLViSDate.ON_NEXT = 'next';\n\nlet serverTimestamp;\n\nlet lastTickTimestamp;\n\nlet tickTimeoutId = null;\n\nconst getCurrentTimestamp = () => Date.now() / 1000;\n\nconst getMiddleTimestamp = (timestamp) => Math.floor(timestamp) + 0.5;\n\nconst tick = () => {\n clearTimeout(tickTimeoutId);\n\n const currentTimestamp = getCurrentTimestamp();\n const timeSinceLastTick = currentTimestamp - lastTickTimestamp;\n\n serverTimestamp += timeSinceLastTick;\n\n lastTickTimestamp = currentTimestamp;\n\n const expect = getMiddleTimestamp(serverTimestamp) + 1;\n const delay = (expect - serverTimestamp) * 1000;\n\n tickTimeoutId = setTimeout(tick, delay);\n\n LViSDate.trigger(LViSDate.ON_TICK, serverTimestamp);\n};\n\nLViSDate.setTime = (time) => {\n lastTickTimestamp = getCurrentTimestamp();\n serverTimestamp = getMiddleTimestamp(time);\n};\n\nLViSDate.now = () => Math.floor(serverTimestamp);\n\nLViSDate.setTime(getCurrentTimestamp());\n\ntick();\n\nexport default LViSDate;\n","import Emitter from 'tiny-emitter';\nimport LViSDate from './date';\n\nexport default (() => {\n const self = new Emitter();\n\n self.trigger = self.emit;\n self.bind = self.on;\n self.unbind = self.off;\n\n self.ON_DELAY_CHANGE = 'change';\n\n let delay;\n let defaultDelay;\n let maxDelay;\n let Event;\n\n const setDelay = (value, force) => {\n const max = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\n if (value > max) {\n console.warn(`User delay can't be greater than ${max} seconds`);\n return;\n }\n\n if (value < 0) {\n value = 0;\n }\n\n if (value > maxDelay) {\n value = maxDelay;\n }\n\n if (force || value !== delay) {\n delay = value;\n\n self.trigger(self.ON_DELAY_CHANGE, delay);\n }\n };\n\n self._resetSettings = () => {\n delay = null;\n defaultDelay = 0;\n maxDelay = Number.MAX_SAFE_INTEGER || 9007199254740991;\n };\n\n self.setMaxDelay = (value) => {\n value = parseInt(value, 10);\n\n if (value >= 0) {\n maxDelay = value;\n }\n };\n\n self.setDefaultDelay = (value) => {\n value = parseInt(value, 10);\n\n if (value > maxDelay) {\n defaultDelay = maxDelay;\n } else if (value > 0 && value <= maxDelay) {\n defaultDelay = value;\n }\n };\n\n self.setDelay = (...args) => {\n let value;\n\n let force = [...args].pop();\n force = typeof force === 'boolean' ? force : false;\n\n switch (args[0].constructor) {\n // (<LViS.Event> event, <Integer> timecode, [<Boolen> force = true]);\n case Event: {\n const [event, timecode] = args;\n\n value = LViSDate.now() - event.getOriginalStartAt() - timecode;\n\n break;\n }\n\n // (<Date> time, [<Boolen> force = true]);\n case Date: {\n const [time] = args;\n\n value = LViSDate.now() - Math.floor(time.getTime() / 1000);\n\n break;\n }\n\n // (<Integer> delay, [<Boolen> force = true]);\n case Number: {\n [value] = args;\n\n if (parseInt(value, 10) !== value) {\n console.warn('User delay must be an integer');\n return;\n }\n\n break;\n }\n\n default:\n console.warn('Unknown interface of setDelay() method');\n return;\n }\n\n setDelay(value, force);\n };\n\n self.getMaxDelay = () => maxDelay;\n\n self.getDelay = () => {\n if (delay !== null) {\n return delay;\n }\n\n return defaultDelay;\n };\n\n self._resetSettings();\n\n self.init = (config) => {\n // used to avoid cycle dependency:\n // Event -> ConnectionAdaptor -> Sync -> Event\n Event = config.Event;\n };\n\n return self;\n})();\n","/* eslint @typescript-eslint/indent: \"off\" */\n\nimport LViSDate from './date';\n\nconst regularQueue = [];\nconst priorityQueue = [];\n\nconst add =\n (queue) =>\n (func, context = null) =>\n queue.push({ func, context });\n\nconst execute =\n (queue = []) =>\n () => {\n let item;\n let total = queue.length;\n\n while (total > 0) {\n item = queue.shift();\n item.func.apply(item.context);\n total--;\n }\n };\n\nconst force = () => {\n executePriority();\n executeRegular();\n};\n\nconst handleDateTick = () => {\n force();\n};\n\nconst handleDateNext = (func) => {\n nextRegular(func);\n};\n\nconst nextRegular = add(regularQueue);\nconst nextPriority = add(priorityQueue);\n\nconst executeRegular = execute(regularQueue);\nconst executePriority = execute(priorityQueue);\n\nLViSDate.bind(LViSDate.ON_TICK, handleDateTick);\nLViSDate.bind(LViSDate.ON_NEXT, handleDateNext);\n\nexport default { nextRegular, nextPriority, force };\n","import Enmasse from '@monterosa/sdk-enmasse-kit';\nimport Emitter from 'tiny-emitter';\n\nimport LViSDate from './date';\nimport Sync from './sync';\nimport Run from './run';\n\nexport default (() => {\n // console.log('ConnectionAdaptor::constructor');\n\n /*\n * Link to the current scope\n */\n\n const self = new Emitter();\n\n self.trigger = self.emit;\n self.bind = self.on;\n self.unbind = self.off;\n\n /*\n * Constants\n */\n\n self.ON_EOC = Enmasse.ON_EOC;\n self.ON_MESSAGE = Enmasse.ON_MESSAGE;\n self.ON_SETTINGS = 'settings';\n\n /*\n * Private variable\n */\n\n const queue = [];\n\n const EOCs = {};\n\n let processIsInThePriorityQueue = false;\n\n const handleMessage = (message) => {\n deduplicate(message);\n\n queue.push(message);\n\n Run.nextPriority(() => process());\n Run.force();\n };\n\n const handleDelayChange = () => {\n clearQueue();\n };\n\n const handleState = (state) => {\n switch (state) {\n case Enmasse.STATE_DISCONNECTED:\n clearEOCs();\n break;\n case Enmasse.STATE_CONNECTED:\n break;\n case Enmasse.STATE_CONNECTING:\n break;\n default:\n break;\n }\n };\n\n const handleEOC = (channel) => {\n EOCs[channel] = true;\n\n self.trigger(self.ON_EOC, channel);\n\n Run.nextPriority(() => process());\n Run.force();\n };\n\n const deduplicate = (message) => {\n if (message.klass !== 'create') {\n return;\n }\n\n let id;\n\n try {\n id = JSON.parse(message.body[0]).id;\n } catch (e) {\n return;\n }\n\n let itemId = null;\n\n for (let idx = 0; idx < queue.length; idx++) {\n try {\n itemId = JSON.parse(queue[idx].body[0]).id;\n } catch (e) {\n continue;\n }\n\n if (itemId === id) {\n queue.splice(idx, 1);\n break;\n }\n }\n };\n\n const process = () => {\n let idx = 0;\n let message;\n\n while (idx < queue.length) {\n if (canAdapt(queue[idx])) {\n [message] = queue.splice(idx, 1);\n adaptMessage(message);\n self.trigger(self.ON_MESSAGE, message);\n } else {\n idx++;\n }\n }\n\n // if there are still left message in queue\n if (queue.length > 0 && !processIsInThePriorityQueue) {\n processIsInThePriorityQueue = true;\n\n Run.nextPriority(() => {\n processIsInThePriorityQueue = false;\n process();\n });\n }\n };\n\n const canAdapt = (message) => {\n const checker = (() => {\n switch (message.klass) {\n case 'create':\n return canAdaptCreate;\n case 'reveal':\n return canAdaptReveal;\n case 'revoke':\n return canAdaptRevoke;\n case 'stop':\n return canAdaptStop;\n case 'p':\n return canAdaptPoll;\n case 'subscounter':\n return canAdaptSubsCounter;\n default:\n return canAdaptOther;\n }\n })();\n\n return checker(message);\n };\n\n const canAdaptCreate = (message) => {\n let data;\n\n try {\n data = JSON.parse(message.body[0]);\n } catch (e) {\n return false;\n }\n\n return canAdaptGeneric(message.channel, data.published_at);\n };\n\n const canAdaptReveal = (message) =>\n canAdaptGeneric(message.channel, parseInt(message.body[2], 10));\n\n const canAdaptRevoke = (message) => {\n let data;\n\n try {\n data = JSON.parse(message.body[0]);\n } catch (e) {\n return false;\n }\n\n return canAdaptGeneric(message.channel, data.sent_at);\n };\n\n const canAdaptStop = (message) =>\n canAdaptGeneric(message.channel, parseInt(message.body[1], 10));\n\n const canAdaptPoll = (message) =>\n canAdaptGeneric(message.channel, parseInt(message.body[1], 10));\n\n const canAdaptSubsCounter = (message) =>\n canAdaptGeneric(message.channel, parseInt(message.sent_at, 10));\n\n const canAdaptOther = () => true;\n\n const canAdaptGeneric = (channel, publishAt) => {\n const now = LViSDate.now();\n const hasEOC = EOCs[channel] !== undefined;\n const publishAtDelayed = publishAt + Sync.getDelay();\n\n // Can publish whether:\n // a. publishedAt is in the past,\n // b. publishedAt is now, but only if we already received EOC. If we\n // have not yet received EOC then there is a risk that we will receive\n // it within the same second as we publish this element and because\n // message will go first and EOC second this will cause the element to\n // be published before event is ready, which in turn will put this\n // element into history rather than trigger ON_PUBLISHED. With this\n // check we guarantee that if create and EOC arrive at the same second\n // we do not trigger elements until we handled EOC.\n return publishAtDelayed < now || (publishAtDelayed === now && hasEOC);\n };\n\n const adaptMessage = (message) => {\n const adaptor = (() => {\n switch (message.klass) {\n case 'snapshot':\n return adaptSnapshot;\n case 'listings':\n return adaptListings;\n case 'create':\n return adaptCreate;\n case 'reveal':\n return adaptReveal;\n case 'revoke':\n return adaptRevoke;\n case 'stop':\n return adaptStop;\n case 'p':\n return adaptPoll;\n case 'subscounter':\n return adaptSubsCounter;\n default:\n return adaptOther;\n }\n })();\n\n adaptor(message);\n };\n\n let adaptSnapshot = (message) => {\n // console.log('ConnectionAdaptor::adaptSnapshot', message);\n\n let snapshot;\n\n try {\n snapshot = JSON.parse(message.body[0]);\n } catch (e) {\n // console.error('ConnectionAdaptor: Unable to parse listings data');\n }\n\n adaptSnapshotData(snapshot);\n\n message.body[0] = JSON.stringify(snapshot);\n };\n\n const adaptSnapshotData = (snapshot) => {\n snapshot.published_at += Sync.getDelay();\n snapshot.published_at_iso = new Date(\n snapshot.published_at * 1000,\n ).toISOString();\n\n const adapter = (() => {\n switch (snapshot.type) {\n case 'prediction':\n return adaptPredictionSnapshot;\n default:\n return adaptOtherSnapshot;\n }\n })();\n\n adapter(snapshot);\n };\n\n const adaptPredictionSnapshot = (snapshot) => {\n const { data } = snapshot;\n const delay = Sync.getDelay();\n\n data.start_at += delay;\n data.start_at_iso = new Date(data.start_at * 1000).toISOString();\n\n if (data.stop_at) {\n data.stop_at += delay;\n data.stop_at_iso = new Date(data.stop_at * 1000).toISOString();\n }\n\n if (data.reveal_answer_at) {\n data.reveal_answer_at += delay;\n data.reveal_answer_at_iso = new Date(\n data.reveal_answer_at * 1000,\n ).toISOString();\n }\n };\n\n const adaptOtherSnapshot = () => {\n // console.log('ConnectionAdaptor::adaptOtherSnapshot', snapshot);\n };\n\n const adaptListings = (message) => {\n // console.log('ConnectionAdaptor::adaptListings');\n\n let listings;\n\n try {\n listings = JSON.parse(message.body[0]);\n } catch (e) {\n // console.error('ConnectionAdaptor: Unable to parse listings data');\n }\n\n Sync.setMaxDelay(listings.project.audio_sync_max_delay);\n Sync.setDefaultDelay(listings.project.audio_sync_default_delay);\n\n for (const uuid in listings.events) {\n if ({}.hasOwnProperty.call(listings.events, uuid)) {\n adaptEvent(listings.events[uuid]);\n }\n }\n\n message.body[0] = JSON.stringify(listings);\n };\n\n const adaptEvent = (event) => {\n const delay = Sync.getDelay();\n\n event.start_at += delay;\n event.start_at_iso = new Date(event.start_at * 1000).toISOString();\n event.end_at += delay;\n event.end_at_iso = new Date(event.end_at * 1000).toISOString();\n\n // store delay\n event.__delay = delay;\n };\n\n const adaptCreate = (message) => {\n // console.log('ConnectionAdaptor::adaptCreate', message);\n\n let data;\n\n try {\n data = JSON.parse(message.body[0]);\n } catch (e) {\n // console.error('ConnectionAdaptor: Unable to parse create data');\n }\n\n data.published_at += Sync.getDelay();\n data.published_at_iso = new Date(data.published_at * 1000).toISOString();\n\n message.body[0] = JSON.stringify(data);\n };\n\n const adaptPoll = (message) => {\n // console.log('ConnectionAdaptor::adaptPoll', message);\n\n message.body[1] = parseInt(message.body[1], 10) + Sync.getDelay();\n };\n\n const adaptStop = (message) => {\n // console.log('ConnectionAdaptor::adaptStop', message);\n\n message.body[1] = parseInt(message.body[1], 10) + Sync.getDelay();\n };\n\n const adaptReveal = (message) => {\n // console.log('ConnectionAdaptor::adaptReveal', message);\n\n message.body[2] = parseInt(message.body[2], 10) + Sync.getDelay();\n };\n\n const adaptRevoke = (message) => {\n // console.log('ConnectionAdaptor::adaptRevoke', message);\n\n let data;\n\n try {\n data = JSON.parse(message.body[0]);\n } catch (e) {\n // console.error('ConnectionAdaptor: Unable to parse revoke data');\n }\n\n data.sent_at += Sync.getDelay();\n data.sent_at_iso = new Date(data.sent_at * 1000).toISOString();\n\n message.body[0] = JSON.stringify(data);\n };\n\n let adaptSubsCounter = (message) => {\n try {\n const data = JSON.parse(message.body[0]);\n data.next_update_at += Sync.getDelay();\n\n message.body[0] = JSON.stringify(data);\n } catch (e) {\n // why do we fail silently?\n }\n };\n\n const adaptOther = () => 0;\n\n const clearQueue = () => {\n while (queue.length) {\n queue.pop();\n }\n };\n\n const clearEOCs = () => {\n for (const eoc in EOCs) {\n if ({}.hasOwnProperty.call(EOCs, eoc)) {\n delete EOCs[eoc];\n }\n }\n };\n\n self.subscribe = (channel) => {\n Enmasse.subscribe(channel);\n };\n\n self.unsubscribe = (channel) => {\n queue.forEach((message, idx) => {\n if (message.channel === channel) {\n queue.splice(idx, 1);\n }\n });\n\n delete EOCs[channel];\n\n Enmasse.unsubscribe(channel);\n };\n\n self.adaptSnapshotData = (message) => adaptSnapshotData(message);\n\n self.adaptEvent = (event) => adaptEvent(event);\n\n Enmasse.bind(Enmasse.ON_MESSAGE, handleMessage);\n Enmasse.bind(Enmasse.ON_STATE, handleState);\n Enmasse.bind(Enmasse.ON_EOC, handleEOC);\n Sync.bind(Sync.ON_DELAY_CHANGE, handleDelayChange);\n\n return self;\n})();\n","import Emitter from 'tiny-emitter';\n\nexport default class Base extends Emitter {\n get(id) {\n return this.instances[id] || false;\n }\n\n create() {}\n\n createSnapshot() {}\n\n revoke(id) {\n if ({}.hasOwnProperty.call(this.instances, id)) {\n delete this.instances[id];\n }\n }\n\n destroyInstances() {\n // console.log(\"BaseFactory::destroyInstances\", this.instances);\n for (const id in this.instances) {\n if ({}.hasOwnProperty.call(this.instances, id)) {\n this.instances[id].destroy();\n delete this.instances[id];\n }\n }\n }\n\n constructor() {\n super();\n\n this.instances = {};\n\n this.trigger = this.emit;\n this.bind = this.on;\n this.unbind = this.off;\n }\n}\n","import BaseFactory from './base';\n\nexport default class FrameFactory extends BaseFactory {\n getByEnmasseId(enmasseId) {\n for (const instance of Object.values(this.instances)) {\n if (instance.getEnmasseId() === enmasseId) {\n return instance;\n }\n }\n\n return false;\n }\n\n setMessages() {}\n\n update(instance, data) {\n instance.update(data);\n }\n}\n","import Emitter from 'tiny-emitter';\nimport Deferred from 'Deferred';\n\nexport default class Entity extends Emitter {\n getId() {\n return this.id;\n }\n\n getEnmasseId() {\n return this.enmasseId;\n }\n\n getFullId() {\n return `${this.id}.${this.enmasseId}`;\n }\n\n getPublishedAt() {\n return this.publishedAt;\n }\n\n getUpdatedAt() {\n return this.updatedAt;\n }\n\n finalize() {\n this.finalized.resolve();\n }\n\n update(config = {}) {\n this.updatedAt = config.updated_at - 0 || 0;\n }\n\n destroy() {\n // console.log(\"Entity::destroy id=%s\" + this.getId());\n }\n\n constructor(config = {}) {\n super(config);\n\n this.id = config.id;\n this.enmasseId = config.data.id - 0 || 0;\n this.publishedAt = config.published_at - 0 || 0;\n this.updatedAt = config.updated_at - 0 || 0;\n this.finalized = new Deferred();\n\n this.trigger = this.emit;\n this.bind = this.on;\n this.unbind = this.off;\n }\n}\n","/* global QUOTA_EXCEEDED_ERR */\n\nimport { getGlobal } from '@monterosa/sdk-util';\nimport Cookie from 'js-cookie';\n\nconst globals = getGlobal();\n\nexport const StorageLocalDriver = (() => {\n const self = {};\n\n self.hasSupport = () => {\n try {\n return 'localStorage' in global && globals.localStorage !== null;\n } catch (exception) {\n return false;\n }\n };\n\n self.set = (name, value) => {\n try {\n globals.localStorage.setItem(name, value);\n } catch (exception) {\n if (exception === QUOTA_EXCEEDED_ERR) {\n console.error('localstorage quota exceeded error');\n }\n }\n };\n\n self.get = (name) => globals.localStorage.getItem(name);\n\n self.remove = (name) => globals.localStorage.removeItem(name);\n\n return self;\n})();\n\nexport const StorageCookieDriver = (() => {\n const self = {};\n\n self.hasSupport = () => {\n const probe = 'probe';\n\n try {\n self.set(probe, probe);\n const stored = self.get(probe);\n self.remove(probe);\n return stored === probe;\n } catch (exception) {\n return false;\n }\n };\n\n self.set = (name, value, expires) => {\n const args = [name, value];\n\n if (typeof expires !== 'undefined') {\n args.push({ expires });\n }\n\n return Cookie.set(...args);\n };\n\n self.get = (name) => {\n const value = Cookie.get(name);\n\n if (typeof value === 'undefined') {\n return null;\n }\n\n return value;\n };\n\n self.remove = (name) => Cookie.remove(name);\n\n return self;\n})();\n\nexport const Storage = (() => {\n const DRIVERS = [StorageLocalDriver, StorageCookieDriver];\n\n const self = {};\n\n let driver = null;\n\n let prefix = 'lvis';\n\n for (let i = 0; i < DRIVERS.length; i++) {\n if (DRIVERS[i].hasSupport()) {\n driver = DRIVERS[i];\n break;\n }\n }\n\n const enabled = () => driver !== null;\n\n const toStoredName = (name) => [prefix, name].join('-');\n\n self.setPrefix = (newPrefix) => {\n prefix = newPrefix;\n };\n\n self.set = (name, value, expires) => {\n if (enabled()) {\n return driver.set(toStoredName(name), value, expires);\n }\n\n return undefined;\n };\n\n self.get = (name) => {\n if (enabled()) {\n return driver.get(toStoredName(name));\n }\n\n return undefined;\n };\n\n self.remove = (name) => {\n if (enabled()) {\n return driver.remove(toStoredName(name));\n }\n\n return undefined;\n };\n\n return self;\n})();\n","import Deferred from 'Deferred';\nimport Emitter from 'tiny-emitter';\n\nimport xhr from 'xhr';\n\nimport ConnectionAdaptor from './utils/connection_adaptor';\nimport LViSDate from './utils/date';\nimport { Storage } from './utils/storage';\n\nexport default (() => {\n const self = new Emitter();\n let uuid = null;\n let host = null;\n let data = {};\n let settings = {};\n let currentLanguage = null;\n let missingTimeout = null;\n\n self.trigger = self.emit;\n self.bind = self.on;\n self.unbind = self.off;\n\n self.ON_SUBS_COUNT = 'subs_count';\n self.ON_SUBS_COUNT_MISSING = 'subs_count_missing';\n\n const getDefaultLanguage = () =>\n data.locales.find((locale) => !!locale.default);\n\n const loadAppSettings = () => {\n const url = `${host}/projects/${uuid.substr(0, 2)}/${uuid}/settings.json`;\n const dfd = new Deferred();\n\n xhr.get(url, { json: true }, (err, resp, settingsData = {}) => {\n const status = resp.statusCode;\n const isSuccess =\n (status >= 200 && status <= 300) || status === 0 || status === '';\n\n if (isSuccess) {\n settings = settingsData;\n dfd.resolve();\n } else {\n dfd.reject();\n }\n });\n\n return dfd.promise();\n };\n\n const hasLanguage = (language) =>\n data.locales.some(({ key }) => key === language);\n\n const handleSubsMissing = () => {\n self.trigger(self.ON_SUBS_COUNT_MISSING);\n };\n\n const handleSubsCount = (message) => {\n if (message.klass !== 'subscounter') {\n return;\n }\n\n try {\n const subsData = JSON.parse(message.body[0]);\n const nextSubsUpdate = subsData.next_update_at;\n\n self.trigger(self.ON_SUBS_COUNT, subsData.counter);\n\n clearTimeout(missingTimeout);\n\n missingTimeout = setTimeout(\n handleSubsMissing,\n (nextSubsUpdate - LViSDate.now()) * 1000,\n );\n } catch (e) {\n console.warn(\"Couldn't parse subscounter message.\");\n }\n };\n\n self.setData = (d) => {\n data = d || {};\n\n Storage.setPrefix(`lvis-${uuid}`);\n\n const storedLanguage = Storage.get('lang');\n\n // trying to set stored language\n if (storedLanguage) {\n self.setCurrentLanguage(storedLanguage);\n }\n\n // if current is not set yet using default language\n if (currentLanguage === null) {\n currentLanguage = getDefaultLanguage().key;\n }\n };\n\n self.setCurrentLanguage = (language) => {\n if (hasLanguage(language)) {\n currentLanguage = language;\n Storage.set('lang', language);\n } else {\n console.warn(`Attempt to set unknown language \"${language}\"`);\n }\n };\n\n self.get = (name) => {\n if (typeof name === 'undefined') {\n // return full dataset if parameter name is not set\n return data;\n }\n\n if (typeof data[name] !== 'undefined') {\n // return value that matches passed parameter name in dataset\n return data[name];\n }\n\n return null;\n };\n\n self.getSettings = (name) => {\n const values = self.localise(settings);\n\n if (typeof name === 'undefined') {\n return values;\n }\n\n if (typeof values[name] !== 'undefined') {\n return values[name];\n }\n\n return null;\n };\n\n self.getUUID = () => uuid;\n\n self.getLanguages = () => self.get('locales');\n\n self.getCurrentLanguage = () => currentLanguage;\n\n self.getEmbedUrl = () => self.get('embed');\n\n self.isLocalisationSupported = () => self.get('is_localisation_supported');\n\n self.localise = (value) => {\n if ({}.hasOwnProperty.call(value, currentLanguage)) {\n return value[currentLanguage];\n }\n\n if ({}.hasOwnProperty.call(value, 'all')) {\n return value.all;\n }\n\n return value;\n };\n\n self.init = (config = {}) => {\n uuid = config.uuid;\n host = config.host;\n\n ConnectionAdaptor.bind(ConnectionAdaptor.ON_MESSAGE, handleSubsCount);\n\n return loadAppSettings();\n };\n\n return self;\n})();\n","import Entity from './entity';\nimport LViSDate from '../utils/date';\nimport Run from '../utils/run';\nimport Project from '../project';\n\nexport default class Frame extends Entity {\n getEnmasseId() {\n return this.enmasseId;\n }\n\n getDuration() {\n return this.duration;\n }\n\n getDurationLeft() {\n return this.durationLeft;\n }\n\n getType() {\n return this.type;\n }\n\n getContentType() {\n // should return basic type if custom type is null\n return this.contentType === null ? this.type : this.contentType;\n }\n\n getCustomFields(field) {\n const values = Project.localise(this.customFields);\n\n if (typeof field === 'undefined') {\n // return full set of custom fields if field name wasn't passed\n return values;\n }\n\n // custom field was passed\n if (typeof values[field] !== 'undefined') {\n // return specific field if field exists in object\n return values[field];\n }\n\n // otherwise return null\n return null;\n }\n\n hasFixedDuration() {\n return this.fixed;\n }\n\n setDuration(duration) {\n this.duration = parseInt(duration, 10);\n }\n\n setDurationLeft(duration) {\n this.durationLeft = parseInt(duration, 10);\n }\n\n abort(time) {\n this.aborted = true;\n this.setDuration(time - this.getPublishedAt());\n this.setDurationLeft(0);\n }\n\n updateDurationLeft() {\n if (this.aborted) {\n return;\n }\n\n const self = this;\n const endAt = this.publishedAt + this.duration;\n const now = LViSDate.now();\n const left = endAt - now;\n\n this.setDurationLeft(left);\n\n if (this.durationLeft > 0) {\n Run.nextPriority(() => self.updateDurationLeft());\n } else {\n this.durationLeft = 0;\n }\n }\n\n update(config = {}) {\n super.update(config);\n\n this.duration = config.duration - 0 || 0;\n this.customFields = config.custom_fields || {};\n }\n\n constructor(config = {}) {\n super(config);\n\n this.state = null;\n this.aborted = false;\n this.enmasseId = config.data.id;\n this.duration = config.duration - 0 || 0;\n this.durationLeft = 0;\n this.type = config.type;\n this.fixed = config.fixed;\n this.contentType = config.content_type || null;\n this.customFields = config.custom_fields || {};\n\n // calculate real duration left only for fixed frames\n if (this.fixed) {\n this.updateDurationLeft();\n }\n }\n}\n","import { calculatePercentage } from '@monterosa/sdk-util';\n\nimport Frame from './frame';\nimport Project from '../project';\nimport LViSDate from '../utils/date';\nimport { Storage } from '../utils/storage';\n\nexport default class Poll extends Frame {\n static EXPIRE = 7 * 24 * 60 * 60;\n\n static STATE_STARTED = 'started';\n static STATE_CLOSED = 'stopped';\n\n static ON_VOTE = 'voted';\n static ON_RESULTS = 'results';\n static ON_STATE_CHANGE = 'state';\n\n getQuestion() {\n return Project.localise(this.question);\n }\n\n getOptions() {\n return Project.localise(this.options);\n }\n\n getResults() {\n if (!this.canReveal()) {\n return [];\n }\n\n return this.results;\n }\n\n getResultsPerSource(source) {\n let results = null;\n\n if (typeof source === 'undefined') {\n results = this.resultsPerSource;\n } else {\n for (let i = 0, l = this.resultsPerSource.length; i < l; i++) {\n if (this.resultsPerSource[i].source === source) {\n results = this.resultsPerSource[i];\n }\n }\n }\n\n return results;\n }\n\n getState() {\n return this.state;\n }\n\n getUserVote() {\n return this.votedFor;\n }\n\n hasUserVoted() {\n return this.getUserVote() !== null;\n }\n\n hasResults() {\n return this.results !== null && this.canReveal();\n }\n\n canReveal() {\n return true;\n }\n\n isValidatedUserRequired() {\n return this.requiresValidatedUser;\n }\n\n vote(vote = {}) {\n const indices = Object.keys(vote);\n const options = this.getOptions();\n\n const nonexistantVotes = indices.filter(\n (idx) => typeof options[idx] === 'undefined',\n );\n\n if (nonexistantVotes.length > 0) {\n console.warn(\n \"Can't vote for nonexistant %s (%s)\",\n nonexistantVotes.length === 1 ? 'option' : 'options',\n nonexistantVotes.join(', '),\n );\n return false;\n }\n\n this.storeVote(vote);\n this.trigger(Poll.ON_VOTE, vote);\n return true;\n }\n\n setState(state) {\n // do not fire state change if passed state is the same as it was\n if (state === undefined || state === this.state) {\n return;\n }\n\n this.state = state;\n this.trigger(Poll.ON_STATE_CHANGE, state);\n\n // Order of messages from enmasse is not guaranteed.\n // Stop or reveal messages can be after feedback message.\n // If feedback message is received before user is able to see results are saved\n // and set resultsTriggerPostponed true.\n // When state(stop, reveal) allows reveal results and reveal results was postponed\n // action ON_RESULTS triggered.\n if (this.canReveal() && this.resultsTriggerPostponed) {\n this.resultsTriggerPostponed = false;\n this.trigger(Poll.ON_RESULTS);\n }\n }\n\n setResults(results) {\n // skip setting results if they weren't changed\n if (JSON.stringify(results) === JSON.stringify(this.rawResults)) {\n return;\n }\n\n this.rawResults = results;\n this.populateResults(results);\n\n if (this.hasResults()) {\n this.trigger(Poll.ON_RESULTS);\n } else {\n this.resultsTriggerPostponed = true;\n }\n }\n\n setResultsPerSource(results) {\n this.populateResultsPerSource(results);\n }\n\n isStarted() {\n return this.state === Poll.STATE_STARTED;\n }\n\n isClosed() {\n return this.state === Poll.STATE_CLOSED;\n }\n\n stop(time) {\n this.abort(time);\n this.setState(Poll.STATE_CLOSED);\n }\n\n // TODO: Combine populateResults() and populateResultsFromSnapshot() methods\n populateResults(results) {\n const percentage = calculatePercentage(results);\n\n this.results = results.map((votes, idx) => ({\n votes,\n percentage: percentage[idx],\n }));\n }\n\n populateResultsPerSource(results) {\n this.resultsPerSource = results;\n\n this.resultsPerSource.forEach((source) => {\n const percentage = calculatePercentage(source.results);\n\n source.results = source.results.map((votes, idx) => ({\n votes,\n percentage: percentage[idx],\n }));\n });\n }\n\n storeVote(vote) {\n const name = `frame-${this.getId()}`;\n const value = JSON.stringify(vote);\n const expire = new Date((LViSDate.now() + Poll.EXPIRE) * 1000);\n\n this.votedFor = vote;\n\n Storage.set(name, value, expire);\n }\n\n restoreVote() {\n const name = `frame-${this.getId()}`;\n\n try {\n this.votedFor = JSON.parse(Storage.get(name));\n } catch (exception) {\n console.error('Unable to restore option user voted for', exception);\n }\n }\n\n update(config = {}) {\n super.update(config);\n\n this.question = config.data.question;\n this.options = config.data.options;\n }\n\n constructor(config) {\n super(config);\n\n this.question = config.data.question;\n this.options = config.data.options;\n this.rawResults = config.data.results || null;\n this.results = config.data.results || null;\n this.resultsPerSource = config.data.results_per_source || null;\n this.votedFor = null;\n this.state = config.data.state || Poll.STATE_STARTED;\n this.requiresValidatedUser = config.data.requires_validated_user;\n this.resultsTriggerPostponed = false;\n this.restoreVote();\n }\n}\n","const Fadeable = (superclass) =>\n class extends superclass {\n getFade() {\n return this.fade;\n }\n\n constructor(config) {\n super(config);\n\n this.fade = config.data.fade;\n }\n };\n\nexport default Fadeable;\n","/**\n * Creates a powerbar elements.\n *\n * @class Powerbar\n * @extends Poll\n * @constructor\n */\n\nimport Poll from './poll';\nimport Fadeable from './mixins/fadeable';\nimport LViSDate from '../utils/date';\n\nexport default class Powerbar extends Fadeable(Poll) {\n static TYPE = 'powerbar';\n\n static STATE_STARTED = Poll.STATE_STARTED;\n static STATE_CLOSED = Poll.STATE_CLOSED;\n\n static ON_VOLUME_UPDATE = 'volume';\n static ON_VOTE = Poll.ON_VOTE;\n static ON_RESULTS = Poll.ON_RESULTS;\n static ON_STATE_CHANGE = Poll.ON_STATE_CHANGE;\n\n getResultsPerSource(source) {\n let results = null;\n\n if (typeof source === 'undefined') {\n results = this.resultsPerSource;\n } else if (typeof this.resultsPerSource[source] !== 'undefined') {\n results = this.resultsPerSource[source];\n }\n\n return results;\n }\n\n setResults(results) {\n const item = this.resultsToHistoryItem(results);\n\n this.results.push(item);\n\n this.trigger(Powerbar.ON_RESULTS, item);\n }\n\n setResultsPerSource(results) {\n results.forEach((result) => {\n const item = this.resultsToHistoryItem(result.results);\n\n if (!this.resultsPerSource[result.source]) {\n this.resultsPerSource[result.source] = [];\n }\n\n this.resultsPerSource[result.source].push(item);\n }, this);\n }\n\n resultsToHistoryItem(results) {\n const item = {\n time: LViSDate.now(),\n volume: 0,\n average: 0,\n responses: 0,\n };\n\n // option's index starts with 1\n for (let i = 0, l = 9; i <= l; i++) {\n if (typeof results[i] !== 'undefined') {\n item.volume += results[i] * (i + 1);\n item.responses += results[i];\n }\n }\n\n if (item.responses !== 0) {\n item.average = Math.round(item.volume / item.responses);\n }\n\n return item;\n }\n\n hasResults() {\n return this.results.length > 0;\n }\n\n constructor(config) {\n super(config);\n\n /**\n * Array of plain objects which represent result history for Powerbar element\n *\n * Each object contain following parameters:\n * * {Number} time: local time of when data arrived\n * * {Number} volume: total volume at that point\n * * {Number} average: average volume at that point\n * * {Number} responses: total votes received\n *\n * @property history\n * @type {Array}\n */\n this.results = [];\n\n this.resultsPerSource = {};\n }\n}\n","const REVEAL_RESULTS_ON_VOTE = 'vote';\nconst REVEAL_RESULTS_ON_CLOSE = 'close';\nconst REVEAL_RESULTS_ON_EVENT_END = 'event_end';\nconst REVEAL_RESULTS_MANUALLY = 'manual';\nconst REVEAL_RESULTS_NEVER = 'never';\nconst REVEAL_RESULTS_ALWAYS = 'always';\n\nconst Revealable = (superclass) =>\n class extends superclass {\n setResults(...args) {\n super.setResults(...args);\n }\n\n setResultsPerSource(...args) {\n if (this.canReveal()) {\n super.setResultsPerSource(...args);\n }\n }\n\n canReveal() {\n switch (this.revealResultsMode) {\n case REVEAL_RESULTS_ON_VOTE:\n return this.hasUserVoted() || this.isClosed();\n\n case REVEAL_RESULTS_ON_CLOSE:\n return this.isClosed();\n\n case REVEAL_RESULTS_ON_EVENT_END:\n case REVEAL_RESULTS_MANUALLY:\n case REVEAL_RESULTS_ALWAYS:\n // assume that method is called upon setting results\n return true;\n\n case REVEAL_RESULTS_NEVER:\n return false;\n default:\n return false;\n }\n }\n\n constructor(config) {\n super(config);\n\n this.revealResultsMode =\n config.data.reveal_results_mode || REVEAL_RESULTS_ON_VOTE;\n }\n };\n\nexport default Revealable;\n","const MultiVotable = (superclass) =>\n class extends superclass {\n getMaxVotesPerUser() {\n return this.maxVotesPerUser;\n }\n\n getMaxVotesPerOption() {\n return this.maxVotesPerOption;\n }\n\n vote(votes) {\n const indices = Object.keys(votes);\n const maxPerUser = this.getMaxVotesPerUser();\n const maxPerOption = this.getMaxVotesPerOption();\n\n const total = indices.reduce((memo, idx) => memo + votes[idx], 0);\n const hasEmptyVote = indices.some((idx) => votes[idx] <= 0);\n const hasNonIntVote = indices.some(\n (idx) => parseInt(votes[idx], 10) !== votes[idx],\n );\n const exceedsMaxPerOption = indices.find(\n (idx) => votes[idx] > maxPerOption,\n );\n const exceedsMaxPerUser = total > maxPerUser;\n\n if (hasEmptyVote) {\n console.warn(\n \"Can't vote because one of the vote is equal or less than 0\",\n );\n return false;\n }\n\n if (hasNonIntVote) {\n console.warn(\"Can't vote because all votes must be integers\");\n return false;\n }\n\n if (exceedsMaxPerOption) {\n console.warn(\n 'poll:%s option:%s exceeds allowed maximum:%s',\n this.getFullId(),\n +exceedsMaxPerOption + 1,\n maxPerOption,\n );\n return false;\n }\n\n if (exceedsMaxPerUser) {\n console.warn(\n 'poll:%s votes:%s exceeds allowed maximum:%s',\n this.getFullId(),\n total,\n maxPerUser,\n );\n return false;\n }\n\n if (total === 0) {\n console.warn(\"Votes can't be empty\");\n return false;\n }\n\n return super.vote(votes);\n }\n\n constructor(config) {\n super(config);\n\n this.maxVotesPerUser = config.data.max_votes_per_user;\n this.maxVotesPerOption = config.data.max_votes_per_option;\n }\n };\n\nexport default MultiVotable;\n","import Poll from './poll';\nimport Revealable from './mixins/revealable';\nimport MultiVotable from './mixins/multivotable';\n\nexport default class Quiz extends Revealable(MultiVotable(Poll)) {\n static ON_VOTE = Poll.ON_VOTE;\n static ON_STATE_CHANGE = Poll.ON_STATE_CHANGE;\n static ON_RESULTS = Poll.ON_RESULTS;\n\n static STATE_STARTED = Poll.STATE_STARTED;\n static STATE_STOPPED = Poll.STATE_CLOSED;\n static STATE_REVEALED = 'revealed';\n\n isClosed() {\n return this.isStopped() || this.isRevealed();\n }\n\n isStopped() {\n return this.state === Quiz.STATE_STOPPED;\n }\n\n isRevealed() {\n return this.state === Quiz.STATE_REVEALED;\n }\n\n reveal(idx) {\n this.correctOption = idx;\n this.setState(Quiz.STATE_REVEALED);\n }\n\n stop(time) {\n // we have to force duration calculation stop\n // and force duration to 0 set because remaining\n // duration is calculating independantly from\n // `stop` message that coming from the server\n this.abort(time);\n this.setState(Quiz.STATE_STOPPED);\n }\n\n getCorrectOption() {\n return this.correctOption;\n }\n\n vote(...args) {\n let votes = {};\n\n switch (args[0].constructor) {\n case Number:\n votes[args[0]] = 1;\n break;\n case Object: // keep as it is\n [votes] = args;\n break;\n default:\n console.warn('Incorrect votes format');\n return false;\n }\n\n const indices = Object.keys(votes);\n\n const hasEmptyVote = indices.some((idx) => votes[idx] <= 0);\n\n const hasNonIntVote = indices.some(\n (idx) =>\n !(\n typeof votes[idx] === 'number' &&\n Math.floor(votes[idx]) === votes[idx]\n ),\n );\n\n if (hasEmptyVote) {\n console.warn(\n \"Can't vote because one of the vote is equal or less than 0\",\n );\n return false;\n }\n\n if (hasNonIntVote) {\n console.warn(\"Can't vote because all votes must be integers\");\n return false;\n }\n\n if (indices.length > 1) {\n console.warn('Can cast vote only for one (1) option');\n return false;\n }\n\n return super.vote(votes);\n }\n\n constructor(config) {\n super(config);\n\n this.correctOption = {}.hasOwnProperty.call(config.data, 'correct_option')\n ? config.data.correct_option - 1\n : null;\n }\n}\n","import Quiz from './quiz';\n\nexport default class Prediction extends Quiz {\n static TYPE = 'prediction';\n\n static STATE_STARTED = Quiz.STATE_STARTED;\n static STATE_STOPPED = Quiz.STATE_STOPPED;\n static STATE_REVEALED = Quiz.STATE_REVEALED;\n\n static ON_VOTE = Quiz.ON_VOTE;\n static ON_STATE_CHANGE = Quiz.ON_STATE_CHANGE;\n static ON_RESULTS = Quiz.ON_RESULTS;\n}\n","import Quiz from './quiz';\n\nexport default class Trivia extends Quiz {\n static TYPE = 'trivia';\n\n static STATE_STARTED = Quiz.STATE_STARTED;\n static STATE_STOPPED = Quiz.STATE_STOPPED;\n static STATE_REVEALED = Quiz.STATE_REVEALED;\n\n static ON_VOTE = Quiz.ON_VOTE;\n static ON_STATE_CHANGE = Quiz.ON_STATE_CHANGE;\n static ON_RESULTS = Quiz.ON_RESULTS;\n}\n","import Poll from './poll';\n\nexport default class Diametric extends Poll {\n static MIN_STRENGTH = 1;\n static MAX_STRENGTH = 5;\n\n static STATE_STARTED = Poll.STATE_STARTED;\n static STATE_CLOSED = Poll.STATE_CLOSED;\n\n getUserVote() {\n if (this.votedFor === null) {\n return null;\n }\n\n return Math.floor(this.votedFor / Diametric.MAX_STRENGTH);\n }\n\n getUserVoteStrength() {\n if (this.votedFor === null) {\n return null;\n }\n\n return (this.votedFor % Diametric.MAX_STRENGTH) + 1;\n }\n\n setResults(results) {\n results = this.calculateWeightedResults(results);\n\n super.setResults(results);\n }\n\n setResultsPerSource(results) {\n results.forEach((source) => {\n source.results = this.calculateWeightedResults(source.results);\n }, this);\n\n super.setResultsPerSource(results);\n }\n\n calculateWeightedResults(results) {\n const max = Diametric.MAX_STRENGTH;\n\n // calculate weighted results\n const weighted = [0, 0];\n\n for (let i = 0; i < max; i++) {\n if (results[i]) {\n weighted[0] += (i + 1) * results[i];\n }\n\n if (results[i + max]) {\n weighted[1] += (i + 1) * results[i + max];\n }\n }\n\n return weighted;\n }\n\n vote(optionIdx, strength) {\n const min = Diametric.MIN_STRENGTH;\n const max = Diametric.MAX_STRENGTH;\n const options = this.getOptions();\n\n if (typeof optionIdx === 'undefined') {\n console.warn('Vote option is not set');\n return;\n }\n\n if (typeof strength === 'undefined') {\n console.warn('Vote strength is not set');\n return;\n }\n\n if (strength < min) {\n console.warn(\n \"Can't vote for the option %s with strength %s that is \" +\n 'less than minimum allowed strength %s',\n optionIdx,\n strength,\n min,\n );\n return;\n }\n\n if (strength > max) {\n console.warn(\n \"Can't vote for the option %s with strength %s that is \" +\n 'more than maximum allowed strength %s',\n optionIdx,\n strength,\n max,\n );\n return;\n }\n\n if (optionIdx < 0 || optionIdx > options.length - 1) {\n console.warn(\"Can't vote for inexistent option with idx %s\", optionIdx);\n return;\n }\n\n const vote = optionIdx * max + strength - 1;\n\n super.vote(vote);\n }\n\n isResultsRevealed() {\n return true;\n }\n}\n","import Diametric from './diametric';\n\nexport default class Swing extends Diametric {\n static TYPE = 'dpoll';\n\n static STATE_STARTED = Diametric.STATE_STARTED;\n static STATE_CLOSED = Diametric.STATE_CLOSED;\n}\n","import Diametric from './diametric';\nimport Fadeable from './mixins/fadeable';\n\nexport default class Emoting extends Fadeable(Diametric) {\n static TYPE = 'emo';\n\n static STATE_STARTED = Diametric.STATE_STARTED;\n static STATE_CLOSED = Diametric.STATE_CLOSED;\n}\n","import Poll from './poll';\nimport Revealable from './mixins/revealable';\nimport MultiVotable from './mixins/multivotable';\n\nexport default class Regular extends Revealable(MultiVotable(Poll)) {\n static TYPE = 'rpoll';\n\n static STATE_STARTED = Poll.STATE_STARTED;\n static STATE_CLOSED = Poll.STATE_CLOSED;\n\n static ON_VOTE = Poll.ON_VOTE;\n static ON_RESULTS = Poll.ON_RESULTS;\n static ON_STATE_CHANGE = Poll.ON_STATE_CHANGE;\n\n getQualifyingHashtags() {\n return this.qualifyingHashtags;\n }\n\n getMinOptionsPerVote() {\n return this.minOptionsPerVote;\n }\n\n getMaxOptionsPerVote() {\n return this.maxOptionsPerVote;\n }\n\n vote(votes = {}) {\n const min = this.getMinOptionsPerVote();\n const max = this.getMaxOptionsPerVote();\n\n const indices = Object.keys(votes);\n\n if (indices.length < min) {\n console.warn(\n \"Count of options (%s) can't be less than minimum options per vote (%s)\",\n indices.length,\n min,\n );\n return false;\n }\n\n if (indices.length > max) {\n console.warn(\n \"Count of options (%s) can't be more than maximum options per vote (%s)\",\n indices.length,\n max,\n );\n return false;\n }\n\n return super.vote(votes);\n }\n\n constructor(config) {\n super(config);\n\n this.qualifyingHashtags = config.data.qualifying_hashtags;\n this.minOptionsPerVote = config.data.min_options_per_vote;\n this.maxOptionsPerVote = config.data.max_options_per_vote;\n }\n}\n","import Regular from './poll.regular';\n\nexport default class FlexiPoll extends Regular {\n static TYPE = 'poll';\n\n static STATE_STARTED = Regular.STATE_STARTED;\n static STATE_CLOSED = Regular.STATE_CLOSED;\n\n static ON_VOTE = Regular.ON_VOTE;\n static ON_RESULTS = Regular.ON_RESULTS;\n static ON_STATE_CHANGE = Regular.ON_STATE_CHANGE;\n}\n","/* eslint no-continue: \"off\" */\n\nimport Enmasse from '@monterosa/sdk-enmasse-kit';\n\nimport FrameFactory from './frame';\nimport Poll from '../elements/poll';\nimport Powerbar from '../elements/poll.powerbar';\nimport Prediction from '../elements/quiz.prediction';\nimport Trivia from '../elements/quiz.trivia';\nimport Swing from '../elements/diametric.swing';\nimport Emoting from '../elements/diametric.emoting';\nimport Regular from '../elements/poll.regular';\nimport FlexiPoll from '../elements/poll.flexipoll';\n\nexport default class PollFactory extends FrameFactory {\n static MSG_CLASS_POLL = 'p';\n static MSG_CLASS_FB = 'fb';\n static MSG_CLASS_STOP = 'stop';\n static MSG_CLASS_REVEAL = 'reveal';\n\n static MSG_CLASSES = [\n PollFactory.MSG_CLASS_POLL,\n PollFactory.MSG_CLASS_FB,\n PollFactory.MSG_CLASS_STOP,\n PollFactory.MSG_CLASS_REVEAL,\n ];\n\n vote(enmasseId, vote) {\n const poll = this.getByEnmasseId(enmasseId);\n const args = [enmasseId, vote, ''];\n\n Enmasse.send(poll._channel, 'v', args);\n }\n\n processMessages() {\n let i = 0;\n let message;\n\n // loop through the loop and process each item\n while (i < this.messages.length) {\n message = this.messages[i];\n\n // trying to find existent instance\n const enmasseId = parseInt(message.body[0], 10);\n const poll = this.getByEnmasseId(enmasseId);\n\n // if poll doesn't exist\n if (!poll) {\n i++;\n continue;\n }\n\n this.instances[poll.getId()]._channel = message.channel;\n\n // remove processed item from the queue\n this.messages.splice(i, 1);\n\n switch (message.klass) {\n case PollFactory.MSG_CLASS_POLL:\n this.processPollMessage(poll, message);\n break;\n case PollFactory.MSG_CLASS_FB:\n this.processFeedbackMessage(poll, message);\n break;\n case PollFactory.MSG_CLASS_STOP:\n this.processStopMessage(poll, message);\n break;\n case PollFactory.MSG_CLASS_REVEAL:\n this.processRevealMessage(poll, message);\n break;\n default:\n break;\n }\n }\n }\n\n /* eslint-disable no-unused-vars */\n processPollMessage(poll /* , message */) {\n poll.finalize();\n }\n /* eslint-enable no-unused-vars */\n\n processFeedbackMessage(poll, message) {\n const hasSource = !!message.body[2];\n const hasCounters = !!message.body[3];\n\n const isFinal = parseInt(message.body[1], 10) === 1;\n const sources = hasSource ? message.body[2].split(':') : [];\n let counters = hasCounters ? message.body[3].split(':') : [];\n const results = [];\n const resultsPerSource = [];\n\n // converting counters to integer\n counters = counters.map((counter) => +counter);\n\n counters.forEach((counter, i) => {\n const total = counters.length / (sources.length / 2);\n const idx = i % total;\n\n results[idx] = +counter + (results[idx] || 0);\n });\n\n for (let i = 0, l = sources.length / 2; i < l; i++) {\n const total = counters.length / (sources.length / 2);\n\n resultsPerSource.push({\n source: sources[i * 2],\n voters: +sources[i * 2 + 1],\n results: counters.slice(total * i, total * i + total),\n });\n }\n\n if (results.length > 0 || isFinal) {\n poll.setResultsPerSource(resultsPerSource);\n poll.setResults(results);\n }\n }\n\n processStopMessage(poll, message) {\n poll.stop(message.body[1]);\n }\n\n processRevealMessage(poll, message) {\n poll.reveal(message.body[1] - 1);\n }\n\n // TODO: combine create() and createSnapshot() methods\n create(data) {\n super.create(data);\n\n const Constructor = this.getConstructorByType(data.type);\n const poll = new Constructor(data);\n\n this.instances[data.id] = poll;\n\n this.processMessages();\n\n poll.bind(Poll.ON_VOTE, this.handleVote.bind(this, poll));\n\n return poll;\n }\n\n createSnapshot(data) {\n super.createSnapshot(data);\n\n const Constructor = this.getConstructorByType(data.type);\n const poll = new Constructor(data);\n\n this.instances[data.id] = poll;\n\n poll.finalize();\n\n return poll;\n }\n\n setMessage(message) {\n if (PollFactory.MSG_CLASSES.indexOf(message.klass) === -1) {\n return;\n }\n\n this.messages.push(message);\n this.processMessages();\n }\n\n getConstructorByType(type) {\n switch (type) {\n case Powerbar.TYPE:\n return Powerbar;\n case Prediction.TYPE:\n return Prediction;\n case Trivia.TYPE:\n return Trivia;\n case Swing.TYPE:\n return Swing;\n case Emoting.TYPE:\n return Emoting;\n case Regular.TYPE:\n return Regular;\n case FlexiPoll.TYPE:\n return FlexiPoll;\n default:\n return undefined;\n }\n }\n\n handleVote(instance, vote) {\n let idx;\n let cast = [];\n\n switch (instance.getType()) {\n case Regular.TYPE:\n case FlexiPoll.TYPE:\n case Prediction.TYPE:\n case Trivia.TYPE:\n break;\n default:\n idx = vote;\n\n vote = {};\n vote[idx] = 1;\n break;\n }\n\n for (idx in vote) {\n if ({}.hasOwnProperty.call(vote, idx)) {\n cast = cast.concat([+idx + 1, vote[idx]]);\n }\n }\n\n this.vote(instance.getEnmasseId(), cast.join(':'));\n }\n\n constructor() {\n super();\n\n // a queue of messages on poll's channel\n this.messages = [];\n }\n}\n","import Frame from './frame';\n\nexport default class Data extends Frame {\n static TYPE = 'data';\n static STATE_STARTED = 'started';\n static STATE_CLOSED = 'closed';\n static ON_STATE_CHANGE = 'state';\n\n getState() {\n return this.state;\n }\n\n setState(state) {\n // do not fire state change if passed state is the same as it was\n if (state === this.state) {\n return;\n }\n\n this.state = state;\n this.trigger(Data.ON_STATE_CHANGE, state);\n }\n\n updateDurationLeft() {\n super.updateDurationLeft();\n\n if (this.durationLeft > 0) {\n this.setState(Data.STATE_STARTED);\n } else {\n this.setState(Data.STATE_CLOSED);\n }\n }\n\n update(config = {}) {\n super.update(config);\n\n this.publishedAt = config.published_at - 0 || 0;\n\n if (this.fixed) {\n this.updateDurationLeft();\n }\n }\n}\n","import FrameFactory from './frame';\nimport Data from '../elements/data';\n\nexport default class DataFactory extends FrameFactory {\n create(data) {\n super.create(data);\n\n const element = new Data(data);\n\n element.finalize();\n\n this.instances[data.id] = element;\n\n return element;\n }\n\n createSnapshot(data) {\n super.createSnapshot(data);\n\n return this.create(data);\n }\n}\n","import Entity from './entity';\n\nexport default class Curation extends Entity {\n static TYPE = 'curation';\n\n static SOURCE_TWITTER = 'twitter';\n\n getText() {\n return this.text;\n }\n\n getSender() {\n return this.sender;\n }\n\n getSenderName() {\n return this.senderName;\n }\n\n getSenderPicure() {\n return this.senderPicture;\n }\n\n getSource() {\n return this.source;\n }\n\n constructor(config) {\n super(config);\n\n this.text = config.data.text;\n this.sender = config.data.sender;\n this.senderName = config.data.sender_name;\n this.senderPicture = config.data.sender_picture;\n this.source = config.data.source;\n }\n}\n","import BaseFactory from './base';\nimport Curation from '../elements/curation';\n\nexport default class CurationFactory extends BaseFactory {\n create(data) {\n super.create(data);\n\n const curation = new Curation(data);\n\n this.instances[data.id] = curation;\n\n return curation;\n }\n\n createSnapshot(data) {\n super.createSnapshot(data);\n\n return this.create(data);\n }\n}\n","import ConnectionAdaptor from '../utils/connection_adaptor';\nimport PollFactory from './poll';\nimport DataFactory from './data';\nimport CurationFactory from './curation';\n\nimport Data from '../elements/data';\nimport Curation from '../elements/curation';\nimport Powerbar from '../elements/poll.powerbar';\nimport Prediction from '../elements/quiz.prediction';\nimport Trivia from '../elements/quiz.trivia';\nimport Swing from '../elements/diametric.swing';\nimport Emoting from '../elements/diametric.emoting';\nimport Regular from '../elements/poll.regular';\nimport FlexiPoll from '../elements/poll.flexipoll';\n\nexport default (() => {\n const self = {};\n\n let channels = {};\n\n const factories = [];\n\n const factoriesByChannel = {};\n\n // Hash of factories instances keyed on frame type.\n self.items = {};\n\n const handleMessage = (msg) => {\n // console.log(\"Factories::handleMessage\", msg);\n\n // get factory by channel id\n const factory = getFactoryByChannel(msg.channel);\n\n if (factory !== null) {\n factory.setMessage(msg);\n }\n return null;\n };\n\n const getFactoryByChannel = (channel) => {\n for (const key in channels) {\n if ({}.hasOwnProperty.call(channels, key) && channels[key] === channel) {\n return factoriesByChannel[key] || null;\n }\n }\n\n return null;\n };\n\n self.destroyInstances = () => {\n for (const factory of factories) {\n factory.destroyInstances();\n }\n };\n\n self.setChannels = (ch) => {\n channels = ch;\n };\n\n self.get = (type) => self.items[type];\n\n self.init = () => {\n const data = [\n {\n Constructor: PollFactory,\n channel: 'poll',\n types: [\n Regular.TYPE,\n FlexiPoll.TYPE,\n Powerbar.TYPE,\n Swing.TYPE,\n Emoting.TYPE,\n Prediction.TYPE,\n Trivia.TYPE,\n ],\n },\n {\n Constructor: DataFactory,\n channel: null,\n types: [Data.TYPE],\n },\n {\n Constructor: CurationFactory,\n channel: null,\n types: [Curation.TYPE],\n },\n ];\n\n data.forEach((item) => {\n const factory = new item.Constructor();\n factories.push(factory);\n\n if (item.channel !== null) {\n factoriesByChannel[item.channel] = factory;\n }\n\n item.types.forEach((type) => {\n self.items[type] = factory;\n });\n });\n\n ConnectionAdaptor.bind(ConnectionAdaptor.ON_MESSAGE, handleMessage);\n };\n\n return self;\n})();\n","import Emitter from 'tiny-emitter';\nimport assignIn from 'lodash.assignin';\nimport Deferred from 'Deferred';\n\nimport ConnectionAdaptor from './connection_adaptor';\nimport Factories from '../factories/factories';\n\n// Listens on control channel for create and delete messages.\n// Constructor takes main control channel id. No methods.\nfunction Control(config) {\n config = config || {};\n\n const self = this;\n const { channel } = config;\n\n this.trigger = this.emit;\n this.bind = this.on;\n this.unbind = this.off;\n\n const handleMessage = (message) => {\n // channel and type should match settings\n if (message.channel !== channel) {\n return;\n }\n\n switch (message.klass) {\n case Control.MSG_TYPE_CREATE:\n handleMessageCreate(message);\n break;\n case Control.MSG_TYPE_REVOKE:\n handleMessageRevoke(message);\n break;\n default:\n break;\n }\n };\n\n const handleEOC = (_channel) => {\n // channel and type should match settings\n if (_channel !== channel) {\n return;\n }\n\n self.trigger(Control.MSG_TYPE_EOC);\n };\n\n const handleMessageCreate = (message) => {\n const data = JSON.parse(message.body[0]);\n const factory = Factories.get(data.type);\n\n if (typeof factory === 'undefined') {\n return;\n }\n\n const instance = factory.get(data.id);\n\n // secure runtime against broken data\n try {\n if (instance) {\n self.update(data);\n } else {\n self.create(data);\n }\n } catch (e) {\n console.error(e);\n }\n };\n\n const handleMessageRevoke = (message) => {\n const data = JSON.parse(message.body[0]);\n\n self.revoke(data);\n };\n\n self.create = (data) => {\n const factory = Factories.get(data.type);\n\n const instance = factory.create(data);\n\n // trigger MSG_TYPE_CREATE only if instance is finalized\n Deferred.when(instance.finalized).done(() => {\n self.trigger(Control.MSG_TYPE_CREATE, instance);\n });\n };\n\n self.update = (data) => {\n const factory = Factories.get(data.type);\n const instance = factory.get(data.id);\n\n factory.update(instance, data);\n\n self.trigger(Control.MSG_TYPE_UPDATE, instance);\n };\n\n self.revoke = (data) => {\n const factory = Factories.get(data.type);\n\n if (typeof factory === 'undefined') {\n return;\n }\n\n const instance = factory.get(data.id);\n\n if (!instance) {\n return;\n }\n\n factory.revoke(data.id);\n self.trigger(Control.MSG_TYPE_REVOKE, instance);\n };\n\n self.destroy = () => {\n // destroy all elements instances\n Factories.destroyInstances();\n\n ConnectionAdaptor.unbind(ConnectionAdaptor.ON_MESSAGE, handleMessage);\n };\n\n ConnectionAdaptor.bind(ConnectionAdaptor.ON_MESSAGE, handleMessage);\n ConnectionAdaptor.bind(ConnectionAdaptor.ON_EOC, handleEOC);\n}\n\nControl.prototype = assignIn(Control.prototype, new Emitter());\n\nControl.MSG_TYPE_CREATE = 'create';\nControl.MSG_TYPE_UPDATE = 'update';\nControl.MSG_TYPE_REVOKE = 'revoke';\nControl.MSG_TYPE_EOC = 'eoc';\nControl.MSG_TYPE_SNAPSHOT = 'snapshot';\n\nexport default Control;\n","export const TIME_FORMAT_SECONDS = 'seconds';\nexport const TIME_FORMAT_ARRAY = 'array';\nexport const TIME_FORMAT_OBJECT = 'object';\n\nexport const CHANNEL_POLL = 'p';\nexport const CHANNEL_CONTROL = 'l';\n\nexport const MIC_CONFIG_FILE = 'miccfg.json';\n","import Enmasse from '@monterosa/sdk-enmasse-kit';\nimport Deferred from 'Deferred';\nimport Emitter from 'tiny-emitter';\nimport xhr from 'xhr';\nimport assignIn from 'lodash.assignin';\n\nimport Control from './utils/control';\nimport LViSDate from './utils/date';\nimport Run from './utils/run';\nimport Factories from './factories/factories';\nimport ConnectionAdaptor from './utils/connection_adaptor';\nimport Project from './project';\n\nimport {\n TIME_FORMAT_SECONDS,\n TIME_FORMAT_ARRAY,\n TIME_FORMAT_OBJECT,\n CHANNEL_POLL,\n CHANNEL_CONTROL,\n} from './constants';\n\nconst Event = function Event(uuid) {\n /*\n * Settings\n */\n uuid = uuid || null;\n\n /*\n * Private properties\n */\n const self = this;\n let state = Event.STATE_PENDING;\n let data = {};\n const history = []; // list of all past and current elements in this episode\n let control = null;\n\n this.trigger = this.emit;\n this.bind = this.on;\n this.unbind = this.off;\n\n /*\n * Public properties\n */\n self.ready = new Deferred();\n\n /*\n * Private methods\n */\n\n const calculateState = () => {\n const now = LViSDate.now();\n const endAt = self.get('end_at');\n const startAt = self.get('start_at');\n const delay = self.get('__delay');\n const extraTime = self.get('extra_time');\n\n const newState = (() => {\n if (isDataEmpty()) {\n return Event.STATE_PENDING;\n // flag `started` is used to determine if event is manual,\n // in this case start time is ahead of current timestamp\n }\n\n if (!self.get('started') || now < startAt) {\n return Event.STATE_UPCOMING;\n }\n\n if (now < endAt) {\n return Event.STATE_ACTIVE;\n }\n\n if (now < endAt - delay + extraTime) {\n return Event.STATE_PROLONGED;\n }\n\n return Event.STATE_FINISHED;\n })();\n\n if (newState !== state) {\n setState(newState);\n }\n\n Run.nextPriority(() => calculateState());\n };\n\n const initControl = () => {\n if (control !== null) {\n return;\n }\n\n control = new Control({\n channel: self.getChannels(CHANNEL_CONTROL),\n });\n\n control.bind(Control.MSG_TYPE_CREATE, handleControlCreate);\n control.bind(Control.MSG_TYPE_UPDATE, handleControlUpdate);\n control.bind(Control.MSG_TYPE_REVOKE, handleControlRevoke);\n control.bind(Control.MSG_TYPE_EOC, handleControlEOC);\n };\n\n const setState = (newState) => {\n const oldState = self.getState();\n\n state = newState;\n\n if (oldState !== self.getState()) {\n self.trigger(Event.ON_STATE, self.getState());\n }\n\n self.trigger(Event.ON_SUBSTATE, self.getSubstate());\n };\n\n const processHistory = ({ timeline, config }) => {\n const snapshots = timeline.map((item) => item);\n\n snapshots.forEach(ConnectionAdaptor.adaptSnapshotData);\n\n // elements to revoke\n //\n // skipping this phase as `/revoke` message is preserved on enmasse\n // channels until the end of an event\n\n // elements to create\n snapshots\n .filter((snapshot) => !getElementFromHistory(snapshot.id))\n .map((snapshot) => {\n const factory = Factories.get(snapshot.type);\n\n return factory.createSnapshot(snapshot);\n })\n .forEach(handleControlCreate);\n\n snapshots\n .filter((snapshot) => {\n const existingElement = getElementFromHistory(snapshot.id);\n\n return (\n existingElement &&\n existingElement.getUpdatedAt() > snapshot.updated_at\n );\n })\n .map((snapshot) => {\n const factory = Factories.get(snapshot.type);\n const element = factory.get(snapshot.id);\n\n factory.update(element, snapshot);\n\n return element;\n })\n .forEach(handleControlUpdate);\n\n if (isDataEmpty()) {\n ConnectionAdaptor.adaptEvent(config);\n\n self.setData(config);\n }\n };\n\n const isDataEmpty = () => {\n if (!data || typeof data !== 'object' || Array.isArray(data)) {\n return false;\n }\n\n return !Object.keys(data).length;\n };\n\n const isReady = () => self.ready.state() === 'resolved';\n\n const isElementInHistory = (element) =>\n history.some(\n (historyElement) => historyElement.getId() === element.getId(),\n );\n\n const canLoadHistory = () => {\n // time to ignore history loading\n const ignore = parseInt(Project.get('history_ignore'), 10) || 60;\n\n // delay at the moment of time when event's data were adapted\n const delay = self.get('__delay');\n\n // even'ts start time (including delay)\n const start = self.get('start_at');\n\n // do not load history if now before this time\n const threshold = start - delay + ignore;\n\n return self.isPending() || LViSDate.now() > threshold;\n };\n\n const addElementToHistory = (element) => {\n if (isElementInHistory(element)) {\n return;\n }\n\n // sort by published at and id\n for (let i = history.length - 1; i >= 0; i--) {\n if (history[i].publishedAt < element.publishedAt) {\n history.splice(i + 1, 0, element);\n return;\n }\n\n if (history[i].publishedAt === element.publishedAt) {\n if (history[i].id < element.id) {\n history.splice(i + 1, 0, element);\n return;\n }\n }\n }\n\n history.unshift(element);\n };\n\n const getElementFromHistory = (id) =>\n history.find((element) => element.getId() === id);\n\n const removeElementFromHistory = (element) => {\n const index = history.indexOf(element);\n\n if (index > -1) {\n history.splice(index, 1);\n }\n };\n\n const sortElementsInHistory = () => {\n history.sort((a, b) => a.getPublishedAt() - b.getPublishedAt());\n };\n\n const handleControlCreate = (instance) => {\n addElementToHistory(instance);\n\n if (isReady()) {\n self.trigger(Event.ON_ELEMENT_PUBLISH, instance);\n }\n };\n\n const handleControlUpdate = (instance) => {\n sortElementsInHistory();\n\n if (isReady()) {\n self.trigger(Event.ON_ELEMENT_UPDATE, instance);\n }\n };\n\n const handleControlRevoke = (instance) => {\n removeElementFromHistory(instance);\n\n if (isReady()) {\n self.trigger(Event.ON_ELEMENT_REVOKE, instance);\n }\n };\n\n const handleControlEOC = () => {\n self.trigger(Event.ON_EOC);\n };\n\n /*\n * Getters\n */\n\n this.get = (param) => {\n if (typeof param === 'undefined') {\n // return full dataset if parameter is not set\n return data;\n }\n\n if (typeof data[param] !== 'undefined') {\n // return value that matches passed parameter in dataset\n return data[param];\n }\n\n return null;\n };\n\n this.getUUID = () => uuid;\n\n this.getChannels = (type) => {\n const channelId = (t) => `${t}-${uuid}`;\n\n if (typeof type === 'undefined') {\n return {\n poll: channelId(CHANNEL_POLL),\n control: channelId(CHANNEL_CONTROL),\n };\n }\n\n if (type === CHANNEL_POLL || type === CHANNEL_CONTROL) {\n return channelId(type);\n }\n\n throw new Error(`Unknown channel type ${type}`);\n };\n\n this.getName = () => this.get('name');\n\n this.getStartAt = () => this.get('start_at');\n\n this.getOriginalStartAt = () => {\n const startAt = this.getStartAt();\n\n if (startAt === null) {\n return null;\n }\n\n return startAt - data.__delay;\n };\n\n this.getEndAt = () => this.get('end_at');\n\n this.getState = () => {\n switch (state) {\n case Event.STATE_PROLONGED:\n return Event.STATE_FINISHED;\n default:\n return state;\n }\n };\n\n this.getSubstate = () => state;\n\n this.getCustomFields = (field) => {\n const fields = this.get('custom_fields');\n\n if (fields === null) {\n return null;\n }\n\n const values = Project.localise(fields);\n\n if (typeof field === 'undefined') {\n // return full set of custom fields if field name wasn't passed\n return values;\n }\n\n // custom field was passed\n if (typeof values[field] !== 'undefined') {\n // return specific field if field exists in object\n return values[field];\n }\n\n // otherwise return null\n return null;\n };\n\n this.getCountdown = (format) => {\n format = format || TIME_FORMAT_SECONDS;\n\n // countdown values\n const countdown = {\n years: 0,\n months: 0,\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0,\n };\n\n let diffSeconds = this.get('start_at') - LViSDate.now();\n\n if (diffSeconds < 0) {\n diffSeconds = 0;\n }\n\n if (format === TIME_FORMAT_SECONDS) {\n return diffSeconds;\n }\n\n // calculate difference between event start at and now dates relatively to the Unix Epoch time\n const diff = new Date(diffSeconds * 1000);\n\n // methods to be casted on diff date\n const methods = {\n years: 'getUTCFullYear',\n months: 'getUTCMonth',\n days: 'getUTCDate',\n hours: 'getUTCHours',\n minutes: 'getUTCMinutes',\n seconds: 'getUTCSeconds',\n };\n\n let value;\n for (const [key, method] of Object.entries(methods)) {\n value = diff[method]();\n\n switch (method) {\n case 'getUTCDate':\n value--; // date starts with 1 not 0\n break;\n case 'getUTCFullYear':\n value -= 1970; // year when Unix Epoch started\n break;\n default:\n break;\n }\n\n countdown[key] = value;\n }\n\n switch (format) {\n case TIME_FORMAT_OBJECT:\n return countdown;\n case TIME_FORMAT_ARRAY:\n return [\n countdown.seconds,\n countdown.minutes,\n countdown.hours,\n countdown.days,\n countdown.months,\n countdown.years,\n ];\n default:\n // undefined format?\n return null;\n }\n };\n\n this.getHistory = () => history;\n\n this.getLastFromHistory = () => {\n if (history.length > 0) {\n return history[history.length - 1];\n }\n\n return null;\n };\n\n /*\n * Public methods\n */\n\n this.setData = (newData) => {\n const oldDigest = data.digest;\n const oldDelay = data.__delay;\n\n data = newData || {};\n\n if (oldDigest !== newData.digest || oldDelay !== newData.__delay) {\n self.trigger(Event.ON_UPDATE);\n }\n\n calculateState();\n };\n\n this.isPending = () => state === Event.STATE_PENDING;\n\n this.isReady = () => isReady();\n\n this.addDemographicsCounter = (\n segmentName,\n segmentValue,\n counter,\n round,\n min,\n max,\n ) => {\n if (this.isPending()) {\n console.error(\n \"Can't add demographics counter while event is in the pending state.\",\n );\n\n return;\n }\n\n const channel = this.getChannels(CHANNEL_CONTROL);\n const segment = [segmentName, segmentValue];\n\n Enmasse.Demographics.addCounter(\n channel,\n uuid,\n segment,\n counter,\n round,\n min,\n max,\n );\n };\n\n this.markAsReady = () => {\n if (isReady()) {\n return;\n }\n\n self.ready.resolve();\n self.trigger(Event.ON_READY);\n };\n\n this.markAsNotReady = () => {\n if (!isReady()) {\n return;\n }\n\n history\n .map((element) => ({\n id: element.getId(),\n type: element.getType(),\n }))\n .forEach((item) => {\n control.revoke(item);\n });\n\n self.ready = new Deferred();\n self.trigger(Event.ON_NOT_READY);\n };\n\n /**\n * Loads event's history from CDN\n *\n * @method loadHistory\n * @public\n * @param {string} host Static host\n * @param {boolean} [reconnect=false] Indicates that history is loading on reconnect\n * @return {deferred} of ajax request\n */\n this.loadHistory = (host, reconnect) => {\n const deferred = new Deferred();\n\n const success = (historyData) => {\n try {\n // secure code against the bad data\n processHistory(historyData);\n } catch (exception) {\n console.error(exception);\n }\n\n deferred.resolve();\n };\n\n const error = () => {\n if (self.isPending()) {\n setState(Event.STATE_FAILURE);\n }\n\n deferred.reject();\n };\n\n if (canLoadHistory()) {\n const url = `${host}/events/${uuid.substr(0, 2)}/${uuid}/history.json`;\n\n xhr.get(url, { json: true }, (err, resp, historyData = {}) => {\n const status = resp.statusCode;\n const isSuccess =\n (status >= 200 && status <= 300) || status === 0 || status === '';\n const hasTimeline = {}.hasOwnProperty.call(historyData, 'timeline');\n const hasConfig = {}.hasOwnProperty.call(historyData, 'config');\n\n // Assert on race condition when the event becomes ready before\n // history is loaded. Not applicable on reconnect.\n if (isReady() && !reconnect) {\n console.warn('Event is ready before history is loaded');\n }\n\n if (isSuccess && hasTimeline && hasConfig) {\n success(historyData);\n } else {\n error();\n }\n });\n } else {\n deferred.resolve();\n }\n\n return deferred;\n };\n\n calculateState();\n initControl();\n};\n\nEvent.prototype = assignIn(Event.prototype, new Emitter());\n\nEvent.ON_READY = 'ready';\nEvent.ON_NOT_READY = 'not-ready';\nEvent.ON_UPDATE = 'update';\nEvent.ON_STATE = 'state';\nEvent.ON_SUBSTATE = 'substate';\nEvent.ON_EOC = 'eoc';\nEvent.ON_ELEMENT_PUBLISH = 'element-publish';\nEvent.ON_ELEMENT_UPDATE = 'element-update';\nEvent.ON_ELEMENT_REVOKE = 'element-revoke';\n\nEvent.STATE_FAILURE = 'failure';\nEvent.STATE_PENDING = 'pending';\nEvent.STATE_UPCOMING = 'upcoming';\nEvent.STATE_ACTIVE = 'active';\nEvent.STATE_PROLONGED = 'prolonged'; // substate of STATE_FINISHED\nEvent.STATE_FINISHED = 'finished';\n\nEvent.HISTORY_LOCALISATION = 1;\nEvent.HISTORY_VERSIONS = {\n 2: Event.HISTORY_LOCALISATION,\n};\n\nexport default Event;\n","import Emitter from 'tiny-emitter';\n\nimport Project from './project';\nimport Event from './event';\nimport LViSDate from './utils/date';\nimport ConnectionAdaptor from './utils/connection_adaptor';\n\n// properties\nlet channel = null;\nlet events = [];\nlet assets = {};\nconst instances = {}; // cache of instances\nlet ready = false;\n\nconst Listings = new Emitter();\n\nListings.trigger = Listings.emit;\nListings.bind = Listings.on;\nListings.unbind = Listings.off;\n\n// constants\nListings.ON_READY = 'ready';\nListings.ON_UPDATE = 'update';\nListings.MSG_CLASS = 'listings';\n\n/*\n * Private methods\n */\n\nconst handleMessage = (msg) => {\n // lazy return to reduce code inheritance\n if (msg.channel !== channel) {\n return;\n }\n\n switch (msg.klass) {\n case Listings.MSG_CLASS: {\n const data = JSON.parse(msg.body[0]);\n\n handleData(data);\n\n break;\n }\n default:\n break;\n }\n};\n\nconst handleEOC = (_channel) => {\n if (_channel !== channel) {\n return;\n }\n\n // do not expose ON_READY event if listings were initialised already\n if (!ready) {\n ready = true;\n Listings.trigger(Listings.ON_READY);\n }\n};\n\nconst findById = (collection, id) => {\n for (let i = 0, l = collection.length; i < l; i++) {\n if (collection[i].id === id) {\n return collection[i];\n }\n }\n\n return null;\n};\n\n// check if there are any changes in listings data\nconst haveChanged = (data) => {\n let i;\n let l;\n let event;\n\n // iterate over came events data\n for (i = 0, l = data.events.length; i < l; i++) {\n event = findById(events, data.events[i].id);\n\n // new episode OR digest of the existant event has changed\n if (event === null || event.digest !== data.events[i].digest) {\n return true;\n }\n }\n\n // check if event was removed\n for (i = 0, l = events.length; i < l; i++) {\n if (findById(data.events, events[i].id) === null) {\n return true;\n }\n }\n\n return false;\n};\n\nconst handleData = (data) => {\n const isChanges = ready && haveChanged(data);\n\n events = data.events;\n\n events.sort((a, b) => {\n if (a.start_at < b.start_at) {\n return -1;\n }\n\n if (a.start_at > b.start_at) {\n return 1;\n }\n\n return 0;\n });\n\n // populate project object with the data\n Project.setData(data.project);\n\n if (!ready) {\n // load assets only once\n // and cache them permanently\n assets = data.assets;\n }\n\n // update instances\n for (let i = 0, l = events.length; i < l; i++) {\n const event = events[i];\n\n if (instances[event.id]) {\n instances[event.id].setData(event);\n }\n }\n\n if (isChanges) {\n Listings.trigger(Listings.ON_UPDATE);\n }\n};\n\n/*\n * Public methods\n */\n\n// returns object of the LViS event by Id\nListings.get = (id) => {\n // lazy return if instance already exists\n if (typeof instances[id] !== 'undefined') {\n return instances[id];\n }\n\n const data = findById(events, id);\n const event = new Event(id);\n\n // Data from Enmasse has priority over data from CDN\n // Setting data from listings if data exists\n if (data) {\n event.setData(data);\n }\n\n instances[id] = event;\n\n return event;\n};\n\n// Current episode is the episode start time\n// of which in the past and end time in future.\n// Returns:\n// 1) array of the currently active LViS Events\n// 2) NULL if there are no any LViS Event\nListings.getCurrent = () => {\n const list = [];\n const now = LViSDate.now();\n\n // loop through the raw data\n for (let i = 0, l = events.length; i < l; i++) {\n if (events[i].start_at <= now && now < events[i].end_at) {\n list.push(Listings.get(events[i].id));\n }\n }\n\n // return NULL if nothing found\n return list.length ? list : null;\n};\n\n// Returns:\n// 1) array of the LViS Events that are\n// scheduled to start next\n// 2) NULL if there are no any LViS Event\nListings.getNext = () => {\n // time till the next event\n let nextStartAt = Number.POSITIVE_INFINITY;\n const list = [];\n\n // loop through the raw data and find\n // the minimal time till the upcoming event\n let i;\n let l;\n const now = LViSDate.now();\n\n for (i = 0, l = events.length; i < l; i++) {\n if (now < events[i].start_at && events[i].start_at < nextStartAt) {\n nextStartAt = events[i].start_at;\n }\n }\n\n if (nextStartAt < Number.POSITIVE_INFINITY) {\n for (i = 0, l = events.length; i < l; i++) {\n if (events[i].start_at === nextStartAt) {\n list.push(Listings.get(events[i].id));\n }\n }\n }\n\n // return NULL if nothing found\n return list.length ? list : null;\n};\n\n// can't be realized now due to absence of\n// the ended events in the list\n// Listings.getPrevious = function () {};\n\n// returns the list of all events sorted by start time\n// eslint-disable-next-line\nListings.getList = function () {\n let event;\n const list = [];\n\n for (let i = 0, l = events.length; i < l; i++) {\n event = this.get(events[i].id);\n\n if (event !== null) {\n list.push(event);\n }\n }\n\n return list;\n};\n\nListings.getAssets = (id) => {\n if (typeof id === 'undefined') {\n return assets;\n }\n\n return assets[id] || null;\n};\n\nListings.fetchListings = async (host, project) => {\n const response = await fetch(\n `https://${host}/projects/${project.substr(0, 2)}/${project}/listings.json`,\n );\n\n const data = await response.json();\n\n handleData(data);\n};\n\nListings.init = (config) => {\n config = config || {};\n channel = config.channel || null;\n\n ConnectionAdaptor.bind(ConnectionAdaptor.ON_MESSAGE, handleMessage);\n ConnectionAdaptor.bind(ConnectionAdaptor.ON_EOC, handleEOC);\n};\n\nexport default Listings;\n","import Enmasse from '@monterosa/sdk-enmasse-kit';\n\nexport default (() => {\n // pointer to `this` object\n const self = {};\n\n self.getSessionId = () => Enmasse.getSessionId();\n\n self.signIn = (...args) => Enmasse.signIn(...args);\n\n self.login = (...args) => Enmasse.login(...args);\n\n return self;\n})();\n","import { calculatePercentage } from '@monterosa/sdk-util';\nimport Enmasse from '@monterosa/sdk-enmasse-kit';\nimport $script from 'scriptjs';\nimport Deferred from 'Deferred';\nimport xhr from 'xhr';\nimport Emitter from 'tiny-emitter';\n\nimport { version } from '../package.json';\nimport LViSDate from './utils/date';\nimport Sync from './utils/sync';\nimport ConnectionAdaptor from './utils/connection_adaptor';\nimport Control from './utils/control';\nimport Run from './utils/run';\nimport Listings from './listings';\nimport Event from './event';\nimport Project from './project';\nimport User from './user';\n\nimport BaseFactory from './factories/base';\nimport FrameFactory from './factories/frame';\nimport CurationFactory from './factories/curation';\nimport DataFactory from './factories/data';\nimport PollFactory from './factories/poll';\nimport Factories from './factories/factories';\n\nimport Frame from './elements/frame';\nimport Poll from './elements/poll';\nimport Data from './elements/data';\nimport Curation from './elements/curation';\nimport Regular from './elements/poll.regular';\nimport FlexiPoll from './elements/poll.flexipoll';\nimport Powerbar from './elements/poll.powerbar';\nimport Diametric from './elements/diametric';\nimport Swing from './elements/diametric.swing';\nimport Emoting from './elements/diametric.emoting';\nimport Quiz from './elements/quiz';\nimport Prediction from './elements/quiz.prediction';\nimport Trivia from './elements/quiz.trivia';\n\nimport {\n Storage,\n StorageLocalDriver,\n StorageCookieDriver,\n} from './utils/storage';\n\nimport {\n TIME_FORMAT_SECONDS,\n TIME_FORMAT_ARRAY,\n TIME_FORMAT_OBJECT,\n CHANNEL_POLL,\n CHANNEL_CONTROL,\n MIC_CONFIG_FILE,\n} from './constants';\n\n// properties\nlet host = null;\nlet channel = null;\nlet lvisEvent = null;\nlet initialised = false;\nlet forceSecure = false;\nconst enmasseReady = new Deferred();\nconst projectReady = new Deferred();\nconst assetsReady = new Deferred();\n\nconst LViS = new Emitter();\n\nconst LViSRun = {\n next: Run.nextRegular,\n};\n\nconst trigger = LViS.emit;\nconst bind = LViS.on;\nconst unbind = LViS.off;\n\nconst ON_READY = 'ready';\nconst ON_ERROR = 'error';\n\nLViS.trigger = trigger;\nLViS.bind = bind;\nLViS.unbind = unbind;\n\n// attach xhr library to make it possible to mock it in unit tests\nLViS._xhr = xhr;\n\nLViS.VERSION = version;\n\nLViS.ON_READY = ON_READY;\nLViS.ON_ERROR = ON_ERROR;\n\nLViS.TIME_FORMAT_SECONDS = TIME_FORMAT_SECONDS;\nLViS.TIME_FORMAT_ARRAY = TIME_FORMAT_ARRAY;\nLViS.TIME_FORMAT_OBJECT = TIME_FORMAT_OBJECT;\n\nLViS.CHANNEL_CONTROL = CHANNEL_CONTROL;\nLViS.CHANNEL_POLL = CHANNEL_POLL;\n\nLViS.Date = LViSDate;\nLViS.Project = Project;\nLViS.Listings = Listings;\nLViS.Control = Control;\nLViS.Run = LViSRun;\nLViS.Event = Event;\nLViS.Storage = Storage;\nLViS.StorageLocalDriver = StorageLocalDriver;\nLViS.StorageCookieDriver = StorageCookieDriver;\nLViS.User = User;\nLViS.Sync = Sync;\nLViS.Enmasse = Enmasse;\nLViS.ConnectionAdaptor = ConnectionAdaptor;\nLViS.ConnectionManager = Enmasse;\nLViS.calculatePercentage = calculatePercentage;\n\nLViS.BaseFactory = BaseFactory;\nLViS.FrameFactory = FrameFactory;\nLViS.CurationFactory = CurationFactory;\nLViS.DataFactory = DataFactory;\nLViS.PollFactory = PollFactory;\nLViS.Factories = Factories;\n\nLViS.Frame = Frame;\nLViS.Poll = Poll;\nLViS.Data = Data;\nLViS.Curation = Curation;\nLViS.FlexiPoll = FlexiPoll;\nLViS.Regular = Regular;\nLViS.Powerbar = Powerbar;\nLViS.Quiz = Quiz;\nLViS.Prediction = Prediction;\nLViS.Trivia = Trivia;\nLViS.Diametric = Diametric;\nLViS.Swing = Swing;\nLViS.Emoting = Emoting;\n\n/*\n * Private methods\n */\n\nconst embedAssets = () => {\n const jsLoaded = new Deferred();\n\n let i;\n const files = {}; // list of files grouped by type\n const assets = getAssets();\n\n for (const key in assets) {\n if ({}.hasOwnProperty.call(assets, key)) {\n for (i = 0; i < assets[key].length; i++) {\n const asset = assets[key][i];\n const type = asset.autoload;\n\n if (typeof type === 'undefined') {\n continue;\n }\n\n if (typeof files[type] === 'undefined') {\n files[type] = [];\n }\n\n files[type].push(asset.data);\n }\n }\n }\n\n if (typeof files.js !== 'undefined' && files.js.length > 0) {\n $script(files.js, jsLoaded.resolve());\n } else {\n jsLoaded.resolve();\n }\n\n if (typeof files.css !== 'undefined' && files.css.length > 0) {\n for (i = 0; i < files.css.length; i++) {\n if (document.createStyleSheet) {\n document.createStyleSheet(files.css[i]);\n } else {\n const style = document.createElement('link');\n style.setAttribute('rel', 'stylesheet');\n style.setAttribute('media', 'all');\n style.setAttribute('type', 'text/css');\n style.setAttribute('href', files.css[i]);\n\n document.head.appendChild(style);\n }\n }\n }\n\n return Deferred.when(jsLoaded);\n};\n\nconst handleEventState = () => {\n if (lvisEvent === null) {\n return;\n }\n\n // console.log(\"LViS::handleEventState\", lvisEvent.getSubstate());\n\n const state = lvisEvent.getSubstate();\n\n if (\n [Event.STATE_FAILURE, Event.STATE_UPCOMING, Event.STATE_FINISHED].indexOf(\n state,\n ) >= 0\n ) {\n // no more data to load\n lvisEvent.markAsReady();\n }\n\n switch (state) {\n // case Event.STATE_PENDING: break;\n // case Event.STATE_FAILURE:\n // case Event.STATE_UPCOMING:\n // break;\n case Event.STATE_ACTIVE:\n handleEventActiveState();\n break;\n case Event.STATE_PROLONGED:\n handleEventProlongedState();\n break;\n case Event.STATE_FINISHED:\n handleEventFinishedState();\n break;\n default:\n break;\n }\n};\n\nconst handleEventEOC = () => {\n lvisEvent.markAsReady();\n};\n\nconst handleEventActiveState = () => {\n // console.log(\"LViS::handleEventActiveState\");\n const channels = lvisEvent.getChannels();\n\n Factories.setChannels(channels);\n\n // subscribe to all channels and kick the things off\n for (const key in channels) {\n if ({}.hasOwnProperty.call(channels, key)) {\n ConnectionAdaptor.subscribe(channels[key]);\n }\n }\n};\n\nconst handleEventProlongedState = () => {\n // console.log(\"LViS::handleEventProlongedState\");\n const channels = lvisEvent.getChannels();\n\n Factories.setChannels(channels);\n\n // subscribe to all channels\n for (const key in channels) {\n if ({}.hasOwnProperty.call(channels, key)) {\n ConnectionAdaptor.subscribe(channels[key]);\n }\n }\n};\n\nconst handleEventFinishedState = () => {\n // console.log(\"LViS::handleEventFinishedState\");\n const channels = lvisEvent.getChannels();\n\n // unsubscribe from all channels\n for (const key in channels) {\n if ({}.hasOwnProperty.call(channels, key)) {\n ConnectionAdaptor.unsubscribe(channels[key]);\n }\n }\n};\n\nconst handleEnmasseState = (...args) => {\n const state = args[0];\n\n switch (state) {\n case Enmasse.STATE_CONNECTED: {\n const time = args[1];\n\n LViSDate.setTime(time);\n\n ConnectionAdaptor.subscribe(channel);\n\n if (lvisEvent && lvisEvent.isReady()) {\n lvisEvent.loadHistory(getHost(), true).always(handleEventState);\n } else {\n handleEventState();\n }\n\n break;\n }\n default:\n break;\n }\n};\n\nconst handleEnmasseReady = () => {\n // console.log(\"API::handleEnmasseReady\");\n enmasseReady.resolve();\n\n Enmasse.connect();\n};\n\nconst handleEnmasseError = () => {\n // console.log(\"API::handleEnmasseError\");\n enmasseReady.reject();\n};\n\nconst handleListingsReady = () => {\n embedAssets()\n .done(() => assetsReady.resolve())\n .fail(() => assetsReady.reject());\n};\n\nconst handleSyncDelayChange = () => {\n LViS.resetEvent();\n};\n\nconst initWithConfig = (config = {}) => {\n const UUIDSchema =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n const hostSchema =\n /^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9])$/i;\n\n if (typeof config.host === 'undefined' || config.host === null) {\n LViS.trigger(LViS.ON_ERROR);\n console.error('Host is not set');\n return;\n }\n\n if (typeof config.project === 'undefined' || config.project === null) {\n LViS.trigger(LViS.ON_ERROR);\n console.error('Project UUID is not set');\n return;\n }\n\n if (!UUIDSchema.test(config.project)) {\n LViS.trigger(LViS.ON_ERROR);\n console.error('Project UUID has incorrect format');\n return;\n }\n\n if (!hostSchema.test(config.host)) {\n LViS.trigger(LViS.ON_ERROR);\n console.error('Host has incorrect format');\n return;\n }\n\n if (initialised) {\n console.warn(\n 'Attempt to initialise library when it was already initialised',\n );\n return;\n }\n\n if (typeof config.forceSecure === 'boolean') {\n forceSecure = config.forceSecure;\n }\n\n channel = `${CHANNEL_CONTROL}-${config.project}`;\n\n // remove leading //, http:// or https://\n host = config.host.replace(/^(.*:)?(\\/+)?/gi, '');\n\n Enmasse.bind(Enmasse.ON_READY, handleEnmasseReady);\n Enmasse.bind(Enmasse.ON_ERROR, handleEnmasseError);\n Enmasse.bind(Enmasse.ON_STATE, handleEnmasseState);\n Listings.bind(Listings.ON_READY, handleListingsReady);\n Sync.bind(Sync.ON_DELAY_CHANGE, handleSyncDelayChange);\n\n enmasseReady.fail(() => console.error('Enmasse initialization failed'));\n assetsReady.fail(() => console.error('Unable to embed assets files'));\n projectReady.fail(() => console.error('Unable to load project settings'));\n\n Deferred.when(enmasseReady, projectReady, assetsReady)\n .done(() => LViS.trigger(LViS.ON_READY))\n .fail(() => LViS.trigger(LViS.ON_ERROR));\n\n Sync.init({\n Event,\n });\n\n Project.init({\n uuid: config.project,\n host: getHost(),\n })\n .done(() => projectReady.resolve())\n .fail(() => projectReady.reject());\n\n Listings.init({\n channel,\n });\n\n Factories.init();\n\n Enmasse.init({\n config: `${getHost()}/config/enmasse.json`,\n info: [`lvis-${LViS.VERSION}`],\n forceSecure,\n });\n\n initialised = true;\n};\n\n/*\n * Public methods\n */\n\nconst getHost = () => {\n const protocol =\n forceSecure || document.location.protocol.indexOf('https') === 0\n ? 'https'\n : 'http';\n\n return `${protocol}://${host}`;\n};\n\nconst getAssets = (...args) => Listings.getAssets(...args);\n\nconst getEvent = () => lvisEvent;\n\nconst setEvent = (newEvent) => {\n // console.log(\"LVIS::setEvent\", newEvent);\n\n // new event mustn't be set if it was already\n if (lvisEvent === newEvent) {\n return;\n }\n\n unsetEvent();\n\n lvisEvent = newEvent;\n\n newEvent.loadHistory(getHost()).always(() => {\n // It is important to bind on these events only when history is loaded\n // to prevent race condition between event state change.\n // Race is caused by Enmasse subscriptions which sets `isReady` flag and history loading.\n lvisEvent.bind(Event.ON_SUBSTATE, handleEventState);\n lvisEvent.bind(Event.ON_EOC, handleEventEOC);\n\n handleEventState();\n });\n};\n\nconst unsetEvent = () => {\n if (lvisEvent === null) {\n return;\n }\n\n const channels = lvisEvent.getChannels();\n\n // unsubscribe from all channels\n for (const key in channels) {\n if ({}.hasOwnProperty.call(channels, key)) {\n ConnectionAdaptor.unsubscribe(channels[key]);\n }\n }\n\n lvisEvent.unbind(Event.ON_SUBSTATE, handleEventState);\n lvisEvent.unbind(Event.ON_EOC, handleEventEOC);\n\n lvisEvent.markAsNotReady();\n\n lvisEvent = null;\n};\n\nconst resetEvent = () => {\n ConnectionAdaptor.unsubscribe(channel);\n ConnectionAdaptor.subscribe(channel);\n\n if (lvisEvent === null) {\n return;\n }\n\n const channels = lvisEvent.getChannels();\n\n // unsubscribe from events channels\n for (const key in channels) {\n if ({}.hasOwnProperty.call(channels, key)) {\n ConnectionAdaptor.unsubscribe(channels[key]);\n ConnectionAdaptor.subscribe(channels[key]);\n }\n }\n\n lvisEvent.markAsNotReady();\n};\n\nconst init = (config = {}) => {\n const initDone = new Deferred();\n\n if (config.host && config.project) {\n initWithConfig(config);\n return initDone.resolve();\n }\n\n // Load miccfg.json file for initialisation config.\n fetch(MIC_CONFIG_FILE)\n .then((response) => response.json())\n .then((data) => {\n if (data.project) {\n config.project = data.project;\n }\n\n if (data.static_host) {\n config.host = data.static_host;\n }\n })\n .catch(() => {\n // Ignore loading error, as the file only available when custom URL is set.\n })\n .finally(() => {\n initWithConfig(config);\n initDone.resolve();\n });\n\n return initDone;\n};\n\nLViS.getHost = getHost;\nLViS.getAssets = getAssets;\nLViS.getEvent = getEvent;\nLViS.setEvent = setEvent;\nLViS.unsetEvent = unsetEvent;\nLViS.resetEvent = resetEvent;\nLViS.init = init;\n\nexport {\n trigger,\n bind,\n unbind,\n // eslint-disable-line\n\n version as VERSION,\n ON_READY,\n ON_ERROR,\n TIME_FORMAT_SECONDS,\n TIME_FORMAT_ARRAY,\n TIME_FORMAT_OBJECT,\n CHANNEL_CONTROL,\n CHANNEL_POLL,\n // eslint-disable-line\n\n LViSDate as Date,\n Project,\n Listings,\n Control,\n LViSRun as Run,\n Event,\n Storage,\n StorageLocalDriver,\n StorageCookieDriver,\n User,\n Sync,\n Enmasse,\n ConnectionAdaptor,\n Enmasse as ConnectionManager,\n // eslint-disable-line\n\n BaseFactory,\n FrameFactory,\n CurationFactory,\n DataFactory,\n PollFactory,\n Factories,\n // eslint-disable-line\n\n Frame,\n Poll,\n Data,\n Curation,\n FlexiPoll,\n Regular,\n Powerbar,\n Quiz,\n Prediction,\n Trivia,\n Diametric,\n Swing,\n Emoting,\n // eslint-disable-line\n\n calculatePercentage,\n getHost,\n getAssets,\n getEvent,\n setEvent,\n unsetEvent,\n resetEvent,\n init,\n};\n\nexport default LViS;\n"],"names":["LViSDate","Emitter","trigger","emit","bind","on","unbind","off","ON_TICK","ON_NEXT","serverTimestamp","lastTickTimestamp","tickTimeoutId","getCurrentTimestamp","Date","now","getMiddleTimestamp","timestamp","Math","floor","tick","clearTimeout","currentTimestamp","timeSinceLastTick","expect","delay","setTimeout","setTime","time","self","ON_DELAY_CHANGE","defaultDelay","maxDelay","Event","setDelay","value","force","max","Number","MAX_SAFE_INTEGER","console","warn","_resetSettings","setMaxDelay","parseInt","setDefaultDelay","args","pop","constructor","event","timecode","getOriginalStartAt","getTime","getMaxDelay","getDelay","init","config","regularQueue","priorityQueue","add","queue","func","context","push","execute","item","total","length","shift","apply","executePriority","executeRegular","handleDateTick","handleDateNext","nextRegular","nextPriority","ON_EOC","Enmasse","ON_MESSAGE","ON_SETTINGS","EOCs","processIsInThePriorityQueue","handleMessage","message","deduplicate","Run","process","handleDelayChange","clearQueue","handleState","state","STATE_DISCONNECTED","clearEOCs","STATE_CONNECTED","STATE_CONNECTING","handleEOC","channel","klass","id","JSON","parse","body","e","itemId","idx","splice","canAdapt","adaptMessage","checker","canAdaptCreate","canAdaptReveal","canAdaptRevoke","canAdaptStop","canAdaptPoll","canAdaptSubsCounter","canAdaptOther","data","canAdaptGeneric","published_at","sent_at","publishAt","hasEOC","undefined","publishAtDelayed","Sync","adaptor","adaptSnapshot","adaptListings","adaptCreate","adaptReveal","adaptRevoke","adaptStop","adaptPoll","adaptSubsCounter","adaptOther","snapshot","adaptSnapshotData","stringify","published_at_iso","toISOString","adapter","type","adaptPredictionSnapshot","adaptOtherSnapshot","start_at","start_at_iso","stop_at","stop_at_iso","reveal_answer_at","reveal_answer_at_iso","listings","project","audio_sync_max_delay","audio_sync_default_delay","uuid","events","hasOwnProperty","call","adaptEvent","end_at","end_at_iso","__delay","sent_at_iso","next_update_at","eoc","subscribe","unsubscribe","forEach","ON_STATE","Base","get","instances","create","createSnapshot","revoke","destroyInstances","destroy","FrameFactory","BaseFactory","getByEnmasseId","enmasseId","Object","values","instance","getEnmasseId","setMessages","update","Entity","getId","getFullId","getPublishedAt","publishedAt","getUpdatedAt","updatedAt","finalize","finalized","resolve","updated_at","Deferred","globals","getGlobal","StorageLocalDriver","hasSupport","global","localStorage","exception","set","name","setItem","QUOTA_EXCEEDED_ERR","error","getItem","remove","removeItem","StorageCookieDriver","probe","stored","expires","Cookie","Storage","DRIVERS","driver","prefix","i","enabled","toStoredName","join","setPrefix","newPrefix","host","settings","currentLanguage","missingTimeout","ON_SUBS_COUNT","ON_SUBS_COUNT_MISSING","getDefaultLanguage","locales","find","locale","default","loadAppSettings","url","substr","dfd","xhr","json","err","resp","settingsData","status","statusCode","isSuccess","reject","promise","hasLanguage","language","some","key","handleSubsMissing","handleSubsCount","subsData","nextSubsUpdate","counter","setData","d","storedLanguage","setCurrentLanguage","getSettings","localise","getUUID","getLanguages","getCurrentLanguage","getEmbedUrl","isLocalisationSupported","all","ConnectionAdaptor","Frame","getDuration","duration","getDurationLeft","durationLeft","getType","getContentType","contentType","getCustomFields","field","Project","customFields","hasFixedDuration","fixed","setDuration","setDurationLeft","abort","aborted","updateDurationLeft","endAt","left","custom_fields","content_type","Poll","getQuestion","question","getOptions","options","getResults","canReveal","results","getResultsPerSource","source","resultsPerSource","l","getState","getUserVote","votedFor","hasUserVoted","hasResults","isValidatedUserRequired","requiresValidatedUser","vote","indices","keys","nonexistantVotes","filter","storeVote","ON_VOTE","setState","ON_STATE_CHANGE","resultsTriggerPostponed","ON_RESULTS","setResults","rawResults","populateResults","setResultsPerSource","populateResultsPerSource","isStarted","STATE_STARTED","isClosed","STATE_CLOSED","stop","percentage","calculatePercentage","map","votes","expire","EXPIRE","restoreVote","results_per_source","requires_validated_user","Fadeable","superclass","getFade","fade","Powerbar","resultsToHistoryItem","result","volume","average","responses","round","REVEAL_RESULTS_ON_VOTE","REVEAL_RESULTS_ON_CLOSE","REVEAL_RESULTS_ON_EVENT_END","REVEAL_RESULTS_MANUALLY","REVEAL_RESULTS_NEVER","REVEAL_RESULTS_ALWAYS","Revealable","revealResultsMode","reveal_results_mode","MultiVotable","getMaxVotesPerUser","maxVotesPerUser","getMaxVotesPerOption","maxVotesPerOption","maxPerUser","maxPerOption","reduce","memo","hasEmptyVote","hasNonIntVote","exceedsMaxPerOption","exceedsMaxPerUser","max_votes_per_user","max_votes_per_option","Quiz","isStopped","isRevealed","STATE_STOPPED","STATE_REVEALED","reveal","correctOption","getCorrectOption","correct_option","Prediction","Trivia","Diametric","MAX_STRENGTH","getUserVoteStrength","calculateWeightedResults","weighted","optionIdx","strength","min","MIN_STRENGTH","isResultsRevealed","Swing","Emoting","Regular","getQualifyingHashtags","qualifyingHashtags","getMinOptionsPerVote","minOptionsPerVote","getMaxOptionsPerVote","maxOptionsPerVote","qualifying_hashtags","min_options_per_vote","max_options_per_vote","FlexiPoll","PollFactory","poll","send","_channel","processMessages","messages","MSG_CLASS_POLL","processPollMessage","MSG_CLASS_FB","processFeedbackMessage","MSG_CLASS_STOP","processStopMessage","MSG_CLASS_REVEAL","processRevealMessage","hasSource","hasCounters","isFinal","sources","split","counters","voters","slice","Constructor","getConstructorByType","handleVote","setMessage","MSG_CLASSES","indexOf","TYPE","cast","concat","Data","DataFactory","element","Curation","getText","text","getSender","sender","getSenderName","senderName","getSenderPicure","senderPicture","getSource","sender_name","sender_picture","CurationFactory","curation","channels","factories","factoriesByChannel","items","msg","factory","getFactoryByChannel","setChannels","ch","types","Control","MSG_TYPE_CREATE","handleMessageCreate","MSG_TYPE_REVOKE","handleMessageRevoke","MSG_TYPE_EOC","Factories","when","done","MSG_TYPE_UPDATE","prototype","assignIn","MSG_TYPE_SNAPSHOT","TIME_FORMAT_SECONDS","TIME_FORMAT_ARRAY","TIME_FORMAT_OBJECT","CHANNEL_POLL","CHANNEL_CONTROL","MIC_CONFIG_FILE","STATE_PENDING","history","control","ready","calculateState","startAt","extraTime","newState","isDataEmpty","STATE_UPCOMING","STATE_ACTIVE","STATE_PROLONGED","STATE_FINISHED","initControl","getChannels","handleControlCreate","handleControlUpdate","handleControlRevoke","handleControlEOC","oldState","ON_SUBSTATE","getSubstate","processHistory","timeline","snapshots","getElementFromHistory","existingElement","Array","isArray","isReady","isElementInHistory","historyElement","canLoadHistory","ignore","start","threshold","isPending","addElementToHistory","unshift","removeElementFromHistory","index","sortElementsInHistory","sort","a","b","ON_ELEMENT_PUBLISH","ON_ELEMENT_UPDATE","ON_ELEMENT_REVOKE","param","channelId","t","Error","getName","getStartAt","getEndAt","fields","getCountdown","format","countdown","years","months","days","hours","minutes","seconds","diffSeconds","diff","methods","entries","method","getHistory","getLastFromHistory","newData","oldDigest","digest","oldDelay","ON_UPDATE","addDemographicsCounter","segmentName","segmentValue","segment","Demographics","addCounter","markAsReady","ON_READY","markAsNotReady","ON_NOT_READY","loadHistory","reconnect","deferred","success","historyData","STATE_FAILURE","hasTimeline","hasConfig","HISTORY_LOCALISATION","HISTORY_VERSIONS","assets","Listings","MSG_CLASS","handleData","findById","collection","haveChanged","isChanges","getCurrent","list","getNext","nextStartAt","POSITIVE_INFINITY","getList","getAssets","fetchListings","fetch","response","getSessionId","signIn","login","lvisEvent","initialised","forceSecure","enmasseReady","projectReady","assetsReady","LViS","LViSRun","next","ON_ERROR","_xhr","VERSION","version","User","ConnectionManager","embedAssets","jsLoaded","files","asset","autoload","js","$script","css","document","createStyleSheet","style","createElement","setAttribute","head","appendChild","handleEventState","handleEventActiveState","handleEventProlongedState","handleEventFinishedState","handleEventEOC","handleEnmasseState","getHost","always","handleEnmasseReady","connect","handleEnmasseError","handleListingsReady","fail","handleSyncDelayChange","resetEvent","initWithConfig","UUIDSchema","hostSchema","test","replace","info","protocol","location","getEvent","setEvent","newEvent","unsetEvent","initDone","then","static_host","catch","finally"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm2017.js","sources":["../src/utils/date.js","../src/utils/sync.js","../src/utils/run.js","../src/utils/connection_adaptor.js","../src/factories/base.js","../src/factories/frame.js","../src/elements/entity.js","../src/utils/storage.js","../src/project.js","../src/elements/frame.js","../src/elements/poll.js","../src/elements/mixins/fadeable.js","../src/elements/poll.powerbar.js","../src/elements/mixins/revealable.js","../src/elements/mixins/multivotable.js","../src/elements/quiz.js","../src/elements/quiz.prediction.js","../src/elements/quiz.trivia.js","../src/elements/diametric.js","../src/elements/diametric.swing.js","../src/elements/diametric.emoting.js","../src/elements/poll.regular.js","../src/elements/poll.flexipoll.js","../src/factories/poll.js","../src/elements/data.js","../src/factories/data.js","../src/elements/curation.js","../src/factories/curation.js","../src/factories/factories.js","../src/utils/control.js","../src/constants.js","../src/event.js","../src/listings.js","../src/user.js","../src/index.js"],"sourcesContent":["import Emitter from 'tiny-emitter';\n\nconst LViSDate = new Emitter();\n\nLViSDate.trigger = LViSDate.emit;\nLViSDate.bind = LViSDate.on;\nLViSDate.unbind = LViSDate.off;\n\nLViSDate.ON_TICK = 'tick';\nLViSDate.ON_NEXT = 'next';\n\nlet serverTimestamp;\n\nlet lastTickTimestamp;\n\nlet tickTimeoutId = null;\n\nconst getCurrentTimestamp = () => Date.now() / 1000;\n\nconst getMiddleTimestamp = (timestamp) => Math.floor(timestamp) + 0.5;\n\nconst tick = () => {\n clearTimeout(tickTimeoutId);\n\n const currentTimestamp = getCurrentTimestamp();\n const timeSinceLastTick = currentTimestamp - lastTickTimestamp;\n\n serverTimestamp += timeSinceLastTick;\n\n lastTickTimestamp = currentTimestamp;\n\n const expect = getMiddleTimestamp(serverTimestamp) + 1;\n const delay = (expect - serverTimestamp) * 1000;\n\n tickTimeoutId = setTimeout(tick, delay);\n\n LViSDate.trigger(LViSDate.ON_TICK, serverTimestamp);\n};\n\nLViSDate.setTime = (time) => {\n lastTickTimestamp = getCurrentTimestamp();\n serverTimestamp = getMiddleTimestamp(time);\n};\n\nLViSDate.now = () => Math.floor(serverTimestamp);\n\nLViSDate.setTime(getCurrentTimestamp());\n\ntick();\n\nexport default LViSDate;\n","import Emitter from 'tiny-emitter';\nimport LViSDate from './date';\n\nexport default (() => {\n const self = new Emitter();\n\n self.trigger = self.emit;\n self.bind = self.on;\n self.unbind = self.off;\n\n self.ON_DELAY_CHANGE = 'change';\n\n let delay;\n let defaultDelay;\n let maxDelay;\n let Event;\n\n const setDelay = (value, force) => {\n const max = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\n if (value > max) {\n console.warn(`User delay can't be greater than ${max} seconds`);\n return;\n }\n\n if (value < 0) {\n value = 0;\n }\n\n if (value > maxDelay) {\n value = maxDelay;\n }\n\n if (force || value !== delay) {\n delay = value;\n\n self.trigger(self.ON_DELAY_CHANGE, delay);\n }\n };\n\n self._resetSettings = () => {\n delay = null;\n defaultDelay = 0;\n maxDelay = Number.MAX_SAFE_INTEGER || 9007199254740991;\n };\n\n self.setMaxDelay = (value) => {\n value = parseInt(value, 10);\n\n if (value >= 0) {\n maxDelay = value;\n }\n };\n\n self.setDefaultDelay = (value) => {\n value = parseInt(value, 10);\n\n if (value > maxDelay) {\n defaultDelay = maxDelay;\n } else if (value > 0 && value <= maxDelay) {\n defaultDelay = value;\n }\n };\n\n self.setDelay = (...args) => {\n let value;\n\n let force = [...args].pop();\n force = typeof force === 'boolean' ? force : false;\n\n switch (args[0].constructor) {\n // (<LViS.Event> event, <Integer> timecode, [<Boolen> force = true]);\n case Event: {\n const [event, timecode] = args;\n\n value = LViSDate.now() - event.getOriginalStartAt() - timecode;\n\n break;\n }\n\n // (<Date> time, [<Boolen> force = true]);\n case Date: {\n const [time] = args;\n\n value = LViSDate.now() - Math.floor(time.getTime() / 1000);\n\n break;\n }\n\n // (<Integer> delay, [<Boolen> force = true]);\n case Number: {\n [value] = args;\n\n if (parseInt(value, 10) !== value) {\n console.warn('User delay must be an integer');\n return;\n }\n\n break;\n }\n\n default:\n console.warn('Unknown interface of setDelay() method');\n return;\n }\n\n setDelay(value, force);\n };\n\n self.getMaxDelay = () => maxDelay;\n\n self.getDelay = () => {\n if (delay !== null) {\n return delay;\n }\n\n return defaultDelay;\n };\n\n self._resetSettings();\n\n self.init = (config) => {\n // used to avoid cycle dependency:\n // Event -> ConnectionAdaptor -> Sync -> Event\n Event = config.Event;\n };\n\n return self;\n})();\n","/* eslint @typescript-eslint/indent: \"off\" */\n\nimport LViSDate from './date';\n\nconst regularQueue = [];\nconst priorityQueue = [];\n\nconst add =\n (queue) =>\n (func, context = null) =>\n queue.push({ func, context });\n\nconst execute =\n (queue = []) =>\n () => {\n let item;\n let total = queue.length;\n\n while (total > 0) {\n item = queue.shift();\n item.func.apply(item.context);\n total--;\n }\n };\n\nconst force = () => {\n executePriority();\n executeRegular();\n};\n\nconst handleDateTick = () => {\n force();\n};\n\nconst handleDateNext = (func) => {\n nextRegular(func);\n};\n\nconst nextRegular = add(regularQueue);\nconst nextPriority = add(priorityQueue);\n\nconst executeRegular = execute(regularQueue);\nconst executePriority = execute(priorityQueue);\n\nLViSDate.bind(LViSDate.ON_TICK, handleDateTick);\nLViSDate.bind(LViSDate.ON_NEXT, handleDateNext);\n\nexport default { nextRegular, nextPriority, force };\n","import Enmasse from '@monterosa/sdk-enmasse-kit';\nimport Emitter from 'tiny-emitter';\n\nimport LViSDate from './date';\nimport Sync from './sync';\nimport Run from './run';\n\nexport default (() => {\n // console.log('ConnectionAdaptor::constructor');\n\n /*\n * Link to the current scope\n */\n\n const self = new Emitter();\n\n self.trigger = self.emit;\n self.bind = self.on;\n self.unbind = self.off;\n\n /*\n * Constants\n */\n\n self.ON_EOC = Enmasse.ON_EOC;\n self.ON_MESSAGE = Enmasse.ON_MESSAGE;\n self.ON_SETTINGS = 'settings';\n\n /*\n * Private variable\n */\n\n const queue = [];\n\n const EOCs = {};\n\n let processIsInThePriorityQueue = false;\n\n const handleMessage = (message) => {\n deduplicate(message);\n\n queue.push(message);\n\n Run.nextPriority(() => process());\n Run.force();\n };\n\n const handleDelayChange = () => {\n clearQueue();\n };\n\n const handleState = (state) => {\n switch (state) {\n case Enmasse.STATE_DISCONNECTED:\n clearEOCs();\n break;\n case Enmasse.STATE_CONNECTED:\n break;\n case Enmasse.STATE_CONNECTING:\n break;\n default:\n break;\n }\n };\n\n const handleEOC = (channel) => {\n EOCs[channel] = true;\n\n self.trigger(self.ON_EOC, channel);\n\n Run.nextPriority(() => process());\n Run.force();\n };\n\n const deduplicate = (message) => {\n if (message.klass !== 'create') {\n return;\n }\n\n let id;\n\n try {\n id = JSON.parse(message.body[0]).id;\n } catch (e) {\n return;\n }\n\n let itemId = null;\n\n for (let idx = 0; idx < queue.length; idx++) {\n try {\n itemId = JSON.parse(queue[idx].body[0]).id;\n } catch (e) {\n continue;\n }\n\n if (itemId === id) {\n queue.splice(idx, 1);\n break;\n }\n }\n };\n\n const process = () => {\n let idx = 0;\n let message;\n\n while (idx < queue.length) {\n if (canAdapt(queue[idx])) {\n [message] = queue.splice(idx, 1);\n adaptMessage(message);\n self.trigger(self.ON_MESSAGE, message);\n } else {\n idx++;\n }\n }\n\n // if there are still left message in queue\n if (queue.length > 0 && !processIsInThePriorityQueue) {\n processIsInThePriorityQueue = true;\n\n Run.nextPriority(() => {\n processIsInThePriorityQueue = false;\n process();\n });\n }\n };\n\n const canAdapt = (message) => {\n const checker = (() => {\n switch (message.klass) {\n case 'create':\n return canAdaptCreate;\n case 'reveal':\n return canAdaptReveal;\n case 'revoke':\n return canAdaptRevoke;\n case 'stop':\n return canAdaptStop;\n case 'p':\n return canAdaptPoll;\n case 'subscounter':\n return canAdaptSubsCounter;\n default:\n return canAdaptOther;\n }\n })();\n\n return checker(message);\n };\n\n const canAdaptCreate = (message) => {\n let data;\n\n try {\n data = JSON.parse(message.body[0]);\n } catch (e) {\n return false;\n }\n\n return canAdaptGeneric(message.channel, data.published_at);\n };\n\n const canAdaptReveal = (message) =>\n canAdaptGeneric(message.channel, parseInt(message.body[2], 10));\n\n const canAdaptRevoke = (message) => {\n let data;\n\n try {\n data = JSON.parse(message.body[0]);\n } catch (e) {\n return false;\n }\n\n return canAdaptGeneric(message.channel, data.sent_at);\n };\n\n const canAdaptStop = (message) =>\n canAdaptGeneric(message.channel, parseInt(message.body[1], 10));\n\n const canAdaptPoll = (message) =>\n canAdaptGeneric(message.channel, parseInt(message.body[1], 10));\n\n const canAdaptSubsCounter = (message) =>\n canAdaptGeneric(message.channel, parseInt(message.sent_at, 10));\n\n const canAdaptOther = () => true;\n\n const canAdaptGeneric = (channel, publishAt) => {\n const now = LViSDate.now();\n const hasEOC = EOCs[channel] !== undefined;\n const publishAtDelayed = publishAt + Sync.getDelay();\n\n // Can publish whether:\n // a. publishedAt is in the past,\n // b. publishedAt is now, but only if we already received EOC. If we\n // have not yet received EOC then there is a risk that we will receive\n // it within the same second as we publish this element and because\n // message will go first and EOC second this will cause the element to\n // be published before event is ready, which in turn will put this\n // element into history rather than trigger ON_PUBLISHED. With this\n // check we guarantee that if create and EOC arrive at the same second\n // we do not trigger elements until we handled EOC.\n return publishAtDelayed < now || (publishAtDelayed === now && hasEOC);\n };\n\n const adaptMessage = (message) => {\n const adaptor = (() => {\n switch (message.klass) {\n case 'snapshot':\n return adaptSnapshot;\n case 'listings':\n return adaptListings;\n case 'create':\n return adaptCreate;\n case 'reveal':\n return adaptReveal;\n case 'revoke':\n return adaptRevoke;\n case 'stop':\n return adaptStop;\n case 'p':\n return adaptPoll;\n case 'subscounter':\n return adaptSubsCounter;\n default:\n return adaptOther;\n }\n })();\n\n adaptor(message);\n };\n\n let adaptSnapshot = (message) => {\n // console.log('ConnectionAdaptor::adaptSnapshot', message);\n\n let snapshot;\n\n try {\n snapshot = JSON.parse(message.body[0]);\n } catch (e) {\n // console.error('ConnectionAdaptor: Unable to parse listings data');\n }\n\n adaptSnapshotData(snapshot);\n\n message.body[0] = JSON.stringify(snapshot);\n };\n\n const adaptSnapshotData = (snapshot) => {\n snapshot.published_at += Sync.getDelay();\n snapshot.published_at_iso = new Date(\n snapshot.published_at * 1000,\n ).toISOString();\n\n const adapter = (() => {\n switch (snapshot.type) {\n case 'prediction':\n return adaptPredictionSnapshot;\n default:\n return adaptOtherSnapshot;\n }\n })();\n\n adapter(snapshot);\n };\n\n const adaptPredictionSnapshot = (snapshot) => {\n const { data } = snapshot;\n const delay = Sync.getDelay();\n\n data.start_at += delay;\n data.start_at_iso = new Date(data.start_at * 1000).toISOString();\n\n if (data.stop_at) {\n data.stop_at += delay;\n data.stop_at_iso = new Date(data.stop_at * 1000).toISOString();\n }\n\n if (data.reveal_answer_at) {\n data.reveal_answer_at += delay;\n data.reveal_answer_at_iso = new Date(\n data.reveal_answer_at * 1000,\n ).toISOString();\n }\n };\n\n const adaptOtherSnapshot = () => {\n // console.log('ConnectionAdaptor::adaptOtherSnapshot', snapshot);\n };\n\n const adaptListings = (message) => {\n // console.log('ConnectionAdaptor::adaptListings');\n\n let listings;\n\n try {\n listings = JSON.parse(message.body[0]);\n } catch (e) {\n // console.error('ConnectionAdaptor: Unable to parse listings data');\n }\n\n Sync.setMaxDelay(listings.project.audio_sync_max_delay);\n Sync.setDefaultDelay(listings.project.audio_sync_default_delay);\n\n for (const uuid in listings.events) {\n if ({}.hasOwnProperty.call(listings.events, uuid)) {\n adaptEvent(listings.events[uuid]);\n }\n }\n\n message.body[0] = JSON.stringify(listings);\n };\n\n const adaptEvent = (event) => {\n const delay = Sync.getDelay();\n\n event.start_at += delay;\n event.start_at_iso = new Date(event.start_at * 1000).toISOString();\n event.end_at += delay;\n event.end_at_iso = new Date(event.end_at * 1000).toISOString();\n\n // store delay\n event.__delay = delay;\n };\n\n const adaptCreate = (message) => {\n // console.log('ConnectionAdaptor::adaptCreate', message);\n\n let data;\n\n try {\n data = JSON.parse(message.body[0]);\n } catch (e) {\n // console.error('ConnectionAdaptor: Unable to parse create data');\n }\n\n data.published_at += Sync.getDelay();\n data.published_at_iso = new Date(data.published_at * 1000).toISOString();\n\n message.body[0] = JSON.stringify(data);\n };\n\n const adaptPoll = (message) => {\n // console.log('ConnectionAdaptor::adaptPoll', message);\n\n message.body[1] = parseInt(message.body[1], 10) + Sync.getDelay();\n };\n\n const adaptStop = (message) => {\n // console.log('ConnectionAdaptor::adaptStop', message);\n\n message.body[1] = parseInt(message.body[1], 10) + Sync.getDelay();\n };\n\n const adaptReveal = (message) => {\n // console.log('ConnectionAdaptor::adaptReveal', message);\n\n message.body[2] = parseInt(message.body[2], 10) + Sync.getDelay();\n };\n\n const adaptRevoke = (message) => {\n // console.log('ConnectionAdaptor::adaptRevoke', message);\n\n let data;\n\n try {\n data = JSON.parse(message.body[0]);\n } catch (e) {\n // console.error('ConnectionAdaptor: Unable to parse revoke data');\n }\n\n data.sent_at += Sync.getDelay();\n data.sent_at_iso = new Date(data.sent_at * 1000).toISOString();\n\n message.body[0] = JSON.stringify(data);\n };\n\n let adaptSubsCounter = (message) => {\n try {\n const data = JSON.parse(message.body[0]);\n data.next_update_at += Sync.getDelay();\n\n message.body[0] = JSON.stringify(data);\n } catch (e) {\n // why do we fail silently?\n }\n };\n\n const adaptOther = () => 0;\n\n const clearQueue = () => {\n while (queue.length) {\n queue.pop();\n }\n };\n\n const clearEOCs = () => {\n for (const eoc in EOCs) {\n if ({}.hasOwnProperty.call(EOCs, eoc)) {\n delete EOCs[eoc];\n }\n }\n };\n\n self.subscribe = (channel) => {\n Enmasse.subscribe(channel);\n };\n\n self.unsubscribe = (channel) => {\n queue.forEach((message, idx) => {\n if (message.channel === channel) {\n queue.splice(idx, 1);\n }\n });\n\n delete EOCs[channel];\n\n Enmasse.unsubscribe(channel);\n };\n\n self.adaptSnapshotData = (message) => adaptSnapshotData(message);\n\n self.adaptEvent = (event) => adaptEvent(event);\n\n Enmasse.bind(Enmasse.ON_MESSAGE, handleMessage);\n Enmasse.bind(Enmasse.ON_STATE, handleState);\n Enmasse.bind(Enmasse.ON_EOC, handleEOC);\n Sync.bind(Sync.ON_DELAY_CHANGE, handleDelayChange);\n\n return self;\n})();\n","import Emitter from 'tiny-emitter';\n\nexport default class Base extends Emitter {\n get(id) {\n return this.instances[id] || false;\n }\n\n create() {}\n\n createSnapshot() {}\n\n revoke(id) {\n if ({}.hasOwnProperty.call(this.instances, id)) {\n delete this.instances[id];\n }\n }\n\n destroyInstances() {\n // console.log(\"BaseFactory::destroyInstances\", this.instances);\n for (const id in this.instances) {\n if ({}.hasOwnProperty.call(this.instances, id)) {\n this.instances[id].destroy();\n delete this.instances[id];\n }\n }\n }\n\n constructor() {\n super();\n\n this.instances = {};\n\n this.trigger = this.emit;\n this.bind = this.on;\n this.unbind = this.off;\n }\n}\n","import BaseFactory from './base';\n\nexport default class FrameFactory extends BaseFactory {\n getByEnmasseId(enmasseId) {\n for (const instance of Object.values(this.instances)) {\n if (instance.getEnmasseId() === enmasseId) {\n return instance;\n }\n }\n\n return false;\n }\n\n setMessages() {}\n\n update(instance, data) {\n instance.update(data);\n }\n}\n","import Emitter from 'tiny-emitter';\nimport Deferred from 'Deferred';\n\nexport default class Entity extends Emitter {\n getId() {\n return this.id;\n }\n\n getEnmasseId() {\n return this.enmasseId;\n }\n\n getFullId() {\n return `${this.id}.${this.enmasseId}`;\n }\n\n getPublishedAt() {\n return this.publishedAt;\n }\n\n getUpdatedAt() {\n return this.updatedAt;\n }\n\n finalize() {\n this.finalized.resolve();\n }\n\n update(config = {}) {\n this.updatedAt = config.updated_at - 0 || 0;\n }\n\n destroy() {\n // console.log(\"Entity::destroy id=%s\" + this.getId());\n }\n\n constructor(config = {}) {\n super(config);\n\n this.id = config.id;\n this.enmasseId = config.data.id - 0 || 0;\n this.publishedAt = config.published_at - 0 || 0;\n this.updatedAt = config.updated_at - 0 || 0;\n this.finalized = new Deferred();\n\n this.trigger = this.emit;\n this.bind = this.on;\n this.unbind = this.off;\n }\n}\n","/* global QUOTA_EXCEEDED_ERR */\n\nimport { getGlobal } from '@monterosa/sdk-util';\nimport Cookie from 'js-cookie';\n\nconst globals = getGlobal();\n\nexport const StorageLocalDriver = (() => {\n const self = {};\n\n self.hasSupport = () => {\n try {\n return 'localStorage' in global && globals.localStorage !== null;\n } catch (exception) {\n return false;\n }\n };\n\n self.set = (name, value) => {\n try {\n globals.localStorage.setItem(name, value);\n } catch (exception) {\n if (exception === QUOTA_EXCEEDED_ERR) {\n console.error('localstorage quota exceeded error');\n }\n }\n };\n\n self.get = (name) => globals.localStorage.getItem(name);\n\n self.remove = (name) => globals.localStorage.removeItem(name);\n\n return self;\n})();\n\nexport const StorageCookieDriver = (() => {\n const self = {};\n\n self.hasSupport = () => {\n const probe = 'probe';\n\n try {\n self.set(probe, probe);\n const stored = self.get(probe);\n self.remove(probe);\n return stored === probe;\n } catch (exception) {\n return false;\n }\n };\n\n self.set = (name, value, expires) => {\n const args = [name, value];\n\n if (typeof expires !== 'undefined') {\n args.push({ expires });\n }\n\n return Cookie.set(...args);\n };\n\n self.get = (name) => {\n const value = Cookie.get(name);\n\n if (typeof value === 'undefined') {\n return null;\n }\n\n return value;\n };\n\n self.remove = (name) => Cookie.remove(name);\n\n return self;\n})();\n\nexport const Storage = (() => {\n const DRIVERS = [StorageLocalDriver, StorageCookieDriver];\n\n const self = {};\n\n let driver = null;\n\n let prefix = 'lvis';\n\n for (let i = 0; i < DRIVERS.length; i++) {\n if (DRIVERS[i].hasSupport()) {\n driver = DRIVERS[i];\n break;\n }\n }\n\n const enabled = () => driver !== null;\n\n const toStoredName = (name) => [prefix, name].join('-');\n\n self.setPrefix = (newPrefix) => {\n prefix = newPrefix;\n };\n\n self.set = (name, value, expires) => {\n if (enabled()) {\n return driver.set(toStoredName(name), value, expires);\n }\n\n return undefined;\n };\n\n self.get = (name) => {\n if (enabled()) {\n return driver.get(toStoredName(name));\n }\n\n return undefined;\n };\n\n self.remove = (name) => {\n if (enabled()) {\n return driver.remove(toStoredName(name));\n }\n\n return undefined;\n };\n\n return self;\n})();\n","import Deferred from 'Deferred';\nimport Emitter from 'tiny-emitter';\n\nimport xhr from 'xhr';\n\nimport ConnectionAdaptor from './utils/connection_adaptor';\nimport LViSDate from './utils/date';\nimport { Storage } from './utils/storage';\n\nexport default (() => {\n const self = new Emitter();\n let uuid = null;\n let host = null;\n let data = {};\n let settings = {};\n let currentLanguage = null;\n let missingTimeout = null;\n\n self.trigger = self.emit;\n self.bind = self.on;\n self.unbind = self.off;\n\n self.ON_SUBS_COUNT = 'subs_count';\n self.ON_SUBS_COUNT_MISSING = 'subs_count_missing';\n\n const getDefaultLanguage = () =>\n data.locales.find((locale) => !!locale.default);\n\n const loadAppSettings = () => {\n const url = `${host}/projects/${uuid.substr(0, 2)}/${uuid}/settings.json`;\n const dfd = new Deferred();\n\n xhr.get(url, { json: true }, (err, resp, settingsData = {}) => {\n const status = resp.statusCode;\n const isSuccess =\n (status >= 200 && status <= 300) || status === 0 || status === '';\n\n if (isSuccess) {\n settings = settingsData;\n dfd.resolve();\n } else {\n dfd.reject();\n }\n });\n\n return dfd.promise();\n };\n\n const hasLanguage = (language) =>\n data.locales.some(({ key }) => key === language);\n\n const handleSubsMissing = () => {\n self.trigger(self.ON_SUBS_COUNT_MISSING);\n };\n\n const handleSubsCount = (message) => {\n if (message.klass !== 'subscounter') {\n return;\n }\n\n try {\n const subsData = JSON.parse(message.body[0]);\n const nextSubsUpdate = subsData.next_update_at;\n\n self.trigger(self.ON_SUBS_COUNT, subsData.counter);\n\n clearTimeout(missingTimeout);\n\n missingTimeout = setTimeout(\n handleSubsMissing,\n (nextSubsUpdate - LViSDate.now()) * 1000,\n );\n } catch (e) {\n console.warn(\"Couldn't parse subscounter message.\");\n }\n };\n\n self.setData = (d) => {\n data = d || {};\n\n Storage.setPrefix(`lvis-${uuid}`);\n\n const storedLanguage = Storage.get('lang');\n\n // trying to set stored language\n if (storedLanguage) {\n self.setCurrentLanguage(storedLanguage);\n }\n\n // if current is not set yet using default language\n if (currentLanguage === null) {\n currentLanguage = getDefaultLanguage().key;\n }\n };\n\n self.setCurrentLanguage = (language) => {\n if (hasLanguage(language)) {\n currentLanguage = language;\n Storage.set('lang', language);\n } else {\n console.warn(`Attempt to set unknown language \"${language}\"`);\n }\n };\n\n self.get = (name) => {\n if (typeof name === 'undefined') {\n // return full dataset if parameter name is not set\n return data;\n }\n\n if (typeof data[name] !== 'undefined') {\n // return value that matches passed parameter name in dataset\n return data[name];\n }\n\n return null;\n };\n\n self.getSettings = (name) => {\n const values = self.localise(settings);\n\n if (typeof name === 'undefined') {\n return values;\n }\n\n if (typeof values[name] !== 'undefined') {\n return values[name];\n }\n\n return null;\n };\n\n self.getUUID = () => uuid;\n\n self.getLanguages = () => self.get('locales');\n\n self.getCurrentLanguage = () => currentLanguage;\n\n self.getEmbedUrl = () => self.get('embed');\n\n self.isLocalisationSupported = () => self.get('is_localisation_supported');\n\n self.localise = (value) => {\n if ({}.hasOwnProperty.call(value, currentLanguage)) {\n return value[currentLanguage];\n }\n\n if ({}.hasOwnProperty.call(value, 'all')) {\n return value.all;\n }\n\n return value;\n };\n\n self.init = (config = {}) => {\n uuid = config.uuid;\n host = config.host;\n\n ConnectionAdaptor.bind(ConnectionAdaptor.ON_MESSAGE, handleSubsCount);\n\n return loadAppSettings();\n };\n\n return self;\n})();\n","import Entity from './entity';\nimport LViSDate from '../utils/date';\nimport Run from '../utils/run';\nimport Project from '../project';\n\nexport default class Frame extends Entity {\n getEnmasseId() {\n return this.enmasseId;\n }\n\n getDuration() {\n return this.duration;\n }\n\n getDurationLeft() {\n return this.durationLeft;\n }\n\n getType() {\n return this.type;\n }\n\n getContentType() {\n // should return basic type if custom type is null\n return this.contentType === null ? this.type : this.contentType;\n }\n\n getCustomFields(field) {\n const values = Project.localise(this.customFields);\n\n if (typeof field === 'undefined') {\n // return full set of custom fields if field name wasn't passed\n return values;\n }\n\n // custom field was passed\n if (typeof values[field] !== 'undefined') {\n // return specific field if field exists in object\n return values[field];\n }\n\n // otherwise return null\n return null;\n }\n\n hasFixedDuration() {\n return this.fixed;\n }\n\n setDuration(duration) {\n this.duration = parseInt(duration, 10);\n }\n\n setDurationLeft(duration) {\n this.durationLeft = parseInt(duration, 10);\n }\n\n abort(time) {\n this.aborted = true;\n this.setDuration(time - this.getPublishedAt());\n this.setDurationLeft(0);\n }\n\n updateDurationLeft() {\n if (this.aborted) {\n return;\n }\n\n const self = this;\n const endAt = this.publishedAt + this.duration;\n const now = LViSDate.now();\n const left = endAt - now;\n\n this.setDurationLeft(left);\n\n if (this.durationLeft > 0) {\n Run.nextPriority(() => self.updateDurationLeft());\n } else {\n this.durationLeft = 0;\n }\n }\n\n update(config = {}) {\n super.update(config);\n\n this.duration = config.duration - 0 || 0;\n this.customFields = config.custom_fields || {};\n }\n\n constructor(config = {}) {\n super(config);\n\n this.state = null;\n this.aborted = false;\n this.enmasseId = config.data.id;\n this.duration = config.duration - 0 || 0;\n this.durationLeft = 0;\n this.type = config.type;\n this.fixed = config.fixed;\n this.contentType = config.content_type || null;\n this.customFields = config.custom_fields || {};\n\n // calculate real duration left only for fixed frames\n if (this.fixed) {\n this.updateDurationLeft();\n }\n }\n}\n","import { calculatePercentage } from '@monterosa/sdk-util';\n\nimport Frame from './frame';\nimport Project from '../project';\nimport LViSDate from '../utils/date';\nimport { Storage } from '../utils/storage';\n\nexport default class Poll extends Frame {\n static EXPIRE = 7 * 24 * 60 * 60;\n\n static STATE_STARTED = 'started';\n static STATE_CLOSED = 'stopped';\n\n static ON_VOTE = 'voted';\n static ON_RESULTS = 'results';\n static ON_STATE_CHANGE = 'state';\n\n getQuestion() {\n return Project.localise(this.question);\n }\n\n getOptions() {\n return Project.localise(this.options);\n }\n\n getResults() {\n if (!this.canReveal()) {\n return [];\n }\n\n return this.results;\n }\n\n getResultsPerSource(source) {\n let results = null;\n\n if (typeof source === 'undefined') {\n results = this.resultsPerSource;\n } else {\n for (let i = 0, l = this.resultsPerSource.length; i < l; i++) {\n if (this.resultsPerSource[i].source === source) {\n results = this.resultsPerSource[i];\n }\n }\n }\n\n return results;\n }\n\n getState() {\n return this.state;\n }\n\n getUserVote() {\n return this.votedFor;\n }\n\n hasUserVoted() {\n return this.getUserVote() !== null;\n }\n\n hasResults() {\n return this.results !== null && this.canReveal();\n }\n\n canReveal() {\n return true;\n }\n\n isValidatedUserRequired() {\n return this.requiresValidatedUser;\n }\n\n vote(vote = {}) {\n const indices = Object.keys(vote);\n const options = this.getOptions();\n\n const nonexistantVotes = indices.filter(\n (idx) => typeof options[idx] === 'undefined',\n );\n\n if (nonexistantVotes.length > 0) {\n console.warn(\n \"Can't vote for nonexistant %s (%s)\",\n nonexistantVotes.length === 1 ? 'option' : 'options',\n nonexistantVotes.join(', '),\n );\n return false;\n }\n\n this.storeVote(vote);\n this.trigger(Poll.ON_VOTE, vote);\n return true;\n }\n\n setState(state) {\n // do not fire state change if passed state is the same as it was\n if (state === undefined || state === this.state) {\n return;\n }\n\n this.state = state;\n this.trigger(Poll.ON_STATE_CHANGE, state);\n\n // Order of messages from enmasse is not guaranteed.\n // Stop or reveal messages can be after feedback message.\n // If feedback message is received before user is able to see results are saved\n // and set resultsTriggerPostponed true.\n // When state(stop, reveal) allows reveal results and reveal results was postponed\n // action ON_RESULTS triggered.\n if (this.canReveal() && this.resultsTriggerPostponed) {\n this.resultsTriggerPostponed = false;\n this.trigger(Poll.ON_RESULTS);\n }\n }\n\n setResults(results) {\n // skip setting results if they weren't changed\n if (JSON.stringify(results) === JSON.stringify(this.rawResults)) {\n return;\n }\n\n this.rawResults = results;\n this.populateResults(results);\n\n if (this.hasResults()) {\n this.trigger(Poll.ON_RESULTS);\n } else {\n this.resultsTriggerPostponed = true;\n }\n }\n\n setResultsPerSource(results) {\n this.populateResultsPerSource(results);\n }\n\n isStarted() {\n return this.state === Poll.STATE_STARTED;\n }\n\n isClosed() {\n return this.state === Poll.STATE_CLOSED;\n }\n\n stop(time) {\n this.abort(time);\n this.setState(Poll.STATE_CLOSED);\n }\n\n // TODO: Combine populateResults() and populateResultsFromSnapshot() methods\n populateResults(results) {\n const percentage = calculatePercentage(results);\n\n this.results = results.map((votes, idx) => ({\n votes,\n percentage: percentage[idx],\n }));\n }\n\n populateResultsPerSource(results) {\n this.resultsPerSource = results;\n\n this.resultsPerSource.forEach((source) => {\n const percentage = calculatePercentage(source.results);\n\n source.results = source.results.map((votes, idx) => ({\n votes,\n percentage: percentage[idx],\n }));\n });\n }\n\n storeVote(vote) {\n const name = `frame-${this.getId()}`;\n const value = JSON.stringify(vote);\n const expire = new Date((LViSDate.now() + Poll.EXPIRE) * 1000);\n\n this.votedFor = vote;\n\n Storage.set(name, value, expire);\n }\n\n restoreVote() {\n const name = `frame-${this.getId()}`;\n\n try {\n this.votedFor = JSON.parse(Storage.get(name));\n } catch (exception) {\n console.error('Unable to restore option user voted for', exception);\n }\n }\n\n update(config = {}) {\n super.update(config);\n\n this.question = config.data.question;\n this.options = config.data.options;\n }\n\n constructor(config) {\n super(config);\n\n this.question = config.data.question;\n this.options = config.data.options;\n this.rawResults = config.data.results || null;\n this.results = config.data.results || null;\n this.resultsPerSource = config.data.results_per_source || null;\n this.votedFor = null;\n this.state = config.data.state || Poll.STATE_STARTED;\n this.requiresValidatedUser = config.data.requires_validated_user;\n this.resultsTriggerPostponed = false;\n this.restoreVote();\n }\n}\n","const Fadeable = (superclass) =>\n class extends superclass {\n getFade() {\n return this.fade;\n }\n\n constructor(config) {\n super(config);\n\n this.fade = config.data.fade;\n }\n };\n\nexport default Fadeable;\n","/**\n * Creates a powerbar elements.\n *\n * @class Powerbar\n * @extends Poll\n * @constructor\n */\n\nimport Poll from './poll';\nimport Fadeable from './mixins/fadeable';\nimport LViSDate from '../utils/date';\n\nexport default class Powerbar extends Fadeable(Poll) {\n static TYPE = 'powerbar';\n\n static STATE_STARTED = Poll.STATE_STARTED;\n static STATE_CLOSED = Poll.STATE_CLOSED;\n\n static ON_VOLUME_UPDATE = 'volume';\n static ON_VOTE = Poll.ON_VOTE;\n static ON_RESULTS = Poll.ON_RESULTS;\n static ON_STATE_CHANGE = Poll.ON_STATE_CHANGE;\n\n getResultsPerSource(source) {\n let results = null;\n\n if (typeof source === 'undefined') {\n results = this.resultsPerSource;\n } else if (typeof this.resultsPerSource[source] !== 'undefined') {\n results = this.resultsPerSource[source];\n }\n\n return results;\n }\n\n setResults(results) {\n const item = this.resultsToHistoryItem(results);\n\n this.results.push(item);\n\n this.trigger(Powerbar.ON_RESULTS, item);\n }\n\n setResultsPerSource(results) {\n results.forEach((result) => {\n const item = this.resultsToHistoryItem(result.results);\n\n if (!this.resultsPerSource[result.source]) {\n this.resultsPerSource[result.source] = [];\n }\n\n this.resultsPerSource[result.source].push(item);\n }, this);\n }\n\n resultsToHistoryItem(results) {\n const item = {\n time: LViSDate.now(),\n volume: 0,\n average: 0,\n responses: 0,\n };\n\n // option's index starts with 1\n for (let i = 0, l = 9; i <= l; i++) {\n if (typeof results[i] !== 'undefined') {\n item.volume += results[i] * (i + 1);\n item.responses += results[i];\n }\n }\n\n if (item.responses !== 0) {\n item.average = Math.round(item.volume / item.responses);\n }\n\n return item;\n }\n\n hasResults() {\n return this.results.length > 0;\n }\n\n constructor(config) {\n super(config);\n\n /**\n * Array of plain objects which represent result history for Powerbar element\n *\n * Each object contain following parameters:\n * * {Number} time: local time of when data arrived\n * * {Number} volume: total volume at that point\n * * {Number} average: average volume at that point\n * * {Number} responses: total votes received\n *\n * @property history\n * @type {Array}\n */\n this.results = [];\n\n this.resultsPerSource = {};\n }\n}\n","const REVEAL_RESULTS_ON_VOTE = 'vote';\nconst REVEAL_RESULTS_ON_CLOSE = 'close';\nconst REVEAL_RESULTS_ON_EVENT_END = 'event_end';\nconst REVEAL_RESULTS_MANUALLY = 'manual';\nconst REVEAL_RESULTS_NEVER = 'never';\nconst REVEAL_RESULTS_ALWAYS = 'always';\n\nconst Revealable = (superclass) =>\n class extends superclass {\n setResults(...args) {\n super.setResults(...args);\n }\n\n setResultsPerSource(...args) {\n if (this.canReveal()) {\n super.setResultsPerSource(...args);\n }\n }\n\n canReveal() {\n switch (this.revealResultsMode) {\n case REVEAL_RESULTS_ON_VOTE:\n return this.hasUserVoted() || this.isClosed();\n\n case REVEAL_RESULTS_ON_CLOSE:\n return this.isClosed();\n\n case REVEAL_RESULTS_ON_EVENT_END:\n case REVEAL_RESULTS_MANUALLY:\n case REVEAL_RESULTS_ALWAYS:\n // assume that method is called upon setting results\n return true;\n\n case REVEAL_RESULTS_NEVER:\n return false;\n default:\n return false;\n }\n }\n\n constructor(config) {\n super(config);\n\n this.revealResultsMode =\n config.data.reveal_results_mode || REVEAL_RESULTS_ON_VOTE;\n }\n };\n\nexport default Revealable;\n","const MultiVotable = (superclass) =>\n class extends superclass {\n getMaxVotesPerUser() {\n return this.maxVotesPerUser;\n }\n\n getMaxVotesPerOption() {\n return this.maxVotesPerOption;\n }\n\n vote(votes) {\n const indices = Object.keys(votes);\n const maxPerUser = this.getMaxVotesPerUser();\n const maxPerOption = this.getMaxVotesPerOption();\n\n const total = indices.reduce((memo, idx) => memo + votes[idx], 0);\n const hasEmptyVote = indices.some((idx) => votes[idx] <= 0);\n const hasNonIntVote = indices.some(\n (idx) => parseInt(votes[idx], 10) !== votes[idx],\n );\n const exceedsMaxPerOption = indices.find(\n (idx) => votes[idx] > maxPerOption,\n );\n const exceedsMaxPerUser = total > maxPerUser;\n\n if (hasEmptyVote) {\n console.warn(\n \"Can't vote because one of the vote is equal or less than 0\",\n );\n return false;\n }\n\n if (hasNonIntVote) {\n console.warn(\"Can't vote because all votes must be integers\");\n return false;\n }\n\n if (exceedsMaxPerOption) {\n console.warn(\n 'poll:%s option:%s exceeds allowed maximum:%s',\n this.getFullId(),\n +exceedsMaxPerOption + 1,\n maxPerOption,\n );\n return false;\n }\n\n if (exceedsMaxPerUser) {\n console.warn(\n 'poll:%s votes:%s exceeds allowed maximum:%s',\n this.getFullId(),\n total,\n maxPerUser,\n );\n return false;\n }\n\n if (total === 0) {\n console.warn(\"Votes can't be empty\");\n return false;\n }\n\n return super.vote(votes);\n }\n\n constructor(config) {\n super(config);\n\n this.maxVotesPerUser = config.data.max_votes_per_user;\n this.maxVotesPerOption = config.data.max_votes_per_option;\n }\n };\n\nexport default MultiVotable;\n","import Poll from './poll';\nimport Revealable from './mixins/revealable';\nimport MultiVotable from './mixins/multivotable';\n\nexport default class Quiz extends Revealable(MultiVotable(Poll)) {\n static ON_VOTE = Poll.ON_VOTE;\n static ON_STATE_CHANGE = Poll.ON_STATE_CHANGE;\n static ON_RESULTS = Poll.ON_RESULTS;\n\n static STATE_STARTED = Poll.STATE_STARTED;\n static STATE_STOPPED = Poll.STATE_CLOSED;\n static STATE_REVEALED = 'revealed';\n\n isClosed() {\n return this.isStopped() || this.isRevealed();\n }\n\n isStopped() {\n return this.state === Quiz.STATE_STOPPED;\n }\n\n isRevealed() {\n return this.state === Quiz.STATE_REVEALED;\n }\n\n reveal(idx) {\n this.correctOption = idx;\n this.setState(Quiz.STATE_REVEALED);\n }\n\n stop(time) {\n // we have to force duration calculation stop\n // and force duration to 0 set because remaining\n // duration is calculating independantly from\n // `stop` message that coming from the server\n this.abort(time);\n this.setState(Quiz.STATE_STOPPED);\n }\n\n getCorrectOption() {\n return this.correctOption;\n }\n\n vote(...args) {\n let votes = {};\n\n switch (args[0].constructor) {\n case Number:\n votes[args[0]] = 1;\n break;\n case Object: // keep as it is\n [votes] = args;\n break;\n default:\n console.warn('Incorrect votes format');\n return false;\n }\n\n const indices = Object.keys(votes);\n\n const hasEmptyVote = indices.some((idx) => votes[idx] <= 0);\n\n const hasNonIntVote = indices.some(\n (idx) =>\n !(\n typeof votes[idx] === 'number' &&\n Math.floor(votes[idx]) === votes[idx]\n ),\n );\n\n if (hasEmptyVote) {\n console.warn(\n \"Can't vote because one of the vote is equal or less than 0\",\n );\n return false;\n }\n\n if (hasNonIntVote) {\n console.warn(\"Can't vote because all votes must be integers\");\n return false;\n }\n\n if (indices.length > 1) {\n console.warn('Can cast vote only for one (1) option');\n return false;\n }\n\n return super.vote(votes);\n }\n\n constructor(config) {\n super(config);\n\n this.correctOption = {}.hasOwnProperty.call(config.data, 'correct_option')\n ? config.data.correct_option - 1\n : null;\n }\n}\n","import Quiz from './quiz';\n\nexport default class Prediction extends Quiz {\n static TYPE = 'prediction';\n\n static STATE_STARTED = Quiz.STATE_STARTED;\n static STATE_STOPPED = Quiz.STATE_STOPPED;\n static STATE_REVEALED = Quiz.STATE_REVEALED;\n\n static ON_VOTE = Quiz.ON_VOTE;\n static ON_STATE_CHANGE = Quiz.ON_STATE_CHANGE;\n static ON_RESULTS = Quiz.ON_RESULTS;\n}\n","import Quiz from './quiz';\n\nexport default class Trivia extends Quiz {\n static TYPE = 'trivia';\n\n static STATE_STARTED = Quiz.STATE_STARTED;\n static STATE_STOPPED = Quiz.STATE_STOPPED;\n static STATE_REVEALED = Quiz.STATE_REVEALED;\n\n static ON_VOTE = Quiz.ON_VOTE;\n static ON_STATE_CHANGE = Quiz.ON_STATE_CHANGE;\n static ON_RESULTS = Quiz.ON_RESULTS;\n}\n","import Poll from './poll';\n\nexport default class Diametric extends Poll {\n static MIN_STRENGTH = 1;\n static MAX_STRENGTH = 5;\n\n static STATE_STARTED = Poll.STATE_STARTED;\n static STATE_CLOSED = Poll.STATE_CLOSED;\n\n getUserVote() {\n if (this.votedFor === null) {\n return null;\n }\n\n return Math.floor(this.votedFor / Diametric.MAX_STRENGTH);\n }\n\n getUserVoteStrength() {\n if (this.votedFor === null) {\n return null;\n }\n\n return (this.votedFor % Diametric.MAX_STRENGTH) + 1;\n }\n\n setResults(results) {\n results = this.calculateWeightedResults(results);\n\n super.setResults(results);\n }\n\n setResultsPerSource(results) {\n results.forEach((source) => {\n source.results = this.calculateWeightedResults(source.results);\n }, this);\n\n super.setResultsPerSource(results);\n }\n\n calculateWeightedResults(results) {\n const max = Diametric.MAX_STRENGTH;\n\n // calculate weighted results\n const weighted = [0, 0];\n\n for (let i = 0; i < max; i++) {\n if (results[i]) {\n weighted[0] += (i + 1) * results[i];\n }\n\n if (results[i + max]) {\n weighted[1] += (i + 1) * results[i + max];\n }\n }\n\n return weighted;\n }\n\n vote(optionIdx, strength) {\n const min = Diametric.MIN_STRENGTH;\n const max = Diametric.MAX_STRENGTH;\n const options = this.getOptions();\n\n if (typeof optionIdx === 'undefined') {\n console.warn('Vote option is not set');\n return;\n }\n\n if (typeof strength === 'undefined') {\n console.warn('Vote strength is not set');\n return;\n }\n\n if (strength < min) {\n console.warn(\n \"Can't vote for the option %s with strength %s that is \" +\n 'less than minimum allowed strength %s',\n optionIdx,\n strength,\n min,\n );\n return;\n }\n\n if (strength > max) {\n console.warn(\n \"Can't vote for the option %s with strength %s that is \" +\n 'more than maximum allowed strength %s',\n optionIdx,\n strength,\n max,\n );\n return;\n }\n\n if (optionIdx < 0 || optionIdx > options.length - 1) {\n console.warn(\"Can't vote for inexistent option with idx %s\", optionIdx);\n return;\n }\n\n const vote = optionIdx * max + strength - 1;\n\n super.vote(vote);\n }\n\n isResultsRevealed() {\n return true;\n }\n}\n","import Diametric from './diametric';\n\nexport default class Swing extends Diametric {\n static TYPE = 'dpoll';\n\n static STATE_STARTED = Diametric.STATE_STARTED;\n static STATE_CLOSED = Diametric.STATE_CLOSED;\n}\n","import Diametric from './diametric';\nimport Fadeable from './mixins/fadeable';\n\nexport default class Emoting extends Fadeable(Diametric) {\n static TYPE = 'emo';\n\n static STATE_STARTED = Diametric.STATE_STARTED;\n static STATE_CLOSED = Diametric.STATE_CLOSED;\n}\n","import Poll from './poll';\nimport Revealable from './mixins/revealable';\nimport MultiVotable from './mixins/multivotable';\n\nexport default class Regular extends Revealable(MultiVotable(Poll)) {\n static TYPE = 'rpoll';\n\n static STATE_STARTED = Poll.STATE_STARTED;\n static STATE_CLOSED = Poll.STATE_CLOSED;\n\n static ON_VOTE = Poll.ON_VOTE;\n static ON_RESULTS = Poll.ON_RESULTS;\n static ON_STATE_CHANGE = Poll.ON_STATE_CHANGE;\n\n getQualifyingHashtags() {\n return this.qualifyingHashtags;\n }\n\n getMinOptionsPerVote() {\n return this.minOptionsPerVote;\n }\n\n getMaxOptionsPerVote() {\n return this.maxOptionsPerVote;\n }\n\n vote(votes = {}) {\n const min = this.getMinOptionsPerVote();\n const max = this.getMaxOptionsPerVote();\n\n const indices = Object.keys(votes);\n\n if (indices.length < min) {\n console.warn(\n \"Count of options (%s) can't be less than minimum options per vote (%s)\",\n indices.length,\n min,\n );\n return false;\n }\n\n if (indices.length > max) {\n console.warn(\n \"Count of options (%s) can't be more than maximum options per vote (%s)\",\n indices.length,\n max,\n );\n return false;\n }\n\n return super.vote(votes);\n }\n\n constructor(config) {\n super(config);\n\n this.qualifyingHashtags = config.data.qualifying_hashtags;\n this.minOptionsPerVote = config.data.min_options_per_vote;\n this.maxOptionsPerVote = config.data.max_options_per_vote;\n }\n}\n","import Regular from './poll.regular';\n\nexport default class FlexiPoll extends Regular {\n static TYPE = 'poll';\n\n static STATE_STARTED = Regular.STATE_STARTED;\n static STATE_CLOSED = Regular.STATE_CLOSED;\n\n static ON_VOTE = Regular.ON_VOTE;\n static ON_RESULTS = Regular.ON_RESULTS;\n static ON_STATE_CHANGE = Regular.ON_STATE_CHANGE;\n}\n","/* eslint no-continue: \"off\" */\n\nimport Enmasse from '@monterosa/sdk-enmasse-kit';\n\nimport FrameFactory from './frame';\nimport Poll from '../elements/poll';\nimport Powerbar from '../elements/poll.powerbar';\nimport Prediction from '../elements/quiz.prediction';\nimport Trivia from '../elements/quiz.trivia';\nimport Swing from '../elements/diametric.swing';\nimport Emoting from '../elements/diametric.emoting';\nimport Regular from '../elements/poll.regular';\nimport FlexiPoll from '../elements/poll.flexipoll';\n\nexport default class PollFactory extends FrameFactory {\n static MSG_CLASS_POLL = 'p';\n static MSG_CLASS_FB = 'fb';\n static MSG_CLASS_STOP = 'stop';\n static MSG_CLASS_REVEAL = 'reveal';\n\n static MSG_CLASSES = [\n PollFactory.MSG_CLASS_POLL,\n PollFactory.MSG_CLASS_FB,\n PollFactory.MSG_CLASS_STOP,\n PollFactory.MSG_CLASS_REVEAL,\n ];\n\n vote(enmasseId, vote) {\n const poll = this.getByEnmasseId(enmasseId);\n const args = [enmasseId, vote, ''];\n\n Enmasse.send(poll._channel, 'v', args);\n }\n\n processMessages() {\n let i = 0;\n let message;\n\n // loop through the loop and process each item\n while (i < this.messages.length) {\n message = this.messages[i];\n\n // trying to find existent instance\n const enmasseId = parseInt(message.body[0], 10);\n const poll = this.getByEnmasseId(enmasseId);\n\n // if poll doesn't exist\n if (!poll) {\n i++;\n continue;\n }\n\n this.instances[poll.getId()]._channel = message.channel;\n\n // remove processed item from the queue\n this.messages.splice(i, 1);\n\n switch (message.klass) {\n case PollFactory.MSG_CLASS_POLL:\n this.processPollMessage(poll, message);\n break;\n case PollFactory.MSG_CLASS_FB:\n this.processFeedbackMessage(poll, message);\n break;\n case PollFactory.MSG_CLASS_STOP:\n this.processStopMessage(poll, message);\n break;\n case PollFactory.MSG_CLASS_REVEAL:\n this.processRevealMessage(poll, message);\n break;\n default:\n break;\n }\n }\n }\n\n /* eslint-disable no-unused-vars */\n processPollMessage(poll /* , message */) {\n poll.finalize();\n }\n /* eslint-enable no-unused-vars */\n\n processFeedbackMessage(poll, message) {\n const hasSource = !!message.body[2];\n const hasCounters = !!message.body[3];\n\n const isFinal = parseInt(message.body[1], 10) === 1;\n const sources = hasSource ? message.body[2].split(':') : [];\n let counters = hasCounters ? message.body[3].split(':') : [];\n const results = [];\n const resultsPerSource = [];\n\n // converting counters to integer\n counters = counters.map((counter) => +counter);\n\n counters.forEach((counter, i) => {\n const total = counters.length / (sources.length / 2);\n const idx = i % total;\n\n results[idx] = +counter + (results[idx] || 0);\n });\n\n for (let i = 0, l = sources.length / 2; i < l; i++) {\n const total = counters.length / (sources.length / 2);\n\n resultsPerSource.push({\n source: sources[i * 2],\n voters: +sources[i * 2 + 1],\n results: counters.slice(total * i, total * i + total),\n });\n }\n\n if (results.length > 0 || isFinal) {\n poll.setResultsPerSource(resultsPerSource);\n poll.setResults(results);\n }\n }\n\n processStopMessage(poll, message) {\n poll.stop(message.body[1]);\n }\n\n processRevealMessage(poll, message) {\n poll.reveal(message.body[1] - 1);\n }\n\n // TODO: combine create() and createSnapshot() methods\n create(data) {\n super.create(data);\n\n const Constructor = this.getConstructorByType(data.type);\n const poll = new Constructor(data);\n\n this.instances[data.id] = poll;\n\n this.processMessages();\n\n poll.bind(Poll.ON_VOTE, this.handleVote.bind(this, poll));\n\n return poll;\n }\n\n createSnapshot(data) {\n super.createSnapshot(data);\n\n const Constructor = this.getConstructorByType(data.type);\n const poll = new Constructor(data);\n\n this.instances[data.id] = poll;\n\n poll.finalize();\n\n return poll;\n }\n\n setMessage(message) {\n if (PollFactory.MSG_CLASSES.indexOf(message.klass) === -1) {\n return;\n }\n\n this.messages.push(message);\n this.processMessages();\n }\n\n getConstructorByType(type) {\n switch (type) {\n case Powerbar.TYPE:\n return Powerbar;\n case Prediction.TYPE:\n return Prediction;\n case Trivia.TYPE:\n return Trivia;\n case Swing.TYPE:\n return Swing;\n case Emoting.TYPE:\n return Emoting;\n case Regular.TYPE:\n return Regular;\n case FlexiPoll.TYPE:\n return FlexiPoll;\n default:\n return undefined;\n }\n }\n\n handleVote(instance, vote) {\n let idx;\n let cast = [];\n\n switch (instance.getType()) {\n case Regular.TYPE:\n case FlexiPoll.TYPE:\n case Prediction.TYPE:\n case Trivia.TYPE:\n break;\n default:\n idx = vote;\n\n vote = {};\n vote[idx] = 1;\n break;\n }\n\n for (idx in vote) {\n if ({}.hasOwnProperty.call(vote, idx)) {\n cast = cast.concat([+idx + 1, vote[idx]]);\n }\n }\n\n this.vote(instance.getEnmasseId(), cast.join(':'));\n }\n\n constructor() {\n super();\n\n // a queue of messages on poll's channel\n this.messages = [];\n }\n}\n","import Frame from './frame';\n\nexport default class Data extends Frame {\n static TYPE = 'data';\n static STATE_STARTED = 'started';\n static STATE_CLOSED = 'closed';\n static ON_STATE_CHANGE = 'state';\n\n getState() {\n return this.state;\n }\n\n setState(state) {\n // do not fire state change if passed state is the same as it was\n if (state === this.state) {\n return;\n }\n\n this.state = state;\n this.trigger(Data.ON_STATE_CHANGE, state);\n }\n\n updateDurationLeft() {\n super.updateDurationLeft();\n\n if (this.durationLeft > 0) {\n this.setState(Data.STATE_STARTED);\n } else {\n this.setState(Data.STATE_CLOSED);\n }\n }\n\n update(config = {}) {\n super.update(config);\n\n this.publishedAt = config.published_at - 0 || 0;\n\n if (this.fixed) {\n this.updateDurationLeft();\n }\n }\n}\n","import FrameFactory from './frame';\nimport Data from '../elements/data';\n\nexport default class DataFactory extends FrameFactory {\n create(data) {\n super.create(data);\n\n const element = new Data(data);\n\n element.finalize();\n\n this.instances[data.id] = element;\n\n return element;\n }\n\n createSnapshot(data) {\n super.createSnapshot(data);\n\n return this.create(data);\n }\n}\n","import Entity from './entity';\n\nexport default class Curation extends Entity {\n static TYPE = 'curation';\n\n static SOURCE_TWITTER = 'twitter';\n\n getText() {\n return this.text;\n }\n\n getSender() {\n return this.sender;\n }\n\n getSenderName() {\n return this.senderName;\n }\n\n getSenderPicure() {\n return this.senderPicture;\n }\n\n getSource() {\n return this.source;\n }\n\n constructor(config) {\n super(config);\n\n this.text = config.data.text;\n this.sender = config.data.sender;\n this.senderName = config.data.sender_name;\n this.senderPicture = config.data.sender_picture;\n this.source = config.data.source;\n }\n}\n","import BaseFactory from './base';\nimport Curation from '../elements/curation';\n\nexport default class CurationFactory extends BaseFactory {\n create(data) {\n super.create(data);\n\n const curation = new Curation(data);\n\n this.instances[data.id] = curation;\n\n return curation;\n }\n\n createSnapshot(data) {\n super.createSnapshot(data);\n\n return this.create(data);\n }\n}\n","import ConnectionAdaptor from '../utils/connection_adaptor';\nimport PollFactory from './poll';\nimport DataFactory from './data';\nimport CurationFactory from './curation';\n\nimport Data from '../elements/data';\nimport Curation from '../elements/curation';\nimport Powerbar from '../elements/poll.powerbar';\nimport Prediction from '../elements/quiz.prediction';\nimport Trivia from '../elements/quiz.trivia';\nimport Swing from '../elements/diametric.swing';\nimport Emoting from '../elements/diametric.emoting';\nimport Regular from '../elements/poll.regular';\nimport FlexiPoll from '../elements/poll.flexipoll';\n\nexport default (() => {\n const self = {};\n\n let channels = {};\n\n const factories = [];\n\n const factoriesByChannel = {};\n\n // Hash of factories instances keyed on frame type.\n self.items = {};\n\n const handleMessage = (msg) => {\n // console.log(\"Factories::handleMessage\", msg);\n\n // get factory by channel id\n const factory = getFactoryByChannel(msg.channel);\n\n if (factory !== null) {\n factory.setMessage(msg);\n }\n return null;\n };\n\n const getFactoryByChannel = (channel) => {\n for (const key in channels) {\n if ({}.hasOwnProperty.call(channels, key) && channels[key] === channel) {\n return factoriesByChannel[key] || null;\n }\n }\n\n return null;\n };\n\n self.destroyInstances = () => {\n for (const factory of factories) {\n factory.destroyInstances();\n }\n };\n\n self.setChannels = (ch) => {\n channels = ch;\n };\n\n self.get = (type) => self.items[type];\n\n self.init = () => {\n const data = [\n {\n Constructor: PollFactory,\n channel: 'poll',\n types: [\n Regular.TYPE,\n FlexiPoll.TYPE,\n Powerbar.TYPE,\n Swing.TYPE,\n Emoting.TYPE,\n Prediction.TYPE,\n Trivia.TYPE,\n ],\n },\n {\n Constructor: DataFactory,\n channel: null,\n types: [Data.TYPE],\n },\n {\n Constructor: CurationFactory,\n channel: null,\n types: [Curation.TYPE],\n },\n ];\n\n data.forEach((item) => {\n const factory = new item.Constructor();\n factories.push(factory);\n\n if (item.channel !== null) {\n factoriesByChannel[item.channel] = factory;\n }\n\n item.types.forEach((type) => {\n self.items[type] = factory;\n });\n });\n\n ConnectionAdaptor.bind(ConnectionAdaptor.ON_MESSAGE, handleMessage);\n };\n\n return self;\n})();\n","import Emitter from 'tiny-emitter';\nimport assignIn from 'lodash.assignin';\nimport Deferred from 'Deferred';\n\nimport ConnectionAdaptor from './connection_adaptor';\nimport Factories from '../factories/factories';\n\n// Listens on control channel for create and delete messages.\n// Constructor takes main control channel id. No methods.\nfunction Control(config) {\n config = config || {};\n\n const self = this;\n const { channel } = config;\n\n this.trigger = this.emit;\n this.bind = this.on;\n this.unbind = this.off;\n\n const handleMessage = (message) => {\n // channel and type should match settings\n if (message.channel !== channel) {\n return;\n }\n\n switch (message.klass) {\n case Control.MSG_TYPE_CREATE:\n handleMessageCreate(message);\n break;\n case Control.MSG_TYPE_REVOKE:\n handleMessageRevoke(message);\n break;\n default:\n break;\n }\n };\n\n const handleEOC = (_channel) => {\n // channel and type should match settings\n if (_channel !== channel) {\n return;\n }\n\n self.trigger(Control.MSG_TYPE_EOC);\n };\n\n const handleMessageCreate = (message) => {\n const data = JSON.parse(message.body[0]);\n const factory = Factories.get(data.type);\n\n if (typeof factory === 'undefined') {\n return;\n }\n\n const instance = factory.get(data.id);\n\n // secure runtime against broken data\n try {\n if (instance) {\n self.update(data);\n } else {\n self.create(data);\n }\n } catch (e) {\n console.error(e);\n }\n };\n\n const handleMessageRevoke = (message) => {\n const data = JSON.parse(message.body[0]);\n\n self.revoke(data);\n };\n\n self.create = (data) => {\n const factory = Factories.get(data.type);\n\n const instance = factory.create(data);\n\n // trigger MSG_TYPE_CREATE only if instance is finalized\n Deferred.when(instance.finalized).done(() => {\n self.trigger(Control.MSG_TYPE_CREATE, instance);\n });\n };\n\n self.update = (data) => {\n const factory = Factories.get(data.type);\n const instance = factory.get(data.id);\n\n factory.update(instance, data);\n\n self.trigger(Control.MSG_TYPE_UPDATE, instance);\n };\n\n self.revoke = (data) => {\n const factory = Factories.get(data.type);\n\n if (typeof factory === 'undefined') {\n return;\n }\n\n const instance = factory.get(data.id);\n\n if (!instance) {\n return;\n }\n\n factory.revoke(data.id);\n self.trigger(Control.MSG_TYPE_REVOKE, instance);\n };\n\n self.destroy = () => {\n // destroy all elements instances\n Factories.destroyInstances();\n\n ConnectionAdaptor.unbind(ConnectionAdaptor.ON_MESSAGE, handleMessage);\n };\n\n ConnectionAdaptor.bind(ConnectionAdaptor.ON_MESSAGE, handleMessage);\n ConnectionAdaptor.bind(ConnectionAdaptor.ON_EOC, handleEOC);\n}\n\nControl.prototype = assignIn(Control.prototype, new Emitter());\n\nControl.MSG_TYPE_CREATE = 'create';\nControl.MSG_TYPE_UPDATE = 'update';\nControl.MSG_TYPE_REVOKE = 'revoke';\nControl.MSG_TYPE_EOC = 'eoc';\nControl.MSG_TYPE_SNAPSHOT = 'snapshot';\n\nexport default Control;\n","export const TIME_FORMAT_SECONDS = 'seconds';\nexport const TIME_FORMAT_ARRAY = 'array';\nexport const TIME_FORMAT_OBJECT = 'object';\n\nexport const CHANNEL_POLL = 'p';\nexport const CHANNEL_CONTROL = 'l';\n\nexport const MIC_CONFIG_FILE = 'miccfg.json';\n","import Enmasse from '@monterosa/sdk-enmasse-kit';\nimport Deferred from 'Deferred';\nimport Emitter from 'tiny-emitter';\nimport xhr from 'xhr';\nimport assignIn from 'lodash.assignin';\n\nimport Control from './utils/control';\nimport LViSDate from './utils/date';\nimport Run from './utils/run';\nimport Factories from './factories/factories';\nimport ConnectionAdaptor from './utils/connection_adaptor';\nimport Project from './project';\n\nimport {\n TIME_FORMAT_SECONDS,\n TIME_FORMAT_ARRAY,\n TIME_FORMAT_OBJECT,\n CHANNEL_POLL,\n CHANNEL_CONTROL,\n} from './constants';\n\nconst Event = function Event(uuid) {\n /*\n * Settings\n */\n uuid = uuid || null;\n\n /*\n * Private properties\n */\n const self = this;\n let state = Event.STATE_PENDING;\n let data = {};\n const history = []; // list of all past and current elements in this episode\n let control = null;\n\n this.trigger = this.emit;\n this.bind = this.on;\n this.unbind = this.off;\n\n /*\n * Public properties\n */\n self.ready = new Deferred();\n\n /*\n * Private methods\n */\n\n const calculateState = () => {\n const now = LViSDate.now();\n const endAt = self.get('end_at');\n const startAt = self.get('start_at');\n const delay = self.get('__delay');\n const extraTime = self.get('extra_time');\n\n const newState = (() => {\n if (isDataEmpty()) {\n return Event.STATE_PENDING;\n // flag `started` is used to determine if event is manual,\n // in this case start time is ahead of current timestamp\n }\n\n if (!self.get('started') || now < startAt) {\n return Event.STATE_UPCOMING;\n }\n\n if (now < endAt) {\n return Event.STATE_ACTIVE;\n }\n\n if (now < endAt - delay + extraTime) {\n return Event.STATE_PROLONGED;\n }\n\n return Event.STATE_FINISHED;\n })();\n\n if (newState !== state) {\n setState(newState);\n }\n\n Run.nextPriority(() => calculateState());\n };\n\n const initControl = () => {\n if (control !== null) {\n return;\n }\n\n control = new Control({\n channel: self.getChannels(CHANNEL_CONTROL),\n });\n\n control.bind(Control.MSG_TYPE_CREATE, handleControlCreate);\n control.bind(Control.MSG_TYPE_UPDATE, handleControlUpdate);\n control.bind(Control.MSG_TYPE_REVOKE, handleControlRevoke);\n control.bind(Control.MSG_TYPE_EOC, handleControlEOC);\n };\n\n const setState = (newState) => {\n const oldState = self.getState();\n\n state = newState;\n\n if (oldState !== self.getState()) {\n self.trigger(Event.ON_STATE, self.getState());\n }\n\n self.trigger(Event.ON_SUBSTATE, self.getSubstate());\n };\n\n const processHistory = ({ timeline, config }) => {\n const snapshots = timeline.map((item) => item);\n\n snapshots.forEach(ConnectionAdaptor.adaptSnapshotData);\n\n // elements to revoke\n //\n // skipping this phase as `/revoke` message is preserved on enmasse\n // channels until the end of an event\n\n // elements to create\n snapshots\n .filter((snapshot) => !getElementFromHistory(snapshot.id))\n .map((snapshot) => {\n const factory = Factories.get(snapshot.type);\n\n return factory.createSnapshot(snapshot);\n })\n .forEach(handleControlCreate);\n\n snapshots\n .filter((snapshot) => {\n const existingElement = getElementFromHistory(snapshot.id);\n\n return (\n existingElement &&\n existingElement.getUpdatedAt() > snapshot.updated_at\n );\n })\n .map((snapshot) => {\n const factory = Factories.get(snapshot.type);\n const element = factory.get(snapshot.id);\n\n factory.update(element, snapshot);\n\n return element;\n })\n .forEach(handleControlUpdate);\n\n if (isDataEmpty()) {\n ConnectionAdaptor.adaptEvent(config);\n\n self.setData(config);\n }\n };\n\n const isDataEmpty = () => {\n if (!data || typeof data !== 'object' || Array.isArray(data)) {\n return false;\n }\n\n return !Object.keys(data).length;\n };\n\n const isReady = () => self.ready.state() === 'resolved';\n\n const isElementInHistory = (element) =>\n history.some(\n (historyElement) => historyElement.getId() === element.getId(),\n );\n\n const canLoadHistory = () => {\n // time to ignore history loading\n const ignore = parseInt(Project.get('history_ignore'), 10) || 60;\n\n // delay at the moment of time when event's data were adapted\n const delay = self.get('__delay');\n\n // even'ts start time (including delay)\n const start = self.get('start_at');\n\n // do not load history if now before this time\n const threshold = start - delay + ignore;\n\n return self.isPending() || LViSDate.now() > threshold;\n };\n\n const addElementToHistory = (element) => {\n if (isElementInHistory(element)) {\n return;\n }\n\n // sort by published at and id\n for (let i = history.length - 1; i >= 0; i--) {\n if (history[i].publishedAt < element.publishedAt) {\n history.splice(i + 1, 0, element);\n return;\n }\n\n if (history[i].publishedAt === element.publishedAt) {\n if (history[i].id < element.id) {\n history.splice(i + 1, 0, element);\n return;\n }\n }\n }\n\n history.unshift(element);\n };\n\n const getElementFromHistory = (id) =>\n history.find((element) => element.getId() === id);\n\n const removeElementFromHistory = (element) => {\n const index = history.indexOf(element);\n\n if (index > -1) {\n history.splice(index, 1);\n }\n };\n\n const sortElementsInHistory = () => {\n history.sort((a, b) => a.getPublishedAt() - b.getPublishedAt());\n };\n\n const handleControlCreate = (instance) => {\n addElementToHistory(instance);\n\n if (isReady()) {\n self.trigger(Event.ON_ELEMENT_PUBLISH, instance);\n }\n };\n\n const handleControlUpdate = (instance) => {\n sortElementsInHistory();\n\n if (isReady()) {\n self.trigger(Event.ON_ELEMENT_UPDATE, instance);\n }\n };\n\n const handleControlRevoke = (instance) => {\n removeElementFromHistory(instance);\n\n if (isReady()) {\n self.trigger(Event.ON_ELEMENT_REVOKE, instance);\n }\n };\n\n const handleControlEOC = () => {\n self.trigger(Event.ON_EOC);\n };\n\n /*\n * Getters\n */\n\n this.get = (param) => {\n if (typeof param === 'undefined') {\n // return full dataset if parameter is not set\n return data;\n }\n\n if (typeof data[param] !== 'undefined') {\n // return value that matches passed parameter in dataset\n return data[param];\n }\n\n return null;\n };\n\n this.getUUID = () => uuid;\n\n this.getChannels = (type) => {\n const channelId = (t) => `${t}-${uuid}`;\n\n if (typeof type === 'undefined') {\n return {\n poll: channelId(CHANNEL_POLL),\n control: channelId(CHANNEL_CONTROL),\n };\n }\n\n if (type === CHANNEL_POLL || type === CHANNEL_CONTROL) {\n return channelId(type);\n }\n\n throw new Error(`Unknown channel type ${type}`);\n };\n\n this.getName = () => this.get('name');\n\n this.getStartAt = () => this.get('start_at');\n\n this.getOriginalStartAt = () => {\n const startAt = this.getStartAt();\n\n if (startAt === null) {\n return null;\n }\n\n return startAt - data.__delay;\n };\n\n this.getEndAt = () => this.get('end_at');\n\n this.getState = () => {\n switch (state) {\n case Event.STATE_PROLONGED:\n return Event.STATE_FINISHED;\n default:\n return state;\n }\n };\n\n this.getSubstate = () => state;\n\n this.getCustomFields = (field) => {\n const fields = this.get('custom_fields');\n\n if (fields === null) {\n return null;\n }\n\n const values = Project.localise(fields);\n\n if (typeof field === 'undefined') {\n // return full set of custom fields if field name wasn't passed\n return values;\n }\n\n // custom field was passed\n if (typeof values[field] !== 'undefined') {\n // return specific field if field exists in object\n return values[field];\n }\n\n // otherwise return null\n return null;\n };\n\n this.getCountdown = (format) => {\n format = format || TIME_FORMAT_SECONDS;\n\n // countdown values\n const countdown = {\n years: 0,\n months: 0,\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0,\n };\n\n let diffSeconds = this.get('start_at') - LViSDate.now();\n\n if (diffSeconds < 0) {\n diffSeconds = 0;\n }\n\n if (format === TIME_FORMAT_SECONDS) {\n return diffSeconds;\n }\n\n // calculate difference between event start at and now dates relatively to the Unix Epoch time\n const diff = new Date(diffSeconds * 1000);\n\n // methods to be casted on diff date\n const methods = {\n years: 'getUTCFullYear',\n months: 'getUTCMonth',\n days: 'getUTCDate',\n hours: 'getUTCHours',\n minutes: 'getUTCMinutes',\n seconds: 'getUTCSeconds',\n };\n\n let value;\n for (const [key, method] of Object.entries(methods)) {\n value = diff[method]();\n\n switch (method) {\n case 'getUTCDate':\n value--; // date starts with 1 not 0\n break;\n case 'getUTCFullYear':\n value -= 1970; // year when Unix Epoch started\n break;\n default:\n break;\n }\n\n countdown[key] = value;\n }\n\n switch (format) {\n case TIME_FORMAT_OBJECT:\n return countdown;\n case TIME_FORMAT_ARRAY:\n return [\n countdown.seconds,\n countdown.minutes,\n countdown.hours,\n countdown.days,\n countdown.months,\n countdown.years,\n ];\n default:\n // undefined format?\n return null;\n }\n };\n\n this.getHistory = () => history;\n\n this.getLastFromHistory = () => {\n if (history.length > 0) {\n return history[history.length - 1];\n }\n\n return null;\n };\n\n /*\n * Public methods\n */\n\n this.setData = (newData) => {\n const oldDigest = data.digest;\n const oldDelay = data.__delay;\n\n data = newData || {};\n\n if (oldDigest !== newData.digest || oldDelay !== newData.__delay) {\n self.trigger(Event.ON_UPDATE);\n }\n\n calculateState();\n };\n\n this.isPending = () => state === Event.STATE_PENDING;\n\n this.isReady = () => isReady();\n\n this.addDemographicsCounter = (\n segmentName,\n segmentValue,\n counter,\n round,\n min,\n max,\n ) => {\n if (this.isPending()) {\n console.error(\n \"Can't add demographics counter while event is in the pending state.\",\n );\n\n return;\n }\n\n const channel = this.getChannels(CHANNEL_CONTROL);\n const segment = [segmentName, segmentValue];\n\n Enmasse.Demographics.addCounter(\n channel,\n uuid,\n segment,\n counter,\n round,\n min,\n max,\n );\n };\n\n this.markAsReady = () => {\n if (isReady()) {\n return;\n }\n\n self.ready.resolve();\n self.trigger(Event.ON_READY);\n };\n\n this.markAsNotReady = () => {\n if (!isReady()) {\n return;\n }\n\n history\n .map((element) => ({\n id: element.getId(),\n type: element.getType(),\n }))\n .forEach((item) => {\n control.revoke(item);\n });\n\n self.ready = new Deferred();\n self.trigger(Event.ON_NOT_READY);\n };\n\n /**\n * Loads event's history from CDN\n *\n * @method loadHistory\n * @public\n * @param {string} host Static host\n * @param {boolean} [reconnect=false] Indicates that history is loading on reconnect\n * @return {deferred} of ajax request\n */\n this.loadHistory = (host, reconnect) => {\n const deferred = new Deferred();\n\n const success = (historyData) => {\n try {\n // secure code against the bad data\n processHistory(historyData);\n } catch (exception) {\n console.error(exception);\n }\n\n deferred.resolve();\n };\n\n const error = () => {\n if (self.isPending()) {\n setState(Event.STATE_FAILURE);\n }\n\n deferred.reject();\n };\n\n if (canLoadHistory()) {\n const url = `${host}/events/${uuid.substr(0, 2)}/${uuid}/history.json`;\n\n xhr.get(url, { json: true }, (err, resp, historyData = {}) => {\n const status = resp.statusCode;\n const isSuccess =\n (status >= 200 && status <= 300) || status === 0 || status === '';\n const hasTimeline = {}.hasOwnProperty.call(historyData, 'timeline');\n const hasConfig = {}.hasOwnProperty.call(historyData, 'config');\n\n // Assert on race condition when the event becomes ready before\n // history is loaded. Not applicable on reconnect.\n if (isReady() && !reconnect) {\n console.warn('Event is ready before history is loaded');\n }\n\n if (isSuccess && hasTimeline && hasConfig) {\n success(historyData);\n } else {\n error();\n }\n });\n } else {\n deferred.resolve();\n }\n\n return deferred;\n };\n\n calculateState();\n initControl();\n};\n\nEvent.prototype = assignIn(Event.prototype, new Emitter());\n\nEvent.ON_READY = 'ready';\nEvent.ON_NOT_READY = 'not-ready';\nEvent.ON_UPDATE = 'update';\nEvent.ON_STATE = 'state';\nEvent.ON_SUBSTATE = 'substate';\nEvent.ON_EOC = 'eoc';\nEvent.ON_ELEMENT_PUBLISH = 'element-publish';\nEvent.ON_ELEMENT_UPDATE = 'element-update';\nEvent.ON_ELEMENT_REVOKE = 'element-revoke';\n\nEvent.STATE_FAILURE = 'failure';\nEvent.STATE_PENDING = 'pending';\nEvent.STATE_UPCOMING = 'upcoming';\nEvent.STATE_ACTIVE = 'active';\nEvent.STATE_PROLONGED = 'prolonged'; // substate of STATE_FINISHED\nEvent.STATE_FINISHED = 'finished';\n\nEvent.HISTORY_LOCALISATION = 1;\nEvent.HISTORY_VERSIONS = {\n 2: Event.HISTORY_LOCALISATION,\n};\n\nexport default Event;\n","import Emitter from 'tiny-emitter';\n\nimport Project from './project';\nimport Event from './event';\nimport LViSDate from './utils/date';\nimport ConnectionAdaptor from './utils/connection_adaptor';\n\n// properties\nlet channel = null;\nlet events = [];\nlet assets = {};\nconst instances = {}; // cache of instances\nlet ready = false;\n\nconst Listings = new Emitter();\n\nListings.trigger = Listings.emit;\nListings.bind = Listings.on;\nListings.unbind = Listings.off;\n\n// constants\nListings.ON_READY = 'ready';\nListings.ON_UPDATE = 'update';\nListings.MSG_CLASS = 'listings';\n\n/*\n * Private methods\n */\n\nconst handleMessage = (msg) => {\n // lazy return to reduce code inheritance\n if (msg.channel !== channel) {\n return;\n }\n\n switch (msg.klass) {\n case Listings.MSG_CLASS: {\n const data = JSON.parse(msg.body[0]);\n\n handleData(data);\n\n break;\n }\n default:\n break;\n }\n};\n\nconst handleEOC = (_channel) => {\n if (_channel !== channel) {\n return;\n }\n\n // do not expose ON_READY event if listings were initialised already\n if (!ready) {\n ready = true;\n Listings.trigger(Listings.ON_READY);\n }\n};\n\nconst findById = (collection, id) => {\n for (let i = 0, l = collection.length; i < l; i++) {\n if (collection[i].id === id) {\n return collection[i];\n }\n }\n\n return null;\n};\n\n// check if there are any changes in listings data\nconst haveChanged = (data) => {\n let i;\n let l;\n let event;\n\n // iterate over came events data\n for (i = 0, l = data.events.length; i < l; i++) {\n event = findById(events, data.events[i].id);\n\n // new episode OR digest of the existant event has changed\n if (event === null || event.digest !== data.events[i].digest) {\n return true;\n }\n }\n\n // check if event was removed\n for (i = 0, l = events.length; i < l; i++) {\n if (findById(data.events, events[i].id) === null) {\n return true;\n }\n }\n\n return false;\n};\n\nconst handleData = (data) => {\n const isChanges = ready && haveChanged(data);\n\n events = data.events;\n\n events.sort((a, b) => {\n if (a.start_at < b.start_at) {\n return -1;\n }\n\n if (a.start_at > b.start_at) {\n return 1;\n }\n\n return 0;\n });\n\n // populate project object with the data\n Project.setData(data.project);\n\n if (!ready) {\n // load assets only once\n // and cache them permanently\n assets = data.assets;\n }\n\n // update instances\n for (let i = 0, l = events.length; i < l; i++) {\n const event = events[i];\n\n if (instances[event.id]) {\n instances[event.id].setData(event);\n }\n }\n\n if (isChanges) {\n Listings.trigger(Listings.ON_UPDATE);\n }\n};\n\n/*\n * Public methods\n */\n\n// returns object of the LViS event by Id\nListings.get = (id) => {\n // lazy return if instance already exists\n if (typeof instances[id] !== 'undefined') {\n return instances[id];\n }\n\n const data = findById(events, id);\n const event = new Event(id);\n\n // Data from Enmasse has priority over data from CDN\n // Setting data from listings if data exists\n if (data) {\n event.setData(data);\n }\n\n instances[id] = event;\n\n return event;\n};\n\n// Current episode is the episode start time\n// of which in the past and end time in future.\n// Returns:\n// 1) array of the currently active LViS Events\n// 2) NULL if there are no any LViS Event\nListings.getCurrent = () => {\n const list = [];\n const now = LViSDate.now();\n\n // loop through the raw data\n for (let i = 0, l = events.length; i < l; i++) {\n if (events[i].start_at <= now && now < events[i].end_at) {\n list.push(Listings.get(events[i].id));\n }\n }\n\n // return NULL if nothing found\n return list.length ? list : null;\n};\n\n// Returns:\n// 1) array of the LViS Events that are\n// scheduled to start next\n// 2) NULL if there are no any LViS Event\nListings.getNext = () => {\n // time till the next event\n let nextStartAt = Number.POSITIVE_INFINITY;\n const list = [];\n\n // loop through the raw data and find\n // the minimal time till the upcoming event\n let i;\n let l;\n const now = LViSDate.now();\n\n for (i = 0, l = events.length; i < l; i++) {\n if (now < events[i].start_at && events[i].start_at < nextStartAt) {\n nextStartAt = events[i].start_at;\n }\n }\n\n if (nextStartAt < Number.POSITIVE_INFINITY) {\n for (i = 0, l = events.length; i < l; i++) {\n if (events[i].start_at === nextStartAt) {\n list.push(Listings.get(events[i].id));\n }\n }\n }\n\n // return NULL if nothing found\n return list.length ? list : null;\n};\n\n// can't be realized now due to absence of\n// the ended events in the list\n// Listings.getPrevious = function () {};\n\n// returns the list of all events sorted by start time\n// eslint-disable-next-line\nListings.getList = function () {\n let event;\n const list = [];\n\n for (let i = 0, l = events.length; i < l; i++) {\n event = this.get(events[i].id);\n\n if (event !== null) {\n list.push(event);\n }\n }\n\n return list;\n};\n\nListings.getAssets = (id) => {\n if (typeof id === 'undefined') {\n return assets;\n }\n\n return assets[id] || null;\n};\n\nListings.fetchListings = async (host, project) => {\n const response = await fetch(\n `https://${host}/projects/${project.substr(0, 2)}/${project}/listings.json`,\n );\n\n const data = await response.json();\n\n handleData(data);\n};\n\nListings.init = (config) => {\n config = config || {};\n channel = config.channel || null;\n\n ConnectionAdaptor.bind(ConnectionAdaptor.ON_MESSAGE, handleMessage);\n ConnectionAdaptor.bind(ConnectionAdaptor.ON_EOC, handleEOC);\n};\n\nexport default Listings;\n","import Enmasse from '@monterosa/sdk-enmasse-kit';\n\nexport default (() => {\n // pointer to `this` object\n const self = {};\n\n self.getSessionId = () => Enmasse.getSessionId();\n\n self.signIn = (...args) => Enmasse.signIn(...args);\n\n self.login = (...args) => Enmasse.login(...args);\n\n return self;\n})();\n","import { calculatePercentage } from '@monterosa/sdk-util';\nimport Enmasse from '@monterosa/sdk-enmasse-kit';\nimport $script from 'scriptjs';\nimport Deferred from 'Deferred';\nimport xhr from 'xhr';\nimport Emitter from 'tiny-emitter';\n\nimport { version } from '../package.json';\nimport LViSDate from './utils/date';\nimport Sync from './utils/sync';\nimport ConnectionAdaptor from './utils/connection_adaptor';\nimport Control from './utils/control';\nimport Run from './utils/run';\nimport Listings from './listings';\nimport Event from './event';\nimport Project from './project';\nimport User from './user';\n\nimport BaseFactory from './factories/base';\nimport FrameFactory from './factories/frame';\nimport CurationFactory from './factories/curation';\nimport DataFactory from './factories/data';\nimport PollFactory from './factories/poll';\nimport Factories from './factories/factories';\n\nimport Frame from './elements/frame';\nimport Poll from './elements/poll';\nimport Data from './elements/data';\nimport Curation from './elements/curation';\nimport Regular from './elements/poll.regular';\nimport FlexiPoll from './elements/poll.flexipoll';\nimport Powerbar from './elements/poll.powerbar';\nimport Diametric from './elements/diametric';\nimport Swing from './elements/diametric.swing';\nimport Emoting from './elements/diametric.emoting';\nimport Quiz from './elements/quiz';\nimport Prediction from './elements/quiz.prediction';\nimport Trivia from './elements/quiz.trivia';\n\nimport {\n Storage,\n StorageLocalDriver,\n StorageCookieDriver,\n} from './utils/storage';\n\nimport {\n TIME_FORMAT_SECONDS,\n TIME_FORMAT_ARRAY,\n TIME_FORMAT_OBJECT,\n CHANNEL_POLL,\n CHANNEL_CONTROL,\n MIC_CONFIG_FILE,\n} from './constants';\n\n// properties\nlet host = null;\nlet channel = null;\nlet lvisEvent = null;\nlet initialised = false;\nlet forceSecure = false;\nconst enmasseReady = new Deferred();\nconst projectReady = new Deferred();\nconst assetsReady = new Deferred();\n\nconst LViS = new Emitter();\n\nconst LViSRun = {\n next: Run.nextRegular,\n};\n\nconst trigger = LViS.emit;\nconst bind = LViS.on;\nconst unbind = LViS.off;\n\nconst ON_READY = 'ready';\nconst ON_ERROR = 'error';\n\nLViS.trigger = trigger;\nLViS.bind = bind;\nLViS.unbind = unbind;\n\n// attach xhr library to make it possible to mock it in unit tests\nLViS._xhr = xhr;\n\nLViS.VERSION = version;\n\nLViS.ON_READY = ON_READY;\nLViS.ON_ERROR = ON_ERROR;\n\nLViS.TIME_FORMAT_SECONDS = TIME_FORMAT_SECONDS;\nLViS.TIME_FORMAT_ARRAY = TIME_FORMAT_ARRAY;\nLViS.TIME_FORMAT_OBJECT = TIME_FORMAT_OBJECT;\n\nLViS.CHANNEL_CONTROL = CHANNEL_CONTROL;\nLViS.CHANNEL_POLL = CHANNEL_POLL;\n\nLViS.Date = LViSDate;\nLViS.Project = Project;\nLViS.Listings = Listings;\nLViS.Control = Control;\nLViS.Run = LViSRun;\nLViS.Event = Event;\nLViS.Storage = Storage;\nLViS.StorageLocalDriver = StorageLocalDriver;\nLViS.StorageCookieDriver = StorageCookieDriver;\nLViS.User = User;\nLViS.Sync = Sync;\nLViS.Enmasse = Enmasse;\nLViS.ConnectionAdaptor = ConnectionAdaptor;\nLViS.ConnectionManager = Enmasse;\nLViS.calculatePercentage = calculatePercentage;\n\nLViS.BaseFactory = BaseFactory;\nLViS.FrameFactory = FrameFactory;\nLViS.CurationFactory = CurationFactory;\nLViS.DataFactory = DataFactory;\nLViS.PollFactory = PollFactory;\nLViS.Factories = Factories;\n\nLViS.Frame = Frame;\nLViS.Poll = Poll;\nLViS.Data = Data;\nLViS.Curation = Curation;\nLViS.FlexiPoll = FlexiPoll;\nLViS.Regular = Regular;\nLViS.Powerbar = Powerbar;\nLViS.Quiz = Quiz;\nLViS.Prediction = Prediction;\nLViS.Trivia = Trivia;\nLViS.Diametric = Diametric;\nLViS.Swing = Swing;\nLViS.Emoting = Emoting;\n\n/*\n * Private methods\n */\n\nconst embedAssets = () => {\n const jsLoaded = new Deferred();\n\n let i;\n const files = {}; // list of files grouped by type\n const assets = getAssets();\n\n for (const key in assets) {\n if ({}.hasOwnProperty.call(assets, key)) {\n for (i = 0; i < assets[key].length; i++) {\n const asset = assets[key][i];\n const type = asset.autoload;\n\n if (typeof type === 'undefined') {\n continue;\n }\n\n if (typeof files[type] === 'undefined') {\n files[type] = [];\n }\n\n files[type].push(asset.data);\n }\n }\n }\n\n if (typeof files.js !== 'undefined' && files.js.length > 0) {\n $script(files.js, jsLoaded.resolve());\n } else {\n jsLoaded.resolve();\n }\n\n if (typeof files.css !== 'undefined' && files.css.length > 0) {\n for (i = 0; i < files.css.length; i++) {\n if (document.createStyleSheet) {\n document.createStyleSheet(files.css[i]);\n } else {\n const style = document.createElement('link');\n style.setAttribute('rel', 'stylesheet');\n style.setAttribute('media', 'all');\n style.setAttribute('type', 'text/css');\n style.setAttribute('href', files.css[i]);\n\n document.head.appendChild(style);\n }\n }\n }\n\n return Deferred.when(jsLoaded);\n};\n\nconst handleEventState = () => {\n if (lvisEvent === null) {\n return;\n }\n\n // console.log(\"LViS::handleEventState\", lvisEvent.getSubstate());\n\n const state = lvisEvent.getSubstate();\n\n if (\n [Event.STATE_FAILURE, Event.STATE_UPCOMING, Event.STATE_FINISHED].indexOf(\n state,\n ) >= 0\n ) {\n // no more data to load\n lvisEvent.markAsReady();\n }\n\n switch (state) {\n // case Event.STATE_PENDING: break;\n // case Event.STATE_FAILURE:\n // case Event.STATE_UPCOMING:\n // break;\n case Event.STATE_ACTIVE:\n handleEventActiveState();\n break;\n case Event.STATE_PROLONGED:\n handleEventProlongedState();\n break;\n case Event.STATE_FINISHED:\n handleEventFinishedState();\n break;\n default:\n break;\n }\n};\n\nconst handleEventEOC = () => {\n lvisEvent.markAsReady();\n};\n\nconst handleEventActiveState = () => {\n // console.log(\"LViS::handleEventActiveState\");\n const channels = lvisEvent.getChannels();\n\n Factories.setChannels(channels);\n\n // subscribe to all channels and kick the things off\n for (const key in channels) {\n if ({}.hasOwnProperty.call(channels, key)) {\n ConnectionAdaptor.subscribe(channels[key]);\n }\n }\n};\n\nconst handleEventProlongedState = () => {\n // console.log(\"LViS::handleEventProlongedState\");\n const channels = lvisEvent.getChannels();\n\n Factories.setChannels(channels);\n\n // subscribe to all channels\n for (const key in channels) {\n if ({}.hasOwnProperty.call(channels, key)) {\n ConnectionAdaptor.subscribe(channels[key]);\n }\n }\n};\n\nconst handleEventFinishedState = () => {\n // console.log(\"LViS::handleEventFinishedState\");\n const channels = lvisEvent.getChannels();\n\n // unsubscribe from all channels\n for (const key in channels) {\n if ({}.hasOwnProperty.call(channels, key)) {\n ConnectionAdaptor.unsubscribe(channels[key]);\n }\n }\n};\n\nconst handleEnmasseState = (...args) => {\n const state = args[0];\n\n switch (state) {\n case Enmasse.STATE_CONNECTED: {\n const time = args[1];\n\n LViSDate.setTime(time);\n\n ConnectionAdaptor.subscribe(channel);\n\n if (lvisEvent && lvisEvent.isReady()) {\n lvisEvent.loadHistory(getHost(), true).always(handleEventState);\n } else {\n handleEventState();\n }\n\n break;\n }\n default:\n break;\n }\n};\n\nconst handleEnmasseReady = () => {\n // console.log(\"API::handleEnmasseReady\");\n enmasseReady.resolve();\n\n Enmasse.connect();\n};\n\nconst handleEnmasseError = () => {\n // console.log(\"API::handleEnmasseError\");\n enmasseReady.reject();\n};\n\nconst handleListingsReady = () => {\n embedAssets()\n .done(() => assetsReady.resolve())\n .fail(() => assetsReady.reject());\n};\n\nconst handleSyncDelayChange = () => {\n LViS.resetEvent();\n};\n\nconst initWithConfig = (config = {}) => {\n const UUIDSchema =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n const hostSchema =\n /^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9])$/i;\n\n if (typeof config.host === 'undefined' || config.host === null) {\n LViS.trigger(LViS.ON_ERROR);\n console.error('Host is not set');\n return;\n }\n\n if (typeof config.project === 'undefined' || config.project === null) {\n LViS.trigger(LViS.ON_ERROR);\n console.error('Project UUID is not set');\n return;\n }\n\n if (!UUIDSchema.test(config.project)) {\n LViS.trigger(LViS.ON_ERROR);\n console.error('Project UUID has incorrect format');\n return;\n }\n\n if (!hostSchema.test(config.host)) {\n LViS.trigger(LViS.ON_ERROR);\n console.error('Host has incorrect format');\n return;\n }\n\n if (initialised) {\n console.warn(\n 'Attempt to initialise library when it was already initialised',\n );\n return;\n }\n\n if (typeof config.forceSecure === 'boolean') {\n forceSecure = config.forceSecure;\n }\n\n channel = `${CHANNEL_CONTROL}-${config.project}`;\n\n // remove leading //, http:// or https://\n host = config.host.replace(/^(.*:)?(\\/+)?/gi, '');\n\n Enmasse.bind(Enmasse.ON_READY, handleEnmasseReady);\n Enmasse.bind(Enmasse.ON_ERROR, handleEnmasseError);\n Enmasse.bind(Enmasse.ON_STATE, handleEnmasseState);\n Listings.bind(Listings.ON_READY, handleListingsReady);\n Sync.bind(Sync.ON_DELAY_CHANGE, handleSyncDelayChange);\n\n enmasseReady.fail(() => console.error('Enmasse initialization failed'));\n assetsReady.fail(() => console.error('Unable to embed assets files'));\n projectReady.fail(() => console.error('Unable to load project settings'));\n\n Deferred.when(enmasseReady, projectReady, assetsReady)\n .done(() => LViS.trigger(LViS.ON_READY))\n .fail(() => LViS.trigger(LViS.ON_ERROR));\n\n Sync.init({\n Event,\n });\n\n Project.init({\n uuid: config.project,\n host: getHost(),\n })\n .done(() => projectReady.resolve())\n .fail(() => projectReady.reject());\n\n Listings.init({\n channel,\n });\n\n Factories.init();\n\n Enmasse.init({\n config: `${getHost()}/config/enmasse.json`,\n info: [`lvis-${LViS.VERSION}`],\n forceSecure,\n });\n\n initialised = true;\n};\n\n/*\n * Public methods\n */\n\nconst getHost = () => {\n const protocol =\n forceSecure || document.location.protocol.indexOf('https') === 0\n ? 'https'\n : 'http';\n\n return `${protocol}://${host}`;\n};\n\nconst getAssets = (...args) => Listings.getAssets(...args);\n\nconst getEvent = () => lvisEvent;\n\nconst setEvent = (newEvent) => {\n // console.log(\"LVIS::setEvent\", newEvent);\n\n // new event mustn't be set if it was already\n if (lvisEvent === newEvent) {\n return;\n }\n\n unsetEvent();\n\n lvisEvent = newEvent;\n\n newEvent.loadHistory(getHost()).always(() => {\n // It is important to bind on these events only when history is loaded\n // to prevent race condition between event state change.\n // Race is caused by Enmasse subscriptions which sets `isReady` flag and history loading.\n lvisEvent.bind(Event.ON_SUBSTATE, handleEventState);\n lvisEvent.bind(Event.ON_EOC, handleEventEOC);\n\n handleEventState();\n });\n};\n\nconst unsetEvent = () => {\n if (lvisEvent === null) {\n return;\n }\n\n const channels = lvisEvent.getChannels();\n\n // unsubscribe from all channels\n for (const key in channels) {\n if ({}.hasOwnProperty.call(channels, key)) {\n ConnectionAdaptor.unsubscribe(channels[key]);\n }\n }\n\n lvisEvent.unbind(Event.ON_SUBSTATE, handleEventState);\n lvisEvent.unbind(Event.ON_EOC, handleEventEOC);\n\n lvisEvent.markAsNotReady();\n\n lvisEvent = null;\n};\n\nconst resetEvent = () => {\n ConnectionAdaptor.unsubscribe(channel);\n ConnectionAdaptor.subscribe(channel);\n\n if (lvisEvent === null) {\n return;\n }\n\n const channels = lvisEvent.getChannels();\n\n // unsubscribe from events channels\n for (const key in channels) {\n if ({}.hasOwnProperty.call(channels, key)) {\n ConnectionAdaptor.unsubscribe(channels[key]);\n ConnectionAdaptor.subscribe(channels[key]);\n }\n }\n\n lvisEvent.markAsNotReady();\n};\n\nconst init = (config = {}) => {\n const initDone = new Deferred();\n\n if (config.host && config.project) {\n initWithConfig(config);\n return initDone.resolve();\n }\n\n // Load miccfg.json file for initialisation config.\n fetch(MIC_CONFIG_FILE)\n .then((response) => response.json())\n .then((data) => {\n if (data.project) {\n config.project = data.project;\n }\n\n if (data.static_host) {\n config.host = data.static_host;\n }\n })\n .catch(() => {\n // Ignore loading error, as the file only available when custom URL is set.\n })\n .finally(() => {\n initWithConfig(config);\n initDone.resolve();\n });\n\n return initDone;\n};\n\nLViS.getHost = getHost;\nLViS.getAssets = getAssets;\nLViS.getEvent = getEvent;\nLViS.setEvent = setEvent;\nLViS.unsetEvent = unsetEvent;\nLViS.resetEvent = resetEvent;\nLViS.init = init;\n\nexport {\n trigger,\n bind,\n unbind,\n // eslint-disable-line\n\n version as VERSION,\n ON_READY,\n ON_ERROR,\n TIME_FORMAT_SECONDS,\n TIME_FORMAT_ARRAY,\n TIME_FORMAT_OBJECT,\n CHANNEL_CONTROL,\n CHANNEL_POLL,\n // eslint-disable-line\n\n LViSDate as Date,\n Project,\n Listings,\n Control,\n LViSRun as Run,\n Event,\n Storage,\n StorageLocalDriver,\n StorageCookieDriver,\n User,\n Sync,\n Enmasse,\n ConnectionAdaptor,\n Enmasse as ConnectionManager,\n // eslint-disable-line\n\n BaseFactory,\n FrameFactory,\n CurationFactory,\n DataFactory,\n PollFactory,\n Factories,\n // eslint-disable-line\n\n Frame,\n Poll,\n Data,\n Curation,\n FlexiPoll,\n Regular,\n Powerbar,\n Quiz,\n Prediction,\n Trivia,\n Diametric,\n Swing,\n Emoting,\n // eslint-disable-line\n\n calculatePercentage,\n getHost,\n getAssets,\n getEvent,\n setEvent,\n unsetEvent,\n resetEvent,\n init,\n};\n\nexport default LViS;\n"],"names":["LViSDate","Emitter","trigger","emit","bind","on","unbind","off","ON_TICK","ON_NEXT","serverTimestamp","lastTickTimestamp","tickTimeoutId","getCurrentTimestamp","Date","now","getMiddleTimestamp","timestamp","Math","floor","tick","clearTimeout","currentTimestamp","timeSinceLastTick","expect","delay","setTimeout","setTime","time","self","ON_DELAY_CHANGE","defaultDelay","maxDelay","Event","setDelay","value","force","max","Number","MAX_SAFE_INTEGER","console","warn","concat","_resetSettings","setMaxDelay","parseInt","setDefaultDelay","_len","arguments","length","args","Array","_key","pop","constructor","event","timecode","getOriginalStartAt","getTime","getMaxDelay","getDelay","init","config","regularQueue","priorityQueue","add","queue","func","context","undefined","push","execute","item","total","shift","apply","executePriority","executeRegular","handleDateTick","handleDateNext","nextRegular","nextPriority","ON_EOC","Enmasse","ON_MESSAGE","ON_SETTINGS","EOCs","processIsInThePriorityQueue","handleMessage","message","deduplicate","Run","process","handleDelayChange","clearQueue","handleState","state","STATE_DISCONNECTED","clearEOCs","STATE_CONNECTED","STATE_CONNECTING","handleEOC","channel","klass","id","JSON","parse","body","e","itemId","idx","splice","canAdapt","_queue$splice","_queue$splice2","_slicedToArray","adaptMessage","checker","canAdaptCreate","canAdaptReveal","canAdaptRevoke","canAdaptStop","canAdaptPoll","canAdaptSubsCounter","canAdaptOther","data","canAdaptGeneric","published_at","sent_at","publishAt","hasEOC","publishAtDelayed","Sync","adaptor","adaptSnapshot","adaptListings","adaptCreate","adaptReveal","adaptRevoke","adaptStop","adaptPoll","adaptSubsCounter","adaptOther","snapshot","adaptSnapshotData","stringify","published_at_iso","toISOString","adapter","type","adaptPredictionSnapshot","adaptOtherSnapshot","start_at","start_at_iso","stop_at","stop_at_iso","reveal_answer_at","reveal_answer_at_iso","listings","project","audio_sync_max_delay","audio_sync_default_delay","uuid","events","hasOwnProperty","call","adaptEvent","end_at","end_at_iso","__delay","sent_at_iso","next_update_at","eoc","subscribe","unsubscribe","forEach","ON_STATE","Base","get","instances","create","createSnapshot","revoke","destroyInstances","destroy","FrameFactory","BaseFactory","getByEnmasseId","enmasseId","_i","_Object$values","Object","values","instance","getEnmasseId","setMessages","update","Entity","getId","getFullId","getPublishedAt","publishedAt","getUpdatedAt","updatedAt","finalize","finalized","resolve","updated_at","Deferred","globals","getGlobal","StorageLocalDriver","hasSupport","global","localStorage","exception","set","name","setItem","QUOTA_EXCEEDED_ERR","error","getItem","remove","removeItem","StorageCookieDriver","probe","stored","expires","Cookie","Storage","DRIVERS","driver","prefix","i","enabled","toStoredName","join","setPrefix","newPrefix","host","settings","currentLanguage","missingTimeout","ON_SUBS_COUNT","ON_SUBS_COUNT_MISSING","getDefaultLanguage","locales","find","locale","default","loadAppSettings","url","substr","dfd","xhr","json","err","resp","settingsData","status","statusCode","isSuccess","reject","promise","hasLanguage","language","some","_ref","key","handleSubsMissing","handleSubsCount","subsData","nextSubsUpdate","counter","setData","d","storedLanguage","setCurrentLanguage","getSettings","localise","getUUID","getLanguages","getCurrentLanguage","getEmbedUrl","isLocalisationSupported","all","ConnectionAdaptor","Frame","getDuration","duration","getDurationLeft","durationLeft","getType","getContentType","contentType","getCustomFields","field","Project","customFields","hasFixedDuration","fixed","setDuration","setDurationLeft","abort","aborted","updateDurationLeft","endAt","left","custom_fields","content_type","Poll","getQuestion","question","getOptions","options","getResults","canReveal","results","getResultsPerSource","source","resultsPerSource","l","getState","getUserVote","votedFor","hasUserVoted","hasResults","isValidatedUserRequired","requiresValidatedUser","vote","indices","keys","nonexistantVotes","filter","storeVote","ON_VOTE","setState","ON_STATE_CHANGE","resultsTriggerPostponed","ON_RESULTS","setResults","rawResults","populateResults","setResultsPerSource","populateResultsPerSource","isStarted","STATE_STARTED","isClosed","STATE_CLOSED","stop","percentage","calculatePercentage","map","votes","expire","EXPIRE","restoreVote","results_per_source","requires_validated_user","_defineProperty","Fadeable","superclass","getFade","fade","Powerbar","resultsToHistoryItem","result","volume","average","responses","round","REVEAL_RESULTS_ON_VOTE","REVEAL_RESULTS_ON_CLOSE","REVEAL_RESULTS_ON_EVENT_END","REVEAL_RESULTS_MANUALLY","REVEAL_RESULTS_NEVER","REVEAL_RESULTS_ALWAYS","Revealable","revealResultsMode","reveal_results_mode","MultiVotable","getMaxVotesPerUser","maxVotesPerUser","getMaxVotesPerOption","maxVotesPerOption","maxPerUser","maxPerOption","reduce","memo","hasEmptyVote","hasNonIntVote","exceedsMaxPerOption","exceedsMaxPerUser","max_votes_per_user","max_votes_per_option","Quiz","isStopped","isRevealed","STATE_STOPPED","STATE_REVEALED","reveal","correctOption","getCorrectOption","correct_option","Prediction","Trivia","Diametric","MAX_STRENGTH","getUserVoteStrength","calculateWeightedResults","weighted","optionIdx","strength","min","MIN_STRENGTH","isResultsRevealed","Swing","Emoting","Regular","getQualifyingHashtags","qualifyingHashtags","getMinOptionsPerVote","minOptionsPerVote","getMaxOptionsPerVote","maxOptionsPerVote","qualifying_hashtags","min_options_per_vote","max_options_per_vote","FlexiPoll","PollFactory","poll","send","_channel","processMessages","messages","MSG_CLASS_POLL","processPollMessage","MSG_CLASS_FB","processFeedbackMessage","MSG_CLASS_STOP","processStopMessage","MSG_CLASS_REVEAL","processRevealMessage","hasSource","hasCounters","isFinal","sources","split","counters","voters","slice","Constructor","getConstructorByType","handleVote","setMessage","MSG_CLASSES","indexOf","TYPE","cast","_PollFactory","Data","DataFactory","element","Curation","getText","text","getSender","sender","getSenderName","senderName","getSenderPicure","senderPicture","getSource","sender_name","sender_picture","CurationFactory","curation","channels","factories","factoriesByChannel","items","msg","factory","getFactoryByChannel","_factories","setChannels","ch","types","Control","_config","MSG_TYPE_CREATE","handleMessageCreate","MSG_TYPE_REVOKE","handleMessageRevoke","MSG_TYPE_EOC","Factories","when","done","MSG_TYPE_UPDATE","prototype","assignIn","MSG_TYPE_SNAPSHOT","TIME_FORMAT_SECONDS","TIME_FORMAT_ARRAY","TIME_FORMAT_OBJECT","CHANNEL_POLL","CHANNEL_CONTROL","MIC_CONFIG_FILE","STATE_PENDING","history","control","ready","calculateState","startAt","extraTime","newState","isDataEmpty","STATE_UPCOMING","STATE_ACTIVE","STATE_PROLONGED","STATE_FINISHED","initControl","getChannels","handleControlCreate","handleControlUpdate","handleControlRevoke","handleControlEOC","oldState","ON_SUBSTATE","getSubstate","processHistory","timeline","snapshots","getElementFromHistory","existingElement","isArray","isReady","isElementInHistory","historyElement","canLoadHistory","ignore","start","threshold","isPending","addElementToHistory","unshift","removeElementFromHistory","index","sortElementsInHistory","sort","a","b","ON_ELEMENT_PUBLISH","ON_ELEMENT_UPDATE","ON_ELEMENT_REVOKE","param","channelId","t","Error","getName","getStartAt","getEndAt","fields","getCountdown","format","countdown","years","months","days","hours","minutes","seconds","diffSeconds","diff","methods","_Object$entries","entries","_Object$entries$_i","method","getHistory","getLastFromHistory","newData","oldDigest","digest","oldDelay","ON_UPDATE","addDemographicsCounter","segmentName","segmentValue","segment","Demographics","addCounter","markAsReady","ON_READY","markAsNotReady","ON_NOT_READY","loadHistory","reconnect","deferred","success","historyData","STATE_FAILURE","hasTimeline","hasConfig","HISTORY_LOCALISATION","HISTORY_VERSIONS","assets","Listings","MSG_CLASS","handleData","findById","collection","haveChanged","isChanges","getCurrent","list","getNext","nextStartAt","POSITIVE_INFINITY","getList","getAssets","fetchListings","_asyncToGenerator","_regeneratorRuntime","mark","_callee","response","wrap","_context","prev","next","fetch","sent","_x","_x2","getSessionId","signIn","login","lvisEvent","initialised","forceSecure","enmasseReady","projectReady","assetsReady","LViS","LViSRun","ON_ERROR","_xhr","VERSION","version","User","ConnectionManager","embedAssets","jsLoaded","files","asset","autoload","js","$script","css","document","createStyleSheet","style","createElement","setAttribute","head","appendChild","handleEventState","handleEventActiveState","handleEventProlongedState","handleEventFinishedState","handleEventEOC","handleEnmasseState","getHost","always","handleEnmasseReady","connect","handleEnmasseError","handleListingsReady","fail","handleSyncDelayChange","resetEvent","initWithConfig","UUIDSchema","hostSchema","test","replace","info","protocol","location","getEvent","setEvent","newEvent","unsetEvent","initDone","then","static_host","catch","finally"],"mappings":"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"}