{"version":3,"file":"bundle.97803.a8b3f165f34a4a75cc05.js","mappings":"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","sources":["webpack://goformz-web-app/./node_modules/moment/locale/ sync ^\\.\\/.*$","webpack://goformz-web-app/./src/EnvironmentWarmup.ts","webpack://goformz-web-app/./src/App.ts","webpack://goformz-web-app/./src/AppContext.ts","webpack://goformz-web-app/./src/AppSettings.ts","webpack://goformz-web-app/./src/AuthReturn.ts","webpack://goformz-web-app/./src/Sift.ts","webpack://goformz-web-app/./src/apps/components/ConnectionHelper.ts","webpack://goformz-web-app/./src/auth/AuthService.ts","webpack://goformz-web-app/./src/helpers/AnalyticsUtility.ts","webpack://goformz-web-app/./src/helpers/MessageUtility.ts","webpack://goformz-web-app/./src/helpers/PermissionUtility-types.ts","webpack://goformz-web-app/./src/helpers/PermissionUtilityAppFeatures.ts","webpack://goformz-web-app/./src/helpers/PermissionUtility.ts","webpack://goformz-web-app/./src/helpers/RaygunUtility.ts","webpack://goformz-web-app/./src/helpers/UserUtility.ts","webpack://goformz-web-app/./src/helpers/api.ts","webpack://goformz-web-app/./src/helpers/constants.ts","webpack://goformz-web-app/./src/helpers/utility.ts"],"sourcesContent":["var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-ps\": 20315,\n\t\"./ar-ps.js\": 20315,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku-kmr\": 90563,\n\t\"./ku-kmr.js\": 90563,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","import { GetAppSettings } from './AppSettings';\n\nexport default async () => {\n const appSettings = GetAppSettings();\n if (process.env.NODE_ENV !== 'production' || appSettings?.RoutingEnvironment === '' || !appSettings?.Routes) {\n return;\n }\n\n for (const [, route] of Object.entries(appSettings.Routes)) {\n if (!route) {\n continue;\n }\n\n const warmupRoute = new URL('/warmup', route).toString();\n console.log(`Warming up ${warmupRoute}`);\n try {\n await fetch(warmupRoute);\n } catch (ex) {\n console.log(ex);\n }\n }\n};\n","import 'regenerator-runtime/runtime';\nimport { LoadAppSettings } from './AppSettings';\nimport WarmupEnvironment from './EnvironmentWarmup';\nimport { LoadUserManager } from './auth/AuthService';\nimport { InitializeAnalytics } from './helpers/AnalyticsUtility';\nimport { RedirectAppAuthReturnIfNeeded } from './apps/components/ConnectionHelper';\nimport { enableMapSet } from 'immer';\nimport { InitializeSift } from './Sift';\nimport { InitializeRaygun } from './helpers/RaygunUtility';\n\nexport async function Startup() {\n await LoadAppSettings();\n InitializeSift();\n await WarmupEnvironment();\n RedirectAppAuthReturnIfNeeded();\n enableMapSet();\n await LoadUserManager();\n\n InitializeRaygun();\n InitializeAnalytics();\n}\n","import { RootState } from 'gf-types';\nimport { Dispatch } from 'redux';\n\nexport interface AppContext {\n store: ReduxStore;\n previewCompleted?: boolean;\n // todo - this should live in the redux store in the onboarding slice\n onboardingSurveyCompleted?: boolean;\n}\n\ntype ReduxStore = {\n getState: () => RootState;\n dispatch: Dispatch;\n};\n\nexport const appContext: Partial = {};\n","import axios from 'axios';\nimport { v4 as uuidv4 } from 'uuid';\n\nexport type AppSettings = {\n AuthenticationServiceUrl: string;\n AuthClientId: string;\n AuthClientSecret: string;\n APIMUrl: string;\n CmsEnvironment: string;\n Environment: string;\n GoogleMapsApiKey: string;\n SegmentApiKey: string;\n SiftBeaconKey: string;\n RecurlyPublicKey: string;\n NotificationServiceUrl: string;\n Raygun: RaygunSettings;\n CMSAssetBaseUrl: string;\n ApimOverrides: GoFormzServiceNames;\n ServiceBusOverrides: GoFormzServiceNames;\n RoutingEnvironment: string;\n SetBackendServiceUrlHeaders: GoFormzServiceNames;\n Routes: GoFormzServiceNames;\n Apps: GoFormzAppNames;\n HipaaSetupKey: string;\n};\n\nexport type RaygunSettings = {\n ApiKey: string;\n};\n\nexport type GoFormzServiceNames = {\n AccountService: string;\n AIService: string;\n AnalyticsService: string;\n Api: string;\n AuthenticationService: string;\n ApimService: string;\n AppsApimService: string;\n ApplicationService: string;\n BillingService: string;\n CmsService: string;\n DataSourceService: string;\n DataSourceBlobService: string;\n DeviceService: string;\n EmailService: string;\n FileService: string;\n IntegrationHub: string;\n NotificationService: string;\n PdfService: string;\n PublicFormsService: string;\n SchedulerService: string;\n SyncService: string;\n TemplateService: string;\n WebhookService: string;\n WorkflowService: string;\n};\n\nexport type GoFormzAppNames = {\n Acumatica: string;\n Alfresco: string;\n AWS: string;\n AzureBlobStorage: string;\n AzureEventGrid: string;\n BIM360: string;\n Box: string;\n CardConnect: string;\n CustomApp: string;\n DocuWare: string;\n Dropbox: string;\n Dynamics365: string;\n Egnyte: string;\n Fivetran: string;\n FullContact: string;\n GoFormzServices: string;\n GoFormzUtilities: string;\n GoogleBigQuery: string;\n GoogleCloudStorage: string;\n GoogleDrive: string;\n Microsoft: string;\n MicrosoftOffice365: string;\n NetSuite: string;\n Plangrid: string;\n PowerBI: string;\n Procore: string;\n QuickBooksOnline: string;\n Salesforce: string;\n ServiceM8: string;\n SharePoint: string;\n Slack: string;\n SmartSheet: string;\n Snowflake: string;\n SqlServer: string;\n Twilio: string;\n};\n\nlet appSettings: AppSettings = null;\nasync function LoadProductionAppSettings() {\n const emptyConfig = {};\n const path = `${window.resourceBasePath || '/'}appsettings.json?random=${uuidv4()}`;\n const appSettingsProduction = await axios(path, { method: 'GET' });\n if (!appSettingsProduction || !appSettingsProduction.data) {\n return emptyConfig;\n }\n\n const sanitizeProperties = (obj) => {\n if (!obj) {\n return;\n }\n\n for (const [key, value] of Object.entries(obj)) {\n if (!value) {\n delete obj[key];\n }\n }\n };\n\n sanitizeProperties(appSettingsProduction.data?.Routes);\n\n return appSettingsProduction.data;\n}\n\nasync function LoadDevelopmentAppSettings() {\n const emptyConfig = {};\n if (process.env.NODE_ENV === 'production') {\n return emptyConfig;\n }\n\n const path = `${window.resourceBasePath || '/'}appsettings.development.json?random=${uuidv4()}`;\n const appSettingsDevelopment = await axios(path, { method: 'GET' });\n if (!appSettingsDevelopment || !appSettingsDevelopment.data) {\n return emptyConfig;\n }\n\n //translate machine name to local machine name\n if (appSettingsDevelopment.data.RoutingEnvironment === '{MACHINE_NAME}') {\n appSettingsDevelopment.data.RoutingEnvironment = process.env.HOST_NAME;\n }\n\n const sanitizeProperties = (obj, removeEmpty = true) => {\n if (!obj) {\n return;\n }\n\n for (const [key, value] of Object.entries(obj)) {\n if (key.startsWith('Disabled.') || key.startsWith('__COMMENT__.') || (removeEmpty && !value)) {\n delete obj[key];\n }\n }\n };\n\n sanitizeProperties(appSettingsDevelopment.data, false);\n sanitizeProperties(appSettingsDevelopment.data?.ApimOverrides);\n sanitizeProperties(appSettingsDevelopment.data?.ServiceBusOverrides, false);\n sanitizeProperties(appSettingsDevelopment.data?.Apps);\n sanitizeProperties(appSettingsDevelopment.data?.SetBackendServiceUrlHeaders);\n\n return appSettingsDevelopment.data;\n}\n\nexport async function LoadAppSettings() {\n const appSettingsProduction = await LoadProductionAppSettings();\n const appSettingsDevelopment = await LoadDevelopmentAppSettings();\n appSettings = {\n ...appSettingsProduction,\n ...appSettingsDevelopment\n };\n}\n\nexport function GetAppSettings(): AppSettings {\n // return a copy\n return { ...appSettings };\n}\n\nexport const GoFormzServices: GoFormzServiceNames = {\n AccountService: 'AccountService',\n AIService: 'AIService',\n AnalyticsService: 'AnalyticsService',\n Api: 'Api',\n AuthenticationService: 'AuthenticationService',\n ApimService: 'ApimService',\n ApplicationService: 'ApplicationService',\n BillingService: 'BillingService',\n CmsService: 'CmsService',\n DataSourceService: 'DataSourceService',\n DataSourceBlobService: 'DataSourceBlobService',\n DeviceService: 'DeviceService',\n EmailService: 'EmailService',\n FileService: 'FileService',\n AppsApimService: 'AppsApimService',\n IntegrationHub: 'IntegrationHub',\n NotificationService: 'NotificationService',\n PdfService: 'PdfService',\n PublicFormsService: 'PublicFormsService',\n SchedulerService: 'SchedulerService',\n SyncService: 'SyncService',\n TemplateService: 'TemplateService',\n WebhookService: 'WebhookService',\n WorkflowService: 'WorkflowService'\n};\n\nexport const GoFormzApps: GoFormzAppNames = {\n Acumatica: 'Acumatica',\n Alfresco: 'Alfresco',\n AWS: 'AWS',\n AzureBlobStorage: 'AzureBlobStorage',\n AzureEventGrid: 'AzureEventGrid',\n BIM360: 'BIM360',\n Box: 'Box',\n CardConnect: 'CardConnect',\n CustomApp: 'CustomApp',\n DocuWare: 'DocuWare',\n Dropbox: 'Dropbox',\n Dynamics365: 'Dynamics365',\n Egnyte: 'Egnyte',\n Fivetran: 'Fivetran',\n FullContact: 'FullContact',\n GoFormzServices: 'GoFormzServices',\n GoFormzUtilities: 'GoFormzUtilities',\n GoogleBigQuery: 'GoogleBigQuery',\n GoogleCloudStorage: 'GoogleCloudStorage',\n GoogleDrive: 'GoogleDrive',\n Microsoft: 'Microsoft',\n MicrosoftOffice365: 'MicrosoftOffice365',\n NetSuite: 'NetSuite',\n Plangrid: 'Plangrid',\n PowerBI: 'PowerBI',\n Procore: 'Procore',\n QuickBooksOnline: 'QuickBooksOnline',\n Salesforce: 'Salesforce',\n ServiceM8: 'ServiceM8',\n SharePoint: 'SharePoint',\n Slack: 'Slack',\n SmartSheet: 'SmartSheet',\n Snowflake: 'Snowflake',\n SqlServer: 'SqlServer',\n Twilio: 'Twilio'\n};\n","import { GetAppSettings } from './AppSettings';\n\nconst LOCAL = 'LOCAL',\n DEV = 'DEV',\n ALPHA = 'ALPHA',\n BETA = 'BETA',\n PRODUCTION = 'PRODUCTION';\n\nexport function GetProductionAuthReturnUrl() {\n return GetAuthReturnUrl(PRODUCTION);\n}\n\nexport function GetAuthReturnUrl(environment = null) {\n const activeEnvironment = process.env.NODE_ENV !== 'production' ? LOCAL : GetAppSettings().Environment;\n const env = (environment || activeEnvironment).toUpperCase();\n switch (env) {\n case LOCAL:\n return `http://localhost:8080/App/AuthReturn`;\n case DEV:\n return `https://dev.goformz.com/App/AuthReturn`;\n case ALPHA:\n return `https://alpha.goformz.com/App/AuthReturn`;\n case BETA:\n return `https://beta.goformz.com/App/AuthReturn`;\n case PRODUCTION:\n default:\n return `https://app.goformz.com/App/AuthReturn`;\n }\n}\n","import { GetAppSettings } from './AppSettings';\nimport { isSpecialAccessLogin } from './helpers/UserUtility';\n\nconst setInitialSiftData = (beaconKey: string, sessionId: string) => {\n if (isSpecialAccessLogin()) {\n window['_sift'] = [];\n return true;\n }\n\n if (window['_sift'] == null) {\n return false;\n }\n\n setSiftData('_setAccount', beaconKey);\n setSiftData('_setSessionId', sessionId);\n setSiftData('_setUserId', '');\n setSiftData('_trackPageview');\n return true;\n};\n\nconst setSiftData = (key: string, value?: string) => {\n //sending data to sift when special accessed in will muck up the data\n if (isSpecialAccessLogin()) {\n return;\n }\n const sift = (window['_sift'] = window['_sift'] || []);\n value == null ? sift.push([key]) : sift.push([key, value]);\n};\n\nexport function InitializeSift() {\n const appSettings = GetAppSettings();\n const uniqueId = Date.now() + Math.random().toString(36).substr(2);\n const sessionId = localStorage.getItem('siftSessionId') ?? uniqueId;\n const beaconKey = appSettings.SiftBeaconKey;\n if (beaconKey == null) {\n return;\n }\n\n let checkCounter = 10;\n const siftIntervalCheck = window.setInterval(() => {\n //attempt to set the sift data and clear\n if (setInitialSiftData(beaconKey, sessionId)) {\n return window.clearInterval(siftIntervalCheck);\n }\n checkCounter--;\n\n //if the check counter has reduced to 0 then give up :(\n if (checkCounter <= 0) {\n return window.clearInterval(siftIntervalCheck);\n }\n }, 100);\n}\n\nexport function SiftPageView() {\n setSiftData('_trackPageview');\n}\n\nexport function SetSiftUserId(userId: string) {\n setSiftData('_setUserId', userId);\n}\n","import { GetAppSettings, GoFormzServices } from '../../AppSettings';\nimport { GetAuthReturnUrl, GetProductionAuthReturnUrl } from '../../AuthReturn';\nimport { analyticsTrack } from '../../helpers/AnalyticsUtility';\nimport { apimCall } from '../../helpers/api';\nimport { showBanner } from '../../helpers/MessageUtility';\nimport { getPathInfo, getQuerystringParameters } from '../../helpers/utility';\n\nexport async function connectApp(app, authenticationOption, configValues, appInstanceId, onAddingConnection) {\n try {\n let authCode = null;\n\n if (authenticationOption && authenticationOption.type === 'oauth2') {\n authCode = await authorizeOAuth2Connection(app, authenticationOption.authInfo, configValues);\n }\n\n if (onAddingConnection) {\n onAddingConnection();\n }\n\n const response = await apimCall(GoFormzServices.ApplicationService, `/appinstances${appInstanceId ? `/${appInstanceId}/reconnect` : ''}`, 'POST', {\n AppId: app.appId,\n ConnectionId: appInstanceId,\n AuthCode: authCode,\n RedirectUrl: GetProductionAuthReturnUrl(),\n Configs: formatConfigs(configValues),\n AuthenticationOptionId: authenticationOption ? authenticationOption.id : null\n });\n\n if (!appInstanceId) {\n analyticsTrack('Connected app added', { appId: app.id });\n }\n\n showBanner(`Application ${appInstanceId ? 'reconnected' : 'connected'} successfully`);\n\n return appInstanceId || response.data.data;\n } catch (err) {\n console.error(err);\n showBanner(`Error ${appInstanceId ? 'reconnecting' : 'connecting'} application`, 'error');\n throw err;\n }\n}\n\nfunction authorizeOAuth2Connection(app, authInfo, configValues) {\n return new Promise((resolve, reject) => {\n const w = 700;\n const h = 600;\n const y = window.outerHeight / 2 + window.screenY - h / 2;\n const x = window.outerWidth / 2 + window.screenX - w / 2;\n\n const url = getAuthUrl(app, authInfo, configValues);\n console.log(url);\n\n const addConnectionWindow = window.open(url, 'addconnection', `height=${h},width=${w},left=${x},top=${y}`);\n if (addConnectionWindow.focus) {\n addConnectionWindow.focus();\n }\n\n const redirectUrl = GetAuthReturnUrl();\n\n let pollTimeout = null;\n let pollTimer = null;\n pollTimer = setInterval(() => {\n let addConnectWindowUrl = '';\n try {\n addConnectWindowUrl = addConnectionWindow.document.URL;\n } catch (err) {\n // there will be an exception when trying to get the url when it's not on the same domain\n }\n\n if (addConnectWindowUrl.indexOf(redirectUrl) === 0) {\n clearInterval(pollTimer);\n clearTimeout(pollTimeout);\n addConnectionWindow.close();\n\n const pathInfo = getPathInfo(addConnectWindowUrl);\n if (pathInfo.params && pathInfo.params.code) {\n resolve(decodeURIComponent(pathInfo.params.code));\n } else {\n console.log(pathInfo.params);\n reject(new Error('Missing auth code'));\n }\n }\n }, 100);\n\n pollTimeout = setTimeout(() => {\n // timeout after 15 minutes\n clearInterval(pollTimer);\n addConnectionWindow.close();\n }, 900000);\n });\n}\n\nfunction getAuthUrl(app, authInfo, configValues) {\n // NetSuite requires the state to be longer than just the environment ¯\\_(ツ)_/¯\n const stateConfig = { env: getEnvironment(), extra: 'a' };\n const authorizeUrl = replaceConfigVariables(authInfo.authorizeUrl, app, configValues);\n\n const clientId = encodeURIComponent(replaceConfigVariables(authInfo.clientId, app, configValues));\n const redirectUri = encodeURIComponent(GetProductionAuthReturnUrl());\n const state = btoa(JSON.stringify(stateConfig));\n const scope = replaceConfigVariables(authInfo.scope, app, configValues);\n const scopeUrl = scope ? `&scope=${scope}` : '';\n\n // Dropbox doesn't support the prompt parameter\n const appsThatDoNotSupportPrompt = ['9522abf4-caf6-499d-ac4e-68df695613e3'];\n\n const promptUrl = appsThatDoNotSupportPrompt.indexOf(app.appId) === -1 && authorizeUrl.indexOf('prompt=') === -1 ? '&prompt=login' : '';\n const delimiter = authorizeUrl.indexOf('?') > -1 ? '&' : '?';\n\n return `${authorizeUrl}${delimiter}response_type=code&client_id=${clientId}&redirect_uri=${redirectUri}&state=${state}${scopeUrl}${promptUrl}`;\n}\n\nconst startVariable = '${';\nconst endVariable = '}';\n\nfunction replaceConfigVariables(value, app, configValues) {\n let newValue = value;\n const appConfigs = app.configs || [];\n if (appConfigs && newValue) {\n const authorizeUrlConfig = appConfigs.filter((x) => x.configType === 'auth');\n for (const config of authorizeUrlConfig) {\n newValue = newValue.replace(`${startVariable}${config.key}${endVariable}`, configValues[config.key] || '');\n }\n }\n return newValue;\n}\n\nfunction getEnvironment() {\n return process.env.NODE_ENV !== 'production' ? 'Local' : GetAppSettings().Environment;\n}\n\nexport function RedirectAppAuthReturnIfNeeded() {\n if (window.location.pathname.toLowerCase() === '/app/authreturn' && window.location.search) {\n const params = getQuerystringParameters(true);\n const decodedState = atob(decodeURIComponent(params.state));\n const state = JSON.parse(decodedState);\n const env = state.env;\n const currentEnvironment = getEnvironment();\n\n if (env !== currentEnvironment) {\n const url = `${GetAuthReturnUrl(env)}${window.location.search}`;\n window.location.href = url;\n }\n }\n}\n\nfunction formatConfigs(configValues) {\n const configs = [];\n if (configValues) {\n for (const key in configValues) {\n // eslint-disable-next-line no-prototype-builtins\n if (configValues.hasOwnProperty(key)) {\n configs.push({\n Key: key,\n Value: configValues[key]\n });\n }\n }\n }\n return configs;\n}\n","import 'regenerator-runtime/runtime';\nimport { UserManager, Log, User, SigninRedirectArgs } from 'oidc-client-ts';\nimport axios from 'axios';\nimport { v4 as uuidv4 } from 'uuid';\nimport { GetAppSettings } from '../AppSettings';\nimport { getQuerystringParameters } from '../helpers/utility';\nimport { NavigateFunction } from 'react-router-dom';\n\nexport type RouterOptions = {\n navigate: NavigateFunction;\n};\n\nlet accessToken: string = null;\nlet idToken: string = null;\nlet userManager: UserManager = null;\n\nLog.setLogger(console);\n\nfunction onUserLoaded(user: User) {\n accessToken = user.access_token;\n idToken = user.id_token;\n}\n\nfunction onStorageChanged(e: StorageEvent) {\n if (e.key === 'logout') {\n InternalLogout();\n }\n // when Independent User clicks on switch account, all other open tabs will redirect to marketing home page.\n // This may change and is placeholder for now while customers beta test\n if (e.key === 'switchAccount') {\n window.open('https://www.goformz.com/', '_self');\n }\n if (e.key === 'accountDeleted') {\n // here we're outside the context of the router and we're navigating to\n // an account deleted page, so it's already to depend on window's location\n // directly\n window.location.replace('/accountdeleted');\n }\n}\n\nexport function switchAccounts() {\n if (window.Intercom) {\n window.Intercom('shutdown');\n }\n\n // reset the auth:redirect url so we don't get redirected to /iuprofile after selecting an account\n sessionStorage.setItem('auth:redirect', '/');\n\n const signinRequestSettings: SigninRedirectArgs = {};\n signinRequestSettings.prompt = 'login';\n signinRequestSettings.extraQueryParams = { switchAccount: true };\n\n userManager.signinRedirect(signinRequestSettings);\n}\n\nexport function LoadUserManager() {\n const appSettings = GetAppSettings();\n\n userManager = new UserManager({\n authority: appSettings.AuthenticationServiceUrl,\n client_id: appSettings.AuthClientId,\n client_secret: appSettings.AuthClientSecret,\n redirect_uri: window.location.origin,\n post_logout_redirect_uri: window.location.origin,\n response_type: 'code',\n response_mode: 'query',\n scope: 'openid profile basic',\n silent_redirect_uri: `${window.location.origin}/silent_renew`,\n popup_redirect_uri: `${window.location.origin}/popup_callback`,\n loadUserInfo: true,\n filterProtocolClaims: true,\n automaticSilentRenew: true,\n accessTokenExpiringNotificationTimeInSeconds: 20 // defaults to 60\n });\n userManager.events.addUserLoaded(onUserLoaded);\n window.addEventListener('storage', (e) => onStorageChanged(e));\n}\n\nexport function GetAccessToken() {\n return accessToken;\n}\n\nexport function GetUserManager() {\n return userManager;\n}\n\nexport async function Logout() {\n if (window.Intercom) {\n window.Intercom('shutdown');\n }\n await InternalLogout();\n localStorage.clear();\n sessionStorage.clear();\n localStorage.setItem('logout', uuidv4());\n}\n\nasync function InternalLogout() {\n const user = await userManager.getUser();\n if (user) {\n await userManager.removeUser();\n userManager.signoutRedirect({ id_token_hint: idToken });\n }\n}\n\nexport async function LogoutNoRedirect() {\n if (window.Intercom) {\n window.Intercom('shutdown');\n }\n await userManager.removeUser();\n userManager.signoutSilent({ id_token_hint: idToken });\n localStorage.clear();\n sessionStorage.clear();\n localStorage.setItem('accountDeleted', uuidv4());\n}\n\nexport async function HandleAuthentication(setAuthenticationError: React.Dispatch>, routerOptions: RouterOptions): Promise {\n const queryParams = getQuerystringParameters(true, true);\n const hostParts = window.location.hostname.split('.');\n\n let idpName = null;\n if (queryParams.sso) {\n idpName = queryParams.sso;\n } else if (hostParts.length === 4) {\n // this is to support urls like att.app.goformz.com\n idpName = hostParts[0];\n }\n const signinRequestSettings: Record = idpName ? { acr_values: `idp:${idpName}` } : {};\n\n if (queryParams.prompt === 'login') {\n signinRequestSettings.prompt = 'login';\n }\n\n if (queryParams.signup) {\n // if signup passed in, go to the signup page\n return userManager.signinRedirect({\n acr_values: 'signup',\n prompt: 'login'\n });\n } else if (queryParams.code && queryParams.state && window.location.pathname === '/') {\n // returning from login page\n try {\n await userManager.signinRedirectCallback();\n const path = sessionStorage.getItem('auth:redirect') || '/';\n\n routerOptions.navigate(path, { state: { authRedirect: true } });\n } catch (err) {\n console.error(err);\n\n if (err.message.indexOf('exp is in the past') > -1) {\n setAuthenticationError('There was an error logging you in. Please verify your system clock has the correct time and retry.');\n routerOptions.navigate('/');\n } else if (err.message.indexOf('iat is in the future') > -1) {\n setAuthenticationError('There was an error logging you in. Please verify your system clock has the correct time and retry.');\n } else if (err.message.indexOf('No matching state found in storage') > -1) {\n // we want to force prompt a login so we don't end up in an endless redirect loop\n signinRequestSettings.prompt = 'login';\n userManager.signinRedirect(signinRequestSettings);\n } else {\n setAuthenticationError('There was an error logging you in. Please retry. If this error persists, please contact support.');\n }\n }\n return;\n }\n\n const user = await userManager.getUser();\n if (!user) {\n // never been logged in\n sessionStorage.setItem('auth:redirect', getRedirectUrl());\n userManager.signinRedirect(signinRequestSettings);\n } else {\n // we think we're logged in so lets try to renew. If that fails we need to login\n try {\n await userManager.signinSilent();\n } catch (err) {\n sessionStorage.setItem('auth:redirect', getRedirectUrl());\n userManager.signinRedirect(signinRequestSettings);\n }\n }\n}\n\nfunction getRedirectUrl() {\n let url = window.location.href.replace(window.location.origin, '');\n url = url.replace(/&prompt=login$/g, '');\n return url;\n}\n\nfunction showReloginPrompt(callback) {\n import('../helpers/MessageUtility').then((messageUtility) => {\n messageUtility.showMessage(\n 'Session Expired',\n 'For security reasons, your session has expired.',\n async (didConfirm) => {\n if (!didConfirm) {\n return;\n }\n\n // sign in\n try {\n const currentUser = await userManager.getUser();\n await userManager.signinPopup();\n const newUser = await userManager.getUser();\n\n //if they logged in as a different user then boot them to the login screen.\n //we dont trust this sort of tom foolery\n if (currentUser.profile.sub !== newUser.profile.sub) {\n await InternalLogout();\n }\n\n callback();\n } catch (err) {\n console.error(err);\n }\n },\n 'Log in'\n );\n });\n}\n\naxios.interceptors.response.use(\n (response) => response,\n async (error) => {\n const status = error?.response?.status;\n\n if (error.config && (error.config.headers['X-Policy'] || error.config.headers['X-Policy-Token'])) {\n // don't retry for public forms\n return Promise.reject(error);\n }\n\n if (error.config && status === 401) {\n if (error.config.retryCount > 0) {\n console.log(`Not going to retry because retryCount is ${error.config.retryCount}`);\n return Promise.reject(error);\n }\n\n await new Promise(async (callback) => {\n try {\n await userManager.signinSilent();\n callback();\n } catch (err) {\n showReloginPrompt(callback);\n }\n });\n\n // retry\n const retryRequest = error.config;\n retryRequest.headers.Authorization = `Bearer ${GetAccessToken()}`;\n retryRequest.retryCount = retryRequest.retryCount || 0;\n retryRequest.retryCount++;\n\n return axios.request(retryRequest);\n }\n return Promise.reject(error);\n }\n);\n","import { GetAppSettings } from '../AppSettings';\nimport { canIUse, Features } from '../helpers/PermissionUtility';\n\nexport function InitializeAnalytics() {\n // This just creates the stubbed out functions. No external scripts should be loaded at this point.\n // These should be called whether or not the user has tracking available.\n initializeSegment();\n}\n\nexport function LoadAnalytics(isIndependentUser?: boolean) {\n const appSettings = GetAppSettings();\n if (canIUse(Features.EnableUserTracking) || isIndependentUser) {\n loadSegment(appSettings.SegmentApiKey);\n }\n}\n\nfunction initializeSegment() {\n try {\n const analytics = (window.analytics = window.analytics || []);\n if (!analytics.initialize)\n if (analytics.invoked) window.console && console.error && console.error('Segment snippet included twice.');\n else {\n analytics.invoked = !0;\n analytics.methods = [\n 'trackSubmit',\n 'trackClick',\n 'trackLink',\n 'trackForm',\n 'pageview',\n 'identify',\n 'reset',\n 'group',\n 'track',\n 'ready',\n 'alias',\n 'page',\n 'once',\n 'off',\n 'on'\n ];\n analytics.factory = function (t) {\n return function () {\n // eslint-disable-next-line prefer-rest-params\n const e = Array.prototype.slice.call(arguments);\n e.unshift(t);\n analytics.push(e);\n return analytics;\n };\n };\n for (let t = 0; t < analytics.methods.length; t++) {\n const e = analytics.methods[t];\n analytics[e] = analytics.factory(e);\n }\n analytics.load = function (t) {\n const e = document.createElement('script');\n e.type = 'text/javascript';\n e.async = !0;\n e.src = ('https:' === document.location.protocol ? 'https://' : 'http://') + 'cdn.segment.com/analytics.js/v1/' + t + '/analytics.min.js';\n const n = document.getElementsByTagName('script')[0];\n n.parentNode.insertBefore(e, n);\n };\n analytics.SNIPPET_VERSION = '3.1.0';\n }\n } catch (err) {\n console.error(err);\n }\n}\n\nfunction loadSegment(segmentApiKey) {\n try {\n window.analytics.load(segmentApiKey);\n } catch (err) {\n console.error(err);\n }\n}\n\nexport const analyticsIdentify = (id, data) => {\n try {\n if (window.analytics && window.analytics.identify) {\n window.analytics.identify(id, data);\n }\n } catch (err) {\n // ignore\n console.error(err);\n }\n};\n\nexport const analyticsGroup = (id, data) => {\n try {\n // segment\n if (window.analytics && window.analytics.group) {\n window.analytics.group(id, data);\n }\n } catch (err) {\n console.error(err);\n }\n};\n\nexport const analyticsPage = (route, path) => {\n try {\n // segment\n if (window.analytics && window.analytics.page) {\n const enhancedData = enhanceData();\n window.analytics.page(route, { path }, enhancedData);\n }\n } catch (err) {\n // ignore\n console.error(err);\n }\n};\n\nexport const analyticsTrack = (eventName: string, data?: { [name: string]: unknown }) => {\n try {\n // segment\n if (window.analytics && window.analytics.track) {\n const enhancedData = enhanceData(data);\n window.analytics.track(eventName, enhancedData);\n }\n } catch (err) {\n // ignore\n console.error(err);\n }\n};\n\nconst enhanceData = (data?) => {\n const clientId = window.analytics.user?.()?.traits?.()?.usagedataid;\n const clientName = window.analytics.user?.()?.traits?.()?.clientName;\n const enhancedData = {\n source: 'Web',\n clientId: clientId,\n usagedataid: clientId, //legacy clientId\n groupId: clientId //some segment destinations only allow groupId\n };\n\n //adding client name so that segment can pre filter data before sending to destinations\n if (clientName) {\n enhancedData['clientName'] = clientName;\n }\n\n return { ...enhancedData, ...(data || {}) };\n};\n","import { produce } from 'immer';\nimport { appContext } from '../AppContext';\nimport { UserPersistedStateShowConfirmationModal } from '../persistedstate/users/userpersistedstate-types';\n\nconst MSG_SHOW = 'MSG_SHOW';\nconst MSG_CLOSE = 'MSG_CLOSE';\nconst MSG_UPDATE = 'MSG_UPDATE';\nconst MSG_WORKING = 'MSG_WORKING';\n\nexport type MessagesState = MessageState[];\nexport type MessageState = {\n id: number;\n message: string;\n working: boolean;\n text: string;\n subText: string | React.ReactNode;\n type: 'banner' | 'alert' | 'confirm' | 'prompt';\n multiLine: boolean;\n maxLength: number;\n title: string;\n noText: string;\n yesText: string;\n cancelText: string;\n okText: string;\n linkText: string;\n linkUrl: string;\n level: number;\n messageTooltip?: string;\n skipConfirmationModalKey: keyof UserPersistedStateShowConfirmationModal;\n};\n\nexport type MessageOption = { msg?: string | React.ReactNode } & Partial;\nexport type MessageCallback = (result: boolean, text: string, close: boolean) => void | Promise;\n\nexport const callbackFunctions: { [name: string | number]: MessageCallback } = {};\n\nexport const closeMessage = async (id: string | number, didConfirm?: boolean, text?: string, didClose?: boolean) => {\n if (callbackFunctions[id]) {\n appContext.store.dispatch({\n type: MSG_WORKING,\n payload: {\n id\n }\n });\n\n await Promise.resolve(callbackFunctions[id](didConfirm, text, didClose));\n }\n delete callbackFunctions[id];\n appContext.store.dispatch({\n type: MSG_CLOSE,\n payload: {\n id\n }\n });\n};\n\nexport const showBanner = (message: string, level?: TypeMePlease, linkText?: string, linkUrl?: string, duration?: number) => {\n const id = Math.random();\n appContext.store.dispatch({\n type: MSG_SHOW,\n payload: {\n type: 'banner',\n message,\n id,\n level,\n linkText,\n linkUrl\n }\n });\n setTimeout(() => {\n closeMessage(id, false);\n }, duration ?? 5000);\n};\n\nexport const showConfirm = (options: MessageOption, callback: MessageCallback) => {\n const id = Math.random();\n const { msg, title } = options;\n callbackFunctions[id] = callback;\n appContext.store.dispatch({\n type: MSG_SHOW,\n payload: {\n type: 'confirm',\n title,\n message: msg,\n id,\n yesText: options.yesText || 'Yes',\n noText: options.noText || (!options.cancelText && 'No'),\n cancelText: options.cancelText,\n messageTooltip: options.messageTooltip,\n skipConfirmationModalKey: options.skipConfirmationModalKey\n }\n });\n};\nexport const confirm = showConfirm;\n\nexport const showPrompt = (options: MessageOption, callback: MessageCallback) => {\n const id = Math.random();\n const { msg, title, text } = options;\n const multiLine = options.multiLine || false;\n const maxLength = options.maxLength || 100;\n callbackFunctions[id] = callback;\n appContext.store.dispatch({\n type: MSG_SHOW,\n payload: {\n type: 'prompt',\n title,\n message: msg,\n id,\n okText: options.okText || 'Ok',\n cancelText: 'Cancel',\n text: (text || '').substring(0, maxLength),\n maxLength,\n multiLine,\n subText: options.subText || null\n }\n });\n};\n\nexport const showMessage = (title: string, message?: string, callback?: MessageCallback, okText?: string) => {\n const id = Math.random();\n if (callback) {\n callbackFunctions[id] = callback;\n }\n appContext.store.dispatch({\n type: MSG_SHOW,\n payload: {\n type: 'alert',\n title,\n message,\n id,\n okText: okText || 'Ok'\n }\n });\n return id;\n};\n\nexport const alert = showMessage;\n\nexport const updateMessage = (id: string, message: string) => {\n appContext.store.dispatch({\n type: MSG_UPDATE,\n payload: {\n message,\n id\n }\n });\n};\n\nconst closeMessageReducer = (state: MessagesState, id: number) => {\n const messageIndex = state.findIndex((x) => x.id === id);\n if (messageIndex > -1) {\n state.splice(messageIndex, 1);\n }\n return state;\n};\n\nconst updateMessageReducer = (state: MessagesState, id: number, message: string) => {\n const messageIndex = state.findIndex((x) => x.id === id);\n if (messageIndex > -1) {\n state[messageIndex].message = message;\n }\n return state;\n};\n\nconst updateWorkingReducer = (state: MessagesState, id: number, working: boolean) => {\n const messageIndex = state.findIndex((x) => x.id === id);\n if (messageIndex > -1) {\n state[messageIndex].working = working;\n }\n return state;\n};\n\nexport const messageBoxReducer = (state: MessagesState = [], action): MessagesState => {\n if (!action) return state;\n return produce(state, (draft) => reduce(draft, action));\n};\n\nfunction reduce(state: MessagesState, action): MessagesState {\n switch (action.type) {\n case MSG_SHOW:\n state.push(action.payload);\n return state;\n case MSG_CLOSE:\n return closeMessageReducer(state, action.payload.id);\n case MSG_UPDATE:\n return updateMessageReducer(state, action.payload.id, action.payload.message);\n case MSG_WORKING:\n return updateWorkingReducer(state, action.payload.id, true);\n\n default:\n return state;\n }\n}\n","/* eslint no-bitwise: 0 */\n\n/* Must match GoFormz.Common.Services.Core/GoFormz.Common.Services.Core/Enums/Permission.cs */\nexport const enum Operations {\n Read = 1,\n ReadAll = 2,\n ViewReports = 11,\n CanLoginToManagment = 12, // Not used, should be removed from all repos\n ViewTemplates = 13,\n PublicShare = 14,\n FormCopy = 15,\n FormRename = 16,\n FormTransfer = 17,\n FormDelete = 18,\n FormEdit = 19,\n FormComplete = 20,\n FormDeleteDrafts = 21,\n FormDownloadPDF = 22,\n FormTags = 23,\n TagCreate = 24,\n TagManage = 25,\n ManageDataSources = 26,\n ManageWorkflows = 27,\n ManageUsersGroups = 28\n}\n\nexport enum Settings {\n SkipDashboard = 'skipDashboard',\n SkipPublishedTemplatePrompt = 'skipPublishedTemplatePrompt',\n SkipAddTemplateFieldsModal = 'skipAddTemplateFieldsModal',\n ExportDelimiter = 'exportDelimiter',\n ExportNewlines = 'exportNewlines',\n ExportTimezone = 'exportTimezone',\n ExportDateFormat = 'exportDateFormat'\n}\n\nexport enum LicenseValues {\n FormsEnabled = 'formsEnabled',\n FormLimit = 'formLimit',\n ReportsEnabled = 'reportsEnabled',\n UserAccountLimit = 'userAccountLimit'\n}\n\nexport const enum Features {\n AccountUserList = 'AccountUserList',\n AddOns = 'AddOns',\n AiTemplateBuilder = 'AiTemplateBuilder',\n AllowAdminsToChangePasswords = 'AllowAdminsToChangePasswords',\n ApiDatasourcesReadAccess = 'ApiDatasourcesReadAccess',\n ApiDatasourcesWriteAccess = 'ApiDatasourcesWriteAccess',\n ApiReadAccess = 'ApiReadAccess',\n ApiWriteAccess = 'ApiWriteAccess',\n AttachFilesMaxNumber = 'AttachFilesMaxNumber',\n AttachFilesMaxSize = 'AttachFilesMaxSize',\n AttachFilesToForms = 'AttachFilesToForms',\n AudioField = 'AudioField',\n AudioFieldMaxLength = 'AudioFieldMaxLength',\n AutomatedTesting = 'AutomatedTesting',\n AutoTag = 'AutoTag',\n Barcode = 'Barcode',\n BrowserPdfProcessing = 'BrowserPdfProcessing',\n ChooseJourney = 'ChooseJourney',\n ConnectedApps = 'ConnectedApps',\n CTPFlow = 'CTPFlow',\n CustomActionDeepLink = 'CustomActionDeepLink',\n CustomActionHPMeasure = 'CustomActionHPMeasure',\n CustomActionWebView = 'CustomActionWebView',\n CustomActionWorkflowTrigger = 'CustomActionWorkflowTrigger',\n CustomSSO = 'CustomSSO',\n CustomUserAttributes = 'CustomUserAttributes',\n DarkMode = 'DarkMode',\n DateTimeDefaultValue = 'DateTimeDefaultValue',\n DisableAutoEmail = 'DisableAutoEmail',\n DisableEmailLinks = 'DisableEmailLinks',\n DisableOnboardingNavigation = 'DisableOnboardingNavigation',\n DisableSuccessLauncher = 'DisableSuccessLauncher',\n DisableTakeOwnership = 'DisableTakeOwnership',\n PremiumDataSources = 'PremiumDataSources',\n PremiumPerDataSource = 'PremiumPerDataSource',\n EmailRecipientMax = 'EmailRecipientMax',\n EnableUserTracking = 'EnableUserTracking',\n EnhancedNotificationCenter = 'EnhancedNotificationCenter',\n EntryExperience24 = 'EntryExperience24',\n eSignature = 'eSignature',\n FieldCalculations = 'FieldCalculations',\n FileAttachment = 'FileAttachment',\n FileAttachmentMaxFileCount = 'FileAttachmentMaxFileCount',\n FileAttachmentMaxFileSize = 'FileAttachmentMaxFileSize',\n FileManagement = 'FileManagement',\n FormCreatedTrigger = 'FormCreatedTrigger',\n FormRevert = 'FormRevert',\n FormTransferWorkflow = 'FormTransferWorkflow',\n GroupTriggers = 'GroupTriggers',\n HideBillingNextButton = 'HideBillingNextButton',\n HierarchicalGroups = 'HierarchicalGroups',\n HIPAASetup = 'HIPAASetup',\n IHRevert = 'IHRevert',\n InactivityTimeout = 'InactivityTimeout',\n InteractiveForms = 'InteractiveForms',\n JobPageRefresh = 'JobPageRefresh',\n ListViewBorderColor = 'ListViewBorderColor',\n ManageSubscription = 'ManageSubscription',\n ManualTrigger = 'ManualTrigger',\n MaskOnComplete = 'MaskOnComplete',\n NamedFunctions = 'NamedFunctions',\n PageElementCheckbox = 'PageElementCheckbox',\n PageElementTable = 'PageElementTable',\n PostPublishPathways = 'PostPublishPathways',\n PostSubmitPublicFormsSurvey = 'PostSubmitPublicFormsSurvey',\n PreviewFeatures = 'PreviewFeatures',\n PublicFormCreditLimit = 'PublicFormCreditLimit',\n PublicFormsPilot = 'PublicFormsPilot',\n PublicFormsSendText = 'PublicFormsSendText',\n PublicFormSubmittedTrigger = 'PublicFormSubmittedTrigger',\n PublicFormV2 = 'PublicFormV2',\n PublicShare = 'PublicShare',\n ReportAccess = 'ReportAccess',\n ReportColumnFiltering = 'ReportColumnFiltering',\n ReportColumnSorting = 'ReportColumnSorting',\n ReportNumberOfTemplates = 'ReportNumberOfTemplates',\n RetainImageAsAttachment = 'RetainImageAsAttachment',\n SavePublicForms = 'SavePublicForms',\n ScheduleTrigger = 'ScheduleTrigger',\n SetDatasourceOffline = 'SetDatasourceOffline',\n SubscriptionUIRefresh = 'SubscriptionUIRefresh',\n TagWorkflow = 'TagWorkflow',\n TemplateEvents = 'TemplateEvents',\n TemplateFieldDateTimeFormat = 'TemplateFieldDateTimeFormat',\n TemplatePublishing = 'TemplatePublishing',\n UsePublicFormCreditLimits = 'UsePublicFormCreditLimits',\n UsersInMultipleGroups = 'UsersInMultipleGroups',\n UserTriggers = 'UserTriggers',\n WebBannerMessage = 'WebBannerMessage',\n Workflow = 'Workflow',\n WorkflowCeaseOnLostPermission = 'WorkflowCeaseOnLostPermission',\n WorkflowRequiredInputs = 'WorkflowRequiredInputs'\n}\n\nexport const FeatureDefaults = {\n [Features.EmailRecipientMax]: 20\n};\n\n/** This is the old way of defining features. It is still used in some places. */\nexport enum AppFeatures {\n AddOns = 'AddOns',\n ApiCredentialsUI = 'ApiCredentialsUI',\n BoxIntegration = 'BoxIntegration',\n BulkReRunJobs = 'BulkReRunJobs',\n ConnectedApps = 'ConnectedApps',\n CreateGroups = 'CreateGroups',\n CreateUsers = 'CreateUsers',\n Dashboard = 'Dashboard',\n PremiumPerDataSource = 'PremiumPerDataSource',\n eSignature = 'eSignature',\n FormComplete = 'FormComplete',\n FormCopy = 'FormCopy',\n FormDelete = 'FormDelete',\n FormDeleteDrafts = 'FormDeleteDrafts',\n FormList = 'FormList',\n FormPDF = 'FormPDF',\n FormRename = 'FormRename',\n FormReopen = 'FormReopen',\n FormRevert = 'FormRevert',\n FormTransfer = 'FormTransfer',\n HIPAASetup = 'HIPAASetup',\n LegacyPricing = 'LegacyPricing',\n ManageAutoEmail = 'ManageAutoEmail',\n ManageDataSources = 'ManageDataSources',\n ManageSettings = 'ManageSettings',\n ManageSubscription = 'ManageSubscription',\n ManageUsers = 'ManageUsers',\n ManageUsersAdmin = 'ManageUsersAdmin',\n MessageStatus = 'MessageStatus',\n PreviewFeatures = 'PreviewFeatures',\n ProfileNotifications = 'ProfileNotifications',\n PublicShare = 'PublicShare',\n PublicShareBuyCredits = 'PublicShareBuyCredits',\n PublicFormCreditLimits = 'PublicFormCreditLimits',\n PublicFormCreditLimitsTrial = 'PublicFormCreditLimitsTrial',\n Reports = 'Reports',\n RetainImageAsAttachment = 'RetainImageAsAttachment',\n TagAdd = 'TagAdd',\n TagCreate = 'TagCreate',\n TagManage = 'TagManage',\n TagModal = 'TagModal',\n TakeOwnership = 'TakeOwnership',\n TemplateEditorJson = 'TemplateEditorJson',\n TemplateList = 'TemplateList',\n TemplateFolders = 'TemplateFolders',\n WebhooksUI = 'WebhooksUI',\n Workflow = 'Workflow',\n WorkflowJson = 'WorkflowJson'\n}\n","/* eslint no-bitwise: 0 */\nimport { RootState } from 'gf-types';\nimport { hasBinaryPermission, getFeature, getLicenseValue, isPublicForm } from './PermissionUtility';\nimport { AppFeatures, Features, LicenseValues, Operations } from './PermissionUtility-types';\nimport { isSpecialAccessLogin } from './UserUtility';\nimport { SubscriptionCodes } from './constants';\n\nconst getFeatureValueOnly = (feature: Features) => getFeature(feature, false);\n\nconst AppFeatureCanIUse: { [key: string]: (state: RootState) => boolean } = {\n [AppFeatures.AddOns]: (state) => state.profile.isAdmin && getFeatureValueOnly(Features.AddOns),\n [AppFeatures.ApiCredentialsUI]: (state) =>\n state.profile.isAdmin &&\n (getFeatureValueOnly(Features.ApiReadAccess) ||\n getFeatureValueOnly(Features.ApiWriteAccess) ||\n getFeatureValueOnly(Features.ApiDatasourcesReadAccess) ||\n getFeatureValueOnly(Features.ApiDatasourcesWriteAccess)),\n [AppFeatures.ConnectedApps]: (state) =>\n ((state.profile.isAdmin || hasBinaryPermission(Operations.ManageWorkflows)) && getFeatureValueOnly(Features.ConnectedApps)) || state.profile.isInTrial,\n [AppFeatures.CreateGroups]: (state) => state.profile.client.subscription !== SubscriptionCodes.Teacher,\n [AppFeatures.CreateUsers]: (state) => state.profile.client.subscription !== SubscriptionCodes.Teacher,\n [AppFeatures.Dashboard]: (state) => state.profile.isAdmin,\n [AppFeatures.PremiumPerDataSource]: (_state) => getFeatureValueOnly(Features.PremiumDataSources) && getFeatureValueOnly(Features.PremiumPerDataSource),\n [AppFeatures.eSignature]: (_state) => isPublicForm() || getFeatureValueOnly(Features.eSignature),\n [AppFeatures.FormCopy]: (_state) => hasBinaryPermission(Operations.FormCopy),\n [AppFeatures.FormComplete]: (_state) => hasBinaryPermission(Operations.FormComplete),\n [AppFeatures.FormDelete]: (_state) => hasBinaryPermission(Operations.FormDelete),\n [AppFeatures.FormDeleteDrafts]: (_state) => hasBinaryPermission(Operations.FormDeleteDrafts),\n //Re-evaluate to see if getLicenseValue here can be removed https://goformz.atlassian.net/browse/GD-21839\n [AppFeatures.FormList]: (_state) => !!getLicenseValue(LicenseValues.FormsEnabled) || getFeatureValueOnly(Features.PublicFormsPilot),\n [AppFeatures.FormPDF]: (_state) => hasBinaryPermission(Operations.FormDownloadPDF),\n [AppFeatures.FormRename]: (_state) => hasBinaryPermission(Operations.FormRename),\n [AppFeatures.FormReopen]: (_state) => hasBinaryPermission(Operations.FormEdit),\n [AppFeatures.FormRevert]: (state) => state.profile.isAdmin && getFeatureValueOnly(Features.FormRevert),\n [AppFeatures.FormTransfer]: (_state) => hasBinaryPermission(Operations.FormTransfer),\n [AppFeatures.HIPAASetup]: (state) => state.profile.isAdmin && getFeatureValueOnly(Features.HIPAASetup),\n [AppFeatures.LegacyPricing]: (state) => state.profile.client.legacyPricing,\n [AppFeatures.ManageAutoEmail]: (state) =>\n state.profile.isAdmin && !getFeatureValueOnly(Features.DisableAutoEmail) && getFeatureValueOnly(Features.TemplateEvents),\n [AppFeatures.ManageDataSources]: (state) => state.profile.isAdmin || hasBinaryPermission(Operations.ManageDataSources),\n [AppFeatures.ManageSettings]: (state) => state.profile.isAdmin,\n [AppFeatures.ManageSubscription]: (state) =>\n state.profile.isAdmin && !state.profile.client.isManualInvoice && getFeatureValueOnly(Features.ManageSubscription),\n [AppFeatures.ManageUsers]: (_state) => hasBinaryPermission(Operations.ManageUsersGroups),\n [AppFeatures.ManageUsersAdmin]: (state) => state.profile.isAdmin,\n [AppFeatures.MessageStatus]: (state) => state.profile.isAdmin,\n [AppFeatures.PreviewFeatures]: (state) => state.profile.isAdmin && getFeatureValueOnly(Features.PreviewFeatures),\n [AppFeatures.ProfileNotifications]: (state) => state.profile.isAdmin,\n [AppFeatures.PublicShare]: (state) =>\n hasBinaryPermission(Operations.PublicShare) &&\n (state.profile.isInTrial || getFeatureValueOnly(Features.PublicShare) || getFeatureValueOnly(Features.PublicFormsPilot)),\n [AppFeatures.PublicShareBuyCredits]: (state) =>\n state.profile.isAdmin &&\n !state.profile.client.isManualInvoice &&\n getFeatureValueOnly(Features.ManageSubscription) &&\n !getFeatureValueOnly(Features.PublicFormsPilot),\n [AppFeatures.PublicFormCreditLimits]: (state) =>\n getFeatureValueOnly(Features.UsePublicFormCreditLimits) && !state.profile.client.isManualInvoice && !state.profile.isInTrial,\n [AppFeatures.PublicFormCreditLimitsTrial]: (state) => getFeatureValueOnly(Features.UsePublicFormCreditLimits) && state.profile.isInTrial,\n [AppFeatures.Reports]: (state) => hasBinaryPermission(Operations.ViewReports) && (state.profile.isInTrial || getFeatureValueOnly(Features.ReportAccess)),\n [AppFeatures.RetainImageAsAttachment]: (_state) => getFeatureValueOnly(Features.FileManagement) && getFeatureValueOnly(Features.RetainImageAsAttachment),\n [AppFeatures.TagAdd]: () => hasBinaryPermission(Operations.FormTags),\n [AppFeatures.TagCreate]: () => hasBinaryPermission(Operations.TagCreate),\n [AppFeatures.TagManage]: () => hasBinaryPermission(Operations.TagManage),\n [AppFeatures.TagModal]: () =>\n hasBinaryPermission(Operations.FormTags) || hasBinaryPermission(Operations.TagCreate) || hasBinaryPermission(Operations.TagManage),\n [AppFeatures.TakeOwnership]: (_state) => !getFeatureValueOnly(Features.DisableTakeOwnership) && hasBinaryPermission(Operations.FormTransfer),\n [AppFeatures.TemplateEditorJson]: (_state) => isSpecialAccessLogin(),\n [AppFeatures.TemplateList]: (_state) => hasBinaryPermission(Operations.ViewTemplates),\n [AppFeatures.TemplateFolders]: (state) => state.profile.isAdmin,\n [AppFeatures.WebhooksUI]: (state) => getFeatureValueOnly(Features.ApiReadAccess) && state.profile.isAdmin,\n [AppFeatures.Workflow]: (_state) => hasBinaryPermission(Operations.ManageWorkflows) && (getFeatureValueOnly(Features.Workflow) || _state.profile.isInTrial),\n [AppFeatures.WorkflowJson]: (_state) => isSpecialAccessLogin() && hasBinaryPermission(Operations.ManageWorkflows)\n};\n\nexport default AppFeatureCanIUse;\n","/* eslint no-bitwise: 0 */\nimport { RootState } from 'gf-types';\nimport { appContext } from '../AppContext';\nimport { GoFormzServices } from '../AppSettings';\nimport { apimCall } from './api';\nimport { AppFeatures, FeatureDefaults, Features, LicenseValues, Operations, Settings } from './PermissionUtility-types';\nimport AppFeatureCanIUse from './PermissionUtilityAppFeatures';\nimport { analyticsGroup } from './AnalyticsUtility';\nimport moment from 'moment';\n\nconst invokedExperiments = {};\nfunction tryInvokeExperiment(state: RootState, feature: string, value: string | boolean | number) {\n const experiments = state.profile.featureExperiments || {};\n\n //no experiment for this feature\n if (!experiments.hasOwnProperty(feature)) {\n return;\n }\n\n const triggeringExperiment = experiments[feature];\n const now = new Date();\n const experimentRequalifyTime = moment(now).add(triggeringExperiment.requalifyMinutes ?? 24 * 60, 'minutes');\n const localStorageKey = `${state.profile.clientId}:ffexp:${triggeringExperiment.featureFlagId}:${triggeringExperiment.featureFlagExperimentId}`;\n\n //check if we have notified already\n const currentLocalStorageValue = localStorage.getItem(localStorageKey);\n if (currentLocalStorageValue != null && Date.parse(currentLocalStorageValue) > now.getTime()) {\n return;\n }\n\n //secondary check so that we dont get multiple inflight requests happening since the api call in a promise\n if (invokedExperiments.hasOwnProperty(triggeringExperiment.featureFlagExperimentId)) {\n return;\n }\n\n invokedExperiments[triggeringExperiment.featureFlagExperimentId] = true;\n //notify experiment triggered\n apimCall<{ segmentId: string; segmentHistoricalId: string }>(\n GoFormzServices.AccountService,\n `/clientexperiments/${triggeringExperiment.featureFlagExperimentId}?isExperimentGroup=${triggeringExperiment.isExperimentGroup}`,\n 'POST'\n )\n .then((result) => {\n delete invokedExperiments[triggeringExperiment.featureFlagExperimentId];\n if (result.status == 200) {\n //store in browser cache, this way we dont excessively notify\n localStorage.setItem(localStorageKey, experimentRequalifyTime.toString());\n\n const clientId = state?.profile?.clientId;\n if (clientId == null) {\n return;\n }\n\n const analyticsTraits = {};\n const segmentHistoricalId = result.data?.segmentHistoricalId;\n if (segmentHistoricalId != null) {\n const historicalExperimentValue = (window?.analytics?.group()?.traits()?.clientFeatureExperimentation ?? '') + segmentHistoricalId + ';';\n analyticsTraits['clientFeatureExperimentation'] = historicalExperimentValue;\n }\n\n const segmentId = result.data?.segmentId;\n if (segmentId != null) {\n analyticsTraits[segmentId] = value == null ? 'null' : value?.toString();\n }\n\n analyticsGroup(clientId, analyticsTraits);\n }\n })\n .catch((ex) => {\n delete invokedExperiments[triggeringExperiment.featureFlagExperimentId];\n console.error('Failed to qualify for experiment', ex);\n });\n}\n\nfunction getFeatureValue(state: RootState, feature: Features, triggerExperiment = true) {\n const getValue = (featureLookup) => {\n const featureKey = Object.getOwnPropertyNames(featureLookup ?? {}).find((key) => key?.toLowerCase() === feature?.toLowerCase());\n return featureKey ? featureLookup[featureKey] : undefined;\n };\n\n //early return because we do not trigger experiments on public forms\n if (state.formeditor?.sharedAccessToken) {\n return getValue(state.formeditor.features);\n }\n\n const value = getValue(state.profile.features);\n if (value !== undefined) {\n //check if we need to invoke experiment\n triggerExperiment && tryInvokeExperiment(state, feature, value);\n return value;\n }\n\n //fallback to the default value or undefined\n return getValue(FeatureDefaults);\n}\n\nexport { AppFeatures, Features, LicenseValues, Operations, Settings };\n\nexport function getLicenseValue(name: LicenseValues) {\n const state = appContext.store.getState();\n return state.profile.license[name];\n}\n\nexport function isPublicForm() {\n const state = appContext.store.getState();\n return !!state.formeditor.sharedAccessToken;\n}\n\nexport function hasBinaryPermission(operation: Operations) {\n const state = appContext.store.getState();\n let result = false;\n const op = state.userInfo.bp;\n if ((op & (1 << (operation - 1))) !== 0) {\n result = true;\n }\n return result;\n}\n\nexport function getSetting(setting: Settings) {\n const state = appContext.store.getState();\n return state.profile.settings[setting];\n}\n\nexport function clientHasPermissionToTier(subscription: string): boolean {\n const permissionLevels = {\n deprecated: 0,\n // teacher tier does not have access to workflwos\n teacher: 0,\n basic: 1,\n team: 2,\n advanced: 3,\n trial: 4,\n enterprise: 5,\n // below permerissions can only be added from client override\n unlisted: 6,\n addon: 6\n };\n const state = appContext.store.getState();\n const clientSubscription: string = state.profile.client.subscription;\n\n const perm1: string = clientSubscription.replace('gf-', '');\n\n return permissionLevels[perm1] >= permissionLevels[subscription];\n}\n\nexport function getFeature(feature: Features, triggerExperiment = true) {\n const state = appContext.store.getState();\n return getFeatureValue(state, feature, triggerExperiment);\n}\n\nexport function canIUse(feature: AppFeatures | Features, triggerExperiment = true): boolean {\n const state = appContext.store.getState();\n\n //check if feature is an app feature\n if (AppFeatureCanIUse.hasOwnProperty(feature)) {\n return AppFeatureCanIUse[feature](state);\n }\n\n //else fallback to the feature flags\n return getFeature(feature as Features, triggerExperiment) as boolean;\n}\n","import { ErrorLike } from 'gf-types';\nimport { GetAppSettings } from '../AppSettings';\nimport { AxiosError } from 'axios';\n\ntype LogOptions = { force?: boolean; logToConsole?: boolean };\n\nexport function InitializeRaygun() {\n const appSettings = GetAppSettings();\n if (!window.rg4js) {\n return;\n }\n\n window.rg4js('apiKey', appSettings?.Raygun?.ApiKey);\n rg4js('options', {\n ignoreAjaxAbort: true,\n ignore3rdPartyErrors: true\n });\n window.rg4js('logContentsOfXhrCalls', true);\n window.rg4js('enableCrashReporting', true);\n window.rg4js('setAutoBreadcrumbsXHRIgnoredHosts', ['api.segment.io']);\n}\n\nexport const raygunIdentify = (id, data) => {\n if (!window.rg4js) {\n return;\n }\n\n window.rg4js('setUser', { ...data, isAnonymous: false, identifier: id });\n};\n\nexport function raygunPage(route: string, pathname: string) {\n if (!window.rg4js) {\n return;\n }\n\n window.rg4js('trackEvent', { type: 'pageView', path: pathname });\n window.rg4js('recordBreadcrumb', `Viewed Page ${pathname}`, { route: route, path: pathname });\n}\n\n/**\n * Directly send non-http errors to raygun.\n *\n * @param error The error to log.\n * @param options The log options\n */\nexport function raygunSendError(error: ErrorLike, { force, logToConsole }: LogOptions = {}) {\n if (logToConsole) {\n console.error(error);\n }\n\n if (force) {\n window.rg4js('send', error);\n return;\n }\n\n // only log errors that aren't axios errors\n if (error instanceof AxiosError) {\n return;\n }\n\n window.rg4js('send', error);\n}\n","import { appContext } from '../AppContext';\n\nexport const getCurrentUser = () => {\n const state = appContext?.store?.getState();\n const user = state?.profile?.user;\n return user;\n};\n\nexport const getCurrentUserEmailAddress = () => {\n const state = appContext?.store?.getState();\n const emailAddress = state?.profile?.user?.email || state?.profile?.independentUser?.email;\n return emailAddress;\n};\n\nexport const isCurrentUser = (username) => {\n const currentUser = getCurrentUser();\n return currentUser?.email === username;\n};\n\nexport const getCurrentUserGroupIds = () => {\n const state = appContext?.store?.getState();\n return state?.profile?.groupIds;\n};\n\nexport const isInTrial = () => {\n const state = appContext?.store?.getState();\n return state?.profile?.isInTrial;\n};\n\nexport const isSSOLogin = () => {\n const state = appContext?.store?.getState();\n return state?.userInfo?.useSSO === 'true';\n};\n\nexport const isSpecialAccessLogin = () => {\n const state = appContext?.store?.getState();\n return state?.userInfo?.specialAccess === 'true';\n};\n\nexport const getCurrentClientId = () => {\n const state = appContext?.store?.getState();\n return state?.profile?.client?.id;\n};\n","import axios, { AxiosHeaders, AxiosPromise, AxiosRequestConfig, AxiosRequestHeaders, Method } from 'axios';\nimport { appContext } from '../AppContext';\nimport { GetAccessToken } from '../auth/AuthService';\nimport { GetAppSettings, GoFormzServices } from '../AppSettings';\n\nexport type HttpMethod = Method;\nexport type HttpHeaders = AxiosRequestHeaders;\n\nconst cache = {};\nconst internalWebApimPath = 'internal/web';\nconst publicShareApimPath = 'publicshare';\nconst appsApimPath = 'apps';\n\nfunction getAppsApimUrl(url) {\n //url is in form of /dropbox/instanceId/webhoook\n\n //getting the apim url. the url can be modified based on config overrides for ApimOverrides\n const apimUrl = getApimUrl(GoFormzServices.AppsApimService, appsApimPath, url);\n\n const urlSplit = url.split('/');\n if (urlSplit.length < 4) {\n return apimUrl;\n }\n\n const appName = urlSplit[1]; //i.e. dropbox\n\n const appSettings = GetAppSettings();\n if (!appSettings.Apps || !appSettings.Apps[appName]) {\n return apimUrl;\n }\n\n const appOverride = appSettings.Apps[appName];\n const path = urlSplit[3]; //i.e. webhook\n\n return safeConcatUrl(appOverride, path);\n}\n\nfunction getApimKubernetsIngressRoute(apimApi, url) {\n const appSettings = GetAppSettings();\n\n //first try to route to an app override if available\n const urlParts = url.split('/').filter((part) => !!part);\n\n //expected route structure\n //if internal web path: apps/{appName}/path\n //if apps path: {appName}/path\n const requiredLength = apimApi == internalWebApimPath ? 2 : 1;\n const appNameIndex = apimApi == internalWebApimPath ? 1 : 0;\n\n if (urlParts.length > requiredLength) {\n const appName = urlParts[appNameIndex];\n const appKey = appSettings.Apps ? Object.keys(appSettings.Apps).find((configAppName) => configAppName.toLowerCase() == appName.toLowerCase()) : null;\n\n if (appKey) {\n const appOverride = appSettings.Apps[appKey];\n return safeConcatUrl(appOverride, urlParts.slice(appNameIndex + 1).join('/'));\n }\n }\n\n //fallback to the kubernetes ingress override\n if (appSettings.ApimOverrides && appSettings.ApimOverrides[GoFormzServices.AppsApimService]) {\n return safeConcatUrl(appSettings.ApimOverrides[GoFormzServices.AppsApimService], url);\n }\n\n return safeConcatUrl(appSettings.APIMUrl, apimApi, url);\n}\n\nfunction getApimUrl(serviceName, apimApi, url) {\n const appSettings = GetAppSettings();\n\n if (serviceName === GoFormzServices.AppsApimService) {\n return getApimKubernetsIngressRoute(apimApi, url);\n }\n\n if (serviceName && appSettings.ApimOverrides && appSettings.ApimOverrides[serviceName]) {\n return safeConcatUrl(appSettings.ApimOverrides[serviceName], url);\n }\n\n return safeConcatUrl(appSettings.APIMUrl, apimApi, url);\n}\n\nfunction getPublicShareApimUrl(url) {\n const apimUrl = getApimUrl(GoFormzServices.PublicFormsService, publicShareApimPath, url);\n return apimUrl;\n}\n\nfunction getWebApimUrl(serviceName, url) {\n const apimUrl = getApimUrl(serviceName, internalWebApimPath, url);\n return apimUrl;\n}\n\nfunction getAuthToken() {\n return GetAccessToken();\n}\n\nfunction getAxiosApiOptions(\n method: HttpMethod = 'GET',\n body = null,\n cancellationToken = null,\n includeAuth = true,\n headers: HttpHeaders = null,\n responseType: 'json' | 'blob' = 'json'\n): AxiosRequestConfig {\n // incoming headers should be able to override defaults\n const defaultHeaders = responseType === 'json' ? { Accept: 'application/json', 'Content-Type': 'application/json' } : {};\n const options: AxiosRequestConfig = {\n headers: { ...defaultHeaders, ...headers },\n responseType,\n method: method,\n data: responseType === 'json' && body ? JSON.stringify(body) : body,\n cancelToken: cancellationToken\n };\n\n if (includeAuth) {\n options.headers.Authorization = `Bearer ${getAuthToken()}`;\n }\n\n return options;\n}\n\nfunction getModifiedApimHeaders(serviceName: string, headers: Partial = null): HttpHeaders {\n const modifiedHeaders = { ...headers };\n const appSettings = GetAppSettings();\n //checking to see if we need to add the SetBackendServiceUrl\n //this is used by the apim to override the forwarding url\n if (serviceName) {\n //for local development only\n if (appSettings.SetBackendServiceUrlHeaders && appSettings.SetBackendServiceUrlHeaders[serviceName]) {\n modifiedHeaders['SetBackendServiceUrl'] = appSettings.SetBackendServiceUrlHeaders[serviceName];\n }\n\n //override with whatever is in the routes config\n if (appSettings.Routes && appSettings.Routes[serviceName]) {\n modifiedHeaders['SetBackendServiceUrl'] = appSettings.Routes[serviceName];\n }\n }\n\n if (appSettings?.RoutingEnvironment && appSettings.RoutingEnvironment.toLowerCase() !== 'default') {\n const apimOverrides = appSettings.ApimOverrides || {};\n const serviceBusOverrides = Object.fromEntries(Object.keys(appSettings.ServiceBusOverrides || {}).map((key) => [key, '']));\n const appsOverrides = Object.fromEntries(Object.keys(appSettings.Apps || {}).map((key) => [key, '']));\n const setBackendServiceUrlHeaders = appSettings.SetBackendServiceUrlHeaders || {};\n\n //lab usage\n const routes = appSettings.Routes || {};\n\n //this object represents all the apim overrides but are set only for local request routing.\n //this allows for services behind the apim to still route messages to a local machine but not http requests\n const apimOverridesForMessagingOnly = { ...(apimOverrides || {}) };\n for (const key in apimOverridesForMessagingOnly) {\n if (apimOverridesForMessagingOnly.hasOwnProperty(key)) {\n apimOverridesForMessagingOnly[key] = '';\n }\n }\n\n //the following check looks at the apim overrides to see if this request is going to bypass the apim and go direct to a service.\n //if it is then send up all the overrides in the routes.\n //if it is NOT then we do not want to send up any of the apim overrides. this is because services behind the apim cant route\n //to local services so we do want to leave those out.\n const routesHeaderValue = apimOverrides[serviceName]\n ? { ...serviceBusOverrides, ...appsOverrides, ...apimOverrides, ...setBackendServiceUrlHeaders, ...routes }\n : { ...serviceBusOverrides, ...appsOverrides, ...apimOverridesForMessagingOnly, ...setBackendServiceUrlHeaders, ...routes };\n\n modifiedHeaders['X-Routing'] = JSON.stringify({\n routes: routesHeaderValue,\n originatingEnvironment: appSettings.RoutingEnvironment\n });\n }\n\n return modifiedHeaders as AxiosRequestHeaders;\n}\n\nexport function safeConcatUrl(...urlParts) {\n const safeBase = urlParts[0].endsWith('/') ? urlParts[0].slice(0, -1) : urlParts[0];\n const safeUrl =\n safeBase +\n urlParts\n .slice(1)\n .map((path) => (path ? (path.startsWith('/') ? path : `/${path}`) : ''))\n .join('');\n return safeUrl;\n}\n\nexport function apiCall(\n url: string,\n method: HttpMethod = 'GET',\n body = null,\n cancellationToken = null,\n headers: HttpHeaders = null,\n includeOptions = true,\n responseType: 'json' | 'blob' = 'json'\n): AxiosPromise {\n const options = getAxiosApiOptions(method, body, cancellationToken, true, headers, responseType);\n return axios(url, includeOptions ? options : null);\n}\n\nexport function apimCall(\n serviceName: string,\n url: string,\n method: HttpMethod = 'GET',\n body = null,\n cancellationToken = null,\n headers: Partial = null,\n responseType: 'json' | 'blob' = 'json'\n) {\n //getting the apim url. the url can be modified based on config overrides for ApimOverrides\n const apimUrl = getWebApimUrl(serviceName, url);\n\n //overriding the apim headers to allow for changing the backend service\n //this is used for labs\n const modifiedHeaders = getModifiedApimHeaders(serviceName, headers);\n\n return apiCall(apimUrl, method, body, cancellationToken, modifiedHeaders, true, responseType);\n}\n\nexport function getApiUploadFileOptions(file, method = 'POST') {\n const formData = new FormData();\n formData.append('file1', file);\n\n const options = {\n body: formData,\n method,\n mode: 'cors',\n headers: { Authorization: `Bearer ${getAuthToken()}` }\n };\n\n return options;\n}\n\nexport function getBlobUploadFileOptions(file, method = 'POST') {\n const options = {\n body: file,\n method,\n mode: 'cors',\n headers: {}\n };\n options.headers['x-ms-blob-type'] = 'BlockBlob';\n\n return options;\n}\n\nexport async function apimCallWithCache(\n serviceName: string,\n url: string,\n method: HttpMethod = 'GET',\n body = null,\n headers?: Partial,\n cacheKeyBase?: string,\n refreshCache = false\n) {\n let cacheKey = cacheKeyBase || `url=${url}|method=${method}`;\n if (body) {\n cacheKey += `|body=${JSON.stringify(body)}`;\n }\n if (headers) {\n cacheKey += `|headers=${JSON.stringify(headers)}`;\n }\n if (!refreshCache && cache[cacheKey]) {\n return cache[cacheKey];\n }\n\n const response = await apimCall(serviceName, url, method, body, null, headers);\n cache[cacheKey] = response;\n return response;\n}\n\nexport async function appsApimCall(url, method: HttpMethod = 'GET', body = null, headers?: HttpHeaders) {\n //overriding the apim headers to allow for changing the backend service\n //this is used for labs\n const modifiedHeaders = getModifiedApimHeaders(GoFormzServices.AppsApimService, headers);\n\n //get apim url or an override from the config\n const appsUrl = getAppsApimUrl(url);\n const response = await apiCall(appsUrl, method, body, null, modifiedHeaders);\n return response;\n}\n\nexport async function appsWebApimCal(url, method: HttpMethod = 'GET', body = null, headers?: HttpHeaders) {\n //overriding the apim headers to allow for changing the backend service\n //this is used for labs\n const modifiedHeaders = getModifiedApimHeaders(GoFormzServices.AppsApimService, headers);\n\n //get apim url or an override from the config\n const appsUrl = getAppsApimUrl(url);\n const response = await apiCall(appsUrl, method, body, null, modifiedHeaders);\n return response;\n}\n\nexport async function appsApimCallWithCache(url, method: HttpMethod = 'GET', body = null, headers?: HttpHeaders) {\n let cacheKey = `url=${url}|method=${method}`;\n if (body) {\n cacheKey += `|body=${JSON.stringify(body)}`;\n }\n if (headers) {\n cacheKey += `|headers=${JSON.stringify(headers)}`;\n }\n if (cache[cacheKey]) {\n return cache[cacheKey];\n }\n\n const response = await appsApimCall(url, method, body, headers);\n cache[cacheKey] = response;\n return response;\n}\n\nexport function publicShareApimCall(\n url: string,\n method: HttpMethod = 'GET',\n body = null,\n cancellationToken = null,\n sharedAccessToken: string = null,\n saveId: string = null\n): AxiosPromise {\n const fetchBody = body ? JSON.stringify(body) : '';\n const options: AxiosRequestConfig = {\n headers: { Accept: 'application/json', 'Content-Type': 'application/json' },\n method: method,\n data: fetchBody,\n cancelToken: cancellationToken\n };\n\n const state = appContext.store.getState();\n\n if (!sharedAccessToken) {\n sharedAccessToken = state.formeditor.sharedAccessToken;\n }\n if (sharedAccessToken) {\n options.headers[sharedAccessToken.length > 20 ? 'X-Policy' : 'X-Policy-Token'] = sharedAccessToken;\n }\n if (saveId) {\n options.headers['X-Save-Id'] = saveId;\n }\n\n //overriding the apim headers to allow for changing the backend service\n //this is used for labs\n options.headers = getModifiedApimHeaders(GoFormzServices.PublicFormsService, options.headers as AxiosHeaders);\n\n //getting the apim url. the url can be modified based on config overrides for ApimOverrides\n const apimUrl = getPublicShareApimUrl(url);\n return axios(apimUrl, options);\n}\n","export const JOB_STATUS_QUEUED = 'queued';\nexport const JOB_STATUS_RUNNING = 'running';\nexport const JOB_STATUS_COMPLETE = 'completed';\nexport const JOB_STATUS_ERROR = 'failed';\nexport const JOB_STATUS_CANCELED = 'canceled';\nexport const JOB_STATUS_TERMINATED = 'terminated';\nexport const JOB_STATUS_ABANDONED = 'abandoned';\n\nexport const JOB_STEP_STATUS_QUEUED = 'queued';\nexport const JOB_STEP_STATUS_DEQUEUED = 'dequeued';\nexport const JOB_STEP_STATUS_RUNNING = 'running';\nexport const JOB_STEP_STATUS_COMPLETE = 'completed';\nexport const JOB_STEP_STATUS_ERROR = 'failed';\nexport const JOB_STEP_STATUS_SKIPPED = 'skipped';\nexport const JOB_STEP_STATUS_TERMINATED = 'terminated';\nexport const JOB_STEP_STATUS_ABANDONED = 'abandoned';\nexport const JOB_STEP_STATUS_CANCELED = 'canceled';\n\nexport const SEND_GRID_DELIVERED = 'delivered';\nexport const ZERO_BOUNCE_VALID = 'valid';\n\nexport const EmailStatuses = {\n mailboxNotFound: 'MailboxNotFound',\n doesNotAcceptMail: 'MailboxDoesNotAcceptMail',\n noDnsEntries: 'NoDnsEntriesFound',\n bounce: 'bounce',\n dropped: 'dropped',\n invalid: 'Invalid',\n full: 'Recipient List over Package Quota',\n spam1: 'Spam Reporting Address',\n spam2: 'Spam Content',\n unsubscribed: 'Unsubscribed Address'\n};\n\nexport const ESignatureTypes = {\n signature: 'signature',\n initials: 'initials'\n};\n\nexport const BasicElementTypes = {\n Image: 0,\n Text: 1,\n Rectangle: 2,\n Line: 3,\n Triangle: 4,\n Cirlce: 5,\n Table: 6,\n Checkbox: 7,\n Radio: 8\n};\n\n// todo - convert to enum\nexport const FieldTypes = {\n TextBox: 0,\n DropDown: 1,\n TextArea: 3,\n Signature: 4,\n CheckBox: 5,\n FileAttachment: 6,\n DateTime: 7,\n Date: 8,\n Time: 9,\n Image: 10,\n CheckBoxGroup: 11,\n Table: 12,\n Sketch: 13,\n Number: 14,\n Database: 15,\n GPS: 16,\n AutoNumber: 17,\n Barcode: 18,\n eSignature: 19,\n eSignatureInitials: 20,\n Audio: 21\n};\n\nexport function GetDisplayNameForFieldType(fieldType: number) {\n switch (fieldType) {\n case FieldTypes.TextBox:\n case FieldTypes.TextArea:\n return 'Text';\n case FieldTypes.DropDown:\n return 'Drop Down';\n case FieldTypes.Signature:\n return 'Signature';\n case FieldTypes.CheckBox:\n return 'Check Box';\n case FieldTypes.DateTime:\n return 'Date Time';\n case FieldTypes.Date:\n return 'Date';\n case FieldTypes.Time:\n return 'Time';\n case FieldTypes.Image:\n return 'Image';\n case FieldTypes.CheckBoxGroup:\n return 'Check Box Group';\n case FieldTypes.Table:\n return 'Table';\n case FieldTypes.Sketch:\n return 'Sketch';\n case FieldTypes.Number:\n return 'Number';\n case FieldTypes.Database:\n return 'Database';\n case FieldTypes.GPS:\n return 'Location';\n case FieldTypes.AutoNumber:\n return 'Auto Number';\n case FieldTypes.Barcode:\n return 'Barcode';\n case FieldTypes.eSignature:\n return 'eSign Signature';\n case FieldTypes.eSignatureInitials:\n return 'eSign Initials';\n case FieldTypes.FileAttachment:\n return 'File Attachment';\n case FieldTypes.Audio:\n return 'Audio';\n default:\n return null;\n }\n}\n\nexport function GetDisplayNameForBasicElement(basicElementType: number) {\n switch (basicElementType) {\n case BasicElementTypes.Image:\n return 'Image';\n case BasicElementTypes.Text:\n return 'Text';\n case BasicElementTypes.Rectangle:\n return 'Rectangle';\n case BasicElementTypes.Line:\n return 'Line';\n case BasicElementTypes.Triangle:\n return 'Triangle';\n case BasicElementTypes.Cirlce:\n return 'Circle';\n case BasicElementTypes.Table:\n return 'Table';\n case BasicElementTypes.Checkbox:\n return 'Checkbox';\n case BasicElementTypes.Radio:\n return 'Radio';\n default:\n return null;\n }\n}\n\nexport const DisplayType = {\n String: 0,\n Checkmark: 1,\n Xmark: 2,\n Circle: 3,\n Oval: 4,\n FilledOval: 5,\n GPSMap: 0,\n GPSText: 1,\n Barcode: 0,\n BarcodeText: 1\n};\n\nexport const AccordionTypes = {\n AddNewFields: 1,\n TemplateFields: 2\n};\n\nexport const TemplateActionTypes = {\n WebView: 0,\n DeepLink: 1,\n WorkflowTrigger: 2,\n HpMeasure: 3\n};\n\nexport const FormulaBarMode = {\n Formula: 0,\n Text: 1\n};\n\nexport const ExternalDataSources = {\n AccountUserList: 'Account User List'\n};\n\nexport enum PropertyTypes {\n Number = 'number',\n Integer = 'integer',\n Bool = 'bool',\n Select = 'select',\n DataSource = 'dataSource',\n DisplayColumn = 'displayColumn',\n Label = 'label',\n Color = 'color',\n Calculation = 'calculation',\n DefaultValues = 'defaultValues',\n TableColumns = 'tableColumns',\n CheckBoxGroupItems = 'checkBoxGroupItems',\n PositionItems = 'positionItems',\n DropDownItems = 'dropDownItems',\n Formatting = 'formatting',\n Filetypes = 'filetypes',\n Text = 'text',\n BasicElementsDash = 'basicElementsDash',\n BasicElementFontFormatting = 'basicElementFontFormatting',\n BasicElementGroupAlign = 'basicElementGroupAlign',\n BasicElementImageSelector = 'basicElementImageSelector',\n BasicElementLocked = 'basicElementLocked',\n BasicElementPrimaryActions = 'basicElementPrimaryActions',\n BasicElementTextAlign = 'basicElementTextAlign',\n BasicElementXYSync = 'basicElementXYSync',\n BasicElementZIndex = 'basicElementZIndex'\n}\n\nexport enum DataSourceOrigin {\n Client = 'Client',\n External = 'External'\n}\n\nexport enum EntityTypes {\n BasicElement = 'basicElement',\n Column = 'column',\n ColumnPosition = 'columnPosition',\n DataLayoutPosition = 'dataLayoutPosition',\n DataLayoutSection = 'dataLayoutSection',\n DataLayoutTab = 'dataLayoutTab',\n Field = 'field',\n FieldPosition = 'fieldPosition',\n RowPosition = 'rowPosition',\n Page = 'page'\n}\n\nexport enum TemplateFileTypes {\n Image = 'Image'\n}\n\nexport enum BasicElementActionTypes {\n AddImage = 'AddImage',\n Delete = 'Delete',\n GroupAlign = 'GroupAlign',\n ZIndex = 'ZIndex'\n}\n\nexport enum BasicElementComputedProperties {\n Width = 'ComputedWidth',\n Height = 'ComputedHeight'\n}\n\nexport enum BasicElementZIndexAction {\n SendToFront = 'sendToFront',\n SendForward = 'SendForward',\n SendToBack = 'sendToBack',\n SendBackward = 'sendBackward'\n}\n\nexport enum BasicElementGroupAlignAction {\n GroupAlignLeft = 'groupAlignLeft',\n GroupAlignMiddle = 'groupAlignMiddle',\n GroupAlignRight = 'groupAlignRight',\n GroupAlignBottom = 'groupAlignBottom',\n GroupAlignCenter = 'groupAlignCenter',\n GroupAlignTop = 'groupAlignTop'\n}\n\nexport enum EditorTypes {\n PageEditor = 'PageEditor',\n FieldEditor = 'FieldEditor',\n FormsList = 'FormsList',\n WorkflowsList = 'WorkflowsList'\n}\n\nexport enum Keys {\n ArrowDown = 'ArrowDown',\n ArrowLeft = 'ArrowLeft',\n ArrowRight = 'ArrowRight',\n ArrowUp = 'ArrowUp',\n Backspace = 'Backspace',\n Delete = 'Delete',\n Enter = 'Enter',\n C = 'c',\n V = 'v',\n Y = 'y',\n Z = 'z'\n}\n\nexport enum SubscriptionCodes {\n Basic = 'gf-basic',\n Trial = 'gf-trial',\n Teacher = 'gf-teacher',\n Team = 'gf-team',\n Advanced = 'gf-advanced',\n Enterprise = 'gf-enterprise'\n}\n\nexport enum PaymentType {\n PayPal = 'PayPal',\n CreditCard = 'CreditCard',\n ExistingCreditCard = 'ExistingCreditCard'\n}\n\nexport const DEFAULT_BORDER_COLOR = '#b6c1c6';\n\nexport const formActionMenuItemTooltips = {\n transfer: 'You can only transfer or update a Form draft you own. If you want to transfer this Form, you’ll need to reopen it or take ownership of it.'\n};\n","import { v4 as uuidv4 } from 'uuid';\nimport { apimCall } from './../helpers/api';\nimport { showBanner } from './MessageUtility';\nimport { appContext } from '../AppContext';\nimport { GoFormzServices } from '../AppSettings';\n\nexport const getModalMessage = (title, msg, primaryButtonText = 'Yes', secondaryButtonText = 'No') => ({\n title,\n msg,\n primaryButtonText,\n secondaryButtonText\n});\n\nexport const formatString = (format, ...args) => {\n let returnValue = format;\n if (!format) {\n throw new Error('Invalid null format string');\n }\n\n for (let i = 0; i < args.length; i++) {\n if (!args[i]) {\n throw new Error('Invalid null arg parameter');\n }\n\n returnValue = format.replace(`{${i}}`, args[i]);\n }\n\n if (returnValue.match(/{-?\\d+}/g)) {\n throw new Error('Index (zero based) must be greater than or equal to zero and less than the size of the argument list');\n }\n\n return returnValue;\n};\n\n// https://stackoverflow.com/questions/7837456/how-to-compare-arrays-in-javascript\nexport const compareArrays = (array1: any[], array2: any[]): boolean => {\n // if either array is falsy, return\n if (!array1 || !array2) {\n return false;\n }\n\n // compare lengths - can save a lot of time\n if (array1.length !== array2.length) {\n return false;\n }\n\n for (let i = 0, l = array1.length; i < l; i++) {\n // Check if we have nested arrays\n if (array1[i] instanceof Array && array2[i] instanceof Array) {\n // recurse into the nested arrays\n if (!compareArrays(array1[i] as any[], array2[i] as any[])) {\n return false;\n }\n } else if (array1[i] !== array2[i]) {\n // Warning - two different object instances will never be equal: {x:20} != {x:20}\n return false;\n }\n }\n return true;\n};\n\nexport const compareObjects = (a, b) => {\n for (const prop in a) {\n if (a.hasOwnProperty(prop)) {\n if (a[prop] != b[prop]) {\n return true;\n }\n }\n }\n for (const prop in b) {\n if (b.hasOwnProperty(prop)) {\n if (a[prop] != b[prop]) {\n return true;\n }\n }\n }\n return false;\n};\n\nexport function debounce(func, delay) {\n let timeoutId;\n\n return function (...args) {\n clearTimeout(timeoutId);\n\n timeoutId = setTimeout(() => {\n func.apply(this, args);\n }, delay);\n };\n}\n\nexport function throttle(func, limit) {\n let lastFunc;\n let lastRan;\n return function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const context = this;\n // eslint-disable-next-line prefer-rest-params\n const args = arguments;\n if (!lastRan) {\n func.apply(this, args);\n lastRan = Date.now();\n } else {\n clearTimeout(lastFunc);\n lastFunc = setTimeout(() => {\n if (Date.now() - lastRan >= limit) {\n func.apply(context, args);\n lastRan = Date.now();\n }\n }, limit - (Date.now() - lastRan));\n }\n };\n}\n\nexport const tryWhen = (whenFunc, func?, previousRetryCount?) => {\n if (whenFunc()) {\n func();\n } else {\n const retryCount = previousRetryCount ? previousRetryCount + 1 : 0;\n if (retryCount < 100) {\n setTimeout(() => tryWhen(whenFunc, func, retryCount), 10);\n }\n }\n};\n\nexport const handleWebResponseErrors = (response) => {\n // https://www.tjvantoll.com/2015/09/13/fetch-and-errors/\n if (!response.ok) {\n throw Error(response.statusText);\n }\n return response;\n};\n\nconst guids = [];\nexport async function getGuidsFromServer(count: number) {\n try {\n const response = await apimCall(GoFormzServices.ApimService, `generateids/${count}?${uuidv4()}`);\n Array.prototype.push.apply(guids, response.data);\n } catch (err) {\n console.warn('Failed to get IDs from server');\n for (let i = 0; i < count; i++) {\n guids.push(uuidv4());\n }\n }\n}\n\nexport const getGuid = (): string => {\n const guid = guids.pop();\n\n if (guids.length < 100) {\n getGuidsFromServer(10000);\n }\n\n return guid;\n};\n\nexport const getGuidAsync = async (preloadQuantity = 10): Promise => {\n if (guids.length == 0) {\n await getGuidsFromServer(preloadQuantity);\n }\n\n const guid = guids.pop();\n\n return guid;\n};\n\nexport function isGuid(value) {\n const pattern = new RegExp(/^[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 return pattern.test(value);\n}\n\nexport const copyTextToClipboard = async (text: string, bannerMessage?: string) => {\n let textArea: HTMLTextAreaElement;\n\n const showBannerMsg = (success: boolean) => {\n if (bannerMessage && success) {\n showBanner(bannerMessage);\n }\n };\n\n try {\n // see if the clipboard api is available to use\n if (navigator.clipboard && window.isSecureContext) {\n await navigator.clipboard.writeText(text);\n showBannerMsg(true);\n\n return true;\n }\n\n // deprecated approach\n textArea = document.createElement('textarea');\n textArea.style.position = 'fixed';\n textArea.style.top = '0';\n textArea.style.left = '0';\n textArea.style.width = '2em';\n textArea.style.height = '2em';\n textArea.style.padding = '0';\n textArea.style.border = 'none';\n textArea.style.outline = 'none';\n textArea.style.boxShadow = 'none';\n textArea.style.background = 'transparent';\n textArea.value = text;\n document.body.appendChild(textArea);\n textArea.select();\n\n const successful = document.execCommand('copy');\n\n showBannerMsg(successful);\n\n return successful;\n } catch (err) {\n console.error(err.message);\n return false;\n } finally {\n if (textArea) {\n document.body.removeChild(textArea);\n }\n }\n};\n\nexport const getPathInfo = (path) => {\n const hash = path[0] === '#' ? path.slice(1) : path;\n const qIdx = hash.indexOf('?') === -1 ? hash.length : hash.indexOf('?');\n const params = hash\n .substring(qIdx + 1)\n .split('&')\n .reduce((prev, curr) => {\n const copy = Object.assign({}, prev);\n copy[curr.split('=')[0]] = curr.split('=')[1];\n return copy;\n }, {});\n const pathname = `/${hash.substring(0, qIdx)}`.replace('//', '/');\n return {\n pathname,\n params\n };\n};\n\nexport const getQuerystringFromParams = (params) => {\n let result = '';\n const paramArray = [];\n if (params) {\n for (const param in params) {\n // eslint-disable-next-line no-prototype-builtins\n if (params.hasOwnProperty(param)) {\n paramArray.push(`${param}=${params[param]}`);\n }\n }\n result = `?${paramArray.join('&')}`;\n }\n return result;\n};\n\nexport const getPathInfoFromLocation = (ignoreHash = false) => {\n let path = `${location.pathname}${location.search}`;\n if (window.location.hash && !ignoreHash) {\n path = `${window.location.hash.substr(1)}`;\n }\n return getPathInfo(path);\n};\n\n/** @deprecated This is legacy. Use [getSearchParams](./urlUtility.ts) instead. */\nexport const getQuerystringParameters = (useLowerCase?: boolean, ignoreHash = false) => {\n const params = getPathInfoFromLocation(ignoreHash).params;\n if (useLowerCase) {\n const result = {};\n for (const param in params) {\n // eslint-disable-next-line no-prototype-builtins\n if (params.hasOwnProperty(param)) {\n result[param.toLowerCase()] = params[param];\n }\n }\n return result;\n }\n return params;\n};\n\nexport function selectAllTextInElement(element: HTMLElement) {\n if (window.getSelection && document.createRange) {\n const range = document.createRange();\n range.selectNodeContents(element);\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n }\n}\n\nexport const placeCaretAtEnd = (el) => {\n // http://stackoverflow.com/questions/4233265/contenteditable-set-caret-at-the-end-of-the-text-cross-browser\n el.focus();\n el.scrollLeft = el.scrollWidth;\n if (typeof window.getSelection !== 'undefined' && typeof document.createRange !== 'undefined') {\n const range = document.createRange();\n range.selectNodeContents(el);\n range.collapse(false);\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (typeof (document.body as any).createTextRange !== 'undefined') {\n const textRange = (document.body as any).createTextRange();\n textRange.moveToElementText(el);\n textRange.collapse(false);\n textRange.select();\n }\n};\n\nexport function setCaretPosition(elem, caretPos) {\n if (elem.createTextRange) {\n const range = elem.createTextRange();\n range.move('character', caretPos);\n range.select();\n } else if (elem.selectionStart) {\n elem.focus();\n elem.setSelectionRange(caretPos, caretPos);\n } else elem.focus();\n}\n\nexport function getTextWidth(text: string, font: string) {\n // re-use canvas object for better performance\n const canvas = (getTextWidth as any).canvas || ((getTextWidth as any).canvas = document.createElement('canvas'));\n const context = canvas.getContext('2d');\n context.font = font;\n const metrics = context.measureText(text);\n return metrics.width;\n}\n\nexport const throwIfParameterMissing = (parameter) => {\n throw new Error(`Missing parameter: ${parameter}`);\n};\n\nexport const waitUntil = (until: () => boolean) =>\n new Promise(async (callback) => {\n const tryCallback = function () {\n if (until()) {\n callback();\n } else {\n setTimeout(tryCallback, 5);\n }\n };\n tryCallback();\n });\n\nexport const loadScript = (src: string, loadedCheck: () => boolean, async = false) =>\n new Promise(async (callback) => {\n if (loadedCheck()) {\n callback();\n } else {\n const head = document.getElementsByTagName('head')[0];\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = src;\n if (async) {\n script.async = true;\n }\n head.appendChild(script);\n const tryCallback = function () {\n if (loadedCheck()) {\n callback();\n } else {\n setTimeout(tryCallback, 5);\n }\n };\n tryCallback();\n }\n });\n\nexport const getFormattedCurrency = (currency, minFractionDigits = 0) => {\n const fraction = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: minFractionDigits,\n maximumFractionDigits: minFractionDigits\n });\n\n const formatter = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2\n });\n\n if (currency % 1 == 0 && minFractionDigits === 0) {\n // handle values with a single decimal, so 25.5 should be 25.50\n return fraction.format(currency);\n } else {\n return formatter.format(currency);\n }\n};\n\nexport function getLocale() {\n const state = appContext.store.getState();\n const locale = state.profile.client.locale;\n\n if (locale && locale !== '') {\n return locale;\n }\n return 'en-US';\n}\n\nexport function deepClone(obj: T): T {\n if (!obj) {\n return null;\n }\n return JSON.parse(JSON.stringify(obj));\n}\n\n/**\n * Simple object check.\n * @param item\n * @returns {boolean}\n */\nexport function isObject(item) {\n return item && typeof item === 'object' && !Array.isArray(item);\n}\n\n/**\n * Deep merge two objects.\n * @param target\n * @param ...sources\n */\nexport function mergeDeep(target, ...sources) {\n if (!sources.length) return target;\n const source = sources.shift();\n\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} });\n mergeDeep(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n\n return mergeDeep(target, ...sources);\n}\n\nexport const isValidEmail = (email: string) => {\n const re =\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(String(email).toLowerCase());\n};\n\nexport const isEventKeyDown = (event) => {\n if (!event) {\n return false;\n }\n\n return event.key === 'Enter' || event.key === ' ';\n};\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","appSettings","RoutingEnvironment","Routes","entries","route","warmupRoute","URL","toString","console","log","fetch","Startup","appContext","LoadProductionAppSettings","emptyConfig","path","window","resourceBasePath","method","appSettingsProduction","data","sanitizeProperties","obj","key","LoadDevelopmentAppSettings","appSettingsDevelopment","removeEmpty","value","startsWith","ApimOverrides","ServiceBusOverrides","Apps","SetBackendServiceUrlHeaders","LoadAppSettings","GetAppSettings","GoFormzServices","AccountService","AIService","AnalyticsService","Api","AuthenticationService","ApimService","ApplicationService","BillingService","CmsService","DataSourceService","DataSourceBlobService","DeviceService","EmailService","FileService","AppsApimService","IntegrationHub","NotificationService","PdfService","PublicFormsService","SchedulerService","SyncService","TemplateService","WebhookService","WorkflowService","LOCAL","DEV","ALPHA","BETA","PRODUCTION","GetProductionAuthReturnUrl","GetAuthReturnUrl","environment","activeEnvironment","Environment","toUpperCase","setInitialSiftData","beaconKey","sessionId","setSiftData","sift","push","InitializeSift","uniqueId","Date","now","Math","random","substr","localStorage","getItem","SiftBeaconKey","checkCounter","siftIntervalCheck","setInterval","clearInterval","SiftPageView","SetSiftUserId","userId","connectApp","app","authenticationOption","configValues","appInstanceId","onAddingConnection","authCode","type","authorizeOAuth2Connection","authInfo","AppId","appId","ConnectionId","AuthCode","RedirectUrl","Configs","formatConfigs","AuthenticationOptionId","response","showBanner","error","Promise","reject","y","outerHeight","screenY","h","x","outerWidth","screenX","w","url","stateConfig","env","getEnvironment","extra","authorizeUrl","replaceConfigVariables","clientId","encodeURIComponent","redirectUri","state","btoa","JSON","stringify","scope","scopeUrl","promptUrl","indexOf","delimiter","getAuthUrl","addConnectionWindow","open","focus","redirectUrl","pollTimeout","pollTimer","addConnectWindowUrl","document","err","clearTimeout","close","pathInfo","params","decodeURIComponent","setTimeout","startVariable","endVariable","newValue","appConfigs","configs","authorizeUrlConfig","filter","configType","config","replace","RedirectAppAuthReturnIfNeeded","location","pathname","toLowerCase","search","decodedState","atob","parse","href","hasOwnProperty","Key","Value","accessToken","idToken","userManager","onUserLoaded","user","access_token","id_token","switchAccounts","Intercom","sessionStorage","setItem","signinRequestSettings","switchAccount","signinRedirect","LoadUserManager","authority","AuthenticationServiceUrl","client_id","AuthClientId","client_secret","AuthClientSecret","redirect_uri","origin","post_logout_redirect_uri","response_type","response_mode","silent_redirect_uri","popup_redirect_uri","loadUserInfo","filterProtocolClaims","automaticSilentRenew","accessTokenExpiringNotificationTimeInSeconds","events","addUserLoaded","addEventListener","InternalLogout","onStorageChanged","GetAccessToken","GetUserManager","Logout","clear","getUser","removeUser","signoutRedirect","id_token_hint","LogoutNoRedirect","signoutSilent","HandleAuthentication","setAuthenticationError","routerOptions","queryParams","hostParts","hostname","split","idpName","sso","length","acr_values","prompt","signup","signinRedirectCallback","navigate","authRedirect","message","getRedirectUrl","signinSilent","setLogger","interceptors","use","status","headers","retryCount","callback","then","messageUtility","showMessage","didConfirm","currentUser","signinPopup","newUser","profile","sub","showReloginPrompt","retryRequest","Authorization","request","InitializeAnalytics","analytics","initialize","invoked","methods","factory","t","Array","prototype","slice","call","arguments","unshift","load","createElement","async","src","protocol","n","getElementsByTagName","parentNode","insertBefore","SNIPPET_VERSION","initializeSegment","LoadAnalytics","isIndependentUser","segmentApiKey","loadSegment","SegmentApiKey","analyticsIdentify","identify","analyticsGroup","group","analyticsPage","page","enhancedData","enhanceData","analyticsTrack","eventName","track","traits","usagedataid","clientName","source","groupId","MSG_SHOW","MSG_CLOSE","MSG_UPDATE","MSG_WORKING","callbackFunctions","closeMessage","text","didClose","store","dispatch","payload","level","linkText","linkUrl","duration","showConfirm","options","msg","title","yesText","noText","cancelText","messageTooltip","skipConfirmationModalKey","confirm","showPrompt","multiLine","maxLength","okText","substring","subText","alert","updateMessage","messageBoxReducer","action","draft","messageIndex","findIndex","splice","closeMessageReducer","updateMessageReducer","working","updateWorkingReducer","reduce","Settings","LicenseValues","AppFeatures","FeatureDefaults","getFeatureValueOnly","feature","getFeature","AddOns","isAdmin","ApiCredentialsUI","ConnectedApps","hasBinaryPermission","isInTrial","CreateGroups","client","subscription","Teacher","CreateUsers","Dashboard","PremiumPerDataSource","_state","eSignature","isPublicForm","FormCopy","FormComplete","FormDelete","FormDeleteDrafts","FormList","getLicenseValue","FormsEnabled","FormPDF","FormRename","FormReopen","FormRevert","FormTransfer","HIPAASetup","LegacyPricing","legacyPricing","ManageAutoEmail","ManageDataSources","ManageSettings","ManageSubscription","isManualInvoice","ManageUsers","ManageUsersAdmin","MessageStatus","PreviewFeatures","ProfileNotifications","PublicShare","PublicShareBuyCredits","PublicFormCreditLimits","PublicFormCreditLimitsTrial","Reports","RetainImageAsAttachment","TagAdd","TagCreate","TagManage","TagModal","TakeOwnership","TemplateEditorJson","TemplateList","TemplateFolders","WebhooksUI","Workflow","WorkflowJson","invokedExperiments","getFeatureValue","triggerExperiment","getValue","featureLookup","featureKey","getOwnPropertyNames","find","undefined","formeditor","sharedAccessToken","features","experiments","featureExperiments","triggeringExperiment","experimentRequalifyTime","add","requalifyMinutes","localStorageKey","featureFlagId","featureFlagExperimentId","currentLocalStorageValue","getTime","api","isExperimentGroup","result","analyticsTraits","segmentHistoricalId","historicalExperimentValue","clientFeatureExperimentation","segmentId","catch","ex","tryInvokeExperiment","name","getState","license","operation","userInfo","bp","getSetting","setting","settings","clientHasPermissionToTier","permissionLevels","deprecated","teacher","basic","team","advanced","trial","enterprise","unlisted","addon","canIUse","InitializeRaygun","rg4js","Raygun","ApiKey","ignoreAjaxAbort","ignore3rdPartyErrors","raygunIdentify","isAnonymous","identifier","raygunPage","raygunSendError","force","getCurrentUser","getCurrentUserEmailAddress","email","independentUser","isCurrentUser","username","getCurrentUserGroupIds","groupIds","isSSOLogin","useSSO","isSpecialAccessLogin","specialAccess","getCurrentClientId","cache","internalWebApimPath","publicShareApimPath","getApimUrl","serviceName","apimApi","urlParts","part","requiredLength","appNameIndex","appKey","configAppName","safeConcatUrl","join","APIMUrl","getApimKubernetsIngressRoute","getAuthToken","getModifiedApimHeaders","modifiedHeaders","apimOverrides","serviceBusOverrides","fromEntries","appsOverrides","setBackendServiceUrlHeaders","routes","apimOverridesForMessagingOnly","routesHeaderValue","originatingEnvironment","endsWith","apiCall","body","cancellationToken","includeOptions","responseType","includeAuth","Accept","cancelToken","getAxiosApiOptions","apimCall","apimUrl","getWebApimUrl","getBlobUploadFileOptions","file","mode","apimCallWithCache","cacheKeyBase","refreshCache","cacheKey","publicShareApimCall","saveId","getPublicShareApimUrl","JOB_STATUS_QUEUED","JOB_STATUS_RUNNING","JOB_STATUS_COMPLETE","JOB_STATUS_ERROR","JOB_STATUS_CANCELED","JOB_STATUS_TERMINATED","JOB_STATUS_ABANDONED","JOB_STEP_STATUS_QUEUED","JOB_STEP_STATUS_DEQUEUED","JOB_STEP_STATUS_RUNNING","JOB_STEP_STATUS_COMPLETE","JOB_STEP_STATUS_ERROR","JOB_STEP_STATUS_SKIPPED","JOB_STEP_STATUS_TERMINATED","JOB_STEP_STATUS_ABANDONED","JOB_STEP_STATUS_CANCELED","EmailStatuses","mailboxNotFound","doesNotAcceptMail","noDnsEntries","bounce","dropped","invalid","full","spam1","spam2","unsubscribed","ESignatureTypes","signature","initials","BasicElementTypes","Image","Text","Rectangle","Line","Triangle","Cirlce","Table","Checkbox","Radio","FieldTypes","TextBox","DropDown","TextArea","Signature","CheckBox","FileAttachment","DateTime","Time","CheckBoxGroup","Sketch","Number","Database","GPS","AutoNumber","Barcode","eSignatureInitials","Audio","GetDisplayNameForFieldType","fieldType","GetDisplayNameForBasicElement","basicElementType","PropertyTypes","DataSourceOrigin","EntityTypes","TemplateFileTypes","BasicElementActionTypes","BasicElementComputedProperties","BasicElementZIndexAction","BasicElementGroupAlignAction","EditorTypes","Keys","SubscriptionCodes","PaymentType","DisplayType","String","Checkmark","Xmark","Circle","Oval","FilledOval","GPSMap","GPSText","BarcodeText","TemplateActionTypes","WebView","DeepLink","WorkflowTrigger","HpMeasure","FormulaBarMode","Formula","ExternalDataSources","AccountUserList","DEFAULT_BORDER_COLOR","formActionMenuItemTooltips","transfer","getModalMessage","primaryButtonText","secondaryButtonText","formatString","format","returnValue","i","args","match","compareArrays","array1","array2","l","debounce","func","delay","timeoutId","apply","throttle","limit","lastFunc","lastRan","context","this","tryWhen","whenFunc","previousRetryCount","guids","getGuidsFromServer","count","warn","getGuid","guid","pop","getGuidAsync","preloadQuantity","isGuid","RegExp","test","copyTextToClipboard","bannerMessage","showBannerMsg","success","navigator","clipboard","isSecureContext","writeText","textArea","style","position","top","left","width","height","padding","border","outline","boxShadow","background","appendChild","select","successful","execCommand","removeChild","getPathInfo","hash","qIdx","prev","curr","copy","assign","getPathInfoFromLocation","ignoreHash","getQuerystringParameters","useLowerCase","param","placeCaretAtEnd","el","scrollLeft","scrollWidth","getSelection","createRange","range","selectNodeContents","collapse","sel","removeAllRanges","addRange","createTextRange","textRange","moveToElementText","getTextWidth","font","canvas","getContext","measureText","throwIfParameterMissing","parameter","waitUntil","until","tryCallback","loadScript","loadedCheck","head","script","getFormattedCurrency","currency","minFractionDigits","fraction","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","formatter","getLocale","locale","deepClone","isObject","item","isArray","mergeDeep","target","sources","shift","isValidEmail","isEventKeyDown","event"],"sourceRoot":""}