{"version":3,"file":"static/js/index.7256a024.js","sources":["webpack://@jotforminc/form-widgets/../../libs/router-bridge/src/init.js","webpack://@jotforminc/form-widgets/../../cdns/for-custom-widgets/src/index.js","webpack://@jotforminc/form-widgets/../../libs/widgets-js-sdk/src/customfield/customWidget.js","webpack://@jotforminc/form-widgets/../../libs/widgets-js-sdk/src/customfield/language.js","webpack://@jotforminc/form-widgets/../../libs/widgets-js-sdk/src/customfield/utils.js","webpack://@jotforminc/form-widgets/./src/routes.js","webpack://@jotforminc/form-widgets/./src/index.js","webpack://@jotforminc/form-widgets/./src/App.js","webpack://@jotforminc/form-widgets/../../libs/router-bridge/src/jfrouter.js","webpack://@jotforminc/form-widgets/../../libs/widgets-js-sdk/src/utils/postmessage.js"],"sourcesContent":["import { getAssetPath } from './index';\n\n// eslint-disable-next-line no-undef, camelcase\n__webpack_public_path__ = `${getAssetPath()}/`;\n","import {\n createWidgetTranslations, createCustomWidget, createWidgetUtils, injectPostMessage\n} from '@jotforminc/widgets-js-sdk';\n\ninjectPostMessage();\n\nconst JFCustomWidget = createCustomWidget();\nconst JFWidgetTranslation = createWidgetTranslations();\nconst JFCustomWidgetUtils = createWidgetUtils();\n\nwindow.JFCustomWidget = JFCustomWidget;\nwindow.JFWidgetTranslation = JFWidgetTranslation;\nwindow.JFCustomWidgetUtils = JFCustomWidgetUtils;\n\nexport default {\n JFWidgetTranslation,\n JFCustomWidget,\n JFCustomWidgetUtils\n};\n","/* eslint-disable no-param-reassign */\n/* eslint-disable */\n/**\n * JotFormCustomWidget.js 1.5.1\n *\n * (c) 2013 JotForm Easiest Form Builder\n */\nimport WebFont from 'webfontloader';\nimport DOMPurify from 'dompurify';\n\n\nconst createCustomWidget = () => {\nconst JFCustomWidget = (function () {\n var subscribeToken = -1;\n var subscriberIndex = {};\n var builderFrameHeight = 600;\n var builderFrameWidth = 914;\n var _readyState = false;\n var widgetSettings = false;\n var parentOrigin = false;\n var widgetData = {};\n var enterprise = false;\n var libraries = {\n callback: false,\n list: [],\n options: {\n parallel: false,\n onLoad: function () {}\n }\n };\n\n function getQuerystring(key, default_) {\n if (default_ === null) default_ = '';\n\n key = key.replace(/[\\[]/, '\\\\\\[').replace(/[\\]]/, '\\\\\\]');\n var regex = new RegExp(`[\\\\?&]${key}=([^&#]*)`);\n var qs = regex.exec(window.location.href);\n if (qs === null) return default_;\n return decodeURIComponent(qs[1]);\n }\n\n var root = {\n texts: {},\n formID: -1,\n questionID: getQuerystring('qid')\n };\n\n var refQuery = getQuerystring('ref');\n var REFERER = decodeURIComponent(refQuery);\n\n // for oEmbed widgets referrer\n if (!refQuery || typeof refQuery === 'undefined') {\n // qid of oEmbed are attached on hash ref url\n if (typeof getQuerystring('qid') === 'undefined') {\n var hashQuery = document.location.hash.replace(/^#/, '');\n var indexSlash = hashQuery.lastIndexOf('/');\n\n // change ref url\n REFERER = decodeURIComponent(hashQuery.substr(0, indexSlash));\n\n // change qid\n root.questionID = Number(hashQuery.substr(indexSlash + 1));\n }\n }\n\n window.XD.receiveMessage(message => {\n // ignore this braintree message\n if ('data' in message && message.data && ((typeof message.data !== 'string') || (typeof message.data === 'string' && (message.data.indexOf('/*framebus*/') > -1 || message.data.indexOf('webpackHotUpdate') > -1)))) {\n return;\n }\n\n var data = JSON.parse(message.data);\n\n switch (data.type) {\n case 'ready':\n // if(_readyState) {\n // console.log(\"should enter here 1 time actually\");\n // }\n if (_readyState) {\n // console.log(\"should not publish ready again for\", data.qid);\n return false;\n }\n\n // if fontfamily present, setup font\n if (data.fontFamily && data.fontFamily.length > 0) {\n setupFont(data.fontFamily);\n }\n\n // pass enterprise domain\n if (data.enterprise) {\n enterprise = data.enterprise;\n }\n\n // if settings present, setup settings\n if (data.settings && !widgetSettings) {\n widgetSettings = data.settings;\n // remove settings to be exposed on ready callback\n delete data.settings;\n }\n\n // set origin from parent\n if ('origin' in data) {\n parentOrigin = data.origin;\n delete data.origin;\n }\n\n\n // readystate now set\n _readyState = true;\n\n // register current widget data from form\n widgetData = data;\n\n if ((data.themeVersion === 'v2' || data.isExtendedTheme) && !isFromCardform()) {\n appendNewDefaultThemeCss();\n }\n\n // setup css when ready\n // custom css should override default css\n setupCSS();\n\n // publish\n // before publishing, load libs if set\n loadPendingLibraries(() => {\n // on card forms wait for the general css to be loaded before firing event\n if (data.cardform === true) {\n appendCardFormWidgetCss(data.formID, data.widgetID, () => {\n root.publish('ready', data);\n });\n } else {\n root.publish('ready', data);\n }\n });\n break;\n case 'settings':\n // if settings present, setup settings\n if (data.settings && !widgetSettings) {\n widgetSettings = data.settings;\n }\n break;\n case 'event:receiver':\n // console.log(\"event:receiver triggered\", data);\n if ('isWidget' in data && data.isWidget) {\n root.publish(`event:emitter:${data.targetQID}`, data);\n } else {\n root.publish(`event:emitter:${data.eventID}`, data);\n }\n break;\n case 'formstrings':\n // set formTexts to be use by widgets\n if ('formTexts' in data && Object.keys(root.texts).length < 1) {\n root.texts = data.formTexts;\n }\n break;\n case 'widgetclear':\n root.publish('clear', data);\n break;\n case 'widgetpopulate':\n root.publish('populate', data);\n break;\n case 'widgetshift':\n root.publish('shift', data);\n break;\n case 'show':\n root.publish('show', data);\n break;\n case 'reload':\n if ('reload' in window.location) {\n window.location.reload();\n }\n break;\n case 'disable':\n root.publish('disable', data);\n break;\n\n case 'submit':\n var isNext = false;\n if ('method' in data && data.method === 'next') {\n isNext = true;\n root.publish('next');\n }\n root.publish('submit', isNext);\n break;\n case 'save':\n root.publish('save', data);\n break;\n case 'style':\n root.publish('style', data);\n break;\n case 'frameresize':\n root.publish('frameresize', data);\n break;\n case 'translatable':\n // set form ID\n root.formID = data.formID;\n root.publish('translatable', data);\n break;\n case 'translate':\n root.publish('translate', data);\n break;\n case 'theme':\n if ((data.themeVersion === 'v2' || data.isExtendedTheme) && !isFromCardform()) {\n appendNewDefaultThemeCss();\n }\n break;\n case 'reset':\n root.publish('reset', data);\n break;\n default:\n break;\n }\n }, REFERER);\n\n\n\n function publish() {\n // type of event is the first argument\n var type = arguments[0];\n // rest of arguments will be used as arguments for handler execution\n var args = [].slice.call(arguments, 1);\n if (!subscriberIndex[type]) {\n return false;\n }\n var subscribers = subscriberIndex[type];\n var len = subscribers ? subscribers.length : 0;\n while (len--) {\n subscribers[len].func(args[0]);\n }\n }\n\n function handleSubscribe(type, handler, options) {\n if (type === 'submit' && subscriberIndex[type] !== undefined) {\n subscriberIndex[type].pop();\n }\n\n if (!subscriberIndex[type]) {\n subscriberIndex[type] = [];\n }\n\n var token = (++subscribeToken).toString();\n if(options?.immediateCall) {\n if(_readyState) {\n return handler(widgetData);\n }\n }\n subscriberIndex[type].push({\n func: handler,\n token: token\n });\n\n return token;\n }\n\n function subscribe(type, handler, options) {\n // support for multi events\n if (~type.indexOf(' ')) {\n var events = type.split(' ');\n var tokens = [];\n for (var x = 0; x < events.length; x++) {\n var token = handleSubscribe(events[x], handler, options);\n tokens.push(token);\n }\n\n return tokens;\n }\n\n return handleSubscribe(type, handler, options);\n }\n\n function unsubscribe(token) {\n for (var type in subscriberIndex) {\n var subscribers = subscriberIndex[type];\n for (var i = 0; i < subscribers.length; i++) {\n var subscriber = subscribers[i];\n if (token === subscriber.token) {\n subscribers.splice(i, 1);\n return token;\n }\n }\n }\n return root;\n }\n\n function sendData(data) {\n // do not send data if inside builder\n if (isWidgetOnBuilder()) {\n return false;\n }\n\n data.type = 'data';\n data.qid = root.questionID;\n sendMessage(data);\n }\n\n function sendCalcValue(data) {\n // do not send data if inside builder\n if (isWidgetOnBuilder()) {\n return false;\n }\n\n data.type = 'calcvalue';\n data.qid = root.questionID;\n sendMessage(data);\n }\n\n function sendTranslatables(data) {\n // send data if inside builder\n if (isWidgetOnBuilder()) {\n var translatables = {\n type: 'translation',\n qid: root.questionID,\n formID: root.formID,\n data: data\n };\n sendMessage(translatables);\n }\n }\n\n function sendSubmit(data) {\n // do not send data if inside builder\n if (isWidgetOnBuilder()) {\n return false;\n }\n\n // console.log(\"submit msg arrived to widget\", root.questionID);\n data.type = 'submit';\n data.qid = root.questionID;\n sendMessage(data);\n }\n\n function sendSave(data) {\n sendMessage(data);\n }\n\n function sendDisableOrEnableButtons(data) {\n // do not send data if inside builder\n if (isWidgetOnBuilder()) {\n return false;\n }\n data.qid = root.questionID;\n sendMessage(data);\n }\n\n function clearWidgetFields() {\n var inputs = document.querySelectorAll('input');\n var selects = document.querySelectorAll('select');\n\n inputs.forEach(input => {\n if (input.type === 'radio' || input.type === 'checkbox') {\n input.checked = false;\n } else if (input.type !== 'button') {\n input.value = '';\n }\n });\n\n selects.forEach(select => {\n select.selectedIndex = -1;\n });\n }\n\n function sendReady(data) {\n data.type = 'ready';\n sendMessage(data);\n }\n\n function requestFrameResize(data) {\n data.type = 'size';\n data.qid = root.questionID;\n sendMessage(data);\n }\n\n function setFrameStyles(styles) {\n sendMessage({\n type: 'styles',\n qid: root.questionID,\n styles: styles || {}\n });\n }\n\n function detectFrameMovement(callback) {\n var eventID = uniqid();\n sendMessage({\n eventID: eventID,\n type: 'frame:move',\n qid: root.questionID\n });\n subscribe(`event:emitter:${eventID}`, callback);\n }\n\n function getFrameData(callback) {\n var eventID = uniqid();\n sendMessage({\n type: 'frame:getdata',\n eventID: eventID,\n qid: root.questionID\n });\n subscribe(`event:emitter:${eventID}`, callback);\n }\n\n function storeToField(field, value, callback) {\n // send message through postmessage\n var hasCallback = (typeof callback !== 'undefined') ? true : false;\n var eventID = uniqid();\n sendMessage({\n eventID: eventID,\n type: 'event:store',\n field: field,\n value: value,\n qid: root.questionID,\n hasCallback: hasCallback\n });\n\n // subscribe if callback is present\n if (hasCallback) {\n var subToken = subscribe(`event:emitter:${eventID}`, obj => {\n callback(obj.value);\n\n // unsubscribe after use\n unsubscribe(subToken);\n });\n }\n }\n\n function setFieldsValue(fields, identifier) {\n sendMessage({\n type: 'fields:fill',\n fields: fields,\n qid: root.questionID,\n identifier: identifier || ''\n });\n }\n\n function clearFields(fields) {\n sendMessage({\n type: 'fields:clear',\n fields: fields,\n qid: root.questionID\n });\n }\n\n function getFieldsValue(fields, identifier, callback) {\n var eventID = uniqid();\n sendMessage({\n fields: fields,\n type: 'fields:capture',\n eventID: eventID,\n identifier: identifier,\n qid: root.questionID\n });\n\n subscribe(`event:emitter:${eventID}`, callback);\n }\n\n function getFieldsValueById(fields, callback) {\n getFieldsValue(fields, 'id', callback);\n }\n\n function getFieldsValueByName(fields, callback) {\n getFieldsValue(fields, 'name', callback);\n }\n\n function getFormTrackerID(callback) {\n var eventID = uniqid();\n sendMessage({\n type: 'form:trackerID',\n eventID: eventID,\n qid: root.questionID\n });\n\n subscribe(`event:emitter:${eventID}`, callback);\n }\n\n function setFieldsValueByLabel(fields) {\n setFieldsValue(fields, 'label');\n }\n\n function setFieldsValueById(fields) {\n setFieldsValue(fields, 'id');\n }\n\n function fieldListener(data, callback) {\n var eventID = uniqid();\n data.eventID = eventID;\n data.type = 'event:listener';\n data.qid = root.questionID;\n sendMessage(data);\n\n // subscribe if callback is present\n if (typeof callback !== 'undefined') {\n subscribe(`event:emitter:${eventID}`, callback);\n // console.log(\"Subscribed to event:emitter:\" + eventID, data);\n }\n }\n\n function listenFromField(field, event, callback) {\n fieldListener({\n field: field,\n event: event\n }, result => {\n callback && callback(result.value);\n });\n }\n\n // TODO improve store from widget to widget\n function listenFromWidget(field, callback) {\n // subscribe if callback is present\n if (typeof callback !== 'undefined') {\n subscribe(`event:emitter:${root.questionID}`, result => {\n // console.log(\"Got a value from a widget\", result);\n callback(result.value);\n });\n // console.log(\"Subscribed to event:emitter:\" + root.questionID);\n }\n }\n\n function removeSubmittedFrame() {\n var data = {\n type: 'submit:frame:remove',\n qid: root.questionID\n };\n\n sendMessage(data);\n }\n\n function setupLibraries(libs, options) {\n // if its a function, assign the libs later\n if (typeof libs === 'function') {\n libraries.callback = libs;\n } else {\n assignPreLibraries(libs);\n }\n\n if (typeof options !== 'undefined') {\n libraries.options = { ...libraries.options, ...options };\n }\n\n return root;\n }\n\n function assignPreLibraries(libs) {\n if (typeof libs === 'string') {\n libs = [libs];\n }\n\n // make sure its array\n if (Object.prototype.toString.call(libs) !== '[object Array]') {\n libs = [];\n }\n\n if (libs.length > 0) {\n for (var x = 0; x < libs.length; x++) {\n libraries.list.push(libs[x]);\n }\n }\n }\n\n function hasLibrariesPending() {\n return libraries.list.length > 0;\n }\n\n function loadPendingLibraries(callback) {\n // if library callback is available set it\n if (typeof libraries.callback === 'function') {\n var libs = libraries.callback(getWidgetSettings());\n assignPreLibraries(libs);\n\n // set this callback to false\n libraries.callback = false;\n }\n\n if (hasLibrariesPending()) {\n var isParallel = ('parallel' in libraries.options && !!libraries.options.parallel);\n // make parallel request if theres moe than 1 lib\n isParallel = (isParallel && libraries.list.length > 1) ? true : false;\n if (!isParallel) {\n // console.log(\"Loading libraries in non parallel...\");\n // process libs\n var lib = libraries.list.shift();\n // console.log(\"Loading lib...\", lib);\n JFCustomWidgetUtils.loadJS(lib, loadedLink => {\n if (typeof libraries.options.onLoad === 'function') {\n libraries.options.onLoad(loadedLink);\n }\n\n // get the next lib\n loadPendingLibraries(callback);\n });\n } else {\n // load js in parallel\n // console.log(\"Loading libraries in parallel...\");\n var loadedFiles = [];\n for (var y = 0; y < libraries.list.length; y++) {\n var lib = libraries.list[y];\n // console.log(\"Loading lib...\", lib);\n JFCustomWidgetUtils.loadJS(lib, loadedLink => {\n if (typeof libraries.options.onLoad === 'function') {\n libraries.options.onLoad(loadedLink);\n }\n\n // mark file\n loadedFiles.push(loadedLink);\n\n // check if all files has been loaded\n if (loadedFiles.length === libraries.list.length) {\n callback && callback();\n }\n });\n }\n }\n } else {\n callback && callback();\n }\n }\n\n function hideWidgetContainer() {\n var data = {\n qid: root.questionID,\n type: 'field:hide'\n };\n sendMessage(data);\n }\n\n function makeInvisibleWidgetContainer() {\n var data = {\n qid: root.questionID,\n type: 'field:invisible'\n };\n sendMessage(data);\n }\n\n function resetWidgetContainer() {\n var data = {\n qid: root.questionID,\n type: 'reset'\n };\n sendMessage(data);\n }\n\n function showWidgetContainer() {\n var data = {\n qid: root.questionID,\n type: 'field:show'\n };\n sendMessage(data);\n }\n\n function replaceWidget(widget) {\n var data = {\n qid: root.questionID,\n type: 'replace',\n inputType: widget.type,\n mobile: widget.isMobile || false,\n required: ('required' in widget && widget.required)\n };\n sendMessage(data);\n }\n\n /**\n * Show an error to the form\n * @param {[string]} msg [the error msg]\n */\n function showWidgetError(msg, resetForm) {\n sendMessage({\n type: 'errors',\n qid: root.questionID,\n action: 'show',\n msg: msg,\n resetForm: resetForm || false\n });\n\n root.sendSubmit({\n valid: false,\n value: ''\n });\n\n return root;\n }\n\n /**\n * Hide an error from the form\n */\n function hideWidgetError() {\n sendMessage({\n type: 'errors',\n qid: root.questionID,\n action: 'hide'\n });\n\n return root;\n }\n\n /**\n * Show an error to the form and enable form button back\n * @param {[string]} msg [the error msg]\n */\n function showWidgetErrorAndResetForm(msg) {\n return showWidgetError(msg, true);\n }\n\n /**\n * Makes the entire question required\n */\n function makeWidgetRequired() {\n sendMessage({\n type: 'required',\n qid: root.questionID,\n action: 'set'\n });\n }\n\n /**\n * Makes the entire question not required\n */\n function makeWidgetNotRequired() {\n sendMessage({\n type: 'required',\n qid: root.questionID,\n action: 'unset'\n });\n }\n\n /**\n * Gets the current widget data - from form\n */\n function getWidgetData() {\n return widgetData;\n }\n\n /**\n * Check if the widget is under cardforms\n */\n function isFromCardform() {\n return (widgetData && 'cardform' in widgetData && widgetData.cardform === true);\n }\n\n function sendMessage(msg) {\n window.XD.postMessage(JSON.stringify(msg), REFERER, parent);\n }\n\n function uniqid(prefix, more_entropy) {\n if (typeof prefix === 'undefined') {\n prefix = '';\n }\n var retId;\n var formatSeed = function (seed, reqWidth) {\n seed = parseInt(seed, 10).toString(16); // to hex str\n if (reqWidth < seed.length) {\n return seed.slice(seed.length - reqWidth);\n }\n if (reqWidth > seed.length) {\n return Array(1 + (reqWidth - seed.length)).join('0') + seed;\n }\n return seed;\n };\n if (!window.php_js) {\n window.php_js = {};\n }\n if (!window.php_js.uniqidSeed) {\n window.php_js.uniqidSeed = Math.floor(Math.random() * 0x75bcd15);\n }\n window.php_js.uniqidSeed++;\n retId = prefix;\n retId += formatSeed(parseInt(new Date().getTime() / 1000, 10), 8);\n retId += formatSeed(window.php_js.uniqidSeed, 5);\n if (more_entropy) {\n retId += (Math.random() * 10).toFixed(8).toString();\n }\n return retId;\n }\n\n function getAllQueryString() {\n var params = {};\n var i;\n var queryString = window.location.search.substring(1);\n\n if (queryString) {\n // Split into key/value pairs\n var queries = queryString.split('&');\n\n // Convert the array of strings into an object\n for (i = 0; i < queries.length; i++) {\n var temp = queries[i].split('=');\n params[temp[0]] = decodeURIComponent(temp[1]);\n }\n }\n\n return params;\n }\n\n /**\n * Get the widget settings by using specific key\n * this came from the ready message event\n */\n function getWidgetSetting(key, default_) {\n // if widget settings not set, get the settings from URI\n // using the original method\n if (!widgetSettings) {\n return getQuerystring(key, default_);\n }\n if (default_ === null) default_ = '';\n if (key === null) {\n return default_;\n }\n var settings = getWidgetSettings();\n return DOMPurify.sanitize(settings[key]);\n }\n\n /**\n * Get the widget settings\n * this came from the ready message event\n */\n function getWidgetSettings() {\n // if widget settings not set, get the settings from URI\n // using the original method\n if (!widgetSettings) {\n return getAllQueryString();\n }\n\n // decode the original data from encoded format: encodeURIComponent(JSON.stringify(data))\n var decodesettings = JSON.parse(decodeURIComponent(widgetSettings));\n var params = {};\n for (var x = 0; x < decodesettings.length; x++) {\n var obj = decodesettings[x];\n var value = (JFCustomWidgetUtils.isJsonString(obj.value)) ? JSON.parse(obj.value) : obj.value;\n params[obj.name] = (typeof value === 'string') ? DOMPurify.sanitize(value, {ADD_ATTR: ['target']}) : value;\n }\n\n // merge every other params from the URL, like qid, ref and some other parameters that identify a certain widget\n var urlParams = getAllQueryString();\n for (var u in urlParams) {\n params[u] = urlParams[u];\n }\n\n return params;\n }\n\n /**\n * Get the parent frame origin\n */\n function getParentOrigin() {\n return parentOrigin || '';\n }\n\n function getEnterprise() {\n return enterprise;\n }\n function appendCardFormWidgetCss(formID, widgetID, loaded) {\n if (!formID || !widgetID) {\n return; // Missing parameter\n }\n try {\n var isCSSExists = !!document.getElementById('cardform_widgets_css');\n if (!isCSSExists) {\n var time = new Date().getTime();\n var baseLink = (formID === '92891840837975') ? 'https://aysenur.jotform.pro' : 'https://cdn.jotfor.ms';\n var cssUrl = `${baseLink}/stylebuilder/${formID}.widgets.${widgetID}.css?v=${time}`;\n var params = window.location.search.split('?').join('');\n var isOfflineForms = params.indexOf('offline_forms=true') > -1 || params.indexOf('offline_forms=si') > -1;\n var isLocalFile = window && window.location && window.location.href && window.location.href.indexOf('file://') === 0;\n var isOnline = window && window.navigator && window.navigator.onLine;\n if (isOfflineForms && !isOnline && isLocalFile) {\n // if local file is in offline mode dont try to load css\n setTimeout(() => {\n loaded && loaded();\n }, 0);\n } else {\n JFCustomWidgetUtils.loadCSS(cssUrl, () => {\n loaded && loaded();\n\n // deprecated\n root.publish('cardform:widgetcss:active');\n }, 'cardform_widgets_css');\n }\n }\n\n var widgetClassName = `cardFormWidget_${widgetID}`;\n var generalClassName = 'card-form-widget';\n\n // Class toggle for modern browsers\n if (typeof document.body.classList === 'object' && typeof document.body.classList.contains === 'function') {\n if (!document.body.classList.contains(widgetClassName)) {\n document.body.classList.add(widgetClassName);\n document.body.classList.add(generalClassName);\n }\n } else if (typeof documeny.body.className === 'string' && document.body.className.indexOf(widgetClassName) === -1) {\n document.body.className += ` ${widgetClassName}`;\n document.body.className += ` ${generalClassName}`;\n }\n } catch (ex) {\n // debug here\n console.error(ex);\n }\n }\n\n function appendNewDefaultThemeCss() {\n try {\n // to inject new default theme css\n var widgetListArrForTestEnv = ['image-preview'];\n var widgetListArr = ['smooth-signature', 'terms-conditions', 'take-photo', 'multiple-text-fields', 'image-slider', 'date-picker', 'checklist', 'dynamic-textbox', 'terms-scroll-widget', 'image-preview', 'configurable-list', 'asm-select'];\n var devEnvUrl = '.jotform.pro';\n var cssId = 'new_default_theme_custom_css';\n var param = 'ndt=';\n var widgetType = document.body.getAttribute('data-type');\n // for safari browser\n var additionalCheck = document.location.search.indexOf('injectCSS=true');\n // for mobile application\n var params = new URLSearchParams(window.location.search);\n var isOfflineForms = params.get('offline_forms');\n\n function injectAction() {\n var isCSSExists = !!document.getElementById(cssId);\n\n if (document.querySelector('body')) {\n document.querySelector('body').setAttribute('data-theme', 'upcoming');\n }\n\n if (!isCSSExists) {\n var time = new Date().getTime();\n var cssUrl = `${isOfflineForms ? '.' : `https://cdn.jotfor.ms`}/themes/CSS/defaultV2.css?v=${time}`;\n\n if (document.referrer.indexOf(devEnvUrl) > -1) {\n var username = document.referrer.split('.jotform.pro')[0].split('://')[1];\n cssUrl = `${isOfflineForms ? '.' : `https://${username}.jotform.pro`}/themes/CSS/defaultV2.css?v=${time}`;\n }\n\n JFCustomWidgetUtils.loadCSS(cssUrl, () => {\n root.publish('loadNewDefaultThemeCss');\n console.log('New Default Theme custom CSS injected');\n }, 'new_default_theme_custom_css');\n }\n }\n\n if (\n document.referrer.indexOf(param) > -1\n || additionalCheck > -1\n || (widgetType && (widgetListArr.indexOf(widgetType) > -1))\n ) {\n injectAction();\n }\n\n if (\n document.referrer.indexOf(param) > -1\n && (widgetType && (widgetListArrForTestEnv.indexOf(widgetType) > -1))\n && document.querySelector('body')\n ) {\n document.querySelector('body').setAttribute('data-env', 'test');\n }\n } catch (err) {\n console.log('NewDefaultTheme Inject Css: ERROR, ', err);\n }\n }\n\n // Handle widgets that are under the Section Collapse (page element)\n function handleSectionCollapse() {\n var attachDocFocusEventHandler = function () {\n document.addEventListener('focus', e => {\n var widgetSettings = JFCustomWidget.getWidgetSettings();\n parent.postMessage(JSON.stringify({\n type: 'collapse',\n qid: widgetSettings.qid\n }), '*');\n }, true);\n };\n if (document.readyState === 'complete' || (document.readyState !== 'loading' && !document.documentElement.doScroll)) {\n attachDocFocusEventHandler();\n } else {\n document.addEventListener('DOMContentLoaded', attachDocFocusEventHandler);\n }\n }\n\n function init() {\n // subscribe to ready event by default\n root.subscribe('ready', data => {\n // make body background transparent\n document.body.style.background = 'transparent';\n\n // if(\"background\" in data){\n // document.body.style.background = data.background;\n // if(data.background.indexOf('url') >= 0) {\n // document.body.style.background = 'transparent';\n // }\n // }\n // root.questionID = data.qid;\n // console.log(\"widget is ready now\", data, root.questionID);\n });\n\n root.subscribe('submit', () => {\n root.sendSubmit({\n initial: true,\n data: false,\n valid: true\n });\n });\n\n root.subscribe('save', () => {\n root.sendSave({});\n });\n\n root.subscribe('style', data => {\n // console.log(\"style message arrived to widget\", data);\n // if(data.background !== undefined) {\n // document.body.style.background = data.background;\n // if(data.background.indexOf('url') >= 0) {\n // document.body.style.background = 'transparent';\n // }\n // }\n\n if (data.font !== undefined) {\n var ff = data.font.family;\n setupFont(ff);\n }\n });\n\n root.subscribe('clear', root.clearWidgetFields);\n\n handleSectionCollapse();\n }\n\n /**\n * Setup css for widget right away\n * this is for soon to be custom css under advance settings\n */\n function setupCSS() {\n var customcss = decode_entities(getWidgetSetting('customCSS'));\n if (customcss && customcss.length > 0 && customcss !== '') {\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n\n style.type = 'text/css';\n if (style.styleSheet) {\n style.styleSheet.cssText = customcss;\n } else {\n style.appendChild(document.createTextNode(customcss));\n }\n\n head.appendChild(style);\n }\n }\n\n function setupFont(fontFamily) {\n fontFamily = fontFamily.replace(/\\'|\\\"|(\\,\\s*sans-serif)/ig, '');\n var systemFonts = ['Arial', 'Arial Black', 'Courier', 'Courier New', 'Comic Sans MS', 'Gill Sans',\n 'Helvetica', 'Lucida', 'Lucida Grande', 'Trebuchet MS', 'Tahoma', 'Times New Roman', 'Verdana',\n 'Calibri'\n ];\n\n // console.log(\"update font\", fontFamily);\n // get first font from fontFamily string\n // eslint-disable-next-line prefer-destructuring\n fontFamily = fontFamily.split(',')[0];\n\n if (systemFonts.indexOf(fontFamily) >= 0) {\n // document.body.style.setProperty(\"fontFamily\", '\"'+fontFamily+'\", sans-serif', \"important\");\n document.body.style.fontFamily = `\"${fontFamily}\", sans-serif`;\n // publish event when font active\n root.publish('customfont:active', fontFamily); // deprecated\n root.publish('customfont', fontFamily);\n } else {\n // document.body.style.setProperty(\"fontFamily\", '\"'+fontFamily+'\", sans-serif', \"important\");\n document.body.style.fontFamily = `\"${fontFamily}\", sans-serif`;\n var fontfaceUrl = `https://cdn.jotfor.ms/fonts/?family=${fontFamily}`;\n // load google fonts\n WebFont.load({\n custom: {\n urls: [fontfaceUrl],\n families: [fontFamily]\n },\n active: function () {\n // publish event when font active\n root.publish('customfont:active', fontFamily); // deprecated\n root.publish('customfont', fontFamily);\n }\n });\n }\n }\n\n\n /**\n * Generic way to decode common html entities\n * that doesn't need any dependencies\n */\n function decode_entities(str) {\n // Remove HTML Entities\n var element = document.createElement('div');\n\n if (str && typeof str === 'string') {\n // Escape HTML before decoding for HTML Entities\n str = escape(str).replace(/%26/g, '&')\n .replace(/%23/g, '#').replace(/%3B/g, ';');\n\n element.innerHTML = str;\n if (element.innerText) {\n str = element.innerText;\n element.innerText = '';\n } else {\n // Firefox support\n str = element.textContent;\n element.textContent = '';\n }\n }\n\n return unescape(str);\n }\n\n /**\n * Check if the widget is required\n */\n function isWidgetRequired() {\n var isrequired = false;\n if ('required' in widgetData) {\n isrequired = widgetData.required;\n }\n\n return isrequired;\n }\n\n /**\n * Check if the widget is static\n */\n function isWidgetStatic() {\n return ('static' in widgetData) ? widgetData.static : false;\n }\n\n /**\n * Check if the widget loads from builder\n */\n function isWidgetOnBuilder() {\n var isonwizard = false;\n if ('onWizard' in widgetData) {\n isonwizard = widgetData.onWizard;\n }\n\n return isonwizard;\n }\n\n function isWidgetReady() {\n return _readyState;\n }\n\n // root.sendMessage = sendMessage;\n root.publish = publish;\n root.subscribe = subscribe;\n root.on = subscribe;\n root.unsubscribe = unsubscribe;\n root.off = unsubscribe;\n root.sendData = sendData;\n root.sendCalcValue = sendCalcValue;\n root.sendTranslatables = sendTranslatables;\n root.sendSubmit = sendSubmit;\n root.sendDisableOrEnableButtons = sendDisableOrEnableButtons;\n root.sendSave = sendSave;\n root.clearWidgetFields = clearWidgetFields;\n root.sendReady = sendReady;\n root.requestFrameResize = requestFrameResize;\n root.setFrameSize = requestFrameResize;\n root.setFrameStyles = setFrameStyles;\n root.detectFrameMovement = detectFrameMovement;\n root.hideWidgetContainer = hideWidgetContainer;\n root.makeInvisibleWidgetContainer = makeInvisibleWidgetContainer;\n root.resetWidgetContainer = resetWidgetContainer;\n root.showWidgetContainer = showWidgetContainer;\n root.replaceWidget = replaceWidget;\n root.getWidgetData = getWidgetData;\n root.getFrameData = getFrameData;\n root.isFromCardform = isFromCardform;\n root.setupLibraries = setupLibraries;\n root.removeSubmittedFrame = removeSubmittedFrame;\n\n root.showWidgetError = showWidgetError;\n root.hideWidgetError = hideWidgetError;\n root.makeWidgetRequired = makeWidgetRequired;\n root.makeWidgetNotRequired = makeWidgetNotRequired;\n\n root.listenFromField = listenFromField;\n root.listenFromWidget = listenFromWidget;\n root.storeToField = storeToField;\n root.setFieldsValueByLabel = setFieldsValueByLabel;\n root.setFieldsValueById = setFieldsValueById;\n root.clearFields = clearFields;\n root.getFieldsValueById = getFieldsValueById;\n root.getFieldsValueByName = getFieldsValueByName;\n\n root.getFormTrackerID = getFormTrackerID;\n\n root.getQueryString = getWidgetSetting; // deprecated, just to support old widgets\n root.getAllQueryString = getWidgetSettings; // deprecated, just to support old widgets\n root.getWidgetSetting = getWidgetSetting;\n root.getWidgetSettings = getWidgetSettings;\n root.getParentOrigin = getParentOrigin;\n root.getEnterprise = getEnterprise;\n\n // helper functions\n root.isWidgetRequired = isWidgetRequired;\n root.isWidgetStatic = isWidgetStatic;\n root.isWidgetOnBuilder = isWidgetOnBuilder;\n root.isWidgetReady = isWidgetReady;\n // initialize client\n init();\n\n // expose functions\n return root;\n}());\nreturn JFCustomWidget;\n}\n\nexport default createCustomWidget;\n","/* eslint-disable */\n/**\n * JotForm Widget Language Translation\n *\n * Documentation: https://github.com/jotform/app-widgets/blob/master/docs/widget/widget-language-support-guide.md\n */\n\nconst createWidgetTranslations = () => {\nconst JFWidgetTranslation = (function () {\n var lang = {};\n var translationStore = {};\n var dictionaryData = {};\n var translatables = {};\n var elementTextLookup = {\n input: [\n 'placeholder',\n 'innerText'\n ],\n button: [\n 'innerText',\n 'title'\n ],\n textarea: [\n 'placeholder',\n 'innerText'\n ],\n option: [\n 'innerText'\n ],\n img: [\n 'title'\n ]\n };\n\n /**\n * Get translatable text via 'translatable' class name (Public)\n *\n * @param {Function} callback - Callback function\n */\n function getTranslatables(callback) {\n var translatables = [];\n\n document.querySelectorAll('.translatable').forEach(element => {\n var entry = {};\n var elemTranslatableText = getElementText(element);\n elemTranslatableText.forEach(item => {\n if (!(translatables.indexOf(item) > -1)) {\n translatables.push(item);\n }\n });\n });\n\n if (callback) {\n return callback(translatables);\n }\n return translatables;\n }\n\n /**\n * Get element's translatable text e.g. innetText, title, value, etc (Private)\n *\n * @param {Node} element - Element\n */\n function getElementText(element) {\n var textData = [];\n var elemType = element.tagName.toLowerCase();\n var elemTranslatableProps = elementTextLookup[elemType];\n\n if (elemTranslatableProps !== undefined) {\n elemTranslatableProps.forEach(item => {\n var text = '';\n switch(item) {\n case 'innerText':\n text = element.innerText;\n break;\n case 'placeholder':\n text = element.placeholder;\n break;\n case 'title':\n text = element.title;\n }\n if (isNaN(text)) {\n if (text.length !== 0 && text !== '') {\n textData.push(text);\n }\n }\n });\n } else { // Use default 'innerText' property to get element's text\n if (isNaN(element.innerText)) {\n if (element.innerText.length !== 0 && element.innerText !== '') {\n textData.push(element.innerText);\n }\n }\n }\n\n return textData;\n }\n\n /**\n * Set (translation) dictionary (Public)\n *\n * @param {Object} data - Dictionary data\n */\n function setDictionary(data) {\n dictionaryData = data;\n }\n\n /**\n * Set (translation) dictionary (Public)\n */\n function getDictionary() {\n return dictionaryData;\n }\n\n /**\n * Translate, replace element's text w/ the corresponding translation (Public)\n *\n * @param {Object} data - Dictionary data\n */\n function translate(data) {\n var translationMap = {};\n var langTranslation = {};\n\n if (typeof data !== 'undefined') {\n dictionaryData = data;\n }\n\n translationMap = getWidgetTranslatables(dictionaryData.dictionary);\n langTranslation = translationMap[dictionaryData.to];\n\n for (const key in langTranslation) {\n var translationProp = langTranslation[key];\n for (const translationPropKey in translationProp) {\n var elemProp = translationProp[translationPropKey];\n var element = document.querySelector(`.${elemProp.id}`);\n\n if (element !== null) {\n var value = translationProp[translationPropKey].translation;\n var propType = translationProp[translationPropKey].property;\n if (value !== undefined && value !== '') {\n var requiredStar = false;\n var requiredEl = element.getElementsByClassName('required');\n\n if (requiredEl.length > 0) {\n requiredStar = requiredEl[0].cloneNode(true);\n requiredEl[0].remove();\n }\n element[propType] = value;\n if (requiredStar) {\n element.append(requiredStar);\n }\n }\n }\n }\n }\n }\n\n /**\n * Get translation for specific text (Public)\n *\n * @param {Object} data - Dictionary data\n * @param {String} text - Translatable text\n * @param {String} translateTo - Language\n */\n function getTranslation(data, text, translateTo) {\n if (typeof data === 'undefined' || typeof text === 'undefined') {\n return false;\n }\n\n var dict = data.dictionary;\n var lang = (typeof translateTo !== 'undefined') ? translateTo : 'en';\n var translations = dict[lang];\n\n try {\n return translations[text];\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Get translatable text via 'translatable' class name (Private)\n *\n * @param {Object} dict - Dictionary data\n */\n function getWidgetTranslatables(dict) {\n var translatables = {};\n var translations = {};\n\n document.querySelectorAll('.translatable').forEach(element => {\n var elemType = element.tagName.toLowerCase();\n var elemTranslatableProps = elementTextLookup[elemType];\n var uniqueID = generateID();\n var elemProp = [];\n\n if (element.classList.contains('_uidset') === false) {\n if (elemTranslatableProps !== undefined) {\n elemTranslatableProps.forEach(item => {\n var text = element[item];\n if (typeof text !== 'undefined' && text.length !== 0 && text !== '') {\n if (isNaN(text)) {\n elemProp.push({\n id: uniqueID,\n property: item,\n text: text\n });\n }\n }\n });\n } else { // Use default 'innerText' property to get element's text\n if (typeof element.innerText !== 'undefined' && element.innerText.length !== 0 && element.innerText !== '') {\n if (isNaN(element.innerText)) {\n var childNodes = Array.from(element.children);\n var hasRequireSpan = childNodes && childNodes.length > 0 && !!childNodes.find(el => el.tagName === 'SPAN' && el.innerText === '*' && el.classList.contains('required'));\n elemProp.push({\n id: uniqueID,\n property: 'innerText',\n text: hasRequireSpan ? element.innerText.replace(/\\n\\*/, '') : element.innerText\n });\n }\n }\n }\n\n if (elemProp.length !== 0) {\n translatables[uniqueID] = elemProp;\n element.classList.add(uniqueID);\n element.classList.add('_uidset');\n }\n }\n });\n\n if (Object.keys(translationStore).length === 0) {\n translationStore = translatables;\n translations = mapTranslation(translatables, dict);\n } else {\n var merged = Object.assign(translationStore, translatables);\n translationStore = merged;\n translations = mapTranslation(merged, dict);\n }\n\n return translations;\n }\n\n /**\n * Create a translation map (Private)\n *\n * @param {Object} translatables - Translatable text\n * @param {Object} dict - Dictionary data\n */\n function mapTranslation(translatables, dict) {\n var customDictionary = {};\n for (var key in dict) {\n var languageTranslation = dict[key];\n customDictionary[key] = [];\n\n for (var translatable in translatables) {\n var elemProp = translatables[translatable];\n var elemPropStore = [];\n for (var propKey in elemProp) {\n var elemProperties = elemProp[propKey];\n elemPropStore.push({\n translation: languageTranslation[elemProperties.text],\n id: elemProperties.id,\n property: elemProperties.property\n });\n }\n customDictionary[key][translatable] = elemPropStore;\n }\n }\n return customDictionary;\n }\n\n /**\n * ID generator (Private)\n *\n * https://gist.github.com/gordonbrander/2230317\n */\n function generateID() {\n return `_${Math.random().toString(36).substr(2, 9)}`;\n }\n\n // Exposed method(s)\n lang.translate = translate;\n lang.getTranslatables = getTranslatables;\n lang.setDictionary = setDictionary;\n lang.getDictionary = getDictionary;\n lang.getTranslation = getTranslation;\n\n return lang;\n}());\nreturn JFWidgetTranslation;\n}\nexport default createWidgetTranslations;\n","/* eslint-disable */\n\nconst createWidgetUtils = () => {\nconst JFCustomWidgetUtils = (function () {\n var utils = {};\n var metadataKey = 'widget_metadata';\n var requestAnimationFrameId;\n\n /**\n * Get s3 upload url relative path\n */\n function getS3UriRelativePath(url) {\n if (typeof url !== 'undefined' && !!~url.indexOf('/jotformWidgets/')) {\n var splits = url.split('/jotformWidgets/');\n url = `/widget-uploads/${splits[1]}`;\n }\n\n return url;\n }\n\n /**\n * Reset jotform upload url\n * https://www.jotform.com/widget-uploads/widget/xxx\n * and convert it to just /widget-uploads/widget/xxx\n */\n function resetS3UriOrigin(url) {\n var uploadPath = '/uploads/';\n if (url.indexOf(uploadPath) === -1) {\n uploadPath = '/widget-uploads/';\n }\n\n var pos = url.indexOf(uploadPath);\n if (typeof url !== 'undefined' && (!!~pos && pos > 0)) {\n var splits = url.split(uploadPath);\n url = `${uploadPath}${splits[1]}`;\n }\n\n return url;\n }\n\n /**\n * Fixed s3 upload relative path\n * this is to use the right origin\n * for images that points to jotform\n */\n function fixS3UriOrigin(url) {\n var uploadPath = '/uploads/';\n if (url.indexOf(uploadPath) === -1) {\n uploadPath = '/widget-uploads/';\n }\n\n var pos = url.indexOf(uploadPath);\n if (typeof url !== 'undefined' && (!!~pos && pos === 0)) {\n url = getS3UriRelativePath(url);\n url = JFCustomWidget.getParentOrigin() + url;\n }\n\n return url;\n }\n\n /**\n * Get the form's domain\n * @returns {string}\n */\n\n function getFormDomain() {\n if (window.location.search.match(/ref=([^&]+)/)) {\n return `${decodeURIComponent(window.location.search.match(/ref=([^&]+)/)[1])}/`;\n }\n return 'https://www.jotform.com/';\n }\n\n /**\n * Get the IE version otherwise 'undefined'\n */\n function getIEVersion() {\n var match = navigator.userAgent.match(/(?:MSIE |Trident\\/.*; rv:)(\\d+)/);\n return match ? parseInt(match[1]) : undefined;\n }\n\n /**\n * Check if safari browsers\n * On desktop Chrome has both 'Chrome' and 'Safari' inside userAgent string.\n * Safari has only 'Safari'.\n * On iOS Chrome has 'CriOS' and Firefox has 'FxiOS' inside userAgent string.\n */\n function isSafari() {\n var chrome = navigator.userAgent.toLowerCase().match(/chrome|crios/);\n var firefox = navigator.userAgent.toLowerCase().match(/firefox|fxios/);\n var safari = navigator.userAgent.toLowerCase().indexOf('safari') > -1;\n\n if (safari && !chrome && !firefox) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Check if firefox browsers\n */\n function isFirefox() {\n return navigator.userAgent.toLowerCase().match(/firefox|fxios/);\n }\n\n /**\n * Detect if mobile platform\n */\n function isMobile() {\n var ua = navigator.userAgent.toLowerCase();\n\n return (/iphone|ipod|android|blackberry|opera mini|opera mobi|skyfire|maemo|windows phone|palm|iemobile|symbian|symbianos|fennec/i.test(ua))\n || (/ipad|android 3|sch-i800|playbook|tablet|kindle|gt-p1000|sgh-t849|shw-m180s|a510|a511|a100|dell streak|silk/i.test(ua))\n || (ua.indexOf('macintosh') > -1 && navigator.maxTouchPoints > 1);\n }\n\n /**\n * function that will check if a string\n * is a valid JSON string\n * @param {string} str string to be check\n */\n function isJsonString(str) {\n try {\n var o = JSON.parse(str);\n // Handle non-exception-throwing cases:\n // Neither JSON.parse(false) or JSON.parse(1234) throw errors, hence the type-checking,\n // but... JSON.parse(null) returns 'null', and typeof null === \"object\",\n // so we must check for that, too.\n if (o && typeof o === 'object' && o !== null) {\n return true;\n }\n } catch (e) {}\n\n return false;\n }\n\n /**\n * Identify the type of a data\n */\n function identifyType(data) {\n var str = Object.prototype.toString.call(data);\n return str.replace(/^\\[object (\\w+)\\]$/, '$1');\n }\n\n /**\n * Identifies object data\n * @return {[boolean]}\n */\n function isObject(data) {\n return identifyType(data) === 'Object';\n }\n\n /**\n * Identifies array data\n * @return {[boolean]}\n */\n function isArray(data) {\n return identifyType(data) === 'Array';\n }\n\n /**\n * Build a metadata for widget before sending to form\n * this is optional if the value being pass contains link, images, tables we want to display\n * if we want to format it on the backend we need to pass a special\n * json string for the widgetparser.php can work into. This can make\n * a html equivalent string on backend that works with both emails and reports\n * @param {[string]} type [type of the data we want to display can be either links,imagelinks,table]\n * @param {[array|string]} value [and array or string of all the values to be passed]\n * @return {[string]} [the json string of the metadata that was built]\n */\n function buildMetadata(type, value) {\n // if nothing set return boolean false\n if (\n (typeof type === 'undefined' || typeof value === 'undefined')\n || (type === false || value === false)\n ) {\n return '';\n }\n\n var dataJson = {};\n dataJson[metadataKey] = {\n type: type,\n value: value\n };\n\n return JSON.stringify(dataJson);\n }\n\n /**\n * Extract the data from the metadata JSON object that comes from the widget\n * e.g of widget that use metadata(drag&drop, imagepicker, imageuploadpreview)\n * @param {string} the json string with metadata key\n * @return {array} the extracted data of the widget, otherwise an empty array\n */\n function extractMetadata(widgetVal) {\n var value = [];\n\n if (!isJsonString(widgetVal)) {\n return value;\n }\n\n var metaData = JSON.parse(widgetVal);\n // check if meta data key is present\n if (metaData.hasOwnProperty(metadataKey)) {\n value = metaData[metadataKey].value;\n }\n\n return value;\n }\n\n /**\n * Verify if the widget value contains meta data\n * @param {string} a string to check\n * @return {boolean}\n */\n function hasMetadata(widgetVal) {\n if (!isJsonString(widgetVal)) {\n return false;\n }\n\n var metaData = JSON.parse(widgetVal);\n // check if meta data key is present\n if (metaData.hasOwnProperty(metadataKey)) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Checked whether a widget parameter is empty\n * @param {string} a string to check\n * @return {Boolean}\n */\n function isEmpty(widgetParam) {\n return (typeof widgetParam === 'undefined' || widgetParam === '' || widgetParam === '');\n }\n\n /**\n * A hacky way to decode html entities on a string\n */\n function decodeHtmlEntities(str) {\n var txt = document.createElement('textarea');\n txt.innerHTML = str;\n return txt.value;\n }\n\n /**\n * A hacky way to encode html entities on a string\n */\n function encodeHtmlEntities(str) {\n var txt = document.createElement('textarea');\n txt.textContent = str;\n return txt.innerHTML;\n }\n\n /**\n * Run until a certain x seconds\n */\n function executeUntil(secondsValue, callback) {\n var seconds = 5000;\n if (typeof secondsValue === 'function') {\n seconds = false;\n callback = secondsValue;\n } else if (typeof secondsValue === 'number') {\n seconds = secondsValue;\n }\n\n // if this is called again with existing requestAnimationFrameId\n // clear the current animation frame\n if (requestAnimationFrameId) {\n window.cancelAnimationFrame(requestAnimationFrameId);\n }\n\n // start tick\n var tick = function () {\n callback && callback();\n requestAnimationFrameId = window.requestAnimationFrame(tick);\n };\n\n tick();\n\n // timeout to cancel animation frame\n if (seconds) {\n setTimeout(() => {\n if (requestAnimationFrameId) {\n window.cancelAnimationFrame(requestAnimationFrameId);\n }\n }, seconds);\n }\n }\n\n /**\n * executeUntil alias\n */\n function animateUntil() {\n executeUntil.apply(null, arguments);\n }\n\n /**\n * vanilla js for dm ready event like jquery\n */\n function domReady(fn) {\n if (document.readyState != 'loading') {\n fn();\n } else if (document.addEventListener) {\n document.addEventListener('DOMContentLoaded', fn);\n } else {\n document.attachEvent('onreadystatechange', () => {\n if (document.readyState != 'loading') { fn(); }\n });\n }\n }\n\n /**\n * Load JS file with callback\n */\n function loadJS(scriptUrl, afterCallback) {\n var scriptElement = document.createElement('script');\n scriptElement.type = 'text/javascript';\n scriptElement.async = false;\n scriptElement.src = scriptUrl;\n\n var ieLoadBugFix = function (scriptElement, callback) {\n if (scriptElement.readyState == 'loaded' || scriptElement.readyState == 'complete') {\n callback();\n } else {\n setTimeout(() => {\n ieLoadBugFix(scriptElement, callback);\n }, 100);\n }\n };\n\n if (typeof afterCallback === 'function') {\n if (typeof scriptElement.addEventListener !== 'undefined') {\n scriptElement.addEventListener('load', () => {\n afterCallback(scriptUrl);\n }, false);\n } else {\n scriptElement.onreadystatechange = function () {\n scriptElement.onreadystatechange = null;\n ieLoadBugFix(scriptElement, () => {\n afterCallback(scriptUrl);\n });\n };\n }\n }\n\n (document.getElementsByTagName('head')[0] || document.documentElement).appendChild(scriptElement);\n }\n\n /**\n * Load CSS file with callback\n */\n function loadCSS(url, onLoad, id) {\n var styleElement = document.createElement('link');\n styleElement.setAttribute('type', 'text/css');\n styleElement.setAttribute('rel', 'stylesheet');\n styleElement.setAttribute('media', 'all');\n styleElement.setAttribute('href', url);\n\n if (typeof id !== 'undefined') {\n styleElement.setAttribute('id', id);\n }\n\n if (styleElement.readyState) { // IE\n styleElement.onreadystatechange = function () {\n if (styleElement.readyState == 'loaded' || styleElement.readyState == 'complete') {\n styleElement.onreadystatechange = null;\n onLoad && onLoad();\n }\n };\n } else { // Others\n if (isSafari() || isFirefox()) {\n // reset and create alternative\n styleElement = document.createElement('style');\n styleElement.textContent = `@import \"${url}\"`;\n\n var fi = setInterval(() => {\n try {\n styleElement.sheet.cssRules; // <--- MAGIC: only populated when file is loaded\n onLoad && onLoad();\n clearInterval(fi);\n } catch (e) {}\n }, 10);\n } else if (styleElement.addEventListener) {\n styleElement.addEventListener('load', onLoad);\n } else if (styleElement.attachEvent) {\n styleElement.attachEvent('onload', onLoad);\n }\n\n // This code is for browsers that don’t support onload\n // No support for onload (it'll bind but never fire):\n // * Android 4.3 (Samsung Galaxy S4, Browserstack)\n // * Android 4.2 Browser (Samsung Galaxy SIII Mini GT-I8200L)\n // * Android 2.3 (Pantech Burst P9070)\n\n // Weak inference targets Android < 4.4\n else if ('isApplicationInstalled' in navigator && 'onloadcssdefined' in styleElement) {\n styleElement.onloadcssdefined(onLoad);\n }\n }\n\n (document.getElementsByTagName('head')[0] || document.documentElement).appendChild(styleElement);\n }\n\n utils.domReady = domReady;\n utils.loadJS = loadJS;\n utils.loadCSS = loadCSS;\n utils.isJsonString = isJsonString;\n utils.getIE = getIEVersion;\n utils.isSafari = isSafari;\n utils.isFirefox = isFirefox;\n utils.isMobile = isMobile;\n utils.buildMetadata = buildMetadata;\n utils.extractMetadata = extractMetadata;\n utils.hasMetadata = hasMetadata;\n utils.decodeHtmlEntities = decodeHtmlEntities;\n utils.encodeHtmlEntities = encodeHtmlEntities;\n utils.getS3UriRelativePath = getS3UriRelativePath;\n utils.fixS3UriOrigin = fixS3UriOrigin;\n utils.resetS3UriOrigin = resetS3UriOrigin;\n utils.executeUntil = executeUntil;\n utils.animateUntil = animateUntil;\n utils.isEmpty = isEmpty;\n utils.isObject = isObject;\n utils.isArray = isArray;\n utils.getFormDomain = getFormDomain;\n\n return utils;\n}());\nreturn JFCustomWidgetUtils;\n}\n\nexport default createWidgetUtils;\n","import React from 'react';\n\nconst CustomShortText = React.lazy(() => import(/* webpackChunkName: \"custom-short-text\" */ './widgets/custom-short-text'));\nconst List = React.lazy(() => import(/* webpackChunkName: \"list\" */ './widgets/list'));\nconst SubmissionCounter = React.lazy(() => import(/* webpackChunkName: \"submission-counter\" */ './widgets/submission-counter'));\nconst DrawingBoard = React.lazy(() => import(/* webpackChunkName: \"drawing-board\" */ './widgets/drawing-board'));\nconst Calendly = React.lazy(() => import(/* webpackChunkName: \"calendly\" */ './widgets/calendly'));\nconst DualListBox = React.lazy(() => import(/* webpackChunkName: \"dual-list-box\" */ './widgets/dual-list-box'));\nconst VoiceRecorder = React.lazy(() => import(/* webpackChunkName: \"salesforce-prefill\" */ './widgets/voice-recorder'));\nconst SalesforcePrefill = React.lazy(() => import(/* webpackChunkName: \"salesforce-prefill\" */ './widgets/salesforce-prefill'));\nconst SalesforcePrefillAuth = React.lazy(() => import(/* webpackChunkName: \"salesforce-prefill-auth\" */ './widgets/salesforce-prefill').then(module => ({ default: module.SalesforcePrefillAuth })));\nconst SalesforcePrefillActions = React.lazy(() => import(/* webpackChunkName: \"salesforce-prefill-actions\" */ './widgets/salesforce-prefill')\n .then(module => ({ default: module.SalesforcePrefillActions })));\nconst StockWidget = React.lazy(() => import(/* webpackChunkName: \"stock-widget\" */ './widgets/stock-widget'));\n\nexport const routes = [{\n path: '/custom-short-text',\n Component: CustomShortText\n},\n{\n path: '/list',\n Component: List\n},\n{\n path: '/submission-counter',\n Component: SubmissionCounter\n},\n{\n path: '/drawing-board',\n Component: DrawingBoard\n},\n{\n path: '/calendly',\n Component: Calendly\n},\n{\n path: '/voice-recorder',\n Component: VoiceRecorder\n},\n{\n path: '/dual-list-box',\n Component: DualListBox\n},\n{\n path: '/salesforce-prefill/auth',\n Component: SalesforcePrefillAuth\n},\n{\n path: '/salesforce-prefill/actions',\n Component: SalesforcePrefillActions\n},\n{\n path: '/salesforce-prefill',\n Component: SalesforcePrefill\n},\n{\n path: '/gift-registry',\n Component: StockWidget\n},\n{\n path: '/weekly-appointment-planner',\n Component: StockWidget\n},\n{\n path: '/ticket-purchases',\n Component: StockWidget\n},\n{\n path: '/quantity-gift-registry',\n Component: StockWidget\n}\n];\n","import '@jotforminc/router-bridge/init';\n\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\n\nimport App from './App';\nimport '@jotforminc/jotform.css/reset.css';\nimport '@jotforminc/jotform.css';\n\nconst container = document.getElementById('root');\nconst root = createRoot(container);\nroot.render();\n","import React, { Suspense } from 'react';\nimport {\n BrowserRouter as Router,\n Switch,\n Route\n} from 'react-router-dom';\n\nimport customWidget from '@jotforminc/for-custom-widgets';\nimport { getAppPath } from '@jotforminc/router-bridge';\nimport { routes } from './routes';\n\nconst App = () => {\n const { JFCustomWidget, JFCustomWidgetUtils } = customWidget;\n return (\n \n }>\n \n {routes.map(({ path, Component }) => (\n \n \n \n ))}\n \n \n \n );\n};\n\nexport default App;\n","// import path from 'path';\n\nimport get from 'lodash/get';\n\nexport const getRouterValue = (key, defaultValue) => {\n return get(window.__jfrouter, key, defaultValue);\n};\n\nexport const getEnv = () => {\n return getRouterValue('JOTFORM_ENV', 'development');\n};\n\nexport const getAppPath = () => {\n return getRouterValue('APP_PATH', '/');\n};\n\nexport const getBaseURL = () => {\n return getRouterValue('BASE_URL', 'http://localhost');\n};\n\nexport const getAssetPath = () => {\n return getRouterValue('ASSET_PATH', '/');\n};\n\nexport const getRevision = () => {\n return getRouterValue('REVISION_HASH', '/');\n};\n\nexport const getPublicURL = () => {\n return `${getBaseURL()}${getAssetPath()}`;\n};\n\nexport const getCDNURL = () => {\n return getRouterValue('CDN_URL', getPublicURL());\n};\n\n// export const getAssetURL = assetPath => {\n// return `${getBaseURL()}${path.join(getAssetPath(), assetPath)}`;\n// };\n\nexport const getAppURL = () => {\n return `${getBaseURL()}${getAppPath()}`;\n};\n\nexport const getRoutePath = () => {\n return window.location.pathname.replace(getAppPath(), '');\n};\n\nexport const getActiveAlias = () => {\n return getRouterValue('ACTIVE_ALIAS', '');\n};\n\nexport const getActiveApp = () => {\n return getRouterValue('ACTIVE_APP', '');\n};\n\nexport const getInitialRoutePath = () => {\n return getRouterValue('INITIAL_ROUTE_PATH', '');\n};\n\nexport const getFullPath = () => {\n return getRouterValue('FULL_PATH', '');\n};\n\nexport const isHIPAA = () => {\n return getRouterValue('IS_HIPAA', '0') === '1';\n};\n\nexport const isEU = () => {\n return getRouterValue('IS_EU', '0') === '1';\n};\n\nexport const isSSO = () => {\n return getRouterValue('IS_SSO', '0') === '1';\n};\n\nexport const getRootPath = () => {\n return getRouterValue('ROOT_PATH', '');\n};\n","/* eslint-disable camelcase */\nconst injectPostMessage = () => {\n if (window.getIframeWindow === undefined) {\n window.getIframeWindow = function getIframeWindow(iframeObject) {\n let doc;\n if (iframeObject.contentWindow) {\n return iframeObject.contentWindow;\n }\n if (iframeObject.window) {\n return iframeObject.window;\n }\n if (!doc && iframeObject.contentDocument) {\n doc = iframeObject.contentDocument;\n }\n if (!doc && iframeObject.document) {\n doc = iframeObject.document;\n }\n if (doc && doc.defaultView) {\n return doc.defaultView;\n }\n if (doc && doc.parentWindow) {\n return doc.parentWindow;\n }\n };\n }\n\n // postMessage utility function\n if (typeof window.XD === 'undefined') {\n window.XD = (() => {\n let interval_id;\n let last_hash;\n let cache_bust = 1;\n let attached_callback;\n return {\n postMessage: (message, target_url, _target) => {\n if (!target_url) {\n return;\n }\n\n let target = _target || window.parent; // default to parent\n if (window.postMessage) {\n let postMessageTarget = target_url.replace(/([^:]+:\\/\\/[^/]+).*/, '$1');\n // the browser supports window.postMessage, so call it with a targetOrigin\n // set appropriately, based on the target_url parameter.\n if (!('postMessage' in target)) {\n // we have a problem, update target\n target = window.getIframeWindow(target);\n }\n if (!target) {\n return;\n }\n if (postMessageTarget.indexOf('file://') === 0) { // This means we are using file locally. (like offline forms)\n postMessageTarget = '*';\n }\n target.postMessage(message, postMessageTarget);\n } else if (target_url) {\n // the browser does not support window.postMessage, so use the window.location.hash fragment hack\n target.location = `${target_url.replace(/#.*$/, '')}#${+new Date()}${cache_bust++}&${message}`;\n }\n },\n receiveMessage: (callback, source_origin) => {\n // browser supports window.postMessage\n if (window.postMessage) {\n // bind the callback to the actual event associated with window.postMessage\n\n if (callback) {\n attached_callback = e => {\n const params = window.location.search.split('?').join('');\n const isOfflineForms = params.indexOf('offline_forms=true') > -1 || params.indexOf('offline_forms=si') > -1;\n\n // eslint-disable-next-line max-len\n if (!isOfflineForms && ((typeof source_origin === 'string' && e.origin !== source_origin) || (Object.prototype.toString.call(source_origin) === '[object Function]' && source_origin(e.origin) === !1))) {\n return !1;\n }\n callback(e);\n };\n }\n if (window.addEventListener) {\n window[callback ? 'addEventListener' : 'removeEventListener']('message', attached_callback, !1);\n } else {\n window[callback ? 'attachEvent' : 'detachEvent']('onmessage', attached_callback);\n }\n } else {\n // a polling loop is started & callback is called whenever the location.hash changes\n if (interval_id) {\n clearInterval(interval_id);\n }\n interval_id = null;\n if (callback) {\n interval_id = setInterval(() => {\n const { hash } = document.location;\n const re = /^#?\\d+&/;\n if (hash !== last_hash && re.test(hash)) {\n last_hash = hash;\n callback({\n data: hash.replace(re, '')\n });\n }\n }, 100);\n }\n }\n }\n };\n })();\n }\n};\nexport default injectPostMessage;\n"],"names":["__webpack_public_path__","getAssetPath","JFCustomWidget","attachDocFocusEventHandler","subscribeToken","subscriberIndex","_readyState","widgetSettings","parentOrigin","widgetData","enterprise","libraries","getQuerystring","key","default_","qs","regex","RegExp","window","decodeURIComponent","root","refQuery","REFERER","hashQuery","document","indexSlash","Number","message","data","JSON","setupFont","isFromCardform","appendNewDefaultThemeCss","setupCSS","customcss","decode_entities","str","element","escape","unescape","getWidgetSetting","head","style","loadPendingLibraries","callback","assignPreLibraries","getWidgetSettings","isParallel","loadedFiles","y","lib","JFCustomWidgetUtils","loadedLink","appendCardFormWidgetCss","formID","widgetID","loaded","time","Date","cssUrl","params","isOfflineForms","isLocalFile","isOnline","setTimeout","widgetClassName","generalClassName","documeny","ex","console","Object","isNext","handleSubscribe","type","handler","options","undefined","token","subscribe","events","tokens","x","unsubscribe","subscribers","i","subscriber","requestFrameResize","sendMessage","setFieldsValue","fields","identifier","getFieldsValue","eventID","uniqid","libs","msg","parent","prefix","more_entropy","retId","formatSeed","seed","reqWidth","parseInt","Array","Math","getAllQueryString","queryString","queries","temp","settings","DOMPurify","decodesettings","obj","value","urlParams","u","param","widgetType","additionalCheck","URLSearchParams","widgetListArr","injectAction","isCSSExists","username","widgetListArrForTestEnv","err","fontFamily","systemFonts","fontfaceUrl","WebFont","isWidgetOnBuilder","isonwizard","arguments","args","len","inputs","selects","input","select","styles","widget","resetForm","field","event","result","hasCallback","subToken","isrequired","e","lang","translationStore","dictionaryData","elementTextLookup","mapTranslation","translatables","dict","customDictionary","languageTranslation","translatable","elemProp","elemPropStore","propKey","elemProperties","translationMap","langTranslation","getWidgetTranslatables","translations","elemTranslatableProps","uniqueID","generateID","item","text","isNaN","childNodes","hasRequireSpan","el","merged","translationProp","translationPropKey","propType","requiredStar","requiredEl","elemTranslatableText","getElementText","textData","translateTo","requestAnimationFrameId","utils","metadataKey","getS3UriRelativePath","url","splits","isSafari","chrome","navigator","firefox","isFirefox","isJsonString","o","identifyType","executeUntil","secondsValue","seconds","tick","fn","scriptUrl","afterCallback","scriptElement","ieLoadBugFix","onLoad","id","styleElement","fi","setInterval","clearInterval","match","ua","dataJson","widgetVal","metaData","txt","uploadPath","pos","widgetParam","CustomShortText","React","List","SubmissionCounter","DrawingBoard","Calendly","DualListBox","VoiceRecorder","SalesforcePrefill","SalesforcePrefillAuth","module","SalesforcePrefillActions","StockWidget","routes","container","createRoot","customWidget","Router","getAppPath","Suspense","Switch","path","Component","Route","App","getRouterValue","defaultValue","get","getBaseURL","getPublicURL","getCDNURL","getRootPath","iframeObject","doc","interval_id","last_hash","attached_callback","cache_bust","target_url","_target","target","postMessageTarget","source_origin","hash","re"],"mappings":"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"}