@washingtonpost/subs-de-inputs 0.5.6 → 1.0.0-react18.0

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 +1 @@
1
- {"version":3,"file":"subs-de-inputs.cjs.development.js","sources":["../src/interfaces/index.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/checkCookie.ts","../src/components/DEDisclosure/hooks/useOnetrustAlertBoxClosedPromise.ts","../src/components/DEDisclosure/index.tsx","../src/constants/IngestDataTypes.ts"],"sourcesContent":["import { 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\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;\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 { WPGeo, getCookie } from '@washingtonpost/subs-sdk';\n\nexport const hasRequiredPrivacyCookies = () => {\n if (typeof window === 'undefined') {\n return false;\n }\n\n const wp_usp = getCookie('wp_usp');\n\n const countryCode = WPGeo()?.country_code;\n\n return !!(wp_usp && countryCode === 'US');\n};\n","import {\n ENDPOINTS,\n ResponseStatus,\n JSON_HEADERS,\n} from '@washingtonpost/subs-sdk';\nimport { Attribute } from '../interfaces';\n\nconst base = `${ENDPOINTS.base}/de/v1`;\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: JSON_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 } else {\n return [];\n }\n } catch (e) {\n console.debug(e);\n return [];\n }\n};\n\ntype GetAttributesType = ({\n fieldName,\n}: {\n fieldName: string;\n}) => Promise<Attribute[]>;\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\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\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","import {\n ENDPOINTS,\n ResponseStatus,\n JSON_HEADERS,\n getCookie,\n} from '@washingtonpost/subs-sdk';\nimport { 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: JSON_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: ResponseStatus;\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 {\n CollectionBehaviors,\n IngestResponseState,\n IngestType,\n} from '../interfaces';\nimport { getAttributes } from '../services/getAttributes';\nimport { sendToGA } from '../services/sendToGA';\nimport { hasRequiredPrivacyCookies } from './hasRequiredPrivacyCookies';\nimport { ResponseStatus } from '@washingtonpost/subs-sdk';\nimport { ingest } from '../services/ingest';\nimport { isAnonymousWebview } from './isAnonymousWebview';\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 } else {\n return sendToGA({ submitData, source });\n }\n};\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: ResponseStatus;\n state: (typeof IngestResponseState)[keyof typeof IngestResponseState];\n }\n | null\n | true\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 defaultValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\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 defaultValue,\n onChange = () => {},\n disabled = false,\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 // helps maintain state between WPDS and native dropdowns\n const defaultValueProp = answer\n ? { defaultValue: answer }\n : defaultValue\n ? { defaultValue }\n : {};\n\n const defaultValuePropMobile = (value: string) => {\n if (answer) {\n return value === answer ? { selected: true } : {};\n }\n return value === defaultValue ? { selected: true } : {};\n };\n\n return isMobileSize ? (\n <StyledSelectWrapper>\n <StyledMobileSelect\n id=\"\"\n required={required}\n onChange={(e) => setAnswer(e.target.value)}\n placeholder={label}\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 { Attribute, AttributeValue } from '../../interfaces';\nimport { ENDPOINTS, ResponseStatus } from '@washingtonpost/subs-sdk';\nimport { useScript, ScriptStatus } from '@washingtonpost/subs-hooks';\nimport { Dropdown } from './Dropdown';\n\ninterface DESelectProps {\n source: string;\n fieldName: string;\n label?: string;\n dataDictionaryConfig?: Attribute | Readonly<Attribute>;\n defaultValue?: 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}\n\nconst scriptSrc = `${\n ENDPOINTS.staticAssets === 'https://subscribe.washingtonpost.com/static'\n ? 'https://www.washingtonpost.com/subscribe/static/'\n : ENDPOINTS.staticAssets\n}/de-utils/twpdeu.min.js`;\n\nexport const DESelect: React.FC<DESelectProps> = ({\n source,\n fieldName,\n label,\n dataDictionaryConfig,\n defaultValue,\n disabled,\n submit,\n onChange = () => {},\n onFinished = () => {},\n valuesFilter = () => true,\n children,\n}) => {\n const [config, setConfig] = useState(dataDictionaryConfig);\n\n const [selected, setSelected] = useState('');\n\n const scriptStatus = useScript(scriptSrc);\n\n useEffect(() => {\n const fetchConfig = async () => {\n try {\n const config = await window?.__twpdeu?.getFieldConfigs({ fieldName });\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 } 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 = defaultValue && config ? { defaultValue } : {};\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 defaultValue={defaultValue}\n disabled={disabled}\n />\n )}\n </SelectWrapper>\n );\n};\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","import { ENDPOINTS, WPGeo } from '@washingtonpost/subs-sdk';\nimport {\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 = 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 = (str: string) => string | JSX.Element;\n\nexport const hydrateLinks: hydrateLinksType = (str: string) => {\n const array = str.split(/({{PRIVACY_POLICY}})/g);\n const chunks = array.map((str) => {\n if (str === '{{PRIVACY_POLICY}}') {\n return (\n <a\n target=\"_blank\"\n style={{ color: 'inherit' }}\n className=\"underline\"\n href=\"https://www.washingtonpost.com/privacy-policy/\"\n >\n Privacy Policy\n </a>\n );\n }\n return str;\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 = 'OptanonAlertBoxClosed';\n\nexport const checkCookie = () => {\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 { useState, useEffect } from 'react';\nimport {\n listenToCookieStore as listenToCookieStoreUtil,\n ICookieStore,\n} from '@washingtonpost/subs-sdk';\nimport { checkCookie } from '../utils/checkCookie';\n\nconst 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 useOneTrustAlertBoxClosed = ({\n allowCookieStore,\n}: {\n allowCookieStore: boolean;\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 (checkCookie()) {\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 let cleanupFn: (() => void) | null = () => {};\n if (listenToCookieStore && window.cookieStore) {\n cleanupFn = listenToCookieStoreUtil(COOKIE, () => {\n if (checkCookie()) {\n setAlertBoxClosed(true);\n } else {\n setAlertBoxClosed(false);\n }\n });\n }\n return cleanupFn || (() => {});\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 // 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 (checkCookie()) {\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 { alertBoxClosed, listenToCookieStore, listenToTcfApi };\n};\n","import React, { useState, useEffect } from 'react';\nimport { DisclosureConfigValue } from '../../interfaces/disclosure';\nimport { getConfig } from './utils/getConfig';\nimport { hydrateLinks } from './utils/hydrateLinks';\nimport { useOneTrustAlertBoxClosed } from './hooks/useOnetrustAlertBoxClosedPromise';\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 /** 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}) => {\n const [disclosure, setDisclosure] = useState<string[] | null>(null);\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 if (alertBoxClosed) {\n setDisclosure(myConfig.disclosure_afterbanner);\n } else {\n setDisclosure(myConfig.disclosure_beforebanner);\n }\n } else if ('disclosure' in myConfig) {\n setDisclosure(myConfig.disclosure);\n } else {\n console.error('Invalid config');\n }\n }\n }, [myConfig, alertBoxClosed]);\n\n useEffect(() => {\n if (disclosure && Array.isArray(disclosure)) {\n setDisclosureRendering(\n disclosure.reduce((prev, current) => {\n return (\n <>\n {prev}\n <p>{hydrateLinks(current)}</p>\n </>\n );\n }, <></>)\n );\n\n // Is it ok to fire `onFinished` if still waiting for onetrust to load on the page?\n onFinished({\n isFinished: true,\n isError: false,\n });\n }\n }, [disclosure]);\n\n return disclosure === null ? (\n <div data-test-id=\"de-disclosure-loading\"></div>\n ) : (\n <div data-test-id=\"de-disclosure\">{disclosureRendering}</div>\n );\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} as const;\n"],"names":["CollectionBehaviors","COLLECT","DO_NOT_COLLECT","AttributesState","SUCCESS","IngestType","EXPLICIT","IMPLICIT","IngestResponseState","SYSTEM_ERROR","INVALID_TYPE","INVALID_IDENTIFIER","INVALID_DATA","INVALID_ATTRIBUTE_DEFINITION","INVALID_META_DEFINITION","UNAUTHENTICATED","MISMATCHED_IDENTIFIER","DISABLED_ATTRIBUTE_DEFINITION","hasRequiredPrivacyCookies","window","wp_usp","getCookie","countryCode","_WPGeo","WPGeo","country_code","base","ENDPOINTS","attributesCache","getAttributes","_ref","fieldName","fieldNames","url","URL","searchParams","set","join","data","fetch","toString","credentials","headers","JSON_HEADERS","json","ok","status","ResponseStatus","attributes","e","console","debug","sendGAEvent","props","process","env","NODE_ENV","warn","dataLayer","eventData","push","sendToGA","submitData","value","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","defaultValue","onChange","answer","setAnswer","useState","isMobileSize","useWindowSize","useEffect","disabledProp","defaultValueProp","defaultValuePropMobile","selected","React","target","placeholder","style","map","key","Icon","size","fill","pointerEvents","right","top","transform","ChevronDown","Select","Root","onValueChange","Trigger","Label","Value","Content","css","zIndex","zIndices","page","Item","scriptSrc","staticAssets","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","SelectWrapper","boxSizing","marginBottom","flexDirection","configSrc","getConfig","myConfig","undefined","remoteConfig","intl_region","Object","keys","forEach","configKey","split","includes","toLowerCase","hydrateLinks","str","array","chunks","className","href","toReturn","reduce","prev","current","COOKIE","checkCookie","length","useOneTrustAlertBoxClosed","allowCookieStore","alertBoxClosed","setAlertBoxClosed","listenToCookieStore","setListenToCookieStore","listenToTcfApi","setListenToTcfApi","__tcfapi","cookieStore","cleanupFn","listenToCookieStoreUtil","listenerId","callback","_tcData","success","DEDisclosure","disclosure","setDisclosure","disclosureRendering","setDisclosureRendering","setMyConfig","checkBannerStatus","disclosure_afterbanner","disclosure_beforebanner","Array","isArray","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"],"mappings":"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"}
1
+ {"version":3,"file":"subs-de-inputs.cjs.development.js","sources":["../src/interfaces/index.ts","../src/utils/hasRequiredPrivacyCookies.ts","../src/services/dataEnrichment.ts","../src/components/DESelect/index.tsx"],"sourcesContent":["export 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: Array<AttributeValue>;\n};\n\nexport const AttributesState = {\n SUCCESS: '100',\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} as const;\n","import { WPGeo, getCookie } from '@washingtonpost/subs-sdk';\n\nexport const hasRequiredPrivacyCookies = () => {\n if (typeof window === 'undefined') {\n return false;\n }\n\n const wp_usp = getCookie('wp_usp');\n\n const countryCode = WPGeo()?.country_code;\n\n return !!(wp_usp && countryCode === 'US');\n};\n","import {\n ENDPOINTS,\n ResponseStatus,\n JSON_HEADERS,\n} from '@washingtonpost/subs-sdk';\n\nconst base = `${ENDPOINTS.base}/de/v1`;\n\nconst attributesCache: Record<string, any> = {};\nexport const getAttributes = async ({ fieldName }: { fieldName: string }) => {\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: JSON_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 } else {\n return [];\n }\n } catch (e) {\n console.debug(e);\n return [];\n }\n};\n","import React, { useState, useEffect } from 'react';\nimport { Select, styled, theme } from '@washingtonpost/wpds-ui-kit';\nimport { SubsWindow } from '@washingtonpost/subs-sdk';\nimport { Attribute, AttributeValue } from '../../interfaces';\nimport { getAttributes } from '../../services/dataEnrichment';\n\ndeclare global {\n interface Window extends SubsWindow {}\n}\n\ninterface DESelectProps {\n source: string;\n fieldName: string;\n label?: string;\n dataDictionaryConfig?: Attribute;\n defaultValue?: 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}\n\nexport const DESelect: React.FC<DESelectProps> = ({\n source,\n fieldName,\n label,\n dataDictionaryConfig,\n defaultValue,\n disabled,\n submit,\n onChange = () => {},\n onFinished = () => {},\n valuesFilter = () => true,\n children,\n}) => {\n const [config, setConfig] = useState(dataDictionaryConfig);\n\n const [selected, setSelected] = useState('');\n\n useEffect(() => {\n if (children) {\n if (__DEV__) {\n console.debug('childen props', children);\n }\n return;\n }\n\n if (!config) {\n (async () => {\n // TODO: Switch to window.__twpdeu.getFieldConfigs\n const config = await getAttributes({ fieldName });\n if (__DEV__) {\n console.debug('config from API', config);\n }\n setConfig(config[0]);\n })();\n }\n }, []);\n\n useEffect(() => {\n if (submit && selected) {\n if (__DEV__) {\n console.error('push not implemented', selected, source);\n }\n onFinished({ isFinished: true, isError: false });\n }\n }, [submit, selected]);\n\n if (!(children || config)) {\n return <span>loading</span>;\n }\n\n const defaultValueProp = defaultValue ? { defaultValue } : {};\n\n const disabledProp = disabled ? { disabled: true } : {};\n\n // sort and filter out archived values\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 <Select.Root\n onValueChange={(e: string) => {\n onChange({ value: e });\n setSelected(e);\n }}\n {...defaultValueProp}\n {...disabledProp}\n >\n {children || null}\n {!children && config && (\n <React.Fragment>\n <Select.Trigger data-test-id={`${config.name}-select-trigger`}>\n <Select.Label>{label || config.name}</Select.Label>\n <Select.Value />\n </Select.Trigger>\n <Select.Content\n css={{ zIndex: theme.zIndices.page }}\n data-test-id={`${config.name}-select-content`}\n >\n {values.map((value) => (\n <Select.Item value={value.name} key={value.name}>\n {value.name}\n </Select.Item>\n ))}\n </Select.Content>\n </React.Fragment>\n )}\n </Select.Root>\n </SelectWrapper>\n );\n};\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"],"names":["CollectionBehaviors","COLLECT","DO_NOT_COLLECT","AttributesState","SUCCESS","IngestResponseState","SYSTEM_ERROR","INVALID_TYPE","INVALID_IDENTIFIER","INVALID_DATA","INVALID_ATTRIBUTE_DEFINITION","INVALID_META_DEFINITION","hasRequiredPrivacyCookies","_WPGeo","window","wp_usp","getCookie","countryCode","WPGeo","country_code","base","ENDPOINTS","attributesCache","getAttributes","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref","fieldName","fieldNames","url","data","json","attributes","wrap","_callee$","_context","prev","next","abrupt","URL","searchParams","set","join","fetch","toString","credentials","headers","JSON_HEADERS","sent","ok","status","ResponseStatus","t0","console","debug","stop","_x","apply","arguments","DESelect","source","label","dataDictionaryConfig","defaultValue","disabled","submit","_ref$onChange","onChange","_ref$onFinished","onFinished","_ref$valuesFilter","valuesFilter","children","_useState","useState","config","setConfig","_useState2","selected","setSelected","useEffect","error","isFinished","isError","React","defaultValueProp","disabledProp","values","sort","a","b","order","filter","value","archived","SelectWrapper","createElement","Select","Root","_extends","onValueChange","e","Fragment","Trigger","name","Label","Value","Content","css","zIndex","theme","zIndices","page","map","Item","key","styled","boxSizing","display","marginBottom","flexDirection","padding"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("@washingtonpost/subs-sdk"),o=require("react"),n=(e=o)&&"object"==typeof e&&"default"in e?e.default:e,a=require("@washingtonpost/wpds-ui-kit"),i=require("@washingtonpost/subs-hooks"),s=require("@washingtonpost/wpds-assets");const r={COLLECT:"COLLECT",DO_NOT_COLLECT:"DO_NOT_COLLECT"},l={EXPLICIT:"explicit",IMPLICIT:"implicit"},c=()=>{var e;if("undefined"==typeof window)return!1;const o=t.getCookie("wp_usp"),n=null===(e=t.WPGeo())||void 0===e?void 0:e.country_code;return!(!o||"US"!==n)},d=t.ENDPOINTS.base+"/de/v1",u={},p=async e=>{let{fieldName:o}=e;if(u[o])return u[o];const n=[o];try{const e=new URL(d+"/attributes");e.searchParams.set("attributes",n.join(","));const a=await fetch(e.toString(),{credentials:"include",headers:t.JSON_HEADERS}),i=await a.json();if(a.ok&&i.status===t.ResponseStatus.SUCCESS){const e=i.attributes||[];return u[o]=e,e}return[]}catch(e){return console.debug(e),[]}},E=t.ENDPOINTS.base+"/de/v1",w=a.styled("select",{padding:"12px 16px 12px 6px",display:"flex",justifyContent:"space-between",width:"100%",backgroundColor:"$secondary",color:"$primary",fontFamily:"$meta",fontSize:"$100",fontWeight:"$light",lineHeight:"$125",paddingBlockRight:"$125",textOverflow:"ellipsis",position:"relative",borderColor:"transparent",borderRightWidth:"10px",borderRightColor:"transparent",appearance:"none","-webkit-appearance":"none","&:disabled":{backgroundColor:a.theme.colors.disabled,borderColor:a.theme.colors.disabled,color:a.theme.colors.onDisabled,cursor:"not-allowed"}}),f=a.styled("div",{width:"100%",maxWidth:"380px",borderRadius:"$012",borderColor:"$subtle",borderStyle:"solid",borderWidth:"1px",backgroundColor:"$secondary",position:"relative"}),_=a.styled("option",{fontFamily:"inherit",fontSize:"inherit",color:"inherit"}),b=e=>{let{id:t,label:r,values:l,required:c=!1,defaultValue:d,onChange:u=(()=>{}),disabled:p=!1}=e;const[E,b]=o.useState(),{isMobileSize:g}=i.useWindowSize();o.useEffect(()=>{E&&u(E)},[E]);const S=p?{disabled:!0}:{},h=E?{defaultValue:E}:d?{defaultValue:d}:{},m=e=>E?e===E?{selected:!0}:{}:e===d?{selected:!0}:{};return g?n.createElement(f,null,n.createElement(w,{id:"",required:c,onChange:e=>b(e.target.value),placeholder:r,...S},n.createElement("label",null,r),n.createElement(_,{value:"",disabled:!0,selected:!0,style:{color:"#666666"}},r),l.map(e=>n.createElement(_,{value:e,key:e,...m(e)},e))),n.createElement(a.Icon,{label:"",size:"100",fill:a.theme.colors.gray80,style:{pointerEvents:"none",position:"absolute",right:"10px",top:"50%",transform:"translateY(-50%)"}},n.createElement(s.ChevronDown,{style:{position:"absolute",right:"10px"}}))):n.createElement(a.Select.Root,{onValueChange:e=>b(e),required:c,...h,...S},n.createElement(a.Select.Trigger,{"data-test-id":t+"-select-trigger"},n.createElement(a.Select.Label,null,r),n.createElement(a.Select.Value,null)),n.createElement(a.Select.Content,{css:{zIndex:a.theme.zIndices.page},"data-test-id":t+"-select-content"},l.map(e=>n.createElement(a.Select.Item,{value:e,key:e},e))))},g=("https://subscribe.washingtonpost.com/static"===t.ENDPOINTS.staticAssets?"https://www.washingtonpost.com/subscribe/static/":t.ENDPOINTS.staticAssets)+"/de-utils/twpdeu.min.js",S=a.styled("div",{boxSizing:"border-box",display:"flex",marginBottom:"$100",flexDirection:"column","& button":{padding:"1px 6px"},"& *":{boxSizing:"border-box"}}),h=("https://subscribe.washingtonpost.com"===t.ENDPOINTS.base?"https://www.washingtonpost.com/subscribe":t.ENDPOINTS.base)+"/config/de/disclosure.json",m=()=>(t.getCookie("OptanonAlertBoxClosed")||"").length>12;exports.AttributesState={SUCCESS:"100"},exports.CollectionBehaviors=r,exports.DEDisclosure=e=>{let{onFinished:a=(()=>{}),allowCookieStore:i=!0}=e;const[s,r]=o.useState(null),[l,c]=o.useState(null),[d,u]=o.useState(),{alertBoxClosed:p}=(e=>{let{allowCookieStore:n}=e;const[a,i]=o.useState(),[s,r]=o.useState(!1),[l,c]=o.useState(!1);return o.useEffect(()=>{var e;m()?i(!0):(window.__tcfapi||console.warn("warning: __tcfapi not found"),null!==(e=window)&&void 0!==e&&e.cookieStore&&n?r(!0):window.__tcfapi?c(!0):console.warn("warning: neither cookieStore nor __tcfapi found"))},[]),o.useEffect(()=>{let e=()=>{};return s&&window.cookieStore&&(e=t.listenToCookieStore("OptanonAlertBoxClosed",()=>{m()?i(!0):i(!1)})),e||(()=>{})},[s]),o.useEffect(()=>{let e;return l&&window.__tcfapi&&window.__tcfapi("addEventListener",2,(t,o)=>{o&&(e=t.listenerId,m()&&i(!0))}),()=>{window.__tcfapi&&e&&window.__tcfapi("removeEventListener",2,e=>{console.debug(e)},e)}},[l]),{alertBoxClosed:a,listenToCookieStore:s,listenToTcfApi:l}})({allowCookieStore:i});return o.useEffect(()=>{(async()=>{const e=await(async()=>{let e=void 0;const o=await fetch(h),n=await o.json(),{country_code:a,intl_region:i}=t.WPGeo();return Object.keys(n).forEach(t=>{(a&&t.split("|").includes(a.toLowerCase())||"EEA"===i&&"eea"===t)&&(e=n[t])}),void 0===e&&n._&&(e=n._),e})();u(e),e||console.error("No config found")})()},[]),o.useEffect(()=>{d&&("checkBannerStatus"in d&&d.checkBannerStatus?r(p?d.disclosure_afterbanner:d.disclosure_beforebanner):"disclosure"in d?r(d.disclosure):console.error("Invalid config"))},[d,p]),o.useEffect(()=>{s&&Array.isArray(s)&&(c(s.reduce((e,t)=>n.createElement(n.Fragment,null,e,n.createElement("p",null,t.split(/({{PRIVACY_POLICY}})/g).map(e=>"{{PRIVACY_POLICY}}"===e?n.createElement("a",{target:"_blank",style:{color:"inherit"},className:"underline",href:"https://www.washingtonpost.com/privacy-policy/"},"Privacy Policy"):e).reduce((e,t)=>n.createElement(n.Fragment,null,e,t),n.createElement(n.Fragment,null)))),n.createElement(n.Fragment,null))),a({isFinished:!0,isError:!1}))},[s]),null===s?n.createElement("div",{"data-test-id":"de-disclosure-loading"}):n.createElement("div",{"data-test-id":"de-disclosure"},l)},exports.DESelect=e=>{let{source:s,fieldName:r,label:l,dataDictionaryConfig:c,defaultValue:d,disabled:u,submit:p,onChange:E=(()=>{}),onFinished:w=(()=>{}),valuesFilter:f=(()=>!0),children:_}=e;const[h,m]=o.useState(c),[I,C]=o.useState(""),y=i.useScript(g);o.useEffect(()=>{y!==i.ScriptStatus.READY||_||h||(async()=>{try{var e;const t=await(null===(e=window)||void 0===e||null===(e=e.__twpdeu)||void 0===e?void 0:e.getFieldConfigs({fieldName:r}));t?m(t[0]):console.error("unable to get config",r)}catch(e){console.warn("unable to get config",r,e)}})()},[y]),o.useEffect(()=>{y===i.ScriptStatus.READY&&p&&I&&(async()=>{try{var e;const o=await(null===(e=window)||void 0===e||null===(e=e.__twpdeu)||void 0===e?void 0:e.push({submitData:{fieldName:r,value:I},source:s}));w({isFinished:!0,isError:!0!==o&&(!o||o.status!==t.ResponseStatus.SUCCESS)})}catch(e){w({isFinished:!1,isError:!0})}})()},[y,p]);const N=d&&h?{defaultValue:d}:{},v=u||!_&&!h?{disabled:!0}:{},O=h?[...h.values].sort((e,t)=>e.order-t.order).filter(e=>!0!==e.archived).filter(f):[];return n.createElement(S,null,_&&n.createElement(a.Select.Root,{onValueChange:e=>{C(e),E({value:e})},...N,...v},_),!_&&!h&&n.createElement(b,{id:"loading",label:"Loading...",values:[],disabled:!0}),!_&&h&&n.createElement(b,{id:h.name,label:l||h.name,onChange:e=>{C(e),E({value:e})},values:O.map(e=>e.name),defaultValue:d,disabled:u}))},exports.FirstPartyIngestDataTypes={JOB_LEVEL:"profile_job_level",JOB_INDUSTRY:"profile_job_industry",JOB_TITLE:"profile_job_title",PERSONAL_GOALS:"personal_goals",HOBBIES:"hobbies",PROFESSIONAL_GOALS:"professional_goals",INDUSTRY:"industry",NEWS_LOCATION:"news_location",NY_PERSONAL_GOALS:"new_year_personal_goals",NY_HOBBIES:"new_year_hobbies",NY_PROFESSIONAL_GOALS:"new_year_professional_goals",NY_INDUSTRY:"new_year_industry",NY_NEWS_LOCATION:"new_year_news_location"},exports.IngestResponseState={SUCCESS:"100",SYSTEM_ERROR:"101",INVALID_TYPE:"102",INVALID_IDENTIFIER:"103",INVALID_DATA:"104",INVALID_ATTRIBUTE_DEFINITION:"105",INVALID_META_DEFINITION:"106",UNAUTHENTICATED:"107",MISMATCHED_IDENTIFIER:"108",DISABLED_ATTRIBUTE_DEFINITION:"109",DO_NOT_COLLECT:"110"},exports.IngestType=l,exports.getAttributes=p,exports.hasRequiredPrivacyCookies=c,exports.push=async e=>{let{submitData:o,source:n}=e;if(!c())throw new Error("does not satisfy cookie check");if("undefined"!=typeof window&&t.getCookie("wp_wv")&&!t.isLoggedIn())throw new Error("does not satisfy cookie check");const{fieldName:a}=o,i=await p({fieldName:a});if(i[0]&&i[0].name===a&&i[0].collection_behavior===r.DO_NOT_COLLECT)throw new Error("do not collect");const s=i[0]&&!0===i[0].explicit?l.EXPLICIT:l.IMPLICIT;return i[0]||"production"===process.env.NODE_ENV||console.warn(`no attribute info found for ${a}, assuming implicit`),s===l.EXPLICIT?(async e=>{let{submitData:{fieldName:o,value:n},source:a}=e;const i=E+"/ingest",s=t.getCookie("wapo_login_id"),r={jucid:localStorage.getItem("uuid"),ga:t.getCookie("_ga"),type:l.EXPLICIT,wapo_login_id:s,data:{[o]:[n]},metadata:{source:a}};try{const e=await fetch(i,{method:"POST",credentials:"include",headers:t.JSON_HEADERS,body:JSON.stringify(r)});return await e.json()}catch(e){return console.debug(e),null}})({submitData:o,source:n}):(async e=>{let{submitData:{fieldName:t,value:o},source:n}=e;return(e=>{if("undefined"==typeof window)return void("production"!==process.env.NODE_ENV&&console.warn("NO WINDOW"));window.dataLayer=window.dataLayer||[];const t={...e};window.dataLayer.push(t)})({event:"site-onpage-click",action:"site-onpage-click",category:"profile",label:t,"de-label":t,[t]:o,section:"profile",subsection:n}),!0})({submitData:o,source:n})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("@washingtonpost/subs-sdk"),e=require("react"),r=require("@washingtonpost/wpds-ui-kit");function n(){n=function(){return e};var t,e={},r=Object.prototype,o=r.hasOwnProperty,i=Object.defineProperty||function(t,e,r){t[e]=r.value},a="function"==typeof Symbol?Symbol:{},u=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",s=a.toStringTag||"@@toStringTag";function l(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,r){return t[e]=r}}function f(t,e,r,n){var o=Object.create((e&&e.prototype instanceof m?e:m).prototype),a=new j(n||[]);return i(o,"_invoke",{value:I(t,r,a)}),o}function h(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=f;var p="suspendedStart",d="suspendedYield",v="executing",y="completed",g={};function m(){}function b(){}function w(){}var E={};l(E,u,(function(){return this}));var x=Object.getPrototypeOf,L=x&&x(x(k([])));L&&L!==r&&o.call(L,u)&&(E=L);var S=w.prototype=m.prototype=Object.create(E);function O(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function _(t,e){function r(n,i,a,u){var c=h(t[n],t,i);if("throw"!==c.type){var s=c.arg,l=s.value;return l&&"object"==typeof l&&o.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,a,u)}),(function(t){r("throw",t,a,u)})):e.resolve(l).then((function(t){s.value=t,a(s)}),(function(t){return r("throw",t,a,u)}))}u(c.arg)}var n;i(this,"_invoke",{value:function(t,o){function i(){return new e((function(e,n){r(t,o,e,n)}))}return n=n?n.then(i,i):i()}})}function I(e,r,n){var o=p;return function(i,a){if(o===v)throw Error("Generator is already running");if(o===y){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var u=n.delegate;if(u){var c=N(u,n);if(c){if(c===g)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===p)throw o=y,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=v;var s=h(e,r,n);if("normal"===s.type){if(o=n.done?y:d,s.arg===g)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(o=y,n.method="throw",n.arg=s.arg)}}}function N(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,N(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),g;var i=h(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,g;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,g):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,g)}function T(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function C(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function j(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(T,this),this.reset(!0)}function k(e){if(e||""===e){var r=e[u];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function r(){for(;++n<e.length;)if(o.call(e,n))return r.value=e[n],r.done=!1,r;return r.value=t,r.done=!0,r};return i.next=i}}throw new TypeError(typeof e+" is not iterable")}return b.prototype=w,i(S,"constructor",{value:w,configurable:!0}),i(w,"constructor",{value:b,configurable:!0}),b.displayName=l(w,s,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===b||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,w):(t.__proto__=w,l(t,s,"GeneratorFunction")),t.prototype=Object.create(S),t},e.awrap=function(t){return{__await:t}},O(_.prototype),l(_.prototype,c,(function(){return this})),e.AsyncIterator=_,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new _(f(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},O(S),l(S,s,"Generator"),l(S,u,(function(){return this})),l(S,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=k,j.prototype={constructor:j,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(C),!e)for(var r in this)"t"===r.charAt(0)&&o.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function n(n,o){return u.type="throw",u.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var c=o.call(a,"catchLoc"),s=o.call(a,"finallyLoc");if(c&&s){if(this.prev<a.catchLoc)return n(a.catchLoc,!0);if(this.prev<a.finallyLoc)return n(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return n(a.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return n(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&o.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var i=n;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,g):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),g},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),C(r),g}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;C(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:k(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),g}},e}function o(t,e,r,n,o,i,a){try{var u=t[i](a),c=u.value}catch(t){return void r(t)}u.done?e(c):Promise.resolve(c).then(n,o)}function i(t){return function(){var e=this,r=arguments;return new Promise((function(n,i){var a=t.apply(e,r);function u(t){o(a,n,i,u,c,"next",t)}function c(t){o(a,n,i,u,c,"throw",t)}u(void 0)}))}}function a(){return a=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},a.apply(this,arguments)}var u=t.ENDPOINTS.base+"/de/v1",c={},s=function(){var e=i(n().mark((function e(r){var o,i,a,s,l,f;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!c[o=r.fieldName]){e.next=3;break}return e.abrupt("return",c[o]);case 3:return i=[o],e.prev=4,(a=new URL(u+"/attributes")).searchParams.set("attributes",i.join(",")),e.next=9,fetch(a.toString(),{credentials:"include",headers:t.JSON_HEADERS});case 9:return s=e.sent,e.next=12,s.json();case 12:if(l=e.sent,!s.ok||l.status!==t.ResponseStatus.SUCCESS){e.next=19;break}return c[o]=f=l.attributes||[],e.abrupt("return",f);case 19:return e.abrupt("return",[]);case 20:e.next=26;break;case 22:return e.prev=22,e.t0=e.catch(4),console.debug(e.t0),e.abrupt("return",[]);case 26:case"end":return e.stop()}}),e,null,[[4,22]])})));return function(t){return e.apply(this,arguments)}}(),l=r.styled("div",{boxSizing:"border-box",display:"flex",marginBottom:"$100",flexDirection:"column","& button":{padding:"1px 6px"},"& *":{boxSizing:"border-box"}});exports.AttributesState={SUCCESS:"100"},exports.CollectionBehaviors={COLLECT:"COLLECT",DO_NOT_COLLECT:"DO_NOT_COLLECT"},exports.DESelect=function(t){var o=t.fieldName,u=t.label,c=t.defaultValue,f=t.disabled,h=t.submit,p=t.onChange,d=void 0===p?function(){}:p,v=t.onFinished,y=void 0===v?function(){}:v,g=t.valuesFilter,m=void 0===g?function(){return!0}:g,b=t.children,w=e.useState(t.dataDictionaryConfig),E=w[0],x=w[1],L=e.useState(""),S=L[0],O=L[1];if(e.useEffect((function(){b||E||i(n().mark((function t(){return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,s({fieldName:o});case 2:x(t.sent[0]);case 5:case"end":return t.stop()}}),t)})))()}),[]),e.useEffect((function(){h&&S&&y({isFinished:!0,isError:!1})}),[h,S]),!b&&!E)return e.createElement("span",null,"loading");var _=c?{defaultValue:c}:{},I=f?{disabled:!0}:{},N=E?E.values.sort((function(t,e){return t.order-e.order})).filter((function(t){return!0!==t.archived})).filter(m):[];return e.createElement(l,null,e.createElement(r.Select.Root,a({onValueChange:function(t){d({value:t}),O(t)}},_,I),b||null,!b&&E&&e.createElement(e.Fragment,null,e.createElement(r.Select.Trigger,{"data-test-id":E.name+"-select-trigger"},e.createElement(r.Select.Label,null,u||E.name),e.createElement(r.Select.Value,null)),e.createElement(r.Select.Content,{css:{zIndex:r.theme.zIndices.page},"data-test-id":E.name+"-select-content"},N.map((function(t){return e.createElement(r.Select.Item,{value:t.name,key:t.name},t.name)}))))))},exports.IngestResponseState={SUCCESS:"100",SYSTEM_ERROR:"101",INVALID_TYPE:"102",INVALID_IDENTIFIER:"103",INVALID_DATA:"104",INVALID_ATTRIBUTE_DEFINITION:"105",INVALID_META_DEFINITION:"106"},exports.getAttributes=s,exports.hasRequiredPrivacyCookies=function(){var e;if("undefined"==typeof window)return!1;var r=t.getCookie("wp_usp"),n=null==(e=t.WPGeo())?void 0:e.country_code;return!(!r||"US"!==n)};
2
2
  //# sourceMappingURL=subs-de-inputs.cjs.production.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subs-de-inputs.cjs.production.min.js","sources":["../src/interfaces/index.ts","../src/utils/hasRequiredPrivacyCookies.ts","../src/services/getAttributes.ts","../src/services/ingest.ts","../src/components/DESelect/Dropdown.tsx","../src/components/DESelect/index.tsx","../src/components/DEDisclosure/utils/getConfig.ts","../src/components/DEDisclosure/utils/checkCookie.ts","../src/components/DEDisclosure/index.tsx","../src/components/DEDisclosure/hooks/useOnetrustAlertBoxClosedPromise.ts","../src/components/DEDisclosure/utils/hydrateLinks.tsx","../src/constants/IngestDataTypes.ts","../src/utils/push.ts","../src/utils/isAnonymousWebview.ts","../src/services/sendToGA.ts"],"sourcesContent":["import { 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\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;\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 { WPGeo, getCookie } from '@washingtonpost/subs-sdk';\n\nexport const hasRequiredPrivacyCookies = () => {\n if (typeof window === 'undefined') {\n return false;\n }\n\n const wp_usp = getCookie('wp_usp');\n\n const countryCode = WPGeo()?.country_code;\n\n return !!(wp_usp && countryCode === 'US');\n};\n","import {\n ENDPOINTS,\n ResponseStatus,\n JSON_HEADERS,\n} from '@washingtonpost/subs-sdk';\nimport { Attribute } from '../interfaces';\n\nconst base = `${ENDPOINTS.base}/de/v1`;\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: JSON_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 } else {\n return [];\n }\n } catch (e) {\n console.debug(e);\n return [];\n }\n};\n\ntype GetAttributesType = ({\n fieldName,\n}: {\n fieldName: string;\n}) => Promise<Attribute[]>;\n","import {\n ENDPOINTS,\n ResponseStatus,\n JSON_HEADERS,\n getCookie,\n} from '@washingtonpost/subs-sdk';\nimport { 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: JSON_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: ResponseStatus;\n state: (typeof IngestResponseState)[keyof typeof IngestResponseState];\n} | null>;\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 defaultValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\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 defaultValue,\n onChange = () => {},\n disabled = false,\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 // helps maintain state between WPDS and native dropdowns\n const defaultValueProp = answer\n ? { defaultValue: answer }\n : defaultValue\n ? { defaultValue }\n : {};\n\n const defaultValuePropMobile = (value: string) => {\n if (answer) {\n return value === answer ? { selected: true } : {};\n }\n return value === defaultValue ? { selected: true } : {};\n };\n\n return isMobileSize ? (\n <StyledSelectWrapper>\n <StyledMobileSelect\n id=\"\"\n required={required}\n onChange={(e) => setAnswer(e.target.value)}\n placeholder={label}\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 { Attribute, AttributeValue } from '../../interfaces';\nimport { ENDPOINTS, ResponseStatus } from '@washingtonpost/subs-sdk';\nimport { useScript, ScriptStatus } from '@washingtonpost/subs-hooks';\nimport { Dropdown } from './Dropdown';\n\ninterface DESelectProps {\n source: string;\n fieldName: string;\n label?: string;\n dataDictionaryConfig?: Attribute | Readonly<Attribute>;\n defaultValue?: 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}\n\nconst scriptSrc = `${\n ENDPOINTS.staticAssets === 'https://subscribe.washingtonpost.com/static'\n ? 'https://www.washingtonpost.com/subscribe/static/'\n : ENDPOINTS.staticAssets\n}/de-utils/twpdeu.min.js`;\n\nexport const DESelect: React.FC<DESelectProps> = ({\n source,\n fieldName,\n label,\n dataDictionaryConfig,\n defaultValue,\n disabled,\n submit,\n onChange = () => {},\n onFinished = () => {},\n valuesFilter = () => true,\n children,\n}) => {\n const [config, setConfig] = useState(dataDictionaryConfig);\n\n const [selected, setSelected] = useState('');\n\n const scriptStatus = useScript(scriptSrc);\n\n useEffect(() => {\n const fetchConfig = async () => {\n try {\n const config = await window?.__twpdeu?.getFieldConfigs({ fieldName });\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 } 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 = defaultValue && config ? { defaultValue } : {};\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 defaultValue={defaultValue}\n disabled={disabled}\n />\n )}\n </SelectWrapper>\n );\n};\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","import { ENDPOINTS, WPGeo } from '@washingtonpost/subs-sdk';\nimport {\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 = 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 { getCookie } from '@washingtonpost/subs-sdk';\n\nconst COOKIE = 'OptanonAlertBoxClosed';\n\nexport const checkCookie = () => {\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 React, { useState, useEffect } from 'react';\nimport { DisclosureConfigValue } from '../../interfaces/disclosure';\nimport { getConfig } from './utils/getConfig';\nimport { hydrateLinks } from './utils/hydrateLinks';\nimport { useOneTrustAlertBoxClosed } from './hooks/useOnetrustAlertBoxClosedPromise';\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 /** 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}) => {\n const [disclosure, setDisclosure] = useState<string[] | null>(null);\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 if (alertBoxClosed) {\n setDisclosure(myConfig.disclosure_afterbanner);\n } else {\n setDisclosure(myConfig.disclosure_beforebanner);\n }\n } else if ('disclosure' in myConfig) {\n setDisclosure(myConfig.disclosure);\n } else {\n console.error('Invalid config');\n }\n }\n }, [myConfig, alertBoxClosed]);\n\n useEffect(() => {\n if (disclosure && Array.isArray(disclosure)) {\n setDisclosureRendering(\n disclosure.reduce((prev, current) => {\n return (\n <>\n {prev}\n <p>{hydrateLinks(current)}</p>\n </>\n );\n }, <></>)\n );\n\n // Is it ok to fire `onFinished` if still waiting for onetrust to load on the page?\n onFinished({\n isFinished: true,\n isError: false,\n });\n }\n }, [disclosure]);\n\n return disclosure === null ? (\n <div data-test-id=\"de-disclosure-loading\"></div>\n ) : (\n <div data-test-id=\"de-disclosure\">{disclosureRendering}</div>\n );\n};\n","import { useState, useEffect } from 'react';\nimport {\n listenToCookieStore as listenToCookieStoreUtil,\n ICookieStore,\n} from '@washingtonpost/subs-sdk';\nimport { checkCookie } from '../utils/checkCookie';\n\nconst 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 useOneTrustAlertBoxClosed = ({\n allowCookieStore,\n}: {\n allowCookieStore: boolean;\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 (checkCookie()) {\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 let cleanupFn: (() => void) | null = () => {};\n if (listenToCookieStore && window.cookieStore) {\n cleanupFn = listenToCookieStoreUtil(COOKIE, () => {\n if (checkCookie()) {\n setAlertBoxClosed(true);\n } else {\n setAlertBoxClosed(false);\n }\n });\n }\n return cleanupFn || (() => {});\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 // 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 (checkCookie()) {\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 { alertBoxClosed, listenToCookieStore, listenToTcfApi };\n};\n","import React from 'react';\n\ntype hydrateLinksType = (str: string) => string | JSX.Element;\n\nexport const hydrateLinks: hydrateLinksType = (str: string) => {\n const array = str.split(/({{PRIVACY_POLICY}})/g);\n const chunks = array.map((str) => {\n if (str === '{{PRIVACY_POLICY}}') {\n return (\n <a\n target=\"_blank\"\n style={{ color: 'inherit' }}\n className=\"underline\"\n href=\"https://www.washingtonpost.com/privacy-policy/\"\n >\n Privacy Policy\n </a>\n );\n }\n return str;\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","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} as const;\n","import {\n CollectionBehaviors,\n IngestResponseState,\n IngestType,\n} from '../interfaces';\nimport { getAttributes } from '../services/getAttributes';\nimport { sendToGA } from '../services/sendToGA';\nimport { hasRequiredPrivacyCookies } from './hasRequiredPrivacyCookies';\nimport { ResponseStatus } from '@washingtonpost/subs-sdk';\nimport { ingest } from '../services/ingest';\nimport { isAnonymousWebview } from './isAnonymousWebview';\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 } else {\n return sendToGA({ submitData, source });\n }\n};\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: ResponseStatus;\n state: (typeof IngestResponseState)[keyof typeof IngestResponseState];\n }\n | null\n | true\n>;\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","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\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\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"],"names":["CollectionBehaviors","COLLECT","DO_NOT_COLLECT","IngestType","EXPLICIT","IMPLICIT","hasRequiredPrivacyCookies","window","wp_usp","getCookie","countryCode","_WPGeo","WPGeo","country_code","base","ENDPOINTS","attributesCache","getAttributes","async","fieldName","_ref","fieldNames","url","URL","searchParams","set","join","data","fetch","toString","credentials","headers","JSON_HEADERS","json","ok","status","ResponseStatus","SUCCESS","attributes","e","console","debug","StyledMobileSelect","styled","padding","display","justifyContent","width","backgroundColor","color","fontFamily","fontSize","fontWeight","lineHeight","paddingBlockRight","textOverflow","position","borderColor","borderRightWidth","borderRightColor","appearance","-webkit-appearance","&:disabled","theme","colors","disabled","onDisabled","cursor","StyledSelectWrapper","maxWidth","borderRadius","borderStyle","borderWidth","StyledMobileOption","Dropdown","id","label","values","required","defaultValue","onChange","answer","setAnswer","useState","isMobileSize","useWindowSize","useEffect","disabledProp","defaultValueProp","defaultValuePropMobile","value","selected","React","target","placeholder","style","map","key","Icon","size","fill","pointerEvents","right","top","transform","ChevronDown","Select","Root","onValueChange","Trigger","Label","Value","Content","css","zIndex","zIndices","page","Item","scriptSrc","staticAssets","SelectWrapper","boxSizing","marginBottom","flexDirection","& button","& *","configSrc","checkCookie","length","onFinished","allowCookieStore","disclosure","setDisclosure","disclosureRendering","setDisclosureRendering","myConfig","setMyConfig","alertBoxClosed","setAlertBoxClosed","listenToCookieStore","setListenToCookieStore","listenToTcfApi","setListenToTcfApi","__tcfapi","warn","_window","cookieStore","cleanupFn","listenToCookieStoreUtil","listenerId","callback","_tcData","success","useOneTrustAlertBoxClosed","config","undefined","response","remoteConfig","intl_region","Object","keys","forEach","configKey","split","includes","toLowerCase","getConfig","error","checkBannerStatus","disclosure_afterbanner","disclosure_beforebanner","Array","isArray","reduce","prev","current","str","className","href","isFinished","isError","source","dataDictionaryConfig","submit","valuesFilter","children","setConfig","setSelected","scriptStatus","useScript","ScriptStatus","READY","__twpdeu","getFieldConfigs","fetchConfig","_window2","result","push","submitData","submitSelected","sort","a","b","order","filter","archived","name","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","SYSTEM_ERROR","INVALID_TYPE","INVALID_IDENTIFIER","INVALID_DATA","INVALID_ATTRIBUTE_DEFINITION","INVALID_META_DEFINITION","UNAUTHENTICATED","MISMATCHED_IDENTIFIER","DISABLED_ATTRIBUTE_DEFINITION","Error","isLoggedIn","attributeInfo","collection_behavior","type","explicit","process","env","NODE_ENV","wapo_login_id","payload","jucid","localStorage","getItem","ga","[object Object]","metadata","method","body","JSON","stringify","ingest","props","dataLayer","eventData","sendGAEvent","event","action","category","de-label","section","subsection","sendToGA"],"mappings":"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"}
1
+ {"version":3,"file":"subs-de-inputs.cjs.production.min.js","sources":["../src/services/dataEnrichment.ts","../src/components/DESelect/index.tsx","../src/interfaces/index.ts","../src/utils/hasRequiredPrivacyCookies.ts"],"sourcesContent":["import {\n ENDPOINTS,\n ResponseStatus,\n JSON_HEADERS,\n} from '@washingtonpost/subs-sdk';\n\nconst base = `${ENDPOINTS.base}/de/v1`;\n\nconst attributesCache: Record<string, any> = {};\nexport const getAttributes = async ({ fieldName }: { fieldName: string }) => {\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: JSON_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 } else {\n return [];\n }\n } catch (e) {\n console.debug(e);\n return [];\n }\n};\n","import React, { useState, useEffect } from 'react';\nimport { Select, styled, theme } from '@washingtonpost/wpds-ui-kit';\nimport { SubsWindow } from '@washingtonpost/subs-sdk';\nimport { Attribute, AttributeValue } from '../../interfaces';\nimport { getAttributes } from '../../services/dataEnrichment';\n\ndeclare global {\n interface Window extends SubsWindow {}\n}\n\ninterface DESelectProps {\n source: string;\n fieldName: string;\n label?: string;\n dataDictionaryConfig?: Attribute;\n defaultValue?: 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}\n\nexport const DESelect: React.FC<DESelectProps> = ({\n source,\n fieldName,\n label,\n dataDictionaryConfig,\n defaultValue,\n disabled,\n submit,\n onChange = () => {},\n onFinished = () => {},\n valuesFilter = () => true,\n children,\n}) => {\n const [config, setConfig] = useState(dataDictionaryConfig);\n\n const [selected, setSelected] = useState('');\n\n useEffect(() => {\n if (children) {\n if (__DEV__) {\n console.debug('childen props', children);\n }\n return;\n }\n\n if (!config) {\n (async () => {\n // TODO: Switch to window.__twpdeu.getFieldConfigs\n const config = await getAttributes({ fieldName });\n if (__DEV__) {\n console.debug('config from API', config);\n }\n setConfig(config[0]);\n })();\n }\n }, []);\n\n useEffect(() => {\n if (submit && selected) {\n if (__DEV__) {\n console.error('push not implemented', selected, source);\n }\n onFinished({ isFinished: true, isError: false });\n }\n }, [submit, selected]);\n\n if (!(children || config)) {\n return <span>loading</span>;\n }\n\n const defaultValueProp = defaultValue ? { defaultValue } : {};\n\n const disabledProp = disabled ? { disabled: true } : {};\n\n // sort and filter out archived values\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 <Select.Root\n onValueChange={(e: string) => {\n onChange({ value: e });\n setSelected(e);\n }}\n {...defaultValueProp}\n {...disabledProp}\n >\n {children || null}\n {!children && config && (\n <React.Fragment>\n <Select.Trigger data-test-id={`${config.name}-select-trigger`}>\n <Select.Label>{label || config.name}</Select.Label>\n <Select.Value />\n </Select.Trigger>\n <Select.Content\n css={{ zIndex: theme.zIndices.page }}\n data-test-id={`${config.name}-select-content`}\n >\n {values.map((value) => (\n <Select.Item value={value.name} key={value.name}>\n {value.name}\n </Select.Item>\n ))}\n </Select.Content>\n </React.Fragment>\n )}\n </Select.Root>\n </SelectWrapper>\n );\n};\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","export 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: Array<AttributeValue>;\n};\n\nexport const AttributesState = {\n SUCCESS: '100',\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} as const;\n","import { WPGeo, getCookie } from '@washingtonpost/subs-sdk';\n\nexport const hasRequiredPrivacyCookies = () => {\n if (typeof window === 'undefined') {\n return false;\n }\n\n const wp_usp = getCookie('wp_usp');\n\n const countryCode = WPGeo()?.country_code;\n\n return !!(wp_usp && countryCode === 'US');\n};\n"],"names":["base","ENDPOINTS","attributesCache","getAttributes","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref","fieldName","fieldNames","url","data","json","attributes","wrap","_context","prev","next","abrupt","URL","searchParams","set","join","fetch","toString","credentials","headers","JSON_HEADERS","sent","ok","status","ResponseStatus","SUCCESS","t0","console","debug","stop","_x","apply","this","arguments","SelectWrapper","styled","boxSizing","display","marginBottom","flexDirection","padding","COLLECT","DO_NOT_COLLECT","label","defaultValue","disabled","submit","_ref$onChange","onChange","_ref$onFinished","onFinished","_ref$valuesFilter","valuesFilter","children","_useState","useState","dataDictionaryConfig","config","setConfig","_useState2","selected","setSelected","useEffect","isFinished","isError","React","defaultValueProp","disabledProp","values","sort","a","b","order","filter","value","archived","createElement","Select","Root","_extends","onValueChange","e","Fragment","Trigger","name","Label","Value","Content","css","zIndex","theme","zIndices","page","map","Item","key","SYSTEM_ERROR","INVALID_TYPE","INVALID_IDENTIFIER","INVALID_DATA","INVALID_ATTRIBUTE_DEFINITION","INVALID_META_DEFINITION","_WPGeo","window","wp_usp","getCookie","countryCode","WPGeo","country_code"],"mappings":"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"}