diff --git a/dist/development/strigo.sdk.js b/dist/development/strigo.sdk.js index 360315c..7a53807 100644 --- a/dist/development/strigo.sdk.js +++ b/dist/development/strigo.sdk.js @@ -10798,184 +10798,8 @@ } }); - // src/strigo/consts.ts - var INIT_SCRIPT_ID = "strigo-sdk"; - var BASE_STRIGO_URL = "strigo.io"; - var LOCAL_STRIGO_URL = "localhost:3000"; - var STRIGO_IFRAME_CLASSES = ["strigo-exercises"]; - var ORIGINAL_WEBSITE_IFRAME_CLASSES = ["orig-iframe"]; - var ACADEMY_HAT = ` - -`; - var CDN_BASE_PATH = "https://cdn.jsdelivr.net/gh/strigo/strigo-sdk"; - var ASSESSMENT_RECORDER_URL = "https://assessment-recorder.web.app"; - - // src/modules/url/url.ts - var STRIGO_CHILD_IFRAME_PARAM = "strigoChildIframe"; - function paramsToObject(entries) { - const result = {}; - for (const [key, value] of entries) { - result[key] = value; - } - return result; - } - function extractUrlParams(search) { - const urlParams = new URLSearchParams(search); - const entries = urlParams.entries(); - return paramsToObject(entries); - } - function getUrlData() { - const { host, pathname, href, origin, search } = window.location; - return { - host, - pathName: pathname, - href, - origin, - search, - params: extractUrlParams(search) - }; - } - function generateStrigoIframeURL(config) { - const { subDomain, user, webApiKey, development } = config; - return development ? `http://${LOCAL_STRIGO_URL}/academy/courses?token=${user.token.token}&webApiKey=${webApiKey}` : `https://${subDomain}.${BASE_STRIGO_URL}/academy/courses?token=${user.token.token}&webApiKey=${webApiKey}`; - } - function generateStrigoChildIframeURL(url) { - const currentUrl = new URL(url); - currentUrl.searchParams.set(STRIGO_CHILD_IFRAME_PARAM, "true"); - return currentUrl.toString(); - } - function isStrigoChildIframe() { - return window.location.search.includes(STRIGO_CHILD_IFRAME_PARAM); - } - function removeStrigoChildIframeParam() { - const url = new URL(window.location.href); - const searchParams = new URLSearchParams(url.search); - searchParams.delete(STRIGO_CHILD_IFRAME_PARAM); - url.search = searchParams.toString(); - window.history.replaceState(window.history.state, "", url); - } - function extractInitScriptParams() { - const initScript = document.getElementById(INIT_SCRIPT_ID); - return { - webApiKey: initScript?.getAttribute("data-web-api-key") || "", - subDomain: initScript?.getAttribute("data-subdomain") || "", - selectedWidgetFlavor: initScript?.getAttribute("data-layout-flavor") || "dynamic" /* DYNAMIC */ - }; - } - function generateCssURL(development, version) { - if (development) { - return `http://localhost:${SDK_HOSTING_PORT}/styles/strigo.css`; - } - if (version) { - return `${CDN_BASE_PATH}@${version}/dist/production/styles/strigo.min.css`; - } - return `${CDN_BASE_PATH}@master/dist/production/styles/strigo.min.css`; - } - function generateWidgetCssURL(development, version) { - if (development) { - return `http://localhost:${SDK_HOSTING_PORT}/styles/strigo-widget.css`; - } - if (version) { - return `${CDN_BASE_PATH}@${version}/dist/production/styles/strigo-widget.min.css`; - } - return `${CDN_BASE_PATH}@master/dist/production/styles/strigo-widget.min.css`; - } - function generateRecorderCssURL(development, version) { - if (development) { - return `http://localhost:${SDK_HOSTING_PORT}/styles/strigo-assessment-recorder.css`; - } - if (version) { - return `${CDN_BASE_PATH}@${version}/dist/production/styles/strigo-assessment-recorder.min.css`; - } - return `${CDN_BASE_PATH}@master/dist/production/styles/strigo-assessment-recorder.min.css`; - } - function generateAssessmentRecorderURL(development) { - return development ? `http://localhost:${RECORDER_HOSTING_PORT}` : ASSESSMENT_RECORDER_URL; - } - function isInRecordingMode() { - const { search } = window.location; - const urlParams = extractUrlParams(search); - return "strigoAssessmentRecorder" in urlParams; - } - function isDevelopment() { - const { search } = window.location; - const urlParams = extractUrlParams(search); - return "development" in urlParams; - } - - // src/services/logger.ts - var Logger = class { - constructor(config) { - this.url = config?.url; - } - setup(config) { - this.url = config.url; - } - logToRemote(level, message, context) { - return fetch(this.url, { - method: "PUT", - headers: { - "Content-Type": "application/json" - }, - body: JSON.stringify({ - level, - message, - context - }) - }).then((result) => { - if (!result.ok) { - console.warn("Logging to Strigo failed", { result }); - } - }).catch((error) => { - console.warn("Logging to Strigo failed", { err: error }); - }); - } - logToConsole(level, message, context) { - const enrichedMessage = `${new Date().toISOString()} - ${message}`; - const parsedContext = context.err instanceof Error ? { ...context, err: { message: context.err.message, name: context.err.name, stack: context.err.stack } } : context; - console[level](enrichedMessage, context ? ` -${JSON.stringify(parsedContext)}` : ""); - } - getDefaultContext() { - const config = getConfig(); - if (!config) { - return {}; - } - const { user, subDomain, initSite, development, version, selectedWidgetFlavor } = config; - return { - token: user?.token.token, - initSite: initSite?.href, - subDomain, - development, - version, - selectedWidgetFlavor - }; - } - log(level, message, context) { - const enrichedContext = { ...this.getDefaultContext(), ...context }; - try { - if (this.url && !getConfig()?.development) { - this.logToRemote(level, message, enrichedContext); - } - this.logToConsole(level, `Academy - ${message}`, enrichedContext); - } catch (err) { - console.log("Logging error:", { err }); - } - } - debug(message, context = {}) { - this.log("debug", message, context); - } - info(message, context = {}) { - this.log("info", message, context); - } - warn(message, context = {}) { - this.log("warn", message, context); - } - error(message, context = {}) { - this.log("error", message, context); - } - }; - var LoggerInstance = new Logger(); + // src/modules/assessment-recorder/assessment-recorder.ts + var import_html2canvas = __toESM(require_html2canvas(), 1); // src/modules/storage-utils/storage-utils.ts function getStorageData(storageType, storageName) { @@ -11070,161 +10894,91 @@ ${JSON.stringify(parsedContext)}` : ""); } } - // src/modules/session/session.ts - function setup2(initialSession) { - const session = setupStorage("sessionStorage" /* SESSION_STORAGE */, "strigoSession" /* STRIGO_SESSION */, initialSession); - return session; - } - function getSession() { - const session = getStorageData("sessionStorage" /* SESSION_STORAGE */, "strigoSession" /* STRIGO_SESSION */); - return session; - } - function isPanelOpen() { - return getSession()?.isPanelOpen; - } - function getWidgetFlavor() { - return getSession()?.widgetFlavor; - } - function setSessionValue(key, value) { - const session = setStorageValue("sessionStorage" /* SESSION_STORAGE */, "strigoSession" /* STRIGO_SESSION */, key, value); - return session; - } - function getSessionValue(key) { - const session = getSession(); - return session?.[key]; - } - function clearSession() { - clearStorage("sessionStorage" /* SESSION_STORAGE */, "strigoSession" /* STRIGO_SESSION */); - } - - // src/modules/events-storage/events-storage.ts - function getEventsStorageData() { - try { - return JSON.parse(window["localStorage" /* LOCAL_STORAGE */].getItem("strigoEvents" /* STRIGO_EVENTS */)); - } catch (error) { - LoggerInstance.error("Get events storage error", { error }); - return null; + // src/services/logger.ts + var Logger = class { + constructor(config) { + this.url = config?.url; } - } - function init2() { - try { - const currentEventsStorage = getEventsStorageData(); - if (currentEventsStorage) { - LoggerInstance.debug("Events storage already exists"); - return currentEventsStorage; - } - const storageEvents = { events: [] }; - window["localStorage" /* LOCAL_STORAGE */].setItem("strigoEvents" /* STRIGO_EVENTS */, JSON.stringify(storageEvents)); - return storageEvents; - } catch (error) { - LoggerInstance.error("Init events storage error", { error }); - return null; + setup(config) { + this.url = config.url; } - } - function pushEventValue(event) { - try { - const initialState = getEventsStorageData(); - if (!initialState) { - throw new Error("Can't find initial state"); - } - const prev = JSON.stringify(initialState); - initialState.events.push(event); - window["localStorage" /* LOCAL_STORAGE */].setItem("strigoEvents" /* STRIGO_EVENTS */, JSON.stringify(initialState)); - if (getWidgetFlavor() === "overlay" /* OVERLAY */) { - const customEvent = new CustomEvent("overlay-widget-event" /* OVERLAY_WIDGET_EVENT */, { - bubbles: true, - detail: { - key: "strigoEvents", - oldValue: prev, - newValue: JSON.stringify(initialState) - } - }); - window.dispatchEvent(customEvent); - } - return initialState; - } catch (error) { - LoggerInstance.error("Push event to storage error", { error }); - return null; + logToRemote(level, message, context) { + return fetch(this.url, { + method: "PUT", + headers: { + "Content-Type": "application/json" + }, + body: JSON.stringify({ + level, + message, + context + }) + }).then((result) => { + if (!result.ok) { + console.warn("Logging to Strigo failed", { result }); + } + }).catch((error) => { + console.warn("Logging to Strigo failed", { err: error }); + }); } - } - function popEventValue() { - try { - const initialState = getEventsStorageData(); - if (!initialState) { - throw new Error("Can't find events storage"); - } - const event = initialState.events.pop(); - window["localStorage" /* LOCAL_STORAGE */].setItem("strigoEvents" /* STRIGO_EVENTS */, JSON.stringify(initialState)); - return event; - } catch (error) { - LoggerInstance.error("Pop event from storage error", { error }); - return null; + logToConsole(level, message, context) { + const enrichedMessage = `${new Date().toISOString()} - ${message}`; + const parsedContext = context.err instanceof Error ? { ...context, err: { message: context.err.message, name: context.err.name, stack: context.err.stack } } : context; + console[level](enrichedMessage, context ? ` +${JSON.stringify(parsedContext)}` : ""); } - } - function getEventValue() { - try { - const initialState = getEventsStorageData(); - if (!initialState) { - throw new Error("Can't find events storage"); + getDefaultContext() { + const config = getConfig(); + if (!config) { + return {}; } - return initialState.events.pop(); - } catch (error) { - LoggerInstance.error("Get event from storage error", { error }); - return null; + const { user, subDomain, initSite, development, version, selectedWidgetFlavor } = config; + return { + token: user?.token.token, + initSite: initSite?.href, + subDomain, + development, + version, + selectedWidgetFlavor + }; } - } - function clearEventsStorage() { - try { - window["localStorage" /* LOCAL_STORAGE */].removeItem("strigoEvents" /* STRIGO_EVENTS */); - } catch (error) { - LoggerInstance.error("Clear events storage error", { error }); + log(level, message, context) { + const enrichedContext = { ...this.getDefaultContext(), ...context }; + try { + if (this.url && !getConfig()?.development) { + this.logToRemote(level, message, enrichedContext); + } + this.logToConsole(level, `Academy - ${message}`, enrichedContext); + } catch (err) { + console.log("Logging error:", { err }); + } } - } - - // src/modules/assessments-storage/assessments-storage.ts - function getAssessmentsStorageData() { - try { - return JSON.parse(window["localStorage" /* LOCAL_STORAGE */].getItem("strigoAssessments" /* STRIGO_ASSESSMENTS */)); - } catch (error) { - LoggerInstance.error("Get assessments storage error", { error }); - return null; + debug(message, context = {}) { + this.log("debug", message, context); } - } - function init3() { - try { - const currentAssessmentsStorage = getAssessmentsStorageData(); - if (currentAssessmentsStorage) { - LoggerInstance.debug("Assessments storage already exists"); - return currentAssessmentsStorage; - } - const strigoAssessments = { assessments: [] }; - window["localStorage" /* LOCAL_STORAGE */].setItem("strigoAssessments" /* STRIGO_ASSESSMENTS */, JSON.stringify(strigoAssessments)); - return strigoAssessments; - } catch (error) { - LoggerInstance.error("Init assessments storage error", { error }); - return null; + info(message, context = {}) { + this.log("info", message, context); } - } - function setup3(initialStorage) { - try { - const strigoAssessments = initialStorage ? { assessments: [...initialStorage] } : { assessments: [] }; - window["localStorage" /* LOCAL_STORAGE */].setItem("strigoAssessments" /* STRIGO_ASSESSMENTS */, JSON.stringify(strigoAssessments)); - return strigoAssessments; - } catch (error) { - LoggerInstance.error("Assessments storage setup error", { error }); - return null; + warn(message, context = {}) { + this.log("warn", message, context); } - } - function clearAssessmentStorage() { - try { - window["localStorage" /* LOCAL_STORAGE */].removeItem("strigoAssessments" /* STRIGO_ASSESSMENTS */); - } catch (error) { - LoggerInstance.error("Clear assessments storage error", { error }); + error(message, context = {}) { + this.log("error", message, context); } - } + }; + var LoggerInstance = new Logger(); - // src/modules/assessment-recorder/assessment-recorder.ts - var import_html2canvas = __toESM(require_html2canvas(), 1); + // src/strigo/consts.ts + var INIT_SCRIPT_ID = "strigo-sdk"; + var BASE_STRIGO_URL = "strigo.io"; + var LOCAL_STRIGO_URL = "localhost:3000"; + var STRIGO_IFRAME_CLASSES = ["strigo-exercises"]; + var ORIGINAL_WEBSITE_IFRAME_CLASSES = ["orig-iframe"]; + var ACADEMY_HAT = ` + +`; + var CDN_BASE_PATH = "https://cdn.jsdelivr.net/gh/strigo/strigo-sdk"; + var ASSESSMENT_RECORDER_URL = "https://assessment-recorder.web.app"; // src/modules/document/document.ts function getHeadElement() { @@ -11824,8 +11578,111 @@ ${JSON.stringify(parsedContext)}` : ""); rootDocument.addEventListener("mouseout", this.removeClickListenerFromHoveredElement); } + // src/modules/url/url.ts + var STRIGO_CHILD_IFRAME_PARAM = "strigoChildIframe"; + function paramsToObject(entries) { + const result = {}; + for (const [key, value] of entries) { + result[key] = value; + } + return result; + } + function extractUrlParams(search) { + const urlParams = new URLSearchParams(search); + const entries = urlParams.entries(); + return paramsToObject(entries); + } + function getUrlData() { + const { host, pathname, href, origin, search } = window.location; + return { + host, + pathName: pathname, + href, + origin, + search, + params: extractUrlParams(search) + }; + } + function generateStrigoIframeURL(config) { + const { subDomain, user, webApiKey, development } = config; + return development ? `http://${LOCAL_STRIGO_URL}/academy/courses?token=${user.token.token}&webApiKey=${webApiKey}` : `https://${subDomain}.${BASE_STRIGO_URL}/academy/courses?token=${user.token.token}&webApiKey=${webApiKey}`; + } + function generateStrigoChildIframeURL(url) { + const currentUrl = new URL(url); + currentUrl.searchParams.set(STRIGO_CHILD_IFRAME_PARAM, "true"); + return currentUrl.toString(); + } + function isStrigoChildIframe() { + return window.location.search.includes(STRIGO_CHILD_IFRAME_PARAM); + } + function removeStrigoChildIframeParam() { + const url = new URL(window.location.href); + const searchParams = new URLSearchParams(url.search); + searchParams.delete(STRIGO_CHILD_IFRAME_PARAM); + url.search = searchParams.toString(); + window.history.replaceState(window.history.state, "", url); + } + function extractInitScriptParams() { + const initScript = document.getElementById(INIT_SCRIPT_ID); + return { + webApiKey: initScript?.getAttribute("data-web-api-key") || "", + subDomain: initScript?.getAttribute("data-subdomain") || "", + selectedWidgetFlavor: initScript?.getAttribute("data-layout-flavor") || "dynamic" /* DYNAMIC */ + }; + } + function generateCssURL(development, version) { + if (development) { + return `http://localhost:${"7005"}/styles/strigo.css`; + } + if (version) { + return `${CDN_BASE_PATH}@${version}/dist/production/styles/strigo.min.css`; + } + return `${CDN_BASE_PATH}@master/dist/production/styles/strigo.min.css`; + } + function generateWidgetCssURL(development, version) { + if (development) { + return `http://localhost:${"7005"}/styles/strigo-widget.css`; + } + if (version) { + return `${CDN_BASE_PATH}@${version}/dist/production/styles/strigo-widget.min.css`; + } + return `${CDN_BASE_PATH}@master/dist/production/styles/strigo-widget.min.css`; + } + function generateRecorderCssURL(development, version) { + if (development) { + return `http://localhost:${"7005"}/styles/strigo-assessment-recorder.css`; + } + if (version) { + return `${CDN_BASE_PATH}@${version}/dist/production/styles/strigo-assessment-recorder.min.css`; + } + return `${CDN_BASE_PATH}@master/dist/production/styles/strigo-assessment-recorder.min.css`; + } + function generateAssessmentRecorderURL(development) { + return development ? `http://localhost:${"7015"}` : ASSESSMENT_RECORDER_URL; + } + function isRecordingUrlParamExists() { + const { search } = window.location; + const urlParams = extractUrlParams(search); + return "strigoAssessmentRecorder" in urlParams; + } + function isDevelopment() { + const { search } = window.location; + const urlParams = extractUrlParams(search); + return "development" in urlParams; + } + // src/modules/assessment-recorder/assessment-recorder.ts + function isRecordingMode() { + if (isRecordingUrlParamExists() || window.sessionStorage.getItem("isStrigoRecordingMode")) { + return true; + } + return false; + } function addAssessmentRecorderIframe(development) { + window.sessionStorage.setItem("isStrigoRecordingMode", "true"); + if (document.getElementById("strigo-assessment-recorder-iframe")) { + return; + } const assessmentRecorderUrl = generateAssessmentRecorderURL(development); appendCssFile({ parentElement: getHeadElement(), url: generateRecorderCssURL(development) }); const assessmentRecorderIframe = appendIFrame({ @@ -11876,6 +11733,7 @@ ${JSON.stringify(parsedContext)}` : ""); break; } case "submit-assessment" /* SUBMIT_ASSESSMENT */: { + window.sessionStorage.removeItem("isStrigoRecordingMode"); window.opener.postMessage(JSON.stringify({ assessment: { ...payload.assessment, @@ -11886,6 +11744,7 @@ ${JSON.stringify(parsedContext)}` : ""); break; } case "cancel-assessment" /* CANCEL_ASSESSMENT */: { + window.sessionStorage.removeItem("isStrigoRecordingMode"); window.close(); break; } @@ -11896,6 +11755,159 @@ ${JSON.stringify(parsedContext)}` : ""); }, false); } + // src/modules/session/session.ts + function setup2(initialSession) { + const session = setupStorage("sessionStorage" /* SESSION_STORAGE */, "strigoSession" /* STRIGO_SESSION */, initialSession); + return session; + } + function getSession() { + const session = getStorageData("sessionStorage" /* SESSION_STORAGE */, "strigoSession" /* STRIGO_SESSION */); + return session; + } + function isPanelOpen() { + return getSession()?.isPanelOpen; + } + function getWidgetFlavor() { + return getSession()?.widgetFlavor; + } + function setSessionValue(key, value) { + const session = setStorageValue("sessionStorage" /* SESSION_STORAGE */, "strigoSession" /* STRIGO_SESSION */, key, value); + return session; + } + function getSessionValue(key) { + const session = getSession(); + return session?.[key]; + } + function clearSession() { + clearStorage("sessionStorage" /* SESSION_STORAGE */, "strigoSession" /* STRIGO_SESSION */); + } + + // src/modules/events-storage/events-storage.ts + function getEventsStorageData() { + try { + return JSON.parse(window["localStorage" /* LOCAL_STORAGE */].getItem("strigoEvents" /* STRIGO_EVENTS */)); + } catch (error) { + LoggerInstance.error("Get events storage error", { error }); + return null; + } + } + function init2() { + try { + const currentEventsStorage = getEventsStorageData(); + if (currentEventsStorage) { + LoggerInstance.debug("Events storage already exists"); + return currentEventsStorage; + } + const storageEvents = { events: [] }; + window["localStorage" /* LOCAL_STORAGE */].setItem("strigoEvents" /* STRIGO_EVENTS */, JSON.stringify(storageEvents)); + return storageEvents; + } catch (error) { + LoggerInstance.error("Init events storage error", { error }); + return null; + } + } + function pushEventValue(event) { + try { + const initialState = getEventsStorageData(); + if (!initialState) { + throw new Error("Can't find initial state"); + } + const prev = JSON.stringify(initialState); + initialState.events.push(event); + window["localStorage" /* LOCAL_STORAGE */].setItem("strigoEvents" /* STRIGO_EVENTS */, JSON.stringify(initialState)); + if (getWidgetFlavor() === "overlay" /* OVERLAY */) { + const customEvent = new CustomEvent("overlay-widget-event" /* OVERLAY_WIDGET_EVENT */, { + bubbles: true, + detail: { + key: "strigoEvents", + oldValue: prev, + newValue: JSON.stringify(initialState) + } + }); + window.dispatchEvent(customEvent); + } + return initialState; + } catch (error) { + LoggerInstance.error("Push event to storage error", { error }); + return null; + } + } + function popEventValue() { + try { + const initialState = getEventsStorageData(); + if (!initialState) { + throw new Error("Can't find events storage"); + } + const event = initialState.events.pop(); + window["localStorage" /* LOCAL_STORAGE */].setItem("strigoEvents" /* STRIGO_EVENTS */, JSON.stringify(initialState)); + return event; + } catch (error) { + LoggerInstance.error("Pop event from storage error", { error }); + return null; + } + } + function getEventValue() { + try { + const initialState = getEventsStorageData(); + if (!initialState) { + throw new Error("Can't find events storage"); + } + return initialState.events.pop(); + } catch (error) { + LoggerInstance.error("Get event from storage error", { error }); + return null; + } + } + function clearEventsStorage() { + try { + window["localStorage" /* LOCAL_STORAGE */].removeItem("strigoEvents" /* STRIGO_EVENTS */); + } catch (error) { + LoggerInstance.error("Clear events storage error", { error }); + } + } + + // src/modules/assessments-storage/assessments-storage.ts + function getAssessmentsStorageData() { + try { + return JSON.parse(window["localStorage" /* LOCAL_STORAGE */].getItem("strigoAssessments" /* STRIGO_ASSESSMENTS */)); + } catch (error) { + LoggerInstance.error("Get assessments storage error", { error }); + return null; + } + } + function init3() { + try { + const currentAssessmentsStorage = getAssessmentsStorageData(); + if (currentAssessmentsStorage) { + LoggerInstance.debug("Assessments storage already exists"); + return currentAssessmentsStorage; + } + const strigoAssessments = { assessments: [] }; + window["localStorage" /* LOCAL_STORAGE */].setItem("strigoAssessments" /* STRIGO_ASSESSMENTS */, JSON.stringify(strigoAssessments)); + return strigoAssessments; + } catch (error) { + LoggerInstance.error("Init assessments storage error", { error }); + return null; + } + } + function setup3(initialStorage) { + try { + const strigoAssessments = initialStorage ? { assessments: [...initialStorage] } : { assessments: [] }; + window["localStorage" /* LOCAL_STORAGE */].setItem("strigoAssessments" /* STRIGO_ASSESSMENTS */, JSON.stringify(strigoAssessments)); + return strigoAssessments; + } catch (error) { + LoggerInstance.error("Assessments storage setup error", { error }); + return null; + } + } + function clearAssessmentStorage() { + try { + window["localStorage" /* LOCAL_STORAGE */].removeItem("strigoAssessments" /* STRIGO_ASSESSMENTS */); + } catch (error) { + LoggerInstance.error("Clear assessments storage error", { error }); + } + } + // node_modules/split.js/dist/split.es.js var global2 = typeof window !== "undefined" ? window : null; var ssr = global2 === null; @@ -12806,10 +12818,9 @@ ${JSON.stringify(parsedContext)}` : ""); // src/strigo.sdk.ts window.Strigo = Strigo; - if (isInRecordingMode()) { - console.log("In recording mode"); + if (isRecordingMode()) { + LoggerInstance.info("Strigo recorder mode"); const development = isDevelopment(); - console.log({ development }); window.Strigo.assessmentRecorder(development); } else { window.Strigo.init(); diff --git a/src/modules/assessment-recorder/assessment-recorder.ts b/src/modules/assessment-recorder/assessment-recorder.ts index ad06c43..ba69825 100644 --- a/src/modules/assessment-recorder/assessment-recorder.ts +++ b/src/modules/assessment-recorder/assessment-recorder.ts @@ -3,7 +3,7 @@ import html2canvas from 'html2canvas'; import { Logger } from '../../services/logger'; import { appendCssFile, appendIFrame, getHeadElement } from '../document/document'; import { getElementSelector } from '../element-selector/element-selector'; -import { generateAssessmentRecorderURL, generateRecorderCssURL } from '../url/url'; +import { generateAssessmentRecorderURL, generateRecorderCssURL, isRecordingUrlParamExists } from '../url/url'; import { AssessmentRecorderMessage, @@ -12,7 +12,22 @@ import { SelectedElement, } from './assessment-recorder.types'; +export function isRecordingMode(): boolean { + + if (isRecordingUrlParamExists() || window.sessionStorage.getItem('isStrigoRecordingMode')) { + return true; + } + + return false; +} + export function addAssessmentRecorderIframe(development: boolean): void { + window.sessionStorage.setItem('isStrigoRecordingMode', 'true'); + + if (document.getElementById('strigo-assessment-recorder-iframe')) { + return; + } + const assessmentRecorderUrl = generateAssessmentRecorderURL(development); appendCssFile({ parentElement: getHeadElement(), url: generateRecorderCssURL(development) }); const assessmentRecorderIframe = appendIFrame({ @@ -80,6 +95,7 @@ export function addAssessmentRecorderIframe(development: boolean): void { } case ASSESSMENT_RECORDER_MESSAGE_TYPES.SUBMIT_ASSESSMENT: { + window.sessionStorage.removeItem('isStrigoRecordingMode'); window.opener.postMessage( JSON.stringify({ assessment: { @@ -95,6 +111,7 @@ export function addAssessmentRecorderIframe(development: boolean): void { } case ASSESSMENT_RECORDER_MESSAGE_TYPES.CANCEL_ASSESSMENT: { + window.sessionStorage.removeItem('isStrigoRecordingMode'); window.close(); break; @@ -107,6 +124,4 @@ export function addAssessmentRecorderIframe(development: boolean): void { }, false ); - - // Listen to messages } diff --git a/src/modules/session/session.types.ts b/src/modules/session/session.types.ts index 5c46f67..206aa61 100644 --- a/src/modules/session/session.types.ts +++ b/src/modules/session/session.types.ts @@ -4,4 +4,5 @@ export interface StrigoSession { isPanelOpen: boolean; isLoading?: boolean; widgetFlavor: WIDGET_FLAVORS; + isRecordingMode?: boolean; } diff --git a/src/modules/url/url.ts b/src/modules/url/url.ts index 167ef54..6683a6c 100644 --- a/src/modules/url/url.ts +++ b/src/modules/url/url.ts @@ -119,7 +119,7 @@ export function generateAssessmentRecorderURL(development:boolean): string { : ASSESSMENT_RECORDER_URL } -export function isInRecordingMode(): boolean { +export function isRecordingUrlParamExists(): boolean { const { search } = window.location; const urlParams = extractUrlParams(search); diff --git a/src/strigo.sdk.ts b/src/strigo.sdk.ts index 4bbde53..5792aba 100644 --- a/src/strigo.sdk.ts +++ b/src/strigo.sdk.ts @@ -1,12 +1,13 @@ +import { isRecordingMode } from './modules/assessment-recorder/assessment-recorder'; import * as urlTools from './modules/url/url'; +import { Logger } from './services/logger'; import { Strigo } from './strigo'; window.Strigo = Strigo; -if (urlTools.isInRecordingMode()) { - console.log('In recording mode'); +if (isRecordingMode()) { + Logger.info('Strigo recorder mode') const development = urlTools.isDevelopment(); - console.log({ development }); window.Strigo.assessmentRecorder(development); } else { window.Strigo.init();