posthog-js 1.158.0 → 1.158.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/array.full.js +2 -2
- package/dist/array.full.js.map +1 -1
- package/dist/array.js +1 -1
- package/dist/array.js.map +1 -1
- package/dist/exception-autocapture.js.map +1 -1
- package/dist/lib/src/entrypoints/web-vitals.d.ts +4 -4
- package/dist/lib/src/extensions/replay/config.d.ts +1 -1
- package/dist/lib/src/extensions/replay/sessionrecording.d.ts +4 -0
- package/dist/lib/src/extensions/surveys.d.ts +2 -2
- package/dist/lib/src/utils/globals.d.ts +6 -6
- package/dist/lib/src/utils/logger.d.ts +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/module.d.ts +4 -0
- package/dist/module.js +1 -1
- package/dist/module.js.map +1 -1
- package/dist/recorder-v2.js.map +1 -1
- package/dist/recorder.js.map +1 -1
- package/lib/package.json +14 -9
- package/lib/src/autocapture-utils.js.map +1 -1
- package/lib/src/autocapture.js.map +1 -1
- package/lib/src/consent.js +1 -1
- package/lib/src/consent.js.map +1 -1
- package/lib/src/decide.js.map +1 -1
- package/lib/src/entrypoints/exception-autocapture.js.map +1 -1
- package/lib/src/entrypoints/recorder.js +12 -12
- package/lib/src/entrypoints/recorder.js.map +1 -1
- package/lib/src/entrypoints/surveys.js.map +1 -1
- package/lib/src/entrypoints/tracing-headers.js.map +1 -1
- package/lib/src/entrypoints/web-vitals.d.ts +4 -4
- package/lib/src/extensions/exception-autocapture/error-conversion.js +2 -2
- package/lib/src/extensions/exception-autocapture/error-conversion.js.map +1 -1
- package/lib/src/extensions/exception-autocapture/index.js.map +1 -1
- package/lib/src/extensions/exception-autocapture/stack-trace.js.map +1 -1
- package/lib/src/extensions/exception-autocapture/type-checking.js +1 -1
- package/lib/src/extensions/exception-autocapture/type-checking.js.map +1 -1
- package/lib/src/extensions/rageclick.js.map +1 -1
- package/lib/src/extensions/replay/config.d.ts +1 -1
- package/lib/src/extensions/replay/config.js.map +1 -1
- package/lib/src/extensions/replay/external/denylist.js.map +1 -1
- package/lib/src/extensions/replay/mutation-rate-limiter.js.map +1 -1
- package/lib/src/extensions/replay/rrweb-plugins/patch.js.map +1 -1
- package/lib/src/extensions/replay/sessionrecording-utils.js.map +1 -1
- package/lib/src/extensions/replay/sessionrecording.d.ts +4 -0
- package/lib/src/extensions/replay/sessionrecording.js +22 -13
- package/lib/src/extensions/replay/sessionrecording.js.map +1 -1
- package/lib/src/extensions/segment-integration.js.map +1 -1
- package/lib/src/extensions/sentry-integration.js.map +1 -1
- package/lib/src/extensions/surveys/action-matcher.js.map +1 -1
- package/lib/src/extensions/surveys/components/BottomSection.jsx.map +1 -1
- package/lib/src/extensions/surveys/components/ConfirmationMessage.jsx.map +1 -1
- package/lib/src/extensions/surveys/components/QuestionTypes.jsx.map +1 -1
- package/lib/src/extensions/surveys/hooks/useContrastingTextColor.js.map +1 -1
- package/lib/src/extensions/surveys/surveys-utils.jsx.map +1 -1
- package/lib/src/extensions/surveys.d.ts +2 -2
- package/lib/src/extensions/surveys.jsx.map +1 -1
- package/lib/src/extensions/toolbar.js +2 -2
- package/lib/src/extensions/toolbar.js.map +1 -1
- package/lib/src/extensions/tracing-headers.js.map +1 -1
- package/lib/src/extensions/web-vitals/index.js.map +1 -1
- package/lib/src/heatmaps.js.map +1 -1
- package/lib/src/page-view.js.map +1 -1
- package/lib/src/posthog-core.js +5 -5
- package/lib/src/posthog-core.js.map +1 -1
- package/lib/src/posthog-featureflags.js.map +1 -1
- package/lib/src/posthog-persistence.js.map +1 -1
- package/lib/src/posthog-surveys.js.map +1 -1
- package/lib/src/rate-limiter.js.map +1 -1
- package/lib/src/request-queue.js.map +1 -1
- package/lib/src/request.js +2 -2
- package/lib/src/request.js.map +1 -1
- package/lib/src/retry-queue.js.map +1 -1
- package/lib/src/scroll-manager.js.map +1 -1
- package/lib/src/session-props.js.map +1 -1
- package/lib/src/sessionid.js.map +1 -1
- package/lib/src/storage.js +10 -10
- package/lib/src/storage.js.map +1 -1
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/blocked-uas.js.map +1 -1
- package/lib/src/utils/event-utils.js +13 -13
- package/lib/src/utils/event-utils.js.map +1 -1
- package/lib/src/utils/globals.d.ts +6 -6
- package/lib/src/utils/index.js +3 -3
- package/lib/src/utils/index.js.map +1 -1
- package/lib/src/utils/logger.d.ts +1 -1
- package/lib/src/utils/logger.js.map +1 -1
- package/lib/src/utils/request-router.js +11 -2
- package/lib/src/utils/request-router.js.map +1 -1
- package/lib/src/utils/request-utils.js +1 -1
- package/lib/src/utils/request-utils.js.map +1 -1
- package/lib/src/utils/simple-event-emitter.js.map +1 -1
- package/lib/src/utils/survey-event-receiver.js.map +1 -1
- package/lib/src/utils/type-utils.js.map +1 -1
- package/lib/src/utils/user-agent-utils.js.map +1 -1
- package/lib/src/uuidv7.js.map +1 -1
- package/package.json +14 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segment-integration.js","sourceRoot":"","sources":["../../../src/extensions/segment-integration.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAwCzC,IAAM,wBAAwB,GAAG,UAAC,OAAgB;IAC9C,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"segment-integration.js","sourceRoot":"","sources":["../../../src/extensions/segment-integration.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Extend Segment with extra PostHog JS functionality. Required for things like Recordings and feature flags to work correctly.\n *\n * ### Usage\n *\n * ```js\n * // After your standard segment anyalytics install\n * analytics.load(\"GOEDfA21zZTtR7clsBuDvmBKAtAdZ6Np\");\n *\n * analytics.ready(() => {\n * posthog.init('<posthog-api-key>', {\n * capture_pageview: false,\n * segment: window.analytics, // NOTE: Be sure to use window.analytics here!\n * });\n * window.analytics.page();\n * })\n * ```\n */\nimport { PostHog } from '../posthog-core'\nimport { logger } from '../utils/logger'\n\nimport { uuidv7 } from '../uuidv7'\nimport { isFunction } from '../utils/type-utils'\nimport { USER_STATE } from '../constants'\n\nexport type SegmentUser = {\n anonymousId(): string | undefined\n id(): string | undefined\n}\n\nexport type SegmentAnalytics = {\n user: () => SegmentUser | Promise<SegmentUser>\n register: (integration: SegmentPlugin) => Promise<void>\n}\n\n// Loosely based on https://github.com/segmentio/analytics-next/blob/master/packages/core/src/plugins/index.ts\nexport interface SegmentContext {\n event: {\n event: string\n userId?: string\n anonymousId?: string\n properties: any\n }\n}\n\ntype SegmentFunction = (ctx: SegmentContext) => Promise<SegmentContext> | SegmentContext\n\nexport interface SegmentPlugin {\n name: string\n version: string\n type: 'enrichment'\n isLoaded: () => boolean\n load: (ctx: SegmentContext, instance: any, config?: any) => Promise<unknown>\n unload?: (ctx: SegmentContext, instance: any) => Promise<unknown> | unknown\n ready?: () => Promise<unknown>\n track?: SegmentFunction\n identify?: SegmentFunction\n page?: SegmentFunction\n group?: SegmentFunction\n alias?: SegmentFunction\n screen?: SegmentFunction\n}\n\nconst createSegmentIntegration = (posthog: PostHog): SegmentPlugin => {\n if (!Promise || !Promise.resolve) {\n logger.warn('This browser does not have Promise support, and can not use the segment integration')\n }\n\n const enrichEvent = (ctx: SegmentContext, eventName: string | undefined) => {\n if (!eventName) {\n return ctx\n }\n if (!ctx.event.userId && ctx.event.anonymousId !== posthog.get_distinct_id()) {\n // This is our only way of detecting that segment's analytics.reset() has been called so we also call it\n logger.info('Segment integration does not have a userId set, resetting PostHog')\n posthog.reset()\n }\n if (ctx.event.userId && ctx.event.userId !== posthog.get_distinct_id()) {\n logger.info('Segment integration has a userId set, identifying with PostHog')\n posthog.identify(ctx.event.userId)\n }\n\n const additionalProperties = posthog._calculate_event_properties(\n eventName,\n ctx.event.properties ?? {},\n new Date()\n )\n ctx.event.properties = Object.assign({}, additionalProperties, ctx.event.properties)\n return ctx\n }\n\n return {\n name: 'PostHog JS',\n type: 'enrichment',\n version: '1.0.0',\n isLoaded: () => true,\n // check and early return above\n // eslint-disable-next-line compat/compat\n load: () => Promise.resolve(),\n track: (ctx) => enrichEvent(ctx, ctx.event.event),\n page: (ctx) => enrichEvent(ctx, '$pageview'),\n identify: (ctx) => enrichEvent(ctx, '$identify'),\n screen: (ctx) => enrichEvent(ctx, '$screen'),\n }\n}\n\nfunction setupPostHogFromSegment(posthog: PostHog, done: () => void) {\n const segment = posthog.config.segment\n if (!segment) {\n return done()\n }\n\n const bootstrapUser = (user: SegmentUser) => {\n // Use segments anonymousId instead\n const getSegmentAnonymousId = () => user.anonymousId() || uuidv7()\n posthog.config.get_device_id = getSegmentAnonymousId\n\n // If a segment user ID exists, set it as the distinct_id\n if (user.id()) {\n posthog.register({\n distinct_id: user.id(),\n $device_id: getSegmentAnonymousId(),\n })\n posthog.persistence!.set_property(USER_STATE, 'identified')\n }\n\n done()\n }\n\n const segmentUser = segment.user()\n\n // If segmentUser is a promise then we need to wait for it to resolve\n if ('then' in segmentUser && isFunction(segmentUser.then)) {\n segmentUser.then((user) => bootstrapUser(user))\n } else {\n bootstrapUser(segmentUser as SegmentUser)\n }\n}\n\nexport function setupSegmentIntegration(posthog: PostHog, done: () => void) {\n const segment = posthog.config.segment\n if (!segment) {\n return done()\n }\n\n setupPostHogFromSegment(posthog, () => {\n segment.register(createSegmentIntegration(posthog)).then(() => {\n done()\n })\n })\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentry-integration.js","sourceRoot":"","sources":["../../../src/extensions/sentry-integration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAqD7D,IAAM,IAAI,GAAG,YAAY,CAAA;AAEzB,MAAM,UAAU,oBAAoB,CAChC,QAAiB,EACjB,EAAiG;QAAjG,qBAA+F,EAAE,KAAA,EAA/F,YAAY,kBAAA,EAAE,SAAS,eAAA,EAAE,MAAM,YAAA,EAAE,yBAA6B,EAA7B,iBAAiB,mBAAG,CAAC,OAAO,CAAC,KAAA;IAEhE,OAAO,UAAC,KAAK;;QACT,IAAM,kBAAkB,GAAG,iBAAiB,KAAK,GAAG,IAAI,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAsB,CAAC,CAAA;QAChH,IAAI,CAAC,kBAAkB,IAAI,CAAC,QAAQ,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAA;QAC3D,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,GAAG,EAAE,CAAA;QAEhC,IAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,WAAW,CAChD,IAAI,EACJ,mBAAY,QAAQ,CAAC,MAAM,CAAC,KAAK,qBAAW,QAAQ,CAAC,eAAe,EAAE,CAAE,CAC3E,CAAA;QACD,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,SAAS,CAAA;QAC5C,IAAI,QAAQ,CAAC,uBAAuB,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"sentry-integration.js","sourceRoot":"","sources":["../../../src/extensions/sentry-integration.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Integrate Sentry with PostHog. This will add a direct link to the person in Sentry, and an $exception event in PostHog\n *\n * ### Usage\n *\n * Sentry.init({\n * dsn: 'https://example',\n * integrations: [\n * new posthog.SentryIntegration(posthog)\n * ]\n * })\n *\n * @param {Object} [posthog] The posthog object\n * @param {string} [organization] Optional: The Sentry organization, used to send a direct link from PostHog to Sentry\n * @param {Number} [projectId] Optional: The Sentry project id, used to send a direct link from PostHog to Sentry\n * @param {string} [prefix] Optional: Url of a self-hosted sentry instance (default: https://sentry.io/organizations/)\n */\n\nimport { PostHog } from '../posthog-core'\nimport { SeverityLevel } from '../types'\nimport { BASE_ERROR_ENDPOINT } from './exception-autocapture'\n\n// NOTE - we can't import from @sentry/types because it changes frequently and causes clashes\n// We only use a small subset of the types, so we can just define the integration overall and use any for the rest\n\n// import {\n// Event as _SentryEvent,\n// EventProcessor as _SentryEventProcessor,\n// Hub as _SentryHub,\n// Integration as _SentryIntegration,\n// SeverityLevel as _SeverityLevel,\n// IntegrationClass as _SentryIntegrationClass,\n// } from '@sentry/types'\n\n// Uncomment the above and comment the below to get type checking for development\n\ntype _SentryEvent = any\ntype _SentryEventProcessor = any\ntype _SentryHub = any\n\ninterface _SentryIntegrationClass {\n name: string\n setupOnce(addGlobalEventProcessor: (callback: _SentryEventProcessor) => void, getCurrentHub: () => _SentryHub): void\n}\n\ninterface _SentryIntegration {\n name: string\n processEvent(event: _SentryEvent): _SentryEvent\n}\n\ninterface SentryExceptionProperties {\n $sentry_event_id: any\n $sentry_exception: any\n $sentry_exception_message: any\n $sentry_exception_type: any\n $sentry_tags: any\n $sentry_url?: string\n}\n\nexport type SentryIntegrationOptions = {\n organization?: string\n projectId?: number\n prefix?: string\n /**\n * By default, only errors are sent to PostHog. You can set this to '*' to send all events.\n * Or to an error of SeverityLevel to only send events matching the provided levels.\n * e.g. ['error', 'fatal'] to send only errors and fatals\n * e.g. ['error'] to send only errors -- the default when omitted\n * e.g. '*' to send all events\n */\n severityAllowList?: SeverityLevel[] | '*'\n}\n\nconst NAME = 'posthog-js'\n\nexport function createEventProcessor(\n _posthog: PostHog,\n { organization, projectId, prefix, severityAllowList = ['error'] }: SentryIntegrationOptions = {}\n): (event: _SentryEvent) => _SentryEvent {\n return (event) => {\n const shouldProcessLevel = severityAllowList === '*' || severityAllowList.includes(event.level as SeverityLevel)\n if (!shouldProcessLevel || !_posthog.__loaded) return event\n if (!event.tags) event.tags = {}\n\n const personUrl = _posthog.requestRouter.endpointFor(\n 'ui',\n `/project/${_posthog.config.token}/person/${_posthog.get_distinct_id()}`\n )\n event.tags['PostHog Person URL'] = personUrl\n if (_posthog.sessionRecordingStarted()) {\n event.tags['PostHog Recording URL'] = _posthog.get_session_replay_url({ withTimestamp: true })\n }\n\n const exceptions = event.exception?.values || []\n\n const data: SentryExceptionProperties & {\n // two properties added to match any exception auto-capture\n // added manually to avoid any dependency on the lazily loaded content\n $exception_message: any\n $exception_type: any\n $exception_personURL: string\n $exception_level: SeverityLevel\n $level: SeverityLevel\n } = {\n // PostHog Exception Properties,\n $exception_message: exceptions[0]?.value || event.message,\n $exception_type: exceptions[0]?.type,\n $exception_personURL: personUrl,\n $exception_level: event.level,\n // Sentry Exception Properties\n $sentry_event_id: event.event_id,\n $sentry_exception: event.exception,\n $sentry_exception_message: exceptions[0]?.value || event.message,\n $sentry_exception_type: exceptions[0]?.type,\n $sentry_tags: event.tags,\n $level: event.level,\n }\n\n if (organization && projectId) {\n data['$sentry_url'] =\n (prefix || 'https://sentry.io/organizations/') +\n organization +\n '/issues/?project=' +\n projectId +\n '&query=' +\n event.event_id\n }\n\n // we take the URL from the exception observer\n // so that when we add error specific URL for ingestion\n // these errors are sent there too\n _posthog.capture('$exception', data, { _url: _posthog.exceptionObserver?.endpoint || BASE_ERROR_ENDPOINT })\n\n return event\n }\n}\n\n// V8 integration - function based\nexport function sentryIntegration(_posthog: PostHog, options?: SentryIntegrationOptions): _SentryIntegration {\n const processor = createEventProcessor(_posthog, options)\n return {\n name: NAME,\n processEvent(event) {\n return processor(event)\n },\n }\n}\n// V7 integration - class based\nexport class SentryIntegration implements _SentryIntegrationClass {\n name: string\n\n setupOnce: (\n addGlobalEventProcessor: (callback: _SentryEventProcessor) => void,\n getCurrentHub: () => _SentryHub\n ) => void\n\n constructor(\n _posthog: PostHog,\n organization?: string,\n projectId?: number,\n prefix?: string,\n /**\n * By default, only errors are sent to PostHog. You can set this to '*' to send all events.\n * Or to an error of SeverityLevel to only send events matching the provided levels.\n * e.g. ['error', 'fatal'] to send only errors and fatals\n * e.g. ['error'] to send only errors -- the default when omitted\n * e.g. '*' to send all events\n */\n severityAllowList?: SeverityLevel[] | '*'\n ) {\n // setupOnce gets called by Sentry when it intializes the plugin\n this.name = NAME\n this.setupOnce = function (addGlobalEventProcessor: (callback: _SentryEventProcessor) => void) {\n addGlobalEventProcessor(\n createEventProcessor(_posthog, { organization, projectId, prefix, severityAllowList })\n )\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-matcher.js","sourceRoot":"","sources":["../../../../src/extensions/surveys/action-matcher.ts"],"names":[],"mappings":"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","sourcesContent":["import { PostHog } from '../../posthog-core'\nimport { ActionStepStringMatching, ActionStepType, ActionType, SurveyElement } from '../../posthog-surveys-types'\nimport { SimpleEventEmitter } from '../../utils/simple-event-emitter'\nimport { CaptureResult } from '../../types'\nimport { isUndefined } from '../../utils/type-utils'\nimport { window } from '../../utils/globals'\nimport { isUrlMatchingRegex } from '../../utils/request-utils'\n\nexport class ActionMatcher {\n private readonly actionRegistry?: Set<ActionType>\n private readonly instance?: PostHog\n private readonly actionEvents: Set<string>\n private _debugEventEmitter = new SimpleEventEmitter()\n\n constructor(instance?: PostHog) {\n this.instance = instance\n this.actionEvents = new Set<string>()\n this.actionRegistry = new Set<ActionType>()\n }\n\n init() {\n if (!isUndefined(this.instance?._addCaptureHook)) {\n const matchEventToAction = (eventName: string, eventPayload: any) => {\n this.on(eventName, eventPayload)\n }\n this.instance?._addCaptureHook(matchEventToAction)\n }\n }\n\n register(actions: ActionType[]): void {\n if (isUndefined(this.instance?._addCaptureHook)) {\n return\n }\n\n actions.forEach((action) => {\n this.actionRegistry?.add(action)\n action.steps?.forEach((step) => {\n this.actionEvents?.add(step?.event || '')\n })\n })\n\n if (this.instance?.autocapture) {\n const selectorsToWatch: Set<string> = new Set<string>()\n actions.forEach((action) => {\n action.steps?.forEach((step) => {\n if (step?.selector) {\n selectorsToWatch.add(step?.selector)\n }\n })\n })\n this.instance?.autocapture.setElementSelectors(selectorsToWatch)\n }\n }\n\n on(eventName: string, eventPayload?: CaptureResult) {\n if (eventPayload == null || eventName.length == 0) {\n return\n }\n\n if (!this.actionEvents.has(eventName) && !this.actionEvents.has(<string>eventPayload?.event)) {\n return\n }\n\n if (this.actionRegistry && this.actionRegistry?.size > 0) {\n this.actionRegistry.forEach((action) => {\n if (this.checkAction(eventPayload, action)) {\n this._debugEventEmitter.emit('actionCaptured', action.name)\n }\n })\n }\n }\n\n _addActionHook(callback: (actionName: string, eventPayload?: any) => void): void {\n this.onAction('actionCaptured', (data) => callback(data))\n }\n\n private checkAction(event?: CaptureResult, action?: ActionType): boolean {\n if (action?.steps == null) {\n return false\n }\n\n for (const step of action.steps) {\n if (this.checkStep(event, step)) {\n return true\n }\n }\n\n return false\n }\n\n onAction(event: 'actionCaptured', cb: (...args: any[]) => void): () => void {\n return this._debugEventEmitter.on(event, cb)\n }\n\n private checkStep = (event?: CaptureResult, step?: ActionStepType): boolean => {\n return this.checkStepEvent(event, step) && this.checkStepUrl(event, step) && this.checkStepElement(event, step)\n }\n\n private checkStepEvent = (event?: CaptureResult, step?: ActionStepType): boolean => {\n // CHECK CONDITIONS, OTHERWISE SKIPPED\n if (step?.event && event?.event !== step?.event) {\n return false // EVENT NAME IS A MISMATCH\n }\n return true\n }\n\n private checkStepUrl(event?: CaptureResult, step?: ActionStepType): boolean {\n // CHECK CONDITIONS, OTHERWISE SKIPPED\n if (step?.url) {\n const eventUrl = event?.properties?.$current_url\n if (!eventUrl || typeof eventUrl !== 'string') {\n return false // URL IS UNKNOWN\n }\n if (!ActionMatcher.matchString(eventUrl, step?.url, step?.url_matching || 'contains')) {\n return false // URL IS A MISMATCH\n }\n }\n return true\n }\n\n private static matchString(url: string, pattern: string, matching: ActionStepStringMatching): boolean {\n switch (matching) {\n case 'regex':\n return !!window && isUrlMatchingRegex(url, pattern)\n case 'exact':\n return pattern === url\n case 'contains':\n // Simulating SQL LIKE behavior (_ = any single character, % = any zero or more characters)\n // eslint-disable-next-line no-case-declarations\n const adjustedRegExpStringPattern = ActionMatcher.escapeStringRegexp(pattern)\n .replace(/_/g, '.')\n .replace(/%/g, '.*')\n return isUrlMatchingRegex(url, adjustedRegExpStringPattern)\n\n default:\n return false\n }\n }\n\n private static escapeStringRegexp(pattern: string): string {\n // Escape characters with special meaning either inside or outside character sets.\n // Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n return pattern.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d')\n }\n\n private checkStepElement(event?: CaptureResult, step?: ActionStepType): boolean {\n // CHECK CONDITIONS, OTHERWISE SKIPPED\n if (step?.href || step?.tag_name || step?.text) {\n const elements = this.getElementsList(event)\n if (\n !elements.some((element) => {\n if (\n step?.href &&\n !ActionMatcher.matchString(element.href || '', step?.href, step?.href_matching || 'exact')\n ) {\n return false // ELEMENT HREF IS A MISMATCH\n }\n if (step?.tag_name && element.tag_name !== step?.tag_name) {\n return false // ELEMENT TAG NAME IS A MISMATCH\n }\n if (\n step?.text &&\n !(\n ActionMatcher.matchString(element.text || '', step?.text, step?.text_matching || 'exact') ||\n ActionMatcher.matchString(\n element.$el_text || '',\n step?.text,\n step?.text_matching || 'exact'\n )\n )\n ) {\n return false // ELEMENT TEXT IS A MISMATCH\n }\n return true\n })\n ) {\n // AT LEAST ONE ELEMENT MUST BE A SUBMATCH\n return false\n }\n }\n\n if (step?.selector) {\n const elementSelectors = event?.properties?.$element_selectors as unknown as string[]\n if (!elementSelectors) {\n return false // SELECTOR IS A MISMATCH\n }\n if (!elementSelectors.includes(step?.selector)) {\n return false // SELECTOR IS A MISMATCH\n }\n }\n\n return true\n }\n\n private getElementsList(event?: CaptureResult): SurveyElement[] {\n if (event?.properties.$elements == null) {\n return []\n }\n\n return event?.properties.$elements as unknown as SurveyElement[]\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"action-matcher.js","sourceRoot":"","sources":["../../../../src/extensions/surveys/action-matcher.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAE9D;IAMI,uBAAY,QAAkB;QAA9B,iBAIC;QANO,uBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAA;QAkF7C,cAAS,GAAG,UAAC,KAAqB,EAAE,IAAqB;YAC7D,OAAO,KAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACnH,CAAC,CAAA;QAEO,mBAAc,GAAG,UAAC,KAAqB,EAAE,IAAqB;YAClE,sCAAsC;YACtC,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,KAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,OAAK,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAA,EAAE,CAAC;gBAC9C,OAAO,KAAK,CAAA,CAAC,2BAA2B;YAC5C,CAAC;YACD,OAAO,IAAI,CAAA;QACf,CAAC,CAAA;QAzFG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAU,CAAA;QACrC,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAc,CAAA;IAC/C,CAAC;IAED,4BAAI,GAAJ;QAAA,iBAOC;;QANG,IAAI,CAAC,WAAW,CAAC,MAAA,IAAI,CAAC,QAAQ,0CAAE,eAAe,CAAC,EAAE,CAAC;YAC/C,IAAM,kBAAkB,GAAG,UAAC,SAAiB,EAAE,YAAiB;gBAC5D,KAAI,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;YACpC,CAAC,CAAA;YACD,MAAA,IAAI,CAAC,QAAQ,0CAAE,eAAe,CAAC,kBAAkB,CAAC,CAAA;QACtD,CAAC;IACL,CAAC;IAED,gCAAQ,GAAR,UAAS,OAAqB;QAA9B,iBAuBC;;QAtBG,IAAI,WAAW,CAAC,MAAA,IAAI,CAAC,QAAQ,0CAAE,eAAe,CAAC,EAAE,CAAC;YAC9C,OAAM;QACV,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,UAAC,MAAM;;YACnB,MAAA,KAAI,CAAC,cAAc,0CAAE,GAAG,CAAC,MAAM,CAAC,CAAA;YAChC,MAAA,MAAM,CAAC,KAAK,0CAAE,OAAO,CAAC,UAAC,IAAI;;gBACvB,MAAA,KAAI,CAAC,YAAY,0CAAE,GAAG,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,KAAI,EAAE,CAAC,CAAA;YAC7C,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QAEF,IAAI,MAAA,IAAI,CAAC,QAAQ,0CAAE,WAAW,EAAE,CAAC;YAC7B,IAAM,kBAAgB,GAAgB,IAAI,GAAG,EAAU,CAAA;YACvD,OAAO,CAAC,OAAO,CAAC,UAAC,MAAM;;gBACnB,MAAA,MAAM,CAAC,KAAK,0CAAE,OAAO,CAAC,UAAC,IAAI;oBACvB,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,EAAE,CAAC;wBACjB,kBAAgB,CAAC,GAAG,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,CAAA;oBACxC,CAAC;gBACL,CAAC,CAAC,CAAA;YACN,CAAC,CAAC,CAAA;YACF,MAAA,IAAI,CAAC,QAAQ,0CAAE,WAAW,CAAC,mBAAmB,CAAC,kBAAgB,CAAC,CAAA;QACpE,CAAC;IACL,CAAC;IAED,0BAAE,GAAF,UAAG,SAAiB,EAAE,YAA4B;QAAlD,iBAgBC;;QAfG,IAAI,YAAY,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAChD,OAAM;QACV,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAS,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,CAAC,EAAE,CAAC;YAC3F,OAAM;QACV,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,IAAI,CAAA,MAAA,IAAI,CAAC,cAAc,0CAAE,IAAI,IAAG,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,MAAM;gBAC/B,IAAI,KAAI,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC;oBACzC,KAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;gBAC/D,CAAC;YACL,CAAC,CAAC,CAAA;QACN,CAAC;IACL,CAAC;IAED,sCAAc,GAAd,UAAe,QAA0D;QACrE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,UAAC,IAAI,IAAK,OAAA,QAAQ,CAAC,IAAI,CAAC,EAAd,CAAc,CAAC,CAAA;IAC7D,CAAC;IAEO,mCAAW,GAAnB,UAAoB,KAAqB,EAAE,MAAmB;;QAC1D,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,KAAI,IAAI,EAAE,CAAC;YACxB,OAAO,KAAK,CAAA;QAChB,CAAC;;YAED,KAAmB,IAAA,KAAA,SAAA,MAAM,CAAC,KAAK,CAAA,gBAAA,4BAAE,CAAC;gBAA7B,IAAM,IAAI,WAAA;gBACX,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;oBAC9B,OAAO,IAAI,CAAA;gBACf,CAAC;YACL,CAAC;;;;;;;;;QAED,OAAO,KAAK,CAAA;IAChB,CAAC;IAED,gCAAQ,GAAR,UAAS,KAAuB,EAAE,EAA4B;QAC1D,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAChD,CAAC;IAcO,oCAAY,GAApB,UAAqB,KAAqB,EAAE,IAAqB;;QAC7D,sCAAsC;QACtC,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,EAAE,CAAC;YACZ,IAAM,QAAQ,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,YAAY,CAAA;YAChD,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC5C,OAAO,KAAK,CAAA,CAAC,iBAAiB;YAClC,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,EAAE,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,KAAI,UAAU,CAAC,EAAE,CAAC;gBACpF,OAAO,KAAK,CAAA,CAAC,oBAAoB;YACrC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IAEc,yBAAW,GAA1B,UAA2B,GAAW,EAAE,OAAe,EAAE,QAAkC;QACvF,QAAQ,QAAQ,EAAE,CAAC;YACf,KAAK,OAAO;gBACR,OAAO,CAAC,CAAC,MAAM,IAAI,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YACvD,KAAK,OAAO;gBACR,OAAO,OAAO,KAAK,GAAG,CAAA;YAC1B,KAAK,UAAU;gBACX,2FAA2F;gBAC3F,gDAAgD;gBAChD,IAAM,2BAA2B,GAAG,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC;qBACxE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;qBAClB,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;gBACxB,OAAO,kBAAkB,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAA;YAE/D;gBACI,OAAO,KAAK,CAAA;QACpB,CAAC;IACL,CAAC;IAEc,gCAAkB,GAAjC,UAAkC,OAAe;QAC7C,kFAAkF;QAClF,6JAA6J;QAC7J,OAAO,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAChF,CAAC;IAEO,wCAAgB,GAAxB,UAAyB,KAAqB,EAAE,IAAqB;;QACjE,sCAAsC;QACtC,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,MAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAA,KAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAA,EAAE,CAAC;YAC7C,IAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;YAC5C,IACI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAC,OAAO;gBACnB,IACI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI;oBACV,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,EAAE,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,KAAI,OAAO,CAAC,EAC5F,CAAC;oBACC,OAAO,KAAK,CAAA,CAAC,6BAA6B;gBAC9C,CAAC;gBACD,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,KAAI,OAAO,CAAC,QAAQ,MAAK,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAA,EAAE,CAAC;oBACxD,OAAO,KAAK,CAAA,CAAC,iCAAiC;gBAClD,CAAC;gBACD,IACI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI;oBACV,CAAC,CACG,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,EAAE,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,KAAI,OAAO,CAAC;wBACzF,aAAa,CAAC,WAAW,CACrB,OAAO,CAAC,QAAQ,IAAI,EAAE,EACtB,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,EACV,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,KAAI,OAAO,CACjC,CACJ,EACH,CAAC;oBACC,OAAO,KAAK,CAAA,CAAC,6BAA6B;gBAC9C,CAAC;gBACD,OAAO,IAAI,CAAA;YACf,CAAC,CAAC,EACJ,CAAC;gBACC,0CAA0C;gBAC1C,OAAO,KAAK,CAAA;YAChB,CAAC;QACL,CAAC;QAED,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,EAAE,CAAC;YACjB,IAAM,gBAAgB,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,kBAAyC,CAAA;YACrF,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACpB,OAAO,KAAK,CAAA,CAAC,yBAAyB;YAC1C,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,EAAE,CAAC;gBAC7C,OAAO,KAAK,CAAA,CAAC,yBAAyB;YAC1C,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAA;IACf,CAAC;IAEO,uCAAe,GAAvB,UAAwB,KAAqB;QACzC,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,CAAC,SAAS,KAAI,IAAI,EAAE,CAAC;YACtC,OAAO,EAAE,CAAA;QACb,CAAC;QAED,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,CAAC,SAAuC,CAAA;IACpE,CAAC;IACL,oBAAC;AAAD,CAAC,AAjMD,IAiMC","sourcesContent":["import { PostHog } from '../../posthog-core'\nimport { ActionStepStringMatching, ActionStepType, ActionType, SurveyElement } from '../../posthog-surveys-types'\nimport { SimpleEventEmitter } from '../../utils/simple-event-emitter'\nimport { CaptureResult } from '../../types'\nimport { isUndefined } from '../../utils/type-utils'\nimport { window } from '../../utils/globals'\nimport { isUrlMatchingRegex } from '../../utils/request-utils'\n\nexport class ActionMatcher {\n private readonly actionRegistry?: Set<ActionType>\n private readonly instance?: PostHog\n private readonly actionEvents: Set<string>\n private _debugEventEmitter = new SimpleEventEmitter()\n\n constructor(instance?: PostHog) {\n this.instance = instance\n this.actionEvents = new Set<string>()\n this.actionRegistry = new Set<ActionType>()\n }\n\n init() {\n if (!isUndefined(this.instance?._addCaptureHook)) {\n const matchEventToAction = (eventName: string, eventPayload: any) => {\n this.on(eventName, eventPayload)\n }\n this.instance?._addCaptureHook(matchEventToAction)\n }\n }\n\n register(actions: ActionType[]): void {\n if (isUndefined(this.instance?._addCaptureHook)) {\n return\n }\n\n actions.forEach((action) => {\n this.actionRegistry?.add(action)\n action.steps?.forEach((step) => {\n this.actionEvents?.add(step?.event || '')\n })\n })\n\n if (this.instance?.autocapture) {\n const selectorsToWatch: Set<string> = new Set<string>()\n actions.forEach((action) => {\n action.steps?.forEach((step) => {\n if (step?.selector) {\n selectorsToWatch.add(step?.selector)\n }\n })\n })\n this.instance?.autocapture.setElementSelectors(selectorsToWatch)\n }\n }\n\n on(eventName: string, eventPayload?: CaptureResult) {\n if (eventPayload == null || eventName.length == 0) {\n return\n }\n\n if (!this.actionEvents.has(eventName) && !this.actionEvents.has(<string>eventPayload?.event)) {\n return\n }\n\n if (this.actionRegistry && this.actionRegistry?.size > 0) {\n this.actionRegistry.forEach((action) => {\n if (this.checkAction(eventPayload, action)) {\n this._debugEventEmitter.emit('actionCaptured', action.name)\n }\n })\n }\n }\n\n _addActionHook(callback: (actionName: string, eventPayload?: any) => void): void {\n this.onAction('actionCaptured', (data) => callback(data))\n }\n\n private checkAction(event?: CaptureResult, action?: ActionType): boolean {\n if (action?.steps == null) {\n return false\n }\n\n for (const step of action.steps) {\n if (this.checkStep(event, step)) {\n return true\n }\n }\n\n return false\n }\n\n onAction(event: 'actionCaptured', cb: (...args: any[]) => void): () => void {\n return this._debugEventEmitter.on(event, cb)\n }\n\n private checkStep = (event?: CaptureResult, step?: ActionStepType): boolean => {\n return this.checkStepEvent(event, step) && this.checkStepUrl(event, step) && this.checkStepElement(event, step)\n }\n\n private checkStepEvent = (event?: CaptureResult, step?: ActionStepType): boolean => {\n // CHECK CONDITIONS, OTHERWISE SKIPPED\n if (step?.event && event?.event !== step?.event) {\n return false // EVENT NAME IS A MISMATCH\n }\n return true\n }\n\n private checkStepUrl(event?: CaptureResult, step?: ActionStepType): boolean {\n // CHECK CONDITIONS, OTHERWISE SKIPPED\n if (step?.url) {\n const eventUrl = event?.properties?.$current_url\n if (!eventUrl || typeof eventUrl !== 'string') {\n return false // URL IS UNKNOWN\n }\n if (!ActionMatcher.matchString(eventUrl, step?.url, step?.url_matching || 'contains')) {\n return false // URL IS A MISMATCH\n }\n }\n return true\n }\n\n private static matchString(url: string, pattern: string, matching: ActionStepStringMatching): boolean {\n switch (matching) {\n case 'regex':\n return !!window && isUrlMatchingRegex(url, pattern)\n case 'exact':\n return pattern === url\n case 'contains':\n // Simulating SQL LIKE behavior (_ = any single character, % = any zero or more characters)\n // eslint-disable-next-line no-case-declarations\n const adjustedRegExpStringPattern = ActionMatcher.escapeStringRegexp(pattern)\n .replace(/_/g, '.')\n .replace(/%/g, '.*')\n return isUrlMatchingRegex(url, adjustedRegExpStringPattern)\n\n default:\n return false\n }\n }\n\n private static escapeStringRegexp(pattern: string): string {\n // Escape characters with special meaning either inside or outside character sets.\n // Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n return pattern.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d')\n }\n\n private checkStepElement(event?: CaptureResult, step?: ActionStepType): boolean {\n // CHECK CONDITIONS, OTHERWISE SKIPPED\n if (step?.href || step?.tag_name || step?.text) {\n const elements = this.getElementsList(event)\n if (\n !elements.some((element) => {\n if (\n step?.href &&\n !ActionMatcher.matchString(element.href || '', step?.href, step?.href_matching || 'exact')\n ) {\n return false // ELEMENT HREF IS A MISMATCH\n }\n if (step?.tag_name && element.tag_name !== step?.tag_name) {\n return false // ELEMENT TAG NAME IS A MISMATCH\n }\n if (\n step?.text &&\n !(\n ActionMatcher.matchString(element.text || '', step?.text, step?.text_matching || 'exact') ||\n ActionMatcher.matchString(\n element.$el_text || '',\n step?.text,\n step?.text_matching || 'exact'\n )\n )\n ) {\n return false // ELEMENT TEXT IS A MISMATCH\n }\n return true\n })\n ) {\n // AT LEAST ONE ELEMENT MUST BE A SUBMATCH\n return false\n }\n }\n\n if (step?.selector) {\n const elementSelectors = event?.properties?.$element_selectors as unknown as string[]\n if (!elementSelectors) {\n return false // SELECTOR IS A MISMATCH\n }\n if (!elementSelectors.includes(step?.selector)) {\n return false // SELECTOR IS A MISMATCH\n }\n }\n\n return true\n }\n\n private getElementsList(event?: CaptureResult): SurveyElement[] {\n if (event?.properties.$elements == null) {\n return []\n }\n\n return event?.properties.$elements as unknown as SurveyElement[]\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSection.jsx","sourceRoot":"","sources":["../../../../../src/extensions/surveys/components/BottomSection.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAI/C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAElG,MAAM,UAAU,aAAa,CAAC,EAY7B;QAXG,IAAI,UAAA,EACJ,cAAc,oBAAA,EACd,UAAU,gBAAA,EACV,QAAQ,cAAA,EACR,IAAI,UAAA;IAQE,IAAA,KAA6B,UAAU,CAAC,aAAa,CAAC,EAApD,aAAa,mBAAA,EAAE,OAAO,aAA8B,CAAA;IAC5D,IAAM,SAAS,GACX,UAAU,CAAC,qBAAqB;QAChC,uBAAuB,CAAC,UAAU,CAAC,iBAAiB,IAAI,uBAAuB,CAAC,iBAAiB,CAAC,CAAA;IACtG,OAAO,CACH,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAC3B;YAAA,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CACpB;gBAAA,CAAC,MAAM,CACH,SAAS,CAAC,aAAa,CACvB,QAAQ,CAAC,CAAC,cAAc,IAAI,CAAC,aAAa,CAAC,CAC3C,IAAI,CAAC,QAAQ,CACb,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC3C,OAAO,CAAC,CAAC;YACL,IAAI,aAAa;gBAAE,OAAM;YACzB,IAAI,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"BottomSection.jsx","sourceRoot":"","sources":["../../../../../src/extensions/surveys/components/BottomSection.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAI/C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAElG,MAAM,UAAU,aAAa,CAAC,EAY7B;QAXG,IAAI,UAAA,EACJ,cAAc,oBAAA,EACd,UAAU,gBAAA,EACV,QAAQ,cAAA,EACR,IAAI,UAAA;IAQE,IAAA,KAA6B,UAAU,CAAC,aAAa,CAAC,EAApD,aAAa,mBAAA,EAAE,OAAO,aAA8B,CAAA;IAC5D,IAAM,SAAS,GACX,UAAU,CAAC,qBAAqB;QAChC,uBAAuB,CAAC,UAAU,CAAC,iBAAiB,IAAI,uBAAuB,CAAC,iBAAiB,CAAC,CAAA;IACtG,OAAO,CACH,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAC3B;YAAA,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CACpB;gBAAA,CAAC,MAAM,CACH,SAAS,CAAC,aAAa,CACvB,QAAQ,CAAC,CAAC,cAAc,IAAI,CAAC,aAAa,CAAC,CAC3C,IAAI,CAAC,QAAQ,CACb,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC3C,OAAO,CAAC,CAAC;YACL,IAAI,aAAa;gBAAE,OAAM;YACzB,IAAI,IAAI,EAAE,CAAC;gBACP,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAC,IAAI,CAAC,CAAA;YACtB,CAAC;YACD,QAAQ,EAAE,CAAA;QACd,CAAC,CAAC,CAEF;oBAAA,CAAC,IAAI,CACT;gBAAA,EAAE,MAAM,CACZ;YAAA,EAAE,GAAG,CACL;YAAA,CAAC,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC,AAAD,EAAG,CAC9C;QAAA,EAAE,GAAG,CAAC,CACT,CAAA;AACL,CAAC","sourcesContent":["import { window } from '../../../utils/globals'\n\nimport { SurveyAppearance } from '../../../posthog-surveys-types'\n\nimport { PostHogLogo } from './PostHogLogo'\nimport { useContext } from 'preact/hooks'\nimport { SurveyContext, defaultSurveyAppearance, getContrastingTextColor } from '../surveys-utils'\n\nexport function BottomSection({\n text,\n submitDisabled,\n appearance,\n onSubmit,\n link,\n}: {\n text: string\n submitDisabled: boolean\n appearance: SurveyAppearance\n onSubmit: () => void\n link?: string | null\n}) {\n const { isPreviewMode, isPopup } = useContext(SurveyContext)\n const textColor =\n appearance.submitButtonTextColor ||\n getContrastingTextColor(appearance.submitButtonColor || defaultSurveyAppearance.submitButtonColor)\n return (\n <div className=\"bottom-section\">\n <div className=\"buttons\">\n <button\n className=\"form-submit\"\n disabled={submitDisabled && !isPreviewMode}\n type=\"button\"\n style={isPopup ? { color: textColor } : {}}\n onClick={() => {\n if (isPreviewMode) return\n if (link) {\n window?.open(link)\n }\n onSubmit()\n }}\n >\n {text}\n </button>\n </div>\n {!appearance.whiteLabel && <PostHogLogo />}\n </div>\n )\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmationMessage.jsx","sourceRoot":"","sources":["../../../../../src/extensions/surveys/components/ConfirmationMessage.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAA;AAC/G,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAE3D,MAAM,UAAU,mBAAmB,CAAC,EAgBnC;QAfG,MAAM,YAAA,EACN,WAAW,iBAAA,EACX,WAAW,iBAAA,EACX,gBAAgB,sBAAA,EAChB,UAAU,gBAAA,EACV,OAAO,aAAA,EACP,cAAc,oBAAA;IAUd,IAAM,SAAS,GAAG,uBAAuB,CAAC,UAAU,CAAC,eAAe,IAAI,uBAAuB,CAAC,eAAe,CAAC,CAAA;IAExG,IAAA,OAAO,GAAK,UAAU,CAAC,aAAa,CAAC,QAA9B,CAA8B;IAE7C,OAAO,CACH,EACI;YAAA,CAAC,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"ConfirmationMessage.jsx","sourceRoot":"","sources":["../../../../../src/extensions/surveys/components/ConfirmationMessage.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAA;AAC/G,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAE3D,MAAM,UAAU,mBAAmB,CAAC,EAgBnC;QAfG,MAAM,YAAA,EACN,WAAW,iBAAA,EACX,WAAW,iBAAA,EACX,gBAAgB,sBAAA,EAChB,UAAU,gBAAA,EACV,OAAO,aAAA,EACP,cAAc,oBAAA;IAUd,IAAM,SAAS,GAAG,uBAAuB,CAAC,UAAU,CAAC,eAAe,IAAI,uBAAuB,CAAC,eAAe,CAAC,CAAA;IAExG,IAAA,OAAO,GAAK,UAAU,CAAC,aAAa,CAAC,QAA9B,CAA8B;IAE7C,OAAO,CACH,EACI;YAAA,CAAC,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,aAAK,cAAc,EAAG,CAC5D;gBAAA,CAAC,GAAG,CAAC,SAAS,CAAC,6BAA6B,CACxC;oBAAA,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,cAAM,OAAA,OAAO,EAAE,EAAT,CAAS,CAAC,EAAG,CAChD;oBAAA,CAAC,EAAE,CAAC,SAAS,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CACjE;wBAAA,CAAC,MAAM,CACX;oBAAA,EAAE,EAAE,CACJ;oBAAA,CAAC,WAAW;YACR,0BAA0B,CAAC;gBACvB,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,wBAAwB,EAAE,CAAC;gBAC5D,QAAQ,EAAE,WAAW;gBACrB,YAAY,EAAE,CAAC,gBAAgB,IAAI,WAAW,KAAK,MAAM;gBACzD,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;aAC9B,CAAC,CACN;oBAAA,CAAC,OAAO,IAAI,CACR,CAAC,aAAa,CACV,IAAI,CAAC,CAAC,UAAU,CAAC,8BAA8B,IAAI,OAAO,CAAC,CAC3D,cAAc,CAAC,CAAC,KAAK,CAAC,CACtB,UAAU,CAAC,CAAC,UAAU,CAAC,CACvB,QAAQ,CAAC,CAAC,cAAM,OAAA,OAAO,EAAE,EAAT,CAAS,CAAC,EAC5B,CACL,CACL;gBAAA,EAAE,GAAG,CACT;YAAA,EAAE,GAAG,CACT;QAAA,GAAG,CACN,CAAA;AACL,CAAC","sourcesContent":["import { BottomSection } from './BottomSection'\nimport { Cancel } from './QuestionHeader'\nimport { SurveyAppearance, SurveyQuestionDescriptionContentType } from '../../../posthog-surveys-types'\nimport { defaultSurveyAppearance, getContrastingTextColor, renderChildrenAsTextOrHtml } from '../surveys-utils'\nimport { h } from 'preact'\n\nimport { useContext } from 'preact/hooks'\nimport { SurveyContext } from '../../surveys/surveys-utils'\n\nexport function ConfirmationMessage({\n header,\n description,\n contentType,\n forceDisableHtml,\n appearance,\n onClose,\n styleOverrides,\n}: {\n header: string\n description: string\n forceDisableHtml: boolean\n contentType?: SurveyQuestionDescriptionContentType\n appearance: SurveyAppearance\n onClose: () => void\n styleOverrides?: React.CSSProperties\n}) {\n const textColor = getContrastingTextColor(appearance.backgroundColor || defaultSurveyAppearance.backgroundColor)\n\n const { isPopup } = useContext(SurveyContext)\n\n return (\n <>\n <div className=\"thank-you-message\" style={{ ...styleOverrides }}>\n <div className=\"thank-you-message-container\">\n {isPopup && <Cancel onClick={() => onClose()} />}\n <h3 className=\"thank-you-message-header\" style={{ color: textColor }}>\n {header}\n </h3>\n {description &&\n renderChildrenAsTextOrHtml({\n component: h('div', { className: 'thank-you-message-body' }),\n children: description,\n renderAsHtml: !forceDisableHtml && contentType !== 'text',\n style: { color: textColor },\n })}\n {isPopup && (\n <BottomSection\n text={appearance.thankYouMessageCloseButtonText || 'Close'}\n submitDisabled={false}\n appearance={appearance}\n onSubmit={() => onClose()}\n />\n )}\n </div>\n </div>\n </>\n )\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuestionTypes.jsx","sourceRoot":"","sources":["../../../../../src/extensions/surveys/components/QuestionTypes.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n BasicSurveyQuestion,\n SurveyAppearance,\n LinkSurveyQuestion,\n RatingSurveyQuestion,\n MultipleSurveyQuestion,\n SurveyQuestionType,\n} from '../../../posthog-surveys-types'\nimport { RefObject } from 'preact'\nimport { useRef, useState, useMemo } from 'preact/hooks'\nimport { isNull, isArray } from '../../../utils/type-utils'\nimport { useContrastingTextColor } from '../hooks/useContrastingTextColor'\nimport {\n checkSVG,\n dissatisfiedEmoji,\n neutralEmoji,\n satisfiedEmoji,\n veryDissatisfiedEmoji,\n verySatisfiedEmoji,\n} from '../icons'\nimport { getDisplayOrderChoices } from '../surveys-utils'\nimport { BottomSection } from './BottomSection'\nimport { QuestionHeader } from './QuestionHeader'\n\nexport function OpenTextQuestion({\n question,\n forceDisableHtml,\n appearance,\n onSubmit,\n}: {\n question: BasicSurveyQuestion\n forceDisableHtml: boolean\n appearance: SurveyAppearance\n onSubmit: (text: string) => void\n}) {\n const textRef = useRef(null)\n const [text, setText] = useState('')\n\n return (\n <div ref={textRef}>\n <QuestionHeader\n question={question.question}\n description={question.description}\n descriptionContentType={question.descriptionContentType}\n backgroundColor={appearance.backgroundColor}\n forceDisableHtml={forceDisableHtml}\n />\n <textarea rows={4} placeholder={appearance?.placeholder} onInput={(e) => setText(e.currentTarget.value)} />\n <BottomSection\n text={question.buttonText || 'Submit'}\n submitDisabled={!text && !question.optional}\n appearance={appearance}\n onSubmit={() => onSubmit(text)}\n />\n </div>\n )\n}\n\nexport function LinkQuestion({\n question,\n forceDisableHtml,\n appearance,\n onSubmit,\n}: {\n question: LinkSurveyQuestion\n forceDisableHtml: boolean\n appearance: SurveyAppearance\n onSubmit: (clicked: string) => void\n}) {\n return (\n <>\n <QuestionHeader\n question={question.question}\n description={question.description}\n descriptionContentType={question.descriptionContentType}\n forceDisableHtml={forceDisableHtml}\n />\n <BottomSection\n text={question.buttonText || 'Submit'}\n submitDisabled={false}\n link={question.link}\n appearance={appearance}\n onSubmit={() => onSubmit('link clicked')}\n />\n </>\n )\n}\n\nexport function RatingQuestion({\n question,\n forceDisableHtml,\n displayQuestionIndex,\n appearance,\n onSubmit,\n}: {\n question: RatingSurveyQuestion\n forceDisableHtml: boolean\n displayQuestionIndex: number\n appearance: SurveyAppearance\n onSubmit: (rating: number | null) => void\n}) {\n const scale = question.scale\n const starting = question.scale === 10 ? 0 : 1\n const [rating, setRating] = useState<number | null>(null)\n\n return (\n <>\n <QuestionHeader\n question={question.question}\n description={question.description}\n descriptionContentType={question.descriptionContentType}\n forceDisableHtml={forceDisableHtml}\n backgroundColor={appearance.backgroundColor}\n />\n <div className=\"rating-section\">\n <div className=\"rating-options\">\n {question.display === 'emoji' && (\n <div className=\"rating-options-emoji\">\n {(question.scale === 3 ? threeScaleEmojis : fiveScaleEmojis).map((emoji, idx) => {\n const active = idx + 1 === rating\n return (\n <button\n className={`ratings-emoji question-${displayQuestionIndex}-rating-${idx} ${\n active ? 'rating-active' : null\n }`}\n value={idx + 1}\n key={idx}\n type=\"button\"\n onClick={() => {\n setRating(idx + 1)\n }}\n style={{\n fill: active\n ? appearance.ratingButtonActiveColor\n : appearance.ratingButtonColor,\n borderColor: appearance.borderColor,\n }}\n >\n {emoji}\n </button>\n )\n })}\n </div>\n )}\n {question.display === 'number' && (\n <div\n className=\"rating-options-number\"\n style={{ gridTemplateColumns: `repeat(${scale - starting + 1}, minmax(0, 1fr))` }}\n >\n {getScaleNumbers(question.scale).map((number, idx) => {\n const active = rating === number\n return (\n <RatingButton\n key={idx}\n displayQuestionIndex={displayQuestionIndex}\n active={active}\n appearance={appearance}\n num={number}\n setActiveNumber={(num) => {\n setRating(num)\n }}\n />\n )\n })}\n </div>\n )}\n </div>\n <div className=\"rating-text\">\n <div>{question.lowerBoundLabel}</div>\n <div>{question.upperBoundLabel}</div>\n </div>\n </div>\n <BottomSection\n text={question.buttonText || appearance?.submitButtonText || 'Submit'}\n submitDisabled={isNull(rating) && !question.optional}\n appearance={appearance}\n onSubmit={() => onSubmit(rating)}\n />\n </>\n )\n}\n\nexport function RatingButton({\n num,\n active,\n displayQuestionIndex,\n appearance,\n setActiveNumber,\n}: {\n num: number\n active: boolean\n displayQuestionIndex: number\n appearance: SurveyAppearance\n setActiveNumber: (num: number) => void\n}) {\n const { textColor, ref } = useContrastingTextColor({ appearance, defaultTextColor: 'black', forceUpdate: active })\n return (\n <button\n ref={ref as RefObject<HTMLButtonElement>}\n className={`ratings-number question-${displayQuestionIndex}-rating-${num} ${\n active ? 'rating-active' : null\n }`}\n type=\"button\"\n onClick={() => {\n setActiveNumber(num)\n }}\n style={{\n color: textColor,\n backgroundColor: active ? appearance.ratingButtonActiveColor : appearance.ratingButtonColor,\n borderColor: appearance.borderColor,\n }}\n >\n {num}\n </button>\n )\n}\n\nexport function MultipleChoiceQuestion({\n question,\n forceDisableHtml,\n displayQuestionIndex,\n appearance,\n onSubmit,\n}: {\n question: MultipleSurveyQuestion\n forceDisableHtml: boolean\n displayQuestionIndex: number\n appearance: SurveyAppearance\n onSubmit: (choices: string | string[] | null) => void\n}) {\n const textRef = useRef(null)\n const choices = useMemo(() => getDisplayOrderChoices(question), [question])\n const [selectedChoices, setSelectedChoices] = useState<string | string[] | null>(\n question.type === SurveyQuestionType.MultipleChoice ? [] : null\n )\n const [openChoiceSelected, setOpenChoiceSelected] = useState(false)\n const [openEndedInput, setOpenEndedInput] = useState('')\n\n const inputType = question.type === SurveyQuestionType.SingleChoice ? 'radio' : 'checkbox'\n return (\n <div ref={textRef}>\n <QuestionHeader\n question={question.question}\n description={question.description}\n descriptionContentType={question.descriptionContentType}\n forceDisableHtml={forceDisableHtml}\n backgroundColor={appearance.backgroundColor}\n />\n <div className=\"multiple-choice-options\">\n {/* Remove the last element from the choices, if hasOpenChoice is set */}\n {/* shuffle all other options here if question.shuffleOptions is set */}\n {/* Always ensure that the open ended choice is the last option */}\n {choices.map((choice: string, idx: number) => {\n let choiceClass = 'choice-option'\n const val = choice\n const option = choice\n if (!!question.hasOpenChoice && idx === question.choices.length - 1) {\n choiceClass += ' choice-option-open'\n }\n return (\n <div className={choiceClass}>\n <input\n type={inputType}\n id={`surveyQuestion${displayQuestionIndex}Choice${idx}`}\n name={`question${displayQuestionIndex}`}\n value={val}\n disabled={!val}\n onInput={() => {\n if (question.hasOpenChoice && idx === question.choices.length - 1) {\n return setOpenChoiceSelected(!openChoiceSelected)\n }\n if (question.type === SurveyQuestionType.SingleChoice) {\n return setSelectedChoices(val)\n }\n if (\n question.type === SurveyQuestionType.MultipleChoice &&\n isArray(selectedChoices)\n ) {\n if (selectedChoices.includes(val)) {\n // filter out values because clicking on a selected choice should deselect it\n return setSelectedChoices(\n selectedChoices.filter((choice) => choice !== val)\n )\n }\n return setSelectedChoices([...selectedChoices, val])\n }\n }}\n />\n <label\n htmlFor={`surveyQuestion${displayQuestionIndex}Choice${idx}`}\n style={{ color: 'black' }}\n >\n {question.hasOpenChoice && idx === question.choices.length - 1 ? (\n <>\n <span>{option}:</span>\n <input\n type=\"text\"\n id={`surveyQuestion${displayQuestionIndex}Choice${idx}Open`}\n name={`question${displayQuestionIndex}`}\n onInput={(e) => {\n const userValue = e.currentTarget.value\n if (question.type === SurveyQuestionType.SingleChoice) {\n return setSelectedChoices(userValue)\n }\n if (\n question.type === SurveyQuestionType.MultipleChoice &&\n isArray(selectedChoices)\n ) {\n return setOpenEndedInput(userValue)\n }\n }}\n />\n </>\n ) : (\n option\n )}\n </label>\n <span className=\"choice-check\" style={{ color: 'black' }}>\n {checkSVG}\n </span>\n </div>\n )\n })}\n </div>\n <BottomSection\n text={question.buttonText || 'Submit'}\n submitDisabled={\n (isNull(selectedChoices) ||\n (isArray(selectedChoices) && !openChoiceSelected && selectedChoices.length === 0) ||\n (isArray(selectedChoices) &&\n openChoiceSelected &&\n !openEndedInput &&\n selectedChoices.length === 0 &&\n !question.optional)) &&\n !question.optional\n }\n appearance={appearance}\n onSubmit={() => {\n if (openChoiceSelected && question.type === SurveyQuestionType.MultipleChoice) {\n if (isArray(selectedChoices)) {\n onSubmit([...selectedChoices, openEndedInput])\n }\n } else {\n onSubmit(selectedChoices)\n }\n }}\n />\n </div>\n )\n}\n\nconst threeScaleEmojis = [dissatisfiedEmoji, neutralEmoji, satisfiedEmoji]\nconst fiveScaleEmojis = [veryDissatisfiedEmoji, dissatisfiedEmoji, neutralEmoji, satisfiedEmoji, verySatisfiedEmoji]\nconst fiveScaleNumbers = [1, 2, 3, 4, 5]\nconst sevenScaleNumbers = [1, 2, 3, 4, 5, 6, 7]\nconst tenScaleNumbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n\nfunction getScaleNumbers(scale: number): number[] {\n switch (scale) {\n case 5:\n return fiveScaleNumbers\n case 7:\n return sevenScaleNumbers\n case 10:\n return tenScaleNumbers\n default:\n return fiveScaleNumbers\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"QuestionTypes.jsx","sourceRoot":"","sources":["../../../../../src/extensions/surveys/components/QuestionTypes.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n BasicSurveyQuestion,\n SurveyAppearance,\n LinkSurveyQuestion,\n RatingSurveyQuestion,\n MultipleSurveyQuestion,\n SurveyQuestionType,\n} from '../../../posthog-surveys-types'\nimport { RefObject } from 'preact'\nimport { useRef, useState, useMemo } from 'preact/hooks'\nimport { isNull, isArray } from '../../../utils/type-utils'\nimport { useContrastingTextColor } from '../hooks/useContrastingTextColor'\nimport {\n checkSVG,\n dissatisfiedEmoji,\n neutralEmoji,\n satisfiedEmoji,\n veryDissatisfiedEmoji,\n verySatisfiedEmoji,\n} from '../icons'\nimport { getDisplayOrderChoices } from '../surveys-utils'\nimport { BottomSection } from './BottomSection'\nimport { QuestionHeader } from './QuestionHeader'\n\nexport function OpenTextQuestion({\n question,\n forceDisableHtml,\n appearance,\n onSubmit,\n}: {\n question: BasicSurveyQuestion\n forceDisableHtml: boolean\n appearance: SurveyAppearance\n onSubmit: (text: string) => void\n}) {\n const textRef = useRef(null)\n const [text, setText] = useState('')\n\n return (\n <div ref={textRef}>\n <QuestionHeader\n question={question.question}\n description={question.description}\n descriptionContentType={question.descriptionContentType}\n backgroundColor={appearance.backgroundColor}\n forceDisableHtml={forceDisableHtml}\n />\n <textarea rows={4} placeholder={appearance?.placeholder} onInput={(e) => setText(e.currentTarget.value)} />\n <BottomSection\n text={question.buttonText || 'Submit'}\n submitDisabled={!text && !question.optional}\n appearance={appearance}\n onSubmit={() => onSubmit(text)}\n />\n </div>\n )\n}\n\nexport function LinkQuestion({\n question,\n forceDisableHtml,\n appearance,\n onSubmit,\n}: {\n question: LinkSurveyQuestion\n forceDisableHtml: boolean\n appearance: SurveyAppearance\n onSubmit: (clicked: string) => void\n}) {\n return (\n <>\n <QuestionHeader\n question={question.question}\n description={question.description}\n descriptionContentType={question.descriptionContentType}\n forceDisableHtml={forceDisableHtml}\n />\n <BottomSection\n text={question.buttonText || 'Submit'}\n submitDisabled={false}\n link={question.link}\n appearance={appearance}\n onSubmit={() => onSubmit('link clicked')}\n />\n </>\n )\n}\n\nexport function RatingQuestion({\n question,\n forceDisableHtml,\n displayQuestionIndex,\n appearance,\n onSubmit,\n}: {\n question: RatingSurveyQuestion\n forceDisableHtml: boolean\n displayQuestionIndex: number\n appearance: SurveyAppearance\n onSubmit: (rating: number | null) => void\n}) {\n const scale = question.scale\n const starting = question.scale === 10 ? 0 : 1\n const [rating, setRating] = useState<number | null>(null)\n\n return (\n <>\n <QuestionHeader\n question={question.question}\n description={question.description}\n descriptionContentType={question.descriptionContentType}\n forceDisableHtml={forceDisableHtml}\n backgroundColor={appearance.backgroundColor}\n />\n <div className=\"rating-section\">\n <div className=\"rating-options\">\n {question.display === 'emoji' && (\n <div className=\"rating-options-emoji\">\n {(question.scale === 3 ? threeScaleEmojis : fiveScaleEmojis).map((emoji, idx) => {\n const active = idx + 1 === rating\n return (\n <button\n className={`ratings-emoji question-${displayQuestionIndex}-rating-${idx} ${\n active ? 'rating-active' : null\n }`}\n value={idx + 1}\n key={idx}\n type=\"button\"\n onClick={() => {\n setRating(idx + 1)\n }}\n style={{\n fill: active\n ? appearance.ratingButtonActiveColor\n : appearance.ratingButtonColor,\n borderColor: appearance.borderColor,\n }}\n >\n {emoji}\n </button>\n )\n })}\n </div>\n )}\n {question.display === 'number' && (\n <div\n className=\"rating-options-number\"\n style={{ gridTemplateColumns: `repeat(${scale - starting + 1}, minmax(0, 1fr))` }}\n >\n {getScaleNumbers(question.scale).map((number, idx) => {\n const active = rating === number\n return (\n <RatingButton\n key={idx}\n displayQuestionIndex={displayQuestionIndex}\n active={active}\n appearance={appearance}\n num={number}\n setActiveNumber={(num) => {\n setRating(num)\n }}\n />\n )\n })}\n </div>\n )}\n </div>\n <div className=\"rating-text\">\n <div>{question.lowerBoundLabel}</div>\n <div>{question.upperBoundLabel}</div>\n </div>\n </div>\n <BottomSection\n text={question.buttonText || appearance?.submitButtonText || 'Submit'}\n submitDisabled={isNull(rating) && !question.optional}\n appearance={appearance}\n onSubmit={() => onSubmit(rating)}\n />\n </>\n )\n}\n\nexport function RatingButton({\n num,\n active,\n displayQuestionIndex,\n appearance,\n setActiveNumber,\n}: {\n num: number\n active: boolean\n displayQuestionIndex: number\n appearance: SurveyAppearance\n setActiveNumber: (num: number) => void\n}) {\n const { textColor, ref } = useContrastingTextColor({ appearance, defaultTextColor: 'black', forceUpdate: active })\n return (\n <button\n ref={ref as RefObject<HTMLButtonElement>}\n className={`ratings-number question-${displayQuestionIndex}-rating-${num} ${\n active ? 'rating-active' : null\n }`}\n type=\"button\"\n onClick={() => {\n setActiveNumber(num)\n }}\n style={{\n color: textColor,\n backgroundColor: active ? appearance.ratingButtonActiveColor : appearance.ratingButtonColor,\n borderColor: appearance.borderColor,\n }}\n >\n {num}\n </button>\n )\n}\n\nexport function MultipleChoiceQuestion({\n question,\n forceDisableHtml,\n displayQuestionIndex,\n appearance,\n onSubmit,\n}: {\n question: MultipleSurveyQuestion\n forceDisableHtml: boolean\n displayQuestionIndex: number\n appearance: SurveyAppearance\n onSubmit: (choices: string | string[] | null) => void\n}) {\n const textRef = useRef(null)\n const choices = useMemo(() => getDisplayOrderChoices(question), [question])\n const [selectedChoices, setSelectedChoices] = useState<string | string[] | null>(\n question.type === SurveyQuestionType.MultipleChoice ? [] : null\n )\n const [openChoiceSelected, setOpenChoiceSelected] = useState(false)\n const [openEndedInput, setOpenEndedInput] = useState('')\n\n const inputType = question.type === SurveyQuestionType.SingleChoice ? 'radio' : 'checkbox'\n return (\n <div ref={textRef}>\n <QuestionHeader\n question={question.question}\n description={question.description}\n descriptionContentType={question.descriptionContentType}\n forceDisableHtml={forceDisableHtml}\n backgroundColor={appearance.backgroundColor}\n />\n <div className=\"multiple-choice-options\">\n {/* Remove the last element from the choices, if hasOpenChoice is set */}\n {/* shuffle all other options here if question.shuffleOptions is set */}\n {/* Always ensure that the open ended choice is the last option */}\n {choices.map((choice: string, idx: number) => {\n let choiceClass = 'choice-option'\n const val = choice\n const option = choice\n if (!!question.hasOpenChoice && idx === question.choices.length - 1) {\n choiceClass += ' choice-option-open'\n }\n return (\n <div className={choiceClass}>\n <input\n type={inputType}\n id={`surveyQuestion${displayQuestionIndex}Choice${idx}`}\n name={`question${displayQuestionIndex}`}\n value={val}\n disabled={!val}\n onInput={() => {\n if (question.hasOpenChoice && idx === question.choices.length - 1) {\n return setOpenChoiceSelected(!openChoiceSelected)\n }\n if (question.type === SurveyQuestionType.SingleChoice) {\n return setSelectedChoices(val)\n }\n if (\n question.type === SurveyQuestionType.MultipleChoice &&\n isArray(selectedChoices)\n ) {\n if (selectedChoices.includes(val)) {\n // filter out values because clicking on a selected choice should deselect it\n return setSelectedChoices(\n selectedChoices.filter((choice) => choice !== val)\n )\n }\n return setSelectedChoices([...selectedChoices, val])\n }\n }}\n />\n <label\n htmlFor={`surveyQuestion${displayQuestionIndex}Choice${idx}`}\n style={{ color: 'black' }}\n >\n {question.hasOpenChoice && idx === question.choices.length - 1 ? (\n <>\n <span>{option}:</span>\n <input\n type=\"text\"\n id={`surveyQuestion${displayQuestionIndex}Choice${idx}Open`}\n name={`question${displayQuestionIndex}`}\n onInput={(e) => {\n const userValue = e.currentTarget.value\n if (question.type === SurveyQuestionType.SingleChoice) {\n return setSelectedChoices(userValue)\n }\n if (\n question.type === SurveyQuestionType.MultipleChoice &&\n isArray(selectedChoices)\n ) {\n return setOpenEndedInput(userValue)\n }\n }}\n />\n </>\n ) : (\n option\n )}\n </label>\n <span className=\"choice-check\" style={{ color: 'black' }}>\n {checkSVG}\n </span>\n </div>\n )\n })}\n </div>\n <BottomSection\n text={question.buttonText || 'Submit'}\n submitDisabled={\n (isNull(selectedChoices) ||\n (isArray(selectedChoices) && !openChoiceSelected && selectedChoices.length === 0) ||\n (isArray(selectedChoices) &&\n openChoiceSelected &&\n !openEndedInput &&\n selectedChoices.length === 0 &&\n !question.optional)) &&\n !question.optional\n }\n appearance={appearance}\n onSubmit={() => {\n if (openChoiceSelected && question.type === SurveyQuestionType.MultipleChoice) {\n if (isArray(selectedChoices)) {\n onSubmit([...selectedChoices, openEndedInput])\n }\n } else {\n onSubmit(selectedChoices)\n }\n }}\n />\n </div>\n )\n}\n\nconst threeScaleEmojis = [dissatisfiedEmoji, neutralEmoji, satisfiedEmoji]\nconst fiveScaleEmojis = [veryDissatisfiedEmoji, dissatisfiedEmoji, neutralEmoji, satisfiedEmoji, verySatisfiedEmoji]\nconst fiveScaleNumbers = [1, 2, 3, 4, 5]\nconst sevenScaleNumbers = [1, 2, 3, 4, 5, 6, 7]\nconst tenScaleNumbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n\nfunction getScaleNumbers(scale: number): number[] {\n switch (scale) {\n case 5:\n return fiveScaleNumbers\n case 7:\n return sevenScaleNumbers\n case 10:\n return tenScaleNumbers\n default:\n return fiveScaleNumbers\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useContrastingTextColor.js","sourceRoot":"","sources":["../../../../../src/extensions/surveys/hooks/useContrastingTextColor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAG1D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,MAAM,UAAU,uBAAuB,CAAC,OAIvC;;IAIG,IAAM,GAAG,GAAG,MAAM,CAAc,IAAI,CAAC,CAAA;IAC/B,IAAA,KAAA,OAA4B,QAAQ,CAAC,MAAA,OAAO,CAAC,gBAAgB,mCAAI,OAAO,CAAC,IAAA,EAAxE,SAAS,QAAA,EAAE,YAAY,QAAiD,CAAA;IAE/E,4EAA4E;IAC5E,SAAS,CAAC;QACN,IAAI,GAAG,CAAC,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"useContrastingTextColor.js","sourceRoot":"","sources":["../../../../../src/extensions/surveys/hooks/useContrastingTextColor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAG1D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,MAAM,UAAU,uBAAuB,CAAC,OAIvC;;IAIG,IAAM,GAAG,GAAG,MAAM,CAAc,IAAI,CAAC,CAAA;IAC/B,IAAA,KAAA,OAA4B,QAAQ,CAAC,MAAA,OAAO,CAAC,gBAAgB,mCAAI,OAAO,CAAC,IAAA,EAAxE,SAAS,QAAA,EAAE,YAAY,QAAiD,CAAA;IAE/E,4EAA4E;IAC5E,SAAS,CAAC;QACN,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,IAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACvC,YAAY,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;IAE7C,OAAO;QACH,GAAG,KAAA;QACH,SAAS,WAAA;KACZ,CAAA;AACL,CAAC","sourcesContent":["import { useEffect, useRef, useState } from 'preact/hooks'\nimport { SurveyAppearance } from '../../../posthog-surveys-types'\nimport * as Preact from 'preact'\nimport { getTextColor } from '../surveys-utils'\n\nexport function useContrastingTextColor(options: {\n appearance: SurveyAppearance\n defaultTextColor?: string\n forceUpdate?: boolean\n}): {\n ref: Preact.RefObject<HTMLElement>\n textColor: string\n} {\n const ref = useRef<HTMLElement>(null)\n const [textColor, setTextColor] = useState(options.defaultTextColor ?? 'black')\n\n // TODO: useContext to get the background colors instead of querying the DOM\n useEffect(() => {\n if (ref.current) {\n const color = getTextColor(ref.current)\n setTextColor(color)\n }\n }, [options.appearance, options.forceUpdate])\n\n return {\n ref,\n textColor,\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surveys-utils.jsx","sourceRoot":"","sources":["../../../../src/extensions/surveys/surveys-utils.tsx"],"names":[],"mappings":"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","sourcesContent":["import { PostHog } from '../../posthog-core'\nimport { Survey, SurveyAppearance, MultipleSurveyQuestion, SurveyQuestion } from '../../posthog-surveys-types'\nimport { window as _window, document as _document } from '../../utils/globals'\nimport { VNode, cloneElement, createContext } from 'preact'\n// We cast the types here which is dangerous but protected by the top level generateSurveys call\nconst window = _window as Window & typeof globalThis\nconst document = _document as Document\n\nexport const style = (appearance: SurveyAppearance | null) => {\n const positions = {\n left: 'left: 30px;',\n right: 'right: 30px;',\n center: `\n left: 50%;\n transform: translateX(-50%);\n `,\n }\n return `\n .survey-form, .thank-you-message {\n position: fixed;\n margin: 0px;\n bottom: 0px;\n color: black;\n font-weight: normal;\n font-family: -apple-system, BlinkMacSystemFont, \"Inter\", \"Segoe UI\", \"Roboto\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n text-align: left;\n max-width: ${parseInt(appearance?.maxWidth || '300')}px;\n width: 100%;\n z-index: ${parseInt(appearance?.zIndex || '99999')};\n border: 1.5px solid ${appearance?.borderColor || '#c9c6c6'};\n border-bottom: 0px;\n ${positions[appearance?.position || 'right'] || 'right: 30px;'}\n flex-direction: column;\n background: ${appearance?.backgroundColor || '#eeeded'};\n border-top-left-radius: 10px;\n border-top-right-radius: 10px;\n box-shadow: -6px 0 16px -8px rgb(0 0 0 / 8%), -9px 0 28px 0 rgb(0 0 0 / 5%), -12px 0 48px 16px rgb(0 0 0 / 3%);\n }\n \n .survey-box, .thank-you-message-container {\n padding: 20px 25px 10px;\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n }\n\n .thank-you-message {\n text-align: center;\n }\n\n .form-submit[disabled] {\n opacity: 0.6;\n filter: grayscale(50%);\n cursor: not-allowed;\n }\n .survey-form textarea {\n color: #2d2d2d;\n font-size: 14px;\n font-family: -apple-system, BlinkMacSystemFont, \"Inter\", \"Segoe UI\", \"Roboto\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n background: white;\n color: black;\n outline: none;\n padding-left: 10px;\n padding-right: 10px;\n padding-top: 10px;\n border-radius: 6px;\n border-color: ${appearance?.borderColor || '#c9c6c6'};\n margin-top: 14px;\n width: 100%;\n box-sizing: border-box;\n }\n .survey-box:has(.survey-question:empty):not(:has(.survey-question-description)) textarea {\n margin-top: 0;\n }\n .form-submit {\n box-sizing: border-box;\n margin: 0;\n font-family: inherit;\n overflow: visible;\n text-transform: none;\n position: relative;\n display: inline-block;\n font-weight: 700;\n white-space: nowrap;\n text-align: center;\n border: 1.5px solid transparent;\n cursor: pointer;\n user-select: none;\n touch-action: manipulation;\n padding: 12px;\n font-size: 14px;\n border-radius: 6px;\n outline: 0;\n background: ${appearance?.submitButtonColor || 'black'} !important;\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);\n box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);\n width: 100%;\n }\n .form-cancel {\n display: flex;\n float: right;\n border: none;\n background: none;\n cursor: pointer;\n }\n .cancel-btn-wrapper {\n position: absolute;\n width: 35px;\n height: 35px;\n border-radius: 100%;\n top: 0;\n right: 0;\n transform: translate(50%, -50%);\n background: white;\n border: 1.5px solid ${appearance?.borderColor || '#c9c6c6'};\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .bolded { font-weight: 600; }\n .buttons {\n display: flex;\n justify-content: center;\n }\n .footer-branding {\n font-size: 11px;\n margin-top: 10px;\n text-align: center;\n display: flex;\n justify-content: center;\n gap: 4px;\n align-items: center;\n font-weight: 500;\n background: ${appearance?.backgroundColor || '#eeeded'};\n text-decoration: none;\n backgroundColor: ${appearance?.backgroundColor || '#eeeded'};\n color: ${getContrastingTextColor(appearance?.backgroundColor || '#eeeded')};\n }\n .survey-question {\n font-weight: 500;\n font-size: 14px;\n background: ${appearance?.backgroundColor || '#eeeded'};\n }\n .question-textarea-wrapper {\n display: flex;\n flex-direction: column;\n }\n .survey-question-description {\n font-size: 13px;\n padding-top: 5px;\n background: ${appearance?.backgroundColor || '#eeeded'};\n }\n .ratings-number {\n font-size: 16px;\n font-weight: 600;\n padding: 8px 0px;\n border: none;\n }\n .ratings-number:hover {\n cursor: pointer;\n }\n .rating-options {\n margin-top: 14px;\n }\n .rating-options-number {\n display: grid;\n border-radius: 6px;\n overflow: hidden;\n border: 1.5px solid ${appearance?.borderColor || '#c9c6c6'};\n }\n .rating-options-number > .ratings-number {\n border-right: 1px solid ${appearance?.borderColor || '#c9c6c6'};\n }\n .rating-options-number > .ratings-number:last-of-type {\n border-right: 0px;\n }\n .rating-options-number .rating-active {\n background: ${appearance?.ratingButtonActiveColor || 'black'};\n }\n .rating-options-emoji {\n display: flex;\n justify-content: space-between;\n }\n .ratings-emoji {\n font-size: 16px;\n background-color: transparent;\n border: none;\n padding: 0px;\n }\n .ratings-emoji:hover {\n cursor: pointer;\n }\n .ratings-emoji.rating-active svg {\n fill: ${appearance?.ratingButtonActiveColor || 'black'};\n }\n .emoji-svg {\n fill: '#939393';\n }\n .rating-text {\n display: flex;\n flex-direction: row;\n font-size: 11px;\n justify-content: space-between;\n margin-top: 6px;\n background: ${appearance?.backgroundColor || '#eeeded'};\n opacity: .60;\n }\n .multiple-choice-options {\n margin-top: 13px;\n font-size: 14px;\n }\n .survey-box:has(.survey-question:empty):not(:has(.survey-question-description)) .multiple-choice-options {\n margin-top: 0;\n }\n .multiple-choice-options .choice-option {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 13px;\n cursor: pointer;\n margin-bottom: 5px;\n position: relative;\n }\n .multiple-choice-options > .choice-option:last-of-type {\n margin-bottom: 0px;\n }\n .multiple-choice-options input {\n cursor: pointer;\n position: absolute;\n opacity: 0;\n }\n .choice-check {\n position: absolute;\n right: 10px;\n background: white;\n }\n .choice-check svg {\n display: none;\n }\n .multiple-choice-options .choice-option:hover .choice-check svg {\n display: inline-block;\n opacity: .25;\n }\n .multiple-choice-options input:checked + label + .choice-check svg {\n display: inline-block;\n opacity: 100% !important;\n }\n .multiple-choice-options input:checked + label {\n font-weight: bold;\n border: 1.5px solid rgba(0,0,0);\n }\n .multiple-choice-options input:checked + label input {\n font-weight: bold;\n }\n .multiple-choice-options label {\n width: 100%;\n cursor: pointer;\n padding: 10px;\n border: 1.5px solid rgba(0,0,0,.25);\n border-radius: 4px;\n background: white;\n }\n .multiple-choice-options .choice-option-open label {\n padding-right: 30px;\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n max-width: 100%;\n }\n .multiple-choice-options .choice-option-open label span {\n width: 100%;\n }\n .multiple-choice-options .choice-option-open input:disabled + label {\n opacity: 0.6;\n }\n .multiple-choice-options .choice-option-open label input {\n position: relative;\n opacity: 1;\n flex-grow: 1;\n border: 0;\n outline: 0;\n }\n .thank-you-message-body {\n margin-top: 6px;\n font-size: 14px;\n background: ${appearance?.backgroundColor || '#eeeded'};\n }\n .thank-you-message-header {\n margin: 10px 0px 0px;\n background: ${appearance?.backgroundColor || '#eeeded'};\n }\n .thank-you-message-container .form-submit {\n margin-top: 20px;\n margin-bottom: 10px;\n }\n .thank-you-message-countdown {\n margin-left: 6px;\n }\n .bottom-section {\n margin-top: 14px;\n }\n `\n}\n\nfunction nameToHex(name: string) {\n return {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n 'indianred ': '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgrey: '#d3d3d3',\n lightgreen: '#90ee90',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370d8',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#d87093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n }[name.toLowerCase()]\n}\n\nfunction hex2rgb(c: string) {\n if (c[0] === '#') {\n const hexColor = c.replace(/^#/, '')\n const r = parseInt(hexColor.slice(0, 2), 16)\n const g = parseInt(hexColor.slice(2, 4), 16)\n const b = parseInt(hexColor.slice(4, 6), 16)\n return 'rgb(' + r + ',' + g + ',' + b + ')'\n }\n return 'rgb(255, 255, 255)'\n}\n\nexport function getContrastingTextColor(color: string = defaultBackgroundColor) {\n let rgb\n if (color[0] === '#') {\n rgb = hex2rgb(color)\n }\n if (color.startsWith('rgb')) {\n rgb = color\n }\n // otherwise it's a color name\n const nameColorToHex = nameToHex(color)\n if (nameColorToHex) {\n rgb = hex2rgb(nameColorToHex)\n }\n if (!rgb) {\n return 'black'\n }\n const colorMatch = rgb.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)\n if (colorMatch) {\n const r = parseInt(colorMatch[1])\n const g = parseInt(colorMatch[2])\n const b = parseInt(colorMatch[3])\n const hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b))\n return hsp > 127.5 ? 'black' : 'white'\n }\n return 'black'\n}\nexport function getTextColor(el: HTMLElement) {\n const backgroundColor = window.getComputedStyle(el).backgroundColor\n if (backgroundColor === 'rgba(0, 0, 0, 0)') {\n return 'black'\n }\n const colorMatch = backgroundColor.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)\n if (!colorMatch) return 'black'\n\n const r = parseInt(colorMatch[1])\n const g = parseInt(colorMatch[2])\n const b = parseInt(colorMatch[3])\n const hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b))\n return hsp > 127.5 ? 'black' : 'white'\n}\n\nexport const defaultSurveyAppearance: SurveyAppearance = {\n backgroundColor: '#eeeded',\n submitButtonColor: 'black',\n submitButtonTextColor: 'white',\n ratingButtonColor: 'white',\n ratingButtonActiveColor: 'black',\n borderColor: '#c9c6c6',\n placeholder: 'Start typing...',\n whiteLabel: false,\n displayThankYouMessage: true,\n thankYouMessageHeader: 'Thank you for your feedback!',\n position: 'right',\n}\n\nexport const defaultBackgroundColor = '#eeeded'\n\nexport const createShadow = (styleSheet: string, surveyId: string, element?: Element) => {\n const div = document.createElement('div')\n div.className = `PostHogSurvey${surveyId}`\n const shadow = div.attachShadow({ mode: 'open' })\n if (styleSheet) {\n const styleElement = Object.assign(document.createElement('style'), {\n innerText: styleSheet,\n })\n shadow.appendChild(styleElement)\n }\n ;(element ? element : document.body).appendChild(div)\n return shadow\n}\n\nexport const sendSurveyEvent = (\n responses: Record<string, string | number | string[] | null> = {},\n survey: Survey,\n posthog?: PostHog\n) => {\n if (!posthog) return\n localStorage.setItem(getSurveySeenKey(survey), 'true')\n\n posthog.capture('survey sent', {\n $survey_name: survey.name,\n $survey_id: survey.id,\n $survey_iteration: survey.current_iteration,\n $survey_iteration_start_date: survey.current_iteration_start_date,\n $survey_questions: survey.questions.map((question) => question.question),\n sessionRecordingUrl: posthog.get_session_replay_url?.(),\n ...responses,\n $set: {\n [getSurveyInteractionProperty(survey, 'responded')]: true,\n },\n })\n window.dispatchEvent(new Event('PHSurveySent'))\n}\n\nexport const dismissedSurveyEvent = (survey: Survey, posthog?: PostHog, readOnly?: boolean) => {\n // TODO: state management and unit tests for this would be nice\n if (readOnly || !posthog) {\n return\n }\n posthog.capture('survey dismissed', {\n $survey_name: survey.name,\n $survey_id: survey.id,\n $survey_iteration: survey.current_iteration,\n $survey_iteration_start_date: survey.current_iteration_start_date,\n sessionRecordingUrl: posthog.get_session_replay_url?.(),\n $set: {\n [getSurveyInteractionProperty(survey, 'dismissed')]: true,\n },\n })\n localStorage.setItem(getSurveySeenKey(survey), 'true')\n window.dispatchEvent(new Event('PHSurveyClosed'))\n}\n\n// Use the Fisher-yates algorithm to shuffle this array\n// https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle\nexport const shuffle = (array: any[]) => {\n return array\n .map((a) => ({ sort: Math.floor(Math.random() * 10), value: a }))\n .sort((a, b) => a.sort - b.sort)\n .map((a) => a.value)\n}\n\nconst reverseIfUnshuffled = (unshuffled: any[], shuffled: any[]): any[] => {\n if (unshuffled.length === shuffled.length && unshuffled.every((val, index) => val === shuffled[index])) {\n return shuffled.reverse()\n }\n\n return shuffled\n}\n\nexport const getDisplayOrderChoices = (question: MultipleSurveyQuestion): string[] => {\n if (!question.shuffleOptions) {\n return question.choices\n }\n\n const displayOrderChoices = question.choices\n let openEndedChoice = ''\n if (question.hasOpenChoice) {\n // if the question has an open-ended choice, its always the last element in the choices array.\n openEndedChoice = displayOrderChoices.pop()!\n }\n\n const shuffledOptions = reverseIfUnshuffled(displayOrderChoices, shuffle(displayOrderChoices))\n\n if (question.hasOpenChoice) {\n question.choices.push(openEndedChoice)\n shuffledOptions.push(openEndedChoice)\n }\n\n return shuffledOptions\n}\n\nexport const getDisplayOrderQuestions = (survey: Survey): SurveyQuestion[] => {\n // retain the original questionIndex so we can correlate values in the webapp\n survey.questions.forEach((question, idx) => {\n question.originalQuestionIndex = idx\n })\n\n if (!survey.appearance || !survey.appearance.shuffleQuestions) {\n return survey.questions\n }\n\n return reverseIfUnshuffled(survey.questions, shuffle(survey.questions))\n}\n\nexport const hasEvents = (survey: Survey): boolean => {\n return survey.conditions?.events?.values?.length != undefined && survey.conditions?.events?.values?.length > 0\n}\n\nexport const canActivateRepeatedly = (survey: Survey): boolean => {\n return !!(survey.conditions?.events?.repeatedActivation && hasEvents(survey))\n}\n\n/**\n * getSurveySeen checks local storage for the surveySeen Key a\n * and overrides this value if the survey can be repeatedly activated by its events.\n * @param survey\n */\nexport const getSurveySeen = (survey: Survey): boolean => {\n const surveySeen = localStorage.getItem(getSurveySeenKey(survey))\n if (surveySeen) {\n // if a survey has already been seen,\n // we will override it with the event repeated activation value.\n return !canActivateRepeatedly(survey)\n }\n\n return false\n}\n\nexport const getSurveySeenKey = (survey: Survey): string => {\n let surveySeenKey = `seenSurvey_${survey.id}`\n if (survey.current_iteration && survey.current_iteration > 0) {\n surveySeenKey = `seenSurvey_${survey.id}_${survey.current_iteration}`\n }\n\n return surveySeenKey\n}\n\nconst getSurveyInteractionProperty = (survey: Survey, action: string): string => {\n let surveyProperty = `$survey_${action}/${survey.id}`\n if (survey.current_iteration && survey.current_iteration > 0) {\n surveyProperty = `$survey_${action}/${survey.id}/${survey.current_iteration}`\n }\n\n return surveyProperty\n}\n\nexport const SurveyContext = createContext<{\n isPreviewMode: boolean\n previewPageIndex: number | undefined\n handleCloseSurveyPopup: () => void\n isPopup: boolean\n}>({\n isPreviewMode: false,\n previewPageIndex: 0,\n handleCloseSurveyPopup: () => {},\n isPopup: true,\n})\n\ninterface RenderProps {\n component: VNode<{ className: string }>\n children: string\n renderAsHtml?: boolean\n style?: React.CSSProperties\n}\n\nexport const renderChildrenAsTextOrHtml = ({ component, children, renderAsHtml, style }: RenderProps) => {\n return renderAsHtml\n ? cloneElement(component, {\n dangerouslySetInnerHTML: { __html: children },\n style,\n })\n : cloneElement(component, {\n children,\n style,\n })\n}\n"]}
|
|
1
|
+
{"version":3,"file":"surveys-utils.jsx","sourceRoot":"","sources":["../../../../src/extensions/surveys/surveys-utils.tsx"],"names":[],"mappings":"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","sourcesContent":["import { PostHog } from '../../posthog-core'\nimport { Survey, SurveyAppearance, MultipleSurveyQuestion, SurveyQuestion } from '../../posthog-surveys-types'\nimport { window as _window, document as _document } from '../../utils/globals'\nimport { VNode, cloneElement, createContext } from 'preact'\n// We cast the types here which is dangerous but protected by the top level generateSurveys call\nconst window = _window as Window & typeof globalThis\nconst document = _document as Document\n\nexport const style = (appearance: SurveyAppearance | null) => {\n const positions = {\n left: 'left: 30px;',\n right: 'right: 30px;',\n center: `\n left: 50%;\n transform: translateX(-50%);\n `,\n }\n return `\n .survey-form, .thank-you-message {\n position: fixed;\n margin: 0px;\n bottom: 0px;\n color: black;\n font-weight: normal;\n font-family: -apple-system, BlinkMacSystemFont, \"Inter\", \"Segoe UI\", \"Roboto\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n text-align: left;\n max-width: ${parseInt(appearance?.maxWidth || '300')}px;\n width: 100%;\n z-index: ${parseInt(appearance?.zIndex || '99999')};\n border: 1.5px solid ${appearance?.borderColor || '#c9c6c6'};\n border-bottom: 0px;\n ${positions[appearance?.position || 'right'] || 'right: 30px;'}\n flex-direction: column;\n background: ${appearance?.backgroundColor || '#eeeded'};\n border-top-left-radius: 10px;\n border-top-right-radius: 10px;\n box-shadow: -6px 0 16px -8px rgb(0 0 0 / 8%), -9px 0 28px 0 rgb(0 0 0 / 5%), -12px 0 48px 16px rgb(0 0 0 / 3%);\n }\n \n .survey-box, .thank-you-message-container {\n padding: 20px 25px 10px;\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n }\n\n .thank-you-message {\n text-align: center;\n }\n\n .form-submit[disabled] {\n opacity: 0.6;\n filter: grayscale(50%);\n cursor: not-allowed;\n }\n .survey-form textarea {\n color: #2d2d2d;\n font-size: 14px;\n font-family: -apple-system, BlinkMacSystemFont, \"Inter\", \"Segoe UI\", \"Roboto\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n background: white;\n color: black;\n outline: none;\n padding-left: 10px;\n padding-right: 10px;\n padding-top: 10px;\n border-radius: 6px;\n border-color: ${appearance?.borderColor || '#c9c6c6'};\n margin-top: 14px;\n width: 100%;\n box-sizing: border-box;\n }\n .survey-box:has(.survey-question:empty):not(:has(.survey-question-description)) textarea {\n margin-top: 0;\n }\n .form-submit {\n box-sizing: border-box;\n margin: 0;\n font-family: inherit;\n overflow: visible;\n text-transform: none;\n position: relative;\n display: inline-block;\n font-weight: 700;\n white-space: nowrap;\n text-align: center;\n border: 1.5px solid transparent;\n cursor: pointer;\n user-select: none;\n touch-action: manipulation;\n padding: 12px;\n font-size: 14px;\n border-radius: 6px;\n outline: 0;\n background: ${appearance?.submitButtonColor || 'black'} !important;\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);\n box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);\n width: 100%;\n }\n .form-cancel {\n display: flex;\n float: right;\n border: none;\n background: none;\n cursor: pointer;\n }\n .cancel-btn-wrapper {\n position: absolute;\n width: 35px;\n height: 35px;\n border-radius: 100%;\n top: 0;\n right: 0;\n transform: translate(50%, -50%);\n background: white;\n border: 1.5px solid ${appearance?.borderColor || '#c9c6c6'};\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .bolded { font-weight: 600; }\n .buttons {\n display: flex;\n justify-content: center;\n }\n .footer-branding {\n font-size: 11px;\n margin-top: 10px;\n text-align: center;\n display: flex;\n justify-content: center;\n gap: 4px;\n align-items: center;\n font-weight: 500;\n background: ${appearance?.backgroundColor || '#eeeded'};\n text-decoration: none;\n backgroundColor: ${appearance?.backgroundColor || '#eeeded'};\n color: ${getContrastingTextColor(appearance?.backgroundColor || '#eeeded')};\n }\n .survey-question {\n font-weight: 500;\n font-size: 14px;\n background: ${appearance?.backgroundColor || '#eeeded'};\n }\n .question-textarea-wrapper {\n display: flex;\n flex-direction: column;\n }\n .survey-question-description {\n font-size: 13px;\n padding-top: 5px;\n background: ${appearance?.backgroundColor || '#eeeded'};\n }\n .ratings-number {\n font-size: 16px;\n font-weight: 600;\n padding: 8px 0px;\n border: none;\n }\n .ratings-number:hover {\n cursor: pointer;\n }\n .rating-options {\n margin-top: 14px;\n }\n .rating-options-number {\n display: grid;\n border-radius: 6px;\n overflow: hidden;\n border: 1.5px solid ${appearance?.borderColor || '#c9c6c6'};\n }\n .rating-options-number > .ratings-number {\n border-right: 1px solid ${appearance?.borderColor || '#c9c6c6'};\n }\n .rating-options-number > .ratings-number:last-of-type {\n border-right: 0px;\n }\n .rating-options-number .rating-active {\n background: ${appearance?.ratingButtonActiveColor || 'black'};\n }\n .rating-options-emoji {\n display: flex;\n justify-content: space-between;\n }\n .ratings-emoji {\n font-size: 16px;\n background-color: transparent;\n border: none;\n padding: 0px;\n }\n .ratings-emoji:hover {\n cursor: pointer;\n }\n .ratings-emoji.rating-active svg {\n fill: ${appearance?.ratingButtonActiveColor || 'black'};\n }\n .emoji-svg {\n fill: '#939393';\n }\n .rating-text {\n display: flex;\n flex-direction: row;\n font-size: 11px;\n justify-content: space-between;\n margin-top: 6px;\n background: ${appearance?.backgroundColor || '#eeeded'};\n opacity: .60;\n }\n .multiple-choice-options {\n margin-top: 13px;\n font-size: 14px;\n }\n .survey-box:has(.survey-question:empty):not(:has(.survey-question-description)) .multiple-choice-options {\n margin-top: 0;\n }\n .multiple-choice-options .choice-option {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 13px;\n cursor: pointer;\n margin-bottom: 5px;\n position: relative;\n }\n .multiple-choice-options > .choice-option:last-of-type {\n margin-bottom: 0px;\n }\n .multiple-choice-options input {\n cursor: pointer;\n position: absolute;\n opacity: 0;\n }\n .choice-check {\n position: absolute;\n right: 10px;\n background: white;\n }\n .choice-check svg {\n display: none;\n }\n .multiple-choice-options .choice-option:hover .choice-check svg {\n display: inline-block;\n opacity: .25;\n }\n .multiple-choice-options input:checked + label + .choice-check svg {\n display: inline-block;\n opacity: 100% !important;\n }\n .multiple-choice-options input:checked + label {\n font-weight: bold;\n border: 1.5px solid rgba(0,0,0);\n }\n .multiple-choice-options input:checked + label input {\n font-weight: bold;\n }\n .multiple-choice-options label {\n width: 100%;\n cursor: pointer;\n padding: 10px;\n border: 1.5px solid rgba(0,0,0,.25);\n border-radius: 4px;\n background: white;\n }\n .multiple-choice-options .choice-option-open label {\n padding-right: 30px;\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n max-width: 100%;\n }\n .multiple-choice-options .choice-option-open label span {\n width: 100%;\n }\n .multiple-choice-options .choice-option-open input:disabled + label {\n opacity: 0.6;\n }\n .multiple-choice-options .choice-option-open label input {\n position: relative;\n opacity: 1;\n flex-grow: 1;\n border: 0;\n outline: 0;\n }\n .thank-you-message-body {\n margin-top: 6px;\n font-size: 14px;\n background: ${appearance?.backgroundColor || '#eeeded'};\n }\n .thank-you-message-header {\n margin: 10px 0px 0px;\n background: ${appearance?.backgroundColor || '#eeeded'};\n }\n .thank-you-message-container .form-submit {\n margin-top: 20px;\n margin-bottom: 10px;\n }\n .thank-you-message-countdown {\n margin-left: 6px;\n }\n .bottom-section {\n margin-top: 14px;\n }\n `\n}\n\nfunction nameToHex(name: string) {\n return {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n 'indianred ': '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgrey: '#d3d3d3',\n lightgreen: '#90ee90',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370d8',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#d87093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n }[name.toLowerCase()]\n}\n\nfunction hex2rgb(c: string) {\n if (c[0] === '#') {\n const hexColor = c.replace(/^#/, '')\n const r = parseInt(hexColor.slice(0, 2), 16)\n const g = parseInt(hexColor.slice(2, 4), 16)\n const b = parseInt(hexColor.slice(4, 6), 16)\n return 'rgb(' + r + ',' + g + ',' + b + ')'\n }\n return 'rgb(255, 255, 255)'\n}\n\nexport function getContrastingTextColor(color: string = defaultBackgroundColor) {\n let rgb\n if (color[0] === '#') {\n rgb = hex2rgb(color)\n }\n if (color.startsWith('rgb')) {\n rgb = color\n }\n // otherwise it's a color name\n const nameColorToHex = nameToHex(color)\n if (nameColorToHex) {\n rgb = hex2rgb(nameColorToHex)\n }\n if (!rgb) {\n return 'black'\n }\n const colorMatch = rgb.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)\n if (colorMatch) {\n const r = parseInt(colorMatch[1])\n const g = parseInt(colorMatch[2])\n const b = parseInt(colorMatch[3])\n const hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b))\n return hsp > 127.5 ? 'black' : 'white'\n }\n return 'black'\n}\nexport function getTextColor(el: HTMLElement) {\n const backgroundColor = window.getComputedStyle(el).backgroundColor\n if (backgroundColor === 'rgba(0, 0, 0, 0)') {\n return 'black'\n }\n const colorMatch = backgroundColor.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)\n if (!colorMatch) return 'black'\n\n const r = parseInt(colorMatch[1])\n const g = parseInt(colorMatch[2])\n const b = parseInt(colorMatch[3])\n const hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b))\n return hsp > 127.5 ? 'black' : 'white'\n}\n\nexport const defaultSurveyAppearance: SurveyAppearance = {\n backgroundColor: '#eeeded',\n submitButtonColor: 'black',\n submitButtonTextColor: 'white',\n ratingButtonColor: 'white',\n ratingButtonActiveColor: 'black',\n borderColor: '#c9c6c6',\n placeholder: 'Start typing...',\n whiteLabel: false,\n displayThankYouMessage: true,\n thankYouMessageHeader: 'Thank you for your feedback!',\n position: 'right',\n}\n\nexport const defaultBackgroundColor = '#eeeded'\n\nexport const createShadow = (styleSheet: string, surveyId: string, element?: Element) => {\n const div = document.createElement('div')\n div.className = `PostHogSurvey${surveyId}`\n const shadow = div.attachShadow({ mode: 'open' })\n if (styleSheet) {\n const styleElement = Object.assign(document.createElement('style'), {\n innerText: styleSheet,\n })\n shadow.appendChild(styleElement)\n }\n ;(element ? element : document.body).appendChild(div)\n return shadow\n}\n\nexport const sendSurveyEvent = (\n responses: Record<string, string | number | string[] | null> = {},\n survey: Survey,\n posthog?: PostHog\n) => {\n if (!posthog) return\n localStorage.setItem(getSurveySeenKey(survey), 'true')\n\n posthog.capture('survey sent', {\n $survey_name: survey.name,\n $survey_id: survey.id,\n $survey_iteration: survey.current_iteration,\n $survey_iteration_start_date: survey.current_iteration_start_date,\n $survey_questions: survey.questions.map((question) => question.question),\n sessionRecordingUrl: posthog.get_session_replay_url?.(),\n ...responses,\n $set: {\n [getSurveyInteractionProperty(survey, 'responded')]: true,\n },\n })\n window.dispatchEvent(new Event('PHSurveySent'))\n}\n\nexport const dismissedSurveyEvent = (survey: Survey, posthog?: PostHog, readOnly?: boolean) => {\n // TODO: state management and unit tests for this would be nice\n if (readOnly || !posthog) {\n return\n }\n posthog.capture('survey dismissed', {\n $survey_name: survey.name,\n $survey_id: survey.id,\n $survey_iteration: survey.current_iteration,\n $survey_iteration_start_date: survey.current_iteration_start_date,\n sessionRecordingUrl: posthog.get_session_replay_url?.(),\n $set: {\n [getSurveyInteractionProperty(survey, 'dismissed')]: true,\n },\n })\n localStorage.setItem(getSurveySeenKey(survey), 'true')\n window.dispatchEvent(new Event('PHSurveyClosed'))\n}\n\n// Use the Fisher-yates algorithm to shuffle this array\n// https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle\nexport const shuffle = (array: any[]) => {\n return array\n .map((a) => ({ sort: Math.floor(Math.random() * 10), value: a }))\n .sort((a, b) => a.sort - b.sort)\n .map((a) => a.value)\n}\n\nconst reverseIfUnshuffled = (unshuffled: any[], shuffled: any[]): any[] => {\n if (unshuffled.length === shuffled.length && unshuffled.every((val, index) => val === shuffled[index])) {\n return shuffled.reverse()\n }\n\n return shuffled\n}\n\nexport const getDisplayOrderChoices = (question: MultipleSurveyQuestion): string[] => {\n if (!question.shuffleOptions) {\n return question.choices\n }\n\n const displayOrderChoices = question.choices\n let openEndedChoice = ''\n if (question.hasOpenChoice) {\n // if the question has an open-ended choice, its always the last element in the choices array.\n openEndedChoice = displayOrderChoices.pop()!\n }\n\n const shuffledOptions = reverseIfUnshuffled(displayOrderChoices, shuffle(displayOrderChoices))\n\n if (question.hasOpenChoice) {\n question.choices.push(openEndedChoice)\n shuffledOptions.push(openEndedChoice)\n }\n\n return shuffledOptions\n}\n\nexport const getDisplayOrderQuestions = (survey: Survey): SurveyQuestion[] => {\n // retain the original questionIndex so we can correlate values in the webapp\n survey.questions.forEach((question, idx) => {\n question.originalQuestionIndex = idx\n })\n\n if (!survey.appearance || !survey.appearance.shuffleQuestions) {\n return survey.questions\n }\n\n return reverseIfUnshuffled(survey.questions, shuffle(survey.questions))\n}\n\nexport const hasEvents = (survey: Survey): boolean => {\n return survey.conditions?.events?.values?.length != undefined && survey.conditions?.events?.values?.length > 0\n}\n\nexport const canActivateRepeatedly = (survey: Survey): boolean => {\n return !!(survey.conditions?.events?.repeatedActivation && hasEvents(survey))\n}\n\n/**\n * getSurveySeen checks local storage for the surveySeen Key a\n * and overrides this value if the survey can be repeatedly activated by its events.\n * @param survey\n */\nexport const getSurveySeen = (survey: Survey): boolean => {\n const surveySeen = localStorage.getItem(getSurveySeenKey(survey))\n if (surveySeen) {\n // if a survey has already been seen,\n // we will override it with the event repeated activation value.\n return !canActivateRepeatedly(survey)\n }\n\n return false\n}\n\nexport const getSurveySeenKey = (survey: Survey): string => {\n let surveySeenKey = `seenSurvey_${survey.id}`\n if (survey.current_iteration && survey.current_iteration > 0) {\n surveySeenKey = `seenSurvey_${survey.id}_${survey.current_iteration}`\n }\n\n return surveySeenKey\n}\n\nconst getSurveyInteractionProperty = (survey: Survey, action: string): string => {\n let surveyProperty = `$survey_${action}/${survey.id}`\n if (survey.current_iteration && survey.current_iteration > 0) {\n surveyProperty = `$survey_${action}/${survey.id}/${survey.current_iteration}`\n }\n\n return surveyProperty\n}\n\nexport const SurveyContext = createContext<{\n isPreviewMode: boolean\n previewPageIndex: number | undefined\n handleCloseSurveyPopup: () => void\n isPopup: boolean\n}>({\n isPreviewMode: false,\n previewPageIndex: 0,\n handleCloseSurveyPopup: () => {},\n isPopup: true,\n})\n\ninterface RenderProps {\n component: VNode<{ className: string }>\n children: string\n renderAsHtml?: boolean\n style?: React.CSSProperties\n}\n\nexport const renderChildrenAsTextOrHtml = ({ component, children, renderAsHtml, style }: RenderProps) => {\n return renderAsHtml\n ? cloneElement(component, {\n dangerouslySetInnerHTML: { __html: children },\n style,\n })\n : cloneElement(component, {\n children,\n style,\n })\n}\n"]}
|
|
@@ -40,12 +40,12 @@ export declare const renderSurveysPreview: ({ survey, parentElement, previewPage
|
|
|
40
40
|
survey: Survey;
|
|
41
41
|
parentElement: HTMLElement;
|
|
42
42
|
previewPageIndex: number;
|
|
43
|
-
forceDisableHtml?: boolean
|
|
43
|
+
forceDisableHtml?: boolean;
|
|
44
44
|
}) => void;
|
|
45
45
|
export declare const renderFeedbackWidgetPreview: ({ survey, root, forceDisableHtml, }: {
|
|
46
46
|
survey: Survey;
|
|
47
47
|
root: HTMLElement;
|
|
48
|
-
forceDisableHtml?: boolean
|
|
48
|
+
forceDisableHtml?: boolean;
|
|
49
49
|
}) => void;
|
|
50
50
|
export declare function generateSurveys(posthog: PostHog): SurveyManager | undefined;
|
|
51
51
|
export declare function usePopupVisibility(survey: Survey, posthog: PostHog | undefined, millisecondDelay: number, isPreviewMode: boolean, removeSurveyFromFocus: (id: string) => void): {
|