@washingtonpost/subs-de-inputs 0.2.0 → 0.2.1-canary.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.
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+
2
+ 'use strict'
3
+
4
+ if (process.env.NODE_ENV === 'production') {
5
+ module.exports = require('./subs-de-inputs.cjs.production.min.js')
6
+ } else {
7
+ module.exports = require('./subs-de-inputs.cjs.development.js')
8
+ }
@@ -0,0 +1,251 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
+
7
+ var subsSdk = require('@washingtonpost/subs-sdk');
8
+ var React = require('react');
9
+ var React__default = _interopDefault(React);
10
+ var wpdsUiKit = require('@washingtonpost/wpds-ui-kit');
11
+ var subsHooks = require('@washingtonpost/subs-hooks');
12
+
13
+ const CollectionBehaviors = {
14
+ COLLECT: 'COLLECT',
15
+ DO_NOT_COLLECT: 'DO_NOT_COLLECT'
16
+ };
17
+ const AttributesState = {
18
+ SUCCESS: '100'
19
+ };
20
+ const IngestType = {
21
+ EXPLICIT: 'explicit',
22
+ IMPLICIT: 'implicit'
23
+ };
24
+ const IngestResponseState = {
25
+ SUCCESS: '100',
26
+ SYSTEM_ERROR: '101',
27
+ INVALID_TYPE: '102',
28
+ INVALID_IDENTIFIER: '103',
29
+ INVALID_DATA: '104',
30
+ INVALID_ATTRIBUTE_DEFINITION: '105',
31
+ INVALID_META_DEFINITION: '106',
32
+ UNAUTHENTICATED: '107',
33
+ MISMATCHED_IDENTIFIER: '108',
34
+ DISABLED_ATTRIBUTE_DEFINITION: '109',
35
+ DO_NOT_COLLECT: '110'
36
+ };
37
+
38
+ const hasRequiredPrivacyCookies = () => {
39
+ var _WPGeo;
40
+ if (typeof window === 'undefined') {
41
+ return false;
42
+ }
43
+ const wp_usp = subsSdk.getCookie('wp_usp');
44
+ const countryCode = (_WPGeo = subsSdk.WPGeo()) === null || _WPGeo === void 0 ? void 0 : _WPGeo.country_code;
45
+ return !!(wp_usp && countryCode === 'US');
46
+ };
47
+
48
+ const base = `${subsSdk.ENDPOINTS.base}/de/v1`;
49
+ const attributesCache = {};
50
+ const getAttributes = async _ref => {
51
+ let {
52
+ fieldName
53
+ } = _ref;
54
+ if (attributesCache[fieldName]) {
55
+ return attributesCache[fieldName];
56
+ }
57
+ const fieldNames = [fieldName];
58
+ try {
59
+ const url = new URL(`${base}/attributes`);
60
+ url.searchParams.set('attributes', fieldNames.join(','));
61
+ const data = await fetch(url.toString(), {
62
+ credentials: 'include',
63
+ headers: subsSdk.JSON_HEADERS
64
+ });
65
+ const json = await data.json();
66
+ if (data.ok && json.status === subsSdk.ResponseStatus.SUCCESS) {
67
+ const attributes = json.attributes || [];
68
+ attributesCache[fieldName] = attributes;
69
+ return attributes;
70
+ } else {
71
+ return [];
72
+ }
73
+ } catch (e) {
74
+ console.debug(e);
75
+ return [];
76
+ }
77
+ };
78
+ const ingest = async _ref2 => {
79
+ let {
80
+ submitData: {
81
+ fieldName,
82
+ value
83
+ },
84
+ type,
85
+ source
86
+ } = _ref2;
87
+ const url = `${base}/ingest`;
88
+ const wapo_login_id = subsSdk.getCookie('wapo_login_id');
89
+ if (!hasRequiredPrivacyCookies()) {
90
+ throw new Error('does not satisfy cookie check');
91
+ }
92
+ let attributeInfo = attributesCache[fieldName];
93
+ if (!attributeInfo) {
94
+ attributeInfo = await getAttributes({
95
+ fieldName
96
+ });
97
+ }
98
+ if (attributeInfo[0] && attributeInfo[0].name === fieldName && attributeInfo[0].collection_behavior === CollectionBehaviors.DO_NOT_COLLECT) {
99
+ throw new Error('do not collect');
100
+ }
101
+ const jucid = localStorage.getItem('uuid');
102
+ const ga = subsSdk.getCookie('_ga');
103
+ const payload = {
104
+ jucid,
105
+ ga,
106
+ type,
107
+ wapo_login_id,
108
+ data: {
109
+ fieldName,
110
+ value
111
+ },
112
+ metadata: {
113
+ source
114
+ }
115
+ };
116
+ try {
117
+ const response = await fetch(url, {
118
+ method: 'POST',
119
+ credentials: 'include',
120
+ headers: subsSdk.JSON_HEADERS,
121
+ body: JSON.stringify(payload)
122
+ });
123
+ const json = await response.json();
124
+ return json;
125
+ } catch (e) {
126
+ console.debug(e);
127
+ return null;
128
+ }
129
+ };
130
+
131
+ const scriptSrc = `${subsSdk.ENDPOINTS.staticAssets === 'https://subscribe.washingtonpost.com/static' ? 'https://www.washingtonpost.com/subscribe/static/' : subsSdk.ENDPOINTS.staticAssets}/de-utils/twpdeu.min.js`;
132
+ const DESelect = _ref => {
133
+ let {
134
+ source,
135
+ fieldName,
136
+ label,
137
+ dataDictionaryConfig,
138
+ defaultValue,
139
+ disabled,
140
+ submit,
141
+ onChange = () => {},
142
+ onFinished = () => {},
143
+ valuesFilter = () => true,
144
+ children
145
+ } = _ref;
146
+ const [config, setConfig] = React.useState(dataDictionaryConfig);
147
+ const [selected, setSelected] = React.useState('');
148
+ const scriptStatus = subsHooks.useScript(scriptSrc);
149
+ React.useEffect(() => {
150
+ const fetchConfig = async () => {
151
+ try {
152
+ var _window;
153
+ const config = await ((_window = window) === null || _window === void 0 || (_window = _window.__twpdeu) === null || _window === void 0 ? void 0 : _window.getFieldConfigs({
154
+ fieldName
155
+ }));
156
+ if (config) {
157
+ setConfig(config[0]);
158
+ } else {
159
+ console.error('unable to get config', fieldName);
160
+ }
161
+ } catch (e) {
162
+ console.warn('unable to get config', fieldName, e);
163
+ }
164
+ };
165
+ if (scriptStatus === subsHooks.ScriptStatus.READY && !(children || config)) {
166
+ fetchConfig();
167
+ }
168
+ }, [scriptStatus]);
169
+ React.useEffect(() => {
170
+ const submitSelected = async () => {
171
+ try {
172
+ // TODO: Switch to window.__twpdeu.push
173
+ // TODO: Log to GA
174
+ const result = await ingest({
175
+ submitData: {
176
+ fieldName,
177
+ value: [selected]
178
+ },
179
+ type: config !== null && config !== void 0 && config.explicit ? IngestType.EXPLICIT : IngestType.IMPLICIT,
180
+ source
181
+ });
182
+ const isError = result ? result.status !== subsSdk.ResponseStatus.SUCCESS : true;
183
+ onFinished({
184
+ isFinished: true,
185
+ isError
186
+ });
187
+ } catch (e) {
188
+ onFinished({
189
+ isFinished: false,
190
+ isError: true
191
+ });
192
+ }
193
+ };
194
+ if (submit && selected) {
195
+ submitSelected();
196
+ }
197
+ }, [submit, selected]);
198
+ if (!(children || config)) {
199
+ return React__default.createElement("span", null, "loading");
200
+ }
201
+ const defaultValueProp = defaultValue ? {
202
+ defaultValue
203
+ } : {};
204
+ const disabledProp = disabled ? {
205
+ disabled: true
206
+ } : {};
207
+ // sort and filter out archived values
208
+ const values = config ? config.values.sort((a, b) => a.order - b.order).filter(value => value.archived !== true).filter(valuesFilter) : [];
209
+ return React__default.createElement(SelectWrapper, null, React__default.createElement(wpdsUiKit.Select.Root, {
210
+ onValueChange: e => {
211
+ onChange({
212
+ value: e
213
+ });
214
+ setSelected(e);
215
+ },
216
+ ...defaultValueProp,
217
+ ...disabledProp
218
+ }, children ? children : null, !children && config && React__default.createElement(React__default.Fragment, null, React__default.createElement(wpdsUiKit.Select.Trigger, {
219
+ "data-test-id": `${config.name}-select-trigger`
220
+ }, React__default.createElement(wpdsUiKit.Select.Label, null, label || config.name), React__default.createElement(wpdsUiKit.Select.Value, null)), React__default.createElement(wpdsUiKit.Select.Content, {
221
+ css: {
222
+ zIndex: wpdsUiKit.theme.zIndices.page
223
+ },
224
+ "data-test-id": `${config.name}-select-content`
225
+ }, values.map(value => React__default.createElement(wpdsUiKit.Select.Item, {
226
+ value: value.name,
227
+ key: value.name
228
+ }, value.name))))));
229
+ };
230
+ const SelectWrapper = /*#__PURE__*/wpdsUiKit.styled('div', {
231
+ boxSizing: 'border-box',
232
+ display: 'flex',
233
+ marginBottom: '$100',
234
+ flexDirection: 'column',
235
+ '& button': {
236
+ padding: '1px 6px'
237
+ },
238
+ '& *': {
239
+ boxSizing: 'border-box'
240
+ }
241
+ });
242
+
243
+ exports.AttributesState = AttributesState;
244
+ exports.CollectionBehaviors = CollectionBehaviors;
245
+ exports.DESelect = DESelect;
246
+ exports.IngestResponseState = IngestResponseState;
247
+ exports.IngestType = IngestType;
248
+ exports.getAttributes = getAttributes;
249
+ exports.hasRequiredPrivacyCookies = hasRequiredPrivacyCookies;
250
+ exports.ingest = ingest;
251
+ //# sourceMappingURL=subs-de-inputs.cjs.development.js.map
@@ -0,0 +1 @@
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 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","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 getCookie,\n} from '@washingtonpost/subs-sdk';\nimport {\n Attribute,\n CollectionBehaviors,\n IngestResponseState,\n IngestType,\n} from '../interfaces';\nimport { hasRequiredPrivacyCookies } from '../utils/hasRequiredPrivacyCookies';\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\nexport const ingest: IngestType = async ({\n submitData: { fieldName, value },\n type,\n source,\n}) => {\n const url = `${base}/ingest`;\n\n const wapo_login_id = getCookie('wapo_login_id');\n\n if (!hasRequiredPrivacyCookies()) {\n throw new Error('does not satisfy cookie check');\n }\n\n let attributeInfo = attributesCache[fieldName];\n if (!attributeInfo) {\n attributeInfo = await getAttributes({ 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 jucid = localStorage.getItem('uuid');\n const ga = getCookie('_ga');\n\n const payload = {\n jucid,\n ga,\n type,\n wapo_login_id, // TODO: move this to BE to read from cookie headers\n data: {\n fieldName,\n 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 type: (typeof IngestType)[keyof typeof IngestType];\n source: string;\n}) => Promise<{\n status: ResponseStatus;\n state: (typeof IngestResponseState)[keyof typeof IngestResponseState];\n} | null>;\n","import React, { useState, useEffect } from 'react';\nimport { Select, styled, theme } from '@washingtonpost/wpds-ui-kit';\nimport { Attribute, AttributeValue, IngestType } from '../../interfaces';\nimport { ingest } from '../../services/dataEnrichment';\nimport { ENDPOINTS, ResponseStatus } from '@washingtonpost/subs-sdk';\nimport { useScript, ScriptStatus } from '@washingtonpost/subs-hooks';\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\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 // TODO: Switch to window.__twpdeu.push\n // TODO: Log to GA\n const result = await ingest({\n submitData: { fieldName, value: [selected] },\n type: config?.explicit ? IngestType.EXPLICIT : IngestType.IMPLICIT,\n source,\n });\n const isError = 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 (submit && selected) {\n submitSelected();\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 ? children : null}\n {!children && config && (\n <>\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 </>\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","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","ingest","_ref2","submitData","value","type","source","wapo_login_id","Error","attributeInfo","name","collection_behavior","jucid","localStorage","getItem","ga","payload","metadata","response","method","body","JSON","stringify","scriptSrc","staticAssets","DESelect","label","dataDictionaryConfig","defaultValue","disabled","submit","onChange","onFinished","valuesFilter","children","config","setConfig","useState","selected","setSelected","scriptStatus","useScript","useEffect","fetchConfig","_window","__twpdeu","getFieldConfigs","error","warn","ScriptStatus","READY","submitSelected","result","explicit","isError","isFinished","React","defaultValueProp","disabledProp","values","sort","a","b","order","filter","archived","SelectWrapper","Select","Root","onValueChange","Trigger","Label","Value","Content","css","zIndex","theme","zIndices","page","map","Item","key","styled","boxSizing","display","marginBottom","flexDirection","padding"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("@washingtonpost/subs-sdk"),s=require("react"),a=(e=s)&&"object"==typeof e&&"default"in e?e.default:e,o=require("@washingtonpost/wpds-ui-kit"),i=require("@washingtonpost/subs-hooks");const n={COLLECT:"COLLECT",DO_NOT_COLLECT:"DO_NOT_COLLECT"},r={EXPLICIT:"explicit",IMPLICIT:"implicit"},l=()=>{var e;if("undefined"==typeof window)return!1;const s=t.getCookie("wp_usp"),a=null===(e=t.WPGeo())||void 0===e?void 0:e.country_code;return!(!s||"US"!==a)},c=t.ENDPOINTS.base+"/de/v1",u={},d=async e=>{let{fieldName:s}=e;if(u[s])return u[s];const a=[s];try{const e=new URL(c+"/attributes");e.searchParams.set("attributes",a.join(","));const o=await fetch(e.toString(),{credentials:"include",headers:t.JSON_HEADERS}),i=await o.json();if(o.ok&&i.status===t.ResponseStatus.SUCCESS){const e=i.attributes||[];return u[s]=e,e}return[]}catch(e){return console.debug(e),[]}},E=async e=>{let{submitData:{fieldName:s,value:a},type:o,source:i}=e;const r=c+"/ingest",E=t.getCookie("wapo_login_id");if(!l())throw new Error("does not satisfy cookie check");let I=u[s];if(I||(I=await d({fieldName:s})),I[0]&&I[0].name===s&&I[0].collection_behavior===n.DO_NOT_COLLECT)throw new Error("do not collect");const S={jucid:localStorage.getItem("uuid"),ga:t.getCookie("_ga"),type:o,wapo_login_id:E,data:{fieldName:s,value:a},metadata:{source:i}};try{const e=await fetch(r,{method:"POST",credentials:"include",headers:t.JSON_HEADERS,body:JSON.stringify(S)});return await e.json()}catch(e){return console.debug(e),null}},I=("https://subscribe.washingtonpost.com/static"===t.ENDPOINTS.staticAssets?"https://www.washingtonpost.com/subscribe/static/":t.ENDPOINTS.staticAssets)+"/de-utils/twpdeu.min.js",S=o.styled("div",{boxSizing:"border-box",display:"flex",marginBottom:"$100",flexDirection:"column","& button":{padding:"1px 6px"},"& *":{boxSizing:"border-box"}});exports.AttributesState={SUCCESS:"100"},exports.CollectionBehaviors=n,exports.DESelect=e=>{let{source:n,fieldName:l,label:c,dataDictionaryConfig:u,defaultValue:d,disabled:p,submit:g,onChange:m=(()=>{}),onFinished:T=(()=>{}),valuesFilter:f=(()=>!0),children:C}=e;const[N,b]=s.useState(u),[_,h]=s.useState(""),w=i.useScript(I);if(s.useEffect(()=>{w!==i.ScriptStatus.READY||C||N||(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:l}));t?b(t[0]):console.error("unable to get config",l)}catch(e){console.warn("unable to get config",l,e)}})()},[w]),s.useEffect(()=>{g&&_&&(async()=>{try{const e=await E({submitData:{fieldName:l,value:[_]},type:null!=N&&N.explicit?r.EXPLICIT:r.IMPLICIT,source:n});T({isFinished:!0,isError:!e||e.status!==t.ResponseStatus.SUCCESS})}catch(e){T({isFinished:!1,isError:!0})}})()},[g,_]),!C&&!N)return a.createElement("span",null,"loading");const D=d?{defaultValue:d}:{},O=p?{disabled:!0}:{},y=N?N.values.sort((e,t)=>e.order-t.order).filter(e=>!0!==e.archived).filter(f):[];return a.createElement(S,null,a.createElement(o.Select.Root,{onValueChange:e=>{m({value:e}),h(e)},...D,...O},C||null,!C&&N&&a.createElement(a.Fragment,null,a.createElement(o.Select.Trigger,{"data-test-id":N.name+"-select-trigger"},a.createElement(o.Select.Label,null,c||N.name),a.createElement(o.Select.Value,null)),a.createElement(o.Select.Content,{css:{zIndex:o.theme.zIndices.page},"data-test-id":N.name+"-select-content"},y.map(e=>a.createElement(o.Select.Item,{value:e.name,key:e.name},e.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",UNAUTHENTICATED:"107",MISMATCHED_IDENTIFIER:"108",DISABLED_ATTRIBUTE_DEFINITION:"109",DO_NOT_COLLECT:"110"},exports.IngestType=r,exports.getAttributes=d,exports.hasRequiredPrivacyCookies=l,exports.ingest=E;
2
+ //# sourceMappingURL=subs-de-inputs.cjs.production.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subs-de-inputs.cjs.production.min.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 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","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 getCookie,\n} from '@washingtonpost/subs-sdk';\nimport {\n Attribute,\n CollectionBehaviors,\n IngestResponseState,\n IngestType,\n} from '../interfaces';\nimport { hasRequiredPrivacyCookies } from '../utils/hasRequiredPrivacyCookies';\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\nexport const ingest: IngestType = async ({\n submitData: { fieldName, value },\n type,\n source,\n}) => {\n const url = `${base}/ingest`;\n\n const wapo_login_id = getCookie('wapo_login_id');\n\n if (!hasRequiredPrivacyCookies()) {\n throw new Error('does not satisfy cookie check');\n }\n\n let attributeInfo = attributesCache[fieldName];\n if (!attributeInfo) {\n attributeInfo = await getAttributes({ 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 jucid = localStorage.getItem('uuid');\n const ga = getCookie('_ga');\n\n const payload = {\n jucid,\n ga,\n type,\n wapo_login_id, // TODO: move this to BE to read from cookie headers\n data: {\n fieldName,\n 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 type: (typeof IngestType)[keyof typeof IngestType];\n source: string;\n}) => Promise<{\n status: ResponseStatus;\n state: (typeof IngestResponseState)[keyof typeof IngestResponseState];\n} | null>;\n","import React, { useState, useEffect } from 'react';\nimport { Select, styled, theme } from '@washingtonpost/wpds-ui-kit';\nimport { Attribute, AttributeValue, IngestType } from '../../interfaces';\nimport { ingest } from '../../services/dataEnrichment';\nimport { ENDPOINTS, ResponseStatus } from '@washingtonpost/subs-sdk';\nimport { useScript, ScriptStatus } from '@washingtonpost/subs-hooks';\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\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 // TODO: Switch to window.__twpdeu.push\n // TODO: Log to GA\n const result = await ingest({\n submitData: { fieldName, value: [selected] },\n type: config?.explicit ? IngestType.EXPLICIT : IngestType.IMPLICIT,\n source,\n });\n const isError = 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 (submit && selected) {\n submitSelected();\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 ? children : null}\n {!children && config && (\n <>\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 </>\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","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","ingest","submitData","value","type","source","_ref2","wapo_login_id","Error","attributeInfo","name","collection_behavior","payload","jucid","localStorage","getItem","ga","metadata","response","method","body","JSON","stringify","scriptSrc","staticAssets","SelectWrapper","styled","boxSizing","display","marginBottom","flexDirection","& button","padding","& *","label","dataDictionaryConfig","defaultValue","disabled","submit","onChange","onFinished","valuesFilter","children","config","setConfig","useState","selected","setSelected","scriptStatus","useScript","useEffect","ScriptStatus","READY","_window","__twpdeu","getFieldConfigs","error","warn","fetchConfig","result","explicit","isFinished","isError","submitSelected","React","defaultValueProp","disabledProp","values","sort","a","b","order","filter","archived","Select","Root","onValueChange","Trigger","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","UNAUTHENTICATED","MISMATCHED_IDENTIFIER","DISABLED_ATTRIBUTE_DEFINITION"],"mappings":"iRAQaA,EAAsB,CACjCC,QAAS,UACTC,eAAgB,kBAmBLC,EAAa,CACxBC,SAAU,WACVC,SAAU,YC7BCC,EAA4BA,WACvC,GAAsB,oBAAXC,OACT,OAAO,EAGT,MAAMC,EAASC,YAAU,UAEnBC,UAAWC,EAAGC,qBAAOD,SAAPA,EAASE,aAE7B,SAAUL,GAA0B,OAAhBE,ICGhBI,EAAUC,YAAUD,cAEpBE,EAAuC,GAChCC,EAAmCC,MAAAA,QAAOC,UACrDA,GAGDC,EACC,GAAIJ,EAAgBG,GAClB,OAAOH,EAAgBG,GAGzB,MAAME,EAAa,CAACF,GAEpB,IACE,MAAMG,EAAM,IAAIC,IAAOT,iBACvBQ,EAAIE,aAAaC,IAAI,aAAcJ,EAAWK,KAAK,MAEnD,MAAMC,QAAaC,MAAMN,EAAIO,WAAY,CACvCC,YAAa,UACbC,QAASC,iBAELC,QAAaN,EAAKM,OAExB,GAAIN,EAAKO,IAAMD,EAAKE,SAAWC,iBAAeC,QAAS,CACrD,MAAMC,EAAaL,EAAKK,YAAc,GAEtC,OADAtB,EAAgBG,GAAamB,EACtBA,EAEP,MAAO,GAET,MAAOC,GAEP,OADAC,QAAQC,MAAMF,GACP,KAUEG,EAAqBxB,MAAAA,QAChCyB,YAAYxB,UAAEA,EAASyB,MAAEA,GAAOC,KAChCA,EAAIC,OACJA,GACDC,EACC,MAAMzB,EAASR,YAETkC,EAAgBvC,YAAU,iBAEhC,IAAKH,IACH,MAAM,IAAI2C,MAAM,iCAGlB,IAAIC,EAAgBlC,EAAgBG,GAKpC,GAJK+B,IACHA,QAAsBjC,EAAc,CAAEE,UAAAA,KAItC+B,EAAc,IACdA,EAAc,GAAGC,OAAShC,GAC1B+B,EAAc,GAAGE,sBAAwBpD,EAAoBE,eAE7D,MAAM,IAAI+C,MAAM,kBAGlB,MAGMI,EAAU,CACdC,MAJYC,aAAaC,QAAQ,QAKjCC,GAJShD,YAAU,OAKnBoC,KAAAA,EACAG,cAAAA,EACArB,KAAM,CACJR,UAAAA,EACAyB,MAAAA,GAEFc,SAAU,CAAEZ,OAAAA,IAGd,IACE,MAAMa,QAAiB/B,MAAMN,EAAK,CAChCsC,OAAQ,OACR9B,YAAa,UACbC,QAASC,eACT6B,KAAMC,KAAKC,UAAUV,KAKvB,aAFmBM,EAAS1B,OAG5B,MAAOM,GAEP,OADAC,QAAQC,MAAMF,GACP,OC5ELyB,GACuB,gDAA3BjD,YAAUkD,aACN,mDACAlD,YAAUkD,wCA0HVC,EAAgBC,SAAO,MAAO,CAClCC,UAAW,aACXC,QAAS,OACTC,aAAc,OACdC,cAAe,SACfC,WAAY,CACVC,QAAS,WAEXC,MAAO,CAAEN,UAAW,wCH/IS,CAC7B/B,QAAS,sDGesCjB,QAAC0B,OAChDA,EAAM3B,UACNA,EAASwD,MACTA,EAAKC,qBACLA,EAAoBC,aACpBA,EAAYC,SACZA,EAAQC,OACRA,EAAMC,SACNA,EAAWA,SAAQC,WACnBA,EAAaA,SAAQC,aACrBA,EAAeA,MAAM,GAAIC,SACzBA,GACD/D,EACC,MAAOgE,EAAQC,GAAaC,WAASV,IAE9BW,EAAUC,GAAeF,WAAS,IAEnCG,EAAeC,YAAU1B,GAoD/B,GAlDA2B,YAAU,KAcJF,IAAiBG,eAAaC,OAAWV,GAAYC,GAbrClE,WAClB,IAAI,IAAA4E,EACF,MAAMV,gBAASU,EAAMvF,kBAAMuF,WAAAA,EAANA,EAAQC,oBAAQD,SAAhBA,EAAkBE,gBAAgB,CAAE7E,UAAAA,KACrDiE,EACFC,EAAUD,EAAO,IAEjB5C,QAAQyD,MAAM,uBAAwB9E,GAExC,MAAOoB,GACPC,QAAQ0D,KAAK,uBAAwB/E,EAAWoB,KAKlD4D,IAED,CAACV,IAEJE,YAAU,KA0BJZ,GAAUQ,GAzBSrE,WACrB,IAGE,MAAMkF,QAAe1D,EAAO,CAC1BC,WAAY,CAAExB,UAAAA,EAAWyB,MAAO,CAAC2C,IACjC1C,KAAMuC,MAAAA,GAAAA,EAAQiB,SAAWlG,EAAWC,SAAWD,EAAWE,SAC1DyC,OAAAA,IAMFmC,EAAW,CACTqB,YAAY,EACZC,SANcH,GACZA,EAAOjE,SAAWC,iBAAeC,UAOrC,MAAOE,GACP0C,EAAW,CACTqB,YAAY,EACZC,SAAS,MAMbC,IAED,CAACzB,EAAQQ,KAENJ,IAAYC,EAChB,OAAOqB,uCAGT,MAAMC,EAAmB7B,EAAe,CAAEA,aAAAA,GAAiB,GAErD8B,EAAe7B,EAAW,CAAEA,UAAU,GAAS,GAG/C8B,EAASxB,EACXA,EAAOwB,OACJC,KAAK,CAACC,EAAGC,IAAMD,EAAEE,MAAQD,EAAEC,OAC3BC,OAAQrE,IAA6B,IAAnBA,EAAMsE,UACxBD,OAAO/B,GACV,GAEJ,OACEuB,gBAACvC,OACCuC,gBAACU,SAAOC,MACNC,cAAgB9E,IACdyC,EAAS,CAAEpC,MAAOL,IAClBiD,EAAYjD,OAEVmE,KACAC,GAEHxB,GAAsB,MACrBA,GAAYC,GACZqB,gCACEA,gBAACU,SAAOG,wBAAyBlC,EAAOjC,wBACtCsD,gBAACU,SAAOI,WAAO5C,GAASS,EAAOjC,MAC/BsD,gBAACU,SAAOK,aAEVf,gBAACU,SAAOM,SACNC,IAAK,CAAEC,OAAQC,QAAMC,SAASC,qBACb1C,EAAOjC,wBAEvByD,EAAOmB,IAAKnF,GACX6D,gBAACU,SAAOa,MAAKpF,MAAOA,EAAMO,KAAM8E,IAAKrF,EAAMO,MACxCP,EAAMO,wCHnHU,CACjCd,QAAS,MACT6F,aAAc,MACdC,aAAc,MACdC,mBAAoB,MACpBC,aAAc,MACdC,6BAA8B,MAC9BC,wBAAyB,MACzBC,gBAAiB,MACjBC,sBAAuB,MACvBC,8BAA+B,MAC/BxI,eAAgB"}
package/package.json CHANGED
@@ -1,7 +1,6 @@
1
1
  {
2
- "version": "0.2.0",
2
+ "version": "0.2.1-canary.0",
3
3
  "license": "UNLICENSED",
4
- "main": "dist/index.js",
5
4
  "typings": "dist/index.d.ts",
6
5
  "files": [
7
6
  "dist",
package/CHANGELOG.md DELETED
@@ -1,21 +0,0 @@
1
- # Change Log
2
-
3
- All notable changes to this project will be documented in this file. See
4
- [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
-
6
- **[0.2.0 - 2024-05-01]**:
7
- * Adds `ingest()` function
8
- * ESM build only
9
- * Babel config to target recent browsers only
10
-
11
- **[0.1.1 - 2024-04-30]**:
12
- * Fix build by removing unused file
13
-
14
- **[0.1.0 - 2024-04-25]**:
15
- * Add initial `<DESelect />` component
16
-
17
- **[0.0.2 - 2024-04-24]**:
18
- * Fix build error
19
-
20
- **[0.0.1 - 2024-04-09]**:
21
- * Initial setup