@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.
@@ -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
@@ -1,4 +1,5 @@
1
1
  export * from './interfaces/index';
2
+ export * from './interfaces/twpdeu';
2
3
  export * from './utils/hasRequiredPrivacyCookies';
3
4
  export * from './services/dataEnrichment';
4
5
  export * from './components/DESelect';
@@ -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
- export declare const getAttributes: ({ fieldName }: {
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<any>;
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
- if (submit && selected) {
499
- if (process.env.NODE_ENV !== "production") {
500
- console.error('push not implemented', selected, source);
501
- }
502
- onFinished({
503
- isFinished: true,
504
- isError: false
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
- if (submit && selected) {
492
- if (process.env.NODE_ENV !== "production") {
493
- console.error('push not implemented', selected, source);
494
- }
495
- onFinished({
496
- isFinished: true,
497
- isError: false
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
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.0",
2
+ "version": "0.1.1-canary.1",
3
3
  "license": "UNLICENSED",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
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