@washingtonpost/subs-de-inputs 1.10.2 → 1.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"subs-de-inputs.esm.js","sources":["../src/interfaces/index.ts","../src/utils/checkConsentCookieForAllowTargeting.ts","../src/components/DEDisclosure/utils/checkAlertBoxClosedCookie.ts","../src/utils/hasRequiredPrivacyCookies.ts","../src/services/getAttributes.ts","../src/services/sendToGA.ts","../src/services/ingest.ts","../src/utils/isAnonymousWebview.ts","../src/utils/push.ts","../src/components/DESelect/Dropdown.tsx","../src/components/DESelect/index.tsx","../src/components/DEDisclosure/utils/getConfig.ts","../src/components/DEDisclosure/utils/hydrateLinks.tsx","../src/components/DEDisclosure/utils/checkOptAnonConsentCookie.ts","../src/components/DEDisclosure/hooks/useOnetrust.ts","../src/components/DEDisclosure/DisclosureWithBannerStatus.tsx","../src/components/DEDisclosure/DisclosureWithoutBannerStatus.tsx","../src/components/DEDisclosure/index.tsx","../src/constants/IngestDataTypes.ts"],"sourcesContent":["import type { ResponseStatusType } from '@washingtonpost/subs-sdk';\n\nexport type AttributeValue = {\n name: string;\n date_created: number;\n last_modified_date: number;\n archived: boolean;\n order: number;\n};\n\nexport const CollectionBehaviors = {\n COLLECT: 'COLLECT',\n DO_NOT_COLLECT: 'DO_NOT_COLLECT',\n} as const;\n\nexport type Attribute = {\n name: string;\n approved_for_use?: boolean;\n collection_behavior?: (typeof CollectionBehaviors)[keyof typeof CollectionBehaviors];\n datatype: string;\n explicit: boolean;\n multiple_value: boolean;\n last_modified_date: number;\n date_created: number;\n values: AttributeValue[] | Readonly<AttributeValue[]>;\n};\n\nexport const AttributesState = {\n SUCCESS: '100',\n} as const;\n\n// https://github.com/WashPost/subs-be-user-data-enrichment/blob/8e8f8460c59adbe9c83b50f368bff1d3300bfd6b/src/main/java/washpost/paywall/userdataenrichment/model/ResponseState.java#L19\nexport const DeleteAttributeState = {\n SUCCESS: '150',\n SYSTEM_ERROR: '151',\n INVALID_ATTRIBUTE_NAME: '152',\n INVALID_ATTRIBUTE_NOT_EXISTS: '153',\n} as const;\n\nexport const IngestType = {\n EXPLICIT: 'explicit',\n IMPLICIT: 'implicit',\n} as const;\n\nexport const IngestResponseState = {\n SUCCESS: '100',\n SYSTEM_ERROR: '101',\n INVALID_TYPE: '102',\n INVALID_IDENTIFIER: '103',\n INVALID_DATA: '104',\n INVALID_ATTRIBUTE_DEFINITION: '105',\n INVALID_META_DEFINITION: '106',\n UNAUTHENTICATED: '107',\n MISMATCHED_IDENTIFIER: '108',\n DISABLED_ATTRIBUTE_DEFINITION: '109',\n DO_NOT_COLLECT: '110',\n} as const;\n\nexport interface IProfileResponse {\n status: ResponseStatusType;\n state: (typeof AttributesState)[keyof typeof AttributesState];\n attributes: {\n [key: string]: {\n attribute_name: string;\n value: string | null;\n date_created: number;\n last_modified_date: number;\n };\n };\n}\n","import { getCookie } from '@washingtonpost/subs-sdk';\n\nconst COOKIE = 'OptanonConsent';\n\n/**\n * Checks the users OptanonConsent cookie to determine if the user has allowed targeting.\n * Returns true or false if the flag is found in the cookie, null otherwise.\n * @returns {boolean | null}\n */\nexport const checkConsentCookieForAllowTargeting = () => {\n const value = getCookie(COOKIE) || '';\n return value.includes('C0004%3A1')\n ? true\n : value.includes('C0004%3A0')\n ? false\n : null;\n};\n","import { getCookie } from '@washingtonpost/subs-sdk';\n\nconst COOKIE = 'OptanonAlertBoxClosed';\n\nexport const checkAlertBoxClosedCookie = () => {\n const value = getCookie(COOKIE) || '';\n // Wed May 15 2024 06:29:23 GMT-0500 (Central Daylight Time)\n // \"Invalid date\" is 12 characters long\n return value.length > 12;\n};\n","import { WPGeo, getCookie } from '@washingtonpost/subs-sdk';\nimport { checkConsentCookieForAllowTargeting } from './checkConsentCookieForAllowTargeting';\nimport { checkAlertBoxClosedCookie } from '../components/DEDisclosure/utils/checkAlertBoxClosedCookie';\n\n/**\n * Checks privacy cookies to decide if we can send up 1pd\n * If US, checks that wp_usp exists\n * Else If OptAnonConsent cookie exists, checks the value of targeting cookies consent\n * Else If EEA, always returns true\n * Else, returns false\n * @returns {boolean}\n */\nexport const hasRequiredPrivacyCookies = () => {\n if (typeof window === 'undefined') {\n return false;\n }\n\n const { intl_region, country_code: countryCode } = WPGeo();\n\n if (countryCode === 'US') {\n return !!getCookie('wp_usp');\n }\n\n if (window.pageType === 'onboarding') {\n const gdprAllowTargarting = checkConsentCookieForAllowTargeting();\n if (\n typeof gdprAllowTargarting === 'boolean' &&\n checkAlertBoxClosedCookie()\n ) {\n return gdprAllowTargarting;\n }\n\n // Downstream systems\n // Checking for window.pageType === 'onboarding' to avoid being true on graphics articles etc for now -- MNI-710\n if (intl_region === 'EEA' && window.pageType === 'onboarding') {\n return true;\n }\n }\n\n return false;\n};\n","import {\n ENDPOINTS,\n ResponseStatus,\n DEFAULT_HEADERS,\n} from '@washingtonpost/subs-sdk';\nimport type { Attribute } from '../interfaces';\n\nconst base = `${ENDPOINTS.base}/de/v1`;\n\ntype GetAttributesType = ({\n fieldName,\n}: {\n fieldName: string;\n}) => Promise<Attribute[]>;\n\nconst attributesCache: Record<string, any> = {};\nexport const getAttributes: GetAttributesType = async ({\n fieldName,\n}: {\n fieldName: string;\n}) => {\n if (attributesCache[fieldName]) {\n return attributesCache[fieldName];\n }\n\n const fieldNames = [fieldName];\n\n try {\n const url = new URL(`${base}/attributes`);\n url.searchParams.set('attributes', fieldNames.join(','));\n\n const data = await fetch(url.toString(), {\n credentials: 'include',\n headers: DEFAULT_HEADERS,\n });\n const json = await data.json();\n\n if (data.ok && json.status === ResponseStatus.SUCCESS) {\n const attributes = json.attributes || [];\n attributesCache[fieldName] = attributes;\n return attributes;\n }\n return [];\n } catch (e) {\n console.debug(e);\n return [];\n }\n};\n","const sendGAEvent = (props: {\n event: string;\n category: string;\n action: string;\n label: string;\n 'de-label': string;\n [key: string]: undefined | string | string[];\n}): void => {\n if (typeof window === 'undefined') {\n if (__DEV__) console.warn('NO WINDOW');\n return;\n }\n // Initialize dataLayer if needed\n window.dataLayer = window.dataLayer || [];\n\n const eventData: Record<string, any> = {\n ...props,\n };\n window.dataLayer.push(eventData);\n};\n\ntype SendToGaType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<true>;\n\nexport const sendToGA: SendToGaType = async ({\n submitData: { fieldName, value },\n source,\n}) => {\n sendGAEvent({\n event: 'site-onpage-click',\n action: 'site-onpage-click',\n category: 'profile',\n\n label: fieldName,\n 'de-label': fieldName,\n [fieldName]: value,\n\n section: 'profile',\n subsection: source,\n });\n\n return true;\n};\n","import {\n ENDPOINTS,\n DEFAULT_HEADERS,\n getCookie,\n} from '@washingtonpost/subs-sdk';\nimport type { ResponseStatusType } from '@washingtonpost/subs-sdk';\nimport { type IngestResponseState, IngestType } from '../interfaces';\n\nconst base = `${ENDPOINTS.base}/de/v1`;\n\nexport const ingest: IngestType = async ({\n submitData: { fieldName, value },\n source,\n}) => {\n const url = `${base}/ingest`;\n\n const wapo_login_id = getCookie('wapo_login_id');\n\n const jucid = localStorage.getItem('uuid');\n const ga = getCookie('_ga');\n\n const payload = {\n jucid,\n ga,\n type: IngestType.EXPLICIT,\n wapo_login_id, // TODO: move this to BE to read from cookie headers\n data: {\n [fieldName]: [value],\n },\n metadata: { source },\n };\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n credentials: 'include',\n headers: DEFAULT_HEADERS,\n body: JSON.stringify(payload),\n });\n\n const json = await response.json();\n\n return json;\n } catch (e) {\n console.debug(e);\n return null;\n }\n};\n\ntype IngestType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<{\n status: ResponseStatusType;\n state: (typeof IngestResponseState)[keyof typeof IngestResponseState];\n} | null>;\n","import { getCookie, isLoggedIn } from '@washingtonpost/subs-sdk';\n\nexport const isAnonymousWebview = () => {\n if (typeof window === 'undefined') {\n return false;\n }\n\n const wp_wv = getCookie('wp_wv');\n\n return !!(wp_wv && !isLoggedIn());\n};\n","import type { ResponseStatusType } from '@washingtonpost/subs-sdk';\nimport { CollectionBehaviors, IngestType } from '../interfaces';\nimport type { IngestResponseState } from '../interfaces';\nimport { getAttributes } from '../services/getAttributes';\nimport { sendToGA } from '../services/sendToGA';\nimport { hasRequiredPrivacyCookies } from './hasRequiredPrivacyCookies';\nimport { ingest } from '../services/ingest';\nimport { isAnonymousWebview } from './isAnonymousWebview';\n\ntype PushType = ({\n submitData: { fieldName, value },\n source,\n}: {\n submitData: {\n fieldName: string;\n value: string;\n };\n source: string;\n}) => Promise<\n | {\n status: ResponseStatusType;\n state: (typeof IngestResponseState)[keyof typeof IngestResponseState];\n }\n | null\n | true\n>;\n\nexport const push: PushType = async ({ submitData, source }) => {\n if (!hasRequiredPrivacyCookies()) {\n throw new Error('does not satisfy cookie check');\n }\n\n if (isAnonymousWebview()) {\n throw new Error('does not satisfy cookie check');\n }\n\n const { fieldName } = submitData;\n\n const attributeInfo = await getAttributes({\n fieldName,\n });\n\n if (\n attributeInfo[0] &&\n attributeInfo[0].name === fieldName &&\n attributeInfo[0].collection_behavior === CollectionBehaviors.DO_NOT_COLLECT\n ) {\n throw new Error('do not collect');\n }\n\n const type =\n attributeInfo[0] && attributeInfo[0].explicit === true\n ? IngestType.EXPLICIT\n : IngestType.IMPLICIT;\n\n if (!attributeInfo[0] && __DEV__) {\n console.warn(`no attribute info found for ${fieldName}, assuming implicit`);\n }\n\n if (type === IngestType.EXPLICIT) {\n return ingest({ submitData, source });\n }\n return sendToGA({ submitData, source });\n};\n","import React, { useEffect, useState } from 'react';\nimport { Icon, Select, styled, theme } from '@washingtonpost/wpds-ui-kit';\nimport { useWindowSize } from '@washingtonpost/subs-hooks';\nimport { ChevronDown } from '@washingtonpost/wpds-assets';\n\ninterface IDropdownProps {\n id: string;\n label: string;\n values: Array<string>;\n required?: boolean;\n existingValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n valueSelectedByDefault?: string;\n}\n\nconst StyledMobileSelect = styled('select', {\n padding: '12px 16px 12px 6px',\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n backgroundColor: '$secondary',\n color: '$primary',\n fontFamily: '$meta',\n fontSize: '$100',\n fontWeight: '$light',\n lineHeight: '$125',\n paddingBlockRight: '$125',\n textOverflow: 'ellipsis',\n position: 'relative',\n borderColor: 'transparent',\n borderRightWidth: '10px',\n borderRightColor: 'transparent',\n appearance: 'none',\n '-webkit-appearance': 'none',\n '&:disabled': {\n backgroundColor: theme.colors.disabled,\n borderColor: theme.colors.disabled,\n color: theme.colors.onDisabled,\n cursor: 'not-allowed',\n },\n});\n\nconst StyledSelectWrapper = styled('div', {\n width: '100%',\n maxWidth: '380px',\n borderRadius: '$012',\n borderColor: '$subtle',\n borderStyle: 'solid',\n borderWidth: '1px',\n backgroundColor: '$secondary',\n position: 'relative',\n});\n\nconst StyledMobileOption = styled('option', {\n fontFamily: 'inherit',\n fontSize: 'inherit',\n color: 'inherit',\n});\n\n/**\n * Dropdown component. Uses wpds-ui-kit on desktop and native select on mobile.\n * @param {IDropdownProps} props The props.\n * @returns {React.ReactElement} The dropdown.\n */\nexport const Dropdown = ({\n id,\n label,\n values,\n required = false,\n existingValue,\n onChange = () => {},\n disabled = false,\n valueSelectedByDefault,\n}: IDropdownProps) => {\n const [answer, setAnswer] = useState<string>();\n const { isMobileSize } = useWindowSize();\n\n useEffect(() => {\n if (answer) onChange(answer);\n }, [answer]);\n\n const disabledProp = disabled ? { disabled: true } : {};\n\n const presetDropdownValue = existingValue || valueSelectedByDefault;\n\n // helps maintain state between WPDS and native dropdowns\n const defaultValueProp = answer\n ? { defaultValue: answer }\n : presetDropdownValue\n ? { defaultValue: presetDropdownValue }\n : {};\n\n const defaultValuePropMobile = (value: string) => {\n if (answer) {\n return value === answer ? { selected: true } : {};\n }\n return value === presetDropdownValue ? { selected: true } : {};\n };\n\n return isMobileSize ? (\n <StyledSelectWrapper>\n <StyledMobileSelect\n id=\"\"\n required={required}\n onChange={(e) => setAnswer(e.target.value)}\n {...disabledProp}\n >\n <label>{label}</label>\n <StyledMobileOption\n value=\"\"\n disabled\n selected\n style={{ color: '#666666' }}\n >\n {label}\n </StyledMobileOption>\n {values.map((value) => (\n <StyledMobileOption\n value={value}\n key={value}\n {...defaultValuePropMobile(value)}\n >\n {value}\n </StyledMobileOption>\n ))}\n </StyledMobileSelect>\n <Icon\n label=\"\"\n size=\"100\"\n fill={theme.colors.gray80}\n style={{\n pointerEvents: 'none',\n position: 'absolute',\n right: '10px',\n top: '50%',\n transform: 'translateY(-50%)',\n }}\n >\n <ChevronDown style={{ position: 'absolute', right: '10px' }} />\n </Icon>\n </StyledSelectWrapper>\n ) : (\n <Select.Root\n onValueChange={(e) => setAnswer(e)}\n required={required}\n {...defaultValueProp}\n {...disabledProp}\n >\n <Select.Trigger data-test-id={`${id}-select-trigger`}>\n <Select.Label>{label}</Select.Label>\n <Select.Value />\n </Select.Trigger>\n <Select.Content\n css={{ zIndex: theme.zIndices.page }}\n data-test-id={`${id}-select-content`}\n >\n {values.map((value) => (\n <Select.Item value={value} key={value}>\n {value}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n );\n};\n","import React, { useState, useEffect } from 'react';\nimport { Select, styled } from '@washingtonpost/wpds-ui-kit';\nimport { ENDPOINTS, ResponseStatus } from '@washingtonpost/subs-sdk';\nimport { useScript, ScriptStatus } from '@washingtonpost/subs-hooks';\nimport type { Attribute, AttributeValue } from '../../interfaces';\nimport { Dropdown } from './Dropdown';\n\ninterface DESelectProps {\n source: string;\n fieldName: string;\n label?: string;\n dataDictionaryConfig?: Attribute | Readonly<Attribute>;\n existingValue?: string;\n disabled?: boolean;\n submit: boolean;\n onChange?: ({ value }: { value: string }) => void;\n onFinished?: ({\n isFinished,\n isError,\n }: {\n isFinished: boolean;\n isError: boolean;\n }) => void;\n valuesFilter?: (value: AttributeValue) => boolean;\n selectProps?: {\n root?: any;\n trigger?: any;\n label?: any;\n value?: any;\n content?: any;\n item?: any;\n };\n children?: React.ReactNode;\n valueSelectedByDefault?: string;\n defaultValue?: never;\n}\n\nconst scriptSrc = `${ENDPOINTS.base}/de-utils/twpdeu.min.js`;\n\nconst SelectWrapper = styled('div', {\n boxSizing: 'border-box',\n display: 'flex',\n marginBottom: '$100',\n flexDirection: 'column',\n '& button': {\n padding: '1px 6px',\n },\n '& *': { boxSizing: 'border-box' },\n});\n\nexport const DESelect: React.FC<DESelectProps> = ({\n source,\n fieldName,\n label,\n dataDictionaryConfig,\n existingValue,\n disabled,\n submit,\n onChange = () => {},\n onFinished = () => {},\n valuesFilter = () => true,\n children,\n valueSelectedByDefault,\n}) => {\n const [config, setConfig] = useState(dataDictionaryConfig);\n\n const [selected, setSelected] = useState(\n !existingValue && valueSelectedByDefault ? valueSelectedByDefault : ''\n );\n\n const scriptStatus = useScript(scriptSrc);\n\n useEffect(() => {\n const fetchConfig = async () => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const config = await window?.__twpdeu?.getFieldConfigs({\n fieldName,\n });\n if (config) {\n setConfig(config[0]);\n } else {\n console.error('unable to get config', fieldName);\n }\n } catch (e) {\n console.warn('unable to get config', fieldName, e);\n }\n };\n\n if (scriptStatus === ScriptStatus.READY && !(children || config)) {\n fetchConfig();\n }\n }, [scriptStatus]);\n\n useEffect(() => {\n const submitSelected = async () => {\n try {\n const result = await window?.__twpdeu?.push({\n submitData: { fieldName, value: selected },\n source,\n });\n\n const isError =\n result === true\n ? false\n : result\n ? result.status !== ResponseStatus.SUCCESS\n : true;\n\n onFinished({\n isFinished: true,\n isError,\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n onFinished({\n isFinished: false,\n isError: true,\n });\n }\n };\n\n if (scriptStatus === ScriptStatus.READY && submit && selected) {\n submitSelected();\n }\n }, [scriptStatus, submit]);\n\n const defaultValueProp =\n existingValue && config ? { defaultValue: existingValue } : {};\n\n const isLoading = !(children || config);\n\n const disabledProp = disabled || isLoading ? { disabled: true } : {};\n\n // sort and filter out archived values\n // Note: config.values may be readonly\n const values = config\n ? [...config.values]\n .sort((a, b) => a.order - b.order)\n .filter((value) => value.archived !== true)\n .filter(valuesFilter)\n : [];\n\n return (\n <SelectWrapper>\n {children && (\n <Select.Root\n onValueChange={(e) => {\n setSelected(e);\n onChange({ value: e });\n }}\n {...defaultValueProp}\n {...disabledProp}\n >\n {children}\n </Select.Root>\n )}\n {!children && !config && (\n <Dropdown\n id={'loading'}\n label={'Loading...'}\n values={[]}\n disabled={true}\n />\n )}\n {!children && config && (\n <Dropdown\n id={config.name}\n label={label || config.name}\n onChange={(e) => {\n setSelected(e);\n onChange({ value: e });\n }}\n values={values.map((value) => value.name)}\n existingValue={existingValue}\n disabled={disabled}\n valueSelectedByDefault={valueSelectedByDefault}\n />\n )}\n </SelectWrapper>\n );\n};\n","import { ENDPOINTS, WPGeo } from '@washingtonpost/subs-sdk';\nimport type {\n DisclosureConfig,\n DisclosureConfigValue,\n} from '../../../interfaces/disclosure';\n\nconst configSrc = `${\n ENDPOINTS.base === 'https://subscribe.washingtonpost.com'\n ? 'https://www.washingtonpost.com/subscribe'\n : ENDPOINTS.base\n}/config/de/disclosure.json`;\n\nexport const getConfig = async () => {\n let myConfig: DisclosureConfigValue | undefined;\n\n // step 1: fetch config\n const response = await fetch(configSrc);\n const remoteConfig: DisclosureConfig = await response.json();\n\n // step 2: figure out which part of the config to use\n\n // if country- or region-specific config found, use that\n const { country_code, intl_region } = WPGeo();\n Object.keys(remoteConfig).forEach((configKey) => {\n if (\n country_code &&\n configKey.split('|').includes(country_code.toLowerCase())\n ) {\n myConfig = remoteConfig[configKey];\n } else if (intl_region === 'EEA' && configKey === 'eea') {\n myConfig = remoteConfig[configKey];\n }\n });\n\n // TODO: Check for billing country also\n\n // else if no country-specific config, use the default config\n if (typeof myConfig === 'undefined' && remoteConfig._) {\n myConfig = remoteConfig._;\n }\n\n return myConfig;\n};\n","import React from 'react';\n\ntype hydrateLinksType = (\n str: string,\n onLinkClick: (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => void\n) => string | JSX.Element;\n\nexport const hydrateLinks: hydrateLinksType = (str, onLinkClick = () => {}) => {\n const array = str.split(/({{PRIVACY_POLICY}})/g);\n const chunks = array.map((chunk, i) => {\n if (chunk === '{{PRIVACY_POLICY}}') {\n return (\n <a\n key={`privacy-link-${i}`}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n style={{ color: 'inherit' }}\n className=\"underline\"\n href=\"https://www.washingtonpost.com/privacy-policy/\"\n onClick={(e) => onLinkClick(e)}\n >\n Privacy Policy\n </a>\n );\n }\n return chunk;\n });\n\n const toReturn = chunks.reduce(\n (prev, current) => (\n <>\n {prev}\n {current}\n </>\n ),\n <></>\n );\n\n return toReturn;\n};\n","import { getCookie } from '@washingtonpost/subs-sdk';\n\nconst COOKIE = 'OptanonConsent';\n\nexport const checkOptanonConsentCookie = () => {\n const value = getCookie(COOKIE) || '';\n return value.length > 12;\n};\n","import { useState, useEffect } from 'react';\nimport type { ICookieStore } from '@washingtonpost/subs-sdk';\nimport { listenToCookieStore as listenToCookieStoreUtil } from '@washingtonpost/subs-sdk';\nimport { checkAlertBoxClosedCookie } from '../utils/checkAlertBoxClosedCookie';\nimport { checkOptanonConsentCookie } from '../utils/checkOptAnonConsentCookie';\n\nconst CONSENT_COOKIE = 'OptanonConsent';\n\nconst ALERT_BOX_COOKIE = 'OptanonAlertBoxClosed';\n\ninterface TCData {\n eventStatus: 'tcloaded' | 'cmpuishown' | 'useractioncomplete';\n listenerId: number;\n [key: string]: any;\n}\n\ntype TCFAPIAddListener = (\n command: 'addEventListener',\n version: number,\n callback: (tcData: TCData, success: boolean) => void\n) => void;\n\ntype TCFAPIRmListener = (\n command: 'removeEventListener',\n version: number,\n callback: (success: boolean) => void,\n listenerId: number\n) => void;\n\ntype TCFAPIPing = (\n command: 'ping',\n version: number,\n callback: (pingReturn: any, success: boolean) => void\n) => void;\n\ndeclare global {\n interface Window {\n cookieStore?: ICookieStore;\n __tcfapi?: TCFAPIAddListener & TCFAPIRmListener & TCFAPIPing;\n }\n}\n\nexport const useOnetrust = ({\n allowCookieStore,\n}: {\n allowCookieStore: boolean;\n}) => {\n const [consentCookieExists, setConsentCookieExists] = useState<\n boolean | undefined\n >();\n const [alertBoxClosed, setAlertBoxClosed] = useState<boolean | undefined>();\n\n const [listenToCookieStore, setListenToCookieStore] = useState(false);\n const [listenToTcfApi, setListenToTcfApi] = useState(false);\n\n useEffect(() => {\n if (checkOptanonConsentCookie()) {\n setConsentCookieExists(true);\n }\n\n if (checkAlertBoxClosedCookie()) {\n setAlertBoxClosed(true);\n return;\n }\n\n if (!window.__tcfapi) {\n console.warn('warning: __tcfapi not found');\n }\n\n if (window?.cookieStore && allowCookieStore) {\n setListenToCookieStore(true);\n } else if (window.__tcfapi) {\n setListenToTcfApi(true);\n } else {\n console.warn('warning: neither cookieStore nor __tcfapi found');\n }\n }, []);\n\n useEffect(() => {\n const cleanupFns: ((() => void) | null)[] = [];\n if (listenToCookieStore && window.cookieStore) {\n const cleanupFn = listenToCookieStoreUtil(CONSENT_COOKIE, () => {\n if (checkOptanonConsentCookie()) {\n setConsentCookieExists(true);\n }\n });\n cleanupFns.push(cleanupFn);\n\n const cleanupFn2 = listenToCookieStoreUtil(ALERT_BOX_COOKIE, () => {\n if (checkAlertBoxClosedCookie()) {\n setAlertBoxClosed(true);\n } else {\n setAlertBoxClosed(false);\n }\n });\n cleanupFns.push(cleanupFn2);\n }\n return () => {\n cleanupFns.forEach((fn) => fn && fn());\n };\n }, [listenToCookieStore]);\n\n useEffect(() => {\n let listenerId: number;\n if (listenToTcfApi && window.__tcfapi) {\n const callback = (_tcData: TCData, success: boolean) => {\n if (success) {\n listenerId = _tcData.listenerId;\n\n if (checkOptanonConsentCookie()) {\n setConsentCookieExists(true);\n }\n\n // tcData.eventStatus can be:\n // tcloaded means user has made a choice and we’re ready to check it\n // cmpuishown means the banner is shown\n // useractioncomplete means the user has interacted with the banner\n\n // but actually if the result for any of these is true, we just use the value of the cookie\n if (checkAlertBoxClosedCookie()) {\n setAlertBoxClosed(true);\n }\n }\n };\n\n window.__tcfapi('addEventListener', 2, callback);\n }\n\n // cleanup fn\n return () => {\n if (window.__tcfapi && listenerId)\n window.__tcfapi(\n 'removeEventListener',\n 2,\n (success) => {\n console.debug(success);\n },\n listenerId\n );\n };\n }, [listenToTcfApi]);\n\n return {\n consentCookieExists,\n alertBoxClosed,\n listenToCookieStore,\n listenToTcfApi,\n };\n};\n","import type { ReactEventHandler } from 'react';\nimport React, { useState, useEffect } from 'react';\nimport type { DisclosureConfigValue } from '../../interfaces/disclosure';\nimport { hydrateLinks } from './utils/hydrateLinks';\nimport { useOnetrust } from './hooks/useOnetrust';\n\ninterface DEDisclosureWithBannerStatusProps {\n config: DisclosureConfigValue;\n allowCookieStore?: boolean;\n onFinished: ({\n isFinished,\n isError,\n }: {\n isFinished: boolean;\n isError: boolean;\n }) => void;\n onPrivacyPolicyClick?: ReactEventHandler<HTMLAnchorElement>;\n}\n\nexport const DEDisclosureWithBannerStatus: React.FC<\n DEDisclosureWithBannerStatusProps\n> = ({\n config,\n onFinished,\n allowCookieStore = true,\n onPrivacyPolicyClick = () => {},\n}) => {\n const [disclosure, setDisclosure] = useState<string[] | null>(null);\n const [disclosureRendering, setDisclosureRendering] =\n useState<JSX.Element | null>(null);\n\n const { alertBoxClosed, consentCookieExists } = useOnetrust({\n allowCookieStore,\n });\n\n useEffect(() => {\n if (config) {\n // step 3: set disclosure based on config\n\n if (alertBoxClosed) {\n setDisclosure(config.disclosure_afterbanner);\n } else {\n setDisclosure(config.disclosure_beforebanner);\n }\n }\n }, [alertBoxClosed]);\n\n useEffect(() => {\n if (disclosure && Array.isArray(disclosure)) {\n setDisclosureRendering(\n disclosure.reduce(\n (prev, current) => (\n <>\n {prev}\n <p>{hydrateLinks(current, onPrivacyPolicyClick)}</p>\n </>\n ),\n <></>\n )\n );\n }\n }, [disclosure]);\n\n useEffect(() => {\n if (disclosureRendering && consentCookieExists) {\n onFinished({ isFinished: true, isError: false });\n }\n }, [disclosureRendering, consentCookieExists]);\n\n return disclosureRendering;\n};\n","import type { ReactEventHandler } from 'react';\nimport React, { useState, useEffect } from 'react';\nimport type { DisclosureConfigValue } from '../../interfaces/disclosure';\nimport { hydrateLinks } from './utils/hydrateLinks';\n\ninterface DEDisclosureWithoutBannerStatusProps {\n config: DisclosureConfigValue;\n onFinished: ({\n isFinished,\n isError,\n }: {\n isFinished: boolean;\n isError: boolean;\n }) => void;\n onPrivacyPolicyClick?: ReactEventHandler<HTMLAnchorElement>;\n}\n\nexport const DEDisclosureWithoutBannerStatus: React.FC<\n DEDisclosureWithoutBannerStatusProps\n> = ({ config, onFinished, onPrivacyPolicyClick = () => {} }) => {\n const [disclosure, setDisclosure] = useState<string[] | null>(null);\n const [disclosureRendering, setDisclosureRendering] =\n useState<JSX.Element | null>(null);\n\n useEffect(() => {\n if (config) {\n setDisclosure(config.disclosure);\n }\n }, [config]);\n\n useEffect(() => {\n if (disclosure && Array.isArray(disclosure)) {\n setDisclosureRendering(\n disclosure.reduce(\n (prev, current) => (\n <>\n {prev}\n <p>{hydrateLinks(current, onPrivacyPolicyClick)}</p>\n </>\n ),\n <></>\n )\n );\n }\n }, [disclosure]);\n\n useEffect(() => {\n if (disclosureRendering) {\n onFinished({ isFinished: true, isError: false });\n }\n }, [disclosureRendering]);\n\n return disclosureRendering;\n};\n","import type { ReactEventHandler } from 'react';\nimport React, { useState, useEffect } from 'react';\nimport type { DisclosureConfigValue } from '../../interfaces/disclosure';\nimport { getConfig } from './utils/getConfig';\nimport { DEDisclosureWithBannerStatus } from './DisclosureWithBannerStatus';\nimport { DEDisclosureWithoutBannerStatus } from './DisclosureWithoutBannerStatus';\n\ninterface DisclosureProps {\n /** callback function to be called when the disclosure is finished loading */\n onFinished?: ({\n isFinished,\n isError,\n }: {\n isFinished: boolean;\n isError: boolean;\n }) => void;\n\n onPrivacyPolicyClick?: ReactEventHandler<HTMLAnchorElement>;\n\n /** ability to turn off cookiestore listener, primarily for testing purposes */\n allowCookieStore?: boolean;\n}\n\nexport const DEDisclosure: React.FC<DisclosureProps> = ({\n onFinished = () => {},\n allowCookieStore = true,\n onPrivacyPolicyClick = (_e) => {},\n}) => {\n const [disclosureRendering, setDisclosureRendering] =\n useState<JSX.Element | null>(null);\n const [myConfig, setMyConfig] = useState<DisclosureConfigValue>();\n // const { alertBoxClosed } = useOneTrustAlertBoxClosed({ allowCookieStore });\n\n useEffect(() => {\n (async () => {\n const config = await getConfig();\n setMyConfig(config);\n\n if (!config) {\n console.error('No config found');\n }\n })();\n }, []);\n\n useEffect(() => {\n if (myConfig) {\n // step 3: set disclosure based on config\n\n // if config says to check onetrust, check onetrust\n if ('checkBannerStatus' in myConfig && myConfig.checkBannerStatus) {\n // check if onetrust is closed\n // if it is, show the after banner disclosure\n // if it is not, show the before banner disclosure\n setDisclosureRendering(\n <DEDisclosureWithBannerStatus\n config={myConfig}\n allowCookieStore={allowCookieStore}\n onFinished={onFinished}\n onPrivacyPolicyClick={onPrivacyPolicyClick}\n />\n );\n } else if ('disclosure' in myConfig) {\n setDisclosureRendering(\n <DEDisclosureWithoutBannerStatus\n config={myConfig}\n onFinished={onFinished}\n onPrivacyPolicyClick={onPrivacyPolicyClick}\n />\n );\n } else {\n console.error('Invalid config');\n }\n }\n }, [myConfig]);\n\n if (disclosureRendering) {\n return <div data-test-id=\"de-disclosure\">{disclosureRendering}</div>;\n }\n\n return <div data-test-id=\"de-disclosure-loading\"></div>;\n};\n","export const FirstPartyIngestDataTypes = {\n JOB_LEVEL: 'profile_job_level',\n JOB_INDUSTRY: 'profile_job_industry',\n JOB_TITLE: 'profile_job_title',\n PERSONAL_GOALS: 'personal_goals',\n HOBBIES: 'hobbies',\n PROFESSIONAL_GOALS: 'professional_goals',\n INDUSTRY: 'industry',\n NEWS_LOCATION: 'news_location',\n NY_PERSONAL_GOALS: 'new_year_personal_goals',\n NY_HOBBIES: 'new_year_hobbies',\n NY_PROFESSIONAL_GOALS: 'new_year_professional_goals',\n NY_INDUSTRY: 'new_year_industry',\n NY_NEWS_LOCATION: 'new_year_news_location',\n EDU_ROLE: 'profile_edu_role',\n EDU_MAJOR: 'profile_edu_major',\n EDU_GRADUATION_YEAR: 'profile_edu_graduation_year',\n} as const;\n"],"names":["CollectionBehaviors","COLLECT","DO_NOT_COLLECT","AttributesState","SUCCESS","DeleteAttributeState","SYSTEM_ERROR","INVALID_ATTRIBUTE_NAME","INVALID_ATTRIBUTE_NOT_EXISTS","IngestType","EXPLICIT","IMPLICIT","IngestResponseState","INVALID_TYPE","INVALID_IDENTIFIER","INVALID_DATA","INVALID_ATTRIBUTE_DEFINITION","INVALID_META_DEFINITION","UNAUTHENTICATED","MISMATCHED_IDENTIFIER","DISABLED_ATTRIBUTE_DEFINITION","COOKIE","checkConsentCookieForAllowTargeting","value","getCookie","includes","checkAlertBoxClosedCookie","length","hasRequiredPrivacyCookies","window","intl_region","country_code","countryCode","WPGeo","pageType","gdprAllowTargarting","base","ENDPOINTS","attributesCache","getAttributes","fieldName","fieldNames","url","URL","searchParams","set","join","data","fetch","toString","credentials","headers","DEFAULT_HEADERS","json","ok","status","ResponseStatus","attributes","e","console","debug","sendGAEvent","props","process","env","NODE_ENV","warn","dataLayer","eventData","push","sendToGA","submitData","source","event","action","category","label","section","subsection","ingest","wapo_login_id","jucid","localStorage","getItem","ga","payload","type","metadata","response","method","body","JSON","stringify","isAnonymousWebview","wp_wv","isLoggedIn","Error","attributeInfo","name","collection_behavior","explicit","StyledMobileSelect","styled","padding","display","justifyContent","width","backgroundColor","color","fontFamily","fontSize","fontWeight","lineHeight","paddingBlockRight","textOverflow","position","borderColor","borderRightWidth","borderRightColor","appearance","theme","colors","disabled","onDisabled","cursor","StyledSelectWrapper","maxWidth","borderRadius","borderStyle","borderWidth","StyledMobileOption","Dropdown","id","values","required","existingValue","onChange","valueSelectedByDefault","answer","setAnswer","useState","isMobileSize","useWindowSize","useEffect","disabledProp","presetDropdownValue","defaultValueProp","defaultValue","defaultValuePropMobile","selected","React","createElement","target","style","map","key","Icon","size","fill","gray80","pointerEvents","right","top","transform","ChevronDown","Select","Root","onValueChange","Trigger","Label","Value","Content","css","zIndex","zIndices","page","Item","scriptSrc","SelectWrapper","boxSizing","marginBottom","flexDirection","DESelect","dataDictionaryConfig","submit","onFinished","valuesFilter","children","config","setConfig","setSelected","scriptStatus","useScript","fetchConfig","_window","__twpdeu","getFieldConfigs","error","ScriptStatus","READY","submitSelected","_window2","result","isError","isFinished","isLoading","sort","a","b","order","filter","archived","configSrc","getConfig","myConfig","remoteConfig","Object","keys","forEach","configKey","split","toLowerCase","_","hydrateLinks","str","onLinkClick","array","chunks","chunk","i","rel","className","href","onClick","toReturn","reduce","prev","current","Fragment","checkOptanonConsentCookie","CONSENT_COOKIE","ALERT_BOX_COOKIE","useOnetrust","allowCookieStore","consentCookieExists","setConsentCookieExists","alertBoxClosed","setAlertBoxClosed","listenToCookieStore","setListenToCookieStore","listenToTcfApi","setListenToTcfApi","__tcfapi","cookieStore","cleanupFns","cleanupFn","listenToCookieStoreUtil","cleanupFn2","fn","listenerId","callback","_tcData","success","DEDisclosureWithBannerStatus","onPrivacyPolicyClick","disclosure","setDisclosure","disclosureRendering","setDisclosureRendering","disclosure_afterbanner","disclosure_beforebanner","Array","isArray","DEDisclosureWithoutBannerStatus","DEDisclosure","_e","setMyConfig","checkBannerStatus","FirstPartyIngestDataTypes","JOB_LEVEL","JOB_INDUSTRY","JOB_TITLE","PERSONAL_GOALS","HOBBIES","PROFESSIONAL_GOALS","INDUSTRY","NEWS_LOCATION","NY_PERSONAL_GOALS","NY_HOBBIES","NY_PROFESSIONAL_GOALS","NY_INDUSTRY","NY_NEWS_LOCATION","EDU_ROLE","EDU_MAJOR","EDU_GRADUATION_YEAR"],"mappings":"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"}