@washingtonpost/subs-de-inputs 0.0.1 → 0.0.2
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/CHANGELOG.md +10 -0
- package/dist/components/DEDataSelectProps/index.d.ts +1 -0
- package/dist/index.d.ts +0 -2
- package/dist/interfaces/index.d.ts +28 -61
- package/dist/services/dataEnrichment.d.ts +2 -3
- package/dist/subs-de-inputs.cjs.development.js +67 -436
- 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 +65 -435
- package/dist/subs-de-inputs.esm.js.map +1 -1
- package/dist/utils/getDefaultSubmitData.d.ts +1 -1
- package/package.json +1 -1
- package/dist/components/DataEnrichmentForm/index.d.ts +0 -2
- package/dist/components/Dropdown/index.d.ts +0 -11
- package/dist/services/sendToGA.d.ts +0 -12
|
@@ -1,9 +1,29 @@
|
|
|
1
|
-
import React, { useState, useEffect } from 'react';
|
|
2
|
-
import { Icon, theme, Select, styled } from '@washingtonpost/wpds-ui-kit';
|
|
3
|
-
import { useWindowSize } from '@washingtonpost/subs-hooks';
|
|
4
|
-
import { ChevronDown } from '@washingtonpost/wpds-assets';
|
|
5
1
|
import { getCookie, WPGeo, ENDPOINTS, ResponseStatus } from '@washingtonpost/subs-sdk';
|
|
6
2
|
|
|
3
|
+
var CollectionBehaviors = {
|
|
4
|
+
COLLECT: 'COLLECT',
|
|
5
|
+
DO_NOT_COLLECT: 'DO_NOT_COLLECT'
|
|
6
|
+
};
|
|
7
|
+
var IngestResponseState = {
|
|
8
|
+
SUCCESS: '100',
|
|
9
|
+
SYSTEM_ERROR: '101',
|
|
10
|
+
INVALID_TYPE: '102',
|
|
11
|
+
INVALID_IDENTIFIER: '103',
|
|
12
|
+
INVALID_DATA: '104',
|
|
13
|
+
INVALID_ATTRIBUTE_DEFINITION: '105',
|
|
14
|
+
INVALID_META_DEFINITION: '106'
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
var hasRequiredPrivacyCookies = function hasRequiredPrivacyCookies() {
|
|
18
|
+
var _WPGeo;
|
|
19
|
+
if (typeof window === 'undefined') {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
var wp_usp = getCookie('wp_usp');
|
|
23
|
+
var countryCode = (_WPGeo = WPGeo()) == null ? void 0 : _WPGeo.country_code;
|
|
24
|
+
return !!(wp_usp && countryCode === 'US');
|
|
25
|
+
};
|
|
26
|
+
|
|
7
27
|
function _regeneratorRuntime() {
|
|
8
28
|
_regeneratorRuntime = function () {
|
|
9
29
|
return exports;
|
|
@@ -335,458 +355,68 @@ function _asyncToGenerator(fn) {
|
|
|
335
355
|
});
|
|
336
356
|
};
|
|
337
357
|
}
|
|
338
|
-
function _extends() {
|
|
339
|
-
_extends = Object.assign ? Object.assign.bind() : function (target) {
|
|
340
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
341
|
-
var source = arguments[i];
|
|
342
|
-
for (var key in source) {
|
|
343
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
344
|
-
target[key] = source[key];
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
return target;
|
|
349
|
-
};
|
|
350
|
-
return _extends.apply(this, arguments);
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
var I1pDataInputTypes;
|
|
354
|
-
(function (I1pDataInputTypes) {
|
|
355
|
-
I1pDataInputTypes["DROPDOWN"] = "dropdown";
|
|
356
|
-
})(I1pDataInputTypes || (I1pDataInputTypes = {}));
|
|
357
|
-
var I1pIngestDataTypes;
|
|
358
|
-
(function (I1pIngestDataTypes) {
|
|
359
|
-
I1pIngestDataTypes["JOB_LEVEL"] = "profile_job_level";
|
|
360
|
-
I1pIngestDataTypes["JOB_INDUSTRY"] = "profile_job_industry";
|
|
361
|
-
I1pIngestDataTypes["NY_PERSONAL_GOALS"] = "new_year_personal_goals";
|
|
362
|
-
I1pIngestDataTypes["NY_HOBBIES"] = "new_year_hobbies";
|
|
363
|
-
I1pIngestDataTypes["NY_PROFESSIONAL_GOALS"] = "new_year_professional_goals";
|
|
364
|
-
I1pIngestDataTypes["NY_INDUSTRY"] = "new_year_industry";
|
|
365
|
-
I1pIngestDataTypes["NY_NEWS_LOCATION"] = "new_year_news_location";
|
|
366
|
-
})(I1pIngestDataTypes || (I1pIngestDataTypes = {}));
|
|
367
|
-
var I1pDataIngestTypes;
|
|
368
|
-
(function (I1pDataIngestTypes) {
|
|
369
|
-
I1pDataIngestTypes["EXPLICIT"] = "explicit";
|
|
370
|
-
I1pDataIngestTypes["IMPLICIT"] = "implicit";
|
|
371
|
-
})(I1pDataIngestTypes || (I1pDataIngestTypes = {}));
|
|
372
|
-
var IngestResponseState;
|
|
373
|
-
(function (IngestResponseState) {
|
|
374
|
-
IngestResponseState["SUCCESS"] = "100";
|
|
375
|
-
IngestResponseState["SYSTEM_ERROR"] = "101";
|
|
376
|
-
IngestResponseState["INVALID_TYPE"] = "102";
|
|
377
|
-
IngestResponseState["INVALID_IDENTIFIER"] = "103";
|
|
378
|
-
IngestResponseState["INVALID_DATA"] = "104";
|
|
379
|
-
IngestResponseState["INVALID_ATTRIBUTE_DEFINITION"] = "105";
|
|
380
|
-
IngestResponseState["INVALID_META_DEFINITION"] = "106";
|
|
381
|
-
})(IngestResponseState || (IngestResponseState = {}));
|
|
382
|
-
|
|
383
|
-
var StyledMobileSelect = /*#__PURE__*/styled('select', {
|
|
384
|
-
padding: '12px 16px 12px 6px',
|
|
385
|
-
display: 'flex',
|
|
386
|
-
justifyContent: 'space-between',
|
|
387
|
-
width: '100%',
|
|
388
|
-
backgroundColor: '$secondary',
|
|
389
|
-
color: '$primary',
|
|
390
|
-
fontFamily: '$meta',
|
|
391
|
-
fontSize: '$100',
|
|
392
|
-
fontWeight: '$light',
|
|
393
|
-
lineHeight: '$125',
|
|
394
|
-
paddingBlockRight: '$125',
|
|
395
|
-
textOverflow: 'ellipsis',
|
|
396
|
-
position: 'relative',
|
|
397
|
-
borderColor: 'transparent',
|
|
398
|
-
borderRightWidth: '10px',
|
|
399
|
-
borderRightColor: 'transparent',
|
|
400
|
-
appearance: 'none',
|
|
401
|
-
'-webkit-appearance': 'none',
|
|
402
|
-
'&:disabled': {
|
|
403
|
-
backgroundColor: theme.colors.disabled,
|
|
404
|
-
borderColor: theme.colors.disabled,
|
|
405
|
-
color: theme.colors.onDisabled,
|
|
406
|
-
cursor: 'not-allowed'
|
|
407
|
-
}
|
|
408
|
-
});
|
|
409
|
-
var StyledSelectWrapper = /*#__PURE__*/styled('div', {
|
|
410
|
-
width: '100%',
|
|
411
|
-
maxWidth: '380px',
|
|
412
|
-
borderRadius: '$012',
|
|
413
|
-
borderColor: '$subtle',
|
|
414
|
-
borderStyle: 'solid',
|
|
415
|
-
borderWidth: '1px',
|
|
416
|
-
backgroundColor: '$secondary',
|
|
417
|
-
position: 'relative'
|
|
418
|
-
});
|
|
419
|
-
var StyledMobileOption = /*#__PURE__*/styled('option', {
|
|
420
|
-
fontFamily: 'inherit',
|
|
421
|
-
fontSize: 'inherit',
|
|
422
|
-
color: 'inherit'
|
|
423
|
-
});
|
|
424
|
-
var Dropdown = function Dropdown(_ref) {
|
|
425
|
-
var id = _ref.id,
|
|
426
|
-
label = _ref.label,
|
|
427
|
-
values = _ref.values,
|
|
428
|
-
_ref$required = _ref.required,
|
|
429
|
-
required = _ref$required === void 0 ? false : _ref$required,
|
|
430
|
-
defaultValue = _ref.defaultValue,
|
|
431
|
-
_ref$onChange = _ref.onChange,
|
|
432
|
-
onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange,
|
|
433
|
-
_ref$disabled = _ref.disabled,
|
|
434
|
-
disabled = _ref$disabled === void 0 ? false : _ref$disabled;
|
|
435
|
-
var _useState = useState(),
|
|
436
|
-
answer = _useState[0],
|
|
437
|
-
setAnswer = _useState[1];
|
|
438
|
-
var _useWindowSize = useWindowSize(),
|
|
439
|
-
isMobileSize = _useWindowSize.isMobileSize;
|
|
440
|
-
useEffect(function () {
|
|
441
|
-
if (answer) onChange(answer);
|
|
442
|
-
}, [answer]);
|
|
443
|
-
var defaultValueProp = defaultValue ? {
|
|
444
|
-
defaultValue: defaultValue
|
|
445
|
-
} : {};
|
|
446
|
-
var disabledProp = disabled ? {
|
|
447
|
-
disabled: true
|
|
448
|
-
} : {};
|
|
449
|
-
var defaultValuePropMobile = function defaultValuePropMobile(value) {
|
|
450
|
-
return value === defaultValue ? {
|
|
451
|
-
selected: true
|
|
452
|
-
} : {};
|
|
453
|
-
};
|
|
454
|
-
return isMobileSize ? React.createElement(StyledSelectWrapper, null, React.createElement(StyledMobileSelect, _extends({
|
|
455
|
-
id: "",
|
|
456
|
-
required: required,
|
|
457
|
-
onChange: function onChange(e) {
|
|
458
|
-
return setAnswer(e.target.value);
|
|
459
|
-
},
|
|
460
|
-
placeholder: label
|
|
461
|
-
}, disabledProp), React.createElement("label", null, label), React.createElement(StyledMobileOption, {
|
|
462
|
-
value: "",
|
|
463
|
-
disabled: true,
|
|
464
|
-
selected: true,
|
|
465
|
-
style: {
|
|
466
|
-
color: '#666666'
|
|
467
|
-
}
|
|
468
|
-
}, label), values.map(function (value) {
|
|
469
|
-
return React.createElement(StyledMobileOption, _extends({
|
|
470
|
-
value: value,
|
|
471
|
-
key: value
|
|
472
|
-
}, defaultValuePropMobile(value)), value);
|
|
473
|
-
})), React.createElement(Icon, {
|
|
474
|
-
label: "",
|
|
475
|
-
size: "100",
|
|
476
|
-
fill: theme.colors['gray80'],
|
|
477
|
-
style: {
|
|
478
|
-
pointerEvents: 'none',
|
|
479
|
-
position: 'absolute',
|
|
480
|
-
right: '10px',
|
|
481
|
-
top: '50%',
|
|
482
|
-
transform: 'translateY(-50%)'
|
|
483
|
-
}
|
|
484
|
-
}, React.createElement(ChevronDown, {
|
|
485
|
-
style: {
|
|
486
|
-
position: 'absolute',
|
|
487
|
-
right: '10px'
|
|
488
|
-
}
|
|
489
|
-
}))) : React.createElement(Select.Root, _extends({
|
|
490
|
-
onValueChange: function onValueChange(e) {
|
|
491
|
-
return setAnswer(e);
|
|
492
|
-
},
|
|
493
|
-
required: required
|
|
494
|
-
}, defaultValueProp, disabledProp), React.createElement(Select.Trigger, {
|
|
495
|
-
"data-test-id": id + "-dropdown-label"
|
|
496
|
-
}, React.createElement(Select.Label, null, label), React.createElement(Select.Value, null)), React.createElement(Select.Content, {
|
|
497
|
-
css: {
|
|
498
|
-
zIndex: 8
|
|
499
|
-
},
|
|
500
|
-
"data-test-id": id + "-dropdown-input"
|
|
501
|
-
}, values.map(function (value) {
|
|
502
|
-
return React.createElement(Select.Item, {
|
|
503
|
-
value: value,
|
|
504
|
-
key: value
|
|
505
|
-
}, value);
|
|
506
|
-
})));
|
|
507
|
-
};
|
|
508
|
-
|
|
509
|
-
var hasRequiredPrivacyCookies = function hasRequiredPrivacyCookies() {
|
|
510
|
-
var _WPGeo;
|
|
511
|
-
if (typeof window === 'undefined') {
|
|
512
|
-
return false;
|
|
513
|
-
}
|
|
514
|
-
var wp_usp = getCookie('wp_usp');
|
|
515
|
-
var countryCode = (_WPGeo = WPGeo()) == null ? void 0 : _WPGeo.country_code;
|
|
516
|
-
return !!(wp_usp && countryCode === 'US');
|
|
517
|
-
};
|
|
518
358
|
|
|
519
359
|
var base = ENDPOINTS.base + "/de/v1";
|
|
520
360
|
var JSONHeaders = {
|
|
521
361
|
Accept: 'application/json',
|
|
522
362
|
'Content-Type': 'application/json'
|
|
523
363
|
};
|
|
524
|
-
var
|
|
525
|
-
|
|
526
|
-
|
|
364
|
+
var attributesCache = {};
|
|
365
|
+
var getAttributes = /*#__PURE__*/function () {
|
|
366
|
+
var _ref2 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref) {
|
|
367
|
+
var fieldName, fieldNames, url, data, json, attributes;
|
|
527
368
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
528
369
|
while (1) switch (_context.prev = _context.next) {
|
|
529
370
|
case 0:
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
_context.next = 4;
|
|
371
|
+
fieldName = _ref.fieldName;
|
|
372
|
+
if (!attributesCache[fieldName]) {
|
|
373
|
+
_context.next = 3;
|
|
534
374
|
break;
|
|
535
375
|
}
|
|
536
|
-
|
|
537
|
-
case
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
wapo_login_id: wapo_login_id,
|
|
545
|
-
data: submitData,
|
|
546
|
-
metadata: metadata
|
|
547
|
-
};
|
|
548
|
-
_context.prev = 7;
|
|
549
|
-
_context.next = 10;
|
|
550
|
-
return fetch(url, {
|
|
551
|
-
method: 'POST',
|
|
376
|
+
return _context.abrupt("return", attributesCache[fieldName]);
|
|
377
|
+
case 3:
|
|
378
|
+
fieldNames = [fieldName];
|
|
379
|
+
_context.prev = 4;
|
|
380
|
+
url = new URL(base + "/attributes");
|
|
381
|
+
url.searchParams.set('attributes', fieldNames.join(','));
|
|
382
|
+
_context.next = 9;
|
|
383
|
+
return fetch(url.toString(), {
|
|
552
384
|
credentials: 'include',
|
|
553
|
-
headers: JSONHeaders
|
|
554
|
-
body: JSON.stringify(payload)
|
|
385
|
+
headers: JSONHeaders
|
|
555
386
|
});
|
|
556
|
-
case
|
|
557
|
-
|
|
558
|
-
_context.next =
|
|
559
|
-
return
|
|
560
|
-
case
|
|
387
|
+
case 9:
|
|
388
|
+
data = _context.sent;
|
|
389
|
+
_context.next = 12;
|
|
390
|
+
return data.json();
|
|
391
|
+
case 12:
|
|
561
392
|
json = _context.sent;
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
_context.prev = 17;
|
|
565
|
-
_context.t0 = _context["catch"](7);
|
|
566
|
-
console.debug(_context.t0);
|
|
567
|
-
return _context.abrupt("return", null);
|
|
568
|
-
case 21:
|
|
569
|
-
case "end":
|
|
570
|
-
return _context.stop();
|
|
571
|
-
}
|
|
572
|
-
}, _callee, null, [[7, 17]]);
|
|
573
|
-
}));
|
|
574
|
-
return function ingest(_x, _x2) {
|
|
575
|
-
return _ref.apply(this, arguments);
|
|
576
|
-
};
|
|
577
|
-
}();
|
|
578
|
-
|
|
579
|
-
var sendGAEvent = function sendGAEvent(props) {
|
|
580
|
-
if (typeof window === 'undefined') {
|
|
581
|
-
if (process.env.NODE_ENV !== "production") console.warn('NO WINDOW');
|
|
582
|
-
return;
|
|
583
|
-
}
|
|
584
|
-
// Initialize dataLayer if needed
|
|
585
|
-
window.dataLayer = window.dataLayer || [];
|
|
586
|
-
var eventData = _extends({}, props);
|
|
587
|
-
window.dataLayer.push(eventData);
|
|
588
|
-
};
|
|
589
|
-
var sendToGA = /*#__PURE__*/function () {
|
|
590
|
-
var _ref = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(submitData, metadata) {
|
|
591
|
-
var keysToSubmit;
|
|
592
|
-
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
593
|
-
while (1) switch (_context.prev = _context.next) {
|
|
594
|
-
case 0:
|
|
595
|
-
if (hasRequiredPrivacyCookies()) {
|
|
596
|
-
_context.next = 2;
|
|
393
|
+
if (!(data.ok && json.status === ResponseStatus.SUCCESS)) {
|
|
394
|
+
_context.next = 19;
|
|
597
395
|
break;
|
|
598
396
|
}
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
});
|
|
614
|
-
return _context.abrupt("return", true);
|
|
615
|
-
case 5:
|
|
397
|
+
attributes = json.attributes || [];
|
|
398
|
+
attributesCache[fieldName] = attributes;
|
|
399
|
+
return _context.abrupt("return", attributes);
|
|
400
|
+
case 19:
|
|
401
|
+
return _context.abrupt("return", []);
|
|
402
|
+
case 20:
|
|
403
|
+
_context.next = 26;
|
|
404
|
+
break;
|
|
405
|
+
case 22:
|
|
406
|
+
_context.prev = 22;
|
|
407
|
+
_context.t0 = _context["catch"](4);
|
|
408
|
+
console.debug(_context.t0);
|
|
409
|
+
return _context.abrupt("return", []);
|
|
410
|
+
case 26:
|
|
616
411
|
case "end":
|
|
617
412
|
return _context.stop();
|
|
618
413
|
}
|
|
619
|
-
}, _callee);
|
|
414
|
+
}, _callee, null, [[4, 22]]);
|
|
620
415
|
}));
|
|
621
|
-
return function
|
|
622
|
-
return
|
|
416
|
+
return function getAttributes(_x) {
|
|
417
|
+
return _ref2.apply(this, arguments);
|
|
623
418
|
};
|
|
624
419
|
}();
|
|
625
420
|
|
|
626
|
-
|
|
627
|
-
var defaultSubmitData = {};
|
|
628
|
-
formOptions.forEach(function (formOption) {
|
|
629
|
-
if (formOption.default_value) {
|
|
630
|
-
if (formOption.input_type === I1pDataInputTypes.DROPDOWN && formOption.values) {
|
|
631
|
-
var values = formOption.values.filter(function (value) {
|
|
632
|
-
return value.archived !== true;
|
|
633
|
-
}).map(function (value) {
|
|
634
|
-
return value.name;
|
|
635
|
-
});
|
|
636
|
-
if (values.includes(formOption.default_value)) {
|
|
637
|
-
defaultSubmitData[formOption.id] = [formOption.default_value];
|
|
638
|
-
}
|
|
639
|
-
} else {
|
|
640
|
-
defaultSubmitData[formOption.id] = [formOption.default_value];
|
|
641
|
-
}
|
|
642
|
-
}
|
|
643
|
-
});
|
|
644
|
-
return defaultSubmitData;
|
|
645
|
-
};
|
|
646
|
-
|
|
647
|
-
var DataEnrichmentForm = function DataEnrichmentForm(_ref) {
|
|
648
|
-
var submit = _ref.submit,
|
|
649
|
-
source = _ref.source,
|
|
650
|
-
ingestType = _ref.ingestType,
|
|
651
|
-
_ref$formOptions = _ref.formOptions,
|
|
652
|
-
formOptions = _ref$formOptions === void 0 ? [] : _ref$formOptions,
|
|
653
|
-
_ref$onChange = _ref.onChange,
|
|
654
|
-
onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange,
|
|
655
|
-
_ref$onFinished = _ref.onFinished,
|
|
656
|
-
onFinished = _ref$onFinished === void 0 ? function () {} : _ref$onFinished,
|
|
657
|
-
_ref$handleSubmit = _ref.handleSubmit,
|
|
658
|
-
handleSubmit = _ref$handleSubmit === void 0 ? function () {} : _ref$handleSubmit,
|
|
659
|
-
_ref$disabled = _ref.disabled,
|
|
660
|
-
disabled = _ref$disabled === void 0 ? false : _ref$disabled;
|
|
661
|
-
var _useState = useState(false),
|
|
662
|
-
render = _useState[0],
|
|
663
|
-
setRender = _useState[1];
|
|
664
|
-
var _useState2 = useState(getDefaultSubmitData(formOptions)),
|
|
665
|
-
submitData = _useState2[0],
|
|
666
|
-
setSubmitData = _useState2[1];
|
|
667
|
-
var _useState3 = useState(true),
|
|
668
|
-
missingRequiredFields = _useState3[0],
|
|
669
|
-
setMissingRequiredFields = _useState3[1];
|
|
670
|
-
useEffect(function () {
|
|
671
|
-
if (hasRequiredPrivacyCookies()) {
|
|
672
|
-
setRender(true);
|
|
673
|
-
} else {
|
|
674
|
-
console.error('does not satisfy cookie check');
|
|
675
|
-
onFinished(true, true);
|
|
676
|
-
}
|
|
677
|
-
}, []);
|
|
678
|
-
useEffect(function () {
|
|
679
|
-
// check for required fields that haven't been completed yet
|
|
680
|
-
var missingRequiredFields = formOptions.filter(function (option) {
|
|
681
|
-
if (option.required && option.input_type === I1pDataInputTypes.DROPDOWN && !submitData[option.id]) {
|
|
682
|
-
return true;
|
|
683
|
-
}
|
|
684
|
-
return false;
|
|
685
|
-
});
|
|
686
|
-
setMissingRequiredFields(missingRequiredFields.length > 0);
|
|
687
|
-
onChange(submitData, missingRequiredFields.length === 0);
|
|
688
|
-
}, [JSON.stringify(submitData)]);
|
|
689
|
-
useEffect(function () {
|
|
690
|
-
_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
691
|
-
var result, isError, _result;
|
|
692
|
-
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
693
|
-
while (1) switch (_context.prev = _context.next) {
|
|
694
|
-
case 0:
|
|
695
|
-
if (!submit) {
|
|
696
|
-
_context.next = 17;
|
|
697
|
-
break;
|
|
698
|
-
}
|
|
699
|
-
if (!(Object.keys(submitData).length >= 1)) {
|
|
700
|
-
_context.next = 16;
|
|
701
|
-
break;
|
|
702
|
-
}
|
|
703
|
-
if (!(ingestType === I1pDataIngestTypes.EXPLICIT)) {
|
|
704
|
-
_context.next = 10;
|
|
705
|
-
break;
|
|
706
|
-
}
|
|
707
|
-
_context.next = 5;
|
|
708
|
-
return ingest(submitData, {
|
|
709
|
-
source: source
|
|
710
|
-
});
|
|
711
|
-
case 5:
|
|
712
|
-
result = _context.sent;
|
|
713
|
-
isError = result && result.status !== ResponseStatus.SUCCESS;
|
|
714
|
-
onFinished(true, isError);
|
|
715
|
-
_context.next = 14;
|
|
716
|
-
break;
|
|
717
|
-
case 10:
|
|
718
|
-
_context.next = 12;
|
|
719
|
-
return sendToGA(submitData, {
|
|
720
|
-
source: source
|
|
721
|
-
});
|
|
722
|
-
case 12:
|
|
723
|
-
_result = _context.sent;
|
|
724
|
-
onFinished(true, _result);
|
|
725
|
-
case 14:
|
|
726
|
-
_context.next = 17;
|
|
727
|
-
break;
|
|
728
|
-
case 16:
|
|
729
|
-
onFinished(true, false);
|
|
730
|
-
case 17:
|
|
731
|
-
case "end":
|
|
732
|
-
return _context.stop();
|
|
733
|
-
}
|
|
734
|
-
}, _callee);
|
|
735
|
-
}))();
|
|
736
|
-
}, [submit]);
|
|
737
|
-
if (!render) return React.createElement(React.Fragment, null);
|
|
738
|
-
return React.createElement("form", {
|
|
739
|
-
method: "post",
|
|
740
|
-
onSubmit: function onSubmit(e) {
|
|
741
|
-
e.preventDefault();
|
|
742
|
-
handleSubmit(e);
|
|
743
|
-
}
|
|
744
|
-
}, formOptions.map(function (formOption) {
|
|
745
|
-
if (formOption.input_type === I1pDataInputTypes.DROPDOWN && formOption.values) {
|
|
746
|
-
// sort and filter out archived values
|
|
747
|
-
var values = formOption.values.sort(function (a, b) {
|
|
748
|
-
return a.order - b.order;
|
|
749
|
-
}).filter(function (value) {
|
|
750
|
-
return value.archived !== true;
|
|
751
|
-
});
|
|
752
|
-
return React.createElement(OptionWrapper, {
|
|
753
|
-
"data-private": true,
|
|
754
|
-
key: formOption.id
|
|
755
|
-
}, React.createElement(Dropdown, {
|
|
756
|
-
id: formOption.id,
|
|
757
|
-
label: formOption.input_label,
|
|
758
|
-
values: values.map(function (value) {
|
|
759
|
-
return value.name;
|
|
760
|
-
}),
|
|
761
|
-
required: formOption.required,
|
|
762
|
-
defaultValue: formOption.default_value,
|
|
763
|
-
onChange: function onChange(value) {
|
|
764
|
-
var _extends2;
|
|
765
|
-
setSubmitData(_extends({}, submitData, (_extends2 = {}, _extends2[formOption.id] = [value], _extends2)));
|
|
766
|
-
},
|
|
767
|
-
disabled: disabled
|
|
768
|
-
}));
|
|
769
|
-
}
|
|
770
|
-
return null;
|
|
771
|
-
}), React.createElement("input", {
|
|
772
|
-
type: "submit",
|
|
773
|
-
hidden: true,
|
|
774
|
-
disabled: missingRequiredFields || disabled,
|
|
775
|
-
"data-qa": "1p-data-inputs-submit"
|
|
776
|
-
}));
|
|
777
|
-
};
|
|
778
|
-
var OptionWrapper = /*#__PURE__*/styled('div', {
|
|
779
|
-
boxSizing: 'border-box',
|
|
780
|
-
display: 'flex',
|
|
781
|
-
marginBottom: '$100',
|
|
782
|
-
flexDirection: 'column',
|
|
783
|
-
'& button': {
|
|
784
|
-
padding: '1px 6px'
|
|
785
|
-
},
|
|
786
|
-
'& *': {
|
|
787
|
-
boxSizing: 'border-box'
|
|
788
|
-
}
|
|
789
|
-
});
|
|
790
|
-
|
|
791
|
-
export { DataEnrichmentForm, I1pDataIngestTypes, I1pDataInputTypes, I1pIngestDataTypes, IngestResponseState, hasRequiredPrivacyCookies, ingest, sendToGA };
|
|
421
|
+
export { CollectionBehaviors, IngestResponseState, getAttributes, hasRequiredPrivacyCookies };
|
|
792
422
|
//# sourceMappingURL=subs-de-inputs.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subs-de-inputs.esm.js","sources":["../src/interfaces/index.ts","../src/components/Dropdown/index.tsx","../src/utils/hasRequiredPrivacyCookies.ts","../src/services/dataEnrichment.ts","../src/services/sendToGA.ts","../src/utils/getDefaultSubmitData.ts","../src/components/DataEnrichmentForm/index.tsx"],"sourcesContent":["import { FormEventHandler } from 'react';\n\nexport enum I1pDataInputTypes {\n DROPDOWN = 'dropdown',\n}\n\nexport enum I1pIngestDataTypes {\n JOB_LEVEL = 'profile_job_level',\n JOB_INDUSTRY = 'profile_job_industry',\n NY_PERSONAL_GOALS = 'new_year_personal_goals',\n NY_HOBBIES = 'new_year_hobbies',\n NY_PROFESSIONAL_GOALS = 'new_year_professional_goals',\n NY_INDUSTRY = 'new_year_industry',\n NY_NEWS_LOCATION = 'new_year_news_location',\n}\n\nexport interface I1pDataInputValue {\n archived: boolean;\n name: string;\n order: number;\n date_created?: string;\n last_modified_date?: string;\n}\n\nexport interface I1pDataInputProps {\n id: I1pIngestDataTypes;\n input_label: string;\n input_prompt?: string;\n input_type: I1pDataInputTypes;\n required: boolean;\n default_value?: string;\n values?: Array<I1pDataInputValue>;\n}\n\nexport interface I1pDataFormSubmitData {\n [key: string]: string[];\n}\n\nexport enum I1pDataIngestTypes {\n EXPLICIT = 'explicit',\n IMPLICIT = 'implicit',\n}\n\nexport interface I1pDataFormProps {\n source: string;\n submit?: boolean;\n ingestType: I1pDataIngestTypes;\n onChange?: (\n submitData: I1pDataFormSubmitData,\n requiredFieldsReady: boolean\n ) => void;\n onFinished?: (isFinished: boolean, isError: boolean) => void;\n formOptions?: Array<I1pDataInputProps>;\n handleSubmit?: FormEventHandler<HTMLFormElement>;\n disabled?: boolean;\n}\n\nexport type I1pIngestPropsData = {\n [key in I1pIngestDataTypes]?: string[];\n};\n\nexport interface I1pIngestProps {\n type: 'implicit' | 'explicit';\n data: I1pIngestPropsData;\n metadata?: Record<string, string | null | undefined>;\n [key: string]: any;\n}\n\nexport enum 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}\n","import React, { useEffect, useState } from 'react';\nimport { Icon, Select, styled, theme } from '@washingtonpost/wpds-ui-kit';\nimport { useWindowSize } from '@washingtonpost/subs-hooks';\nimport { ChevronDown } from '@washingtonpost/wpds-assets';\n\ninterface IDropdownProps {\n id: string;\n label: string;\n values: Array<string>;\n required?: boolean;\n defaultValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n}\n\nconst StyledMobileSelect = styled('select', {\n padding: '12px 16px 12px 6px',\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n backgroundColor: '$secondary',\n color: '$primary',\n fontFamily: '$meta',\n fontSize: '$100',\n fontWeight: '$light',\n lineHeight: '$125',\n paddingBlockRight: '$125',\n textOverflow: 'ellipsis',\n position: 'relative',\n borderColor: 'transparent',\n borderRightWidth: '10px',\n borderRightColor: 'transparent',\n appearance: 'none',\n '-webkit-appearance': 'none',\n '&:disabled': {\n backgroundColor: theme.colors.disabled,\n borderColor: theme.colors.disabled,\n color: theme.colors.onDisabled,\n cursor: 'not-allowed',\n },\n});\n\nconst StyledSelectWrapper = styled('div', {\n width: '100%',\n maxWidth: '380px',\n borderRadius: '$012',\n borderColor: '$subtle',\n borderStyle: 'solid',\n borderWidth: '1px',\n backgroundColor: '$secondary',\n position: 'relative',\n});\n\nconst StyledMobileOption = styled('option', {\n fontFamily: 'inherit',\n fontSize: 'inherit',\n color: 'inherit',\n});\n\nexport const Dropdown = ({\n id,\n label,\n values,\n required = false,\n defaultValue,\n onChange = () => {},\n disabled = false,\n}: IDropdownProps) => {\n const [answer, setAnswer] = useState<string>();\n const { isMobileSize } = useWindowSize();\n\n useEffect(() => {\n if (answer) onChange(answer);\n }, [answer]);\n\n const defaultValueProp = defaultValue ? { defaultValue } : {};\n\n const disabledProp = disabled ? { disabled: true } : {};\n\n const defaultValuePropMobile = (value: string) => {\n return value === defaultValue ? { selected: true } : {};\n };\n\n return isMobileSize ? (\n <StyledSelectWrapper>\n <StyledMobileSelect\n id=\"\"\n required={required}\n onChange={(e) => setAnswer(e.target.value)}\n placeholder={label}\n {...disabledProp}\n >\n <label>{label}</label>\n <StyledMobileOption\n value=\"\"\n disabled\n selected\n style={{ color: '#666666' }}\n >\n {label}\n </StyledMobileOption>\n {values.map((value) => (\n <StyledMobileOption\n value={value}\n key={value}\n {...defaultValuePropMobile(value)}\n >\n {value}\n </StyledMobileOption>\n ))}\n </StyledMobileSelect>\n <Icon\n label=\"\"\n size=\"100\"\n fill={theme.colors['gray80']}\n style={{\n pointerEvents: 'none',\n position: 'absolute',\n right: '10px',\n top: '50%',\n transform: 'translateY(-50%)',\n }}\n >\n <ChevronDown style={{ position: 'absolute', right: '10px' }} />\n </Icon>\n </StyledSelectWrapper>\n ) : (\n <Select.Root\n onValueChange={(e) => setAnswer(e)}\n required={required}\n {...defaultValueProp}\n {...disabledProp}\n >\n <Select.Trigger data-test-id={`${id}-dropdown-label`}>\n <Select.Label>{label}</Select.Label>\n <Select.Value />\n </Select.Trigger>\n <Select.Content css={{ zIndex: 8 }} data-test-id={`${id}-dropdown-input`}>\n {values.map((value) => (\n <Select.Item value={value} key={value}>\n {value}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n );\n};\n","import { 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 { ENDPOINTS, getCookie } from '@washingtonpost/subs-sdk';\nimport {\n I1pDataIngestTypes,\n I1pIngestProps,\n I1pIngestPropsData,\n} from '../interfaces';\nimport { hasRequiredPrivacyCookies } from '../utils/hasRequiredPrivacyCookies';\n\nconst base = `${ENDPOINTS.base}/de/v1`;\n\nconst JSONHeaders = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n};\n\nexport const ingest = async (\n submitData: I1pIngestPropsData,\n metadata: { [key: string]: string }\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 const jucid = localStorage.getItem('uuid');\n const ga = getCookie('_ga');\n\n const payload: I1pIngestProps = {\n jucid,\n ga,\n type: I1pDataIngestTypes.EXPLICIT,\n wapo_login_id, // TODO: move this to BE to read from cookie headers\n data: submitData,\n metadata,\n };\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n credentials: 'include',\n headers: JSONHeaders,\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","import { I1pIngestDataTypes, I1pIngestPropsData } from '../interfaces';\nimport { hasRequiredPrivacyCookies } from '../utils/hasRequiredPrivacyCookies';\n\nexport interface ISendGAEvent {\n event: string;\n category: string;\n action: string;\n label: string;\n 'de-label': I1pIngestDataTypes;\n [key: string]: undefined | string | string[];\n}\n\nconst sendGAEvent = (props: ISendGAEvent): void => {\n if (typeof window === 'undefined') {\n if (__DEV__) console.warn('NO WINDOW');\n return;\n }\n // Initialize dataLayer if needed\n window.dataLayer = window.dataLayer || [];\n\n const eventData: Record<string, any> = {\n ...props,\n };\n window.dataLayer.push(eventData);\n};\n\nexport const sendToGA = async (\n submitData: I1pIngestPropsData,\n metadata: { [key: string]: string }\n) => {\n if (!hasRequiredPrivacyCookies()) {\n throw new Error('does not satisfy cookie check');\n }\n\n const keysToSubmit = Object.keys(submitData);\n\n keysToSubmit.forEach((key) => {\n if (Object.values(I1pIngestDataTypes).includes(key as I1pIngestDataTypes)) {\n sendGAEvent({\n event: 'site-onpage-click',\n action: 'site-onpage-click',\n category: 'profile',\n\n label: key,\n 'de-label': key as I1pIngestDataTypes,\n [key]: submitData[key as I1pIngestDataTypes],\n\n section: 'profile',\n subsection: metadata.source,\n });\n }\n });\n\n return true;\n};\n","import {\n I1pDataFormSubmitData,\n I1pDataInputProps,\n I1pDataInputTypes,\n} from '../interfaces';\n\nexport const getDefaultSubmitData = (formOptions: Array<I1pDataInputProps>) => {\n const defaultSubmitData: I1pDataFormSubmitData = {};\n formOptions.forEach((formOption) => {\n if (formOption.default_value) {\n if (\n formOption.input_type === I1pDataInputTypes.DROPDOWN &&\n formOption.values\n ) {\n const values = formOption.values\n .filter((value) => value.archived !== true)\n .map((value) => value.name);\n if (values.includes(formOption.default_value)) {\n defaultSubmitData[formOption.id] = [formOption.default_value];\n }\n } else {\n defaultSubmitData[formOption.id] = [formOption.default_value];\n }\n }\n });\n return defaultSubmitData;\n};\n","import React, { useEffect, useState } from 'react';\nimport { styled } from '@washingtonpost/wpds-ui-kit';\nimport {\n I1pDataFormProps,\n I1pDataFormSubmitData,\n I1pDataIngestTypes,\n I1pDataInputTypes,\n} from '../../interfaces';\nimport { Dropdown } from '../Dropdown';\nimport { ingest } from '../../services/dataEnrichment';\nimport { ResponseStatus } from '@washingtonpost/subs-sdk';\nimport { hasRequiredPrivacyCookies } from '../../utils/hasRequiredPrivacyCookies';\nimport { sendToGA } from '../../services/sendToGA';\nimport { getDefaultSubmitData } from '../../utils/getDefaultSubmitData';\n\nexport const DataEnrichmentForm = ({\n submit,\n source, // used to track where on the site data is collected\n ingestType,\n formOptions = [],\n onChange = () => {},\n onFinished = () => {},\n handleSubmit = () => {},\n disabled = false,\n}: I1pDataFormProps) => {\n const [render, setRender] = useState(false);\n\n const [submitData, setSubmitData] = useState<I1pDataFormSubmitData>(\n getDefaultSubmitData(formOptions)\n );\n const [missingRequiredFields, setMissingRequiredFields] = useState(true);\n\n useEffect(() => {\n if (hasRequiredPrivacyCookies()) {\n setRender(true);\n } else {\n console.error('does not satisfy cookie check');\n onFinished(true, true);\n }\n }, []);\n\n useEffect(() => {\n // check for required fields that haven't been completed yet\n const missingRequiredFields = formOptions.filter((option) => {\n if (\n option.required &&\n option.input_type === I1pDataInputTypes.DROPDOWN &&\n !submitData[option.id]\n ) {\n return true;\n }\n return false;\n });\n\n setMissingRequiredFields(missingRequiredFields.length > 0);\n\n onChange(submitData, missingRequiredFields.length === 0);\n }, [JSON.stringify(submitData)]);\n\n useEffect(() => {\n (async () => {\n if (submit) {\n if (Object.keys(submitData).length >= 1) {\n if (ingestType === I1pDataIngestTypes.EXPLICIT) {\n const result = await ingest(submitData, { source });\n\n const isError = result && result.status !== ResponseStatus.SUCCESS;\n onFinished(true, isError);\n } else {\n const result = await sendToGA(submitData, { source });\n onFinished(true, result);\n }\n } else {\n onFinished(true, false);\n }\n }\n })();\n }, [submit]);\n\n if (!render) return <></>;\n\n return (\n <form\n method=\"post\"\n onSubmit={(e) => {\n e.preventDefault();\n handleSubmit(e);\n }}\n >\n {formOptions.map((formOption) => {\n if (\n formOption.input_type === I1pDataInputTypes.DROPDOWN &&\n formOption.values\n ) {\n // sort and filter out archived values\n const values = formOption.values\n .sort((a, b) => a.order - b.order)\n .filter((value) => value.archived !== true);\n\n return (\n <OptionWrapper data-private key={formOption.id}>\n <Dropdown\n id={formOption.id}\n label={formOption.input_label}\n values={values.map((value) => value.name)}\n required={formOption.required}\n defaultValue={formOption.default_value}\n onChange={(value) => {\n setSubmitData({ ...submitData, [formOption.id]: [value] });\n }}\n disabled={disabled}\n />\n </OptionWrapper>\n );\n }\n return null;\n })}\n\n {/* so the user can hit 'Enter' to submit */}\n <input\n type=\"submit\"\n hidden\n disabled={missingRequiredFields || disabled}\n data-qa=\"1p-data-inputs-submit\"\n />\n </form>\n );\n};\n\nconst OptionWrapper = 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":["I1pDataInputTypes","I1pIngestDataTypes","I1pDataIngestTypes","IngestResponseState","StyledMobileSelect","styled","padding","display","justifyContent","width","backgroundColor","color","fontFamily","fontSize","fontWeight","lineHeight","paddingBlockRight","textOverflow","position","borderColor","borderRightWidth","borderRightColor","appearance","theme","colors","disabled","onDisabled","cursor","StyledSelectWrapper","maxWidth","borderRadius","borderStyle","borderWidth","StyledMobileOption","Dropdown","_ref","id","label","values","_ref$required","required","defaultValue","_ref$onChange","onChange","_ref$disabled","_useState","useState","answer","setAnswer","_useWindowSize","useWindowSize","isMobileSize","useEffect","defaultValueProp","disabledProp","defaultValuePropMobile","value","selected","React","_extends","e","target","placeholder","style","map","key","Icon","size","fill","pointerEvents","right","top","transform","ChevronDown","Select","Root","onValueChange","Trigger","Label","Value","Content","css","zIndex","Item","hasRequiredPrivacyCookies","window","wp_usp","getCookie","countryCode","_WPGeo","WPGeo","country_code","base","ENDPOINTS","JSONHeaders","Accept","ingest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","submitData","metadata","url","wapo_login_id","jucid","ga","payload","response","json","wrap","_callee$","_context","prev","next","Error","localStorage","getItem","type","EXPLICIT","data","fetch","method","credentials","headers","body","JSON","stringify","sent","abrupt","t0","console","debug","stop","_x","_x2","apply","arguments","sendGAEvent","props","process","env","NODE_ENV","warn","dataLayer","eventData","push","sendToGA","keysToSubmit","Object","keys","forEach","includes","_sendGAEvent","event","action","category","section","subsection","source","getDefaultSubmitData","formOptions","defaultSubmitData","formOption","default_value","input_type","DROPDOWN","filter","archived","name","DataEnrichmentForm","submit","ingestType","_ref$formOptions","_ref$onFinished","onFinished","_ref$handleSubmit","handleSubmit","render","setRender","_useState2","setSubmitData","_useState3","missingRequiredFields","setMissingRequiredFields","error","option","length","result","isError","_result","status","ResponseStatus","SUCCESS","onSubmit","preventDefault","sort","a","b","order","OptionWrapper","input_label","_extends2","hidden","boxSizing","marginBottom","flexDirection"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEYA;AAAZ,WAAYA,iBAAiB;EAC3BA,0CAAqB;AACvB,CAAC,EAFWA,iBAAiB,KAAjBA,iBAAiB;IAIjBC;AAAZ,WAAYA,kBAAkB;EAC5BA,qDAA+B;EAC/BA,2DAAqC;EACrCA,mEAA6C;EAC7CA,qDAA+B;EAC/BA,2EAAqD;EACrDA,uDAAiC;EACjCA,iEAA2C;AAC7C,CAAC,EARWA,kBAAkB,KAAlBA,kBAAkB;IAgClBC;AAAZ,WAAYA,kBAAkB;EAC5BA,2CAAqB;EACrBA,2CAAqB;AACvB,CAAC,EAHWA,kBAAkB,KAAlBA,kBAAkB;IA8BlBC;AAAZ,WAAYA,mBAAmB;EAC7BA,sCAAe;EACfA,2CAAoB;EACpBA,2CAAoB;EACpBA,iDAA0B;EAC1BA,2CAAoB;EACpBA,2DAAoC;EACpCA,sDAA+B;AACjC,CAAC,EARWA,mBAAmB,KAAnBA,mBAAmB;;ACrD/B,IAAMC,kBAAkB,gBAAGC,MAAM,CAAC,QAAQ,EAAE;EAC1CC,OAAO,EAAE,oBAAoB;EAC7BC,OAAO,EAAE,MAAM;EACfC,cAAc,EAAE,eAAe;EAC/BC,KAAK,EAAE,MAAM;EACbC,eAAe,EAAE,YAAY;EAC7BC,KAAK,EAAE,UAAU;EACjBC,UAAU,EAAE,OAAO;EACnBC,QAAQ,EAAE,MAAM;EAChBC,UAAU,EAAE,QAAQ;EACpBC,UAAU,EAAE,MAAM;EAClBC,iBAAiB,EAAE,MAAM;EACzBC,YAAY,EAAE,UAAU;EACxBC,QAAQ,EAAE,UAAU;EACpBC,WAAW,EAAE,aAAa;EAC1BC,gBAAgB,EAAE,MAAM;EACxBC,gBAAgB,EAAE,aAAa;EAC/BC,UAAU,EAAE,MAAM;EAClB,oBAAoB,EAAE,MAAM;EAC5B,YAAY,EAAE;IACZZ,eAAe,EAAEa,KAAK,CAACC,MAAM,CAACC,QAAQ;IACtCN,WAAW,EAAEI,KAAK,CAACC,MAAM,CAACC,QAAQ;IAClCd,KAAK,EAAEY,KAAK,CAACC,MAAM,CAACE,UAAU;IAC9BC,MAAM,EAAE;;CAEX,CAAC;AAEF,IAAMC,mBAAmB,gBAAGvB,MAAM,CAAC,KAAK,EAAE;EACxCI,KAAK,EAAE,MAAM;EACboB,QAAQ,EAAE,OAAO;EACjBC,YAAY,EAAE,MAAM;EACpBX,WAAW,EAAE,SAAS;EACtBY,WAAW,EAAE,OAAO;EACpBC,WAAW,EAAE,KAAK;EAClBtB,eAAe,EAAE,YAAY;EAC7BQ,QAAQ,EAAE;CACX,CAAC;AAEF,IAAMe,kBAAkB,gBAAG5B,MAAM,CAAC,QAAQ,EAAE;EAC1CO,UAAU,EAAE,SAAS;EACrBC,QAAQ,EAAE,SAAS;EACnBF,KAAK,EAAE;CACR,CAAC;AAEF,AAAO,IAAMuB,QAAQ,GAAG,SAAXA,QAAQA,CAAAC,IAAA;MACnBC,EAAE,GAAAD,IAAA,CAAFC,EAAE;IACFC,KAAK,GAAAF,IAAA,CAALE,KAAK;IACLC,MAAM,GAAAH,IAAA,CAANG,MAAM;IAAAC,aAAA,GAAAJ,IAAA,CACNK,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,KAAK,GAAAA,aAAA;IAChBE,YAAY,GAAAN,IAAA,CAAZM,YAAY;IAAAC,aAAA,GAAAP,IAAA,CACZQ,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,cAAQ,GAAAA,aAAA;IAAAE,aAAA,GAAAT,IAAA,CACnBV,QAAQ;IAARA,QAAQ,GAAAmB,aAAA,cAAG,KAAK,GAAAA,aAAA;EAEhB,IAAAC,SAAA,GAA4BC,QAAQ,EAAU;IAAvCC,MAAM,GAAAF,SAAA;IAAEG,SAAS,GAAAH,SAAA;EACxB,IAAAI,cAAA,GAAyBC,aAAa,EAAE;IAAhCC,YAAY,GAAAF,cAAA,CAAZE,YAAY;EAEpBC,SAAS,CAAC;IACR,IAAIL,MAAM,EAAEJ,QAAQ,CAACI,MAAM,CAAC;GAC7B,EAAE,CAACA,MAAM,CAAC,CAAC;EAEZ,IAAMM,gBAAgB,GAAGZ,YAAY,GAAG;IAAEA,YAAY,EAAZA;GAAc,GAAG,EAAE;EAE7D,IAAMa,YAAY,GAAG7B,QAAQ,GAAG;IAAEA,QAAQ,EAAE;GAAM,GAAG,EAAE;EAEvD,IAAM8B,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAIC,KAAa;IAC3C,OAAOA,KAAK,KAAKf,YAAY,GAAG;MAAEgB,QAAQ,EAAE;KAAM,GAAG,EAAE;GACxD;EAED,OAAON,YAAY,GACjBO,oBAAC9B,mBAAmB,QAClB8B,oBAACtD,kBAAkB,EAAAuD,QAAA;IACjBvB,EAAE,EAAC,EAAE;IACLI,QAAQ,EAAEA,QAAQ;IAClBG,QAAQ,EAAE,SAAAA,SAACiB,CAAC;MAAA,OAAKZ,SAAS,CAACY,CAAC,CAACC,MAAM,CAACL,KAAK,CAAC;;IAC1CM,WAAW,EAAEzB;KACTiB,YAAY,GAEhBI,mCAAQrB,KAAK,CAAS,EACtBqB,oBAACzB,kBAAkB;IACjBuB,KAAK,EAAC,EAAE;IACR/B,QAAQ;IACRgC,QAAQ;IACRM,KAAK,EAAE;MAAEpD,KAAK,EAAE;;KAEf0B,KAAK,CACa,EACpBC,MAAM,CAAC0B,GAAG,CAAC,UAACR,KAAK;IAAA,OAChBE,oBAACzB,kBAAkB,EAAA0B,QAAA;MACjBH,KAAK,EAAEA,KAAK;MACZS,GAAG,EAAET;OACDD,sBAAsB,CAACC,KAAK,CAAC,GAEhCA,KAAK,CACa;GACtB,CAAC,CACiB,EACrBE,oBAACQ,IAAI;IACH7B,KAAK,EAAC,EAAE;IACR8B,IAAI,EAAC,KAAK;IACVC,IAAI,EAAE7C,KAAK,CAACC,MAAM,CAAC,QAAQ,CAAC;IAC5BuC,KAAK,EAAE;MACLM,aAAa,EAAE,MAAM;MACrBnD,QAAQ,EAAE,UAAU;MACpBoD,KAAK,EAAE,MAAM;MACbC,GAAG,EAAE,KAAK;MACVC,SAAS,EAAE;;KAGbd,oBAACe,WAAW;IAACV,KAAK,EAAE;MAAE7C,QAAQ,EAAE,UAAU;MAAEoD,KAAK,EAAE;;IAAY,CAC1D,CACa,GAEtBZ,oBAACgB,MAAM,CAACC,IAAI,EAAAhB,QAAA;IACViB,aAAa,EAAE,SAAAA,cAAChB,CAAC;MAAA,OAAKZ,SAAS,CAACY,CAAC,CAAC;;IAClCpB,QAAQ,EAAEA;KACNa,gBAAgB,EAChBC,YAAY,GAEhBI,oBAACgB,MAAM,CAACG,OAAO;oBAAkBzC,EAAE;KACjCsB,oBAACgB,MAAM,CAACI,KAAK,QAAEzC,KAAK,CAAgB,EACpCqB,oBAACgB,MAAM,CAACK,KAAK,OAAG,CACD,EACjBrB,oBAACgB,MAAM,CAACM,OAAO;IAACC,GAAG,EAAE;MAAEC,MAAM,EAAE;KAAG;oBAAmB9C,EAAE;KACpDE,MAAM,CAAC0B,GAAG,CAAC,UAACR,KAAK;IAAA,OAChBE,oBAACgB,MAAM,CAACS,IAAI;MAAC3B,KAAK,EAAEA,KAAK;MAAES,GAAG,EAAET;OAC7BA,KAAK,CACM;GACf,CAAC,CACa,CAEpB;AACH,CAAC;;IChJY4B,yBAAyB,GAAG,SAA5BA,yBAAyBA;;EACpC,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;IACjC,OAAO,KAAK;;EAGd,IAAMC,MAAM,GAAGC,SAAS,CAAC,QAAQ,CAAC;EAElC,IAAMC,WAAW,IAAAC,MAAA,GAAGC,KAAK,EAAE,qBAAPD,MAAA,CAASE,YAAY;EAEzC,OAAO,CAAC,EAAEL,MAAM,IAAIE,WAAW,KAAK,IAAI,CAAC;AAC3C,CAAC;;ACJD,IAAMI,IAAI,GAAMC,SAAS,CAACD,IAAI,WAAQ;AAEtC,IAAME,WAAW,GAAG;EAClBC,MAAM,EAAE,kBAAkB;EAC1B,cAAc,EAAE;CACjB;AAED,IAAaC,MAAM;EAAA,IAAA7D,IAAA,gBAAA8D,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,QACpBC,UAA8B,EAC9BC,QAAmC;IAAA,IAAAC,GAAA,EAAAC,aAAA,EAAAC,KAAA,EAAAC,EAAA,EAAAC,OAAA,EAAAC,QAAA,EAAAC,IAAA;IAAA,OAAAX,mBAAA,GAAAY,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAE7BX,GAAG,GAAMX,IAAI;UAEbY,aAAa,GAAGjB,SAAS,CAAC,eAAe,CAAC;UAAA,IAE3CH,yBAAyB,EAAE;YAAA4B,QAAA,CAAAE,IAAA;YAAA;;UAAA,MACxB,IAAIC,KAAK,CAAC,+BAA+B,CAAC;QAAA;UAG5CV,KAAK,GAAGW,YAAY,CAACC,OAAO,CAAC,MAAM,CAAC;UACpCX,EAAE,GAAGnB,SAAS,CAAC,KAAK,CAAC;UAErBoB,OAAO,GAAmB;YAC9BF,KAAK,EAALA,KAAK;YACLC,EAAE,EAAFA,EAAE;YACFY,IAAI,EAAEpH,kBAAkB,CAACqH,QAAQ;YACjCf,aAAa,EAAbA,aAAa;YACbgB,IAAI,EAAEnB,UAAU;YAChBC,QAAQ,EAARA;WACD;UAAAU,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAE,IAAA;UAAA,OAGwBO,KAAK,CAAClB,GAAG,EAAE;YAChCmB,MAAM,EAAE,MAAM;YACdC,WAAW,EAAE,SAAS;YACtBC,OAAO,EAAE9B,WAAW;YACpB+B,IAAI,EAAEC,IAAI,CAACC,SAAS,CAACpB,OAAO;WAC7B,CAAC;QAAA;UALIC,QAAQ,GAAAI,QAAA,CAAAgB,IAAA;UAAAhB,QAAA,CAAAE,IAAA;UAAA,OAOKN,QAAQ,CAACC,IAAI,EAAE;QAAA;UAA5BA,IAAI,GAAAG,QAAA,CAAAgB,IAAA;UAAA,OAAAhB,QAAA,CAAAiB,MAAA,WAEHpB,IAAI;QAAA;UAAAG,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAkB,EAAA,GAAAlB,QAAA;UAEXmB,OAAO,CAACC,KAAK,CAAApB,QAAA,CAAAkB,EAAA,CAAG;UAAC,OAAAlB,QAAA,CAAAiB,MAAA,WACV,IAAI;QAAA;QAAA;UAAA,OAAAjB,QAAA,CAAAqB,IAAA;;OAAAjC,OAAA;GAEd;EAAA,gBAvCYJ,MAAMA,CAAAsC,EAAA,EAAAC,GAAA;IAAA,OAAApG,IAAA,CAAAqG,KAAA,OAAAC,SAAA;;AAAA,GAuClB;;AC1CD,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,KAAmB;EACtC,IAAI,OAAOtD,MAAM,KAAK,WAAW,EAAE;IACjC,IAAAuD,OAAA,CAAAC,GAAA,CAAAC,QAAA,mBAAaX,OAAO,CAACY,IAAI,CAAC,WAAW,CAAC;IACtC;;;EAGF1D,MAAM,CAAC2D,SAAS,GAAG3D,MAAM,CAAC2D,SAAS,IAAI,EAAE;EAEzC,IAAMC,SAAS,GAAAtF,QAAA,KACVgF,KAAK,CACT;EACDtD,MAAM,CAAC2D,SAAS,CAACE,IAAI,CAACD,SAAS,CAAC;AAClC,CAAC;AAED,IAAaE,QAAQ;EAAA,IAAAhH,IAAA,gBAAA8D,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,QACtBC,UAA8B,EAC9BC,QAAmC;IAAA,IAAA8C,YAAA;IAAA,OAAAlD,mBAAA,GAAAY,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAA,IAE9B9B,yBAAyB,EAAE;YAAA4B,QAAA,CAAAE,IAAA;YAAA;;UAAA,MACxB,IAAIC,KAAK,CAAC,+BAA+B,CAAC;QAAA;UAG5CiC,YAAY,GAAGC,MAAM,CAACC,IAAI,CAACjD,UAAU,CAAC;UAE5C+C,YAAY,CAACG,OAAO,CAAC,UAACtF,GAAG;YACvB,IAAIoF,MAAM,CAAC/G,MAAM,CAACrC,kBAAkB,CAAC,CAACuJ,QAAQ,CAACvF,GAAyB,CAAC,EAAE;cAAA,IAAAwF,YAAA;cACzEf,WAAW,EAAAe,YAAA;gBACTC,KAAK,EAAE,mBAAmB;gBAC1BC,MAAM,EAAE,mBAAmB;gBAC3BC,QAAQ,EAAE,SAAS;gBAEnBvH,KAAK,EAAE4B,GAAG;gBACV,UAAU,EAAEA;iBAAyBwF,YAAA,CACpCxF,GAAG,IAAGoC,UAAU,CAACpC,GAAyB,CAAC,EAAAwF,YAAA,CAE5CI,OAAO,GAAE,SAAS,EAAAJ,YAAA,CAClBK,UAAU,GAAExD,QAAQ,CAACyD,MAAM,EAAAN,YAAA,EAC3B;;WAEL,CAAC;UAAC,OAAAzC,QAAA,CAAAiB,MAAA,WAEI,IAAI;QAAA;QAAA;UAAA,OAAAjB,QAAA,CAAAqB,IAAA;;OAAAjC,OAAA;GACZ;EAAA,gBA5BY+C,QAAQA,CAAAb,EAAA,EAAAC,GAAA;IAAA,OAAApG,IAAA,CAAAqG,KAAA,OAAAC,SAAA;;AAAA,GA4BpB;;AChDM,IAAMuB,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIC,WAAqC;EACxE,IAAMC,iBAAiB,GAA0B,EAAE;EACnDD,WAAW,CAACV,OAAO,CAAC,UAACY,UAAU;IAC7B,IAAIA,UAAU,CAACC,aAAa,EAAE;MAC5B,IACED,UAAU,CAACE,UAAU,KAAKrK,iBAAiB,CAACsK,QAAQ,IACpDH,UAAU,CAAC7H,MAAM,EACjB;QACA,IAAMA,MAAM,GAAG6H,UAAU,CAAC7H,MAAM,CAC7BiI,MAAM,CAAC,UAAC/G,KAAK;UAAA,OAAKA,KAAK,CAACgH,QAAQ,KAAK,IAAI;UAAC,CAC1CxG,GAAG,CAAC,UAACR,KAAK;UAAA,OAAKA,KAAK,CAACiH,IAAI;UAAC;QAC7B,IAAInI,MAAM,CAACkH,QAAQ,CAACW,UAAU,CAACC,aAAa,CAAC,EAAE;UAC7CF,iBAAiB,CAACC,UAAU,CAAC/H,EAAE,CAAC,GAAG,CAAC+H,UAAU,CAACC,aAAa,CAAC;;OAEhE,MAAM;QACLF,iBAAiB,CAACC,UAAU,CAAC/H,EAAE,CAAC,GAAG,CAAC+H,UAAU,CAACC,aAAa,CAAC;;;GAGlE,CAAC;EACF,OAAOF,iBAAiB;AAC1B,CAAC;;ICXYQ,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAAvI,IAAA;MAC7BwI,MAAM,GAAAxI,IAAA,CAANwI,MAAM;IACNZ,MAAM,GAAA5H,IAAA,CAAN4H,MAAM;IACNa,UAAU,GAAAzI,IAAA,CAAVyI,UAAU;IAAAC,gBAAA,GAAA1I,IAAA,CACV8H,WAAW;IAAXA,WAAW,GAAAY,gBAAA,cAAG,EAAE,GAAAA,gBAAA;IAAAnI,aAAA,GAAAP,IAAA,CAChBQ,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,cAAQ,GAAAA,aAAA;IAAAoI,eAAA,GAAA3I,IAAA,CACnB4I,UAAU;IAAVA,UAAU,GAAAD,eAAA,cAAG,cAAQ,GAAAA,eAAA;IAAAE,iBAAA,GAAA7I,IAAA,CACrB8I,YAAY;IAAZA,YAAY,GAAAD,iBAAA,cAAG,cAAQ,GAAAA,iBAAA;IAAApI,aAAA,GAAAT,IAAA,CACvBV,QAAQ;IAARA,QAAQ,GAAAmB,aAAA,cAAG,KAAK,GAAAA,aAAA;EAEhB,IAAAC,SAAA,GAA4BC,QAAQ,CAAC,KAAK,CAAC;IAApCoI,MAAM,GAAArI,SAAA;IAAEsI,SAAS,GAAAtI,SAAA;EAExB,IAAAuI,UAAA,GAAoCtI,QAAQ,CAC1CkH,oBAAoB,CAACC,WAAW,CAAC,CAClC;IAFM5D,UAAU,GAAA+E,UAAA;IAAEC,aAAa,GAAAD,UAAA;EAGhC,IAAAE,UAAA,GAA0DxI,QAAQ,CAAC,IAAI,CAAC;IAAjEyI,qBAAqB,GAAAD,UAAA;IAAEE,wBAAwB,GAAAF,UAAA;EAEtDlI,SAAS,CAAC;IACR,IAAIgC,yBAAyB,EAAE,EAAE;MAC/B+F,SAAS,CAAC,IAAI,CAAC;KAChB,MAAM;MACLhD,OAAO,CAACsD,KAAK,CAAC,+BAA+B,CAAC;MAC9CV,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;;GAEzB,EAAE,EAAE,CAAC;EAEN3H,SAAS,CAAC;;IAER,IAAMmI,qBAAqB,GAAGtB,WAAW,CAACM,MAAM,CAAC,UAACmB,MAAM;MACtD,IACEA,MAAM,CAAClJ,QAAQ,IACfkJ,MAAM,CAACrB,UAAU,KAAKrK,iBAAiB,CAACsK,QAAQ,IAChD,CAACjE,UAAU,CAACqF,MAAM,CAACtJ,EAAE,CAAC,EACtB;QACA,OAAO,IAAI;;MAEb,OAAO,KAAK;KACb,CAAC;IAEFoJ,wBAAwB,CAACD,qBAAqB,CAACI,MAAM,GAAG,CAAC,CAAC;IAE1DhJ,QAAQ,CAAC0D,UAAU,EAAEkF,qBAAqB,CAACI,MAAM,KAAK,CAAC,CAAC;GACzD,EAAE,CAAC7D,IAAI,CAACC,SAAS,CAAC1B,UAAU,CAAC,CAAC,CAAC;EAEhCjD,SAAS,CAAC;IACR6C,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAC,SAAAC;MAAA,IAAAwF,MAAA,EAAAC,OAAA,EAAAC,OAAA;MAAA,OAAA5F,mBAAA,GAAAY,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAA,KACKyD,MAAM;cAAA3D,QAAA,CAAAE,IAAA;cAAA;;YAAA,MACJmC,MAAM,CAACC,IAAI,CAACjD,UAAU,CAAC,CAACsF,MAAM,IAAI,CAAC;cAAA3E,QAAA,CAAAE,IAAA;cAAA;;YAAA,MACjC0D,UAAU,KAAK1K,kBAAkB,CAACqH,QAAQ;cAAAP,QAAA,CAAAE,IAAA;cAAA;;YAAAF,QAAA,CAAAE,IAAA;YAAA,OACvBlB,MAAM,CAACK,UAAU,EAAE;cAAE0D,MAAM,EAANA;aAAQ,CAAC;UAAA;YAA7C6B,MAAM,GAAA5E,QAAA,CAAAgB,IAAA;YAEN6D,OAAO,GAAGD,MAAM,IAAIA,MAAM,CAACG,MAAM,KAAKC,cAAc,CAACC,OAAO;YAClElB,UAAU,CAAC,IAAI,EAAEc,OAAO,CAAC;YAAC7E,QAAA,CAAAE,IAAA;YAAA;UAAA;YAAAF,QAAA,CAAAE,IAAA;YAAA,OAELiC,QAAQ,CAAC9C,UAAU,EAAE;cAAE0D,MAAM,EAANA;aAAQ,CAAC;UAAA;YAA/C6B,OAAM,GAAA5E,QAAA,CAAAgB,IAAA;YACZ+C,UAAU,CAAC,IAAI,EAAEa,OAAM,CAAC;UAAC;YAAA5E,QAAA,CAAAE,IAAA;YAAA;UAAA;YAG3B6D,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;UAAC;UAAA;YAAA,OAAA/D,QAAA,CAAAqB,IAAA;;SAAAjC,OAAA;KAG7B,IAAG;GACL,EAAE,CAACuE,MAAM,CAAC,CAAC;EAEZ,IAAI,CAACO,MAAM,EAAE,OAAOxH,yCAAK;EAEzB,OACEA;IACEgE,MAAM,EAAC,MAAM;IACbwE,QAAQ,EAAE,SAAAA,SAACtI,CAAC;MACVA,CAAC,CAACuI,cAAc,EAAE;MAClBlB,YAAY,CAACrH,CAAC,CAAC;;KAGhBqG,WAAW,CAACjG,GAAG,CAAC,UAACmG,UAAU;IAC1B,IACEA,UAAU,CAACE,UAAU,KAAKrK,iBAAiB,CAACsK,QAAQ,IACpDH,UAAU,CAAC7H,MAAM,EACjB;;MAEA,IAAMA,MAAM,GAAG6H,UAAU,CAAC7H,MAAM,CAC7B8J,IAAI,CAAC,UAACC,CAAC,EAAEC,CAAC;QAAA,OAAKD,CAAC,CAACE,KAAK,GAAGD,CAAC,CAACC,KAAK;QAAC,CACjChC,MAAM,CAAC,UAAC/G,KAAK;QAAA,OAAKA,KAAK,CAACgH,QAAQ,KAAK,IAAI;QAAC;MAE7C,OACE9G,oBAAC8I,aAAa;;QAAcvI,GAAG,EAAEkG,UAAU,CAAC/H;SAC1CsB,oBAACxB,QAAQ;QACPE,EAAE,EAAE+H,UAAU,CAAC/H,EAAE;QACjBC,KAAK,EAAE8H,UAAU,CAACsC,WAAW;QAC7BnK,MAAM,EAAEA,MAAM,CAAC0B,GAAG,CAAC,UAACR,KAAK;UAAA,OAAKA,KAAK,CAACiH,IAAI;UAAC;QACzCjI,QAAQ,EAAE2H,UAAU,CAAC3H,QAAQ;QAC7BC,YAAY,EAAE0H,UAAU,CAACC,aAAa;QACtCzH,QAAQ,EAAE,SAAAA,SAACa,KAAK;;UACd6H,aAAa,CAAA1H,QAAA,KAAM0C,UAAU,GAAAqG,SAAA,OAAAA,SAAA,CAAGvC,UAAU,CAAC/H,EAAE,IAAG,CAACoB,KAAK,CAAC,EAAAkJ,SAAA,GAAG;SAC3D;QACDjL,QAAQ,EAAEA;QACV,CACY;;IAGpB,OAAO,IAAI;GACZ,CAAC,EAGFiC;IACE4D,IAAI,EAAC,QAAQ;IACbqF,MAAM;IACNlL,QAAQ,EAAE8J,qBAAqB,IAAI9J,QAAQ;eACnC;IACR,CACG;AAEX,CAAC;AAED,IAAM+K,aAAa,gBAAGnM,MAAM,CAAC,KAAK,EAAE;EAClCuM,SAAS,EAAE,YAAY;EACvBrM,OAAO,EAAE,MAAM;EACfsM,YAAY,EAAE,MAAM;EACpBC,aAAa,EAAE,QAAQ;EACvB,UAAU,EAAE;IACVxM,OAAO,EAAE;GACV;EACD,KAAK,EAAE;IAAEsM,SAAS,EAAE;;CACrB,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"subs-de-inputs.esm.js","sources":["../src/interfaces/index.ts","../src/utils/hasRequiredPrivacyCookies.ts","../src/services/dataEnrichment.ts"],"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<any>;\n};\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 { ENDPOINTS, ResponseStatus } from '@washingtonpost/subs-sdk';\n\nconst base = `${ENDPOINTS.base}/de/v1`;\n\nconst JSONHeaders = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n};\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: JSONHeaders,\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"],"names":["CollectionBehaviors","COLLECT","DO_NOT_COLLECT","IngestResponseState","SUCCESS","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","JSONHeaders","Accept","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","sent","ok","status","ResponseStatus","t0","console","debug","stop","_x","apply","arguments"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { I1pDataInputProps } from '../interfaces';
|
|
2
2
|
export declare const getDefaultSubmitData: (formOptions: Array<I1pDataInputProps>) => I1pDataFormSubmitData;
|
package/package.json
CHANGED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
interface IDropdownProps {
|
|
2
|
-
id: string;
|
|
3
|
-
label: string;
|
|
4
|
-
values: Array<string>;
|
|
5
|
-
required?: boolean;
|
|
6
|
-
defaultValue?: string;
|
|
7
|
-
onChange?: (value: string) => void;
|
|
8
|
-
disabled?: boolean;
|
|
9
|
-
}
|
|
10
|
-
export declare const Dropdown: ({ id, label, values, required, defaultValue, onChange, disabled, }: IDropdownProps) => JSX.Element;
|
|
11
|
-
export {};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { I1pIngestDataTypes, I1pIngestPropsData } from '../interfaces';
|
|
2
|
-
export interface ISendGAEvent {
|
|
3
|
-
event: string;
|
|
4
|
-
category: string;
|
|
5
|
-
action: string;
|
|
6
|
-
label: string;
|
|
7
|
-
'de-label': I1pIngestDataTypes;
|
|
8
|
-
[key: string]: undefined | string | string[];
|
|
9
|
-
}
|
|
10
|
-
export declare const sendToGA: (submitData: I1pIngestPropsData, metadata: {
|
|
11
|
-
[key: string]: string;
|
|
12
|
-
}) => Promise<boolean>;
|