@washingtonpost/subs-de-inputs 0.1.0 → 0.1.1-canary.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/DESelect/index.d.ts +0 -5
- package/dist/index.d.ts +1 -0
- package/dist/interfaces/index.d.ts +6 -0
- package/dist/interfaces/twpdeu.d.ts +11 -0
- package/dist/services/dataEnrichment.d.ts +17 -2
- package/dist/subs-de-inputs.cjs.development.js +117 -10
- package/dist/subs-de-inputs.cjs.development.js.map +1 -1
- package/dist/subs-de-inputs.cjs.production.min.js +1 -1
- package/dist/subs-de-inputs.cjs.production.min.js.map +1 -1
- package/dist/subs-de-inputs.esm.js +116 -11
- package/dist/subs-de-inputs.esm.js.map +1 -1
- package/package.json +1 -1
- package/CHANGELOG.md +0 -14
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Attribute, AttributeValue } from '../../interfaces';
|
|
3
|
-
import { SubsWindow } from '@washingtonpost/subs-sdk';
|
|
4
|
-
declare global {
|
|
5
|
-
interface Window extends SubsWindow {
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
3
|
interface DESelectProps {
|
|
9
4
|
source: string;
|
|
10
5
|
fieldName: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -23,6 +23,10 @@ export declare type Attribute = {
|
|
|
23
23
|
export declare const AttributesState: {
|
|
24
24
|
readonly SUCCESS: "100";
|
|
25
25
|
};
|
|
26
|
+
export declare const IngestType: {
|
|
27
|
+
readonly EXPLICIT: "explicit";
|
|
28
|
+
readonly IMPLICIT: "implicit";
|
|
29
|
+
};
|
|
26
30
|
export declare const IngestResponseState: {
|
|
27
31
|
readonly SUCCESS: "100";
|
|
28
32
|
readonly SYSTEM_ERROR: "101";
|
|
@@ -31,4 +35,6 @@ export declare const IngestResponseState: {
|
|
|
31
35
|
readonly INVALID_DATA: "104";
|
|
32
36
|
readonly INVALID_ATTRIBUTE_DEFINITION: "105";
|
|
33
37
|
readonly INVALID_META_DEFINITION: "106";
|
|
38
|
+
readonly UNAUTHENTICATED: "107";
|
|
39
|
+
readonly MISMATCHED_IDENTIFIER: "108";
|
|
34
40
|
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { getAttributes, ingest } from '../services/dataEnrichment';
|
|
2
|
+
export declare type TWPDEU = {
|
|
3
|
+
getFieldConfigs: typeof getAttributes;
|
|
4
|
+
push: typeof ingest;
|
|
5
|
+
version: string;
|
|
6
|
+
};
|
|
7
|
+
declare global {
|
|
8
|
+
interface Window {
|
|
9
|
+
__twpdeu?: TWPDEU;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
import { ResponseStatus } from '@washingtonpost/subs-sdk';
|
|
2
|
+
import { Attribute, IngestResponseState, IngestType } from '../interfaces';
|
|
3
|
+
export declare const getAttributes: GetAttributesType;
|
|
4
|
+
declare type GetAttributesType = ({ fieldName, }: {
|
|
2
5
|
fieldName: string;
|
|
3
|
-
}) => Promise<
|
|
6
|
+
}) => Promise<Attribute[]>;
|
|
7
|
+
export declare const ingest: IngestType;
|
|
8
|
+
declare type IngestType = ({ submitData: { fieldName, value }, source, }: {
|
|
9
|
+
submitData: {
|
|
10
|
+
fieldName: string;
|
|
11
|
+
value: string;
|
|
12
|
+
};
|
|
13
|
+
source: string;
|
|
14
|
+
}) => Promise<{
|
|
15
|
+
status: ResponseStatus;
|
|
16
|
+
state: (typeof IngestResponseState)[keyof typeof IngestResponseState];
|
|
17
|
+
} | null>;
|
|
18
|
+
export {};
|
|
@@ -16,6 +16,10 @@ var CollectionBehaviors = {
|
|
|
16
16
|
var AttributesState = {
|
|
17
17
|
SUCCESS: '100'
|
|
18
18
|
};
|
|
19
|
+
var IngestType = {
|
|
20
|
+
EXPLICIT: 'explicit',
|
|
21
|
+
IMPLICIT: 'implicit'
|
|
22
|
+
};
|
|
19
23
|
var IngestResponseState = {
|
|
20
24
|
SUCCESS: '100',
|
|
21
25
|
SYSTEM_ERROR: '101',
|
|
@@ -23,7 +27,9 @@ var IngestResponseState = {
|
|
|
23
27
|
INVALID_IDENTIFIER: '103',
|
|
24
28
|
INVALID_DATA: '104',
|
|
25
29
|
INVALID_ATTRIBUTE_DEFINITION: '105',
|
|
26
|
-
INVALID_META_DEFINITION: '106'
|
|
30
|
+
INVALID_META_DEFINITION: '106',
|
|
31
|
+
UNAUTHENTICATED: '107',
|
|
32
|
+
MISMATCHED_IDENTIFIER: '108'
|
|
27
33
|
};
|
|
28
34
|
|
|
29
35
|
var hasRequiredPrivacyCookies = function hasRequiredPrivacyCookies() {
|
|
@@ -439,6 +445,84 @@ var getAttributes = /*#__PURE__*/function () {
|
|
|
439
445
|
return _ref2.apply(this, arguments);
|
|
440
446
|
};
|
|
441
447
|
}();
|
|
448
|
+
var ingest = /*#__PURE__*/function () {
|
|
449
|
+
var _ref4 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref3) {
|
|
450
|
+
var _ref3$submitData, fieldName, value, source, url, wapo_login_id, attributeInfo, jucid, ga, payload, response, json;
|
|
451
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
452
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
453
|
+
case 0:
|
|
454
|
+
_ref3$submitData = _ref3.submitData, fieldName = _ref3$submitData.fieldName, value = _ref3$submitData.value, source = _ref3.source;
|
|
455
|
+
url = base + "/ingest";
|
|
456
|
+
wapo_login_id = subsSdk.getCookie('wapo_login_id');
|
|
457
|
+
if (hasRequiredPrivacyCookies()) {
|
|
458
|
+
_context2.next = 5;
|
|
459
|
+
break;
|
|
460
|
+
}
|
|
461
|
+
throw new Error('does not satisfy cookie check');
|
|
462
|
+
case 5:
|
|
463
|
+
attributeInfo = attributesCache[fieldName];
|
|
464
|
+
if (attributeInfo) {
|
|
465
|
+
_context2.next = 10;
|
|
466
|
+
break;
|
|
467
|
+
}
|
|
468
|
+
_context2.next = 9;
|
|
469
|
+
return getAttributes({
|
|
470
|
+
fieldName: fieldName
|
|
471
|
+
});
|
|
472
|
+
case 9:
|
|
473
|
+
attributeInfo = _context2.sent;
|
|
474
|
+
case 10:
|
|
475
|
+
if (!(attributeInfo[0] && attributeInfo[0].name === fieldName && attributeInfo[0].collection_behavior === CollectionBehaviors.DO_NOT_COLLECT)) {
|
|
476
|
+
_context2.next = 12;
|
|
477
|
+
break;
|
|
478
|
+
}
|
|
479
|
+
throw new Error('do not collect');
|
|
480
|
+
case 12:
|
|
481
|
+
jucid = localStorage.getItem('uuid');
|
|
482
|
+
ga = subsSdk.getCookie('_ga');
|
|
483
|
+
payload = {
|
|
484
|
+
jucid: jucid,
|
|
485
|
+
ga: ga,
|
|
486
|
+
type: IngestType.EXPLICIT,
|
|
487
|
+
wapo_login_id: wapo_login_id,
|
|
488
|
+
data: {
|
|
489
|
+
fieldName: fieldName,
|
|
490
|
+
value: value
|
|
491
|
+
},
|
|
492
|
+
metadata: {
|
|
493
|
+
source: source
|
|
494
|
+
}
|
|
495
|
+
};
|
|
496
|
+
_context2.prev = 15;
|
|
497
|
+
_context2.next = 18;
|
|
498
|
+
return fetch(url, {
|
|
499
|
+
method: 'POST',
|
|
500
|
+
credentials: 'include',
|
|
501
|
+
headers: subsSdk.JSON_HEADERS,
|
|
502
|
+
body: JSON.stringify(payload)
|
|
503
|
+
});
|
|
504
|
+
case 18:
|
|
505
|
+
response = _context2.sent;
|
|
506
|
+
_context2.next = 21;
|
|
507
|
+
return response.json();
|
|
508
|
+
case 21:
|
|
509
|
+
json = _context2.sent;
|
|
510
|
+
return _context2.abrupt("return", json);
|
|
511
|
+
case 25:
|
|
512
|
+
_context2.prev = 25;
|
|
513
|
+
_context2.t0 = _context2["catch"](15);
|
|
514
|
+
console.debug(_context2.t0);
|
|
515
|
+
return _context2.abrupt("return", null);
|
|
516
|
+
case 29:
|
|
517
|
+
case "end":
|
|
518
|
+
return _context2.stop();
|
|
519
|
+
}
|
|
520
|
+
}, _callee2, null, [[15, 25]]);
|
|
521
|
+
}));
|
|
522
|
+
return function ingest(_x2) {
|
|
523
|
+
return _ref4.apply(this, arguments);
|
|
524
|
+
};
|
|
525
|
+
}();
|
|
442
526
|
|
|
443
527
|
var DESelect = function DESelect(_ref) {
|
|
444
528
|
var source = _ref.source,
|
|
@@ -495,15 +579,36 @@ var DESelect = function DESelect(_ref) {
|
|
|
495
579
|
}
|
|
496
580
|
}, []);
|
|
497
581
|
React.useEffect(function () {
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
582
|
+
_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
583
|
+
var result, isError;
|
|
584
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
585
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
586
|
+
case 0:
|
|
587
|
+
if (!(submit && selected)) {
|
|
588
|
+
_context2.next = 6;
|
|
589
|
+
break;
|
|
590
|
+
}
|
|
591
|
+
_context2.next = 3;
|
|
592
|
+
return ingest({
|
|
593
|
+
submitData: {
|
|
594
|
+
fieldName: fieldName,
|
|
595
|
+
value: selected
|
|
596
|
+
},
|
|
597
|
+
source: source
|
|
598
|
+
});
|
|
599
|
+
case 3:
|
|
600
|
+
result = _context2.sent;
|
|
601
|
+
isError = result ? result.status !== subsSdk.ResponseStatus.SUCCESS : true;
|
|
602
|
+
onFinished({
|
|
603
|
+
isFinished: true,
|
|
604
|
+
isError: isError
|
|
605
|
+
});
|
|
606
|
+
case 6:
|
|
607
|
+
case "end":
|
|
608
|
+
return _context2.stop();
|
|
609
|
+
}
|
|
610
|
+
}, _callee2);
|
|
611
|
+
}))();
|
|
507
612
|
}, [submit, selected]);
|
|
508
613
|
if (!(children || config)) {
|
|
509
614
|
return React__default.createElement("span", null, "loading");
|
|
@@ -558,6 +663,8 @@ exports.AttributesState = AttributesState;
|
|
|
558
663
|
exports.CollectionBehaviors = CollectionBehaviors;
|
|
559
664
|
exports.DESelect = DESelect;
|
|
560
665
|
exports.IngestResponseState = IngestResponseState;
|
|
666
|
+
exports.IngestType = IngestType;
|
|
561
667
|
exports.getAttributes = getAttributes;
|
|
562
668
|
exports.hasRequiredPrivacyCookies = hasRequiredPrivacyCookies;
|
|
669
|
+
exports.ingest = ingest;
|
|
563
670
|
//# sourceMappingURL=subs-de-inputs.cjs.development.js.map
|
|
@@ -1 +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 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 { Attribute, AttributeValue } from '../../interfaces';\nimport { SubsWindow } from '@washingtonpost/subs-sdk';\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 ? 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","IngestResponseState","SYSTEM_ERROR","INVALID_TYPE","INVALID_IDENTIFIER","INVALID_DATA","INVALID_ATTRIBUTE_DEFINITION","INVALID_META_DEFINITION","hasRequiredPrivacyCookies","window","wp_usp","getCookie","countryCode","_WPGeo","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","process","env","NODE_ENV","error","isFinished","isError","React","defaultValueProp","disabledProp","values","sort","a","b","order","filter","value","archived","SelectWrapper","Select","Root","_extends","onValueChange","e","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
|
+
{"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} 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 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: IngestType.EXPLICIT,\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 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 } from '../../interfaces';\nimport { getAttributes, ingest } from '../../services/dataEnrichment';\nimport { ResponseStatus } from '@washingtonpost/subs-sdk';\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 (async () => {\n if (submit && selected) {\n // TODO: Switch to window.__twpdeu.push\n // TODO: Log to GA\n // TODO: Differentiate between explicit and implicit inputs?\n const result = await ingest({\n submitData: { fieldName, value: selected },\n source,\n });\n const isError = result\n ? result.status !== ResponseStatus.SUCCESS\n : true;\n\n onFinished({\n isFinished: true,\n isError,\n });\n }\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","hasRequiredPrivacyCookies","window","wp_usp","getCookie","countryCode","_WPGeo","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","ingest","_ref4","_callee2","_ref3","_ref3$submitData","value","source","wapo_login_id","attributeInfo","jucid","ga","payload","response","_callee2$","_context2","submitData","Error","name","collection_behavior","localStorage","getItem","type","metadata","method","body","JSON","stringify","_x2","DESelect","label","dataDictionaryConfig","defaultValue","disabled","submit","_ref$onChange","onChange","_ref$onFinished","onFinished","_ref$valuesFilter","valuesFilter","children","_useState","useState","config","setConfig","_useState2","selected","setSelected","useEffect","process","env","NODE_ENV","result","isError","isFinished","React","defaultValueProp","disabledProp","values","sort","a","b","order","filter","archived","SelectWrapper","Select","Root","_extends","onValueChange","e","Trigger","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 t,e=require("@washingtonpost/subs-sdk"),r=require("react"),n=(t=r)&&"object"==typeof t&&"default"in t?t.default:t,o=require("@washingtonpost/wpds-ui-kit");function i(){i=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",u=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function s(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(t){s=function(t,e,r){return t[e]=r}}function l(t,e,r,o){var i=Object.create((e&&e.prototype instanceof p?e:p).prototype),a=new _(o||[]);return n(i,"_invoke",{value:x(t,r,a)}),i}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=l;var h={};function p(){}function d(){}function v(){}var y={};s(y,a,(function(){return this}));var g=Object.getPrototypeOf,m=g&&g(g(N([])));m&&m!==e&&r.call(m,a)&&(y=m);var b=v.prototype=p.prototype=Object.create(y);function E(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){var o;n(this,"_invoke",{value:function(n,i){function a(){return new e((function(o,a){!function n(o,i,a,u){var c=f(t[o],t,i);if("throw"!==c.type){var s=c.arg,l=s.value;return l&&"object"==typeof l&&r.call(l,"__await")?e.resolve(l.__await).then((function(t){n("next",t,a,u)}),(function(t){n("throw",t,a,u)})):e.resolve(l).then((function(t){s.value=t,a(s)}),(function(t){return n("throw",t,a,u)}))}u(c.arg)}(n,i,o,a)}))}return o=o?o.then(a,a):a()}})}function x(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return{value:void 0,done:!0}}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var u=L(a,r);if(u){if(u===h)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=f(t,e,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===h)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function L(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,L(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),h;var o=f(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,h;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,h):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,h)}function S(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 O(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function _(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(S,this),this.reset(!0)}function N(t){if(t){var e=t[a];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:I}}function I(){return{value:void 0,done:!0}}return d.prototype=v,n(b,"constructor",{value:v,configurable:!0}),n(v,"constructor",{value:d,configurable:!0}),d.displayName=s(v,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===d||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,v):(t.__proto__=v,s(t,c,"GeneratorFunction")),t.prototype=Object.create(b),t},t.awrap=function(t){return{__await:t}},E(w.prototype),s(w.prototype,u,(function(){return this})),t.AsyncIterator=w,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new w(l(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},E(b),s(b,c,"Generator"),s(b,a,(function(){return this})),s(b,"toString",(function(){return"[object Generator]"})),t.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}},t.values=N,_.prototype={constructor:_,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(O),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var u=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(u&&c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;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,h):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),h},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),O(r),h}},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;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:N(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),h}},t}function a(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 u(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function u(t){a(i,n,o,u,c,"next",t)}function c(t){a(i,n,o,u,c,"throw",t)}u(void 0)}))}}function c(){return(c=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}).apply(this,arguments)}var s=e.ENDPOINTS.base+"/de/v1",l={},f=function(){var t=u(i().mark((function t(r){var n,o,a,u,c,f;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!l[n=r.fieldName]){t.next=3;break}return t.abrupt("return",l[n]);case 3:return o=[n],t.prev=4,(a=new URL(s+"/attributes")).searchParams.set("attributes",o.join(",")),t.next=9,fetch(a.toString(),{credentials:"include",headers:e.JSON_HEADERS});case 9:return u=t.sent,t.next=12,u.json();case 12:if(c=t.sent,!u.ok||c.status!==e.ResponseStatus.SUCCESS){t.next=19;break}return l[n]=f=c.attributes||[],t.abrupt("return",f);case 19:return t.abrupt("return",[]);case 20:t.next=26;break;case 22:return t.prev=22,t.t0=t.catch(4),console.debug(t.t0),t.abrupt("return",[]);case 26:case"end":return t.stop()}}),t,null,[[4,22]])})));return function(e){return t.apply(this,arguments)}}(),h=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={COLLECT:"COLLECT",DO_NOT_COLLECT:"DO_NOT_COLLECT"},exports.DESelect=function(t){var e=t.source,a=t.fieldName,s=t.label,l=t.defaultValue,p=t.disabled,d=t.submit,v=t.onChange,y=void 0===v?function(){}:v,g=t.onFinished,m=void 0===g?function(){}:g,b=t.valuesFilter,E=void 0===b?function(){return!0}:b,w=t.children,x=r.useState(t.dataDictionaryConfig),L=x[0],S=x[1],O=r.useState(""),_=O[0],N=O[1];if(r.useEffect((function(){w?"production"!==process.env.NODE_ENV&&console.debug("childen props",w):L||u(i().mark((function t(){var e;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,f({fieldName:a});case 2:e=t.sent,"production"!==process.env.NODE_ENV&&console.debug("config from API",e),S(e[0]);case 5:case"end":return t.stop()}}),t)})))()}),[]),r.useEffect((function(){d&&_&&("production"!==process.env.NODE_ENV&&console.error("push not implemented",_,e),m({isFinished:!0,isError:!1}))}),[d,_]),!w&&!L)return n.createElement("span",null,"loading");var I=l?{defaultValue:l}:{},T=p?{disabled:!0}:{},C=L?L.values.sort((function(t,e){return t.order-e.order})).filter((function(t){return!0!==t.archived})).filter(E):[];return n.createElement(h,null,n.createElement(o.Select.Root,c({onValueChange:function(t){y({value:t}),N(t)}},I,T),w||null,!w&&L&&n.createElement(n.Fragment,null,n.createElement(o.Select.Trigger,{"data-test-id":L.name+"-select-trigger"},n.createElement(o.Select.Label,null,s||L.name),n.createElement(o.Select.Value,null)),n.createElement(o.Select.Content,{css:{zIndex:o.theme.zIndices.page},"data-test-id":L.name+"-select-content"},C.map((function(t){return n.createElement(o.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=f,exports.hasRequiredPrivacyCookies=function(){var t;if("undefined"==typeof window)return!1;var r=e.getCookie("wp_usp"),n=null==(t=e.WPGeo())?void 0:t.country_code;return!(!r||"US"!==n)};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t,e=require("@washingtonpost/subs-sdk"),r=require("react"),n=(t=r)&&"object"==typeof t&&"default"in t?t.default:t,o=require("@washingtonpost/wpds-ui-kit"),i={COLLECT:"COLLECT",DO_NOT_COLLECT:"DO_NOT_COLLECT"},a={EXPLICIT:"explicit",IMPLICIT:"implicit"},c=function(){var t;if("undefined"==typeof window)return!1;var r=e.getCookie("wp_usp"),n=null==(t=e.WPGeo())?void 0:t.country_code;return!(!r||"US"!==n)};function u(){u=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function s(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(t){s=function(t,e,r){return t[e]=r}}function l(t,e,r,o){var i=Object.create((e&&e.prototype instanceof p?e:p).prototype),a=new I(o||[]);return n(i,"_invoke",{value:x(t,r,a)}),i}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=l;var h={};function p(){}function d(){}function v(){}var y={};s(y,i,(function(){return this}));var g=Object.getPrototypeOf,m=g&&g(g(N([])));m&&m!==e&&r.call(m,i)&&(y=m);var b=v.prototype=p.prototype=Object.create(y);function E(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){var o;n(this,"_invoke",{value:function(n,i){function a(){return new e((function(o,a){!function n(o,i,a,c){var u=f(t[o],t,i);if("throw"!==u.type){var s=u.arg,l=s.value;return l&&"object"==typeof l&&r.call(l,"__await")?e.resolve(l.__await).then((function(t){n("next",t,a,c)}),(function(t){n("throw",t,a,c)})):e.resolve(l).then((function(t){s.value=t,a(s)}),(function(t){return n("throw",t,a,c)}))}c(u.arg)}(n,i,o,a)}))}return o=o?o.then(a,a):a()}})}function x(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return{value:void 0,done:!0}}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=L(a,r);if(c){if(c===h)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=f(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===h)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function L(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,L(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),h;var o=f(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,h;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,h):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,h)}function S(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 _(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function I(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(S,this),this.reset(!0)}function N(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:O}}function O(){return{value:void 0,done:!0}}return d.prototype=v,n(b,"constructor",{value:v,configurable:!0}),n(v,"constructor",{value:d,configurable:!0}),d.displayName=s(v,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===d||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,v):(t.__proto__=v,s(t,c,"GeneratorFunction")),t.prototype=Object.create(b),t},t.awrap=function(t){return{__await:t}},E(w.prototype),s(w.prototype,a,(function(){return this})),t.AsyncIterator=w,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new w(l(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},E(b),s(b,c,"Generator"),s(b,i,(function(){return this})),s(b,"toString",(function(){return"[object Generator]"})),t.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}},t.values=N,I.prototype={constructor:I,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(_),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;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,h):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),h},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),_(r),h}},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;_(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:N(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),h}},t}function s(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function l(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){s(i,n,o,a,c,"next",t)}function c(t){s(i,n,o,a,c,"throw",t)}a(void 0)}))}}function f(){return(f=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}).apply(this,arguments)}var h=e.ENDPOINTS.base+"/de/v1",p={},d=function(){var t=l(u().mark((function t(r){var n,o,i,a,c,s;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!p[n=r.fieldName]){t.next=3;break}return t.abrupt("return",p[n]);case 3:return o=[n],t.prev=4,(i=new URL(h+"/attributes")).searchParams.set("attributes",o.join(",")),t.next=9,fetch(i.toString(),{credentials:"include",headers:e.JSON_HEADERS});case 9:return a=t.sent,t.next=12,a.json();case 12:if(c=t.sent,!a.ok||c.status!==e.ResponseStatus.SUCCESS){t.next=19;break}return p[n]=s=c.attributes||[],t.abrupt("return",s);case 19:return t.abrupt("return",[]);case 20:t.next=26;break;case 22:return t.prev=22,t.t0=t.catch(4),console.debug(t.t0),t.abrupt("return",[]);case 26:case"end":return t.stop()}}),t,null,[[4,22]])})));return function(e){return t.apply(this,arguments)}}(),v=function(){var t=l(u().mark((function t(r){var n,o,s,l,f,v,y,g,m,b,E;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(o=(n=r.submitData).fieldName,s=n.value,l=r.source,f=h+"/ingest",v=e.getCookie("wapo_login_id"),c()){t.next=5;break}throw new Error("does not satisfy cookie check");case 5:if(y=p[o]){t.next=10;break}return t.next=9,d({fieldName:o});case 9:y=t.sent;case 10:if(!y[0]||y[0].name!==o||y[0].collection_behavior!==i.DO_NOT_COLLECT){t.next=12;break}throw new Error("do not collect");case 12:return g=localStorage.getItem("uuid"),m=e.getCookie("_ga"),b={jucid:g,ga:m,type:a.EXPLICIT,wapo_login_id:v,data:{fieldName:o,value:s},metadata:{source:l}},t.prev=15,t.next=18,fetch(f,{method:"POST",credentials:"include",headers:e.JSON_HEADERS,body:JSON.stringify(b)});case 18:return E=t.sent,t.next=21,E.json();case 21:return t.abrupt("return",t.sent);case 25:return t.prev=25,t.t0=t.catch(15),console.debug(t.t0),t.abrupt("return",null);case 29:case"end":return t.stop()}}),t,null,[[15,25]])})));return function(e){return t.apply(this,arguments)}}(),y=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=i,exports.DESelect=function(t){var i=t.source,a=t.fieldName,c=t.label,s=t.defaultValue,h=t.disabled,p=t.submit,g=t.onChange,m=void 0===g?function(){}:g,b=t.onFinished,E=void 0===b?function(){}:b,w=t.valuesFilter,x=void 0===w?function(){return!0}:w,L=t.children,S=r.useState(t.dataDictionaryConfig),_=S[0],I=S[1],N=r.useState(""),O=N[0],T=N[1];if(r.useEffect((function(){L?"production"!==process.env.NODE_ENV&&console.debug("childen props",L):_||l(u().mark((function t(){var e;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,d({fieldName:a});case 2:e=t.sent,"production"!==process.env.NODE_ENV&&console.debug("config from API",e),I(e[0]);case 5:case"end":return t.stop()}}),t)})))()}),[]),r.useEffect((function(){l(u().mark((function t(){var r;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!p||!O){t.next=6;break}return t.next=3,v({submitData:{fieldName:a,value:O},source:i});case 3:E({isFinished:!0,isError:!(r=t.sent)||r.status!==e.ResponseStatus.SUCCESS});case 6:case"end":return t.stop()}}),t)})))()}),[p,O]),!L&&!_)return n.createElement("span",null,"loading");var C=s?{defaultValue:s}:{},k=h?{disabled:!0}:{},D=_?_.values.sort((function(t,e){return t.order-e.order})).filter((function(t){return!0!==t.archived})).filter(x):[];return n.createElement(y,null,n.createElement(o.Select.Root,f({onValueChange:function(t){m({value:t}),T(t)}},C,k),L||null,!L&&_&&n.createElement(n.Fragment,null,n.createElement(o.Select.Trigger,{"data-test-id":_.name+"-select-trigger"},n.createElement(o.Select.Label,null,c||_.name),n.createElement(o.Select.Value,null)),n.createElement(o.Select.Content,{css:{zIndex:o.theme.zIndices.page},"data-test-id":_.name+"-select-content"},D.map((function(t){return n.createElement(o.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",UNAUTHENTICATED:"107",MISMATCHED_IDENTIFIER:"108"},exports.IngestType=a,exports.getAttributes=d,exports.hasRequiredPrivacyCookies=c,exports.ingest=v;
|
|
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/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 { Attribute, AttributeValue } from '../../interfaces';\nimport { SubsWindow } from '@washingtonpost/subs-sdk';\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 ? 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","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","arguments","SelectWrapper","styled","boxSizing","display","marginBottom","flexDirection","& button","padding","& *","COLLECT","DO_NOT_COLLECT","source","label","defaultValue","disabled","submit","_ref$onChange","onChange","_ref$onFinished","onFinished","_ref$valuesFilter","valuesFilter","children","_useState","useState","dataDictionaryConfig","config","setConfig","_useState2","selected","setSelected","useEffect","process","env","NODE_ENV","error","isFinished","isError","React","defaultValueProp","disabledProp","values","sort","a","b","order","filter","value","archived","Select","Root","_extends","onValueChange","e","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","window","wp_usp","getCookie","countryCode","_WPGeo","WPGeo","country_code"],"mappings":"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"}
|
|
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} 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 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: IngestType.EXPLICIT,\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 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 } from '../../interfaces';\nimport { getAttributes, ingest } from '../../services/dataEnrichment';\nimport { ResponseStatus } from '@washingtonpost/subs-sdk';\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 (async () => {\n if (submit && selected) {\n // TODO: Switch to window.__twpdeu.push\n // TODO: Log to GA\n // TODO: Differentiate between explicit and implicit inputs?\n const result = await ingest({\n submitData: { fieldName, value: selected },\n source,\n });\n const isError = result\n ? result.status !== ResponseStatus.SUCCESS\n : true;\n\n onFinished({\n isFinished: true,\n isError,\n });\n }\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","_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","arguments","ingest","_ref4","_callee2","_ref3","_ref3$submitData","value","source","wapo_login_id","attributeInfo","jucid","ga","payload","response","_context2","submitData","Error","name","collection_behavior","localStorage","getItem","type","metadata","method","body","JSON","stringify","_x2","SelectWrapper","styled","boxSizing","display","marginBottom","flexDirection","& button","padding","& *","label","defaultValue","disabled","submit","_ref$onChange","onChange","_ref$onFinished","onFinished","_ref$valuesFilter","valuesFilter","children","_useState","useState","dataDictionaryConfig","config","setConfig","_useState2","selected","setSelected","useEffect","process","env","NODE_ENV","result","isFinished","isError","React","defaultValueProp","disabledProp","values","sort","a","b","order","filter","archived","Select","Root","_extends","onValueChange","e","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"],"mappings":"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"}
|
|
@@ -9,6 +9,10 @@ var CollectionBehaviors = {
|
|
|
9
9
|
var AttributesState = {
|
|
10
10
|
SUCCESS: '100'
|
|
11
11
|
};
|
|
12
|
+
var IngestType = {
|
|
13
|
+
EXPLICIT: 'explicit',
|
|
14
|
+
IMPLICIT: 'implicit'
|
|
15
|
+
};
|
|
12
16
|
var IngestResponseState = {
|
|
13
17
|
SUCCESS: '100',
|
|
14
18
|
SYSTEM_ERROR: '101',
|
|
@@ -16,7 +20,9 @@ var IngestResponseState = {
|
|
|
16
20
|
INVALID_IDENTIFIER: '103',
|
|
17
21
|
INVALID_DATA: '104',
|
|
18
22
|
INVALID_ATTRIBUTE_DEFINITION: '105',
|
|
19
|
-
INVALID_META_DEFINITION: '106'
|
|
23
|
+
INVALID_META_DEFINITION: '106',
|
|
24
|
+
UNAUTHENTICATED: '107',
|
|
25
|
+
MISMATCHED_IDENTIFIER: '108'
|
|
20
26
|
};
|
|
21
27
|
|
|
22
28
|
var hasRequiredPrivacyCookies = function hasRequiredPrivacyCookies() {
|
|
@@ -432,6 +438,84 @@ var getAttributes = /*#__PURE__*/function () {
|
|
|
432
438
|
return _ref2.apply(this, arguments);
|
|
433
439
|
};
|
|
434
440
|
}();
|
|
441
|
+
var ingest = /*#__PURE__*/function () {
|
|
442
|
+
var _ref4 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref3) {
|
|
443
|
+
var _ref3$submitData, fieldName, value, source, url, wapo_login_id, attributeInfo, jucid, ga, payload, response, json;
|
|
444
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
445
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
446
|
+
case 0:
|
|
447
|
+
_ref3$submitData = _ref3.submitData, fieldName = _ref3$submitData.fieldName, value = _ref3$submitData.value, source = _ref3.source;
|
|
448
|
+
url = base + "/ingest";
|
|
449
|
+
wapo_login_id = getCookie('wapo_login_id');
|
|
450
|
+
if (hasRequiredPrivacyCookies()) {
|
|
451
|
+
_context2.next = 5;
|
|
452
|
+
break;
|
|
453
|
+
}
|
|
454
|
+
throw new Error('does not satisfy cookie check');
|
|
455
|
+
case 5:
|
|
456
|
+
attributeInfo = attributesCache[fieldName];
|
|
457
|
+
if (attributeInfo) {
|
|
458
|
+
_context2.next = 10;
|
|
459
|
+
break;
|
|
460
|
+
}
|
|
461
|
+
_context2.next = 9;
|
|
462
|
+
return getAttributes({
|
|
463
|
+
fieldName: fieldName
|
|
464
|
+
});
|
|
465
|
+
case 9:
|
|
466
|
+
attributeInfo = _context2.sent;
|
|
467
|
+
case 10:
|
|
468
|
+
if (!(attributeInfo[0] && attributeInfo[0].name === fieldName && attributeInfo[0].collection_behavior === CollectionBehaviors.DO_NOT_COLLECT)) {
|
|
469
|
+
_context2.next = 12;
|
|
470
|
+
break;
|
|
471
|
+
}
|
|
472
|
+
throw new Error('do not collect');
|
|
473
|
+
case 12:
|
|
474
|
+
jucid = localStorage.getItem('uuid');
|
|
475
|
+
ga = getCookie('_ga');
|
|
476
|
+
payload = {
|
|
477
|
+
jucid: jucid,
|
|
478
|
+
ga: ga,
|
|
479
|
+
type: IngestType.EXPLICIT,
|
|
480
|
+
wapo_login_id: wapo_login_id,
|
|
481
|
+
data: {
|
|
482
|
+
fieldName: fieldName,
|
|
483
|
+
value: value
|
|
484
|
+
},
|
|
485
|
+
metadata: {
|
|
486
|
+
source: source
|
|
487
|
+
}
|
|
488
|
+
};
|
|
489
|
+
_context2.prev = 15;
|
|
490
|
+
_context2.next = 18;
|
|
491
|
+
return fetch(url, {
|
|
492
|
+
method: 'POST',
|
|
493
|
+
credentials: 'include',
|
|
494
|
+
headers: JSON_HEADERS,
|
|
495
|
+
body: JSON.stringify(payload)
|
|
496
|
+
});
|
|
497
|
+
case 18:
|
|
498
|
+
response = _context2.sent;
|
|
499
|
+
_context2.next = 21;
|
|
500
|
+
return response.json();
|
|
501
|
+
case 21:
|
|
502
|
+
json = _context2.sent;
|
|
503
|
+
return _context2.abrupt("return", json);
|
|
504
|
+
case 25:
|
|
505
|
+
_context2.prev = 25;
|
|
506
|
+
_context2.t0 = _context2["catch"](15);
|
|
507
|
+
console.debug(_context2.t0);
|
|
508
|
+
return _context2.abrupt("return", null);
|
|
509
|
+
case 29:
|
|
510
|
+
case "end":
|
|
511
|
+
return _context2.stop();
|
|
512
|
+
}
|
|
513
|
+
}, _callee2, null, [[15, 25]]);
|
|
514
|
+
}));
|
|
515
|
+
return function ingest(_x2) {
|
|
516
|
+
return _ref4.apply(this, arguments);
|
|
517
|
+
};
|
|
518
|
+
}();
|
|
435
519
|
|
|
436
520
|
var DESelect = function DESelect(_ref) {
|
|
437
521
|
var source = _ref.source,
|
|
@@ -488,15 +572,36 @@ var DESelect = function DESelect(_ref) {
|
|
|
488
572
|
}
|
|
489
573
|
}, []);
|
|
490
574
|
useEffect(function () {
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
575
|
+
_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
576
|
+
var result, isError;
|
|
577
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
578
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
579
|
+
case 0:
|
|
580
|
+
if (!(submit && selected)) {
|
|
581
|
+
_context2.next = 6;
|
|
582
|
+
break;
|
|
583
|
+
}
|
|
584
|
+
_context2.next = 3;
|
|
585
|
+
return ingest({
|
|
586
|
+
submitData: {
|
|
587
|
+
fieldName: fieldName,
|
|
588
|
+
value: selected
|
|
589
|
+
},
|
|
590
|
+
source: source
|
|
591
|
+
});
|
|
592
|
+
case 3:
|
|
593
|
+
result = _context2.sent;
|
|
594
|
+
isError = result ? result.status !== ResponseStatus.SUCCESS : true;
|
|
595
|
+
onFinished({
|
|
596
|
+
isFinished: true,
|
|
597
|
+
isError: isError
|
|
598
|
+
});
|
|
599
|
+
case 6:
|
|
600
|
+
case "end":
|
|
601
|
+
return _context2.stop();
|
|
602
|
+
}
|
|
603
|
+
}, _callee2);
|
|
604
|
+
}))();
|
|
500
605
|
}, [submit, selected]);
|
|
501
606
|
if (!(children || config)) {
|
|
502
607
|
return React.createElement("span", null, "loading");
|
|
@@ -547,5 +652,5 @@ var SelectWrapper = /*#__PURE__*/styled('div', {
|
|
|
547
652
|
}
|
|
548
653
|
});
|
|
549
654
|
|
|
550
|
-
export { AttributesState, CollectionBehaviors, DESelect, IngestResponseState, getAttributes, hasRequiredPrivacyCookies };
|
|
655
|
+
export { AttributesState, CollectionBehaviors, DESelect, IngestResponseState, IngestType, getAttributes, hasRequiredPrivacyCookies, ingest };
|
|
551
656
|
//# sourceMappingURL=subs-de-inputs.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subs-de-inputs.esm.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 { Attribute, AttributeValue } from '../../interfaces';\nimport { SubsWindow } from '@washingtonpost/subs-sdk';\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 ? 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","IngestResponseState","SYSTEM_ERROR","INVALID_TYPE","INVALID_IDENTIFIER","INVALID_DATA","INVALID_ATTRIBUTE_DEFINITION","INVALID_META_DEFINITION","hasRequiredPrivacyCookies","window","wp_usp","getCookie","countryCode","_WPGeo","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","process","env","NODE_ENV","error","isFinished","isError","React","defaultValueProp","disabledProp","values","sort","a","b","order","filter","value","archived","SelectWrapper","Select","Root","_extends","onValueChange","e","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
|
+
{"version":3,"file":"subs-de-inputs.esm.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} 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 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: IngestType.EXPLICIT,\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 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 } from '../../interfaces';\nimport { getAttributes, ingest } from '../../services/dataEnrichment';\nimport { ResponseStatus } from '@washingtonpost/subs-sdk';\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 (async () => {\n if (submit && selected) {\n // TODO: Switch to window.__twpdeu.push\n // TODO: Log to GA\n // TODO: Differentiate between explicit and implicit inputs?\n const result = await ingest({\n submitData: { fieldName, value: selected },\n source,\n });\n const isError = result\n ? result.status !== ResponseStatus.SUCCESS\n : true;\n\n onFinished({\n isFinished: true,\n isError,\n });\n }\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","hasRequiredPrivacyCookies","window","wp_usp","getCookie","countryCode","_WPGeo","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","ingest","_ref4","_callee2","_ref3","_ref3$submitData","value","source","wapo_login_id","attributeInfo","jucid","ga","payload","response","_callee2$","_context2","submitData","Error","name","collection_behavior","localStorage","getItem","type","metadata","method","body","JSON","stringify","_x2","DESelect","label","dataDictionaryConfig","defaultValue","disabled","submit","_ref$onChange","onChange","_ref$onFinished","onFinished","_ref$valuesFilter","valuesFilter","children","_useState","useState","config","setConfig","_useState2","selected","setSelected","useEffect","process","env","NODE_ENV","result","isError","isFinished","React","defaultValueProp","disabledProp","values","sort","a","b","order","filter","archived","SelectWrapper","Select","Root","_extends","onValueChange","e","Trigger","Label","Value","Content","css","zIndex","theme","zIndices","page","map","Item","key","styled","boxSizing","display","marginBottom","flexDirection","padding"],"mappings":"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"}
|
package/package.json
CHANGED
package/CHANGELOG.md
DELETED
|
@@ -1,14 +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
|
-
|
|
7
|
-
**[0.1.0 - 2024-04-25]**:
|
|
8
|
-
* Add initial `<DESelect />` component
|
|
9
|
-
|
|
10
|
-
**[0.0.2 - 2024-04-24]**:
|
|
11
|
-
* Fix build error
|
|
12
|
-
|
|
13
|
-
**[0.0.1 - 2024-04-09]**:
|
|
14
|
-
* Initial setup
|