{"version":3,"file":"main.00b6b1b439c0dba0af40.js","mappings":"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","sources":["webpack://fedux-cart-web/./src/index.scss?7223","webpack://fedux-cart-web/./src/components/App/App.scss?405a","webpack://fedux-cart-web/./src/components/Test/CBData.tsx","webpack://fedux-cart-web/./strings/PeriodStrings.tsx","webpack://fedux-cart-web/./src/components/Test/Test.tsx","webpack://fedux-cart-web/./src/contexts/feature-flag.context.tsx","webpack://fedux-cart-web/./src/hooks/feature-flags.hook.tsx","webpack://fedux-cart-web/./src/utils/logger.ts","webpack://fedux-cart-web/./src/utils/index.ts","webpack://fedux-cart-web/./src/view-models/cart-builder-item.ts","webpack://fedux-cart-web/./src/services/checkout.service.ts","webpack://fedux-cart-web/./src/routes/CrossSell/cross-sell.scss?b5b3","webpack://fedux-cart-web/./src/routes/CrossSell/CrossSell.tsx","webpack://fedux-cart-web/./src/routes/Guideline/guideline.scss?6c14","webpack://fedux-cart-web/./src/routes/Guideline/Guideline.tsx","webpack://fedux-cart-web/./src/routes/PlanConfiguration/plan-configuration.scss?34b8","webpack://fedux-cart-web/./src/components/BillingTerms/BillingTerms.tsx","webpack://fedux-cart-web/./src/components/CartBuilderFooter/CartBuilderFooter.tsx","webpack://fedux-cart-web/./src/config/index.ts","webpack://fedux-cart-web/./src/components/PlanInfoContainer/PlanInfoContainer.tsx","webpack://fedux-cart-web/./src/components/Supplements/Supplements.tsx","webpack://fedux-cart-web/./src/components/Tiers/Tiers.tsx","webpack://fedux-cart-web/./src/routes/PlanConfiguration/PlanConfiguration.tsx","webpack://fedux-cart-web/./src/routes/AppRoutes.tsx","webpack://fedux-cart-web/./src/utils/error.util.ts","webpack://fedux-cart-web/./src/components/App/App.tsx","webpack://fedux-cart-web/./src/utils/sort.ts","webpack://fedux-cart-web/./src/index.tsx","webpack://fedux-cart-web/./src/components/App/App.scss","webpack://fedux-cart-web/./src/index.scss","webpack://fedux-cart-web/./src/routes/CrossSell/cross-sell.scss","webpack://fedux-cart-web/./src/routes/Guideline/guideline.scss","webpack://fedux-cart-web/./src/routes/PlanConfiguration/plan-configuration.scss"],"sourcesContent":["\n import API from \"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../node_modules/css-loader/dist/cjs.js!../node_modules/sass-loader/dist/cjs.js!./index.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../node_modules/css-loader/dist/cjs.js!../node_modules/sass-loader/dist/cjs.js!./index.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./App.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./App.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/* eslint-disable sort-keys */\n/* eslint-disable sort-keys-fix/sort-keys-fix */\n/* eslint-disable prettier/prettier */\nimport { CartBuilderData, OfferData } from '../../../types/globals';\n\nexport const cartBuilderData3: CartBuilderData = {\n \"friendlyAssociateId\": \"127525095\",\n \"defaultRegion\": null,\n \"skipRegion\": false,\n \"items\": [\n {\n \"crossSell\": false,\n \"defaultSettings\": {\n \"selectedTier\": null,\n \"skipTier\": false,\n \"selectedTerm\": null,\n \"skipTerm\": false,\n \"supplements\": []\n },\n \"offers\": [\n {\n \"offerId\": \"a815ccf2-72f0-4e27-9a63-5ff00181c05b\",\n \"settings\": {\n \"selectedTier\": null,\n \"skipTier\": false,\n \"selectedTerm\": null,\n \"skipTerm\": false,\n \"supplements\": []\n }\n },\n {\n \"offerId\": \"a815ccf2-72f0-4e27-9a63-5ff00181c05c\",\n \"settings\": {\n \"selectedTier\": null,\n \"skipTier\": false,\n \"selectedTerm\": null,\n \"skipTerm\": false,\n \"supplements\": []\n }\n }\n ]\n }\n ]\n};\n\nexport const cartBuilderOfferData3: Record = {\n \"a815ccf2-72f0-4e27-9a63-5ff00181c05b\": {\n \"id\": \"a815ccf2-72f0-4e27-9a63-5ff00181c05b\",\n \"commonName\": \"Small Business\",\n \"products\": [\n {\n \"id\": \"579e76a5-c011-4a48-8a05-60eb7850368c\",\n \"productType\": \"Legal Small Business\",\n \"productFamily\": \"Legal\",\n \"productVersion\": 2,\n \"merchandizedTiers\": [\n {\n \"fees\": {\"Setup\": 25},\n \"name\": \"Small Business Essentials\",\n \"prices\": [\n {\n \"supplements\": [\n {\n \"name\": \"businessPlus\",\n \"initialListPrice\": 1,\n \"renewalListPrice\": 1\n }\n ],\n \"billingPeriod\": \"WEEKLY\",\n \"initialListPrice\": 5,\n \"renewalListPrice\": 5\n },\n {\n \"supplements\": [\n {\n \"name\": \"businessPlus\",\n \"initialListPrice\": 14.95,\n \"renewalListPrice\": 14.95\n }\n ],\n \"billingPeriod\": \"MONTHLY\",\n \"initialListPrice\": 49,\n \"renewalListPrice\": 49\n },\n {\n \"supplements\": [\n {\n \"name\": \"businessPlus\",\n \"initialListPrice\": 149.5,\n \"renewalListPrice\": 149.5\n }\n ],\n \"billingPeriod\": \"ANNUAL\",\n \"initialListPrice\": 490,\n \"renewalListPrice\": 490\n }\n ]\n },\n {\n \"fees\": null,\n \"name\": \"Small Business Plus\",\n \"prices\": [\n {\n \"supplements\": [\n {\n \"name\": \"businessPlus\",\n \"initialListPrice\": 14.95,\n \"renewalListPrice\": 14.95\n },\n {\n \"name\": \"trialDefenseBusiness\",\n \"initialListPrice\": 14.95,\n \"renewalListPrice\": 14.95\n }\n ],\n \"billingPeriod\": \"MONTHLY\",\n \"initialListPrice\": 99,\n \"renewalListPrice\": 99\n },\n {\n \"supplements\": [\n {\n \"name\": \"businessPlus\",\n \"initialListPrice\": 149.5,\n \"renewalListPrice\": 149.5\n },\n {\n \"name\": \"trialDefenseBusiness\",\n \"initialListPrice\": 149.5,\n \"renewalListPrice\": 149.5\n }\n ],\n \"billingPeriod\": \"ANNUAL\",\n \"initialListPrice\": 990,\n \"renewalListPrice\": 990\n }\n ]\n },\n {\n \"fees\": null,\n \"name\": \"Small Business Pro\",\n \"prices\": [\n {\n \"supplements\": [\n {\n \"name\": \"businessPlus\",\n \"initialListPrice\": 14.95,\n \"renewalListPrice\": 14.95\n },\n {\n \"name\": \"trialDefenseBusiness\",\n \"initialListPrice\": 14.95,\n \"renewalListPrice\": 14.95\n }\n ],\n \"billingPeriod\": \"MONTHLY\",\n \"initialListPrice\": 149,\n \"renewalListPrice\": 149\n },\n {\n \"supplements\": [\n {\n \"name\": \"businessPlus\",\n \"initialListPrice\": 39.95,\n \"renewalListPrice\": 39.95\n },\n {\n \"name\": \"trialDefenseBusiness\",\n \"initialListPrice\": 39.95,\n \"renewalListPrice\": 39.95\n }\n ],\n \"billingPeriod\": \"QUARTERLY\",\n \"initialListPrice\": 400,\n \"renewalListPrice\": 400\n }\n ]\n }\n ],\n \"productMinorVersion\": 0\n }\n ],\n \"availableLocalities\": [\n {\n \"name\": \"Alaska\",\n \"serviceArea\": \"1c7392ab-164e-4b68-bf7f-5c477718c4d0\",\n \"abbreviation\": \"AK\",\n \"requiresLicense\": true\n },\n {\n \"name\": \"Arizona\",\n \"serviceArea\": \"96ae15ec-7062-4472-9ff8-7f2f819551da\",\n \"abbreviation\": \"AZ\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Arkansas\",\n \"serviceArea\": \"c9277648-4198-43ae-ab68-13b35125297e\",\n \"abbreviation\": \"AR\",\n \"requiresLicense\": true\n },\n {\n \"name\": \"California One\",\n \"serviceArea\": \"1f7564f6-ddf3-4fca-9d9c-59403fc8dbbf\",\n \"abbreviation\": \"CA1\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"California\",\n \"serviceArea\": \"1f7564f6-ddf3-4fca-9d9c-59403fc8dbbf\",\n \"abbreviation\": \"CA\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Colorado\",\n \"serviceArea\": \"6ce01652-64b7-4d95-8e8a-23f3564d52d4\",\n \"abbreviation\": \"CO\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Connecticut\",\n \"serviceArea\": \"1a04ce10-6951-4876-9b55-69b0fddd9532\",\n \"abbreviation\": \"CT\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Delaware\",\n \"serviceArea\": \"4ed63a33-fdbf-41d4-b894-680bb017995a\",\n \"abbreviation\": \"DE\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"District of Columbia\",\n \"serviceArea\": \"a2438fac-4876-4af0-96e1-c38cb7b27964\",\n \"abbreviation\": \"DC\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Florida\",\n \"serviceArea\": \"57b59f68-deb6-4e5f-aac4-9582a6c40e15\",\n \"abbreviation\": \"FL\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Georgia\",\n \"serviceArea\": \"ddae960d-7567-4003-8e24-b9c98901f593\",\n \"abbreviation\": \"GA\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Hawaii\",\n \"serviceArea\": \"05b73568-f45a-4eed-88eb-f671d434f209\",\n \"abbreviation\": \"HI\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Idaho\",\n \"serviceArea\": \"32b0313a-ec5e-4b67-8fba-a0eb5d3b7751\",\n \"abbreviation\": \"ID\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Illinois\",\n \"serviceArea\": \"a554d7c0-2250-49c0-a54a-bb9ff171129b\",\n \"abbreviation\": \"IL\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Indiana\",\n \"serviceArea\": \"9e90da00-1b54-4d80-8d7d-5ac8c9fba225\",\n \"abbreviation\": \"IN\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Iowa\",\n \"serviceArea\": \"17a05c84-c63d-4737-b6c1-497427f89e76\",\n \"abbreviation\": \"IA\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Kansas\",\n \"serviceArea\": \"01996825-752c-4ec4-90d9-1db7aa5dc530\",\n \"abbreviation\": \"KS\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Kentucky\",\n \"serviceArea\": \"bd02a594-9023-4de6-a53f-8febb4bdf436\",\n \"abbreviation\": \"KY\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Louisiana\",\n \"serviceArea\": \"bd113c73-e8cc-4b81-b8cb-b146a3091751\",\n \"abbreviation\": \"LA\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Maine\",\n \"serviceArea\": \"58a4f252-bb30-4c59-92d0-718cbbcdddcc\",\n \"abbreviation\": \"ME\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Maryland\",\n \"serviceArea\": \"fe2026b3-51ba-4861-a839-17684fe2c9b5\",\n \"abbreviation\": \"MD\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Massachusetts\",\n \"serviceArea\": \"5eb0e471-cbe6-434d-b003-f7b937e613fd\",\n \"abbreviation\": \"MA\",\n \"requiresLicense\": true\n },\n {\n \"name\": \"Michigan\",\n \"serviceArea\": \"31e90574-ae9a-42fc-9383-2d098a4e60ca\",\n \"abbreviation\": \"MI\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Minnesota\",\n \"serviceArea\": \"b548a797-523e-43e9-9250-30eca14cc805\",\n \"abbreviation\": \"MN\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Mississippi\",\n \"serviceArea\": \"91bc34b2-3474-4293-8af1-bdb546e5672f\",\n \"abbreviation\": \"MS\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Missouri\",\n \"serviceArea\": \"8ce82537-8c3f-4315-9d31-a2d1c41be67e\",\n \"abbreviation\": \"MO\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Montana\",\n \"serviceArea\": \"3bb6f692-fdbe-4c67-9bb1-237afd250d06\",\n \"abbreviation\": \"MT\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Nebraska\",\n \"serviceArea\": \"5760f20f-50d3-4fb4-86c2-7040679d5938\",\n \"abbreviation\": \"NE\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Nevada\",\n \"serviceArea\": \"5e9e6435-130e-44b6-b998-f71b04c8cb9c\",\n \"abbreviation\": \"NV\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"New Hampshire\",\n \"serviceArea\": \"b4e96e74-7302-458c-8745-1d672ada70fd\",\n \"abbreviation\": \"NH\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"New Jersey\",\n \"serviceArea\": \"c1a6dd23-1eee-4d89-a454-3acfd4f8c33c\",\n \"abbreviation\": \"NJ\",\n \"requiresLicense\": true\n },\n {\n \"name\": \"New Mexico\",\n \"serviceArea\": \"4e088ed5-6027-4a73-9094-21e82a81e090\",\n \"abbreviation\": \"NM\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"New York\",\n \"serviceArea\": \"e2e4d7ab-f6db-4e7b-bd30-cdf9ceab5368\",\n \"abbreviation\": \"NY\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"North Carolina\",\n \"serviceArea\": \"e70c79c9-bd1d-4ac4-b0f7-4eae2c5b031f\",\n \"abbreviation\": \"NC\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"North Dakota\",\n \"serviceArea\": \"4e3adc5c-01c5-427b-a5a4-9f9faee24a99\",\n \"abbreviation\": \"ND\",\n \"requiresLicense\": true\n },\n {\n \"name\": \"Ohio\",\n \"serviceArea\": \"19b5b248-e444-4e18-adb5-99e7573a85fd\",\n \"abbreviation\": \"OH\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Oklahoma\",\n \"serviceArea\": \"05b9668e-907a-4ade-9d62-d7d51398965b\",\n \"abbreviation\": \"OK\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Oregon\",\n \"serviceArea\": \"a65e5e13-482e-4802-b40e-ac4753a12b14\",\n \"abbreviation\": \"OR\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Pennsylvania\",\n \"serviceArea\": \"99b719cc-52aa-4b34-8db8-d0cb0ee82fe7\",\n \"abbreviation\": \"PA\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Rhode Island\",\n \"serviceArea\": \"6fe98bbb-502a-41ae-bea6-f9ff2f1ebea3\",\n \"abbreviation\": \"RI\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"South Carolina\",\n \"serviceArea\": \"e6f2bc39-2430-4f9f-9848-85f0089966ff\",\n \"abbreviation\": \"SC\",\n \"requiresLicense\": true\n },\n {\n \"name\": \"South Dakota\",\n \"serviceArea\": \"1fe3ea24-528a-474e-9dfc-367e9b20f365\",\n \"abbreviation\": \"SD\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Tennessee\",\n \"serviceArea\": \"6cbfc871-ddf5-4832-bdeb-bd9a6ce6db5a\",\n \"abbreviation\": \"TN\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Texas\",\n \"serviceArea\": \"45ced3e5-5e82-4c19-bea8-31db1c2ac014\",\n \"abbreviation\": \"TX\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Utah\",\n \"serviceArea\": \"390faf6d-23aa-48e5-bd83-f309224aff9b\",\n \"abbreviation\": \"UT\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Vermont\",\n \"serviceArea\": \"08218d23-0307-4009-b44c-dccd38352e77\",\n \"abbreviation\": \"VT\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Virginia\",\n \"serviceArea\": \"55bbec65-2835-4989-b934-d7cc0b11b6d0\",\n \"abbreviation\": \"VA\",\n \"requiresLicense\": true\n },\n {\n \"name\": \"Washington\",\n \"serviceArea\": \"691f75b2-9907-4cc8-821a-4706bd882f41\",\n \"abbreviation\": \"WA\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"West Virginia\",\n \"serviceArea\": \"99d07972-4bc0-454b-abeb-9a09a70989cf\",\n \"abbreviation\": \"WV\",\n \"requiresLicense\": false\n },\n {\n \"name\": \"Wisconsin\",\n \"serviceArea\": \"634bc5e6-0cd7-40ff-98e2-f6df551ff5ac\",\n \"abbreviation\": \"WI\",\n \"requiresLicense\": true\n },\n {\n \"name\": \"Wyoming\",\n \"serviceArea\": \"3cc7e454-b079-477c-936c-9de2c202bca5\",\n \"abbreviation\": \"WY\",\n \"requiresLicense\": false\n }\n ]\n },\n \"a815ccf2-72f0-4e27-9a63-5ff00181c05c\": {\n \"id\": \"a815ccf2-72f0-4e27-9a63-5ff00181c05c\",\n \"commonName\": \"Small Business\",\n \"products\": [\n {\n \"id\": \"579e76a5-c011-4a48-8a05-60eb7850368c\",\n \"productType\": \"Legal Small Business\",\n \"productFamily\": \"Legal\",\n \"productVersion\": 2,\n \"merchandizedTiers\": [\n {\n \"fees\": {\"Setup\": 25},\n \"name\": \"Small Business Essentials\",\n \"prices\": [\n {\n \"supplements\": [\n {\n \"name\": \"businessPlus\",\n \"initialListPrice\": 14.95,\n \"renewalListPrice\": 14.95\n }\n ],\n \"billingPeriod\": \"MONTHLY\",\n \"initialListPrice\": 49,\n \"renewalListPrice\": 49\n },\n {\n \"supplements\": [\n {\n \"name\": \"businessPlus\",\n \"initialListPrice\": 149.5,\n \"renewalListPrice\": 149.5\n }\n ],\n \"billingPeriod\": \"ANNUAL\",\n \"initialListPrice\": 490,\n \"renewalListPrice\": 490\n }\n ]\n },\n {\n \"fees\": null,\n \"name\": \"Small Business Plus\",\n \"prices\": [\n {\n \"supplements\": [\n {\n \"name\": \"businessPlus\",\n \"initialListPrice\": 14.95,\n \"renewalListPrice\": 14.95\n },\n {\n \"name\": \"trialDefenseBusiness\",\n \"initialListPrice\": 14.95,\n \"renewalListPrice\": 14.95\n }\n ],\n \"billingPeriod\": \"MONTHLY\",\n \"initialListPrice\": 99,\n \"renewalListPrice\": 99\n }\n ]\n }\n ],\n \"productMinorVersion\": 0\n }\n ],\n \"availableLocalities\": [\n {\"name\":\"Alabama\",\"serviceArea\":\"3c1552b5-2ee7-4bac-9f33-a1c8dfdddc84\",\"abbreviation\":\"AL\",\"requiresLicense\":false}\n ]\n },\n\n};","export const dd_term_strings: Record> = {\n ANNUAL: {\n 'en-ca': 'Annually',\n 'en-us': 'Annually',\n 'es-us': 'Anual',\n 'fr-ca': 'Annuel',\n },\n BIANNUAL: {\n 'en-ca': 'Biannually',\n 'en-us': 'Biannually',\n 'es-us': 'Semestral',\n 'fr-ca': 'Semestriel',\n },\n DAILY: {\n 'en-ca': 'Daily',\n 'en-us': 'Daily',\n 'es-us': 'Diario',\n 'fr-ca': 'Quotidien',\n },\n MONTHLY: {\n 'en-ca': 'Plan Monthly Totals:',\n 'en-us': 'Plan Monthly Totals:',\n 'es-us': 'Totales Mensuales Del Plan:',\n 'fr-ca': 'Totaux Mensuels Du Plan:',\n },\n PAY_PERIOD: {\n 'en-ca': 'Per Pay Period',\n 'en-us': 'Per Pay Period',\n 'es-us': 'Por período de pago',\n 'fr-ca': 'Par période de paie',\n },\n QUARTERLY: {\n 'en-ca': 'Quarterly',\n 'en-us': 'Quarterly',\n 'es-us': 'Trimestral',\n 'fr-ca': 'Trimestriel',\n },\n WEEKLY: {\n 'en-ca': 'Weekly',\n 'en-us': 'Weekly',\n 'es-us': 'Semanal',\n 'fr-ca': 'Hebdomadaire',\n },\n};\n\nexport const per_term_strings: Record> = {\n ANNUAL: {\n 'en-ca': '/year',\n 'en-us': '/year',\n 'es-us': '/año',\n 'fr-ca': '/an',\n },\n BIANNUAL: {\n 'en-ca': '/biannual',\n 'en-us': '/biannual',\n 'es-us': '/semestral',\n 'fr-ca': '/semestriel',\n },\n DAILY: {\n 'en-ca': '/day',\n 'en-us': '/day',\n 'es-us': '/día',\n 'fr-ca': '/jour',\n },\n MONTHLY: {\n 'en-ca': '/month',\n 'en-us': '/month',\n 'es-us': '/mes',\n 'fr-ca': '/mois',\n },\n ONCE: {\n 'en-ca': '/one time fee',\n 'en-us': '/one time fee',\n 'es-us': '/cargo único',\n 'fr-ca': '/frais unique',\n },\n PAY_PERIOD: {\n 'en-ca': '/pay period',\n 'en-us': '/pay period',\n 'es-us': '/periodo de pago',\n 'fr-ca': '/période de paie',\n },\n QUARTERLY: {\n 'en-ca': '/quarterly',\n 'en-us': '/quarterly',\n 'es-us': '/trimestral',\n 'fr-ca': '/trimestriel',\n },\n WEEKLY: {\n 'en-ca': '/week',\n 'en-us': '/week',\n 'es-us': '/semana',\n 'fr-ca': '/semaine',\n },\n};\n","import React, { forwardRef, useEffect, useState } from 'react';\nimport { Checkbox, Select, SelectItem, SelectOption } from '@legalshield/adonis-ux-framework';\n\nimport { dd_term_strings, per_term_strings } from '../../../strings/PeriodStrings';\nimport { CartBuilderProduct, OfferPrice, OfferSupplement, OfferTier } from '../../../types/globals';\nimport { cartBuilderOfferData3 } from './CBData';\n\nexport interface TestControlProps extends Omit, 'onClick' | 'css'> {\n offerIds: string[];\n}\nconst TestControlComponent = ({ offerIds }: TestControlProps) => {\n const get_possible_regions = (): SelectOption[] => {\n const offerRegions: string[] = [];\n\n let options: SelectOption[] = [];\n\n for (let i = 0; i < offerIds.length; i++) {\n const offerId = offerIds[i];\n const offer = cartBuilderOfferData3[offerId];\n\n if (offer.products[0].productFamily === 'Identity' || offer.products[0].productFamily === 'Associate') {\n return options;\n }\n\n for (let j = 0; j < offer.availableLocalities.length; j++) {\n if (!(offer.availableLocalities[j].abbreviation in offerRegions)) {\n offerRegions.push(offer.availableLocalities[j].abbreviation);\n options.push({ label: offer.availableLocalities[j].name, value: offer.availableLocalities[j].abbreviation });\n }\n }\n }\n\n // Use only the regions the user is licensed to sell in (for legal products)\n if (regionData) {\n options = [];\n for (let i = 0; i < regionData.length; i++) {\n if (offerRegions.includes(regionData[i].abbreviation)) {\n options.push({ label: regionData[i].fullName, value: regionData[i].abbreviation });\n }\n }\n }\n\n // Allow in the invalid regions if not legal\n if (invalidRegionData) {\n for (let i = 0; i < invalidRegionData.length; i++) {\n if (offerRegions.includes(invalidRegionData[i].abbreviation)) {\n options.push({ label: invalidRegionData[i].fullName, value: invalidRegionData[i].abbreviation });\n }\n }\n }\n\n options.sort((a, b) => {\n if (a.label < b.label) return -1;\n if (a.label > b.label) return 1;\n return 0;\n });\n\n return options;\n };\n\n const find_offer_id = (region: string): string => {\n if (offerIds.length === 1) {\n return offerIds[0];\n } else {\n for (let i = 0; i < offerIds.length; i++) {\n const offer = cartBuilderOfferData3[offerIds[i]];\n for (let j = 0; j < offer.availableLocalities.length; j++) {\n if (region === offer.availableLocalities[j].abbreviation) {\n return offerIds[i];\n break;\n }\n }\n }\n }\n\n return offerIds[0];\n };\n\n const find_tier = (merchandizedTiers: OfferTier[], tierName: string): OfferTier | undefined => {\n if (tierName === '') return merchandizedTiers[0];\n\n // Find the tier from the name\n for (let i = 0; i < merchandizedTiers.length; i++) {\n if (merchandizedTiers[i].name.toLowerCase() === tierName.toLowerCase()) {\n return merchandizedTiers[i];\n }\n }\n\n return undefined;\n };\n\n // const onTierChange = (e: React.ChangeEvent) => {\n const find_term = (prices: OfferPrice[], termName: string): OfferPrice | undefined => {\n if (termName === '') return prices[0];\n\n for (let i = 0; i < prices.length; i++) {\n if (prices[i].billingPeriod.toLowerCase() === termName.toLowerCase()) {\n return prices[i];\n }\n }\n return undefined;\n };\n\n const [possibleRegions, setPossibleRegions] = useState(get_possible_regions());\n\n const iRegion = possibleRegions[0].value as string;\n const iOfferId = find_offer_id(possibleRegions[0].value as string);\n const iOffer = cartBuilderOfferData3[iOfferId];\n\n const [region, setRegion] = useState(iRegion);\n\n // When the offer is set\n const [offerId, setOfferId] = useState(iOfferId);\n\n // When the tier name is set to a value\n const [currentTierName, setCurrentTierName] = useState(iOffer.products[0].merchandizedTiers[0].name);\n\n // When the term name is set to a value\n const [currentTermName, setCurrentTermName] = useState(\n iOffer.products[0].merchandizedTiers[0].prices[0].billingPeriod,\n );\n\n // When supplements are selected\n const [currentSupplements, setCurrentSupplements] = useState([]);\n\n useEffect(() => {\n let newOfferId = '';\n\n newOfferId = find_offer_id(region);\n\n if (newOfferId != offerId) {\n setOfferId(newOfferId);\n }\n }, [region]);\n\n useEffect(() => {\n const offer = cartBuilderOfferData3[offerId];\n const tier = find_tier(offer.products[0].merchandizedTiers, currentTierName);\n if (!tier) {\n setCurrentTierName(offer.products[0].merchandizedTiers[0].name);\n }\n }, [offerId]);\n\n useEffect(() => {\n const offer = cartBuilderOfferData3[offerId];\n const tier = find_tier(offer.products[0].merchandizedTiers, currentTierName);\n if (!tier) return;\n\n // Preserve the billing period selected if exists in the new tier; otherwise use the default (first)\n const changeBilling = true;\n const term = find_term(tier.prices, currentTermName);\n if (!term) {\n setCurrentTermName(tier.prices[0].billingPeriod);\n }\n }, [offerId, currentTierName]);\n\n useEffect(() => {\n const offer = cartBuilderOfferData3[offerId];\n const tier = find_tier(offer.products[0].merchandizedTiers, currentTierName);\n if (!tier) return;\n const term = find_term(tier.prices, currentTermName);\n if (!term) return;\n\n // Preserve the supplements if exists in the new price term\n let changeSupplements = false;\n let newSupplements = [...currentSupplements];\n\n for (let i = 0; i < currentSupplements.length; i++) {\n if (!term.supplements.some((item) => item.name.toLowerCase() === currentSupplements[i].toLowerCase())) {\n newSupplements = newSupplements.filter((value) => value.toLowerCase() != currentSupplements[i].toLowerCase());\n changeSupplements = true;\n }\n }\n\n setCurrentSupplements(newSupplements);\n }, [offerId, currentTierName, currentTermName]);\n\n const onRegionChange = (value: string) => {\n if (value === region) {\n return;\n }\n\n setRegion(value);\n };\n\n const renderRegions = (currentRegion: string) => {\n // Only needed for legal products\n const offer = cartBuilderOfferData3[offerId];\n if (offer.products[0].productFamily != 'Legal') {\n return <>;\n }\n\n return (\n <>\n State:\n \n \n );\n };\n\n const onTierChange = (value: string) => {\n if (value === currentTierName) {\n return;\n }\n\n setCurrentTierName(value);\n };\n\n const renderTiers = (currentTier: string, termName: string) => {\n const tiers = cartBuilderOfferData3[offerId].products[0].merchandizedTiers;\n\n //if (cartBuilderOfferData[offerId].products[0].merchandizedTiers.length === 1) {\n // return <>;\n //}\n\n const productId = cartBuilderOfferData3[offerId].products[0].id;\n const productVersion = cartBuilderOfferData3[offerId].products[0].productVersion;\n const simpleProductData = cartBuilderSimpleProductDataMap[productId + '|' + productVersion.toString()];\n\n if (!simpleProductData || !simpleProductData.tiers) return;\n const options: { label: string; value: string }[] = [];\n for (let i = 0; i < tiers.length; i++) {\n const tierName = tiers[i].name;\n let friendlyName = simpleProductData.tiers[tierName];\n let priceString = '';\n if (termName) {\n for (let j = 0; j < tiers[i].prices.length; j++) {\n if (tiers[i].prices[j].billingPeriod === termName) {\n priceString = get_price(tiers[i].prices[j].initialListPrice, termName);\n break;\n }\n }\n\n if (priceString) {\n friendlyName = friendlyName + ' @ ' + priceString;\n } else {\n friendlyName =\n friendlyName + ' @ ' + 'Not available ' + dd_term_strings[termName][pplsi.market.toLocaleLowerCase()];\n }\n }\n options.push({ label: friendlyName, value: tierName });\n }\n\n return (\n <>\n Tier:\n \n \n );\n };\n\n const onTermChange = (value: string) => {\n if (value === currentTermName) {\n return;\n }\n\n setCurrentTermName(value);\n };\n\n const renderTerms = (tierName: string, termName: string) => {\n const offer = cartBuilderOfferData3[offerId];\n\n if (!offer.products || offer.products.length != 1 || !offer.products[0].merchandizedTiers) return;\n\n let tier = null;\n for (let i = 0; i < offer.products[0].merchandizedTiers.length; i++) {\n if (offer.products[0].merchandizedTiers[i].name.toLowerCase() === tierName.toLowerCase()) {\n tier = offer.products[0].merchandizedTiers[i];\n break;\n }\n }\n if (tier === null) {\n tier = offer.products[0].merchandizedTiers[0];\n }\n\n //if (tier.prices.length === 1) {\n // return <>;\n //}\n\n const options: { label: string; value: string }[] = [];\n\n let price = 0;\n for (let i = 0; i < tier.prices.length; i++) {\n const lcm = pplsi.market?.toLocaleLowerCase();\n\n let label = dd_term_strings[tier.prices[i].billingPeriod][lcm];\n //if (tier.prices[i].billingPeriod.toLowerCase() != currentTermName.toLowerCase()) {\n label = label + ' @ ' + get_price(tier.prices[i].initialListPrice, tier.prices[i].billingPeriod);\n //}\n options.push({ label: label, value: tier.prices[i].billingPeriod });\n if (currentTermName.toLowerCase() === tier.prices[i].billingPeriod.toLowerCase()) {\n price = tier.prices[i].initialListPrice;\n }\n }\n\n let fees = 0;\n if (tier.fees) {\n for (const key in tier.fees) {\n fees = fees + tier.fees[key];\n }\n }\n\n return (\n <>\n Billing Terms:\n \n \n );\n };\n\n const onSupplementChange = (e: React.ChangeEvent) => {\n let newSupplements: string[] = [...currentSupplements];\n const name = e.target.name as string;\n if (newSupplements.includes(name)) {\n newSupplements = currentSupplements.filter((value) => value != name);\n } else {\n newSupplements.push(name);\n }\n setCurrentSupplements(newSupplements);\n };\n\n const get_price = (price: number, term: string): string => {\n if (!term) return '';\n return '$' + price.toFixed(2) + per_term_strings[term][pplsi.market?.toLowerCase()];\n };\n\n const renderSupplements = (tierName: string, termName: string, supplements: string[]) => {\n const offer = cartBuilderOfferData3[offerId];\n const productId = cartBuilderOfferData3[offerId].products[0].id;\n const productVersion = cartBuilderOfferData3[offerId].products[0].productVersion;\n const simpleProductData: CartBuilderProduct =\n cartBuilderSimpleProductDataMap[productId + '|' + productVersion.toString()];\n\n if (!offer.products || offer.products.length != 1 || !offer.products[0].merchandizedTiers) return;\n\n let tier = find_tier(offer.products[0].merchandizedTiers, tierName);\n\n if (tier === null) {\n tier = offer.products[0].merchandizedTiers[0];\n }\n\n if (!tier) return;\n\n // Find the pricing term\n const price = find_term(tier.prices, termName);\n if (!price) return;\n\n if (price.supplements === null) {\n return <>;\n }\n\n const supplementElements = [];\n for (let i = 0; i < price.supplements.length; i++) {\n const name = price.supplements[i].name;\n const label =\n simpleProductData.supplements[price.supplements[i].name] +\n ' plus ' +\n get_price(price.supplements[i].initialListPrice, currentTermName);\n supplementElements.push(\n
\n \n
,\n );\n }\n\n return (\n <>\n Supplements:\n {supplementElements}\n \n );\n };\n\n const renderPrice = (tierName: string, termName: string, supplements: string[]) => {\n const offer = cartBuilderOfferData3[offerId];\n const productId = cartBuilderOfferData3[offerId].products[0].id;\n const productVersion = cartBuilderOfferData3[offerId].products[0].productVersion;\n const simpleProductData: CartBuilderProduct =\n cartBuilderSimpleProductDataMap[productId + '|' + productVersion.toString()];\n\n if (!offer.products || offer.products.length != 1 || !offer.products[0].merchandizedTiers) return;\n\n let tier = find_tier(offer.products[0].merchandizedTiers, tierName);\n\n if (tier === null) {\n tier = offer.products[0].merchandizedTiers[0];\n }\n\n if (!tier) return;\n\n // Find the price and the term\n let price = 0;\n let offerPrice: OfferPrice | null = null;\n for (let i = 0; i < tier.prices.length; i++) {\n if (termName.toLowerCase() === tier.prices[i].billingPeriod.toLowerCase()) {\n offerPrice = tier.prices[i];\n price = tier.prices[i].initialListPrice;\n break;\n }\n }\n\n if (offerPrice === null) {\n return (\n <>\n None\n
\n \n );\n }\n\n // Calcluate any fees\n let fees = 0;\n if (tier.fees) {\n for (const key in tier.fees) {\n fees = fees + tier.fees[key];\n }\n }\n\n for (let i = 0; i < offerPrice.supplements.length; i++) {\n const supplement: OfferSupplement = offerPrice.supplements[i];\n\n if (supplements.includes(supplement.name)) {\n price = price + supplement.initialListPrice;\n }\n }\n\n return (\n <>\n Price: {get_price(price, termName)}\n {fees != 0 && (\n <>\n
\n Fees: {get_price(fees, 'ONCE')}\n \n )}\n
\n \n );\n };\n\n const renderName = () => {\n const offer = cartBuilderOfferData3[offerId];\n const productId = offer.products[0].id;\n const productVersion = cartBuilderOfferData3[offerId].products[0].productVersion;\n const simpleProductData: CartBuilderProduct =\n cartBuilderSimpleProductDataMap[productId + '|' + productVersion.toString()];\n\n const name = simpleProductData.friendlyName;\n\n return (\n <>\n {name}:{offerId}\n
\n \n );\n };\n\n return (\n
\n {renderName()}\n {renderPrice(currentTierName, currentTermName, currentSupplements)}\n {renderRegions(region)}\n {renderTiers(currentTierName, currentTermName)}\n {renderTerms(currentTierName, currentTermName)}\n {renderSupplements(currentTierName, currentTermName, currentSupplements)}\n
\n );\n};\n\nexport const TestControl = forwardRef(TestControlComponent);\n","import React from 'react';\n\nexport interface FeatureContextProps {\n /**\n * When multiselect=true is present as a query param on the initial render,\n * this value will be true.\n */\n multiselect: boolean;\n}\n\nexport const FeatureContext = React.createContext({} as FeatureContextProps);\n\nexport const FeatureContextProvider: React.FC = ({ children }) => {\n // const searchParams = new URLSearchParams(location.search);\n // const multiselect: boolean = searchParams.get('multiselect') === 'true';\n const multiselect = true;\n\n return {children};\n};\n","import { useContext } from 'react';\n\nimport { FeatureContext } from '../contexts/feature-flag.context';\n\nexport function useFeatureFlags() {\n return useContext(FeatureContext);\n}\n","const mockLog = {\n error(...args: Parameters) {\n return console.error(args);\n },\n group(..._args: Parameters) {},\n groupEnd(..._args: Parameters) {},\n log(..._args: Parameters) {},\n};\n\nexport const logger = window.location.port || process.env.NODE_ENV === 'test' ? console : mockLog;\n","import { Offers } from '@legalshield/frontend-commons';\n\nimport { dd_term_strings, per_term_strings } from '../../strings/PeriodStrings';\n\n/** Return a matching Offer's Price, given a termName */\nexport const find_term = (prices: Offers.Price[], termName: string): Offers.Price | undefined => {\n if (termName === '') return prices[0];\n\n for (let i = 0; i < prices.length; i++) {\n if (prices?.[i]?.billingPeriod?.toLowerCase() === termName.toLowerCase()) {\n return prices[i];\n }\n }\n return undefined;\n};\n\nexport const find_tier = (\n merchandizedTiers: Offers.MerchandizedTier[],\n tierName: string,\n): Offers.MerchandizedTier | undefined => {\n if (tierName === '') return merchandizedTiers[0];\n\n // Find the tier from the name\n for (let i = 0; i < merchandizedTiers.length; i++) {\n if (merchandizedTiers?.[i]?.name?.toLowerCase() === tierName?.toLowerCase()) {\n return merchandizedTiers[i];\n }\n }\n\n return undefined;\n};\n\nexport const getPerTerm = (term: string): string => {\n if (!term) return '';\n return per_term_strings[term][pplsi.market?.toLowerCase()];\n};\n\nexport const get_price = (price: number, term: string): string => {\n if (!term) return '';\n return '$' + price.toFixed(2);\n};\n\nexport const get_term = (term: string): string => {\n if (!term) return '';\n return dd_term_strings[term][pplsi.market?.toLowerCase()];\n};\n\nexport const downcaseKeys = (obj: Record): Record =>\n Object.keys(obj)?.reduce((acc: Record, k: string) => {\n acc[k?.toLowerCase()] = obj[k];\n return acc;\n }, {});\n","import { SelectOption } from '@legalshield/adonis-ux-framework';\nimport { createOfferSelection, createProductV2, createSupplement2 } from '@legalshield/commerce-cart-library';\nimport { Offers, Purchases } from '@legalshield/frontend-commons';\n\nimport { CartBuilderData, CartBuilderProduct } from '../../types/globals';\nimport { PlanConfigurationState } from '../routes/AppRoutes';\nimport { downcaseKeys, find_term, find_tier, get_price } from '../utils';\n\ninterface AddOnOption {\n name: string;\n price: string;\n value: string;\n}\ninterface TierRadio {\n name: string;\n price: number;\n tierName: string;\n}\n\nexport interface Prices {\n planPrice?: string;\n planFees?: string;\n titlePrice?: number;\n totalPrice?: string;\n}\nexport class CartBuilderItem {\n private _availableAddOns?: AddOnOption[];\n private _availableRegions?: SelectOption[];\n private _availableTiers?: TierRadio[];\n private _cartBuilderItem: CartBuilderData['items'][number];\n private _prices?: Prices;\n\n constructor(cartBuilderItemIndex: number) {\n this._cartBuilderItem = cartBuilderData.items[cartBuilderItemIndex];\n if (!this._cartBuilderItem) {\n throw new Error(`no CartBuilderItem for given index: ${cartBuilderItemIndex}`);\n }\n }\n\n availableAddOns({\n currentTermName,\n currentTierName,\n offerId,\n }: {\n currentTermName: string;\n currentTierName: string;\n offerId: string;\n }) {\n return this.findAvailableAddOns({ currentTermName, currentTierName, offerId });\n }\n /** Select options for the region picker */\n availableRegions(): SelectOption[] {\n return this.findAvailableRegions();\n }\n\n /** Select options for the Tier radio group */\n availableTiersForOfferAndTerm(offerId: string, currentTermName: string): TierRadio[] {\n return this.findAvailableTiers(offerId, currentTermName);\n }\n\n /** Build an offerSelection object for the create order api request */\n buildOfferSelection(planConfiguration: PlanConfigurationState): Purchases.Offer2 {\n const { currentSupplements, currentTermName, currentTierName, offerId } = planConfiguration;\n if (!offerId) {\n throw new Error('offerId is required');\n }\n if (!currentTermName) {\n throw new Error('currentTermName is required');\n }\n if (!currentTierName) {\n throw new Error('currentTierName is required');\n }\n const offerData = cartBuilderOfferData[offerId];\n\n const selectedSupplements: Purchases.Supplement2[] | undefined = this.availableAddOns({\n currentTermName,\n currentTierName,\n offerId,\n })\n ?.filter((addon) => currentSupplements?.includes(addon?.value || ''))\n .map((addon) => createSupplement2({ name: addon?.value || '', price: Number(addon?.price?.slice(1)) || 0 }));\n\n const defaultProduct = offerData?.products?.[0];\n const selectedTier = find_tier(defaultProduct?.merchandizedTiers || [], currentTierName);\n const selectedPrice = find_term(selectedTier?.prices || [], currentTermName);\n\n const product = createProductV2({\n discountIds: [],\n prepaidTerm: 1,\n productId: offerData?.products?.[0]?.id || '',\n productPrice: selectedPrice?.initialListPrice,\n supplementSelections: selectedSupplements,\n tierName: currentTierName,\n });\n\n const associateType = this._cartBuilderItem.offers.find((offer) => offer.offerId === offerId)?.selections\n ?.associateType;\n if (associateType) {\n Object.assign(product, { productInfo: { ...product.productInfo, associateType } });\n }\n\n product.productFamily = defaultProduct?.productFamily;\n product.productType = defaultProduct?.productType;\n product.productVersion = defaultProduct?.productVersion;\n if (selectedTier?.fees) {\n product.fees = selectedTier.fees;\n }\n\n const offerSelection = createOfferSelection({\n offerId,\n offerProducts: [product],\n });\n return offerSelection;\n }\n\n defaultOffer() {\n return cartBuilderOfferData[this.defaultOfferId()];\n }\n\n defaultOfferId(): string {\n return this.findOfferIdForRegion(this.availableRegions()[0]?.value?.toString());\n }\n\n defaultPlanConfiguration(): PlanConfigurationState {\n return {\n currentSupplements: this.defaultSupplements(),\n currentTermName: this.defaultTerm(),\n currentTierName: this.defaultTier(),\n offerId: this.defaultOfferId(),\n region: this.defaultRegion(),\n };\n }\n\n defaultRegion(): string {\n return '';\n }\n\n defaultSupplements(): string[] {\n return [];\n }\n\n defaultTerm(): string {\n const monthlyTerm = this.defaultOffer()?.products?.[0].merchandizedTiers?.[0].prices?.find(\n (price) => price.billingPeriod === Offers.BillingPeriod.MONTHLY,\n )?.billingPeriod;\n return monthlyTerm || this.defaultOffer()?.products?.[0].merchandizedTiers?.[0].prices?.[0].billingPeriod || '';\n }\n\n defaultTier(): string {\n return this.defaultOffer()?.products?.[0]?.merchandizedTiers?.[0]?.name || '';\n }\n\n extractPrices({\n offerId,\n supplements,\n termName,\n tierName,\n }: {\n offerId: string;\n tierName: string;\n termName: string;\n supplements: string[];\n }) {\n return this.findPrices({ offerId, supplements, termName, tierName });\n }\n\n findOfferIdForRegion(region: string): string {\n const offerIds: string[] = this._cartBuilderItem.offers?.map((itemOfferConfig) => itemOfferConfig.offerId);\n if (offerIds.length === 1) {\n return offerIds[0];\n } else {\n for (let i = 0; i < offerIds.length; i++) {\n const offer = cartBuilderOfferData[offerIds[i]];\n for (let j = 0; j < offer.availableLocalities.length; j++) {\n if (region === offer.availableLocalities[j].abbreviation) {\n return offerIds[i];\n }\n }\n }\n }\n\n if (!offerIds[0]) {\n throw new Error(`no offer found for region ${region}`);\n }\n\n return offerIds[0];\n }\n\n productTypeForOfferId(offerId: string) {\n return this.simpleProductDataForOfferId(offerId)?.productType;\n }\n\n productFamilyForOfferId(offerId: string): string {\n return cartBuilderOfferData[offerId]?.products?.[0]?.productFamily || '';\n }\n\n simpleProductDataForOfferId(offerId: string): CartBuilderProduct | undefined {\n const offer = cartBuilderOfferData[offerId];\n const productId = offer?.products?.[0]?.id;\n const productVersion = cartBuilderOfferData[offerId]?.products?.[0]?.productVersion || '';\n const simpleProductData = cartBuilderSimpleProductDataMap[productId + '|' + productVersion.toString()];\n return simpleProductData;\n }\n\n private findAvailableAddOns({\n currentTermName,\n currentTierName,\n offerId,\n }: {\n currentTermName: string;\n currentTierName: string;\n offerId: string;\n }) {\n const offer = cartBuilderOfferData[offerId];\n const productId = cartBuilderOfferData[offerId].products?.[0]?.id;\n const productVersion: number = cartBuilderOfferData[offerId].products?.[0]?.productVersion || 0;\n const simpleProductData: CartBuilderProduct =\n cartBuilderSimpleProductDataMap[productId + '|' + productVersion.toString()];\n\n if (!offer.products || offer.products.length != 1 || !offer.products[0].merchandizedTiers) return [];\n\n let tier = find_tier(offer.products[0].merchandizedTiers, currentTierName);\n\n if (tier === null) {\n tier = offer.products[0].merchandizedTiers[0];\n }\n\n if (!tier) return [];\n\n // Find the pricing term\n const price = find_term(tier?.prices || [], currentTermName);\n if (!price) return [];\n\n if (!price.supplements) {\n return [];\n }\n const supplements = downcaseKeys(simpleProductData?.supplements || {});\n const supplementsExcludingSkipped = price.supplements.filter(\n (supplement) =>\n !this._cartBuilderItem.offers\n .find((itemOffer) => itemOffer.offerId === offer.id)\n ?.settings?.supplements?.filter((supplementSetting) => supplementSetting.skip === true)\n ?.map((supp) => supp.name?.toLowerCase())\n ?.includes(supplement.name?.toLowerCase() || ''),\n );\n return supplementsExcludingSkipped.map((supplement) => ({\n name: supplements[supplement?.name?.toLowerCase() || ''],\n price: get_price(supplement?.initialListPrice || 0, currentTermName),\n value: supplement?.name || '',\n }));\n }\n\n private findAvailableRegions(): SelectOption[] {\n const offerRegions: string[] = [];\n let options: SelectOption[] = [];\n const offerIds = this._cartBuilderItem.offers?.map((offer) => offer?.offerId);\n\n for (let i = 0; i < (offerIds.length || 0); i++) {\n const offerId = offerIds[i];\n const offer = cartBuilderOfferData[offerId];\n\n for (let j = 0; j < offer.availableLocalities.length; j++) {\n if (!(offer.availableLocalities[j].abbreviation in offerRegions)) {\n offerRegions.push(offer.availableLocalities[j].abbreviation);\n options.push({ label: offer.availableLocalities[j].name, value: offer.availableLocalities[j].abbreviation });\n }\n }\n }\n\n // Use only the regions the user is licensed to sell in (for legal products)\n if (regionData) {\n options = [];\n for (let i = 0; i < regionData.length; i++) {\n if (offerRegions.includes(regionData[i].abbreviation)) {\n options.push({ label: regionData[i].fullName, value: regionData[i].abbreviation });\n }\n }\n }\n\n // Allow in the invalid regions if not legal\n if (invalidRegionData) {\n for (let i = 0; i < invalidRegionData.length; i++) {\n if (offerRegions.includes(invalidRegionData[i].abbreviation)) {\n options.push({ label: invalidRegionData[i].fullName, value: invalidRegionData[i].abbreviation });\n }\n }\n }\n\n options.sort((a, b) => {\n if (a.label < b.label) return -1;\n if (a.label > b.label) return 1;\n return 0;\n });\n this._availableRegions = options;\n return options;\n }\n\n /**\n * Returns the total price of the item, given current selections.\n */\n totalPrice({\n offerId,\n supplements,\n termName,\n tierName,\n }: {\n offerId: string;\n tierName: string;\n termName: string;\n supplements: string[];\n }): number {\n const prices = this.extractPrices({ offerId, supplements, termName, tierName });\n\n return Number(prices.totalPrice?.slice(1));\n }\n\n private findAvailableTiers(offerId: string, currentTermName: string) {\n const tiers = cartBuilderOfferData?.[offerId]?.products?.[0].merchandizedTiers || [];\n\n const productId = cartBuilderOfferData?.[offerId]?.products?.[0].id;\n const productVersion = cartBuilderOfferData?.[offerId]?.products?.[0]?.productVersion;\n const simpleProductData = cartBuilderSimpleProductDataMap[productId + '|' + productVersion?.toString()];\n\n if (!simpleProductData || !simpleProductData.tiers) return [];\n const options: TierRadio[] = [];\n for (let i = 0; i < tiers?.length; i++) {\n const tierNameFromCBOfferData = tiers?.[i]?.name || '';\n const tierNameFromSimpleProductData = simpleProductData.tiers[tierNameFromCBOfferData] || tierNameFromCBOfferData;\n let priceString = 0;\n if (currentTermName) {\n for (let j = 0; j < (tiers?.[i]?.prices?.length || 0); j++) {\n if (tiers?.[i]?.prices?.[j]?.billingPeriod === currentTermName) {\n priceString = tiers?.[i]?.prices?.[j]?.initialListPrice || 0;\n options.push({\n name: tierNameFromSimpleProductData,\n price: priceString,\n tierName: tierNameFromCBOfferData,\n });\n }\n }\n }\n }\n this._availableTiers = options;\n return options;\n }\n\n private findPrices({\n offerId,\n supplements,\n termName,\n tierName,\n }: {\n offerId: string;\n tierName: string;\n termName: string;\n supplements: string[];\n }): Prices {\n const offer = cartBuilderOfferData[offerId];\n\n if (!offer.products || offer.products.length != 1 || !offer.products[0].merchandizedTiers) return {};\n\n let tier = find_tier(offer.products[0].merchandizedTiers, tierName);\n\n if (tier === null) {\n tier = offer.products[0].merchandizedTiers[0];\n }\n\n if (!tier) return {};\n\n // Find the price and the term\n let price = 0;\n let offerPrice: Offers.Price | null = null;\n for (let i = 0; i < (tier?.prices?.length || 0); i++) {\n if (termName.toLowerCase() === tier?.prices?.[i]?.billingPeriod?.toLowerCase()) {\n offerPrice = tier.prices?.[i];\n price = tier.prices?.[i]?.initialListPrice || 0;\n break;\n }\n }\n\n if (offerPrice === null) {\n return {};\n }\n\n // Calcluate any fees\n let fees = 0;\n if (tier.fees) {\n for (const key in tier.fees) {\n fees = fees + tier.fees[key];\n }\n }\n const planCardPrice = price;\n for (let i = 0; i < (offerPrice?.supplements?.length || 0); i++) {\n const supplement: Offers.MerchandizedSupplement | undefined = offerPrice?.supplements?.[i];\n\n if (supplements?.includes(supplement?.name || '')) {\n price = price + (supplement?.initialListPrice || 0);\n }\n }\n const getPrice = get_price(price, termName);\n const getFees = get_price(fees, 'ONCE');\n const totalPrice = get_price(price + fees, termName);\n const titlePrice = parseFloat((planCardPrice === 0 ? fees : planCardPrice)?.toFixed(2));\n\n const prices = {\n planFees: getFees,\n planPrice: getPrice,\n titlePrice,\n totalPrice,\n };\n\n this._prices = prices;\n return prices;\n }\n}\n","import {\n Brand,\n createD2COrderV2LowVerbosity,\n createWALSOrderV2MidVerbosity,\n Environment,\n OrderServiceV2,\n OrderVersion,\n RedirectService,\n USStates,\n} from '@legalshield/commerce-cart-library';\nimport { Purchases } from '@legalshield/frontend-commons';\n\nimport themisAnalytics from '../';\nimport { OfferConfigurationMap } from '../routes/AppRoutes';\nimport { handleError } from '../utils/error.util';\nimport { CartBuilderItem } from '../view-models/cart-builder-item';\n\nexport const transformProductToECommerceItem = (createdOrder: Purchases.OrderResource) => {\n createdOrder.offerSelections?.flatMap((offerSelection) =>\n offerSelection.products.map((product) => ({\n brand: product.productType || '',\n category: product.productFamily || '',\n item_id: product.productId || '',\n item_name: product.tierName || '', // if productFamily is null, default to empty string\n price: product.productPrice || 0, // if productPrice is null, default to 0\n quantity: 1, // if quantity is null, default to 1\n })),\n );\n};\n\nexport const transformOfferSelectionToECommerceItems = (offerSelection: Purchases.Offer2[] | null | undefined) => {\n if (!offerSelection) {\n return [];\n }\n\n return offerSelection.flatMap((offer) => offer.products.map(transformProductToECommerceItem));\n};\n\nconst onBeginCheckout = (createdOrder: Purchases.OrderResource) => {\n const eventItems = createdOrder.offerSelections?.flatMap((offerSelection) =>\n offerSelection.products?.map((product) => ({\n item_id: product.productId || '',\n item_name: product?.tierName || '',\n price: product?.productPrice || 0,\n quantity: 1,\n })),\n );\n\n if (!eventItems) {\n return;\n }\n\n themisAnalytics.triggerBeginCheckoutEvent({\n currency: 'USD',\n items: eventItems,\n value: createdOrder.totalPrice || 0,\n });\n};\n\n/**\n * Creates an order that includes all of the configured offers.\n * Maps the `offerConfigurationMap` into `offerSelections`, and using\n * the commerce-cart-library to create an order with them.\n */\nconst checkout = async ({ offerConfigurationMap }: { offerConfigurationMap: OfferConfigurationMap }) => {\n try {\n const offerSelections: Purchases.Offer2[] = [];\n\n /**\n * `orderTotalPrice`, `orderTermName`, `orderTermName`, `orderBrand`, and `orderRegion`\n * are calculated for the entire order, not just one `offerSelection`\n **/\n let orderTotalPrice = 0;\n let orderTermName = '';\n let orderBrand: Brand | null = null;\n let orderRegion = '';\n\n [...offerConfigurationMap].forEach(([cartBuilderItemIndex, planConfiguration]) => {\n const {\n offerId,\n currentTermName: termName,\n currentTierName: tierName,\n currentSupplements: supplements,\n region,\n } = planConfiguration;\n const cartBuilderItem = new CartBuilderItem(cartBuilderItemIndex);\n offerSelections.push(cartBuilderItem.buildOfferSelection(planConfiguration));\n\n if (!tierName || !termName || !offerId || !supplements) {\n return '';\n }\n orderTermName ||= termName;\n orderBrand ||=\n cartBuilderItem.simpleProductDataForOfferId(offerId)?.productFamily === 'Identity'\n ? Brand.IDSHIELD\n : Brand.LEGALSHIELD;\n orderRegion ||= region || '';\n const prices = cartBuilderItem.extractPrices({ offerId, supplements, termName, tierName });\n orderTotalPrice += Number(prices.totalPrice?.slice(1));\n });\n\n const requestPayload = {\n billingFrequency: {\n period: orderTermName as Purchases.BillingPeriod,\n term: 1,\n },\n currency: Purchases.Currency.USD,\n marketLocale: pplsi.market,\n marketingSite: undefined,\n offerSelections,\n totalPrice: orderTotalPrice,\n };\n\n const WALSOrderInfo: Purchases.OrderRequest2 = !associateData\n ? createD2COrderV2LowVerbosity(requestPayload)\n : createWALSOrderV2MidVerbosity({\n ...requestPayload,\n marketingSite: 'BUYNOW',\n sponsorId: associateData.id,\n });\n\n if (associateData) {\n WALSOrderInfo.source = {\n ...WALSOrderInfo.source,\n marketingChannel: 'BUYNOW',\n sponsorFriendlyId: associateData.friendlyId,\n sponsorId: associateData.id,\n sponsorSiteName: associateData.sitename,\n } as Purchases.Source2;\n }\n\n const redirectService = new RedirectService();\n const orderServiceV2 = new OrderServiceV2();\n const walsOrder = await orderServiceV2.anonymousCreateOrderV2({\n environmentArg: getEnvironment(),\n orderInfo: WALSOrderInfo,\n });\n\n onBeginCheckout(walsOrder);\n\n redirectService.redirectToCheckout({\n brand: orderBrand || Brand.LEGALSHIELD,\n environment: getEnvironment(),\n hostName: associateData?.sitename\n ? associateData.sitename + '.' + pplsi?.envPrefix + 'legalshieldassociate.com'\n : '',\n marketLocale: pplsi.market,\n orderID: walsOrder?.id?.toString() || '',\n orderVersion: OrderVersion.ORDERV2OFFERS,\n region: orderRegion as USStates,\n source: 'https://cart.' + pplsi.envPrefix + 'legalshield.com',\n });\n } catch (err) {\n handleError(err, {\n context: 'Order Creation',\n });\n }\n};\n\nconst getEnvironment = () => {\n switch (pplsi.envPrefix) {\n case 'uat-':\n return Environment.UAT;\n case 'dev-':\n return Environment.DEVELOPMENT;\n default:\n return Environment.PRODUCTION;\n }\n};\n\nexport const CheckoutService = {\n checkout,\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./cross-sell.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./cross-sell.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { FC } from 'react';\nimport {\n Button,\n Container,\n Grid,\n GridRow,\n Heading,\n Icon,\n List,\n ListItem,\n ListItemText,\n PlanCard,\n PlanCardInfo,\n Text,\n Title,\n} from '@legalshield/adonis-ux-framework';\n\nimport './cross-sell.scss';\n\nexport const CrossSell: FC = () => {\n const features = [\n 'interface_check',\n 'Credit Identity',\n 'Full Service Identity Restoration',\n 'Cybersecurity and Device Monitoring',\n '$1 Million Protection',\n ];\n return (\n \n \n \n \n \n <Heading as=\"T39\" text=\"Need identity protection?\" classNames={['title']} />\n <Text\n text=\"All membership plans come with a 30-day satisfaction guarantee.\"\n textSize=\"large\"\n classNames={['title-description']}\n />\n <Grid classNames={['cross-sell-body ']}>\n <PlanCard>\n <PlanCardInfo\n appName={'IDShield'}\n planName={'IDShield'}\n planPrice={`$${14.95}`}\n planRecurrence={'/month starting'}\n planType={'Identity Plan'}\n showFees={false}\n classNames={['plan-card-info']}\n >\n <Grid classNames={['cross-sell-content']}>\n <Grid classNames={['features']}>\n <GridRow>\n <Heading text=\"Included features:\" classNames={['feat-head']} />\n </GridRow>\n <GridRow classNames={['feat-detail']}>\n <List classNames={['feat-list']}>\n <>\n {features.map((feature, index) => {\n return (\n <ListItem key={index}>\n <Icon name=\"interface_check\" classNames={['icon']} />\n <ListItemText primary={feature} />\n </ListItem>\n );\n })}\n </>\n </List>\n </GridRow>\n </Grid>\n <Grid classNames={['bottom']}>\n <GridRow>\n <Button label=\"Add ID Protection\" stretch variant=\"primary\" />\n </GridRow>\n <GridRow classNames={['skip-button-container']}>\n <Button label=\"Skip for now\" stretch variant=\"secondary\" classNames={['skip-button']} />\n </GridRow>\n </Grid>\n </Grid>\n </PlanCardInfo>\n </PlanCard>\n </Grid>\n </Container>\n </GridRow>\n </Grid>\n </Grid>\n );\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./guideline.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./guideline.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { Grid, Text } from '@legalshield/adonis-ux-framework';\n\nimport './guideline.scss';\n\nexport const Guideline = () => {\n const searchParams = new URLSearchParams(location.search);\n const data = searchParams.get('data');\n\n return (\n <Grid classNames={['guideline-container pt-8 pb-8']}>\n <Grid classNames={['guideline-sub-container pt-8 pb-8']}>\n <Grid>\n <Text classNames={['heading pt-6 pb-6']}>{string_table.MODAL_HEADING}</Text>\n </Grid>\n <Grid>\n <Text as=\"p\" text={string_table.START_UP_MODAL_TEXT} />\n <ol className=\"description-points pl-4\">\n <li>\n {`${string_table.MODAL_POINT_ONE}`}{' '}\n <Link to={`/AA.APP_8.21_4P.pdf?data=${data}`} target=\"_blank\">\n {string_table.ASSOCIATE_AGREEMENT}\n </Link>\n </li>\n <li>\n {' '}\n {string_table.MODAL_POINT_TWO}\n <ul>\n <li>{string_table.MODAL_POINT_TWO_A}</li>\n <li>{string_table.MODAL_POINT_TWO_B}</li>\n <li>{string_table.MODAL_POINT_TWO_C}</li>\n <li>{string_table.MODAL_POINT_TWO_D}</li>\n </ul>\n </li>\n <li>\n {string_table.MODAL_POINT_THREE}\n <ul>\n <li>{string_table.MODAL_POINT_THREE_A}</li>\n <li>{string_table.MODAL_POINT_THREE_B}</li>\n <li>{string_table.MODAL_POINT_THREE_C}</li>\n </ul>\n </li>\n </ol>\n <Text>{string_table.START_UP_MODAL_BOTTOM_TEXT_ONE}</Text>\n <Text>{string_table.START_UP_MODAL_BOTTOM_TEXT_ONE_A}</Text>\n <Text as=\"p\" classNames={['description']}>\n {string_table.START_UP_MODAL_BOTTOM_TEXT_TWO}\n </Text>\n <Text as=\"p\" classNames={['description']}>\n <>\n {`${string_table.START_UP_MODAL_BOTTOM_TEXT_THREE} `}\n <b>{string_table.HELP_NO}</b>\n </>\n </Text>\n </Grid>\n </Grid>\n </Grid>\n );\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./plan-configuration.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./plan-configuration.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import React from 'react';\nimport { PlanCardBillingTerm } from '@legalshield/adonis-ux-framework';\n\nimport { dd_term_strings } from '../../../strings/PeriodStrings';\nimport { PlanConfigurationSetters } from '../../routes/AppRoutes';\nimport { get_price } from '../../utils';\n\ninterface BillingTermsProps {\n planConfigurationSetters: PlanConfigurationSetters;\n currentTermName: string;\n currentTierName: string;\n offerId: string;\n region: string;\n setAndScrollToRegionError: () => void;\n}\n\nexport const BillingTerms: React.FC<BillingTermsProps> = ({\n planConfigurationSetters,\n currentTermName,\n currentTierName,\n offerId,\n region,\n setAndScrollToRegionError,\n}) => {\n const offer = cartBuilderOfferData[offerId];\n if (!offer.products || offer.products.length != 1 || !offer.products[0].merchandizedTiers) return <></>;\n\n let tier = null;\n for (let i = 0; i < offer.products[0].merchandizedTiers.length; i++) {\n if (offer?.products?.[0]?.merchandizedTiers?.[i]?.name?.toLowerCase() === currentTierName.toLowerCase()) {\n tier = offer.products[0].merchandizedTiers[i];\n break;\n }\n }\n if (tier === null) {\n tier = offer.products[0].merchandizedTiers[0];\n }\n\n const options: string[] = [];\n\n for (let i = 0; i < (tier?.prices?.length || 0); i++) {\n const lcm = pplsi.market?.toLocaleLowerCase();\n\n let label = dd_term_strings[tier?.prices?.[i]?.billingPeriod || ''][lcm];\n label = label + ' @ ' + get_price(tier?.prices?.[i]?.initialListPrice || 0, tier?.prices?.[i]?.billingPeriod || '');\n options.push(tier?.prices?.[i]?.billingPeriod || '');\n }\n\n let fees = 0;\n if (tier.fees) {\n for (const key in tier.fees) {\n fees = fees + tier.fees[key];\n }\n }\n\n const onTermChange = (selectedTermIndex: number) => {\n if (!region) {\n return setAndScrollToRegionError();\n }\n if (options[selectedTermIndex] === currentTermName) {\n return;\n }\n planConfigurationSetters?.setCurrentTermName(options[selectedTermIndex]);\n };\n\n return (\n <div className=\"mt-5 billing-container\">\n {(options?.length > 1 && (\n <PlanCardBillingTerm\n availableBillingTerms={(options ?? []).sort((a, b) => {\n const order = ['DAILY', 'WEEKLY', 'MONTHLY', 'QUARTERLY', 'ANNUAL'];\n const indexA = order.indexOf(a);\n const indexB = order.indexOf(b);\n return indexA - indexB;\n })}\n handleBillingTermClick={(index) => onTermChange(index)}\n selectedBillingTerm={currentTermName}\n />\n )) || <></>}\n </div>\n );\n};\n","import React from 'react';\nimport { Button, Container, Divider, Grid, GridCol, GridRow, Text } from '@legalshield/adonis-ux-framework';\n\nimport { get_term } from '../../utils';\nimport { Prices } from '../../view-models/cart-builder-item';\n\nexport function CartBuilderFooter({\n currentTermName,\n disableContinueButton,\n next,\n prices,\n runningTotalPrice,\n runningTotalItems,\n selectedCardCount,\n}: {\n currentTermName: string;\n disableContinueButton: boolean;\n next: () => void;\n prices: Prices;\n runningTotalPrice: string;\n runningTotalItems: number;\n selectedCardCount: number;\n}) {\n return (\n <Grid classNames={['total-section']}>\n <GridRow variant=\"center\">\n <Container\n alignItems=\"center\"\n classNames={['mt-4 mb-4 ml-4', 'total-section-container']}\n justifyContent=\"center\"\n >\n <Grid>\n <GridRow variant=\"halves-fixed\" classNames={['price-section']}>\n <GridCol>\n <Text text={get_term(currentTermName)} textSize=\"large\" />\n {prices?.planFees !== '$0.00' ? (\n <>\n <br />\n <Text text={string_table.ONE_TIME_FEE_CAPS} textSize=\"large\" />\n </>\n ) : (\n <></>\n )}\n </GridCol>\n <GridCol>\n <Text\n text={prices?.planPrice || '$0.00'}\n textSize=\"large\"\n classNames={['price-total-section']}\n data-pplsi-event-id={'total-container-monthly-price'}\n />\n {prices?.planFees !== '$0.00' ? (\n <>\n <br />\n <Text\n text={`${prices?.planFees}`}\n textSize=\"large\"\n classNames={['price-total-section']}\n data-pplsi-event-id={'total-container-fees-price'}\n />\n </>\n ) : (\n <></>\n )}\n </GridCol>\n <GridCol>\n <Text\n text={`${string_table?.TOTAL} ${`(${runningTotalItems + ' ' + string_table?.ITEMS}${\n runningTotalItems > 1 ? 's' : ''\n })`}`}\n textWeight=\"bold\"\n textSize=\"large\"\n style={{ width: '380px' }}\n />\n </GridCol>\n <GridCol>\n <Text\n text={`$${runningTotalPrice}`}\n textWeight=\"bold\"\n textSize=\"large\"\n classNames={['price-total-section']}\n data-pplsi-event-id={'total-container-total-price'}\n />\n </GridCol>\n </GridRow>\n <GridRow>\n <Button\n classNames={['mb-6', 'button-next']}\n label={string_table?.CONTINUE}\n stretch\n variant=\"primary\"\n onClick={() => next()}\n disabled={disableContinueButton}\n pplsiEventId={'continue-button'}\n />\n </GridRow>\n </Grid>\n </Container>\n </GridRow>\n </Grid>\n );\n}\n","export enum LsEnv {\n Dev = 'dev',\n Prod = 'prod',\n Uat = 'uat',\n Stag = 'stag',\n}\ninterface IEnvMap {\n apps: {\n atlas_base_url: string;\n eligibilites_url: string;\n token: string;\n };\n domain: string;\n request_codes: {\n Unauthorized: number;\n Forbidden: number;\n TooManyRequests: number;\n InternalServerError: number;\n };\n gtm: {\n auth: string;\n gtmId: string;\n preview: string;\n };\n timeout: number;\n}\n\nconst getLsEnv = (): LsEnv => {\n if (realmDomain.includes('uat-')) {\n return LsEnv.Uat;\n } else if (realmDomain.includes('dev-')) {\n return LsEnv.Dev;\n } else if (realmDomain.includes('stag-')) {\n return LsEnv.Stag;\n } else {\n return LsEnv.Prod;\n }\n};\n\nconst defaultEnv = {\n apps: {\n atlas_base_url: 'https://atlas-queries.api.dev-legalshield.com',\n eligibilites_url: 'https://eligibilities.api.dev-legalshield.com',\n token:\n 'sso-jwt eyJhbGciOiJSUzI1NiIsImtpZCI6IjBlMjZjMmZhLTU4MTMtNDM0Mi05MTU2LWIzMzhhMDVmZWFmNCIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI1OWEwODk3My1hZjg1LTQ4MWEtYmUzYi0wMDk0OTJlYjJjZmIiLCJpYXQiOjE2NjM5MTUwNjUsInJhdCI6MTY2MzkxNTA2NSwic3ViIjoiM2EzZDIyYWMtZTdjYy0xMWVhLWFkYzEtMDI0MmFjMTIwMDAyIiwic3ViX3R5cGUiOiJNYWNoaW5lIiwiaXNzIjoiaHR0cDovL2lkZW50aXRpZXMuYXBpLmRldi1sZWdhbHNoaWVsZC5jb20iLCJtYWsiOiJsb2dpbi1zZXJ2aWNlIiwibWZ0IjpmYWxzZSwiZmFjdG9ycyI6eyJrX2FwaWtleSI6MTY2MzkxNTA2NX19.ump1y7xcdK-0jiWfuKRgiqnqPRGEsWTVCGigdElEy98lQXjK6M-ElAgQWfHmUKX-BjmpE_W5ako2Em-ln9Y0uEFSq35CrjuvjCjX61gdTt0dOm0_YUSKn3ch8cFwuAyqxkNrNvyvUCHHu4C_DKmgaSMCg6iK1M1b79QgObuDOBIh-RicseUlE-57dp9H6F_7OPCUg7gPaRaBq-m516QT5v-Q8sxy9lwd6tgaDVYRhdSb_ZmeavsXBXp4fOt_59r5cZuhth7LC3TKKKOXeJT0-blJpJiabIe3AMLvDq30XL-cGYxZQWXQKAsWc4D35xr4drogjoDNdQroIfTgzxiEqA',\n },\n domain: realmDomain,\n gtm: {\n auth: '3Xc1miVyp0KakXocOPvRzA',\n gtmId: 'GTM-T9SMVMQ',\n preview: 'env-1',\n },\n request_codes: {\n Forbidden: 403,\n InternalServerError: 500,\n TooManyRequests: 429,\n Unauthorized: 401,\n },\n timeout: 5000,\n} as IEnvMap;\nconst currentEnv = Object.assign({}, defaultEnv);\nconst lsEnv = getLsEnv();\nswitch (lsEnv) {\n case 'dev':\n currentEnv.gtm = {\n auth: 'ytjelxx0a_TU46dOuCxuyg',\n gtmId: 'GTM-T9SMVMQ',\n preview: 'env-23',\n };\n break;\n case 'uat':\n currentEnv.gtm = {\n auth: 'xm_32v5i1se6FMPLv7vZiw',\n gtmId: 'GTM-T9SMVMQ',\n preview: 'env-24',\n };\n break;\n case 'stag':\n currentEnv.gtm = {\n auth: 'ytjelxx0a_TU46dOuCxuyg',\n gtmId: 'GTM-T9SMVMQ',\n preview: 'env-23',\n };\n break;\n}\n\nconst associateProductFamily = 'Associate';\nconst legalProductFamily = 'Legal';\nconst identityProductFamily = 'Identity';\n\nconst productFamily = {\n associate: associateProductFamily,\n identity: identityProductFamily,\n legal: legalProductFamily,\n};\n\nexport default {\n currentEnv: currentEnv,\n getLsEnv: getLsEnv,\n productFamily: productFamily,\n};\n","import React, { ReactNode } from 'react';\nimport { IPlanCardAddOnsProps, IPlanCardInfoProps, PlanCardInfo } from '@legalshield/adonis-ux-framework';\n\nimport envConfig from '../../config';\nimport { downcaseKeys, find_tier, getPerTerm } from '../../utils';\nimport { CartBuilderItem } from '../../view-models/cart-builder-item';\n\ninterface PlanCardInterface extends IPlanCardInfoProps, IPlanCardAddOnsProps {\n planFeesLabel: string;\n productFamily: string;\n}\n\ninterface PlanInfoContainerProps {\n cartBuilderItem: CartBuilderItem;\n currentSupplements: string[];\n currentTermName: string;\n currentTierName: string;\n offerId: string;\n planPrice?: number;\n region: string;\n seeDetailText?: string;\n children: ReactNode | ReactNode[];\n}\n\nexport const PlanInfoContainer: React.FC<PlanInfoContainerProps> = ({\n cartBuilderItem,\n children,\n currentSupplements,\n currentTermName,\n currentTierName,\n offerId,\n planPrice,\n region,\n seeDetailText,\n}) => {\n const ASSOCIATE_AGREEMENT_PRODUCT_TYPE = 'Associate Agreement';\n const simpleProductData = cartBuilderItem.simpleProductDataForOfferId(offerId);\n const isAssociateAgreement =\n simpleProductData?.productType?.toLowerCase() === ASSOCIATE_AGREEMENT_PRODUCT_TYPE.toLowerCase();\n const planCardInfo: PlanCardInterface = {\n appName: simpleProductData?.productFamily === 'Identity' ? 'IDShield' : 'LegalShield',\n planFeesLabel: isAssociateAgreement ? string_table.FEE_LABEL_ASSOCIATE : '',\n planName: isAssociateAgreement ? string_table.ASSOCIATE_START_UP : simpleProductData?.friendlyName,\n planRecurrence: isAssociateAgreement ? `/${string_table.ONE_TIME_FEE}` : getPerTerm(currentTermName),\n planType: isAssociateAgreement ? '' : `${simpleProductData?.productFamily} Plan`,\n productFamily: simpleProductData?.productFamily || '',\n };\n\n const getContractIds = (): string => {\n const product = cartBuilderOfferData[offerId]?.products?.[0];\n if (!product) {\n return '';\n }\n const simpleProduct = cartBuilderSimpleProductDataMap[`${product.id}|${product.productVersion}`];\n if (!simpleProduct) {\n return '';\n }\n const contracts = simpleProduct.contracts;\n const baseRegionContract = contracts.product.byRegion[region];\n\n const tierContractIds = [\n contracts.tiers[currentTierName]?.defaultContract || contracts.tiers[currentTierName]?.byRegion[region],\n ];\n\n const standardizedContracts = downcaseKeys(contracts.supplements);\n\n const supplementContractIds = currentSupplements.flatMap((supplement) => [\n standardizedContracts[supplement.toLowerCase()]?.byRegion[region] ||\n standardizedContracts[supplement.toLowerCase()]?.defaultContract,\n ]);\n\n const contractIds = [baseRegionContract || contracts.product.defaultContract]\n .concat(tierContractIds)\n .concat(supplementContractIds)\n .filter((id) => id);\n return contractIds.join(',');\n };\n\n const handleSeeDetails = () => {\n const offer = cartBuilderOfferData[offerId];\n const product = offer?.products?.[0];\n const tier = find_tier(product?.merchandizedTiers || [], currentTierName);\n let url = `https://features.${pplsi.realmDomain}/product?id=${product?.id}&productFamily=${\n product?.productFamily\n }&productType=${product?.productType}&productVersion=${product?.productVersion}&tier=${\n tier?.name\n }&market=${pplsi.market?.toLocaleLowerCase()}`;\n if (currentSupplements.length) {\n url += `&supplements=${currentSupplements.toString()}`;\n }\n const contractsIds = getContractIds();\n if (contractsIds) {\n // note that contractsIds is the query param name, not contractIds\n url += `&contractsIds=${contractsIds}`;\n }\n window.open(url);\n };\n\n const buyNowKey = [\n cartBuilderOfferData[offerId]?.products?.[0].productFamily,\n cartBuilderOfferData[offerId]?.products?.[0].productType,\n cartBuilderOfferData[offerId]?.products?.[0].productVersion,\n ].join('|');\n\n const planDesc =\n (cartBuilderBuyNowOfferDataMapList?.find((item) => !!item[buyNowKey]?.description) || {})[buyNowKey]?.description ||\n '';\n\n const planName = planCardInfo.productFamily === 'Associate' ? string_table.ASSOCIATE : planCardInfo?.planName;\n let planType = string_table.BUYNOW_SUBTITLELEGALPLAN;\n if (planCardInfo.productFamily === 'Identity') {\n planType = string_table.BUYNOW_SUBTITLEIDENTITYPLAN;\n } else if (planCardInfo.productFamily === 'Associate') {\n planType = '';\n }\n return (\n <PlanCardInfo\n isSelected\n appName={planCardInfo?.appName}\n planFees={planCardInfo?.planFeesLabel}\n planName={planName}\n planPrice={`$${planPrice}`}\n planRecurrence={planCardInfo?.planRecurrence}\n planType={planType}\n showFees={!!planCardInfo?.planFeesLabel}\n showSeeDetails={planCardInfo?.productFamily !== envConfig.productFamily.associate && (region as string) !== ''}\n seeDetailText={seeDetailText}\n planDescription={planDesc}\n onSeeDetailsClick={handleSeeDetails}\n data-pplsi-event-id={'plan-card-summary-info'}\n >\n {children}\n </PlanCardInfo>\n );\n};\n","import React, { useMemo } from 'react';\nimport { PlanCardAddOns } from '@legalshield/adonis-ux-framework';\n\nimport { CartBuilderProduct } from '../../../types/globals';\nimport themisAnalytics from '../..';\nimport { PlanConfigurationSetters } from '../../routes/AppRoutes';\nimport { downcaseKeys, find_term, find_tier, get_price, getPerTerm } from '../../utils';\n\ninterface SupplementsProps {\n cartBuilderItemIndex: number;\n planConfigurationSetters: PlanConfigurationSetters;\n currentSupplements: string[];\n currentTermName: string;\n currentTierName: string;\n offerId: string;\n region: string;\n setAndScrollToRegionError: () => void;\n onChangeDisabled: boolean;\n disabledType?: string;\n selectedAddOn?: string;\n}\n\nexport const Supplements: React.FC<SupplementsProps> = ({\n cartBuilderItemIndex,\n planConfigurationSetters,\n currentSupplements,\n currentTermName,\n currentTierName,\n offerId,\n region,\n setAndScrollToRegionError,\n onChangeDisabled = false,\n disabledType,\n selectedAddOn,\n}) => {\n const availableAddOns = useMemo(() => {\n const offer = cartBuilderOfferData[offerId];\n const productId = cartBuilderOfferData[offerId].products?.[0]?.id;\n const productVersion: number = cartBuilderOfferData[offerId].products?.[0]?.productVersion || 0;\n const simpleProductData: CartBuilderProduct =\n cartBuilderSimpleProductDataMap[productId + '|' + productVersion.toString()];\n\n if (!offer.products || offer.products.length != 1 || !offer.products[0].merchandizedTiers) return [];\n\n let tier = find_tier(offer.products[0].merchandizedTiers, currentTierName);\n\n if (tier === null) {\n tier = offer.products[0].merchandizedTiers[0];\n }\n\n if (!tier) return [];\n\n // Find the pricing term\n const price = find_term(tier?.prices || [], currentTermName);\n if (!price) return [];\n\n if (!price.supplements) {\n return [];\n }\n const supplements = downcaseKeys(simpleProductData?.supplements || {});\n let supplementsExcludingSkipped = price.supplements.filter(\n (supplement) =>\n !cartBuilderData.items[cartBuilderItemIndex].offers\n .find((itemOffer) => itemOffer.offerId === offer.id)\n ?.settings?.supplements?.filter((supplementSetting) => supplementSetting.skip === true)\n ?.map((supp) => supp.name?.toLowerCase())\n ?.includes(supplement.name?.toLowerCase() || ''),\n );\n\n /** Remove supplement for state MA */\n if ((tier?.name === 'Small Business Plus' || tier?.name === 'Small Business Pro') && region === 'MA') {\n supplementsExcludingSkipped = supplementsExcludingSkipped.filter(\n (supplement) => supplement.name !== 'trialDefenseBusiness',\n );\n }\n\n return supplementsExcludingSkipped.map((supplement) => ({\n name: supplements[supplement?.name?.toLowerCase() || ''],\n price: get_price(supplement?.initialListPrice || 0, currentTermName),\n value: supplement?.name || '',\n }));\n }, [cartBuilderOfferData, offerId, cartBuilderData.items, cartBuilderItemIndex, currentTermName, currentTierName]);\n\n /** Add or remove supplement */\n const onSupplementChange = (supplementName: string) => {\n if (!region) {\n return setAndScrollToRegionError();\n }\n if (!supplementName) {\n return;\n }\n const chosenSupplement = availableAddOns.find(\n (supplement) => supplement.value?.toLowerCase() === supplementName?.toLowerCase(),\n );\n let numberValue = 0;\n const value = chosenSupplement?.price || 0;\n\n if (typeof value === 'string') {\n numberValue = parseFloat(value.replace(/\\$/g, ''));\n }\n\n let newSupplements: string[] = [...currentSupplements];\n if (supplementName === 'homeBusiness_V2' && newSupplements.includes('businessPlus')) {\n return;\n } else if (newSupplements.includes(supplementName)) {\n themisAnalytics.triggerRemoveFromCartEvent({\n currency: 'USD',\n items: [{ item_id: chosenSupplement?.value || supplementName, item_name: supplementName, price: numberValue }],\n value: numberValue,\n });\n newSupplements = currentSupplements.filter((currentSupplementName) => currentSupplementName != supplementName);\n } else {\n themisAnalytics.triggerAddToCartEvent({\n currency: 'USD',\n items: [{ item_id: chosenSupplement?.value || supplementName, item_name: supplementName, price: numberValue }],\n value: numberValue,\n });\n newSupplements.push(supplementName);\n }\n planConfigurationSetters.setCurrentSupplements(newSupplements);\n };\n\n return (\n ((availableAddOns?.length || 0) > 0 && (\n <div className={'coverage'}>\n <h2 className={'mt-4 mb-2 ml-4'}>{string_table?.COVERAGE_ADD_ONS}</h2>\n <PlanCardAddOns\n availableAddOns={availableAddOns || []}\n onAddOnSelect={onChangeDisabled ? () => {} : onSupplementChange}\n planRecurrence={`${getPerTerm(currentTermName)}`}\n selectedAddOns={[...currentSupplements]}\n data-pplsi-event-id={'plan-card-add-ons'}\n disabledType={disabledType}\n selectedAddOn={selectedAddOn}\n />\n </div>\n )) || <></>\n );\n};\n","import React, { useMemo } from 'react';\nimport { PlanCardTierRadioButtonGroup } from '@legalshield/adonis-ux-framework';\n\nimport { PlanConfigurationSetters } from '../../routes/AppRoutes';\n\ninterface TiersProps {\n planConfigurationSetters: PlanConfigurationSetters;\n currentTermName: string;\n currentTierName: string;\n offerId: string;\n region: string;\n periodTerm?: string;\n setAndScrollToRegionError: () => void;\n onChangeDisabled: boolean;\n}\n\nexport const Tiers: React.FC<TiersProps> = ({\n planConfigurationSetters,\n currentTermName,\n currentTierName,\n offerId,\n region,\n setAndScrollToRegionError,\n onChangeDisabled = false,\n periodTerm,\n}) => {\n const availableTiers = useMemo(() => {\n const tiers = cartBuilderOfferData?.[offerId]?.products?.[0].merchandizedTiers || [];\n\n const productId = cartBuilderOfferData?.[offerId]?.products?.[0].id;\n const productVersion = cartBuilderOfferData?.[offerId]?.products?.[0]?.productVersion;\n const simpleProductData = cartBuilderSimpleProductDataMap[productId + '|' + productVersion?.toString()];\n\n if (!simpleProductData || !simpleProductData.tiers) return [];\n const options: { price: number; name: string; tierName: string }[] = [];\n for (let i = 0; i < tiers?.length; i++) {\n const tierNameFromCBOfferData = tiers?.[i]?.name || '';\n const tierNameFromSimpleProductData = simpleProductData.tiers[tierNameFromCBOfferData] || tierNameFromCBOfferData;\n let priceString = 0;\n if (currentTermName) {\n for (let j = 0; j < (tiers?.[i]?.prices?.length || 0); j++) {\n if (tiers?.[i]?.prices?.[j]?.billingPeriod === currentTermName) {\n priceString = tiers?.[i]?.prices?.[j]?.initialListPrice || 0;\n options.push({\n name: tierNameFromSimpleProductData,\n price: priceString,\n tierName: tierNameFromCBOfferData,\n });\n }\n }\n }\n }\n return options;\n }, [currentTermName, offerId]);\n\n const onTierChange = (selectedTierName: string): void => {\n if (!region) {\n return setAndScrollToRegionError();\n }\n const selectedTierData = availableTiers?.find((tier) => tier.name === selectedTierName);\n if (selectedTierData?.tierName === currentTierName) {\n return;\n }\n planConfigurationSetters?.setCurrentTierName(selectedTierData?.tierName || '');\n };\n\n return (\n (((availableTiers && availableTiers?.length) || 0) > 1 && (\n <PlanCardTierRadioButtonGroup\n availableTiers={availableTiers || []}\n selectedTier={availableTiers?.find((item) => item.tierName === currentTierName)?.name || ''}\n handleTierClick={onChangeDisabled ? () => {} : onTierChange}\n periodTerm={periodTerm}\n />\n )) || <></>\n );\n};\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport {\n Alert,\n Container,\n Grid,\n GridRow,\n Heading,\n PlanCard,\n PlanCardRegionPicker,\n Text,\n} from '@legalshield/adonis-ux-framework';\nimport { Offers } from '@legalshield/frontend-commons';\n\nimport './plan-configuration.scss';\n\nimport { per_term_strings } from '../../../strings/PeriodStrings';\nimport { CartBuilderData, CartBuilderOfferData } from '../../../types/globals';\nimport { BillingTerms } from '../../components/BillingTerms/BillingTerms';\nimport { CartBuilderFooter } from '../../components/CartBuilderFooter/CartBuilderFooter';\nimport { PlanInfoContainer } from '../../components/PlanInfoContainer/PlanInfoContainer';\nimport { Supplements } from '../../components/Supplements/Supplements';\nimport { Tiers } from '../../components/Tiers/Tiers';\nimport { useFeatureFlags } from '../../hooks/feature-flags.hook';\nimport { find_term, find_tier } from '../../utils';\nimport { logger } from '../../utils/logger';\nimport { CartBuilderItem, Prices } from '../../view-models/cart-builder-item';\nimport { OfferConfigurationMap, PlanConfigurationSetters, PlanConfigurationState } from '../AppRoutes';\n\nexport type AssociateType = 'Business' | 'Individual';\n\ninterface PlanConfigurationProps {\n cartBuilderData: CartBuilderData;\n cartBuilderItemIndex: number;\n cartBuilderOfferData: CartBuilderOfferData;\n continueOrCheckout: () => void;\n planConfiguration: PlanConfigurationState;\n planConfigurationSetters: PlanConfigurationSetters;\n runningTotalPrice: string;\n runningTotalItems: number;\n offerConfigurationMap: OfferConfigurationMap;\n}\n\nexport const isPlanValid = (key: number, regionName: string) => {\n const allAvaiableRegions = new CartBuilderItem(key).availableRegions();\n const existedRegion = allAvaiableRegions.find((item) => item.value === regionName);\n if (!existedRegion?.value) {\n return false;\n } else {\n return true;\n }\n};\n\nconst PlanConfigurationComponent = ({\n cartBuilderData,\n cartBuilderItemIndex,\n cartBuilderOfferData,\n continueOrCheckout,\n planConfiguration,\n planConfigurationSetters,\n runningTotalPrice,\n runningTotalItems,\n offerConfigurationMap,\n}: PlanConfigurationProps) => {\n const { multiselect } = useFeatureFlags();\n const [regionErrorMessage, setRegionErrorMessage] = useState<string>('');\n const [showRegionPicker, setShowRegionPicker] = useState(true);\n const [showError, setShowError] = useState(false);\n const scrollToRef = useRef<HTMLDivElement | null>(null);\n\n /** Scrolls to region dropdown and sets error message */\n const setAndScrollToRegionError = () => {\n scrollToRef?.current?.scrollIntoView({ block: 'center' });\n return setRegionErrorMessage(string_table.REGION_ERROR);\n };\n\n const cartBuilderItem = useMemo(() => new CartBuilderItem(cartBuilderItemIndex), [cartBuilderItemIndex]);\n\n /** Pull dynamic data off of planConfiguration state */\n const region = planConfiguration.region || '';\n const currentTermName = planConfiguration.currentTermName || '';\n const currentTierName = planConfiguration?.currentTierName || '';\n const currentSupplements: PlanConfigurationState['currentSupplements'] = planConfiguration?.currentSupplements || [];\n const offerId = planConfiguration?.offerId || '';\n\n /** Update offerId when region changes */\n useEffect(() => {\n const newOfferId = cartBuilderItem.findOfferIdForRegion(region);\n\n if (newOfferId != planConfiguration?.offerId) {\n planConfigurationSetters.setOfferId(newOfferId);\n }\n }, [cartBuilderItem, planConfigurationSetters, planConfiguration?.offerId, region]);\n\n /** Sets current tier when offer changes */\n useEffect(() => {\n const offer = cartBuilderOfferData[offerId];\n const tier = find_tier(offer.products?.[0]?.merchandizedTiers || [], currentTierName);\n if (!tier) {\n planConfigurationSetters?.setCurrentTierName(offer.products?.[0]?.merchandizedTiers?.[0]?.name || '');\n }\n }, [cartBuilderOfferData, currentTierName, offerId]);\n\n /** sets currentTerm name when offerId or currentTierName changes, if necessary */\n useEffect(() => {\n const offer = cartBuilderOfferData[offerId];\n const tier = find_tier(offer.products?.[0]?.merchandizedTiers || [], currentTierName);\n if (!tier) return;\n\n // Preserve the billing period selected if exists in the new tier; otherwise use the default (first)\n const term = find_term(tier?.prices || [], currentTermName);\n if (!term) {\n planConfigurationSetters?.setCurrentTermName(tier.prices?.[0].billingPeriod || '');\n }\n }, [offerId, currentTierName, cartBuilderOfferData, currentTermName]);\n\n /** sets supplements when offer, tier, or term changes, if necessary */\n useEffect(() => {\n const offer = cartBuilderOfferData[offerId];\n const tier = find_tier(offer.products?.[0]?.merchandizedTiers || [], currentTierName);\n if (!tier) return;\n const term = find_term(tier?.prices || [], currentTermName);\n if (!term) return;\n\n // Preserve the supplements if exists in the new price term\n let newSupplements = [...currentSupplements];\n\n for (let i = 0; i < currentSupplements.length; i++) {\n // if none of the supplements of the term are the current supplements\n // then remove current supplements\n if (\n !term?.supplements?.some(\n (item: Offers.MerchandizedSupplement) => item?.name?.toLowerCase() === currentSupplements[i].toLowerCase(),\n )\n ) {\n newSupplements = newSupplements.filter((value) => value.toLowerCase() != currentSupplements[i].toLowerCase());\n planConfigurationSetters.setCurrentSupplements(newSupplements);\n }\n }\n }, [offerId, currentTierName, currentTermName, cartBuilderOfferData, currentSupplements]);\n\n const [disableContinueButton, setDisableContinueButton] = useState(false);\n\n /** When region changes, calculate disable button continue */\n useEffect(() => {\n if ((region as string) === '') {\n setDisableContinueButton(true);\n } else {\n if (\n cartBuilderItem.productFamilyForOfferId(offerId) === 'Legal' &&\n (invalidRegionData || []).map((item) => item?.abbreviation)?.includes(region)\n ) {\n setDisableContinueButton(true);\n } else {\n setDisableContinueButton(false);\n }\n }\n }, [cartBuilderItem, offerId, region]);\n\n const onRegionChange = (value: string): void => {\n if (value === region) {\n return;\n }\n\n planConfigurationSetters.setRegion(value);\n setRegionErrorMessage('');\n };\n\n const addPriceWithString = (price1: string, price2: string) => {\n return `$${(+price1?.slice(1) + +price2?.slice(1)).toFixed(2)}`;\n };\n\n const prices: Prices = useMemo(() => {\n const totalPrices: Prices = {};\n const allOfferConfigurationMap = [...offerConfigurationMap];\n for (let i = 0; i <= offerConfigurationMap.size - 1; i++) {\n const [key, value] = allOfferConfigurationMap[i];\n const item = new CartBuilderItem(i).extractPrices({\n offerId: value.offerId || '',\n supplements: value.currentSupplements || [],\n termName: value?.currentTermName || '',\n tierName: value?.currentTierName || '',\n });\n const valid = isPlanValid(i, region || '');\n if (cartBuilderItemIndex === 0 || (cartBuilderItemIndex > 0 && valid)) {\n totalPrices.planFees = addPriceWithString(totalPrices?.planFees || '', item?.planFees || '');\n totalPrices.planPrice =\n item.planFees !== '$0.00' && item.planPrice === '$0.00'\n ? totalPrices.planPrice\n : addPriceWithString(totalPrices?.planPrice || '', item?.planPrice || '');\n totalPrices.totalPrice = addPriceWithString(totalPrices?.totalPrice || '', item?.totalPrice || '');\n totalPrices.titlePrice = key === cartBuilderItemIndex ? item.titlePrice : totalPrices.titlePrice;\n } else if (cartBuilderItemIndex > 0 && !valid) {\n totalPrices.titlePrice = key === cartBuilderItemIndex ? item.titlePrice : totalPrices.titlePrice;\n }\n }\n return totalPrices;\n }, [offerConfigurationMap, cartBuilderItemIndex, region]);\n\n const next = () => {\n if (!region) {\n setAndScrollToRegionError();\n return;\n }\n if (disableContinueButton) {\n return;\n }\n window.scrollTo(0, 0);\n continueOrCheckout();\n };\n\n useEffect(() => {\n if (multiselect && cartBuilderItemIndex != 0 && !!region && showRegionPicker) {\n setShowRegionPicker(false);\n if (cartBuilderItemIndex > 0 && !isPlanValid(cartBuilderItemIndex, region || '')) {\n setShowError(true);\n }\n }\n }, [region]);\n\n return (\n <div className=\"plan-configuration\">\n <Grid>\n <GridRow variant=\"center\">\n <Container\n alignItems=\"center\"\n background=\"light-gray\"\n classNames={['m-4', 'sub-container']}\n justifyContent=\"center\"\n >\n <Heading as=\"T39\" text={string_table?.CONFIGURE_YOUR_COVERGAE} classNames={['title']} />\n <Text text={string_table?.COVERAGE_DESCRITION} textSize=\"large\" classNames={['title-description']} />\n <div className=\"checkbox-section mb-8\">\n <PlanCard isSelected={!showError} selectable>\n <PlanInfoContainer\n cartBuilderItem={cartBuilderItem}\n currentSupplements={currentSupplements}\n currentTermName={currentTermName}\n currentTierName={currentTierName}\n offerId={offerId}\n planPrice={prices.titlePrice}\n region={region}\n seeDetailText={string_table.SEE_DETAILS}\n >\n {showRegionPicker && (\n <PlanCardRegionPicker\n availableRegions={cartBuilderItem.availableRegions()}\n invalidRegionTitle={string_table.INVALID_REGION_TITLE}\n invalidRegionMessage={string_table.INVALID_REGION_MESSAGE}\n invalidRegions={\n cartBuilderItem.productFamilyForOfferId(offerId) === 'Legal'\n ? invalidRegionData?.map((regions) => regions?.abbreviation)\n : []\n }\n selectedRegion={region}\n onRegionSelect={onRegionChange}\n placeholder={string_table_market.SELECT_YOUR_STATE}\n classNames={[!!regionErrorMessage && 'error-box']}\n innerRef={scrollToRef}\n data-pplsi-event-id={'plan-card-region'}\n />\n )}\n {showError && (\n <Alert\n severity=\"warning\"\n title={string_table.INVALID_REGION_TITLE}\n classNames={[`lsux-plan-card__region-selector__alert`, 'mt-4']}\n >\n {string_table.INVALID_REGION_MESSAGE}\n </Alert>\n )}\n {!!regionErrorMessage && <Text classNames={['validate-error']}>{regionErrorMessage}</Text>}\n <Tiers\n planConfigurationSetters={planConfigurationSetters}\n currentTermName={currentTermName}\n currentTierName={currentTierName}\n offerId={offerId}\n region={region}\n setAndScrollToRegionError={setAndScrollToRegionError}\n onChangeDisabled={showError}\n periodTerm={per_term_strings['MONTHLY'][pplsi.market?.toLowerCase()]}\n />\n\n <BillingTerms\n currentTermName={currentTermName}\n currentTierName={currentTierName}\n planConfigurationSetters={planConfigurationSetters}\n offerId={offerId}\n region={region}\n setAndScrollToRegionError={setAndScrollToRegionError}\n />\n </PlanInfoContainer>\n\n <Supplements\n cartBuilderItemIndex={cartBuilderItemIndex}\n planConfigurationSetters={planConfigurationSetters}\n currentSupplements={currentSupplements}\n currentTermName={currentTermName}\n currentTierName={currentTierName}\n offerId={offerId}\n region={region}\n setAndScrollToRegionError={setAndScrollToRegionError}\n onChangeDisabled={showError}\n disabledType={'homeBusiness_V2'}\n selectedAddOn={'businessPlus'}\n />\n </PlanCard>\n </div>\n </Container>\n </GridRow>\n </Grid>\n <CartBuilderFooter\n currentTermName={currentTermName}\n disableContinueButton={disableContinueButton}\n next={next}\n prices={prices}\n runningTotalPrice={runningTotalPrice}\n runningTotalItems={runningTotalItems}\n selectedCardCount={offerConfigurationMap.size || 1}\n />\n </div>\n );\n};\n\nexport const PlanConfiguration = PlanConfigurationComponent;\n","import React, { Suspense, useCallback, useEffect, useMemo, useState } from 'react';\nimport { Route, Routes } from 'react-router-dom';\nimport { Spinner } from '@legalshield/adonis-ux-framework';\n\nimport { CartBuilderOfferData } from '../../types/globals';\nimport { PlansProps } from '../components/App/App';\nimport { cartBuilderData3, cartBuilderOfferData3 } from '../components/Test/CBData';\nimport { TestControl } from '../components/Test/Test';\nimport { useFeatureFlags } from '../hooks/feature-flags.hook';\nimport { CheckoutService } from '../services/checkout.service';\nimport { logger } from '../utils/logger';\nimport { CartBuilderItem } from '../view-models/cart-builder-item';\nimport { CrossSell } from './CrossSell/CrossSell';\nimport { Guideline } from './Guideline/Guideline';\nimport { AssociateType, isPlanValid, PlanConfiguration } from './PlanConfiguration/PlanConfiguration';\n\n/**\n * An object that represents the user's selections during plan configuration.\n */\nexport type PlanConfigurationState = {\n associateType?: AssociateType;\n currentSupplements?: string[];\n currentTermName?: string;\n currentTierName?: string;\n offerId?: string;\n region?: string;\n};\n\n/**\n * Convenience object with methods that update PlanConfigurationState\n */\nexport interface PlanConfigurationSetters {\n setAssociateType: (associateType: AssociateType) => void;\n setCurrentSupplements: (supplements: string[]) => void;\n setCurrentTermName: (currentTermName: string) => void;\n setCurrentTierName: (currentTierName: string) => void;\n setOfferId: (offerId: string) => void;\n setRegion: (region: string) => void;\n}\n\n/**\n * A Map where the key is the index of the item in cartBuilderData.items,\n * and the value is `PlanConfigurationState`, an object that represents\n * the user's choices during plan configuration.\n */\nexport type OfferConfigurationMap = Map<number, PlanConfigurationState>;\n\nexport const AppRoutes = (props: PlansProps) => {\n const { multiselect } = useFeatureFlags();\n const { cartBuilderItemIndex, setCartBuilderItemIndex } = props;\n const [offerConfigurationMap, setOfferConfiguration] = useState<OfferConfigurationMap>(\n new Map(\n cartBuilderData.items.map((_item, index) => {\n const cartBuilderItem = new CartBuilderItem(index);\n return [index, cartBuilderItem.defaultPlanConfiguration()];\n }),\n ),\n );\n const planConfiguration = offerConfigurationMap.get(cartBuilderItemIndex);\n logger.group('AppRoutes');\n logger.log('cartBuilerItemIndex', cartBuilderItemIndex);\n logger.log('cartBuilderItem', cartBuilderData.items[cartBuilderItemIndex]);\n logger.log('planConfiguration', planConfiguration);\n logger.log('offerConfigurationMap.values', offerConfigurationMap.values());\n logger.log('offerConfigurationMap.entries', offerConfigurationMap.entries());\n logger.groupEnd();\n\n const setPlanConfiguration = useCallback(\n function (planConfig: PlanConfigurationState) {\n logger.log('in setPlanConfiguration', planConfig);\n if (planConfig.currentSupplements) {\n const hasBusinessPlus = planConfig.currentSupplements.includes('businessPlus');\n const hasHomeBusinessV2 = planConfig.currentSupplements.includes('homeBusiness_V2');\n\n const updateCartItems = (skip: boolean) => {\n if (cartBuilderData && cartBuilderData.items) {\n cartBuilderData.items = cartBuilderData.items.map((item) => {\n if (item.offers[0].offerId === planConfig.offerId) {\n const supplementIndex = item.offers[0].settings.supplements.findIndex(\n (supplement) => supplement.name === 'businessPlus',\n );\n if (supplementIndex !== -1) {\n item.offers[0].settings.supplements[supplementIndex].skip = skip;\n }\n }\n return item;\n });\n }\n };\n\n if (!hasBusinessPlus && !hasHomeBusinessV2) {\n updateCartItems(true);\n } else if (hasHomeBusinessV2) {\n if (!hasBusinessPlus) {\n updateCartItems(false);\n }\n } else if (hasBusinessPlus) {\n updateCartItems(false);\n }\n }\n\n setOfferConfiguration((prevOfferConfigurationMap) => {\n const prevPlanConfig = prevOfferConfigurationMap.get(cartBuilderItemIndex);\n return new Map(prevOfferConfigurationMap.set(cartBuilderItemIndex, { ...prevPlanConfig, ...planConfig }));\n });\n },\n [cartBuilderItemIndex],\n );\n\n useEffect(() => {\n const shouldReset = offerConfigurationMap.get(0)?.region === offerConfigurationMap.get(1)?.region;\n if (multiselect && cartBuilderItemIndex != 0) {\n const prevConfiguration: PlanConfigurationState = offerConfigurationMap.values().next().value;\n setPlanConfiguration({ ...planConfiguration, region: prevConfiguration.region });\n } else if (cartBuilderItemIndex === 0) {\n if (!shouldReset) {\n setOfferConfiguration(\n new Map(\n cartBuilderData.items.map((_item, index) => {\n const cartBuilderItem = new CartBuilderItem(index);\n if (index === 0) {\n return [index, { ...offerConfigurationMap.get(0) }];\n } else {\n return [\n index,\n {\n ...cartBuilderItem.defaultPlanConfiguration(),\n },\n ];\n }\n }),\n ),\n );\n }\n }\n }, [cartBuilderItemIndex, planConfiguration?.region]);\n\n const planConfigurationSetters = useMemo<PlanConfigurationSetters>(() => {\n return {\n setAssociateType(associateType) {\n logger.log('setting associateType', associateType);\n setPlanConfiguration({ ...planConfiguration, associateType });\n },\n setCurrentSupplements(currentSupplements) {\n logger.log('setting currentSupplements', currentSupplements);\n setPlanConfiguration({ ...planConfiguration, currentSupplements });\n },\n setCurrentTermName(currentTermName) {\n logger.log('setting currentTermName', currentTermName);\n setPlanConfiguration({ ...planConfiguration, currentTermName });\n },\n setCurrentTierName(currentTierName) {\n logger.log('setting currentTierName', currentTierName);\n setPlanConfiguration({ ...planConfiguration, currentTierName });\n },\n setOfferId(offerId) {\n logger.log('setting offerId', offerId);\n setPlanConfiguration({ ...planConfiguration, offerId });\n },\n setRegion(region) {\n logger.log('setting region', region);\n setPlanConfiguration({ ...planConfiguration, region });\n },\n };\n }, [planConfiguration, setPlanConfiguration]);\n\n function continueOrCheckout() {\n if (!multiselect) {\n checkout();\n }\n const nextItemIndex = cartBuilderItemIndex + 1;\n if (cartBuilderData.items[nextItemIndex]) {\n setCartBuilderItemIndex(nextItemIndex);\n } else {\n checkout();\n }\n }\n\n function goToPrevious() {\n const prevItemIndex = cartBuilderItemIndex - 1;\n if (prevItemIndex >= 0 && cartBuilderData.items[prevItemIndex]) {\n setCartBuilderItemIndex(prevItemIndex);\n }\n }\n\n async function checkout() {\n const filteredOfferConfigurationMap = new Map();\n offerConfigurationMap.forEach((value, key) => {\n const valid = isPlanValid(key, value.region || '');\n if (cartBuilderItemIndex > 0 && !valid) {\n return;\n }\n filteredOfferConfigurationMap.set(key, value);\n });\n await CheckoutService.checkout({ offerConfigurationMap: filteredOfferConfigurationMap });\n }\n\n if (!planConfiguration) {\n return <></>;\n }\n /**\n * Calculates the running total\n */\n const runningTotalPrice = [...(offerConfigurationMap || [])]\n .reduce((prevPrice, [itemIndex, planConfigurationState]) => {\n const prevConfiguration: PlanConfigurationState = offerConfigurationMap?.values()?.next()?.value;\n const {\n currentSupplements: supplements,\n currentTermName: termName,\n currentTierName: tierName,\n offerId,\n } = planConfigurationState;\n if (!tierName || !termName || !offerId || !supplements) {\n return prevPrice;\n }\n if (\n cartBuilderItemIndex !== 0 &&\n prevConfiguration.region !== '' &&\n !isPlanValid(itemIndex, prevConfiguration.region || '')\n ) {\n return prevPrice;\n }\n const cartBuilderItem = new CartBuilderItem(itemIndex);\n const totalPriceForItem = cartBuilderItem.totalPrice({ offerId, supplements, termName, tierName });\n return prevPrice + totalPriceForItem;\n }, 0)\n .toFixed(2);\n\n const runningItemCounts = [...(offerConfigurationMap || [])].reduce(\n (prevTotalItems, [itemIndex, planConfigurationState]) => {\n const prevConfiguration: PlanConfigurationState = offerConfigurationMap?.values()?.next()?.value;\n if (\n cartBuilderItemIndex !== 0 &&\n prevConfiguration.region !== '' &&\n !isPlanValid(itemIndex, prevConfiguration.region || '')\n ) {\n return prevTotalItems - 1;\n }\n const { currentSupplements: supplements } = planConfigurationState;\n if (!supplements) {\n return prevTotalItems;\n }\n const runningTotalItems = prevTotalItems + supplements.length;\n return runningTotalItems;\n },\n cartBuilderData.items.length,\n );\n\n return (\n <div>\n <Suspense fallback={<Spinner spinnerSize=\"large\" />}>\n <Routes>\n <Route\n path=\"/\"\n element={\n <PlanConfiguration\n cartBuilderData={cartBuilderData}\n cartBuilderItemIndex={cartBuilderItemIndex}\n planConfigurationSetters={planConfigurationSetters}\n cartBuilderOfferData={cartBuilderOfferData}\n continueOrCheckout={continueOrCheckout}\n key={'multiselect' + cartBuilderItemIndex}\n planConfiguration={planConfiguration}\n runningTotalPrice={runningTotalPrice}\n offerConfigurationMap={offerConfigurationMap}\n runningTotalItems={runningItemCounts}\n />\n }\n />\n <Route\n path=\"/ofh\"\n element={\n <PlanConfiguration\n cartBuilderData={cartBuilderData3}\n cartBuilderOfferData={cartBuilderOfferData3 as CartBuilderOfferData}\n cartBuilderItemIndex={0}\n planConfigurationSetters={planConfigurationSetters}\n continueOrCheckout={() => {}}\n planConfiguration={planConfiguration}\n runningTotalPrice={runningTotalPrice}\n offerConfigurationMap={offerConfigurationMap}\n runningTotalItems={runningItemCounts}\n />\n }\n />\n <Route path=\"/identity-protection\" element={<CrossSell />} />\n <Route path=\"/guideline\" element={<Guideline />} />\n <Route\n path=\"/test\"\n element={\n <TestControl\n offerIds={['a815ccf2-72f0-4e27-9a63-5ff00181c05b', 'a815ccf2-72f0-4e27-9a63-5ff00181c05c']}\n />\n }\n />\n <Route path=\"*\" element={<div className=\"not-found\">Page Not Found</div>} />\n </Routes>\n </Suspense>\n </div>\n );\n};\n","import type NewRelic from 'newrelic';\n\nimport { logger } from './logger';\n\n/** Send the error to newrelic using the browser agent */\nexport function handleError(error: unknown, customAttributes?: CustomNoticeErrorAttributes) {\n logger.error(error, customAttributes);\n if (typeof window.newrelic !== 'undefined') {\n window.newrelic.noticeError(error instanceof Error ? error : new Error(`${error}`), customAttributes);\n } else if (!window.location.port) {\n // only print this console error when in deployed environments + newrelic isn't setup correctly\n logger.error('Could not send the above error to newrelic');\n }\n}\n\n/** extracts the type of newrelic.noticeError's customAttributes argument */\nexport type CustomNoticeErrorAttributes = Parameters<(typeof NewRelic)['noticeError']>[1];\n\nexport * as ErrorUtil from './error.util';\n","import React, { FC, useEffect, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport {\n BusinessCard,\n Container,\n Icon,\n Layout,\n MarketingFooter,\n StickyHeading,\n} from '@legalshield/adonis-ux-framework';\nimport { onCLS, onFID, onLCP } from 'web-vitals';\n\nimport 'react-loading-skeleton/dist/skeleton.css';\nimport './App.scss';\n\nimport { AppRoutes } from '../../routes/AppRoutes';\nimport { logger } from '../../utils/logger';\n\nexport type PlansProps = {\n cartBuilderItemIndex: number;\n setCartBuilderItemIndex: (num: number) => void;\n};\n\nconst BackButton = (props: PlansProps) => {\n const { cartBuilderItemIndex, setCartBuilderItemIndex } = props;\n const goBack = () => {\n const prevItemIndex = cartBuilderItemIndex - 1;\n if (prevItemIndex >= 0 && cartBuilderData.items[prevItemIndex]) {\n setCartBuilderItemIndex(prevItemIndex);\n } else {\n history.go(-1);\n }\n };\n\n return (\n <div className=\"back-button py-4\" style={{ paddingLeft: 'var(--dynamic-pad)', paddingRight: 'var(--dynamic-pad)' }}>\n <Icon onClick={goBack} name=\"arrow_left_lg\" size=\"medium\" />\n </div>\n );\n};\n\nexport const App: FC = () => {\n const [cartBuilderItemIndex, setCartBuilderItemIndex] = useState<number>(0);\n const hideBackArrow =\n window.location.href.includes('/guideline') ||\n window.location.href.includes('/associate-terms') ||\n window.location.href.includes('/associate-agreement');\n\n useEffect(() => {\n ads_set_title(string_table.TITLE, true);\n }, []);\n\n // Track our location\n const location = useLocation();\n onCLS(logger.log);\n onFID(logger.log);\n onLCP(logger.log);\n useEffect(() => {\n onCLS(logger.log);\n onFID(logger.log);\n onLCP(logger.log);\n // onCLS(sendToGoogleAnalytics);\n // onFID(sendToGoogleAnalytics);\n // onLCP(sendToGoogleAnalytics);\n }, [location]);\n\n return (\n <>\n <Layout variant=\"none\">\n <StickyHeading position=\"header\" top=\"72px\">\n <Container\n flexbox\n alignItems=\"center\"\n background=\"light-gray\"\n justifyContent={!hideBackArrow ? 'space-between' : 'flex-end'}\n >\n {(!hideBackArrow && (\n <BackButton\n cartBuilderItemIndex={cartBuilderItemIndex}\n setCartBuilderItemIndex={setCartBuilderItemIndex}\n />\n )) || <></>}\n {(associateData && associateData.siteLevel === 'ADVANCED' && (\n <BusinessCard\n market={pplsi.market?.toLocaleLowerCase()}\n envPrefix={pplsi.envPrefix}\n displayName={associateData.name}\n email={associateData.email}\n phone={associateData.phone}\n sitename={''}\n profileImage={associateData.avatarUrl}\n />\n )) || <></>}\n </Container>\n </StickyHeading>\n <div>\n <AppRoutes setCartBuilderItemIndex={setCartBuilderItemIndex} cartBuilderItemIndex={cartBuilderItemIndex} />\n </div>\n </Layout>\n <MarketingFooter\n classNames={['lsux-layout-padding']}\n social={false}\n footerContent={footerHtml}\n disclaimerContent={disclaimerHtml.replace(\n new RegExp('https://legalshieldassociate.com', 'g'),\n `https://${associateData?.sitename}.${pplsi.envPrefix}legalshieldassociate.com`,\n )}\n />\n </>\n );\n};\n","import { CartBuilderData } from '../../types/globals';\n\ntype PlanItem = CartBuilderData['items'][0];\n\ninterface PriorityDictionary {\n [key: string]: number;\n}\n\nconst prioritizePlanSort = <T extends PlanItem>(plan1: T, plan2: T) => {\n const cartBuilderItem1 = cartBuilderOfferData[plan1?.offers[0].offerId].products?.[0];\n const cartBuilderItem2 = cartBuilderOfferData[plan2.offers[0].offerId].products?.[0];\n const productFamilyA = cartBuilderItem1?.productFamily;\n const productFamilyB = cartBuilderItem2?.productFamily;\n const productTypeA = cartBuilderItem1?.productType;\n const productTypeB = cartBuilderItem2?.productType;\n\n // Define priorities\n const priorities: PriorityDictionary = {\n Associate: 3,\n Identity: 2,\n Legal: 1,\n };\n\n // Compare based on product family priorities\n const priorityA = priorities[productFamilyA || ''] || 4;\n const priorityB = priorities[productFamilyB || ''] || 4;\n\n if (priorityA !== priorityB) {\n return priorityA - priorityB;\n }\n\n // Within the same product family, compare based on product type\n if (productFamilyA === 'Legal') {\n const legalPriorities: PriorityDictionary = {\n 'Legal CDLP': 3,\n 'Legal Plan Family': 1,\n 'Legal Small Business': 2,\n 'Legal Super CDLP': 3,\n // Add more legal product types and priorities here\n };\n const legalPriorityA = legalPriorities[productTypeA || ''] || 4;\n const legalPriorityB = legalPriorities[productTypeB || ''] || 4;\n\n return legalPriorityA - legalPriorityB;\n } else if (productFamilyA === 'Identity') {\n const identityPriorities: PriorityDictionary = {\n 'IDShield Family 2021': 1,\n 'IDShield Individual 2021': 2,\n // Add more identity product types and priorities here\n };\n\n const identityPriorityA = identityPriorities[productTypeA || ''] || 3;\n const identityPriorityB = identityPriorities[productTypeB || ''] || 3;\n\n return identityPriorityA - identityPriorityB;\n }\n return 0;\n};\n\n/**\n * Sorts cartBuilderData.items according to item priority.\n */\nexport function initializeCartBuilder() {\n cartBuilderData.items = cartBuilderData?.items?.slice()?.sort(prioritizePlanSort);\n for (const [key, value] of Object.entries(cartBuilderOfferData)) {\n if (value?.products?.[0]?.productType === 'Legal Plan Family') {\n const cartBuilderOfferSupplements = value?.products?.[0]?.merchandizedTiers?.[0]?.prices?.[0]?.supplements || [];\n const homeBusinessIndex = cartBuilderOfferSupplements.findIndex((item) => item.name === 'homeBusiness_V2');\n const businessPlusIndex = cartBuilderOfferSupplements.findIndex((item) => item.name === 'businessPlus');\n if (homeBusinessIndex !== -1 && businessPlusIndex !== -1) {\n const offerData =\n cartBuilderOfferData[key || '']?.products?.[0]?.merchandizedTiers?.[0]?.prices?.[0]?.supplements;\n\n if (offerData) {\n offerData.splice(homeBusinessIndex + 1, 0, cartBuilderOfferSupplements[businessPlusIndex]);\n offerData.splice(businessPlusIndex, 1);\n }\n }\n break;\n }\n }\n}\n","import React from 'react';\nimport { hydrate, render } from 'react-dom';\nimport { QueryClient, QueryClientProvider } from 'react-query';\nimport { BrowserRouter } from 'react-router-dom';\nimport { AnalyticServiceVendor, AnalyticsOptions, ThemisAnalytics } from '@legalshield/frontend-analytics';\n\nimport './index.scss';\n\nimport { App } from './components/App/App';\nimport envConfig from './config';\nimport { FeatureContextProvider } from './contexts/feature-flag.context';\nimport { initializeCartBuilder } from './utils/sort';\n\nconst root = document.getElementById('root');\nlet renderMethod;\nif (root && root.innerHTML !== '') {\n renderMethod = hydrate;\n} else {\n renderMethod = render;\n}\nconst analyticsConfig: AnalyticsOptions = {\n client: AnalyticServiceVendor.GoogleTagManager,\n config: {\n gtmService: envConfig.currentEnv.gtm,\n },\n};\nconst queryClient = new QueryClient();\nconst themisAnalytics = new ThemisAnalytics(analyticsConfig);\nexport default themisAnalytics;\n\ninitializeCartBuilder();\nthemisAnalytics.initialize();\nrenderMethod(\n <React.StrictMode>\n <QueryClientProvider client={queryClient}>\n <FeatureContextProvider>\n <BrowserRouter>\n <App />\n </BrowserRouter>\n </FeatureContextProvider>\n </QueryClientProvider>\n </React.StrictMode>,\n document.getElementById('root'),\n);\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.lsux-marketing-footer--light{background-color:var(--n100)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/App/App.scss\"],\"names\":[],\"mappings\":\"AAAA,8BACE,4BAAA\",\"sourcesContent\":[\".lsux-marketing-footer--light {\\n background-color: var(--n100);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `body{background:var(--n100)}.not-found{align-items:center;display:flex;height:95vh;justify-content:center}.lsux-select__content:has(>div){z-index:1010}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/index.scss\"],\"names\":[],\"mappings\":\"AAAA,KACE,sBAAA,CAEF,WACE,kBAAA,CACA,YAAA,CACA,WAAA,CACA,sBAAA,CAGF,gCACE,YAAA\",\"sourcesContent\":[\"body {\\n background: var(--n100);\\n}\\n.not-found {\\n align-items: center;\\n display: flex;\\n height: 95vh;\\n justify-content: center;\\n}\\n\\n.lsux-select__content:has(> div) {\\n z-index: 1010;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.crossSell .cross-container{max-width:450px}.crossSell .cross-container .title{color:var(--n800);margin-bottom:8px}.crossSell .cross-sell-body{margin-left:-24px;margin-top:30px}.crossSell .cross-sell-body .plan-card-info{height:530px}.crossSell .cross-sell-content{border-top:2px solid #dbdada;margin-top:30px}.crossSell .features{height:220px;margin-left:-33px}.crossSell .features .feat-head{font-size:18px;font-weight:600}.crossSell .features .feat-detail{margin-top:3px;width:350px}.crossSell .features .feat-list .icon{height:unset;padding-right:10px;width:unset}.crossSell .features .feat-list li{border-bottom:none;display:flex;height:35px;justify-content:center;list-style:none;margin-left:-2px}.crossSell .features .feat-list li p{font-size:14px}.crossSell .skip-button-container{margin-top:10px}.crossSell .skip-button-container .skip-button{box-shadow:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/routes/CrossSell/cross-sell.scss\"],\"names\":[],\"mappings\":\"AACE,4BACE,eAAA,CACA,mCACE,iBAAA,CACA,iBAAA,CAGJ,4BACE,iBAAA,CACA,eAAA,CACA,4CACE,YAAA,CAIJ,+BACE,4BAAA,CACA,eAAA,CAGF,qBACE,YAAA,CACA,iBAAA,CAEA,gCACE,cAAA,CACA,eAAA,CAGF,kCACE,cAAA,CACA,WAAA,CAIA,sCACE,YAAA,CACA,kBAAA,CACA,WAAA,CAIJ,mCACE,kBAAA,CACA,YAAA,CACA,WAAA,CACA,sBAAA,CACA,eAAA,CACA,gBAAA,CAEF,qCACE,cAAA,CAGJ,kCACE,eAAA,CACA,+CACE,eAAA\",\"sourcesContent\":[\".crossSell {\\n .cross-container{\\n max-width: 450px;\\n .title {\\n color: var(--n800);\\n margin-bottom: 8px;\\n }\\n }\\n .cross-sell-body {\\n margin-left: -24px;\\n margin-top: 30px;\\n .plan-card-info{\\n height: 530px\\n }\\n }\\n \\n .cross-sell-content {\\n border-top: 2px solid #dbdada;\\n margin-top: 30px;\\n }\\n\\n .features {\\n height: 220px;\\n margin-left: -33px;\\n\\n .feat-head {\\n font-size: 18px;\\n font-weight: 600;\\n }\\n\\n .feat-detail{\\n margin-top: 3px;\\n width: 350px\\n }\\n\\n .feat-list {\\n .icon {\\n height: unset;\\n padding-right: 10px;\\n width: unset;\\n }\\n }\\n\\n .feat-list li {\\n border-bottom: none;\\n display: flex;\\n height: 35px;\\n justify-content: center;\\n list-style: none;\\n margin-left: -2px;\\n }\\n .feat-list li p {\\n font-size: 14px;\\n }\\n }\\n .skip-button-container{\\n margin-top: 10px;\\n .skip-button{\\n box-shadow: none;\\n }\\n }\\n \\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.guideline-container{align-items:center;display:flex;justify-content:center}.guideline-container .guideline-sub-container{background-color:var(--n00);max-width:620px}.guideline-container .guideline-sub-container .heading{font-size:35px;font-weight:bold;text-align:center}.guideline-container .guideline-sub-container .associate-agreement-link{color:#551a8b;cursor:pointer}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/routes/Guideline/guideline.scss\"],\"names\":[],\"mappings\":\"AAAA,qBACE,kBAAA,CACA,YAAA,CACA,sBAAA,CAEA,8CACE,2BAAA,CACA,eAAA,CACA,uDACE,cAAA,CACA,gBAAA,CACA,iBAAA,CAEF,wEACE,aAAA,CACA,cAAA\",\"sourcesContent\":[\".guideline-container {\\n align-items: center;\\n display: flex;\\n justify-content: center;\\n \\n .guideline-sub-container{\\n background-color: var(--n00);\\n max-width: 620px;\\n .heading{\\n font-size: 35px;\\n font-weight: bold;\\n text-align: center;\\n }\\n .associate-agreement-link{\\n color: #551A8B ;\\n cursor: pointer;\\n }\\n }\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.lsux-tab--stretch ul{display:flex;flex:1;justify-content:center;text-align:center}.validate-error{color:var(--r100);left:4px;position:relative;top:10px}.error-box div:nth-child(3) div:first-child{box-shadow:0 0 0 1px var(--r100)}.coverage{background-color:#f5f5f5;border-bottom-left-radius:12px;border-bottom-right-radius:12px}.total-section{background-color:var(--n00);bottom:0px;position:sticky}.total-section .total-section-container{max-width:500px;width:100%;margin-right:1rem}.total-section .price-section{background-color:var(--n100);border-radius:9px;margin-top:16px}.total-section .price-section .price-total-section{text-align:right}.plan-configuration .sub-container{width:424px}.plan-configuration .title{color:var(--n800);margin-bottom:8px}.plan-configuration .title-description{color:var(--n700);margin-bottom:32px}.plan-configuration .total-section{background-color:var(--n00)}.plan-configuration .total-section .price-section{background-color:var(--n100);border-radius:9px;margin-top:16px}.plan-configuration .total-section .price-section .price-total-section{text-align:right}.plan-configuration .total-section .lsux-row.halves-fixed.children4>.lsux-col:nth-child(1),.plan-configuration .total-section .lsux-row.halves-fixed.children4>.lsux-col:nth-child(2){margin-bottom:0;padding-bottom:1rem}.plan-configuration .total-section .lsux-row.halves-fixed.children4>.lsux-col:nth-child(1)::before{border-bottom:1px solid #d3d3d3;bottom:0;content:\"\";position:absolute;right:0;width:90%}.plan-configuration .total-section .lsux-row.halves-fixed.children4>.lsux-col:nth-child(2)::before{border-bottom:1px solid #d3d3d3;bottom:0;content:\"\";left:0;position:absolute;width:90%}@media screen and (max-width: 329px){.plan-configuration .total-section .button-next{width:95%;margin:0 auto;max-width:424px}.plan-configuration .total-section .price-section{width:95%;margin:16px auto}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/routes/PlanConfiguration/plan-configuration.scss\"],\"names\":[],\"mappings\":\"AACE,sBACE,YAAA,CACA,MAAA,CACA,sBAAA,CACA,iBAAA,CAGJ,gBACE,iBAAA,CACA,QAAA,CACA,iBAAA,CACA,QAAA,CAEF,4CACE,gCAAA,CAEF,UACE,wBAAA,CACA,8BAAA,CACA,+BAAA,CAEF,eACE,2BAAA,CACA,UAAA,CACA,eAAA,CACA,wCACE,eAAA,CACA,UAAA,CACA,iBAAA,CAEF,8BACE,4BAAA,CACA,iBAAA,CACA,eAAA,CAEA,mDACE,gBAAA,CAMJ,mCACE,WAAA,CAEF,2BACE,iBAAA,CACA,iBAAA,CAEF,uCACE,iBAAA,CACA,kBAAA,CAEF,mCACE,2BAAA,CACA,kDACE,4BAAA,CACA,iBAAA,CACA,eAAA,CAEA,uEACE,gBAAA,CAIJ,sLAEE,eAAA,CACA,mBAAA,CAEF,mGACE,+BAAA,CACA,QAAA,CACA,UAAA,CACA,iBAAA,CACA,OAAA,CACA,SAAA,CAGF,mGACE,+BAAA,CACA,QAAA,CACA,UAAA,CACA,MAAA,CACA,iBAAA,CACA,SAAA,CAGF,qCACE,gDACE,SAAA,CACA,aAAA,CACA,eAAA,CAEF,kDACE,SAAA,CACA,gBAAA,CAAA\",\"sourcesContent\":[\".lsux-tab--stretch {\\n ul {\\n display: flex;\\n flex: 1;\\n justify-content: center;\\n text-align: center;\\n }\\n}\\n.validate-error {\\n color: var(--r100);\\n left: 4px;\\n position: relative;\\n top: 10px;\\n}\\n.error-box div:nth-child(3) div:first-child {\\n box-shadow: 0 0 0 1px var(--r100);\\n}\\n.coverage {\\n background-color: #f5f5f5;\\n border-bottom-left-radius: 12px;\\n border-bottom-right-radius: 12px;\\n}\\n.total-section {\\n background-color: var(--n00);\\n bottom: 0px;\\n position: sticky;\\n .total-section-container {\\n max-width: 500px;\\n width: 100%;\\n margin-right: 1rem;\\n }\\n .price-section {\\n background-color: var(--n100);\\n border-radius: 9px;\\n margin-top: 16px;\\n\\n .price-total-section {\\n text-align: right;\\n }\\n }\\n}\\n\\n.plan-configuration {\\n .sub-container {\\n width: 424px;\\n }\\n .title {\\n color: var(--n800);\\n margin-bottom: 8px;\\n }\\n .title-description {\\n color: var(--n700);\\n margin-bottom: 32px;\\n }\\n .total-section {\\n background-color: var(--n00);\\n .price-section {\\n background-color: var(--n100);\\n border-radius: 9px;\\n margin-top: 16px;\\n\\n .price-total-section {\\n text-align: right;\\n }\\n }\\n\\n .lsux-row.halves-fixed.children4 > .lsux-col:nth-child(1),\\n .lsux-row.halves-fixed.children4 > .lsux-col:nth-child(2) {\\n margin-bottom: 0;\\n padding-bottom: 1rem;\\n }\\n .lsux-row.halves-fixed.children4 > .lsux-col:nth-child(1)::before {\\n border-bottom: 1px solid #d3d3d3;\\n bottom: 0;\\n content: '';\\n position: absolute;\\n right: 0;\\n width: 90%;\\n }\\n\\n .lsux-row.halves-fixed.children4 > .lsux-col:nth-child(2)::before {\\n border-bottom: 1px solid #d3d3d3;\\n bottom: 0;\\n content: '';\\n left: 0;\\n position: absolute;\\n width: 90%;\\n }\\n\\n @media screen and (max-width: 329px) {\\n .button-next {\\n width: 95%;\\n margin: 0 auto;\\n max-width: 424px;\\n }\\n .price-section {\\n width: 95%;\\n margin: 16px auto;\\n }\\n }\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","cartBuilderData3","cartBuilderOfferData3","dd_term_strings","ANNUAL","BIANNUAL","DAILY","MONTHLY","PAY_PERIOD","QUARTERLY","WEEKLY","per_term_strings","ONCE","TestControlComponent","offerIds","find_offer_id","region","length","i","offer","j","availableLocalities","abbreviation","find_tier","merchandizedTiers","tierName","name","toLowerCase","find_term","prices","termName","billingPeriod","possibleRegions","setPossibleRegions","useState","get_possible_regions","offerRegions","offerId","products","productFamily","push","label","value","regionData","includes","fullName","invalidRegionData","sort","a","b","iRegion","iOfferId","iOffer","setRegion","setOfferId","currentTierName","setCurrentTierName","currentTermName","setCurrentTermName","currentSupplements","setCurrentSupplements","useEffect","newOfferId","tier","term","changeSupplements","newSupplements","supplements","some","item","filter","onTierChange","onTermChange","onSupplementChange","e","target","get_price","price","toFixed","pplsi","market","React","className","renderName","productId","id","productVersion","cartBuilderSimpleProductDataMap","toString","friendlyName","renderPrice","offerPrice","initialListPrice","fees","key","supplement","currentRegion","Select","onValueChange","r","hidden","map","reg","SelectItem","renderTiers","currentTier","tiers","simpleProductData","priceString","toLocaleLowerCase","option","renderTerms","lcm","renderSupplements","supplementElements","Checkbox","rightLabel","checked","onChange","TestControl","forwardRef","FeatureContext","FeatureContextProvider","children","Provider","multiselect","useFeatureFlags","useContext","mockLog","error","args","console","group","_args","groupEnd","log","logger","window","location","port","getPerTerm","downcaseKeys","obj","Object","keys","reduce","acc","k","CartBuilderItem","constructor","cartBuilderItemIndex","this","_cartBuilderItem","cartBuilderData","items","Error","availableAddOns","findAvailableAddOns","availableRegions","findAvailableRegions","availableTiersForOfferAndTerm","findAvailableTiers","buildOfferSelection","planConfiguration","offerData","cartBuilderOfferData","selectedSupplements","addon","createSupplement2","Number","slice","defaultProduct","selectedTier","selectedPrice","product","createProductV2","discountIds","prepaidTerm","productPrice","supplementSelections","associateType","offers","find","selections","assign","productInfo","productType","createOfferSelection","offerProducts","defaultOffer","defaultOfferId","findOfferIdForRegion","defaultPlanConfiguration","defaultSupplements","defaultTerm","defaultTier","defaultRegion","monthlyTerm","Offers","BillingPeriod","extractPrices","findPrices","itemOfferConfig","productTypeForOfferId","simpleProductDataForOfferId","productFamilyForOfferId","itemOffer","settings","supplementSetting","skip","supp","_availableRegions","totalPrice","tierNameFromCBOfferData","tierNameFromSimpleProductData","_availableTiers","planCardPrice","getPrice","getFees","planFees","planPrice","titlePrice","parseFloat","_prices","getEnvironment","envPrefix","Environment","UAT","DEVELOPMENT","PRODUCTION","CrossSell","Grid","classNames","GridRow","variant","Container","alignItems","background","justifyContent","Title","title","Heading","as","text","Text","textSize","PlanCard","PlanCardInfo","appName","planName","planRecurrence","planType","showFees","List","feature","index","ListItem","Icon","ListItemText","primary","Button","stretch","Guideline","data","URLSearchParams","search","get","string_table","MODAL_HEADING","START_UP_MODAL_TEXT","MODAL_POINT_ONE","Link","to","ASSOCIATE_AGREEMENT","MODAL_POINT_TWO","MODAL_POINT_TWO_A","MODAL_POINT_TWO_B","MODAL_POINT_TWO_C","MODAL_POINT_TWO_D","MODAL_POINT_THREE","MODAL_POINT_THREE_A","MODAL_POINT_THREE_B","MODAL_POINT_THREE_C","START_UP_MODAL_BOTTOM_TEXT_ONE","START_UP_MODAL_BOTTOM_TEXT_ONE_A","START_UP_MODAL_BOTTOM_TEXT_TWO","START_UP_MODAL_BOTTOM_TEXT_THREE","HELP_NO","BillingTerms","planConfigurationSetters","setAndScrollToRegionError","PlanCardBillingTerm","availableBillingTerms","order","indexOf","handleBillingTermClick","selectedTermIndex","selectedBillingTerm","CartBuilderFooter","disableContinueButton","next","runningTotalPrice","runningTotalItems","selectedCardCount","GridCol","ONE_TIME_FEE_CAPS","TOTAL","ITEMS","textWeight","style","width","CONTINUE","onClick","disabled","pplsiEventId","LsEnv","getLsEnv","realmDomain","Uat","Dev","Stag","Prod","defaultEnv","apps","atlas_base_url","eligibilites_url","token","domain","gtm","auth","gtmId","preview","request_codes","Forbidden","InternalServerError","TooManyRequests","Unauthorized","timeout","currentEnv","associate","identity","legal","PlanInfoContainer","cartBuilderItem","seeDetailText","isAssociateAgreement","planCardInfo","FEE_LABEL_ASSOCIATE","ASSOCIATE_START_UP","ONE_TIME_FEE","buyNowKey","join","planDesc","cartBuilderBuyNowOfferDataMapList","description","ASSOCIATE","BUYNOW_SUBTITLELEGALPLAN","BUYNOW_SUBTITLEIDENTITYPLAN","isSelected","showSeeDetails","envConfig","planDescription","onSeeDetailsClick","handleSeeDetails","url","contractsIds","getContractIds","simpleProduct","contracts","baseRegionContract","byRegion","tierContractIds","defaultContract","standardizedContracts","supplementContractIds","flatMap","concat","open","Supplements","onChangeDisabled","disabledType","selectedAddOn","useMemo","supplementsExcludingSkipped","COVERAGE_ADD_ONS","PlanCardAddOns","onAddOnSelect","supplementName","chosenSupplement","numberValue","replace","themisAnalytics","triggerRemoveFromCartEvent","currency","item_id","item_name","currentSupplementName","triggerAddToCartEvent","selectedAddOns","Tiers","periodTerm","availableTiers","PlanCardTierRadioButtonGroup","handleTierClick","selectedTierName","selectedTierData","isPlanValid","regionName","existedRegion","PlanConfiguration","PlanConfigurationComponent","continueOrCheckout","offerConfigurationMap","regionErrorMessage","setRegionErrorMessage","showRegionPicker","setShowRegionPicker","showError","setShowError","scrollToRef","useRef","current","scrollIntoView","block","REGION_ERROR","setDisableContinueButton","addPriceWithString","price1","price2","totalPrices","allOfferConfigurationMap","size","valid","CONFIGURE_YOUR_COVERGAE","COVERAGE_DESCRITION","selectable","SEE_DETAILS","PlanCardRegionPicker","invalidRegionTitle","INVALID_REGION_TITLE","invalidRegionMessage","INVALID_REGION_MESSAGE","invalidRegions","regions","selectedRegion","onRegionSelect","placeholder","string_table_market","SELECT_YOUR_STATE","innerRef","Alert","severity","scrollTo","AppRoutes","props","setCartBuilderItemIndex","setOfferConfiguration","Map","_item","values","entries","setPlanConfiguration","useCallback","planConfig","hasBusinessPlus","hasHomeBusinessV2","updateCartItems","supplementIndex","findIndex","prevOfferConfigurationMap","prevPlanConfig","set","shouldReset","prevConfiguration","setAssociateType","async","checkout","filteredOfferConfigurationMap","forEach","offerSelections","orderTotalPrice","orderTermName","orderBrand","orderRegion","Brand","IDSHIELD","LEGALSHIELD","requestPayload","billingFrequency","period","Purchases","Currency","USD","marketLocale","marketingSite","undefined","WALSOrderInfo","associateData","createWALSOrderV2MidVerbosity","sponsorId","createD2COrderV2LowVerbosity","source","marketingChannel","sponsorFriendlyId","friendlyId","sponsorSiteName","sitename","redirectService","RedirectService","orderServiceV2","OrderServiceV2","walsOrder","anonymousCreateOrderV2","environmentArg","orderInfo","createdOrder","eventItems","offerSelection","quantity","triggerBeginCheckoutEvent","onBeginCheckout","redirectToCheckout","brand","environment","hostName","orderID","orderVersion","OrderVersion","ORDERV2OFFERS","err","customAttributes","context","newrelic","noticeError","CheckoutService","prevPrice","itemIndex","planConfigurationState","runningItemCounts","prevTotalItems","Suspense","fallback","Spinner","spinnerSize","Routes","Route","path","element","nextItemIndex","BackButton","paddingLeft","paddingRight","goBack","prevItemIndex","history","go","App","hideBackArrow","href","ads_set_title","TITLE","useLocation","onCLS","onFID","onLCP","Layout","StickyHeading","position","top","flexbox","siteLevel","BusinessCard","displayName","email","phone","profileImage","avatarUrl","MarketingFooter","social","footerContent","footerHtml","disclaimerContent","disclaimerHtml","RegExp","prioritizePlanSort","plan1","plan2","cartBuilderItem1","cartBuilderItem2","productFamilyA","productFamilyB","productTypeA","productTypeB","priorities","Associate","Identity","Legal","priorityA","priorityB","legalPriorities","identityPriorities","root","document","getElementById","renderMethod","innerHTML","hydrate","render","analyticsConfig","client","AnalyticServiceVendor","GoogleTagManager","config","gtmService","queryClient","QueryClient","ThemisAnalytics","cartBuilderOfferSupplements","homeBusinessIndex","businessPlusIndex","splice","initializeCartBuilder","initialize","QueryClientProvider","BrowserRouter","___CSS_LOADER_EXPORT___","module"],"sourceRoot":""}