hemfixarna-web-components 1.7.1 → 1.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/cjs/hemfixarna-address_15.cjs.entry.js +55 -47
  2. package/dist/cjs/hemfixarna-address_15.cjs.entry.js.map +1 -1
  3. package/dist/cjs/hemfixarna-category.cjs.entry.js +1 -1
  4. package/dist/cjs/hemfixarna-components.cjs.js +1 -1
  5. package/dist/cjs/hemfixarna-service.cjs.entry.js +1 -1
  6. package/dist/cjs/{index-4695c475.js → index-6af772cf.js} +8 -1
  7. package/dist/cjs/index-6af772cf.js.map +1 -0
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/collection/components/hemfixarna-checkout/hemfixarna-checkout.js +12 -37
  10. package/dist/collection/components/hemfixarna-checkout/hemfixarna-checkout.js.map +1 -1
  11. package/dist/collection/components/hemfixarna-component/hemfixarna-component.js +52 -6
  12. package/dist/collection/components/hemfixarna-component/hemfixarna-component.js.map +1 -1
  13. package/dist/collection/components/hemfixarna-component/hemfixarna.css +20 -0
  14. package/dist/collection/components/hemfixarna-contact/hemfixarna-contact.js +6 -1
  15. package/dist/collection/components/hemfixarna-contact/hemfixarna-contact.js.map +1 -1
  16. package/dist/collection/store/index.js +7 -0
  17. package/dist/collection/store/index.js.map +1 -1
  18. package/dist/esm/hemfixarna-address_15.entry.js +55 -47
  19. package/dist/esm/hemfixarna-address_15.entry.js.map +1 -1
  20. package/dist/esm/hemfixarna-category.entry.js +1 -1
  21. package/dist/esm/hemfixarna-components.js +1 -1
  22. package/dist/esm/hemfixarna-service.entry.js +1 -1
  23. package/dist/esm/{index-113a6b21.js → index-8282f88e.js} +8 -1
  24. package/dist/esm/index-8282f88e.js.map +1 -0
  25. package/dist/esm/loader.js +1 -1
  26. package/dist/hemfixarna-components/hemfixarna-components.esm.js +1 -1
  27. package/dist/hemfixarna-components/hemfixarna-components.esm.js.map +1 -1
  28. package/dist/hemfixarna-components/p-8cc96dd9.entry.js +2 -0
  29. package/dist/hemfixarna-components/{p-a3d759d9.js → p-b397b966.js} +2 -2
  30. package/dist/hemfixarna-components/p-b397b966.js.map +1 -0
  31. package/dist/hemfixarna-components/{p-12dbf4e6.entry.js → p-e8800c3b.entry.js} +2 -2
  32. package/dist/hemfixarna-components/p-fb43b148.entry.js +2 -0
  33. package/dist/hemfixarna-components/p-fb43b148.entry.js.map +1 -0
  34. package/dist/types/components/hemfixarna-checkout/hemfixarna-checkout.d.ts +0 -4
  35. package/dist/types/components/hemfixarna-component/hemfixarna-component.d.ts +3 -0
  36. package/dist/types/components.d.ts +2 -0
  37. package/dist/types/store/index.d.ts +2 -0
  38. package/package.json +1 -1
  39. package/readme.md +1 -1
  40. package/dist/cjs/index-4695c475.js.map +0 -1
  41. package/dist/esm/index-113a6b21.js.map +0 -1
  42. package/dist/hemfixarna-components/p-7c122f15.entry.js +0 -2
  43. package/dist/hemfixarna-components/p-9df46508.entry.js +0 -2
  44. package/dist/hemfixarna-components/p-9df46508.entry.js.map +0 -1
  45. package/dist/hemfixarna-components/p-a3d759d9.js.map +0 -1
  46. /package/dist/hemfixarna-components/{p-7c122f15.entry.js.map → p-8cc96dd9.entry.js.map} +0 -0
  47. /package/dist/hemfixarna-components/{p-12dbf4e6.entry.js.map → p-e8800c3b.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"file":"hemfixarna-address.hemfixarna-box.hemfixarna-breadcrumbs.hemfixarna-cart.hemfixarna-checkout.hemfixarna-component.hemfixarna-contact.hemfixarna-demo.hemfixarna-getuser.hemfixarna-info.hemfixarna-invoice.hemfixarna-order.hemfixarna-orderrows.hemfixarna-product.hemfixarna-start.entry.cjs.js","mappings":"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AE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;AACrD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CA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","names":["state","h","Business","Fragment","getAssetPath","base","WidgetStyle","HemfixarnaInfo","utf8_1","md5_1","MD5","Personnummer"],"sources":["./src/utils/form.ts","./src/utils/scroll.ts","./src/components/hemfixarna-address/hemfixarna-address.tsx","./src/utils/calc.ts","./src/utils/types.ts","./src/components/hemfixarna-box/hemfixarna-box.tsx","./src/components/hemfixarna-breadcrumbs/hemfixarna-breadcrumbs.tsx","./src/components/hemfixarna-cart/hemfixarna-cart.tsx","./src/utils/enviroment.ts","./src/utils/api.ts","./src/utils/felixApi.ts","./src/components/hemfixarna-checkout/hemfixarna-checkout.tsx","./src/components/hemfixarna-component/hemfixarna.scss?tag=hemfixarna-component&encapsulation=shadow","./src/components/hemfixarna-component/hemfixarna-component.tsx","./src/components/hemfixarna-contact/hemfixarna-contact.tsx","./src/components/hemfixarna-demo/hemfixarna-demo.scss?tag=hemfixarna-demo&encapsulation=shadow","./src/components/hemfixarna-demo/hemfixarna-demo.tsx","./node_modules/personnummer/dist/esm/index.js","./node_modules/md5-js-tools/lib/utf8.js","./node_modules/md5-js-tools/lib/md5.js","./node_modules/md5-js-tools/lib/index.js","./src/utils/creditSafe.ts","./src/components/hemfixarna-getuser/hemfixarna-getuser.tsx","./src/components/hemfixarna-info/hemfixarna-info.tsx","./src/components/hemfixarna-invoice/hemfixarna-invoice.scss?tag=hemfixarna-invoice","./src/components/hemfixarna-invoice/hemfixarna-invoice.tsx","./src/components/hemfixarna-order/hemfixarna-order.tsx","./src/components/hemfixarna-orderrows/hemfixarna-orderrows.tsx","./src/components/hemfixarna-product/hemfixarna-product.scss?tag=hemfixarna-product","./src/components/hemfixarna-product/hemfixarna-product.tsx","./src/components/hemfixarna-start/hemfixarna-start.tsx"],"sourcesContent":["const hideField = (field: string) => {\n return field.split(' ').reduce((acc, curr) => {\n if (curr.length <= 2) {\n return acc + curr.slice(0, 1) + '* ';\n } else {\n return acc + curr.slice(0, 1) + '*'.repeat(curr.length - 2) + curr.slice(-1) + ' ';\n }\n }, '');\n};\n\nexport { hideField };\n","const scrollToTop = (el: Element | undefined) => {\n if (!el) return;\n el.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n};\n\nexport { scrollToTop };\n","import { Component, Element, State, h } from '@stencil/core';\nimport state from '../../store';\nimport { hideField } from '../../utils/form';\nimport { scrollToTop } from '../../utils/scroll';\n\n@Component({\n tag: 'hemfixarna-address',\n shadow: false,\n})\nexport class HemfixarnaAddress {\n @State() street: string = '';\n @State() streetError: string | null = null;\n @State() zip: string = '';\n @State() zipError: string | null = null;\n @State() town: string = '';\n @State() townError: string | null = null;\n @Element() private el: HTMLElement;\n\n componentWillLoad() {\n if (state.user) {\n this.street = state.user.street;\n this.zip = state.user.zip;\n this.town = state.user.town;\n }\n }\n\n handleSubmit = (e: Event) => {\n e.preventDefault();\n const streetValid = this.street.length > 0;\n if (!streetValid) {\n this.streetError = 'Ange en gatuadress';\n }\n const zipValid = this.zip.length > 0;\n const zipIsNumber = /^\\s*\\d[\\d\\s]*$/.test(this.zip);\n if (!zipIsNumber) {\n this.zipError = 'Postnummer får endast innehålla siffror';\n }\n if (!zipValid) {\n this.zipError = 'Ange ett postnummer';\n }\n const townValid = /^[^\\d\\s]{2,}$/.test(this.town);\n if (!townValid) {\n this.townError = 'Ange en ort';\n }\n if (streetValid && zipValid && townValid && zipIsNumber) {\n state.user = { ...state.user, street: this.street, zip: this.zip, town: this.town };\n state.checkoutStep = 2;\n state.checkoutEdit = false;\n const el = this.el.closest('.hemfixarna_content');\n scrollToTop(el);\n }\n };\n\n handleChangeStreet = (e: Event) => {\n this.streetError = null;\n this.street = this.street === state.user.street ? '' : (e.target as HTMLInputElement).value;\n };\n\n handleChangeZip = (e: Event) => {\n this.zipError = null;\n this.zip = this.zip === state.user.zip ? '' : (e.target as HTMLInputElement).value;\n };\n\n handleChangeTown = (e: Event) => {\n this.townError = null;\n this.town = this.town === state.user.town ? '' : (e.target as HTMLInputElement).value;\n };\n\n render = () => {\n return (\n <form class=\"hemfixarna_address\" onSubmit={e => this.handleSubmit(e)}>\n <div>\n <input\n class={`${this.street.length ? 'input_active' : ''}`}\n onInput={this.handleChangeStreet}\n type=\"text\"\n name=\"street\"\n value={this.street === state.user.street ? hideField(this.street) : this.street}\n />\n <label htmlFor=\"street\">Gatuaddress </label>\n </div>\n {this.streetError && <span>{this.streetError}</span>}\n <div>\n <input\n class={`${this.zip.length ? 'input_active' : ''}`}\n onInput={this.handleChangeZip}\n type=\"tel\"\n name=\"zip\"\n value={this.zip === state.user.zip ? hideField(this.zip) : this.zip}\n />\n <label htmlFor=\"zip\">Postnummer </label>\n </div>\n {this.zipError && <span>{this.zipError}</span>}\n <div>\n <input\n class={`${this.town.length ? 'input_active' : ''}`}\n onInput={this.handleChangeTown}\n type=\"text\"\n name=\"town\"\n value={this.town === state.user.town ? hideField(this.town) : this.town}\n />\n <label htmlFor=\"town\">Ort </label>\n </div>\n {this.townError && <span>{this.townError}</span>}\n <input type=\"submit\" value=\"Fortsätt\" />\n </form>\n );\n };\n}\n","import state from '../store';\nimport { CartItem, CartPart, Part, Product } from '../types';\n\nconst getRutPrice = (price: number) => {\n return Math.ceil(price / 2);\n};\n\nconst getRotPrice = (price: number) => {\n return Math.ceil(price * 0.7);\n};\n\nconst getGreenPrice = (price: number) => {\n return Math.ceil(price * 0.5);\n};\n\nconst getRutStartFee = () => {\n if (!state.options) return 448;\n if (state.rut) {\n return getRutPrice(state.options.start_fee);\n } else {\n return state.options.start_fee;\n }\n};\n\nconst getRotStartFee = () => {\n if (!state.options) return 448;\n if (state.rot) {\n return getRotPrice(state.options.start_fee);\n } else {\n return state.options.start_fee;\n }\n};\n\nconst getProductPrice = (product: Product | CartItem, price?: number, amount: number = 1) => {\n if (product.rot && state.rot) {\n return getRotPrice((price || product.price) * amount);\n } else if (product.rut && state.rut) {\n return getRutPrice((price || product.price) * amount);\n } else if (product.green && state.green) {\n return getGreenPrice((price || product.price) * amount);\n } else {\n return (price || product.price) * amount;\n }\n};\n\nconst getProductPriceWithRotAndRut = (product: Product) => {\n if (product.rot) {\n return getRotPrice(product.price);\n } else if (product.rut && state.rut) {\n return getRutPrice(product.price);\n } else {\n return product.price;\n }\n};\n\nconst getPartPrice = (part: Part | CartPart, product: Product | CartItem, amount: number = 1) => {\n if (product.rot && state.rot) {\n return getRotPrice(part.price * amount);\n } else if (product.rut && state.rut) {\n return getRutPrice(part.price * amount);\n } else {\n return part.price * amount;\n }\n};\n\nconst getStartFee = () => {\n if (!state.cart) return { rut: 0, rot: 0, green: 0 };\n const hasRut = state.cart.some(item => item.rut && item.start_fee);\n const hasRot = state.cart.some(item => item.rot && item.start_fee);\n const hasGreen = state.cart.some(item => item.green && item.start_fee);\n const rutPrice = state.rut ? getRutPrice(state.options.start_fee) : state.options.start_fee * 1;\n const rotPrice = state.rot ? getRotPrice(state.options.start_fee) : state.options.start_fee * 1;\n const greenPrice = state.green ? getGreenPrice(state.options.start_fee) : state.options.start_fee * 1;\n return { rut: hasRut ? rutPrice : 0, rot: hasRot ? rotPrice : 0, green: hasGreen ? greenPrice : 0, length: [hasRut, hasRot, hasGreen].filter(d => d).length };\n // if (hasRut && hasRot) {\n // return { rut: rutPrice, rot: rotPrice, length: 2 };\n // } else if (hasRut) {\n // return { rut: rutPrice, rot: 0, length: 1 };\n // } else if (hasRot) {\n // return { rut: 0, rot: rotPrice, length: 1 };\n // } else {\n // return { rut: 0, rot: 0, length: 0 };\n // }\n};\n\nconst getItemPrice = (item: CartItem) => {\n const partsPrice = item.parts.reduce((acc, curr) => {\n return acc + curr.price * curr.amount;\n }, 0);\n return getProductPrice(item, item.price * item.amount + partsPrice);\n};\n\nconst calculateRot = () => {\n const totalWithRot =\n state.cart.reduce((acc, curr) => {\n return curr.rot ? acc + getItemPrice(curr) : acc;\n }, 0) + getStartFee().rot;\n const totalWithoutRot =\n state.cart.reduce((acc, curr) => {\n const partsPrice = curr.parts.reduce((acc, curr) => {\n return acc + curr.price * curr.amount;\n }, 0);\n return curr.rot ? acc + curr.price * curr.amount + partsPrice : acc;\n }, 0) + Number(state.options.start_fee);\n return totalWithoutRot - totalWithRot;\n};\n\nconst calculateRut = () => {\n const totalWithRut =\n state.cart.reduce((acc, curr) => {\n return curr.rut ? acc + getItemPrice(curr) : acc;\n }, 0) + getStartFee().rut;\n const totalWithoutRut =\n state.cart.reduce((acc, curr) => {\n const partsPrice = curr.parts.reduce((acc, curr) => {\n return acc + curr.price * curr.amount;\n }, 0);\n return curr.rut ? acc + curr.price * curr.amount + partsPrice : acc;\n }, 0) + Number(state.options.start_fee);\n return totalWithoutRut - totalWithRut;\n};\n\nconst calculateGreenDiscount = () => {\n const totalWithGreen =\n state.cart.reduce((acc, curr) => {\n return curr.green ? acc + getItemPrice(curr) : acc;\n }, 0) + getStartFee().green;\n const totalWithoutGreen =\n state.cart.reduce((acc, curr) => {\n const partsPrice = curr.parts.reduce((acc, curr) => {\n return acc + curr.price * curr.amount;\n }, 0);\n return curr.green ? acc + curr.price * curr.amount + partsPrice : acc;\n }, 0) + Number(state.options.start_fee);\n return totalWithoutGreen - totalWithGreen;\n};\n\nconst getTotalPrice = () => {\n return state.cart.reduce((acc, curr) => acc + getItemPrice(curr), 0) + getStartFee().rot + getStartFee().rut;\n};\n\nexport {\n calculateGreenDiscount,\n calculateRot,\n calculateRut,\n getGreenPrice,\n getItemPrice,\n getPartPrice,\n getProductPrice,\n getProductPriceWithRotAndRut,\n getRotPrice,\n getRotStartFee,\n getRutPrice,\n getRutStartFee,\n getStartFee,\n getTotalPrice,\n};\n","import { Business, CustomerCategory, CustomerSubCategory, Product } from '../types';\n\nconst isProduct = (category: CustomerCategory | CustomerSubCategory | Product): category is Product => {\n return (category as Product).post_name !== undefined;\n};\n\nconst isBusiness = (partner: string): partner is Business => {\n return Object.values(Business).includes(partner as Business);\n};\n\nexport { isBusiness, isProduct };\n","import { Component, Element, Fragment, Prop, h } from '@stencil/core';\nimport state from '../../store';\nimport { Category, CustomerCategory, CustomerSubCategory, Product, Service } from '../../types';\nimport { getProductPrice } from '../../utils/calc';\nimport { scrollToTop } from '../../utils/scroll';\nimport { isProduct } from '../../utils/types';\n\n@Component({\n tag: 'hemfixarna-box',\n shadow: false,\n})\nexport class HemfixarnaBox {\n @Prop() post: Category | Product | Service;\n @Prop() category: CustomerCategory | CustomerSubCategory | Product;\n @Prop() icon: string;\n @Prop() postTitle: string;\n @Element() private el: HTMLElement;\n\n setTaxonomy(taxonomy: Category | Service | Product) {\n if (taxonomy) {\n if ((taxonomy as Category)?.taxonomy === 'service_cat') {\n state.selectedCategory = taxonomy as Category;\n state.step = 2;\n } else if ((taxonomy as Service)?.post_type === 'service') {\n state.selectedService = taxonomy as Service;\n state.step = 3;\n } else if ((taxonomy as Product)?.post_type === 'ikea_product') {\n state.selectedProduct = taxonomy as Product;\n state.step = 4;\n }\n const el = this.el.closest('.hemfixarna_content');\n scrollToTop(el);\n }\n }\n\n setProduct() {\n state.selectedProduct = this.category as Product;\n state.step = 4;\n state.selectedCustomerCategory = null;\n const el = this.el.closest('.hemfixarna_content');\n scrollToTop(el);\n }\n\n render() {\n return this.category ? (\n <Fragment>\n {isProduct(this.category) ? (\n <li onClick={() => this.setProduct()}>\n <img class=\"hemfixarna_logo\" height={82} src={this.category.icon as string} alt={this.category.post_name} />\n <div>\n <p>{this.category.title}</p>\n {!this.category.invoice ? <p class=\"price\">Från {getProductPrice(this.category)}kr</p> : null}\n </div>\n </li>\n ) : (\n <li onClick={() => (state.selectedCustomerCategory = this.category as CustomerCategory)}>\n <img class=\"hemfixarna_logo\" height={82} src={this.category.icon} alt={this.category.name} />\n <div>\n <p>{this.category.name}</p>\n </div>\n </li>\n )}\n </Fragment>\n ) : (\n <li onClick={() => this.setTaxonomy(this.post)}>\n {this.post.icon && <img class=\"hemfixarna_logo\" height={82} src={this.icon} alt={this.postTitle} />}\n <div>\n <p>{this.postTitle}</p>\n {state.step === 3 && <p class=\"price\">Från {getProductPrice(this.post as Product)}kr</p>}\n </div>\n </li>\n );\n }\n}\n","import { Component, Element, Prop, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\nimport { scrollToTop } from '../../utils/scroll';\n\n@Component({\n tag: 'hemfixarna-breadcrumbs',\n shadow: false,\n})\nexport class HemfixarnaBreadcrumbs {\n @Prop() closeModal: () => void;\n @Element() private el: HTMLElement;\n\n getCartLength() {\n return state.cart.reduce((acc, curr) => acc + curr.amount, 0);\n }\n\n triggerScrollTotop = () => {\n const el = this.el.nextSibling as HTMLElement;\n scrollToTop(el);\n };\n\n handleCartClick() {\n if (state.cart?.length) {\n state.step = 5;\n this.triggerScrollTotop();\n }\n }\n\n handleHomePageClick() {\n state.step = 1;\n state.parentCategory = null;\n state.selectedCustomerCategory = null;\n this.triggerScrollTotop();\n setTimeout(() => {\n state.selectedCategory = null;\n state.selectedProduct = null;\n state.maleri = null;\n state.selectedService = null;\n }, 200);\n }\n\n render() {\n const logo = getAssetPath(`./assets/hemfixarna.svg`);\n const close = getAssetPath(`./assets/close.svg`);\n const cart = getAssetPath(`./assets/cart.svg`);\n const back = getAssetPath(`./assets/back.svg`);\n\n return (\n <div>\n <div class=\"hemfixarna_crumbs\">\n <div class=\"hemfixarna_crumbs--links\">\n <img onClick={() => this.handleHomePageClick()} src={logo} width={110} />\n <img onClick={() => this.closeModal()} class=\"close\" src={close} width={32} />\n <div>\n <button onClick={() => this.handleHomePageClick()}>Alla tjänster</button>\n </div>\n </div>\n <div class=\"hemfixarna_crumbs--right\">\n <hemfixarna-contact></hemfixarna-contact>\n <div onClick={() => this.handleCartClick()} class={`cart ${this.getCartLength() > 0 ? 'cart_active' : ''}`}>\n <img src={cart} width={24} />\n <span>{this.getCartLength()}</span>\n </div>\n </div>\n </div>\n {[3, 4].includes(state.step) && !state.customer && (\n <button\n class=\"hemfixarna_crumbs--back\"\n onClick={() => {\n state.step = state.step === 4 ? 3 : 2;\n }}\n >\n <img width={24} src={back} alt=\"back arrow\" />\n <span>Se allt {state.step === 4 ? state.selectedService.post_title : state.selectedCategory.name}</span>\n </button>\n )}\n {!state.parentCategory && state.step && state.selectedCustomerCategory && (\n <button\n class=\"hemfixarna_crumbs--back\"\n onClick={() => {\n state.step = 1;\n state.selectedCustomerCategory = null;\n state.selectedProduct = null;\n state.maleri = null;\n }}\n >\n <img width={24} src={back} alt=\"back arrow\" />\n <span>Se alla tjänster</span>\n </button>\n )}\n {state.parentCategory && state.step < 5 && (\n <button\n class=\"hemfixarna_crumbs--back\"\n onClick={() => {\n state.step = 1;\n state.selectedCustomerCategory = state.parentCategory;\n state.selectedProduct = null;\n state.maleri = null;\n }}\n >\n <img width={24} src={back} alt=\"back arrow\" />\n <span>Se allt {state.parentCategory.name}</span>\n </button>\n )}\n </div>\n );\n }\n}\n","import { Component, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\n\n@Component({\n tag: 'hemfixarna-cart',\n shadow: false,\n})\nexport class HemfixarnaCart {\n render() {\n const back = getAssetPath(`./assets/back.svg`);\n\n return (\n <div class=\"hemfixarna_cart\">\n <div class=\"hemfixarna_cart--left\">\n <h2>\n {state.checkoutStep === 2 && !state.checkoutEdit && (\n <button\n onClick={() => {\n state.checkoutStep = 1;\n }}\n >\n <img width={24} src={back} alt=\"back arrow\" />\n </button>\n )}\n Din bokning\n </h2>\n <hemfixarna-orderrows />\n </div>\n <div class=\"hemfixarna_cart--right\">\n <h2>\n {state.checkoutStep === 2 && !state.checkoutEdit && (\n <button\n onClick={() => {\n state.checkoutStep = 1;\n }}\n >\n <img width={24} src={back} alt=\"back arrow\" />\n </button>\n )}\n Dina uppgifter\n </h2>\n <hemfixarna-checkout />\n <hemfixarna-info />\n </div>\n </div>\n );\n }\n}\n","const livePreviewUrl = 'hemfixarna-partner.vercel.app';\n\nconst getDefaultApiUrl = () => {\n if (window.location.href.includes('vercel.app') && !window.location.href.includes(livePreviewUrl)) {\n return 'https://hemfixare.dev.afonso.se';\n } else {\n return 'https://hemfixarna.se';\n }\n};\n\nconst getApiUrl = () => {\n if (typeof process !== 'undefined' && process.env && process.env.API_URL) {\n return process.env.API_URL;\n }\n\n return getDefaultApiUrl();\n};\n\nconst getDefaultCreditSafeApiUrl = () => {\n if (window.location.href.includes('vercel.app')) {\n return 'https://hemfixare-lookup-dev.vercel.app/api';\n } else {\n return 'https://hemfixare-lookup.vercel.app/api';\n }\n};\n\nconst getCreditSafeApiUrl = () => {\n if (typeof process !== 'undefined' && process.env && process.env.CREDIT_SAFE_API_URL) {\n return process.env.CREDIT_SAFE_API_URL;\n }\n\n return getDefaultCreditSafeApiUrl();\n};\n\nexport { getApiUrl, getCreditSafeApiUrl };\n","import { RotOptions, RutOptions, WpOptions } from '../types';\nimport { getApiUrl } from './enviroment';\nimport { FelixOrder } from './felixApi';\n\nconst base = `${getApiUrl()}/wp-json/headless`;\n\nexport async function fetchWithType<T>(request: RequestInfo, options?: RequestInit): Promise<T> {\n const response = await fetch(request, options);\n const body = await response.json();\n return body;\n}\n\nconst getTaxonomy = async (endpoint: string) => {\n if (!endpoint) {\n return;\n }\n const type = endpoint.split('/')[0];\n const slug = endpoint.split('/')[1];\n try {\n const res = await fetch(`${base}/${type}/${slug}`);\n return await res.json();\n } catch (error) {\n console.log(error);\n }\n};\n\nconst getCustomer = async (slug: string) => {\n try {\n const res = await fetch(`${base}/customer/${slug}`);\n return await res.json();\n } catch (error) {\n console.log(error);\n }\n};\n\nconst loginCustomer = async ({ id, password }: { id: number; password: string }) => {\n try {\n const res = await fetch(`${base}/customer/login`, {\n method: 'POST',\n body: JSON.stringify({ id, password }),\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n return res.status;\n } catch (error) {\n console.log(error);\n }\n};\n\nconst getOptions = async () => {\n try {\n const res = await fetch(`${base}/webcoptions`);\n return (await res.json()) as WpOptions;\n } catch (error) {\n console.log(error);\n }\n};\n\nconst getRut = async () => {\n try {\n const data = await fetchWithType<RutOptions>(`${base}/rut`);\n return data;\n } catch (error) {\n console.log(error);\n }\n};\n\nconst getRot = async () => {\n try {\n const res = await fetch(`${base}/rot`);\n return (await res.json()) as RotOptions;\n } catch (error) {\n console.log(error);\n }\n};\n\nconst getGreenDiscount = async () => {\n try {\n const res = await fetch(`${base}/green-discount`);\n return await res.json();\n } catch (error) {\n console.log(error);\n }\n};\n\nconst postOrder = async (data: FelixOrder) => {\n try {\n const res = await fetch(`${base}/weborder`, {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n return (await res.json()) as { message: string; post_id: number; data: FelixOrder; status?: number };\n } catch (error) {\n console.log(error);\n }\n};\n\nexport { getCustomer, getGreenDiscount, getOptions, getRot, getRut, getTaxonomy, loginCustomer, postOrder };\n","import { fetchWithType } from './api';\nimport { getApiUrl } from './enviroment';\n\nconst base = `${getApiUrl()}/wp-json/felix`;\n\ninterface FelixOrder {\n firstName: string;\n lastName: string;\n street: string;\n zip: string;\n town: string;\n ssn: string;\n email: string;\n phone: string;\n url: string;\n date: string;\n notes?: string;\n wws?: string;\n referral_id?: string;\n id_source?: string;\n id_sub_source?: string;\n products: {\n id: string;\n name: string;\n quantity: number;\n rut: number;\n rot: number;\n }[];\n creditSafe: {\n firstName: string;\n lastName: string;\n street: string;\n zip: string;\n town: string;\n };\n felixStatus?: 'success' | 'error';\n customer?: string;\n seller_id?: string;\n refferal_id?: string;\n}\n\nconst postPerson = async (felixOrder: FelixOrder) => {\n try {\n return await fetchWithType<\n | {\n response: {\n scriptResult: string;\n scriptError: string;\n };\n messages: [\n {\n code: string;\n message: string;\n },\n ];\n }\n | false\n >(`${base}/createperson`, {\n method: 'POST',\n body: JSON.stringify(felixOrder),\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n } catch (error) {\n console.log(error);\n }\n};\n\nexport { FelixOrder, postPerson };\n","import { Component, Element, Fragment, State, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\nimport { Business } from '../../types';\nimport { postOrder } from '../../utils/api';\nimport { FelixOrder, postPerson } from '../../utils/felixApi';\nimport { hideField } from '../../utils/form';\nimport { scrollToTop } from '../../utils/scroll';\n\n@Component({\n tag: 'hemfixarna-checkout',\n shadow: false,\n})\nexport class HemfixarnaCheckout {\n @State() date: string = '';\n @State() dateError: string | null = null;\n @State() generalError: string | null = null;\n @State() loading = false;\n @State() enteredPin: string = '';\n @Element() private el: HTMLElement;\n private pinTimeout: any;\n @State() selectedSubSource: string | null = null;\n @State() partnerOrderId: string | null = null;\n @State() showSources = false;\n @State() sellerID: string | null = null;\n @State() RefferalID: string | null = null;\n\n handleChangeDate = (e: Event) => {\n this.dateError = null;\n this.date = (e.target as HTMLInputElement).value;\n };\n\n handleChangeTerms = () => {\n this.generalError = null;\n };\n\n sendOrder = async () => {\n if (this.loading) return;\n this.loading = true;\n let order: FelixOrder = {\n firstName: state.creditSafeUser.firstName,\n lastName: state.creditSafeUser.lastName,\n street: state.user.street,\n zip: state.user.zip,\n town: state.user.town,\n ssn: state.user.ssn,\n email: state.user.email,\n phone: state.user.phone,\n url: `${state.business === Business.string ? 'string' : state.business}-webk`,\n date: this.date,\n products: [\n ...state.cart.map(item => {\n const parts = item.parts.map(part => ({\n id: String(part.id),\n name: part.name,\n quantity: part.amount,\n rut: 0,\n rot: 0,\n }));\n return [\n {\n id: String(item.id),\n name: item.name,\n quantity: item.amount,\n rot: item.rot ? 1 : 0,\n rut: item.rut ? 1 : 0,\n },\n ...parts,\n ];\n }),\n ].flat(),\n creditSafe: state.creditSafeUser,\n customer: state.business,\n id_source: '',\n id_sub_source: '',\n seller_id: this.sellerID ?? '',\n referral_id: this.RefferalID ?? '',\n };\n\n const felixOrder = await postPerson(order);\n if (!felixOrder || !felixOrder.response?.scriptResult?.includes('OK')) {\n order = { ...order, felixStatus: 'error' };\n } else {\n order = { ...order, felixStatus: 'success' };\n }\n\n try {\n const { data: orderConfirm, status } = await postOrder(order);\n if (orderConfirm && status && status === 200) {\n state.step = 6;\n const el = this.el.closest('.hemfixarna_content');\n scrollToTop(el);\n } else {\n this.generalError = 'Något gick fel, försök igen senare';\n }\n } catch (error) {\n this.generalError = 'Något gick fel, försök igen senare';\n }\n this.loading = false;\n };\n\n handleSubmit = (e: Event) => {\n e.preventDefault();\n this.generalError = null;\n const validDate = this.date.length > 0;\n if (!validDate) {\n this.dateError = 'Ange ett giltigt datum';\n }\n const checkBoxes = Array.from(this.el.querySelectorAll('input[type=\"checkbox\"]'));\n const notValidTerms = checkBoxes.find(i => !(i as HTMLInputElement).checked);\n if (notValidTerms) {\n this.generalError = 'Du måste godkänna villkoren';\n }\n // if (state.customer.source) {\n // if (!this.sellerID) {\n // this.generalError = 'Ange säljare';\n // return;\n // }\n // if (state.customer.source.sub_sources?.length && !this.selectedSubSource) {\n // this.generalError = 'Välj underkälla';\n // return;\n // }\n // }\n if (validDate && !notValidTerms) {\n this.sendOrder();\n }\n };\n\n handleKeyDown = (event: KeyboardEvent) => {\n this.enteredPin += event.key;\n\n const correctPin = '+0033';\n\n if (this.enteredPin.length === correctPin.length) {\n if (this.enteredPin === correctPin) {\n localStorage.setItem('show_sources', 'true');\n this.showSources = true;\n window.removeEventListener('keydown', this.handleKeyDown);\n }\n this.enteredPin = '';\n }\n\n clearTimeout(this.pinTimeout);\n this.pinTimeout = setTimeout(() => (this.enteredPin = ''), 5000);\n };\n\n componentWillLoad() {\n if (Boolean(state.user && state.user.street)) {\n state.checkoutStep = 2;\n }\n if (state.customer && state.customer.source) {\n window.addEventListener('keydown', this.handleKeyDown);\n }\n const showSources = localStorage.getItem('show_sources');\n if (showSources) {\n this.showSources = true;\n }\n }\n\n disconnectedCallback() {\n window.removeEventListener('keydown', this.handleKeyDown);\n }\n\n render = () => {\n const dateLogo = getAssetPath(`./assets/date.svg`);\n const down = getAssetPath(`./assets/down.svg`);\n const loading = getAssetPath(`./assets/spinner.gif`);\n\n if (state.checkoutEdit) {\n return <hemfixarna-address />;\n } else if (state.checkoutStep === 1) {\n return <hemfixarna-getuser />;\n } else if (state.checkoutStep === 2) {\n return (\n <div class=\"mb-2\">\n <div class=\"hemfixarna_addressinfo\">\n <div>\n <p>{hideField(state.user.firstName)}</p>\n <p>{hideField(state.user.lastName)}</p>\n <p>{state.user.email}</p>\n <p>{state.user.phone}</p>\n </div>\n <div>\n <p>{hideField(state.user.street)}</p>\n <p>{hideField(state.user.zip)}</p>\n <p>{hideField(state.user.town)}</p>\n </div>\n <button onClick={() => (state.checkoutEdit = true)}>Behöver du ändra adressen?</button>\n </div>\n <form onSubmit={e => this.handleSubmit(e)}>\n <div>\n <img src={dateLogo} width={24} />\n <input\n class={`${this.date.length ? 'input_active' : ''}`}\n min={new Date().toISOString().split('T')[0]}\n onChange={e => this.handleChangeDate(e)}\n type=\"date\"\n name=\"date\"\n value={this.date}\n />\n <label htmlFor=\"date\">Tidigaste datum för hembesök</label>\n <img src={down} width={24} />\n </div>\n {this.dateError && <span>{this.dateError}</span>}\n {state.customer.source && this.showSources ? (\n <Fragment>\n <p>\n Inloggad som:\n <strong> {state.customer.source.fieldData.So01_Name}</strong>\n </p>\n <label>\n Säljare (SäljarId)\n <input type=\"text\" value={this.sellerID} onChange={e => (this.sellerID = (e.target as HTMLInputElement).value)} />\n </label>\n <label>\n PartnerOrderID (RefferalID)\n <input type=\"text\" value={this.RefferalID} onChange={e => (this.RefferalID = (e.target as HTMLInputElement).value)} />\n </label>\n {state.customer.source.sub_sources?.length ? (\n <div>\n <select onChange={e => (this.selectedSubSource = (e.target as HTMLSelectElement).value)}>\n <option disabled selected value=\"null\">\n Välj underkälla\n </option>\n {state.customer.source.sub_sources.map(sub => (\n <option value={sub['So_SubSource::_id']}>{sub['So_SubSource::Sus01_Name']}</option>\n ))}\n </select>\n </div>\n ) : (\n <h4>Det finns inga underkällor att välja</h4>\n )}\n </Fragment>\n ) : null}\n <label class=\"hemfixarna_checkbox\">\n <input onChange={() => this.handleChangeTerms()} type=\"checkbox\" />\n <span innerHTML={state.options.terms} />\n </label>\n {state.cart\n .filter(i => i.terms_checkout?.length)\n .map(item => (\n <Fragment>\n <label class=\"hemfixarna_checkbox\">\n <input onChange={() => this.handleChangeTerms()} type=\"checkbox\" />\n <span>{item.terms_checkout}</span>\n </label>\n </Fragment>\n ))}\n {this.generalError && <span>{this.generalError}</span>}\n <div class={this.loading ? 'loading' : ''}>\n <input type=\"submit\" value={this.loading ? '' : 'Skicka bokning'} />\n <img width={20} height={20} src={loading} alt=\"spinner\" />\n </div>\n </form>\n </div>\n );\n }\n };\n}\n","@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600&display=swap');\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n$yellow: #fffaf2;\n$grey: #b7b7b7;\n$brown: #e9d7ca;\n$black: #474444;\n$white: #fff;\n$darkyellow: #fcd9c9;\n$pink: #f1ded6;\n$green: #25a710;\n$orange: #ec6632;\n$darkorange: #c84e18;\n\n$border: 1px solid $darkyellow;\n$greyBorder: 1px solid #e3e3e3;\n$border-radius: 4px;\n$box-shadow: 0px 4px 8px 0px #0000000a;\n$box-shadow-hover: 0px 8px 16px 2px #0000000a;\n$widgetBoxColor: 0px 2px 16px 0px #00000014;\n\n@mixin hover {\n &:hover {\n transition: 0.1s all cubic-bezier(0.465, 0.183, 0.153, 0.946);\n filter: brightness(1.02);\n transform: scale(1.01);\n box-shadow: $box-shadow-hover;\n }\n}\n\n@mixin cartLength {\n position: relative;\n span {\n position: absolute;\n background: $white;\n border-radius: 100%;\n width: 24px;\n height: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-weight: 600;\n font-size: 13px;\n line-height: 11px;\n top: -6px;\n right: -12px;\n }\n}\n\n@mixin mobile {\n @media (max-width: 768px) {\n @content;\n }\n}\n\n@mixin desktop {\n @media (min-width: 769px) {\n @content;\n }\n}\n\n* {\n box-sizing: border-box;\n}\n\n:host {\n font-family: 'Inter', sans-serif;\n input[type='text'] {\n padding: 16px;\n width: 100%;\n font-size: 16px;\n border: 1px solid $darkyellow;\n }\n .mb-2 {\n margin-bottom: 32px;\n }\n button {\n color: $black;\n }\n form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n position: relative;\n button {\n position: absolute;\n right: 0;\n top: -1rem;\n }\n img {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n pointer-events: none;\n &:first-of-type {\n left: 16px;\n }\n &:last-of-type {\n right: 16px;\n }\n }\n span {\n margin-top: -8px;\n color: $orange;\n }\n p {\n text-align: center;\n }\n p {\n margin: 0;\n }\n div {\n position: relative;\n label {\n pointer-events: none;\n position: absolute;\n left: 16px;\n top: 50%;\n transform: translateY(-50%);\n background: $white;\n padding: 4px;\n transition: 0.2s all cubic-bezier(0.465, 0.183, 0.153, 0.946);\n }\n input {\n padding: 16px;\n width: 100%;\n font-size: 16px;\n border: 1px solid $darkyellow;\n }\n input:focus ~ label,\n .input_active ~ label {\n top: 0;\n transform: translateY(-50%);\n background: linear-gradient(180deg, $yellow 50%, $white 50%);\n }\n }\n select {\n padding: 0.75rem 1rem;\n width: 100%;\n }\n }\n h1 {\n font-size: 24px;\n font-weight: 400;\n line-height: 32px;\n letter-spacing: -3%;\n text-align: left;\n margin: 0 0 8px;\n }\n h2 {\n margin: 0 0 24px;\n font-weight: 700;\n font-size: 20px;\n line-height: 28px;\n letter-spacing: -3%;\n }\n p {\n font-size: 16px;\n font-weight: 400;\n line-height: 24px;\n letter-spacing: -3%;\n }\n .hemfixarna {\n width: 100%;\n &_contact {\n display: flex;\n gap: 16px;\n a {\n display: flex;\n align-items: center;\n gap: 8px;\n color: $black;\n text-decoration: none;\n font-weight: 600;\n font-size: 13px;\n &:hover {\n text-decoration: underline;\n }\n }\n &--horizontal {\n span {\n display: none;\n }\n @include desktop {\n span {\n display: initial;\n }\n }\n }\n }\n &_painting {\n > h2,\n p {\n text-align: center;\n padding: 0 16px;\n }\n > h2 {\n margin: 0 0 8px;\n }\n opacity: 0;\n padding: 0 1rem;\n animation: fadeIn 0.5s forwards 0.3s;\n }\n &_partnerlogo {\n max-height: 50px;\n min-height: 45px;\n object-fit: contain;\n max-width: 150px;\n @include desktop {\n max-width: 200px;\n }\n }\n &_nav {\n position: absolute;\n top: 0;\n width: 100dvw;\n left: 0;\n height: 80px;\n z-index: 9999;\n\n &--links {\n display: none !important;\n @include desktop {\n display: flex !important;\n }\n a {\n color: $orange;\n text-decoration: none;\n border: 1px solid rgba($color: $white, $alpha: 0.3);\n border-radius: 56px;\n padding: 8px 32px;\n text-transform: capitalize;\n }\n }\n > div {\n position: relative;\n overflow: hidden;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0 16px;\n @include desktop {\n padding: 0 32px;\n }\n > div {\n display: flex;\n gap: 32px;\n justify-content: space-between;\n }\n\n > img {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n z-index: -1;\n }\n }\n a {\n text-decoration: none;\n }\n p {\n color: $black;\n }\n p.with-bg {\n color: $white;\n }\n }\n &_standalone {\n .hemfixarna {\n &_backdrop {\n background: $yellow;\n opacity: 1;\n }\n &_modal {\n top: 80px;\n transform: translateX(-50%);\n border: none;\n height: calc(100dvh - 80px);\n opacity: 0;\n &--open {\n opacity: 1;\n }\n }\n }\n }\n .switch {\n position: relative;\n display: inline-block;\n width: 40px;\n height: 20px;\n }\n\n /* Hide default HTML checkbox */\n .switch input {\n opacity: 0;\n width: 0;\n height: 0;\n }\n\n /* The slider */\n .slider {\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: #ccc;\n -webkit-transition: 0.4s;\n transition: 0.4s;\n border-radius: 34px;\n }\n\n .slider:before {\n position: absolute;\n content: '';\n height: 18px;\n width: 18px;\n left: 2px;\n bottom: 1px;\n background-color: white;\n -webkit-transition: 0.4s;\n transition: 0.4s;\n border-radius: 50%;\n }\n\n input:checked + .slider {\n background-color: $darkyellow;\n }\n\n input:focus + .slider {\n box-shadow: 0 0 1px $darkyellow;\n }\n\n input:checked + .slider:before {\n -webkit-transform: translateX(18px);\n -ms-transform: translateX(18px);\n transform: translateX(18px);\n background: $orange;\n }\n\n &_maleribox {\n background: $white;\n box-shadow: $box-shadow;\n width: 100%;\n min-height: 132px;\n padding: 24px;\n display: flex;\n align-items: center;\n gap: 24px;\n text-align: left;\n @include hover;\n }\n\n &_checkbox {\n display: grid;\n grid-template-columns: 40px auto;\n font-size: 16px;\n font-weight: 400;\n line-height: 24px;\n letter-spacing: -3%;\n > span {\n transform: translateY(6px);\n }\n span,\n span p {\n color: $black;\n font-size: 14px;\n }\n p {\n text-align: left;\n }\n }\n\n &_info {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding: 32px;\n box-shadow: $box-shadow;\n border-radius: $border-radius;\n border: $border;\n h2 {\n margin: 0;\n }\n @include desktop {\n position: sticky;\n top: 0;\n }\n }\n\n &_infomodal {\n position: absolute;\n top: 40%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 100%;\n max-width: 80%;\n background: $yellow;\n border: $border;\n padding: 32px;\n z-index: 99;\n border-radius: $border-radius;\n box-shadow: $box-shadow;\n display: flex;\n flex-direction: column;\n gap: 16px;\n p,\n h4 {\n margin: 0;\n }\n button {\n background: $orange;\n color: $white;\n border-radius: 60px;\n font-size: 16px;\n padding: 8px 16px;\n }\n }\n\n &_addressinfo {\n padding: 16px 16px 64px;\n border: $border;\n position: relative;\n margin-bottom: 32px;\n display: grid;\n grid-template-columns: 1fr;\n gap: 8px;\n @include desktop {\n grid-template-columns: 1fr 1fr;\n }\n button {\n position: absolute;\n bottom: 16px;\n right: 16px;\n font-weight: 500;\n text-underline-offset: 2px;\n text-decoration: underline;\n }\n }\n\n &_part {\n background: $white;\n box-shadow: $box-shadow;\n display: grid;\n padding: 16px;\n grid-template-columns: auto 75px;\n }\n &_counter {\n display: flex;\n align-items: center;\n span {\n padding: 0 8px;\n }\n img {\n cursor: pointer;\n &:not(.disabled) {\n @include hover;\n }\n }\n }\n &_description {\n display: grid;\n gap: 16px;\n ul {\n list-style: disc;\n padding-right: 12px;\n transform: translateX(12px);\n }\n &--hidden {\n max-height: 140px;\n overflow: hidden;\n position: relative;\n cursor: pointer;\n &::after {\n content: '';\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: 128px;\n background: linear-gradient(180deg, rgba(255, 253, 250, 0), rgba(255, 253, 250, 0.46) 50%, $yellow);\n }\n }\n }\n &_terms {\n font-size: 14px;\n a {\n color: inherit;\n }\n }\n &_logo {\n height: 64px;\n }\n &_box {\n padding: 16px;\n display: flex;\n align-items: center;\n width: 100%;\n box-sizing: border-box;\n border-radius: 4px;\n gap: 16px 8px;\n border-radius: 4px;\n gap: 16px 8px;\n p,\n span {\n font-size: 15px;\n }\n .underline {\n text-decoration: underline;\n text-underline-offset: 2px;\n }\n .pointer {\n cursor: pointer;\n }\n .p-s {\n font-size: 12px;\n }\n > div {\n display: grid;\n gap: 8px;\n }\n &--standard {\n background: $yellow;\n border: $border;\n }\n &--alternative,\n &--alternative_2,\n &--alternative_3 {\n background: transparent;\n border: $greyBorder;\n }\n &--alternative_2,\n &--alternative_3 {\n box-shadow: $widgetBoxColor;\n }\n &--alternative_3 {\n justify-content: center;\n }\n }\n &_altbtn {\n display: flex !important;\n flex-direction: column;\n gap: 8px;\n align-items: center;\n margin-left: auto;\n }\n &_btn {\n margin-left: auto;\n }\n &_btn,\n &_buy,\n input[type='submit'] {\n border: none;\n border-radius: 60px;\n font-weight: 600;\n letter-spacing: 0.5px;\n line-height: 20px;\n box-shadow: $box-shadow;\n &:not(.disabled) {\n @include hover;\n }\n }\n div:has(> input[type='submit']) {\n position: relative;\n input {\n cursor: pointer;\n }\n img {\n display: none;\n }\n }\n .loading {\n cursor: default;\n opacity: 0.6;\n > img {\n display: initial !important;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n }\n &_btn {\n font-size: 14px;\n background: $darkorange;\n color: $white;\n padding: 16px 24px;\n white-space: nowrap;\n @include cartLength;\n span {\n background: $green;\n color: $white;\n right: 0 !important;\n }\n }\n &_buy,\n input[type='submit'] {\n font-size: 21px;\n background: $green;\n color: $white;\n padding: 16px 24px;\n }\n .disabled {\n opacity: 0.5;\n cursor: default;\n }\n &_modal {\n position: fixed;\n background: $yellow;\n border: $border;\n border-radius: $border-radius;\n top: 50%;\n left: 50%;\n z-index: 1000;\n transition: 0.1s all cubic-bezier(0.465, 0.183, 0.153, 0.946);\n transform: translate(-50%, -50%) scale(0.7);\n opacity: 0;\n height: 92%;\n width: 92%;\n max-width: 920px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n &--open {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n }\n &_backdrop {\n z-index: 999;\n position: fixed;\n background: $black;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n opacity: 0;\n transition:\n transform 0.1s cubic-bezier(0.465, 0.183, 0.153, 0.946),\n opacity 0.1s cubic-bezier(0.465, 0.183, 0.153, 0.946);\n &--open {\n opacity: 0.3;\n }\n }\n &_order {\n position: absolute;\n top: -1px;\n left: -1px;\n right: -1px;\n bottom: -1px;\n background-repeat: no-repeat !important;\n background-size: cover !important;\n background-position: center !important;\n display: grid;\n grid-template-columns: 1fr 1fr;\n padding: 48px 32px 64px;\n @include mobile {\n grid-template-columns: 1fr;\n grid-template-rows: 0 auto;\n }\n > div:last-of-type {\n background: $yellow;\n padding: 32px;\n display: flex;\n flex-direction: column;\n max-height: 100%;\n overflow: auto;\n }\n img {\n cursor: pointer;\n }\n button {\n margin: 16px 0;\n padding: 0;\n text-decoration: underline;\n text-underline-offset: 2px;\n font-size: 14px;\n font-weight: 600;\n }\n }\n &_cart {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 32px;\n @include mobile {\n grid-template-columns: 1fr;\n gap: 0;\n }\n &--right,\n &--left {\n h2 {\n display: flex;\n align-items: center;\n img {\n margin-top: 3.2px;\n }\n }\n }\n &--left {\n h2 {\n button {\n @include desktop {\n display: none;\n }\n }\n }\n }\n &--right {\n h2 {\n button {\n @include mobile {\n display: none;\n }\n }\n }\n }\n &--startfee {\n display: flex;\n justify-content: space-between;\n }\n &--rutrot {\n display: flex;\n justify-content: space-between;\n div {\n display: flex;\n gap: 16px;\n align-items: center;\n }\n }\n &--additional {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n border-top: $border;\n p {\n font-size: 14px;\n }\n strong {\n text-decoration: underline;\n text-underline-offset: 2px;\n cursor: pointer;\n position: relative;\n img {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n right: -24px;\n }\n }\n }\n &--price {\n border-top: $border;\n h3 {\n margin: 0;\n }\n padding: 16px;\n display: flex;\n justify-content: space-between;\n }\n &--item {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 16px 0;\n border-top: $border;\n span {\n font-size: 12px;\n }\n > div {\n display: flex;\n justify-content: space-between;\n > div {\n display: flex;\n align-items: center;\n gap: 16px;\n }\n button {\n color: $orange;\n }\n }\n }\n }\n &_categories {\n &--wrapper {\n gap: 32px;\n display: grid;\n grid-template-columns: 1fr 1fr;\n @include mobile {\n grid-template-columns: 1fr;\n }\n }\n display: flex;\n flex-direction: column;\n gap: 24px;\n li {\n position: relative;\n background: $white;\n border-radius: $border-radius;\n min-height: 132px;\n padding: 24px;\n box-shadow: $box-shadow;\n display: flex;\n align-items: center;\n gap: 24px;\n cursor: pointer;\n @include hover;\n > button {\n height: 100%;\n width: 100%;\n }\n .price {\n font-weight: 700;\n }\n }\n }\n &_content {\n height: 100%;\n overflow: auto;\n padding: 0 32px 64px;\n &--5 {\n padding-top: 16px;\n }\n &--painting {\n padding: 0;\n overflow: initial;\n }\n }\n &_crumbs {\n position: relative;\n padding: 16px 24px;\n border-bottom: $border;\n display: flex;\n justify-content: space-between;\n &--back {\n padding: 16px 24px 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n box-shadow: none !important;\n @include hover;\n }\n img {\n cursor: pointer;\n }\n .close {\n position: absolute;\n right: -16px;\n top: -16px;\n z-index: 9;\n -webkit-transform: translate3d(0, 0, 0);\n }\n .cart {\n display: flex;\n padding-left: 16px;\n img {\n cursor: inherit;\n }\n @include cartLength;\n &_active {\n cursor: pointer;\n span {\n background: $green;\n color: $white;\n }\n }\n }\n &--links {\n display: flex;\n align-items: center;\n gap: 16px;\n overflow: auto;\n @include desktop {\n &::-webkit-scrollbar {\n display: none;\n }\n\n &::-webkit-scrollbar-button {\n display: none;\n }\n -ms-overflow-style: none;\n }\n }\n &--right {\n display: flex;\n align-items: center;\n }\n button {\n white-space: nowrap;\n background: $pink;\n border-radius: 64px;\n padding: 12px 16px;\n font-size: 12px;\n font-weight: 600;\n letter-spacing: 0.3px;\n box-shadow: none !important;\n &:not(.active) {\n @include hover;\n }\n @include mobile {\n display: none;\n }\n }\n .active {\n background: $yellow;\n cursor: default;\n // border: 1px solid $pink;\n }\n }\n &_features {\n gap: 12px !important;\n li {\n display: flex;\n gap: 16px;\n align-items: center;\n }\n }\n &_address {\n margin-bottom: 16px;\n }\n &_product {\n display: grid;\n gap: 16px;\n &--link {\n font-weight: 700;\n color: $black;\n text-underline-offset: 4px;\n }\n &--left {\n gap: 32px;\n }\n &--right {\n gap: 32px;\n }\n &--price {\n margin-top: 4px;\n font-weight: 700;\n }\n &--total {\n text-align: center;\n margin: -16px 0;\n font-size: 21px;\n line-height: 28px;\n }\n &--item {\n background: $white;\n padding: 16px;\n display: grid;\n grid-template-columns: auto 75px;\n box-shadow: $box-shadow;\n }\n &--grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 32px;\n @include mobile {\n grid-template-columns: 1fr;\n }\n > div {\n display: flex;\n flex-direction: column;\n }\n ul {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n }\n p {\n margin: 0;\n }\n &--top {\n img {\n object-fit: contain;\n }\n > div {\n width: 100%;\n h1 {\n max-width: 80%;\n @include mobile {\n max-width: 100%;\n }\n }\n }\n display: flex;\n gap: 32px;\n h4 {\n margin-bottom: 8px;\n }\n }\n }\n }\n h5,\n p {\n margin: 0;\n }\n input[type='submit'] {\n cursor: pointer;\n }\n input[type='date'] ~ label {\n left: 56px;\n }\n input[type='date'] {\n border: 1px solid $darkyellow;\n padding-left: 64px;\n }\n input[type='checkbox'] {\n height: 18px;\n width: 18px;\n border: $border;\n }\n input[type='checkbox']:checked {\n background: red;\n }\n input[type='date']::-webkit-calendar-picker-indicator {\n background: transparent;\n bottom: 0;\n color: transparent;\n cursor: pointer;\n height: auto;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n width: auto;\n }\n button,\n a {\n cursor: pointer;\n background: none;\n border: none;\n }\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n}\n","import { Component, Element, Fragment, Listen, Prop, State, Watch, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\nimport { Business, Product, WidgetStyle } from '../../types';\nimport { getCustomer, getGreenDiscount, getOptions, getRot, getRut } from '../../utils/api';\nimport { getProductPriceWithRotAndRut } from '../../utils/calc';\nimport { scrollToTop } from '../../utils/scroll';\n\n@Component({\n tag: 'hemfixarna-component',\n styleUrl: 'hemfixarna.scss',\n shadow: true,\n assetsDirs: ['assets'],\n})\nexport class HemfixarnaComponent {\n @State() modal: boolean = false;\n @State() showModal: boolean = false;\n @State() product: Product | null = null;\n @Prop() id?: string;\n @Prop() business: Business;\n @Prop() widgetStyle: WidgetStyle = WidgetStyle.standard;\n @Prop() buttonColor?: string;\n @Prop() buttonBg?: string;\n @State() proppedProduct: Product | null = null;\n\n @Element() private el: HTMLElement;\n\n loadCategoryOrProduct(id: string) {\n this.proppedProduct = null;\n if (id.startsWith('c-')) {\n const categories = [...state.customer.categories, ...state.customer.categories.map(c => c.sub_categories ?? [])].flat();\n const category = categories.find(c => c && c.id === id.replace('c-', ''));\n if (category) {\n state.selectedCustomerCategory = category;\n state.step = 2;\n }\n } else {\n const products = state.customer.categories\n .map(c => (c.show_products ? c.products : c.sub_categories ? c.sub_categories.map(c => c.products) : []))\n .flat()\n .flat();\n const product = products.find(p => p && p.fields.ID === parseInt(id));\n if (product) {\n state.selectedProduct = product.fields;\n state.step = 4;\n this.proppedProduct = product.fields;\n }\n }\n }\n\n @Watch('id')\n async watchIdChange(id: string) {\n if (id && state.customer) {\n if (id === 'maleri') {\n state.maleri = true;\n state.step = 4;\n } else {\n this.loadCategoryOrProduct(id);\n }\n }\n }\n\n async componentWillLoad() {\n state.business = this.business;\n const cart = window.sessionStorage.getItem(`hemfixarna-${this.business}-cart`);\n if (cart) {\n state.cart = JSON.parse(cart);\n }\n const user = window.sessionStorage.getItem(`hemfixarna-${this.business}-user`);\n if (user) {\n state.user = JSON.parse(user);\n }\n const creditSafeUser = window.sessionStorage.getItem(`hemfixarna-${this.business}-creditSafeUser`);\n if (creditSafeUser) {\n state.creditSafeUser = JSON.parse(creditSafeUser);\n }\n\n const [options, rut, rot, greenDiscount] = await Promise.all([getOptions(), getRut(), getRot(), getGreenDiscount()]);\n\n try {\n const customer = await getCustomer(this.business);\n if (customer?.code === 'not_found') {\n console.warn('customer not found');\n } else if (customer) {\n state.customer = customer;\n if (this.id) {\n if (this.id === 'maleri') {\n state.maleri = true;\n state.step = 4;\n } else {\n this.loadCategoryOrProduct(this.id);\n }\n }\n }\n } catch (error) {\n console.warn('customer not found');\n }\n\n state.rotOptions = rot;\n state.rutOptions = rut;\n state.greenOptions = greenDiscount;\n state.options = options;\n }\n\n triggerScrollTotop = () => {\n const el = this.el.shadowRoot.querySelector('.hemfixarna_content');\n scrollToTop(el);\n };\n\n // Open close modal && click outside event\n openModal() {\n this.modal = true;\n setTimeout(() => {\n this.showModal = true;\n }, 50);\n }\n closeModal() {\n this.showModal = false;\n setTimeout(() => {\n this.modal = false;\n }, 200);\n }\n @Listen('click')\n handleClick(e: Event) {\n if ((e?.composedPath()[0] as HTMLElement).classList.contains('hemfixarna_backdrop')) {\n this.closeModal();\n }\n const infomodal = this.el.shadowRoot.querySelector('.hemfixarna_infomodal');\n if (infomodal) {\n const isClickInside = infomodal.contains(e.composedPath()[0] as HTMLInputElement);\n if (!isClickInside) {\n state.modal = null;\n }\n }\n }\n\n getCartLength() {\n return state.cart.reduce((acc, curr) => acc + curr.amount, 0);\n }\n\n render() {\n const logo = getAssetPath(`./assets/hemfixarna.svg`);\n const pensel = getAssetPath(`./assets/pensel.svg`);\n const monteringLogo = getAssetPath(`./assets/montering.svg`);\n\n return (\n <div class={`hemfixarna hemfixarna-${this.business}`}>\n <div class={`hemfixarna_box hemfixarna_box--${this.widgetStyle}`}>\n {[WidgetStyle.alternative_2, WidgetStyle.alternative_3].includes(this.widgetStyle) ? (\n <img src={this.id === 'maleri' ? pensel : monteringLogo} alt=\"montering logo\" width={32} height={32} />\n ) : null}\n <div>\n <div>\n <p\n onClick={() => this.openModal()}\n class={`pointer ${[WidgetStyle.alternative_2, WidgetStyle.alternative_3].includes(this.widgetStyle) && state.selectedProduct ? 'underline' : ''}`}\n >\n {this.id === 'maleri' ? (\n <span>Beräkna fast pris på måleri & tapetsering här</span>\n ) : (\n <Fragment>\n {!state.selectedCustomerCategory && !this.product && !this.proppedProduct ? (\n <Fragment>\n {state.customer?.widget_title ? (\n <span>{state.customer.widget_title}</span>\n ) : (\n <span>\n Montering/Installation - <strong class=\"underline\">se priser här</strong>\n </span>\n )}\n </Fragment>\n ) : (\n <Fragment>\n {this.product?.title || this.proppedProduct?.title || state.selectedCustomerCategory?.widget_title || (\n <span>\n Montering\n <wbr />\n /Installation {state.selectedCustomerCategory?.name ?? 'på plats'} - <strong class=\"underline\">se priser här</strong>\n </span>\n )}\n {this.proppedProduct && !this.product?.invoice && !this.proppedProduct?.invoice ? (\n <span>\n {' från'} <strong>{getProductPriceWithRotAndRut(this.proppedProduct || this.product)}kr</strong>\n </span>\n ) : null}\n </Fragment>\n )}\n </Fragment>\n )}\n </p>\n </div>\n {this.widgetStyle === WidgetStyle.standard ? <img src={logo} width={104} /> : null}\n {this.widgetStyle === WidgetStyle.alternative ? (\n <span class=\"p-s\">\n Utförs av <strong>Hemfixarna</strong>\n </span>\n ) : null}\n </div>\n {[WidgetStyle.standard, WidgetStyle.alternative].includes(this.widgetStyle) ? (\n <button\n onClick={() => this.openModal()}\n class=\"hemfixarna_btn\"\n style={{\n color: this.buttonColor?.startsWith('#') || !this.buttonColor?.length ? this.buttonColor : `#${this.buttonColor}`,\n backgroundColor: this.buttonBg?.startsWith('#') || !this.buttonBg?.length ? this.buttonBg : `#${this.buttonBg}`,\n }}\n >\n Beställ här\n {this.getCartLength() > 0 && <span>{this.getCartLength()}</span>}\n </button>\n ) : null}\n {WidgetStyle.alternative_2 === this.widgetStyle ? (\n <div class=\"hemfixarna_altbtn\">\n <strong class=\"p-s\">Utförs av</strong>\n <img src={logo} alt=\"hemfixarna logo\" width={98} />\n </div>\n ) : null}\n </div>\n {this.modal && (\n <div>\n <div class={`hemfixarna_modal ${this.showModal ? 'hemfixarna_modal--open' : ''}`}>\n {state.modal && (\n <div class=\"hemfixarna_infomodal\">\n {state.modal.title && <h2>{state.modal.title}</h2>}\n {state.modal.text.map((t: string) => (\n <p innerHTML={t}></p>\n ))}\n <div>\n <button onClick={() => (state.modal = null)}>Stäng</button>\n </div>\n </div>\n )}\n {state.customer && <hemfixarna-breadcrumbs closeModal={() => this.closeModal()} />}\n <div class={`hemfixarna_content hemfixarna_content--${state.step} ${state.step === 4 && state.maleri ? 'hemfixarna_content--painting' : ''}`}>\n {state.step < 4 && <hemfixarna-start />}\n {/* // IF SELECTED PRODUCT (step 4) */}\n {state.step === 4 && <hemfixarna-product />}\n {/* // IF CHECKOUT (step 5) */}\n {state.step === 5 && <hemfixarna-cart />}\n {/* // IF ORDER CONFIRM (step 6) */}\n {state.step === 6 && <hemfixarna-order />}\n </div>\n </div>\n <div class={`hemfixarna_backdrop ${this.showModal ? 'hemfixarna_backdrop--open' : ''}`}></div>\n </div>\n )}\n </div>\n );\n }\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'hemfixarna-contact',\n shadow: false,\n})\nexport class HemfixarnaInfo {\n @Prop() vertical?: boolean = false;\n\n render() {\n return (\n <div class={`hemfixarna_contact ${this.vertical ? 'hemfixarna_contact--vertical' : 'hemfixarna_contact--horizontal'}`}>\n <a href=\"tel:0770-220 720\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7 4V20H17V4H7ZM6 2H18C18.5523 2 19 2.44772 19 3V21C19 21.5523 18.5523 22 18 22H6C5.44772 22 5 21.5523 5 21V3C5 2.44772 5.44772 2 6 2ZM12 17C12.5523 17 13 17.4477 13 18C13 18.5523 12.5523 19 12 19C11.4477 19 11 18.5523 11 18C11 17.4477 11.4477 17 12 17Z\"\n fill=\"#C84E18\"\n />\n </svg>\n <span>0770-220 720</span>\n </a>\n <a href=\"https://hemfixarna.se/kundservice/\" target=\"_blank\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_1001_894)\">\n <path\n d=\"M21 12.22C21 6.73 16.74 3 12 3C7.31 3 3 6.65 3 12.28C2.4 12.62 2 13.26 2 14V16C2 17.1 2.9 18 4 18H5V11.9C5 8.03 8.13 4.9 12 4.9C15.87 4.9 19 8.03 19 11.9V19H11V21H19C20.1 21 21 20.1 21 19V17.78C21.59 17.47 22 16.86 22 16.14V13.84C22 13.14 21.59 12.53 21 12.22Z\"\n fill=\"#C84E18\"\n />\n <path d=\"M9 14C9.55228 14 10 13.5523 10 13C10 12.4477 9.55228 12 9 12C8.44772 12 8 12.4477 8 13C8 13.5523 8.44772 14 9 14Z\" fill=\"#C84E18\" />\n <path d=\"M15 14C15.5523 14 16 13.5523 16 13C16 12.4477 15.5523 12 15 12C14.4477 12 14 12.4477 14 13C14 13.5523 14.4477 14 15 14Z\" fill=\"#C84E18\" />\n <path\n d=\"M18 11.03C17.52 8.18 15.04 6 12.05 6C9.01997 6 5.75997 8.51 6.01997 12.45C8.48997 11.44 10.35 9.24 10.88 6.56C12.19 9.19 14.88 11 18 11.03Z\"\n fill=\"#C84E18\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_1001_894\">\n <rect width=\"24\" height=\"24\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <span>Kundservice</span>\n </a>\n </div>\n );\n }\n}\n","@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600&display=swap');\n\n:host {\n font-family: 'Inter', sans-serif;\n\n .hemfixarna {\n &_widgetstyles {\n label {\n cursor: pointer;\n }\n > div {\n display: flex;\n gap: 1rem;\n }\n h5 {\n margin: 1rem 0;\n }\n }\n &_example {\n margin-bottom: 16px;\n background: #000;\n padding: 16px;\n color: #fff;\n display: flex;\n justify-content: space-between;\n cursor: pointer;\n max-width: 500px;\n box-sizing: border-box;\n position: relative;\n\n &--tooltip {\n background: #000;\n top: -48px;\n font-size: 16px;\n left: 40%;\n color: white;\n padding: 8px;\n position: absolute;\n opacity: 0;\n &::after {\n content: '';\n position: absolute;\n top: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n border-color: #000 transparent transparent transparent;\n }\n }\n &:hover {\n .hemfixarna_example--tooltip {\n opacity: 1;\n }\n }\n p {\n font-size: 14px;\n }\n img {\n filter: invert(1);\n }\n }\n &_install {\n display: grid;\n gap: 8px;\n margin-top: 16px;\n }\n &_product--label {\n background: #e1e0f5;\n }\n &_categories {\n max-height: 100%;\n overflow: auto;\n position: relative;\n &--label {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px;\n button {\n background: #3f3a92;\n border: none;\n font-weight: 600;\n padding: 3.2px 9.6px;\n border-radius: 10px;\n margin-right: 8px;\n color: #ece8e8;\n &:active {\n transform: scale(0.95);\n }\n }\n &--big {\n font-weight: 600;\n border-bottom: 1px solid black;\n }\n }\n }\n }\n p {\n margin: 0;\n }\n span {\n color: darkolivegreen;\n font-size: 10px;\n }\n button {\n cursor: pointer;\n }\n > div:not(.hemfixarna_hosted) {\n grid-template-columns: 1fr 1fr;\n }\n .hemfixarna_hosted {\n .hemfixarna_scripts {\n display: none;\n }\n }\n > div {\n display: grid;\n gap: 32px;\n width: 100%;\n height: 100vh;\n place-items: center;\n overflow: hidden;\n padding: 16px 32px;\n box-sizing: border-box;\n > * {\n width: 100%;\n }\n > div {\n max-width: 500px;\n }\n ul {\n margin: 0;\n padding: 0;\n list-style: none;\n ul {\n gap: 1px;\n display: grid;\n }\n li {\n padding-left: 16px;\n background: #fff;\n }\n }\n }\n}\n","import { Component, Fragment, State, Watch, getAssetPath, h } from '@stencil/core';\nimport { Business, Category, Customer, WidgetStyle } from '../../types';\nimport { getCustomer, loginCustomer } from '../../utils/api';\nimport { getApiUrl } from '../../utils/enviroment';\nimport { isBusiness } from '../../utils/types';\n\ninterface ColorAccessibility {\n small: string;\n bold: string;\n large: string;\n overall: string;\n contrast: string;\n}\n\n@Component({\n tag: 'hemfixarna-demo',\n styleUrl: 'hemfixarna-demo.scss',\n shadow: true,\n})\nexport class MyComponent {\n @State() selectedSlug: string;\n @State() selectedID: string;\n @State() tooltipText: string = 'Kopiera till urklipp';\n @State() tree: Category | null = null;\n @State() customer: Customer | null = null;\n @State() widgetStyle: WidgetStyle = WidgetStyle.standard;\n @State() buttonBg: string = '';\n @State() buttonColor: string = '';\n @State() partner: Business | undefined = undefined;\n @State() colorAccessibility?: ColorAccessibility = undefined;\n @State() loggedIn: boolean = false;\n @State() loginError: boolean = false;\n private debounce?: number = null;\n\n @Watch('buttonBg')\n @Watch('buttonColor')\n debouncedFunction() {\n if (this.debounce !== null) {\n clearTimeout(this.debounce);\n this.debounce = null;\n }\n\n this.debounce = window.setTimeout(() => {\n this.checkColorAccessibility();\n this.debounce = null;\n }, 1500);\n }\n\n async checkColorAccessibility() {\n const defaultTextColor = '#fff';\n const defaultBgColor = '#c84e18';\n const firstColor = this.buttonBg.length ? (this.buttonBg.startsWith('#') ? this.buttonBg : `#${this.buttonBg}`) : defaultBgColor;\n const secondColor = this.buttonColor.length ? (this.buttonColor.startsWith('#') ? this.buttonColor : `#${this.buttonColor}`) : defaultTextColor;\n try {\n const response = await fetch('https://www.aremycolorsaccessible.com/api/are-they', {\n mode: 'cors',\n method: 'POST',\n body: JSON.stringify({ colors: [firstColor, secondColor] }),\n });\n\n if (!response) {\n throw new Error('Network response was not ok');\n }\n\n const json = await response.json();\n if (json && (json satisfies ColorAccessibility)) {\n this.colorAccessibility = json;\n }\n } catch (error) {\n console.warn('Error fetching color accessibility:', error);\n }\n }\n\n getColor(rating: string) {\n switch (rating) {\n case 'AAA':\n return 'green';\n case 'AA':\n return 'orange';\n case 'A':\n return 'yellow';\n case 'Fail':\n return 'red';\n default:\n return 'black';\n }\n }\n\n async componentWillLoad() {\n const partner = window.location.pathname.replace('/', '');\n if (!isBusiness(partner) && partner) return;\n this.partner = partner ? (partner as Business) : Business.kund;\n const customer = await getCustomer(this.partner);\n if (customer.code !== 'not_found' && customer) {\n this.customer = customer;\n if (!this.customer.password_protected || window.localStorage.getItem(`${this.customer.ID}-loggedin`)) {\n this.loggedIn = true;\n }\n }\n }\n\n getExample() {\n return `<hemfixarna-component business=\"${this.partner}\"${this.selectedSlug ? ` slug=\"${this.selectedSlug}\" ` : ''}${this.selectedID ? ` id=\"${this.selectedID}\" ` : ''} ${\n this.widgetStyle === WidgetStyle.standard ? '' : `widget-style=\"${this.widgetStyle}\"`\n } ${this.buttonColor.length ? `button-color=\"${this.buttonColor}\"` : ''} ${this.buttonBg.length ? `button-bg=\"${this.buttonBg}\"` : ''}></hemfixarna-component>`;\n }\n\n copyExample() {\n navigator.clipboard.writeText(this.getExample());\n this.tooltipText = 'Snippet kopierad';\n setTimeout(() => {\n this.tooltipText = 'Kopiera till urklipp';\n }, 2000);\n }\n\n cdnLink = '<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm//hemfixarna-web-components@latest/dist/hemfixarna-components/hemfixarna-components.esm.js\"></script>';\n\n copyCdn() {\n navigator.clipboard.writeText(this.cdnLink);\n this.tooltipText = 'Text kopierad';\n setTimeout(() => {\n this.tooltipText = 'Kopiera till urklipp';\n }, 2000);\n }\n\n copyNpmInstall() {\n navigator.clipboard.writeText('npm i hemfixarna-web-components');\n this.tooltipText = 'Text kopierad';\n setTimeout(() => {\n this.tooltipText = 'Kopiera till urklipp';\n }, 2000);\n }\n\n showMaleri() {\n const allCategories = this.customer?.categories.map(c => (c.sub_categories ? c.sub_categories : c)).flat();\n return allCategories?.some(c => c.add_painting);\n }\n\n async handleLogin() {\n const shadowHost = document.querySelector('hemfixarna-demo');\n const shadowRoot = shadowHost.shadowRoot;\n const passwordInput = shadowRoot.querySelector('input[type=\"password\"]');\n const password = (passwordInput as HTMLInputElement).value;\n\n this.loginError = false;\n try {\n const status = await loginCustomer({ id: this.customer.ID, password: password });\n if (status === 200) {\n this.loggedIn = true;\n window.localStorage.setItem(`${this.customer.ID}-loggedin`, 'true');\n } else {\n this.loginError = true;\n }\n } catch (error) {\n console.log(error);\n this.loginError = true;\n }\n }\n\n render() {\n const copy = getAssetPath(`./assets/copy.png`);\n\n return this.customer ? (\n <Fragment>\n {this.loggedIn ? (\n <div class={this.customer?.at_hemfixarna ? 'hemfixarna_hosted' : ''}>\n <div class=\"hemfixarna_scripts\">\n <div onClick={() => this.copyExample()} class=\"hemfixarna_example\">\n <p>{this.getExample()}</p>\n <img src={copy} height={20} />\n <span class=\"hemfixarna_example--tooltip\">{this.tooltipText}</span>\n </div>\n <hemfixarna-component\n business={this.partner}\n buttonBg={this.buttonBg}\n buttonColor={this.buttonColor}\n widgetStyle={this.widgetStyle}\n id={this.selectedID}\n ></hemfixarna-component>\n <div class=\"hemfixarna_install\">\n <div onClick={() => this.copyCdn()} class=\"hemfixarna_example\">\n <p>{this.cdnLink}</p>\n <span class=\"hemfixarna_example--tooltip\">{this.tooltipText}</span>\n <img src={copy} height={20} />\n </div>\n </div>\n <div class=\"hemfixarna_widgetstyles\">\n <h5>Widget styles</h5>\n <div>\n {Object.values(WidgetStyle).map(style => (\n <label key={style}>\n <input type=\"radio\" value={style} checked={this.widgetStyle === style} onChange={() => (this.widgetStyle = style)} />\n {style}\n </label>\n ))}\n </div>\n <div>\n <div>\n <h5>Button background color</h5>\n <input type=\"text\" value={this.buttonBg} onInput={e => (this.buttonBg = (e.target as HTMLInputElement).value)} />\n </div>\n <div>\n <h5>Button text color</h5>\n <input type=\"text\" value={this.buttonColor} onInput={e => (this.buttonColor = (e.target as HTMLInputElement).value)} />\n </div>\n </div>\n </div>\n <span>Write an hexa code no # needed</span>\n {this.colorAccessibility ? (\n <div>\n <h5>Tillgänglighetsrapport</h5>\n <div>\n <strong>Liten text:</strong>\n <span style={{ color: this.getColor(this.colorAccessibility.small) }}>{this.colorAccessibility.small}</span>\n <br />\n <strong>Fet text:</strong>\n <span style={{ color: this.getColor(this.colorAccessibility.bold) }}>{this.colorAccessibility.bold}</span>\n <br />\n <strong>Stor text:</strong>\n <span style={{ color: this.getColor(this.colorAccessibility.large) }}>{this.colorAccessibility.large}</span>\n <br />\n <strong>Kontrastförhållande:</strong> {this.colorAccessibility.contrast}\n </div>\n </div>\n ) : null}\n </div>\n <ul class=\"hemfixarna_categories\">\n <div>\n {this.customer.logo ? (\n <div style={{ width: '100%', display: 'flex', justifyContent: 'center' }}>\n <img style={{ maxWidth: '250px', height: 'auto', margin: '0 auto 2rem' }} src={this.customer.logo.url} alt={this.customer.post_title} />\n </div>\n ) : null}\n {this.showMaleri() ? (\n <li>\n <div class=\"hemfixarna_categories--label hemfixarna_categories--label--big\">\n <div>\n <p>Måleriverktyget</p>\n <span>maleri</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText('maleri')}>Kopiera ID</button>\n {this.customer.at_hemfixarna ? (\n <button onClick={() => navigator.clipboard.writeText(`${getApiUrl()}/partner/${this.customer.post_name}?id=maleri`)}>Kopiera URL</button>\n ) : (\n <button onClick={() => (this.selectedID = 'maleri')}>Ladda måleri</button>\n )}\n </div>\n </div>\n </li>\n ) : null}\n {this.customer.categories.map(c => (\n <li>\n <div class=\"hemfixarna_categories--label hemfixarna_categories--label--big\">\n <div>\n <p>{c.name}</p>\n <span>{`c-${c.id}`}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(`c-${c.id}`)}>Kopiera ID</button>\n {this.customer.at_hemfixarna ? (\n <button onClick={() => navigator.clipboard.writeText(`${getApiUrl()}/partner/${this.customer.post_name}?id=c-${c.id}`)}>Kopiera URL</button>\n ) : (\n <button onClick={() => (this.selectedID = `c-${c.id}`)}>Ladda kategori</button>\n )}\n </div>\n </div>\n {c.show_products && c.products ? (\n <ul>\n {c.products.map(p => (\n <li>\n <div class=\"hemfixarna_categories--label hemfixarna_product--label\">\n <div>\n <p>{p.fields.title}</p>\n <span>{p.fields.ID}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(String(p.fields.ID))}>Kopiera ID</button>\n {this.customer.at_hemfixarna ? (\n <button onClick={() => navigator.clipboard.writeText(`${getApiUrl()}/partner/${this.customer.post_name}?id=${p.fields.ID}`)}>Kopiera URL</button>\n ) : (\n <button onClick={() => (this.selectedID = String(p.fields.ID))}>Ladda produkt</button>\n )}\n </div>\n </div>\n </li>\n ))}\n </ul>\n ) : (\n <ul>\n {c.sub_categories &&\n c.sub_categories.map(sc => (\n <li>\n <div class=\"hemfixarna_categories--label\">\n <div>\n <p>{sc.name}</p>\n <span>{`c-${sc.id}`}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(`c-${sc.id}`)}>Kopiera ID</button>\n {this.customer.at_hemfixarna ? (\n <button onClick={() => navigator.clipboard.writeText(`${getApiUrl()}/partner/${this.customer.post_name}?id=c-${c.id}`)}>Kopiera URL</button>\n ) : (\n <button onClick={() => (this.selectedID = `c-${sc.id}`)}>Ladda kategori</button>\n )}\n </div>\n </div>\n <ul>\n {sc.products.map(p => (\n <li>\n <div class=\"hemfixarna_categories--label hemfixarna_product--label\">\n <div>\n <p>{p.fields.title}</p>\n <span>{p.fields.ID}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(String(p.fields.ID))}>Kopiera ID</button>\n {this.customer.at_hemfixarna ? (\n <button onClick={() => navigator.clipboard.writeText(`${getApiUrl()}/partner/${this.customer.post_name}?id=${p.fields.ID}`)}>\n Kopiera URL\n </button>\n ) : (\n <button onClick={() => (this.selectedID = String(p.fields.ID))}>Ladda produkt</button>\n )}\n </div>\n </div>\n </li>\n ))}\n </ul>\n </li>\n ))}\n </ul>\n )}\n </li>\n ))}\n </div>\n </ul>\n </div>\n ) : (\n <div>\n <form\n onSubmit={e => {\n e.preventDefault();\n this.handleLogin();\n }}\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: '1rem',\n maxWidth: '300px',\n margin: 'auto',\n padding: '20px',\n border: '1px solid #ccc',\n borderRadius: '5px',\n gridColumn: 'span 2',\n }}\n >\n <input type=\"password\" placeholder=\"Lösenord\" />\n <button type=\"submit\">Logga in</button>\n {this.loginError && <span>Fel lösenord</span>}\n </form>\n </div>\n )}\n </Fragment>\n ) : (\n <h1\n style={{\n textAlign: 'center',\n margin: 'auto',\n padding: '20px',\n fontSize: '24px',\n fontWeight: 'bold',\n color: 'red',\n }}\n >\n No customer found\n </h1>\n );\n }\n}\n","// src/errors.ts\nvar PersonnummerError = class extends Error {\n constructor() {\n super(\"Invalid swedish personal identity number\");\n }\n};\n\n// src/utils.ts\nvar compareAsc = (dateLeft, dateRight) => {\n const diff = dateLeft.getTime() - dateRight.getTime();\n return diff < 0 ? -1 : diff > 0 ? 1 : diff;\n};\nvar diffInYears = (dateLeft, dateRight) => {\n const sign = compareAsc(dateLeft, dateRight);\n const yearDiff = Math.abs(dateLeft.getFullYear() - dateRight.getFullYear());\n dateLeft.setFullYear(dateLeft.getFullYear() - sign * yearDiff);\n const isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n const result = sign * (yearDiff - +isLastYearNotFull);\n return result === 0 ? 0 : result;\n};\nvar luhn = (str) => {\n let sum = 0;\n str += \"\";\n for (let i = 0, l = str.length; i < l; i++) {\n let v = parseInt(str[i]);\n v *= 2 - i % 2;\n if (v > 9) {\n v -= 9;\n }\n sum += v;\n }\n return Math.ceil(sum / 10) * 10 - sum;\n};\nvar testDate = (year, month, day) => {\n month -= 1;\n const date = new Date(year, month, day);\n return !(date.getFullYear() !== year || date.getMonth() !== month || date.getDate() !== day);\n};\n\n// src/index.ts\nvar Personnummer = class {\n /**\n * Personnummer constructor.\n *\n * @param {string} pin\n * @param {object} options\n */\n constructor(pin, options) {\n /**\n * Personnummer century.\n *\n * @var {string}\n */\n this._century = \"\";\n /**\n * Personnummer full year.\n *\n * @var {string}\n */\n this._fullYear = \"\";\n /**\n * Personnummer year.\n *\n * @var {string}\n */\n this._year = \"\";\n /**\n * Personnummer month.\n *\n * @var {string}\n */\n this._month = \"\";\n /**\n * Personnummer day.\n *\n * @var {string}\n */\n this._day = \"\";\n /**\n * Personnummer seperator.\n *\n * @var {string}\n */\n this._sep = \"\";\n /**\n * Personnumer first three of the last four numbers.\n *\n * @var {string}\n */\n this._num = \"\";\n /**\n * The last number of the personnummer.\n *\n * @var {string}\n */\n this._check = \"\";\n this.parse(pin, {\n allowCoordinationNumber: true,\n allowInterimNumber: false,\n ...options\n });\n }\n /**\n * Get century.\n *\n * @return {string}\n */\n get century() {\n return this._century;\n }\n /**\n * Get age.\n *\n * @return {string}\n */\n get fullYear() {\n return this._fullYear;\n }\n /**\n * Get age.\n *\n * @return {string}\n */\n get year() {\n return this._year;\n }\n /**\n * Get month.\n *\n * @return {string}\n */\n get month() {\n return this._month;\n }\n /**\n * Get day.\n *\n * @return {string}\n */\n get day() {\n return this._day;\n }\n /**\n * Get sep.\n *\n * @return {string}\n */\n get sep() {\n return this._sep;\n }\n /**\n * Get num.\n *\n * @return {string}\n */\n get num() {\n return this._num;\n }\n /**\n * Get check.\n *\n * @return {string}\n */\n get check() {\n return this._check;\n }\n /**\n * Parse personnummer.\n *\n * @param {string} pin\n * @param {object} options\n *\n * @return {Personnummer}\n */\n static parse(pin, options) {\n return new Personnummer(pin, options);\n }\n /**\n * Validate a Swedish personal identity number.\n *\n * @param {string} str\n * @param {object} options\n *\n * @return {boolean}\n */\n static valid(pin, options) {\n try {\n Personnummer.parse(pin, options);\n return true;\n } catch (e) {\n return false;\n }\n }\n /**\n * Parse personnummer and set class properties.\n *\n * @param {string} pin\n * @param {object} options\n */\n parse(pin, options) {\n if (pin.length < 10 || pin.length > 13) {\n throw new PersonnummerError();\n }\n const reg = /^(\\d{2}){0,1}(\\d{2})(\\d{2})(\\d{2})([+-]?)((?!000)\\d{3}|[TRSUWXJKLMN]\\d{2})(\\d)$/;\n const match = reg.exec(pin);\n if (!match) {\n throw new PersonnummerError();\n }\n const century = match[1];\n const year = match[2];\n const month = match[3];\n const day = match[4];\n const sep = match[5];\n const num = match[6];\n const check = match[7];\n if (typeof century === \"undefined\" || !century.length) {\n const d = /* @__PURE__ */ new Date();\n let baseYear = 0;\n if (sep === \"+\") {\n this._sep = \"+\";\n baseYear = d.getFullYear() - 100;\n } else {\n this._sep = \"-\";\n baseYear = d.getFullYear();\n }\n this._century = (\"\" + (baseYear - (baseYear - parseInt(year)) % 100)).substr(0, 2);\n } else {\n this._century = century;\n if ((/* @__PURE__ */ new Date()).getFullYear() - parseInt(century + year, 10) < 100) {\n this._sep = \"-\";\n } else {\n this._sep = \"+\";\n }\n }\n this._year = year;\n this._fullYear = this._century + year;\n this._month = month;\n this._day = day;\n this._num = num;\n this._check = check;\n if (!this.valid()) {\n throw new PersonnummerError();\n }\n if (!(options == null ? void 0 : options.allowCoordinationNumber) && this.isCoordinationNumber()) {\n throw new PersonnummerError();\n }\n if (!(options == null ? void 0 : options.allowInterimNumber) && this.isInterimNumber()) {\n throw new PersonnummerError();\n }\n }\n /**\n * Validate a Swedish personal identity number.\n *\n * @return {boolean}\n */\n valid() {\n const valid = luhn(\n this.year + this.month + this.day + this.num.replace(/[TRSUWXJKLMN]/, \"1\")\n ) === +this.check && !!this.check;\n if (valid && testDate(parseInt(this.century + this.year), +this.month, +this.day)) {\n return valid;\n }\n return valid && testDate(parseInt(this.century + this.year), +this.month, +this.day - 60);\n }\n /**\n * Format a Swedish personal identity number as one of the official formats,\n * A long format or a short format.\n *\n * If the input number could not be parsed a empty string will be returned.\n *\n * @param {boolean} longFormat\n *\n * @return {string}\n */\n format(longFormat = false) {\n if (longFormat) {\n return `${this.century}${this.year}${this.month}${this.day}${this.num}${this.check}`;\n }\n return `${this.year}${this.month}${this.day}${this.sep}${this.num}${this.check}`;\n }\n /**\n * Get age from a Swedish personal identity number.\n *\n * @return {number}\n */\n getAge() {\n const date = this.getDate();\n return diffInYears(new Date(Date.now()), date);\n }\n /**\n * Get date from a Swedish personal identity number.\n *\n * @return {Date}\n */\n getDate() {\n let ageDay = +this.day;\n if (this.isCoordinationNumber()) {\n ageDay -= 60;\n }\n const ageDate = this.century + this.year + \"-\" + this.month + \"-\" + (ageDay < 10 ? \"0\" + ageDay : ageDay);\n return new Date(ageDate);\n }\n /**\n * Check if a Swedish personal identity number is a interim number or not.\n *\n * @return {boolean}\n */\n isInterimNumber() {\n return /[TRSUWXJKLMN]/.test(this.num[0]);\n }\n /**\n * Check if a Swedish personal identity number is a coordination number or not.\n *\n * @return {boolean}\n */\n isCoordinationNumber() {\n return testDate(\n parseInt(this.century + this.year),\n +this.month,\n +this.day - 60\n );\n }\n /**\n * Check if a Swedish personal identity number is for a female.\n *\n * @return {boolean}\n */\n isFemale() {\n return !this.isMale();\n }\n /**\n * Check if a Swedish personal identity number is for a male.\n *\n * @return {boolean}\n */\n isMale() {\n const sexDigit = parseInt(this.num.substr(-1));\n return sexDigit % 2 === 1;\n }\n};\nvar src_default = Personnummer;\nexport {\n src_default as default\n};\n","\"use strict\";\r\n// tslint:disable:no-bitwise\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.utf8 = void 0;\r\nexports.utf8 = {\r\n encode: encode,\r\n decode: decode,\r\n};\r\nfunction encode(unicodeText) {\r\n unicodeText = unicodeText.replace(/\\r\\n/g, \"\\n\");\r\n var result = \"\";\r\n for (var i = 0; i < unicodeText.length; i++) {\r\n var char = unicodeText.charCodeAt(i);\r\n if (char < 128) {\r\n result += String.fromCharCode(char);\r\n }\r\n else if (char > 127 && char < 2048) {\r\n result += String.fromCharCode((char >> 6) | 192);\r\n result += String.fromCharCode((char & 63) | 128);\r\n }\r\n else {\r\n result += String.fromCharCode((char >> 12) | 224);\r\n result += String.fromCharCode(((char >> 6) & 63) | 128);\r\n result += String.fromCharCode((char & 63) | 128);\r\n }\r\n }\r\n return result;\r\n}\r\nfunction decode(utf8Text) {\r\n var result = \"\";\r\n var i = 0;\r\n var char1 = 0;\r\n var char2 = 0;\r\n var char3 = 0;\r\n while (i < utf8Text.length) {\r\n char1 = utf8Text.charCodeAt(i);\r\n if (char1 < 128) {\r\n result += String.fromCharCode(char1);\r\n i++;\r\n }\r\n else if (char1 > 191 && char1 < 224) {\r\n char2 = utf8Text.charCodeAt(i + 1);\r\n result += String.fromCharCode(((char1 & 31) << 6) | (char2 & 63));\r\n i += 2;\r\n }\r\n else {\r\n char2 = utf8Text.charCodeAt(i + 1);\r\n char3 = utf8Text.charCodeAt(i + 2);\r\n result += String.fromCharCode(((char1 & 15) << 12) | ((char2 & 63) << 6) | (char3 & 63));\r\n i += 3;\r\n }\r\n }\r\n return result;\r\n}\r\n","\"use strict\";\r\n// tslint:disable:no-bitwise\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.generate = void 0;\r\nvar utf8_1 = require(\"./utf8\");\r\nfunction generate(unicodeText) {\r\n var x = [];\r\n var k;\r\n var AA;\r\n var BB;\r\n var CC;\r\n var DD;\r\n var a;\r\n var b;\r\n var c;\r\n var d;\r\n var S11 = 7;\r\n var S12 = 12;\r\n var S13 = 17;\r\n var S14 = 22;\r\n var S21 = 5;\r\n var S22 = 9;\r\n var S23 = 14;\r\n var S24 = 20;\r\n var S31 = 4;\r\n var S32 = 11;\r\n var S33 = 16;\r\n var S34 = 23;\r\n var S41 = 6;\r\n var S42 = 10;\r\n var S43 = 15;\r\n var S44 = 21;\r\n var utf8Text = utf8_1.utf8.encode(unicodeText);\r\n x = convertToWordArray(utf8Text);\r\n a = 0x67452301;\r\n b = 0xefcdab89;\r\n c = 0x98badcfe;\r\n d = 0x10325476;\r\n for (k = 0; k < x.length; k += 16) {\r\n AA = a;\r\n BB = b;\r\n CC = c;\r\n DD = d;\r\n a = FF(a, b, c, d, x[k + 0], S11, 0xd76aa478);\r\n d = FF(d, a, b, c, x[k + 1], S12, 0xe8c7b756);\r\n c = FF(c, d, a, b, x[k + 2], S13, 0x242070db);\r\n b = FF(b, c, d, a, x[k + 3], S14, 0xc1bdceee);\r\n a = FF(a, b, c, d, x[k + 4], S11, 0xf57c0faf);\r\n d = FF(d, a, b, c, x[k + 5], S12, 0x4787c62a);\r\n c = FF(c, d, a, b, x[k + 6], S13, 0xa8304613);\r\n b = FF(b, c, d, a, x[k + 7], S14, 0xfd469501);\r\n a = FF(a, b, c, d, x[k + 8], S11, 0x698098d8);\r\n d = FF(d, a, b, c, x[k + 9], S12, 0x8b44f7af);\r\n c = FF(c, d, a, b, x[k + 10], S13, 0xffff5bb1);\r\n b = FF(b, c, d, a, x[k + 11], S14, 0x895cd7be);\r\n a = FF(a, b, c, d, x[k + 12], S11, 0x6b901122);\r\n d = FF(d, a, b, c, x[k + 13], S12, 0xfd987193);\r\n c = FF(c, d, a, b, x[k + 14], S13, 0xa679438e);\r\n b = FF(b, c, d, a, x[k + 15], S14, 0x49b40821);\r\n a = GG(a, b, c, d, x[k + 1], S21, 0xf61e2562);\r\n d = GG(d, a, b, c, x[k + 6], S22, 0xc040b340);\r\n c = GG(c, d, a, b, x[k + 11], S23, 0x265e5a51);\r\n b = GG(b, c, d, a, x[k + 0], S24, 0xe9b6c7aa);\r\n a = GG(a, b, c, d, x[k + 5], S21, 0xd62f105d);\r\n d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);\r\n c = GG(c, d, a, b, x[k + 15], S23, 0xd8a1e681);\r\n b = GG(b, c, d, a, x[k + 4], S24, 0xe7d3fbc8);\r\n a = GG(a, b, c, d, x[k + 9], S21, 0x21e1cde6);\r\n d = GG(d, a, b, c, x[k + 14], S22, 0xc33707d6);\r\n c = GG(c, d, a, b, x[k + 3], S23, 0xf4d50d87);\r\n b = GG(b, c, d, a, x[k + 8], S24, 0x455a14ed);\r\n a = GG(a, b, c, d, x[k + 13], S21, 0xa9e3e905);\r\n d = GG(d, a, b, c, x[k + 2], S22, 0xfcefa3f8);\r\n c = GG(c, d, a, b, x[k + 7], S23, 0x676f02d9);\r\n b = GG(b, c, d, a, x[k + 12], S24, 0x8d2a4c8a);\r\n a = HH(a, b, c, d, x[k + 5], S31, 0xfffa3942);\r\n d = HH(d, a, b, c, x[k + 8], S32, 0x8771f681);\r\n c = HH(c, d, a, b, x[k + 11], S33, 0x6d9d6122);\r\n b = HH(b, c, d, a, x[k + 14], S34, 0xfde5380c);\r\n a = HH(a, b, c, d, x[k + 1], S31, 0xa4beea44);\r\n d = HH(d, a, b, c, x[k + 4], S32, 0x4bdecfa9);\r\n c = HH(c, d, a, b, x[k + 7], S33, 0xf6bb4b60);\r\n b = HH(b, c, d, a, x[k + 10], S34, 0xbebfbc70);\r\n a = HH(a, b, c, d, x[k + 13], S31, 0x289b7ec6);\r\n d = HH(d, a, b, c, x[k + 0], S32, 0xeaa127fa);\r\n c = HH(c, d, a, b, x[k + 3], S33, 0xd4ef3085);\r\n b = HH(b, c, d, a, x[k + 6], S34, 0x4881d05);\r\n a = HH(a, b, c, d, x[k + 9], S31, 0xd9d4d039);\r\n d = HH(d, a, b, c, x[k + 12], S32, 0xe6db99e5);\r\n c = HH(c, d, a, b, x[k + 15], S33, 0x1fa27cf8);\r\n b = HH(b, c, d, a, x[k + 2], S34, 0xc4ac5665);\r\n a = II(a, b, c, d, x[k + 0], S41, 0xf4292244);\r\n d = II(d, a, b, c, x[k + 7], S42, 0x432aff97);\r\n c = II(c, d, a, b, x[k + 14], S43, 0xab9423a7);\r\n b = II(b, c, d, a, x[k + 5], S44, 0xfc93a039);\r\n a = II(a, b, c, d, x[k + 12], S41, 0x655b59c3);\r\n d = II(d, a, b, c, x[k + 3], S42, 0x8f0ccc92);\r\n c = II(c, d, a, b, x[k + 10], S43, 0xffeff47d);\r\n b = II(b, c, d, a, x[k + 1], S44, 0x85845dd1);\r\n a = II(a, b, c, d, x[k + 8], S41, 0x6fa87e4f);\r\n d = II(d, a, b, c, x[k + 15], S42, 0xfe2ce6e0);\r\n c = II(c, d, a, b, x[k + 6], S43, 0xa3014314);\r\n b = II(b, c, d, a, x[k + 13], S44, 0x4e0811a1);\r\n a = II(a, b, c, d, x[k + 4], S41, 0xf7537e82);\r\n d = II(d, a, b, c, x[k + 11], S42, 0xbd3af235);\r\n c = II(c, d, a, b, x[k + 2], S43, 0x2ad7d2bb);\r\n b = II(b, c, d, a, x[k + 9], S44, 0xeb86d391);\r\n a = addUnsigned(a, AA);\r\n b = addUnsigned(b, BB);\r\n c = addUnsigned(c, CC);\r\n d = addUnsigned(d, DD);\r\n }\r\n return wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);\r\n}\r\nexports.generate = generate;\r\nfunction rotateLeft(lValue, iShiftBits) {\r\n return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));\r\n}\r\nfunction addUnsigned(lX, lY) {\r\n var lX4;\r\n var lY4;\r\n var lX8;\r\n var lY8;\r\n var lResult;\r\n lX8 = lX & 0x80000000;\r\n lY8 = lY & 0x80000000;\r\n lX4 = lX & 0x40000000;\r\n lY4 = lY & 0x40000000;\r\n lResult = (lX & 0x3fffffff) + (lY & 0x3fffffff);\r\n if (lX4 & lY4) {\r\n return lResult ^ 0x80000000 ^ lX8 ^ lY8;\r\n }\r\n if (lX4 | lY4) {\r\n if (lResult & 0x40000000) {\r\n return lResult ^ 0xc0000000 ^ lX8 ^ lY8;\r\n }\r\n else {\r\n return lResult ^ 0x40000000 ^ lX8 ^ lY8;\r\n }\r\n }\r\n else {\r\n return lResult ^ lX8 ^ lY8;\r\n }\r\n}\r\nfunction F(x, y, z) {\r\n return (x & y) | (~x & z);\r\n}\r\nfunction G(x, y, z) {\r\n return (x & z) | (y & ~z);\r\n}\r\nfunction H(x, y, z) {\r\n return x ^ y ^ z;\r\n}\r\nfunction I(x, y, z) {\r\n return y ^ (x | ~z);\r\n}\r\nfunction FF(a, b, c, d, x, s, ac) {\r\n a = addUnsigned(a, addUnsigned(addUnsigned(F(b, c, d), x), ac));\r\n return addUnsigned(rotateLeft(a, s), b);\r\n}\r\nfunction GG(a, b, c, d, x, s, ac) {\r\n a = addUnsigned(a, addUnsigned(addUnsigned(G(b, c, d), x), ac));\r\n return addUnsigned(rotateLeft(a, s), b);\r\n}\r\nfunction HH(a, b, c, d, x, s, ac) {\r\n a = addUnsigned(a, addUnsigned(addUnsigned(H(b, c, d), x), ac));\r\n return addUnsigned(rotateLeft(a, s), b);\r\n}\r\nfunction II(a, b, c, d, x, s, ac) {\r\n a = addUnsigned(a, addUnsigned(addUnsigned(I(b, c, d), x), ac));\r\n return addUnsigned(rotateLeft(a, s), b);\r\n}\r\nfunction convertToWordArray(value) {\r\n var lWordCount;\r\n var lMessageLength = value.length;\r\n var lNumberOfWordsTemp1 = lMessageLength + 8;\r\n var lNumberOfWordsTemp2 = (lNumberOfWordsTemp1 - (lNumberOfWordsTemp1 % 64)) / 64;\r\n var lNumberOfWords = (lNumberOfWordsTemp2 + 1) * 16;\r\n var lWordArray = Array(lNumberOfWords - 1);\r\n var lBytePosition = 0;\r\n var lByteCount = 0;\r\n while (lByteCount < lMessageLength) {\r\n lWordCount = (lByteCount - (lByteCount % 4)) / 4;\r\n lBytePosition = (lByteCount % 4) * 8;\r\n lWordArray[lWordCount] =\r\n lWordArray[lWordCount] | (value.charCodeAt(lByteCount) << lBytePosition);\r\n lByteCount++;\r\n }\r\n lWordCount = (lByteCount - (lByteCount % 4)) / 4;\r\n lBytePosition = (lByteCount % 4) * 8;\r\n lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);\r\n lWordArray[lNumberOfWords - 2] = lMessageLength << 3;\r\n lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;\r\n return lWordArray;\r\n}\r\nfunction wordToHex(lValue) {\r\n var wordToHexValue = \"\";\r\n var wordToHexValueTemp = \"\";\r\n var lByte;\r\n var lCount;\r\n for (lCount = 0; lCount <= 3; lCount++) {\r\n lByte = (lValue >>> (lCount * 8)) & 255;\r\n wordToHexValueTemp = \"0\" + lByte.toString(16);\r\n wordToHexValue =\r\n wordToHexValue + wordToHexValueTemp.substr(wordToHexValueTemp.length - 2, 2);\r\n }\r\n return wordToHexValue;\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MD5 = exports.generate = void 0;\r\nvar md5_1 = require(\"./md5\");\r\nvar md5_2 = require(\"./md5\");\r\nObject.defineProperty(exports, \"generate\", { enumerable: true, get: function () { return md5_2.generate; } });\r\nexports.MD5 = {\r\n generate: md5_1.generate,\r\n};\r\n","import { MD5 } from 'md5-js-tools';\nimport { CreditSafeUser } from '../types/felixtypes';\nimport { getCreditSafeApiUrl } from './enviroment';\n\nconst apiSearch = async (query: string): Promise<CreditSafeUser> => {\n const res = await fetch(getCreditSafeApiUrl(), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n query,\n hash: MD5.generate(String.fromCharCode(83, 101, 67, 82, 101, 116) + query),\n }),\n });\n const data = await res.json();\n return data;\n};\n\nexport default apiSearch;\n","import { Component, Element, State, h } from '@stencil/core';\nimport Personnummer from 'personnummer';\nimport state from '../../store';\nimport apiSearch from '../../utils/creditSafe';\nimport { scrollToTop } from '../../utils/scroll';\n\n@Component({\n tag: 'hemfixarna-getuser',\n shadow: false,\n})\nexport class HemfixarnaGetuser {\n @State() email: string = '';\n @State() emailError: string | null = null;\n @State() phone: string = '';\n @State() phoneError: string | null = null;\n @State() ssn: string = '';\n @State() ssnError: string | null = null;\n @Element() private el: HTMLElement;\n\n componentWillLoad() {\n if (state.user) {\n this.email = state.user.email;\n this.phone = state.user.phone;\n this.ssn = state.user.ssn;\n }\n }\n\n handleChangeEmail = (e: Event) => {\n this.emailError = null;\n this.email = (e.target as HTMLInputElement).value;\n };\n\n handleChangePhone = (e: Event) => {\n this.phoneError = null;\n this.phone = (e.target as HTMLInputElement).value;\n };\n\n handleChangessn = (e: Event) => {\n this.ssnError = null;\n this.ssn = (e.target as HTMLInputElement).value;\n };\n\n handleSubmit = async (e: Event) => {\n e.preventDefault();\n const emailRegex = new RegExp(\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n );\n const validEmail = emailRegex.test(this.email);\n if (!validEmail) {\n this.emailError = 'Ange en giltig e-postadress';\n }\n const validPhone = /^[\\d\\s()+-]{6,}$/.test(this.phone);\n if (!validPhone) {\n this.phoneError = 'Ange ett giltigt telefonnummer';\n }\n const validssn = Personnummer.valid(this.ssn);\n if (!validssn) {\n this.ssnError = 'Ange ett giltigt personnummer';\n } else if (validssn) {\n const pn = Personnummer.parse(this.ssn).format(true);\n this.ssn = [pn.slice(0, 8), '-', pn.slice(8)].join('');\n }\n if (validEmail && validPhone && validssn) {\n try {\n const creditSafeData = await apiSearch(this.ssn);\n if (creditSafeData) {\n state.creditSafeUser = creditSafeData;\n state.checkoutStep = 2;\n state.user = {\n ...creditSafeData,\n email: this.email,\n phone: this.phone,\n ssn: this.ssn,\n };\n } else {\n this.ssnError = 'Vi kunde tyvärr inte hitta en address med ditt angivna personnummer';\n }\n } catch (e) {\n this.ssnError = 'Vi kunde tyvärr inte hitta en address med ditt angivna personnummer';\n console.log(e);\n } finally {\n const el = this.el.closest('.hemfixarna_content');\n scrollToTop(el);\n }\n }\n };\n\n render = () => {\n return (\n <form class=\"mb-2\" onSubmit={e => this.handleSubmit(e)}>\n <div>\n <input class={`${this.email.length ? 'input_active' : ''}`} onChange={e => this.handleChangeEmail(e)} type=\"email\" name=\"email\" value={this.email} />\n <label htmlFor=\"email\">E-post </label>\n </div>\n {this.emailError && <span>{this.emailError}</span>}\n <div>\n <input class={`${this.phone.length ? 'input_active' : ''}`} onChange={e => this.handleChangePhone(e)} type=\"tel\" name=\"phone\" value={this.phone} />\n <label htmlFor=\"phone\">Mobiltelefon </label>\n </div>\n {this.phoneError && <span>{this.phoneError}</span>}\n <div>\n <input class={`${this.ssn.length ? 'input_active' : ''}`} onChange={e => this.handleChangessn(e)} type=\"tel\" name=\"ssn\" value={this.ssn} />\n <label htmlFor=\"phone\">Personnummer*</label>\n </div>\n {this.ssnError && <span>{this.ssnError}</span>}\n <input type=\"submit\" value=\"Fortsätt*\" />\n <p>*Vi hämtar din adress</p>\n </form>\n );\n };\n}\n","import { Component, Fragment, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\n\n@Component({\n tag: 'hemfixarna-info',\n shadow: false,\n})\nexport class HemfixarnaInfo {\n logo = getAssetPath(`./assets/hemfixarna.svg`);\n\n render() {\n const checked = getAssetPath(`./assets/checked.svg`);\n return (\n <div class=\"hemfixarna_info\">\n {state.step < 5 ? (\n <Fragment>\n <h2>{state.customer.info_title}</h2>\n <p>{state.customer.info_text}</p>\n </Fragment>\n ) : (\n <h2>{state.customer.checkout_title}</h2>\n )}\n <ul class=\"hemfixarna_features\">\n {state.step < 5 ? (\n <Fragment>\n {state.customer.trust_badges?.length ? (\n <Fragment>\n {state.customer.trust_badges.map(l => (\n <li key={l.text}>\n <img src={checked} alt=\"checked\" />\n <p>{l.text}</p>\n </li>\n ))}\n </Fragment>\n ) : (\n <Fragment>\n {state.options.trust.map(l => (\n <li key={l.trust_badge}>\n <img src={checked} alt=\"checked\" />\n <p>{l.trust_badge}</p>\n </li>\n ))}\n </Fragment>\n )}\n </Fragment>\n ) : (\n <Fragment>\n {state.customer.checkout_trust_badges?.map(l => (\n <li key={l.text}>\n <img src={checked} alt=\"checked\" />\n <p>{l.text}</p>\n </li>\n ))}\n </Fragment>\n )}\n </ul>\n <img src={this.logo} width={200} alt=\"hemfixarna\" />\n <a class=\"hemfixarna_product--link\" target=\"_blank\" href={state.options.link.url}>\n {state.options.link.title}\n </a>\n </div>\n );\n }\n}\n",":host {\n .invoice {\n gap: 16px;\n display: grid;\n form {\n > span {\n text-align: center;\n padding: 16px 0;\n }\n }\n img {\n right: unset;\n left: unset;\n position: initial;\n transform: none;\n }\n label {\n cursor: pointer;\n font-size: 14px;\n display: flex;\n align-items: flex-start;\n padding: 16px 0;\n input {\n margin: 0 5px 0 0;\n accent-color: #ea662c;\n }\n }\n &-preview {\n display: flex;\n gap: 4px;\n div {\n position: relative;\n button {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0;\n img {\n width: 24px;\n height: 24px;\n }\n }\n > img {\n width: 100px;\n height: 80px;\n object-fit: cover;\n }\n }\n }\n input[type='email'],\n input[type='tel'],\n textarea {\n padding: 16px;\n border: 1px solid #fcd9c9;\n font-size: 16px;\n }\n textarea {\n resize: none;\n height: 200px;\n font-family: 'Inter', sans-serif;\n }\n div:has(> input[type='file']) {\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n background: #fff;\n border: 1px solid #fcd9c9;\n padding: 32px 16px;\n gap: 16px;\n span {\n color: #000;\n font-size: 12px;\n }\n }\n input[type='file'] {\n display: none;\n }\n }\n}\n","import { Component, Element, State, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\nimport { getApiUrl } from '../../utils/enviroment';\n\nconst base = `${getApiUrl()}/wp-json/headless`;\n\ninterface FormElements extends HTMLCollection {\n descriptionInput: {\n value: string;\n };\n emailInput: {\n value: string;\n };\n telInput: {\n value: string;\n };\n termsInput: {\n checked: boolean;\n };\n}\n\n@Component({\n tag: 'hemfixarna-invoice',\n styleUrl: 'hemfixarna-invoice.scss',\n shadow: false,\n})\nexport class HemfixarnaInvoice {\n @State() formError: string | null = null;\n @Element() private el: HTMLElement;\n @State() displayImages: Array<string | ArrayBuffer> = [];\n @State() formImages: Array<File> = [];\n @State() formState: 'initial' | 'loading' = 'initial';\n\n isValidEmail(email: string) {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(email);\n }\n\n componentDidRender() {\n const form = this.el.querySelector('form') as HTMLFormElement;\n if (form) {\n form.addEventListener('input', () => {\n this.formError = null;\n });\n }\n }\n\n disconnectedCallback() {\n const form = this.el.querySelector('form') as HTMLFormElement;\n if (form) {\n form.removeEventListener('input', () => {\n this.formError = null;\n });\n }\n }\n\n async submit(e: Event) {\n e.preventDefault();\n this.formState = 'loading';\n this.formError = null;\n const form = (e.currentTarget as HTMLFormElement).elements as FormElements;\n const values = {\n description: form.descriptionInput.value.length ? form.descriptionInput.value : null,\n email: form.emailInput.value.length ? form.emailInput.value : null,\n tel: form.telInput.value.length ? form.telInput.value : null,\n terms: form.termsInput?.checked,\n };\n\n if (!values.description) {\n this.formError = 'Vänligen fyll i formulärtexten';\n this.formState = 'initial';\n return;\n }\n if (!values.email || !this.isValidEmail(values.email)) {\n this.formError = 'Vänligen ange en giltig e-postadress';\n this.formState = 'initial';\n return;\n }\n if (!values.tel) {\n this.formError = 'Vänligen ange ditt telefonnummer';\n this.formState = 'initial';\n return;\n }\n if (state.selectedProduct.terms_show_checkbox && !values.terms) {\n this.formError = 'Vänligen acceptera villkoren';\n this.formState = 'initial';\n return;\n }\n\n const formData = new FormData();\n formData.append('text', values.description);\n formData.append('email', values.email);\n formData.append('phone', values.tel);\n formData.append('customer', state.business);\n\n this.formImages.forEach(file => {\n formData.append('images[]', file);\n });\n\n formData.append(\n 'product',\n JSON.stringify({\n title: state.selectedProduct.title,\n amount: 1,\n has_rut: state.selectedProduct.rut,\n has_rot: state.selectedProduct.rot,\n has_green: state.selectedProduct.green,\n ID: state.selectedProduct.ID,\n parts: [],\n }),\n );\n\n try {\n const res = await fetch(`${base}/saveinvoiceproduct`, {\n method: 'POST',\n body: formData,\n });\n const { response } = await res.json();\n if (response.code === 200) {\n state.checkoutInvoice = true;\n state.step = 6;\n } else {\n this.formError = 'Vi kan inte ta emot din beställning just nu';\n this.formState = 'initial';\n }\n } catch (error) {\n this.formError = 'Vi kan inte ta emot din beställning just nu';\n this.formState = 'initial';\n }\n }\n\n handleImageDrop(e: DragEvent) {\n e.preventDefault();\n const files = e.dataTransfer.files;\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n\n if (file.type.startsWith('image/')) {\n const reader = new FileReader();\n\n reader.onload = () => {\n this.displayImages = [...this.displayImages, reader.result];\n this.formImages = [...this.formImages, file];\n };\n\n reader.readAsDataURL(file);\n }\n }\n }\n\n handleFileInputChange(e: Event) {\n e.preventDefault();\n const files = (e.target as HTMLInputElement).files;\n\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n if (file.type.startsWith('image/')) {\n const reader = new FileReader();\n reader.onload = () => {\n this.displayImages = [...this.displayImages, reader.result];\n this.formImages = [...this.formImages, file];\n };\n\n reader.readAsDataURL(file);\n }\n }\n }\n\n handleImageClick() {\n (this.el.querySelector('.hemfixarna-file-upload') as HTMLInputElement).click();\n }\n\n preventDragOver(e: DragEvent) {\n e.preventDefault();\n }\n\n removeImage(index: number) {\n this.displayImages = this.displayImages.filter((_, i) => i !== index);\n this.formImages = this.formImages.filter((_, i) => i !== index);\n }\n\n render() {\n const upload = getAssetPath(`./assets/drag-drop.svg`);\n return (\n <div class=\"invoice\">\n <p>{state.selectedProduct.invoice_description}</p>\n <form onSubmit={e => this.submit(e)}>\n <textarea name=\"descriptionInput\" placeholder=\"Beskriv ditt ärende\" />\n <div role=\"button\" aria-label=\"upload image\" onDragOver={e => this.preventDragOver(e)} onDrop={e => this.handleImageDrop(e)} onClick={() => this.handleImageClick()}>\n <img src={upload} alt=\"hemfixarna_logo\" width={24} />\n <div>\n <p>Bifoga ev bilder</p>\n <span>(dra bilder hit)</span>\n </div>\n <input onChange={e => this.handleFileInputChange(e)} class=\"hemfixarna-file-upload\" accept=\"image/*\" type=\"file\" multiple name=\"fileInput\" />\n </div>\n <div class=\"invoice-preview\">\n {this.displayImages.map((img, i) => (\n <div key={i}>\n <img src={img as string} alt=\"uploaded image\" />\n <button onClick={() => this.removeImage(i)}>\n <img src={getAssetPath(`./assets/close.svg`)} alt=\"close\" />\n </button>\n </div>\n ))}\n </div>\n <input placeholder=\"E-post\" type=\"email\" name=\"emailInput\" />\n <input placeholder=\"Telefonnummer\" type=\"tel\" name=\"telInput\" />\n {state.selectedProduct.terms_show_checkbox ? (\n <label>\n <input type=\"checkbox\" name=\"termsInput\" />\n {state.selectedProduct.terms}\n </label>\n ) : null}\n {this.formError ? <span>{this.formError}</span> : null}\n <input type=\"submit\" value={this.formState === 'loading' ? 'Skickar' : 'Kontakta mig'} />\n </form>\n </div>\n );\n }\n}\n","import { Component, h } from '@stencil/core';\nimport state from '../../store';\n\n@Component({\n tag: 'hemfixarna-order',\n shadow: false,\n})\nexport class HemfixarnaOrder {\n resetShop() {\n state.step = 1;\n state.cart = [];\n state.selectedCategory = null;\n state.selectedService = null;\n state.selectedProduct = null;\n state.maleri = null;\n state.checkoutStep = 1;\n }\n\n disconnectedCallback() {\n this.resetShop();\n }\n\n render = () => {\n return (\n <div style={{ background: `url(${state.options.thank_you_image})` }} class=\"hemfixarna_order\">\n <div></div>\n <div>\n <h2>{state.checkoutInvoice ? 'Tack för din förfrågan' : 'Tack för din bokning'}</h2>\n {state.checkoutInvoice ? <p>Vi återkommer inom kort till dig på angivet telefonnummer eller epost</p> : null}\n {state.checkoutInvoice ? <div></div> : <hemfixarna-orderrows cart={false}></hemfixarna-orderrows>}\n <span onClick={() => this.resetShop()}>\n <button>Gör en ny bokning</button>\n </span>\n <hemfixarna-info />\n </div>\n </div>\n );\n };\n}\n","import { Component, Fragment, Prop, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\nimport { CartItem, Icon } from '../../types';\nimport { calculateGreenDiscount, calculateRot, calculateRut, getPartPrice, getProductPrice, getStartFee, getTotalPrice } from '../../utils/calc';\n\n@Component({\n tag: 'hemfixarna-orderrows',\n shadow: false,\n})\nexport class HemfixarnaOrderrows {\n @Prop() cart: boolean = true;\n\n goToProduct(id: number) {\n const products = state.customer.categories\n .map(c => (c.show_products ? c.products : c.sub_categories ? c.sub_categories.map(c => c.products) : []))\n .flat()\n .flat();\n const product = products.find(p => p && p.fields.ID === id);\n if (product) {\n state.selectedProduct = product.fields;\n state.step = 4;\n }\n }\n\n openRot() {\n state.modal = {\n title: state.rotOptions.rot_start_fee_heading,\n text: [state.rotOptions.rot_start_fee_text, state.rotOptions.rot_start_fee_text_secondary],\n };\n }\n\n openRut() {\n state.modal = {\n title: state.rutOptions.rut_start_fee_heading,\n text: [state.rutOptions.rut_start_fee_text, state.rutOptions.rut_start_fee_text_secondary],\n };\n }\n\n openGreen() {\n state.modal = {\n title: state.greenOptions.green_start_fee_heading,\n text: [state.greenOptions.green_start_fee_text, state.greenOptions.green_start_fee_text_secondary],\n };\n }\n\n getDiscountedInfo(item: CartItem) {\n if (item.rut && state.rut) {\n return ' (efter RUT-avdrag)';\n } else if (item.rot && state.rot) {\n return ' (efter ROT-avdrag)';\n } else if (item.green && state.green) {\n return ' (efter Grön teknik avdrag)';\n } else {\n return '';\n }\n }\n\n render() {\n const info = getAssetPath(`./assets/info.svg`);\n\n return (\n <Fragment>\n <ul class=\"hemfixarna_cart--items\">\n {state.cart.map(item => (\n <li class=\"hemfixarna_cart--item\">\n <div>\n <div>\n {item.icon && <img width={30} src={(item.icon as Icon).url ?? (item.icon as string)} alt={item.name} />}\n <p>\n <strong>{item.amount}x </strong>\n {item.name}\n </p>\n </div>\n {this.cart && <button onClick={() => this.goToProduct(item.id)}>Ändra</button>}\n </div>\n <p>\n <strong>{getProductPrice(item, item.price, item.amount)}kr</strong>\n <span>{this.getDiscountedInfo(item)}</span>\n </p>\n {item.parts.length > 0 && (\n <ul>\n {item.parts.map(part => (\n <li>\n <p>\n <strong>{part.amount}x </strong>\n {part.name}\n </p>\n <p>\n <strong>{getPartPrice(part, item, part.amount)}kr</strong>\n </p>\n </li>\n ))}\n </ul>\n )}\n </li>\n ))}\n </ul>\n <div class=\"hemfixarna_cart--additional\">\n <div>\n {getStartFee().rot > 0 && (\n <div class=\"hemfixarna_cart--startfee\">\n <p>\n <strong onClick={() => this.openRot()}>\n {state.rotOptions.rot_start_fee_heading}\n <img height={16} src={info} alt=\"info monteringsavgift\" />\n </strong>\n </p>\n <p>{getStartFee().rot}kr</p>\n </div>\n )}\n {getStartFee().rut > 0 && (\n <div class=\"hemfixarna_cart--startfee\">\n <p>\n <strong onClick={() => this.openRut()}>\n {state.rutOptions.rut_start_fee_heading}\n <img height={16} src={info} alt=\"info monteringsavgift\" />\n </strong>\n </p>\n <p>{getStartFee().rut}kr</p>\n </div>\n )}\n {getStartFee().green > 0 && (\n <div class=\"hemfixarna_cart--startfee\">\n <p>\n <strong onClick={() => this.openGreen()}>\n {state.greenOptions.green_start_fee_heading}\n <img height={16} src={info} alt=\"info monteringsavgift\" />\n </strong>\n </p>\n <p>{getStartFee().green}kr</p>\n </div>\n )}\n </div>\n {state.cart.find((item: CartItem) => item.rot) && (\n <div class=\"hemfixarna_cart--rutrot\">\n <div>\n {this.cart && (\n <label class=\"switch\">\n <input checked={state.rot} onChange={() => (state.rot = !state.rot)} type=\"checkbox\" />\n <span class=\"slider\"></span>\n </label>\n )}\n <p>ROT-avdrag</p>\n </div>\n <p>(-{state.rot ? calculateRot() : 0}kr)</p>\n </div>\n )}\n {state.cart.find((item: CartItem) => item.rut) && (\n <div class=\"hemfixarna_cart--rutrot\">\n <div>\n <label class=\"switch\">\n <input onChange={() => (state.rut = !state.rut)} checked={state.rut} type=\"checkbox\" />\n <span class=\"slider\"></span>\n </label>\n <p>RUT-avdrag</p>\n </div>\n <p>(-{state.rut ? calculateRut() : 0}kr)</p>\n </div>\n )}\n {state.cart.find((item: CartItem) => item.green) && (\n <div class=\"hemfixarna_cart--rutrot\">\n <div>\n <label class=\"switch\">\n <input onChange={() => (state.green = !state.green)} checked={state.green} type=\"checkbox\" />\n <span class=\"slider\"></span>\n </label>\n <p>Grön teknik avdrag</p>\n </div>\n <p>(-{state.green ? calculateGreenDiscount() : 0}kr)</p>\n </div>\n )}\n </div>\n <div class=\"hemfixarna_cart--price\">\n <h2>Totalbelopp: </h2>\n <h2>{getTotalPrice()}kr</h2>\n </div>\n </Fragment>\n );\n }\n}\n","","import { Component, Element, Fragment, State, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\nimport { Business, Icon, Part } from '../../types';\nimport { getPartPrice, getProductPrice } from '../../utils/calc';\nimport { scrollToTop } from '../../utils/scroll';\n\n@Component({\n tag: 'hemfixarna-product',\n styleUrl: 'hemfixarna-product.scss',\n shadow: false,\n})\nexport class HemfixarnaProduct {\n @State() amount: number = 0;\n @State() hideDescription: boolean = true;\n @Element() private el: HTMLElement;\n\n addProduct() {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart) {\n productInCart.amount++;\n state.cart = [...state.cart];\n } else {\n state.cart = [\n ...state.cart,\n {\n id: state.selectedProduct.ID,\n rut: state.selectedProduct.rut,\n rot: state.selectedProduct.rot,\n green: state.selectedProduct.green,\n amount: 1,\n parts: [],\n price: state.selectedProduct.price,\n name: state.selectedProduct.title,\n start_fee: !state.selectedProduct.hide_start_fee,\n terms_checkout: state.selectedProduct.terms_checkout,\n icon: state.selectedProduct.icon,\n },\n ];\n }\n }\n\n removeProduct() {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart && productInCart.amount > 1) {\n productInCart.amount--;\n state.cart = [...state.cart];\n } else {\n state.cart = state.cart.filter(p => p.id !== state.selectedProduct.ID);\n }\n }\n\n //Handle cart and parts\n addPart(part: Part) {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart) {\n const partInCart = productInCart.parts.find(sp => sp.id === part.ID);\n if (partInCart) {\n partInCart.amount++;\n productInCart.parts = [...productInCart.parts];\n } else {\n productInCart.parts = [...productInCart.parts, { id: part.ID, amount: 1, price: part.price, name: part.title ?? part.title }];\n }\n state.cart = [...state.cart.filter(p => p.id !== productInCart.id), productInCart];\n }\n }\n\n removePart(part: Part) {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart) {\n const partInCart = productInCart.parts.find(sp => sp.id === part.ID);\n if (partInCart && partInCart.amount > 1) {\n partInCart.amount--;\n productInCart.parts = [...productInCart.parts];\n } else {\n productInCart.parts = productInCart.parts.filter(sp => sp.id !== part.ID);\n }\n state.cart = [...state.cart.filter(p => p.id !== productInCart.id), productInCart];\n }\n }\n\n goToCart() {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart) {\n state.step = 5;\n const el = this.el.closest('.hemfixarna_content');\n scrollToTop(el);\n }\n }\n\n getAmount() {\n return state.cart.find(p => p.id === state.selectedProduct.ID)?.amount || 0;\n }\n\n getPartAmount(partId: number) {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n return productInCart?.parts.find(sp => sp.id === partId)?.amount || 0;\n }\n\n getTotalPrice() {\n let price = 0;\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart) {\n const partsPrice = productInCart.parts.reduce((acc, curr) => {\n const part = state.selectedProduct.parts.find(p => p.ID === curr.id);\n if (part) {\n return acc + part.price * curr.amount;\n }\n return acc;\n }, 0);\n price = state.selectedProduct.price * productInCart.amount + partsPrice;\n } else {\n price = state.selectedProduct.price;\n }\n return getProductPrice(state.selectedProduct, price);\n }\n\n componentDidRender() {\n const linkElem = document.createElement('link');\n linkElem.setAttribute('rel', 'stylesheet');\n linkElem.setAttribute('href', 'https://painting-frontend.vercel.app/static/css/main.css');\n const fonts = document.createElement('link');\n fonts.setAttribute('rel', 'stylesheet');\n fonts.setAttribute('href', 'https://painting-frontend.vercel.app/fonts.css');\n\n const checkAndInjectCSS = () => {\n const parents = this.el.getElementsByTagName('hemfixare-calculator');\n if (parents.length > 0 && parents[0].shadowRoot !== null) {\n parents[0].shadowRoot.appendChild(linkElem);\n parents[0].shadowRoot.appendChild(fonts);\n } else {\n setTimeout(checkAndInjectCSS, 1);\n }\n };\n\n checkAndInjectCSS();\n }\n\n render() {\n const checked = getAssetPath(`./assets/checked.svg`);\n const plus = getAssetPath(`./assets/plus.svg`);\n const minus = getAssetPath(`./assets/minus.svg`);\n\n if (state.maleri) {\n return (\n <div class=\"hemfixarna_painting\">\n <script\n type=\"text/javascript\"\n src={\n ['localhost', 'vercel'].some(v => window.location.href.includes(v))\n ? 'https://painting-dev.vercel.app/static/js/main.js'\n : 'https://painting-frontend.vercel.app/static/js/main.js'\n }\n defer\n async\n ></script>\n <hemfixare-calculator\n title={state.options.maleri_title}\n subtitle={state.options.maleri_text}\n modal=\"true\"\n customer={state.business === Business.string ? 'string' : state.business}\n ></hemfixare-calculator>\n </div>\n );\n }\n\n return state.selectedProduct ? (\n <div class=\"hemfixarna_product\">\n <div class=\"hemfixarna_product--top\">\n {state.selectedProduct.icon && (\n <img width={80} src={(state.selectedProduct.icon as Icon).url ?? (state.selectedProduct.icon as string)} alt={state.selectedProduct.title} />\n )}\n <div>\n <h1>{state.selectedProduct.title}</h1>\n {!state.selectedProduct.invoice ? <h2>{getProductPrice(state.selectedProduct)} kr/st</h2> : <h2>{state.selectedProduct.invoice_price}</h2>}\n </div>\n </div>\n\n <div class=\"hemfixarna_product--grid\">\n <div class=\"hemfixarna_product--left\">\n {state.selectedProduct.list?.length && (\n <ul class=\"hemfixarna_features\">\n {state.selectedProduct.list.map(l => (\n <li key={l.bullet}>\n <img src={checked} alt=\"checked\" />\n <p>{l.bullet}</p>\n </li>\n ))}\n </ul>\n )}\n {state.selectedProduct.description && (\n <p\n onClick={() => (this.hideDescription = false)}\n class={`hemfixarna_description ${this.hideDescription ? 'hemfixarna_description--hidden' : ''}`}\n innerHTML={state.selectedProduct.description}\n ></p>\n )}\n </div>\n <div class=\"hemfixarna_product--right\">\n {state.selectedProduct.invoice ? (\n <hemfixarna-invoice />\n ) : (\n <Fragment>\n <ul>\n <li class=\"hemfixarna_product--item\">\n <div>\n <p>{state.selectedProduct.title}</p>\n <p class=\"hemfixarna_product--price\">{getProductPrice(state.selectedProduct)}kr/st</p>\n </div>\n <div class=\"hemfixarna_counter\">\n <img class={`${this.getAmount() === 0 ? 'disabled' : ''}`} src={minus} onClick={() => this.removeProduct()} />\n <span>{this.getAmount()}</span>\n <img src={plus} onClick={() => this.addProduct()} />\n </div>\n </li>\n {state.selectedProduct.parts?.length &&\n state.selectedProduct.parts.map(p => (\n <li class=\"hemfixarna_part\">\n <div>\n <p>{p.title ?? p.title}</p>\n <p class=\"hemfixarna_product--price\">{getPartPrice(p, state.selectedProduct)}kr/st</p>\n </div>\n <div class=\"hemfixarna_counter\">\n <img class={`${this.getPartAmount(p.ID) === 0 ? 'disabled' : ''}`} src={minus} onClick={() => this.removePart(p)} />\n <span>{this.getPartAmount(p.ID)}</span>\n <img class={`${this.getAmount() === 0 ? 'disabled' : ''}`} src={plus} onClick={() => this.addPart(p)} />\n </div>\n </li>\n ))}\n </ul>\n <h4 class=\"hemfixarna_product--total\">Totalt {this.getTotalPrice()} kr</h4>\n <button onClick={() => this.goToCart()} class={`hemfixarna_buy ${this.getAmount() === 0 ? 'disabled' : ''}`}>\n Fortsätt\n </button>\n </Fragment>\n )}\n {!state.selectedProduct.hide_start_fee && (state.selectedProduct.rot || state.selectedProduct.rut) && state.rutOptions && state.rotOptions && (\n <p class=\"hemfixarna_terms\">\n <strong>{state.selectedProduct.rot ? state.rotOptions.rot_start_fee_heading : state.rutOptions.rut_start_fee_heading}</strong>\n <br />\n <span innerHTML={state.selectedProduct.rot ? state.rotOptions.rot_start_fee_text : state.rutOptions.rut_start_fee_text}></span>\n </p>\n )}\n {state.options && <hemfixarna-info />}\n </div>\n </div>\n </div>\n ) : null;\n }\n}\n","import { Component, Prop, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\nimport { Category, CustomerCategory, CustomerSubCategory, Icon } from '../../types';\n\n@Component({\n tag: 'hemfixarna-start',\n shadow: false,\n})\nexport class HemfixarnaGrid {\n @Prop() tree?: Category;\n @Prop() slug?: string;\n\n isMainCategory(category: CustomerCategory | CustomerSubCategory): category is CustomerCategory {\n return (category as CustomerCategory).show_products !== undefined;\n }\n\n handleMaleriClick() {\n state.step = 4;\n state.maleri = true;\n }\n\n render() {\n const maleriLogo = getAssetPath('./assets/gubbe-pensel.svg');\n return state.customer ? (\n <div>\n <h2>{state.selectedCustomerCategory ? state.selectedCustomerCategory.name : 'Alla tjänster'}</h2>\n <div class=\"hemfixarna_categories--wrapper\">\n <ul class=\"hemfixarna_categories\">\n {state.selectedCustomerCategory?.add_painting ? (\n <button onClick={() => this.handleMaleriClick()} class=\"hemfixarna_maleribox\">\n <img height={64} src={maleriLogo} alt=\"Måleri Logotyp\" />\n <p>Beräkna fast pris på måleri & tapetsering här</p>\n </button>\n ) : null}\n {state.selectedCustomerCategory\n ? this.isMainCategory(state.selectedCustomerCategory) && state.selectedCustomerCategory.sub_categories && !state.selectedCustomerCategory.show_products\n ? state.selectedCustomerCategory.sub_categories.map(c => <hemfixarna-box category={c}></hemfixarna-box>)\n : state.selectedCustomerCategory.products\n ? state.selectedCustomerCategory.products.map(c => <hemfixarna-box category={c.fields}></hemfixarna-box>)\n : null\n : state.customer.categories.map(c => <hemfixarna-box category={c}></hemfixarna-box>)}\n </ul>\n <hemfixarna-info />\n </div>\n </div>\n ) : (\n <div>\n <h2>Alla tjänster</h2>\n <div class=\"hemfixarna_categories--wrapper\">\n <ul class=\"hemfixarna_categories\">\n {this.tree.sub_cats\n .sort((a, b) => (a.name < b.name ? -1 : 1))\n .map(c => (\n <hemfixarna-box post={c} icon={(c.icon as Icon).url ?? (c.icon as string)} postTitle={c.name}></hemfixarna-box>\n ))}\n </ul>\n <hemfixarna-info />\n </div>\n </div>\n );\n }\n}\n"],"version":3}
1
+ {"file":"hemfixarna-address.hemfixarna-box.hemfixarna-breadcrumbs.hemfixarna-cart.hemfixarna-checkout.hemfixarna-component.hemfixarna-contact.hemfixarna-demo.hemfixarna-getuser.hemfixarna-info.hemfixarna-invoice.hemfixarna-order.hemfixarna-orderrows.hemfixarna-product.hemfixarna-start.entry.cjs.js","mappings":"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AAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;AACrD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,C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","names":["state","h","Business","Fragment","getAssetPath","base","WidgetStyle","HemfixarnaInfo","utf8_1","md5_1","MD5","Personnummer"],"sources":["./src/utils/form.ts","./src/utils/scroll.ts","./src/components/hemfixarna-address/hemfixarna-address.tsx","./src/utils/calc.ts","./src/utils/types.ts","./src/components/hemfixarna-box/hemfixarna-box.tsx","./src/components/hemfixarna-breadcrumbs/hemfixarna-breadcrumbs.tsx","./src/components/hemfixarna-cart/hemfixarna-cart.tsx","./src/utils/enviroment.ts","./src/utils/api.ts","./src/utils/felixApi.ts","./src/components/hemfixarna-checkout/hemfixarna-checkout.tsx","./src/components/hemfixarna-component/hemfixarna.scss?tag=hemfixarna-component&encapsulation=shadow","./src/components/hemfixarna-component/hemfixarna-component.tsx","./src/components/hemfixarna-contact/hemfixarna-contact.tsx","./src/components/hemfixarna-demo/hemfixarna-demo.scss?tag=hemfixarna-demo&encapsulation=shadow","./src/components/hemfixarna-demo/hemfixarna-demo.tsx","./node_modules/personnummer/dist/esm/index.js","./node_modules/md5-js-tools/lib/utf8.js","./node_modules/md5-js-tools/lib/md5.js","./node_modules/md5-js-tools/lib/index.js","./src/utils/creditSafe.ts","./src/components/hemfixarna-getuser/hemfixarna-getuser.tsx","./src/components/hemfixarna-info/hemfixarna-info.tsx","./src/components/hemfixarna-invoice/hemfixarna-invoice.scss?tag=hemfixarna-invoice","./src/components/hemfixarna-invoice/hemfixarna-invoice.tsx","./src/components/hemfixarna-order/hemfixarna-order.tsx","./src/components/hemfixarna-orderrows/hemfixarna-orderrows.tsx","./src/components/hemfixarna-product/hemfixarna-product.scss?tag=hemfixarna-product","./src/components/hemfixarna-product/hemfixarna-product.tsx","./src/components/hemfixarna-start/hemfixarna-start.tsx"],"sourcesContent":["const hideField = (field: string) => {\n return field.split(' ').reduce((acc, curr) => {\n if (curr.length <= 2) {\n return acc + curr.slice(0, 1) + '* ';\n } else {\n return acc + curr.slice(0, 1) + '*'.repeat(curr.length - 2) + curr.slice(-1) + ' ';\n }\n }, '');\n};\n\nexport { hideField };\n","const scrollToTop = (el: Element | undefined) => {\n if (!el) return;\n el.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n};\n\nexport { scrollToTop };\n","import { Component, Element, State, h } from '@stencil/core';\nimport state from '../../store';\nimport { hideField } from '../../utils/form';\nimport { scrollToTop } from '../../utils/scroll';\n\n@Component({\n tag: 'hemfixarna-address',\n shadow: false,\n})\nexport class HemfixarnaAddress {\n @State() street: string = '';\n @State() streetError: string | null = null;\n @State() zip: string = '';\n @State() zipError: string | null = null;\n @State() town: string = '';\n @State() townError: string | null = null;\n @Element() private el: HTMLElement;\n\n componentWillLoad() {\n if (state.user) {\n this.street = state.user.street;\n this.zip = state.user.zip;\n this.town = state.user.town;\n }\n }\n\n handleSubmit = (e: Event) => {\n e.preventDefault();\n const streetValid = this.street.length > 0;\n if (!streetValid) {\n this.streetError = 'Ange en gatuadress';\n }\n const zipValid = this.zip.length > 0;\n const zipIsNumber = /^\\s*\\d[\\d\\s]*$/.test(this.zip);\n if (!zipIsNumber) {\n this.zipError = 'Postnummer får endast innehålla siffror';\n }\n if (!zipValid) {\n this.zipError = 'Ange ett postnummer';\n }\n const townValid = /^[^\\d\\s]{2,}$/.test(this.town);\n if (!townValid) {\n this.townError = 'Ange en ort';\n }\n if (streetValid && zipValid && townValid && zipIsNumber) {\n state.user = { ...state.user, street: this.street, zip: this.zip, town: this.town };\n state.checkoutStep = 2;\n state.checkoutEdit = false;\n const el = this.el.closest('.hemfixarna_content');\n scrollToTop(el);\n }\n };\n\n handleChangeStreet = (e: Event) => {\n this.streetError = null;\n this.street = this.street === state.user.street ? '' : (e.target as HTMLInputElement).value;\n };\n\n handleChangeZip = (e: Event) => {\n this.zipError = null;\n this.zip = this.zip === state.user.zip ? '' : (e.target as HTMLInputElement).value;\n };\n\n handleChangeTown = (e: Event) => {\n this.townError = null;\n this.town = this.town === state.user.town ? '' : (e.target as HTMLInputElement).value;\n };\n\n render = () => {\n return (\n <form class=\"hemfixarna_address\" onSubmit={e => this.handleSubmit(e)}>\n <div>\n <input\n class={`${this.street.length ? 'input_active' : ''}`}\n onInput={this.handleChangeStreet}\n type=\"text\"\n name=\"street\"\n value={this.street === state.user.street ? hideField(this.street) : this.street}\n />\n <label htmlFor=\"street\">Gatuaddress </label>\n </div>\n {this.streetError && <span>{this.streetError}</span>}\n <div>\n <input\n class={`${this.zip.length ? 'input_active' : ''}`}\n onInput={this.handleChangeZip}\n type=\"tel\"\n name=\"zip\"\n value={this.zip === state.user.zip ? hideField(this.zip) : this.zip}\n />\n <label htmlFor=\"zip\">Postnummer </label>\n </div>\n {this.zipError && <span>{this.zipError}</span>}\n <div>\n <input\n class={`${this.town.length ? 'input_active' : ''}`}\n onInput={this.handleChangeTown}\n type=\"text\"\n name=\"town\"\n value={this.town === state.user.town ? hideField(this.town) : this.town}\n />\n <label htmlFor=\"town\">Ort </label>\n </div>\n {this.townError && <span>{this.townError}</span>}\n <input type=\"submit\" value=\"Fortsätt\" />\n </form>\n );\n };\n}\n","import state from '../store';\nimport { CartItem, CartPart, Part, Product } from '../types';\n\nconst getRutPrice = (price: number) => {\n return Math.ceil(price / 2);\n};\n\nconst getRotPrice = (price: number) => {\n return Math.ceil(price * 0.7);\n};\n\nconst getGreenPrice = (price: number) => {\n return Math.ceil(price * 0.5);\n};\n\nconst getRutStartFee = () => {\n if (!state.options) return 448;\n if (state.rut) {\n return getRutPrice(state.options.start_fee);\n } else {\n return state.options.start_fee;\n }\n};\n\nconst getRotStartFee = () => {\n if (!state.options) return 448;\n if (state.rot) {\n return getRotPrice(state.options.start_fee);\n } else {\n return state.options.start_fee;\n }\n};\n\nconst getProductPrice = (product: Product | CartItem, price?: number, amount: number = 1) => {\n if (product.rot && state.rot) {\n return getRotPrice((price || product.price) * amount);\n } else if (product.rut && state.rut) {\n return getRutPrice((price || product.price) * amount);\n } else if (product.green && state.green) {\n return getGreenPrice((price || product.price) * amount);\n } else {\n return (price || product.price) * amount;\n }\n};\n\nconst getProductPriceWithRotAndRut = (product: Product) => {\n if (product.rot) {\n return getRotPrice(product.price);\n } else if (product.rut && state.rut) {\n return getRutPrice(product.price);\n } else {\n return product.price;\n }\n};\n\nconst getPartPrice = (part: Part | CartPart, product: Product | CartItem, amount: number = 1) => {\n if (product.rot && state.rot) {\n return getRotPrice(part.price * amount);\n } else if (product.rut && state.rut) {\n return getRutPrice(part.price * amount);\n } else {\n return part.price * amount;\n }\n};\n\nconst getStartFee = () => {\n if (!state.cart) return { rut: 0, rot: 0, green: 0 };\n const hasRut = state.cart.some(item => item.rut && item.start_fee);\n const hasRot = state.cart.some(item => item.rot && item.start_fee);\n const hasGreen = state.cart.some(item => item.green && item.start_fee);\n const rutPrice = state.rut ? getRutPrice(state.options.start_fee) : state.options.start_fee * 1;\n const rotPrice = state.rot ? getRotPrice(state.options.start_fee) : state.options.start_fee * 1;\n const greenPrice = state.green ? getGreenPrice(state.options.start_fee) : state.options.start_fee * 1;\n return { rut: hasRut ? rutPrice : 0, rot: hasRot ? rotPrice : 0, green: hasGreen ? greenPrice : 0, length: [hasRut, hasRot, hasGreen].filter(d => d).length };\n // if (hasRut && hasRot) {\n // return { rut: rutPrice, rot: rotPrice, length: 2 };\n // } else if (hasRut) {\n // return { rut: rutPrice, rot: 0, length: 1 };\n // } else if (hasRot) {\n // return { rut: 0, rot: rotPrice, length: 1 };\n // } else {\n // return { rut: 0, rot: 0, length: 0 };\n // }\n};\n\nconst getItemPrice = (item: CartItem) => {\n const partsPrice = item.parts.reduce((acc, curr) => {\n return acc + curr.price * curr.amount;\n }, 0);\n return getProductPrice(item, item.price * item.amount + partsPrice);\n};\n\nconst calculateRot = () => {\n const totalWithRot =\n state.cart.reduce((acc, curr) => {\n return curr.rot ? acc + getItemPrice(curr) : acc;\n }, 0) + getStartFee().rot;\n const totalWithoutRot =\n state.cart.reduce((acc, curr) => {\n const partsPrice = curr.parts.reduce((acc, curr) => {\n return acc + curr.price * curr.amount;\n }, 0);\n return curr.rot ? acc + curr.price * curr.amount + partsPrice : acc;\n }, 0) + Number(state.options.start_fee);\n return totalWithoutRot - totalWithRot;\n};\n\nconst calculateRut = () => {\n const totalWithRut =\n state.cart.reduce((acc, curr) => {\n return curr.rut ? acc + getItemPrice(curr) : acc;\n }, 0) + getStartFee().rut;\n const totalWithoutRut =\n state.cart.reduce((acc, curr) => {\n const partsPrice = curr.parts.reduce((acc, curr) => {\n return acc + curr.price * curr.amount;\n }, 0);\n return curr.rut ? acc + curr.price * curr.amount + partsPrice : acc;\n }, 0) + Number(state.options.start_fee);\n return totalWithoutRut - totalWithRut;\n};\n\nconst calculateGreenDiscount = () => {\n const totalWithGreen =\n state.cart.reduce((acc, curr) => {\n return curr.green ? acc + getItemPrice(curr) : acc;\n }, 0) + getStartFee().green;\n const totalWithoutGreen =\n state.cart.reduce((acc, curr) => {\n const partsPrice = curr.parts.reduce((acc, curr) => {\n return acc + curr.price * curr.amount;\n }, 0);\n return curr.green ? acc + curr.price * curr.amount + partsPrice : acc;\n }, 0) + Number(state.options.start_fee);\n return totalWithoutGreen - totalWithGreen;\n};\n\nconst getTotalPrice = () => {\n return state.cart.reduce((acc, curr) => acc + getItemPrice(curr), 0) + getStartFee().rot + getStartFee().rut;\n};\n\nexport {\n calculateGreenDiscount,\n calculateRot,\n calculateRut,\n getGreenPrice,\n getItemPrice,\n getPartPrice,\n getProductPrice,\n getProductPriceWithRotAndRut,\n getRotPrice,\n getRotStartFee,\n getRutPrice,\n getRutStartFee,\n getStartFee,\n getTotalPrice,\n};\n","import { Business, CustomerCategory, CustomerSubCategory, Product } from '../types';\n\nconst isProduct = (category: CustomerCategory | CustomerSubCategory | Product): category is Product => {\n return (category as Product).post_name !== undefined;\n};\n\nconst isBusiness = (partner: string): partner is Business => {\n return Object.values(Business).includes(partner as Business);\n};\n\nexport { isBusiness, isProduct };\n","import { Component, Element, Fragment, Prop, h } from '@stencil/core';\nimport state from '../../store';\nimport { Category, CustomerCategory, CustomerSubCategory, Product, Service } from '../../types';\nimport { getProductPrice } from '../../utils/calc';\nimport { scrollToTop } from '../../utils/scroll';\nimport { isProduct } from '../../utils/types';\n\n@Component({\n tag: 'hemfixarna-box',\n shadow: false,\n})\nexport class HemfixarnaBox {\n @Prop() post: Category | Product | Service;\n @Prop() category: CustomerCategory | CustomerSubCategory | Product;\n @Prop() icon: string;\n @Prop() postTitle: string;\n @Element() private el: HTMLElement;\n\n setTaxonomy(taxonomy: Category | Service | Product) {\n if (taxonomy) {\n if ((taxonomy as Category)?.taxonomy === 'service_cat') {\n state.selectedCategory = taxonomy as Category;\n state.step = 2;\n } else if ((taxonomy as Service)?.post_type === 'service') {\n state.selectedService = taxonomy as Service;\n state.step = 3;\n } else if ((taxonomy as Product)?.post_type === 'ikea_product') {\n state.selectedProduct = taxonomy as Product;\n state.step = 4;\n }\n const el = this.el.closest('.hemfixarna_content');\n scrollToTop(el);\n }\n }\n\n setProduct() {\n state.selectedProduct = this.category as Product;\n state.step = 4;\n state.selectedCustomerCategory = null;\n const el = this.el.closest('.hemfixarna_content');\n scrollToTop(el);\n }\n\n render() {\n return this.category ? (\n <Fragment>\n {isProduct(this.category) ? (\n <li onClick={() => this.setProduct()}>\n <img class=\"hemfixarna_logo\" height={82} src={this.category.icon as string} alt={this.category.post_name} />\n <div>\n <p>{this.category.title}</p>\n {!this.category.invoice ? <p class=\"price\">Från {getProductPrice(this.category)}kr</p> : null}\n </div>\n </li>\n ) : (\n <li onClick={() => (state.selectedCustomerCategory = this.category as CustomerCategory)}>\n <img class=\"hemfixarna_logo\" height={82} src={this.category.icon} alt={this.category.name} />\n <div>\n <p>{this.category.name}</p>\n </div>\n </li>\n )}\n </Fragment>\n ) : (\n <li onClick={() => this.setTaxonomy(this.post)}>\n {this.post.icon && <img class=\"hemfixarna_logo\" height={82} src={this.icon} alt={this.postTitle} />}\n <div>\n <p>{this.postTitle}</p>\n {state.step === 3 && <p class=\"price\">Från {getProductPrice(this.post as Product)}kr</p>}\n </div>\n </li>\n );\n }\n}\n","import { Component, Element, Prop, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\nimport { scrollToTop } from '../../utils/scroll';\n\n@Component({\n tag: 'hemfixarna-breadcrumbs',\n shadow: false,\n})\nexport class HemfixarnaBreadcrumbs {\n @Prop() closeModal: () => void;\n @Element() private el: HTMLElement;\n\n getCartLength() {\n return state.cart.reduce((acc, curr) => acc + curr.amount, 0);\n }\n\n triggerScrollTotop = () => {\n const el = this.el.nextSibling as HTMLElement;\n scrollToTop(el);\n };\n\n handleCartClick() {\n if (state.cart?.length) {\n state.step = 5;\n this.triggerScrollTotop();\n }\n }\n\n handleHomePageClick() {\n state.step = 1;\n state.parentCategory = null;\n state.selectedCustomerCategory = null;\n this.triggerScrollTotop();\n setTimeout(() => {\n state.selectedCategory = null;\n state.selectedProduct = null;\n state.maleri = null;\n state.selectedService = null;\n }, 200);\n }\n\n render() {\n const logo = getAssetPath(`./assets/hemfixarna.svg`);\n const close = getAssetPath(`./assets/close.svg`);\n const cart = getAssetPath(`./assets/cart.svg`);\n const back = getAssetPath(`./assets/back.svg`);\n\n return (\n <div>\n <div class=\"hemfixarna_crumbs\">\n <div class=\"hemfixarna_crumbs--links\">\n <img onClick={() => this.handleHomePageClick()} src={logo} width={110} />\n <img onClick={() => this.closeModal()} class=\"close\" src={close} width={32} />\n <div>\n <button onClick={() => this.handleHomePageClick()}>Alla tjänster</button>\n </div>\n </div>\n <div class=\"hemfixarna_crumbs--right\">\n <hemfixarna-contact></hemfixarna-contact>\n <div onClick={() => this.handleCartClick()} class={`cart ${this.getCartLength() > 0 ? 'cart_active' : ''}`}>\n <img src={cart} width={24} />\n <span>{this.getCartLength()}</span>\n </div>\n </div>\n </div>\n {[3, 4].includes(state.step) && !state.customer && (\n <button\n class=\"hemfixarna_crumbs--back\"\n onClick={() => {\n state.step = state.step === 4 ? 3 : 2;\n }}\n >\n <img width={24} src={back} alt=\"back arrow\" />\n <span>Se allt {state.step === 4 ? state.selectedService.post_title : state.selectedCategory.name}</span>\n </button>\n )}\n {!state.parentCategory && state.step && state.selectedCustomerCategory && (\n <button\n class=\"hemfixarna_crumbs--back\"\n onClick={() => {\n state.step = 1;\n state.selectedCustomerCategory = null;\n state.selectedProduct = null;\n state.maleri = null;\n }}\n >\n <img width={24} src={back} alt=\"back arrow\" />\n <span>Se alla tjänster</span>\n </button>\n )}\n {state.parentCategory && state.step < 5 && (\n <button\n class=\"hemfixarna_crumbs--back\"\n onClick={() => {\n state.step = 1;\n state.selectedCustomerCategory = state.parentCategory;\n state.selectedProduct = null;\n state.maleri = null;\n }}\n >\n <img width={24} src={back} alt=\"back arrow\" />\n <span>Se allt {state.parentCategory.name}</span>\n </button>\n )}\n </div>\n );\n }\n}\n","import { Component, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\n\n@Component({\n tag: 'hemfixarna-cart',\n shadow: false,\n})\nexport class HemfixarnaCart {\n render() {\n const back = getAssetPath(`./assets/back.svg`);\n\n return (\n <div class=\"hemfixarna_cart\">\n <div class=\"hemfixarna_cart--left\">\n <h2>\n {state.checkoutStep === 2 && !state.checkoutEdit && (\n <button\n onClick={() => {\n state.checkoutStep = 1;\n }}\n >\n <img width={24} src={back} alt=\"back arrow\" />\n </button>\n )}\n Din bokning\n </h2>\n <hemfixarna-orderrows />\n </div>\n <div class=\"hemfixarna_cart--right\">\n <h2>\n {state.checkoutStep === 2 && !state.checkoutEdit && (\n <button\n onClick={() => {\n state.checkoutStep = 1;\n }}\n >\n <img width={24} src={back} alt=\"back arrow\" />\n </button>\n )}\n Dina uppgifter\n </h2>\n <hemfixarna-checkout />\n <hemfixarna-info />\n </div>\n </div>\n );\n }\n}\n","const livePreviewUrl = 'hemfixarna-partner.vercel.app';\n\nconst getDefaultApiUrl = () => {\n if (window.location.href.includes('vercel.app') && !window.location.href.includes(livePreviewUrl)) {\n return 'https://hemfixare.dev.afonso.se';\n } else {\n return 'https://hemfixarna.se';\n }\n};\n\nconst getApiUrl = () => {\n if (typeof process !== 'undefined' && process.env && process.env.API_URL) {\n return process.env.API_URL;\n }\n\n return getDefaultApiUrl();\n};\n\nconst getDefaultCreditSafeApiUrl = () => {\n if (window.location.href.includes('vercel.app')) {\n return 'https://hemfixare-lookup-dev.vercel.app/api';\n } else {\n return 'https://hemfixare-lookup.vercel.app/api';\n }\n};\n\nconst getCreditSafeApiUrl = () => {\n if (typeof process !== 'undefined' && process.env && process.env.CREDIT_SAFE_API_URL) {\n return process.env.CREDIT_SAFE_API_URL;\n }\n\n return getDefaultCreditSafeApiUrl();\n};\n\nexport { getApiUrl, getCreditSafeApiUrl };\n","import { RotOptions, RutOptions, WpOptions } from '../types';\nimport { getApiUrl } from './enviroment';\nimport { FelixOrder } from './felixApi';\n\nconst base = `${getApiUrl()}/wp-json/headless`;\n\nexport async function fetchWithType<T>(request: RequestInfo, options?: RequestInit): Promise<T> {\n const response = await fetch(request, options);\n const body = await response.json();\n return body;\n}\n\nconst getTaxonomy = async (endpoint: string) => {\n if (!endpoint) {\n return;\n }\n const type = endpoint.split('/')[0];\n const slug = endpoint.split('/')[1];\n try {\n const res = await fetch(`${base}/${type}/${slug}`);\n return await res.json();\n } catch (error) {\n console.log(error);\n }\n};\n\nconst getCustomer = async (slug: string) => {\n try {\n const res = await fetch(`${base}/customer/${slug}`);\n return await res.json();\n } catch (error) {\n console.log(error);\n }\n};\n\nconst loginCustomer = async ({ id, password }: { id: number; password: string }) => {\n try {\n const res = await fetch(`${base}/customer/login`, {\n method: 'POST',\n body: JSON.stringify({ id, password }),\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n return res.status;\n } catch (error) {\n console.log(error);\n }\n};\n\nconst getOptions = async () => {\n try {\n const res = await fetch(`${base}/webcoptions`);\n return (await res.json()) as WpOptions;\n } catch (error) {\n console.log(error);\n }\n};\n\nconst getRut = async () => {\n try {\n const data = await fetchWithType<RutOptions>(`${base}/rut`);\n return data;\n } catch (error) {\n console.log(error);\n }\n};\n\nconst getRot = async () => {\n try {\n const res = await fetch(`${base}/rot`);\n return (await res.json()) as RotOptions;\n } catch (error) {\n console.log(error);\n }\n};\n\nconst getGreenDiscount = async () => {\n try {\n const res = await fetch(`${base}/green-discount`);\n return await res.json();\n } catch (error) {\n console.log(error);\n }\n};\n\nconst postOrder = async (data: FelixOrder) => {\n try {\n const res = await fetch(`${base}/weborder`, {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n return (await res.json()) as { message: string; post_id: number; data: FelixOrder; status?: number };\n } catch (error) {\n console.log(error);\n }\n};\n\nexport { getCustomer, getGreenDiscount, getOptions, getRot, getRut, getTaxonomy, loginCustomer, postOrder };\n","import { fetchWithType } from './api';\nimport { getApiUrl } from './enviroment';\n\nconst base = `${getApiUrl()}/wp-json/felix`;\n\ninterface FelixOrder {\n firstName: string;\n lastName: string;\n street: string;\n zip: string;\n town: string;\n ssn: string;\n email: string;\n phone: string;\n url: string;\n date: string;\n notes?: string;\n wws?: string;\n referral_id?: string;\n id_source?: string;\n id_sub_source?: string;\n products: {\n id: string;\n name: string;\n quantity: number;\n rut: number;\n rot: number;\n }[];\n creditSafe: {\n firstName: string;\n lastName: string;\n street: string;\n zip: string;\n town: string;\n };\n felixStatus?: 'success' | 'error';\n customer?: string;\n seller_id?: string;\n refferal_id?: string;\n}\n\nconst postPerson = async (felixOrder: FelixOrder) => {\n try {\n return await fetchWithType<\n | {\n response: {\n scriptResult: string;\n scriptError: string;\n };\n messages: [\n {\n code: string;\n message: string;\n },\n ];\n }\n | false\n >(`${base}/createperson`, {\n method: 'POST',\n body: JSON.stringify(felixOrder),\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n } catch (error) {\n console.log(error);\n }\n};\n\nexport { FelixOrder, postPerson };\n","import { Component, Element, Fragment, State, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\nimport { Business } from '../../types';\nimport { postOrder } from '../../utils/api';\nimport { FelixOrder, postPerson } from '../../utils/felixApi';\nimport { hideField } from '../../utils/form';\nimport { scrollToTop } from '../../utils/scroll';\n\n@Component({\n tag: 'hemfixarna-checkout',\n shadow: false,\n})\nexport class HemfixarnaCheckout {\n @State() date: string = '';\n @State() dateError: string | null = null;\n @State() generalError: string | null = null;\n @State() loading = false;\n @State() enteredPin: string = '';\n @Element() private el: HTMLElement;\n @State() selectedSubSource: string | null = null;\n @State() partnerOrderId: string | null = null;\n @State() sellerID: string | null = null;\n @State() RefferalID: string | null = null;\n\n handleChangeDate = (e: Event) => {\n this.dateError = null;\n this.date = (e.target as HTMLInputElement).value;\n };\n\n handleChangeTerms = () => {\n this.generalError = null;\n };\n\n sendOrder = async () => {\n if (this.loading) return;\n this.loading = true;\n let order: FelixOrder = {\n firstName: state.creditSafeUser.firstName,\n lastName: state.creditSafeUser.lastName,\n street: state.user.street,\n zip: state.user.zip,\n town: state.user.town,\n ssn: state.user.ssn,\n email: state.user.email,\n phone: state.user.phone,\n url: `${state.business === Business.string ? 'string' : state.business}-webk`,\n date: this.date,\n products: [\n ...state.cart.map(item => {\n const parts = item.parts.map(part => ({\n id: String(part.id),\n name: part.name,\n quantity: part.amount,\n rut: 0,\n rot: 0,\n }));\n return [\n {\n id: String(item.id),\n name: item.name,\n quantity: item.amount,\n rot: item.rot ? 1 : 0,\n rut: item.rut ? 1 : 0,\n },\n ...parts,\n ];\n }),\n ].flat(),\n creditSafe: state.creditSafeUser,\n customer: state.business,\n id_source: '',\n id_sub_source: '',\n seller_id: this.sellerID ?? '',\n referral_id: this.RefferalID ?? '',\n };\n\n const felixOrder = await postPerson(order);\n if (!felixOrder || !felixOrder.response?.scriptResult?.includes('OK')) {\n order = { ...order, felixStatus: 'error' };\n } else {\n order = { ...order, felixStatus: 'success' };\n }\n\n try {\n const { data: orderConfirm, status } = await postOrder(order);\n if (orderConfirm && status && status === 200) {\n state.step = 6;\n const el = this.el.closest('.hemfixarna_content');\n scrollToTop(el);\n } else {\n this.generalError = 'Något gick fel, försök igen senare';\n }\n } catch (error) {\n this.generalError = 'Något gick fel, försök igen senare';\n }\n this.loading = false;\n };\n\n handleSubmit = (e: Event) => {\n e.preventDefault();\n this.generalError = null;\n const validDate = this.date.length > 0;\n if (!validDate) {\n this.dateError = 'Ange ett giltigt datum';\n }\n const checkBoxes = Array.from(this.el.querySelectorAll('input[type=\"checkbox\"]'));\n const notValidTerms = checkBoxes.find(i => !(i as HTMLInputElement).checked);\n if (notValidTerms) {\n this.generalError = 'Du måste godkänna villkoren';\n }\n if (state.customer.source && state.selectSource) {\n if (!this.sellerID) {\n this.generalError = 'Ange säljare';\n return;\n }\n if (state.customer.source.sub_sources?.length && !this.selectedSubSource) {\n this.generalError = 'Välj underkälla';\n return;\n }\n }\n if (validDate && !notValidTerms) {\n this.sendOrder();\n }\n };\n\n componentWillLoad() {\n if (Boolean(state.user && state.user.street)) {\n state.checkoutStep = 2;\n }\n }\n\n render = () => {\n const dateLogo = getAssetPath(`./assets/date.svg`);\n const down = getAssetPath(`./assets/down.svg`);\n const loading = getAssetPath(`./assets/spinner.gif`);\n\n if (state.checkoutEdit) {\n return <hemfixarna-address />;\n } else if (state.checkoutStep === 1) {\n return <hemfixarna-getuser />;\n } else if (state.checkoutStep === 2) {\n return (\n <div class=\"mb-2\">\n <div class=\"hemfixarna_addressinfo\">\n <div>\n <p>{hideField(state.user.firstName)}</p>\n <p>{hideField(state.user.lastName)}</p>\n <p>{state.user.email}</p>\n <p>{state.user.phone}</p>\n </div>\n <div>\n <p>{hideField(state.user.street)}</p>\n <p>{hideField(state.user.zip)}</p>\n <p>{hideField(state.user.town)}</p>\n </div>\n <button onClick={() => (state.checkoutEdit = true)}>Behöver du ändra adressen?</button>\n </div>\n <form onSubmit={e => this.handleSubmit(e)}>\n <div>\n <img src={dateLogo} width={24} />\n <input\n class={`${this.date.length ? 'input_active' : ''}`}\n min={new Date().toISOString().split('T')[0]}\n onChange={e => this.handleChangeDate(e)}\n type=\"date\"\n name=\"date\"\n value={this.date}\n />\n <label htmlFor=\"date\">Tidigaste datum för hembesök</label>\n <img src={down} width={24} />\n </div>\n {this.dateError && <span>{this.dateError}</span>}\n {state.customer.source && state.selectSource ? (\n <Fragment>\n <p>\n Inloggad som:\n <strong> {state.customer.source.fieldData.So01_Name}</strong>\n </p>\n <label>\n Säljare (SäljarId)\n <input type=\"text\" value={this.sellerID} onChange={e => (this.sellerID = (e.target as HTMLInputElement).value)} />\n </label>\n <label>\n PartnerOrderID (RefferalID)\n <input type=\"text\" value={this.RefferalID} onChange={e => (this.RefferalID = (e.target as HTMLInputElement).value)} />\n </label>\n {state.customer.source.sub_sources?.length ? (\n <div>\n <select onChange={e => (this.selectedSubSource = (e.target as HTMLSelectElement).value)}>\n <option disabled selected value=\"null\">\n Välj underkälla\n </option>\n {state.customer.source.sub_sources.map(sub => (\n <option value={sub['So_SubSource::_id']}>{sub['So_SubSource::Sus01_Name']}</option>\n ))}\n </select>\n </div>\n ) : (\n <p>Det finns inga underkällor att välja</p>\n )}\n </Fragment>\n ) : null}\n <label class=\"hemfixarna_checkbox\">\n <input onChange={() => this.handleChangeTerms()} type=\"checkbox\" />\n <span innerHTML={state.options.terms} />\n </label>\n {state.cart\n .filter(i => i.terms_checkout?.length)\n .map(item => (\n <Fragment>\n <label class=\"hemfixarna_checkbox\">\n <input onChange={() => this.handleChangeTerms()} type=\"checkbox\" />\n <span>{item.terms_checkout}</span>\n </label>\n </Fragment>\n ))}\n {this.generalError && <span>{this.generalError}</span>}\n <div class={this.loading ? 'loading' : ''}>\n <input type=\"submit\" value={this.loading ? '' : 'Skicka bokning'} />\n <img width={20} height={20} src={loading} alt=\"spinner\" />\n </div>\n </form>\n </div>\n );\n }\n };\n}\n","@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600&display=swap');\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n$yellow: #fffaf2;\n$grey: #b7b7b7;\n$brown: #e9d7ca;\n$black: #474444;\n$white: #fff;\n$darkyellow: #fcd9c9;\n$pink: #f1ded6;\n$green: #25a710;\n$orange: #ec6632;\n$darkorange: #c84e18;\n\n$border: 1px solid $darkyellow;\n$greyBorder: 1px solid #e3e3e3;\n$border-radius: 4px;\n$box-shadow: 0px 4px 8px 0px #0000000a;\n$box-shadow-hover: 0px 8px 16px 2px #0000000a;\n$widgetBoxColor: 0px 2px 16px 0px #00000014;\n\n@mixin hover {\n &:hover {\n transition: 0.1s all cubic-bezier(0.465, 0.183, 0.153, 0.946);\n filter: brightness(1.02);\n transform: scale(1.01);\n box-shadow: $box-shadow-hover;\n }\n}\n\n@mixin cartLength {\n position: relative;\n span {\n position: absolute;\n background: $white;\n border-radius: 100%;\n width: 24px;\n height: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-weight: 600;\n font-size: 13px;\n line-height: 11px;\n top: -6px;\n right: -12px;\n }\n}\n\n@mixin mobile {\n @media (max-width: 768px) {\n @content;\n }\n}\n\n@mixin desktop {\n @media (min-width: 769px) {\n @content;\n }\n}\n\n* {\n box-sizing: border-box;\n}\n\n:host {\n font-family: 'Inter', sans-serif;\n input[type='text'] {\n padding: 16px;\n width: 100%;\n font-size: 16px;\n border: 1px solid $darkyellow;\n }\n .mb-2 {\n margin-bottom: 32px;\n }\n button {\n color: $black;\n }\n form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n position: relative;\n button {\n position: absolute;\n right: 0;\n top: -1rem;\n }\n img {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n pointer-events: none;\n &:first-of-type {\n left: 16px;\n }\n &:last-of-type {\n right: 16px;\n }\n }\n span {\n margin-top: -8px;\n color: $orange;\n }\n p {\n text-align: center;\n }\n p {\n margin: 0;\n }\n div {\n position: relative;\n label {\n pointer-events: none;\n position: absolute;\n left: 16px;\n top: 50%;\n transform: translateY(-50%);\n background: $white;\n padding: 4px;\n transition: 0.2s all cubic-bezier(0.465, 0.183, 0.153, 0.946);\n }\n input {\n padding: 16px;\n width: 100%;\n font-size: 16px;\n border: 1px solid $darkyellow;\n }\n input:focus ~ label,\n .input_active ~ label {\n top: 0;\n transform: translateY(-50%);\n background: linear-gradient(180deg, $yellow 50%, $white 50%);\n }\n }\n select {\n padding: 0.75rem 1rem;\n width: 100%;\n }\n }\n h1 {\n font-size: 24px;\n font-weight: 400;\n line-height: 32px;\n letter-spacing: -3%;\n text-align: left;\n margin: 0 0 8px;\n }\n h2 {\n margin: 0 0 24px;\n font-weight: 700;\n font-size: 20px;\n line-height: 28px;\n letter-spacing: -3%;\n }\n p {\n font-size: 16px;\n font-weight: 400;\n line-height: 24px;\n letter-spacing: -3%;\n }\n .hemfixarna {\n width: 100%;\n &_source {\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n img {\n width: 20px;\n }\n &--pw {\n max-width: 300px !important;\n input[type='password'] {\n padding: 0.5rem;\n }\n form {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n }\n }\n }\n &_contact {\n display: flex;\n gap: 16px;\n a {\n display: flex;\n align-items: center;\n gap: 8px;\n color: $black;\n text-decoration: none;\n font-weight: 600;\n font-size: 13px;\n &:hover {\n text-decoration: underline;\n }\n }\n &--horizontal {\n span {\n display: none;\n }\n @include desktop {\n span {\n display: initial;\n }\n }\n }\n }\n &_painting {\n > h2,\n p {\n text-align: center;\n padding: 0 16px;\n }\n > h2 {\n margin: 0 0 8px;\n }\n opacity: 0;\n padding: 0 1rem;\n animation: fadeIn 0.5s forwards 0.3s;\n }\n &_partnerlogo {\n max-height: 50px;\n min-height: 45px;\n object-fit: contain;\n max-width: 150px;\n @include desktop {\n max-width: 200px;\n }\n }\n &_nav {\n position: absolute;\n top: 0;\n width: 100dvw;\n left: 0;\n height: 80px;\n z-index: 9999;\n\n &--links {\n display: none !important;\n @include desktop {\n display: flex !important;\n }\n a {\n color: $orange;\n text-decoration: none;\n border: 1px solid rgba($color: $white, $alpha: 0.3);\n border-radius: 56px;\n padding: 8px 32px;\n text-transform: capitalize;\n }\n }\n > div {\n position: relative;\n overflow: hidden;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0 16px;\n @include desktop {\n padding: 0 32px;\n }\n > div {\n display: flex;\n gap: 32px;\n justify-content: space-between;\n }\n\n > img {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n z-index: -1;\n }\n }\n a {\n text-decoration: none;\n }\n p {\n color: $black;\n }\n p.with-bg {\n color: $white;\n }\n }\n &_standalone {\n .hemfixarna {\n &_backdrop {\n background: $yellow;\n opacity: 1;\n }\n &_modal {\n top: 80px;\n transform: translateX(-50%);\n border: none;\n height: calc(100dvh - 80px);\n opacity: 0;\n &--open {\n opacity: 1;\n }\n }\n }\n }\n .switch {\n position: relative;\n display: inline-block;\n width: 40px;\n height: 20px;\n }\n\n /* Hide default HTML checkbox */\n .switch input {\n opacity: 0;\n width: 0;\n height: 0;\n }\n\n /* The slider */\n .slider {\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: #ccc;\n -webkit-transition: 0.4s;\n transition: 0.4s;\n border-radius: 34px;\n }\n\n .slider:before {\n position: absolute;\n content: '';\n height: 18px;\n width: 18px;\n left: 2px;\n bottom: 1px;\n background-color: white;\n -webkit-transition: 0.4s;\n transition: 0.4s;\n border-radius: 50%;\n }\n\n input:checked + .slider {\n background-color: $darkyellow;\n }\n\n input:focus + .slider {\n box-shadow: 0 0 1px $darkyellow;\n }\n\n input:checked + .slider:before {\n -webkit-transform: translateX(18px);\n -ms-transform: translateX(18px);\n transform: translateX(18px);\n background: $orange;\n }\n\n &_maleribox {\n background: $white;\n box-shadow: $box-shadow;\n width: 100%;\n min-height: 132px;\n padding: 24px;\n display: flex;\n align-items: center;\n gap: 24px;\n text-align: left;\n @include hover;\n }\n\n &_checkbox {\n display: grid;\n grid-template-columns: 40px auto;\n font-size: 16px;\n font-weight: 400;\n line-height: 24px;\n letter-spacing: -3%;\n > span {\n transform: translateY(6px);\n }\n span,\n span p {\n color: $black;\n font-size: 14px;\n }\n p {\n text-align: left;\n }\n }\n\n &_info {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding: 32px;\n box-shadow: $box-shadow;\n border-radius: $border-radius;\n border: $border;\n h2 {\n margin: 0;\n }\n @include desktop {\n position: sticky;\n top: 0;\n }\n }\n\n &_infomodal {\n position: absolute;\n top: 40%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 100%;\n max-width: 80%;\n background: $yellow;\n border: $border;\n padding: 32px;\n z-index: 99;\n border-radius: $border-radius;\n box-shadow: $box-shadow;\n display: flex;\n flex-direction: column;\n gap: 16px;\n p,\n h4 {\n margin: 0;\n }\n button {\n background: $orange;\n color: $white;\n border-radius: 60px;\n font-size: 16px;\n padding: 8px 16px;\n }\n }\n\n &_addressinfo {\n padding: 16px 16px 64px;\n border: $border;\n position: relative;\n margin-bottom: 32px;\n display: grid;\n grid-template-columns: 1fr;\n gap: 8px;\n @include desktop {\n grid-template-columns: 1fr 1fr;\n }\n button {\n position: absolute;\n bottom: 16px;\n right: 16px;\n font-weight: 500;\n text-underline-offset: 2px;\n text-decoration: underline;\n }\n }\n\n &_part {\n background: $white;\n box-shadow: $box-shadow;\n display: grid;\n padding: 16px;\n grid-template-columns: auto 75px;\n }\n &_counter {\n display: flex;\n align-items: center;\n span {\n padding: 0 8px;\n }\n img {\n cursor: pointer;\n &:not(.disabled) {\n @include hover;\n }\n }\n }\n &_description {\n display: grid;\n gap: 16px;\n ul {\n list-style: disc;\n padding-right: 12px;\n transform: translateX(12px);\n }\n &--hidden {\n max-height: 140px;\n overflow: hidden;\n position: relative;\n cursor: pointer;\n &::after {\n content: '';\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: 128px;\n background: linear-gradient(180deg, rgba(255, 253, 250, 0), rgba(255, 253, 250, 0.46) 50%, $yellow);\n }\n }\n }\n &_terms {\n font-size: 14px;\n a {\n color: inherit;\n }\n }\n &_logo {\n height: 64px;\n }\n &_box {\n padding: 16px;\n display: flex;\n align-items: center;\n width: 100%;\n box-sizing: border-box;\n border-radius: 4px;\n gap: 16px 8px;\n border-radius: 4px;\n gap: 16px 8px;\n p,\n span {\n font-size: 15px;\n }\n .underline {\n text-decoration: underline;\n text-underline-offset: 2px;\n }\n .pointer {\n cursor: pointer;\n }\n .p-s {\n font-size: 12px;\n }\n > div {\n display: grid;\n gap: 8px;\n }\n &--standard {\n background: $yellow;\n border: $border;\n }\n &--alternative,\n &--alternative_2,\n &--alternative_3 {\n background: transparent;\n border: $greyBorder;\n }\n &--alternative_2,\n &--alternative_3 {\n box-shadow: $widgetBoxColor;\n }\n &--alternative_3 {\n justify-content: center;\n }\n }\n &_altbtn {\n display: flex !important;\n flex-direction: column;\n gap: 8px;\n align-items: center;\n margin-left: auto;\n }\n &_btn {\n margin-left: auto;\n }\n &_btn,\n &_buy,\n input[type='submit'] {\n border: none;\n border-radius: 60px;\n font-weight: 600;\n letter-spacing: 0.5px;\n line-height: 20px;\n box-shadow: $box-shadow;\n &:not(.disabled) {\n @include hover;\n }\n }\n div:has(> input[type='submit']) {\n position: relative;\n input {\n cursor: pointer;\n }\n img {\n display: none;\n }\n }\n .loading {\n cursor: default;\n opacity: 0.6;\n > img {\n display: initial !important;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n }\n &_btn {\n font-size: 14px;\n background: $darkorange;\n color: $white;\n padding: 16px 24px;\n white-space: nowrap;\n @include cartLength;\n span {\n background: $green;\n color: $white;\n right: 0 !important;\n }\n }\n &_buy,\n input[type='submit'] {\n font-size: 21px;\n background: $green;\n color: $white;\n padding: 16px 24px;\n }\n .disabled {\n opacity: 0.5;\n cursor: default;\n }\n &_modal {\n position: fixed;\n background: $yellow;\n border: $border;\n border-radius: $border-radius;\n top: 50%;\n left: 50%;\n z-index: 1000;\n transition: 0.1s all cubic-bezier(0.465, 0.183, 0.153, 0.946);\n transform: translate(-50%, -50%) scale(0.7);\n opacity: 0;\n height: 92%;\n width: 92%;\n max-width: 920px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n &--open {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n }\n &_backdrop {\n z-index: 999;\n position: fixed;\n background: $black;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n opacity: 0;\n transition:\n transform 0.1s cubic-bezier(0.465, 0.183, 0.153, 0.946),\n opacity 0.1s cubic-bezier(0.465, 0.183, 0.153, 0.946);\n &--open {\n opacity: 0.3;\n }\n }\n &_order {\n position: absolute;\n top: -1px;\n left: -1px;\n right: -1px;\n bottom: -1px;\n background-repeat: no-repeat !important;\n background-size: cover !important;\n background-position: center !important;\n display: grid;\n grid-template-columns: 1fr 1fr;\n padding: 48px 32px 64px;\n @include mobile {\n grid-template-columns: 1fr;\n grid-template-rows: 0 auto;\n }\n > div:last-of-type {\n background: $yellow;\n padding: 32px;\n display: flex;\n flex-direction: column;\n max-height: 100%;\n overflow: auto;\n }\n img {\n cursor: pointer;\n }\n button {\n margin: 16px 0;\n padding: 0;\n text-decoration: underline;\n text-underline-offset: 2px;\n font-size: 14px;\n font-weight: 600;\n }\n }\n &_cart {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 32px;\n @include mobile {\n grid-template-columns: 1fr;\n gap: 0;\n }\n &--right,\n &--left {\n h2 {\n display: flex;\n align-items: center;\n img {\n margin-top: 3.2px;\n }\n }\n }\n &--left {\n h2 {\n button {\n @include desktop {\n display: none;\n }\n }\n }\n }\n &--right {\n h2 {\n button {\n @include mobile {\n display: none;\n }\n }\n }\n }\n &--startfee {\n display: flex;\n justify-content: space-between;\n }\n &--rutrot {\n display: flex;\n justify-content: space-between;\n div {\n display: flex;\n gap: 16px;\n align-items: center;\n }\n }\n &--additional {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n border-top: $border;\n p {\n font-size: 14px;\n }\n strong {\n text-decoration: underline;\n text-underline-offset: 2px;\n cursor: pointer;\n position: relative;\n img {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n right: -24px;\n }\n }\n }\n &--price {\n border-top: $border;\n h3 {\n margin: 0;\n }\n padding: 16px;\n display: flex;\n justify-content: space-between;\n }\n &--item {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 16px 0;\n border-top: $border;\n span {\n font-size: 12px;\n }\n > div {\n display: flex;\n justify-content: space-between;\n > div {\n display: flex;\n align-items: center;\n gap: 16px;\n }\n button {\n color: $orange;\n }\n }\n }\n }\n &_categories {\n &--wrapper {\n gap: 32px;\n display: grid;\n grid-template-columns: 1fr 1fr;\n @include mobile {\n grid-template-columns: 1fr;\n }\n }\n display: flex;\n flex-direction: column;\n gap: 24px;\n li {\n position: relative;\n background: $white;\n border-radius: $border-radius;\n min-height: 132px;\n padding: 24px;\n box-shadow: $box-shadow;\n display: flex;\n align-items: center;\n gap: 24px;\n cursor: pointer;\n @include hover;\n > button {\n height: 100%;\n width: 100%;\n }\n .price {\n font-weight: 700;\n }\n }\n }\n &_content {\n height: 100%;\n overflow: auto;\n padding: 0 32px 64px;\n &--5 {\n padding-top: 16px;\n }\n &--painting {\n padding: 0;\n overflow: initial;\n }\n }\n &_crumbs {\n position: relative;\n padding: 16px 24px;\n border-bottom: $border;\n display: flex;\n justify-content: space-between;\n &--back {\n padding: 16px 24px 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n box-shadow: none !important;\n @include hover;\n }\n img {\n cursor: pointer;\n }\n .close {\n position: absolute;\n right: -16px;\n top: -16px;\n z-index: 9;\n -webkit-transform: translate3d(0, 0, 0);\n }\n .cart {\n display: flex;\n padding-left: 16px;\n img {\n cursor: inherit;\n }\n @include cartLength;\n &_active {\n cursor: pointer;\n span {\n background: $green;\n color: $white;\n }\n }\n }\n &--links {\n display: flex;\n align-items: center;\n gap: 16px;\n overflow: auto;\n @include desktop {\n &::-webkit-scrollbar {\n display: none;\n }\n\n &::-webkit-scrollbar-button {\n display: none;\n }\n -ms-overflow-style: none;\n }\n }\n &--right {\n display: flex;\n align-items: center;\n }\n button {\n white-space: nowrap;\n background: $pink;\n border-radius: 64px;\n padding: 12px 16px;\n font-size: 12px;\n font-weight: 600;\n letter-spacing: 0.3px;\n box-shadow: none !important;\n &:not(.active) {\n @include hover;\n }\n @include mobile {\n display: none;\n }\n }\n .active {\n background: $yellow;\n cursor: default;\n // border: 1px solid $pink;\n }\n }\n &_features {\n gap: 12px !important;\n li {\n display: flex;\n gap: 16px;\n align-items: center;\n }\n }\n &_address {\n margin-bottom: 16px;\n }\n &_product {\n display: grid;\n gap: 16px;\n &--link {\n font-weight: 700;\n color: $black;\n text-underline-offset: 4px;\n }\n &--left {\n gap: 32px;\n }\n &--right {\n gap: 32px;\n }\n &--price {\n margin-top: 4px;\n font-weight: 700;\n }\n &--total {\n text-align: center;\n margin: -16px 0;\n font-size: 21px;\n line-height: 28px;\n }\n &--item {\n background: $white;\n padding: 16px;\n display: grid;\n grid-template-columns: auto 75px;\n box-shadow: $box-shadow;\n }\n &--grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 32px;\n @include mobile {\n grid-template-columns: 1fr;\n }\n > div {\n display: flex;\n flex-direction: column;\n }\n ul {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n }\n p {\n margin: 0;\n }\n &--top {\n img {\n object-fit: contain;\n }\n > div {\n width: 100%;\n h1 {\n max-width: 80%;\n @include mobile {\n max-width: 100%;\n }\n }\n }\n display: flex;\n gap: 32px;\n h4 {\n margin-bottom: 8px;\n }\n }\n }\n }\n h5,\n p {\n margin: 0;\n }\n input[type='submit'] {\n cursor: pointer;\n }\n input[type='date'] ~ label {\n left: 56px;\n }\n input[type='date'] {\n border: 1px solid $darkyellow;\n padding-left: 64px;\n }\n input[type='checkbox'] {\n height: 18px;\n width: 18px;\n border: $border;\n }\n input[type='checkbox']:checked {\n background: red;\n }\n input[type='date']::-webkit-calendar-picker-indicator {\n background: transparent;\n bottom: 0;\n color: transparent;\n cursor: pointer;\n height: auto;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n width: auto;\n }\n button,\n a {\n cursor: pointer;\n background: none;\n border: none;\n }\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n}\n","import { Component, Element, Fragment, Listen, Prop, State, Watch, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\nimport { Business, Product, WidgetStyle } from '../../types';\nimport { getCustomer, getGreenDiscount, getOptions, getRot, getRut, loginCustomer } from '../../utils/api';\nimport { getProductPriceWithRotAndRut } from '../../utils/calc';\nimport { scrollToTop } from '../../utils/scroll';\n\n@Component({\n tag: 'hemfixarna-component',\n styleUrl: 'hemfixarna.scss',\n shadow: true,\n assetsDirs: ['assets'],\n})\nexport class HemfixarnaComponent {\n @State() modal: boolean = false;\n @State() showModal: boolean = false;\n @State() product: Product | null = null;\n @Prop() id?: string;\n @Prop() slug?: string;\n @Prop() business: Business;\n @Prop() widgetStyle: WidgetStyle = WidgetStyle.standard;\n @Prop() buttonColor?: string;\n @Prop() buttonBg?: string;\n @State() proppedProduct: Product | null = null;\n @State() loginSourceError: null | string = null;\n\n @Element() private el: HTMLElement;\n\n loadCategoryOrProduct(id: string) {\n this.proppedProduct = null;\n if (id.startsWith('c-')) {\n const categories = [...state.customer.categories, ...state.customer.categories.map(c => c.sub_categories ?? [])].flat();\n const category = categories.find(c => c && c.id === id.replace('c-', ''));\n if (category) {\n state.selectedCustomerCategory = category;\n state.step = 2;\n }\n } else {\n const products = state.customer.categories\n .map(c => (c.show_products ? c.products : c.sub_categories ? c.sub_categories.map(c => c.products) : []))\n .flat()\n .flat();\n const product = products.find(p => p && p.fields.ID === parseInt(id));\n if (product) {\n state.selectedProduct = product.fields;\n state.step = 4;\n this.proppedProduct = product.fields;\n }\n }\n }\n\n @Watch('id')\n async watchIdChange(id: string) {\n if (id && state.customer) {\n if (id === 'maleri') {\n state.maleri = true;\n state.step = 4;\n } else {\n this.loadCategoryOrProduct(id);\n }\n }\n }\n\n async componentWillLoad() {\n state.business = this.business;\n const cart = window.sessionStorage.getItem(`hemfixarna-${this.business}-cart`);\n if (cart) {\n state.cart = JSON.parse(cart);\n }\n const user = window.sessionStorage.getItem(`hemfixarna-${this.business}-user`);\n if (user) {\n state.user = JSON.parse(user);\n }\n const creditSafeUser = window.sessionStorage.getItem(`hemfixarna-${this.business}-creditSafeUser`);\n if (creditSafeUser) {\n state.creditSafeUser = JSON.parse(creditSafeUser);\n }\n\n const [options, rut, rot, greenDiscount] = await Promise.all([getOptions(), getRut(), getRot(), getGreenDiscount()]);\n\n try {\n const customer = await getCustomer(this.business);\n if (customer?.code === 'not_found') {\n console.warn('customer not found');\n } else if (customer) {\n state.customer = customer;\n const id = this.id || this.slug;\n if (id) {\n if (id === 'maleri') {\n state.maleri = true;\n state.step = 4;\n } else {\n this.loadCategoryOrProduct(id);\n }\n }\n }\n } catch (error) {\n console.warn('customer not found');\n }\n\n state.rotOptions = rot;\n state.rutOptions = rut;\n state.greenOptions = greenDiscount;\n state.options = options;\n\n if (localStorage.getItem('select_source')) {\n state.selectSource = true;\n }\n }\n\n triggerScrollTotop = () => {\n const el = this.el.shadowRoot.querySelector('.hemfixarna_content');\n scrollToTop(el);\n };\n\n // Open close modal && click outside event\n openModal() {\n this.modal = true;\n setTimeout(() => {\n this.showModal = true;\n }, 50);\n }\n closeModal() {\n this.showModal = false;\n setTimeout(() => {\n this.modal = false;\n }, 200);\n }\n @Listen('click')\n handleClick(e: Event) {\n if ((e?.composedPath()[0] as HTMLElement).classList.contains('hemfixarna_backdrop')) {\n this.closeModal();\n }\n const infomodal = this.el.shadowRoot.querySelector('.hemfixarna_infomodal');\n if (infomodal) {\n const isClickInside = infomodal.contains(e.composedPath()[0] as HTMLInputElement);\n if (!isClickInside) {\n state.modal = null;\n }\n }\n }\n\n async handleLogin() {\n this.loginSourceError = null;\n const passwordInput = this.el.shadowRoot.querySelector('input[type=\"password\"]');\n const password = (passwordInput as HTMLInputElement).value;\n\n try {\n const status = await loginCustomer({ id: state.customer.ID, password: password });\n if (status === 200) {\n state.showSourcePasswordPrompt = false;\n state.selectSource = true;\n } else {\n this.loginSourceError = 'Fel lösenord';\n }\n } catch (error) {\n console.log(error);\n this.loginSourceError = 'Fel lösenord';\n }\n }\n\n getCartLength() {\n return state.cart.reduce((acc, curr) => acc + curr.amount, 0);\n }\n\n render() {\n const logo = getAssetPath(`./assets/hemfixarna.svg`);\n const pensel = getAssetPath(`./assets/pensel.svg`);\n const monteringLogo = getAssetPath(`./assets/montering.svg`);\n\n return (\n <div class={`hemfixarna hemfixarna-${this.business}`}>\n <div class={`hemfixarna_box hemfixarna_box--${this.widgetStyle}`}>\n {[WidgetStyle.alternative_2, WidgetStyle.alternative_3].includes(this.widgetStyle) ? (\n <img src={this.id === 'maleri' ? pensel : monteringLogo} alt=\"montering logo\" width={32} height={32} />\n ) : null}\n <div>\n <div>\n <p\n onClick={() => this.openModal()}\n class={`pointer ${[WidgetStyle.alternative_2, WidgetStyle.alternative_3].includes(this.widgetStyle) && state.selectedProduct ? 'underline' : ''}`}\n >\n {this.id === 'maleri' ? (\n <span>Beräkna fast pris på måleri & tapetsering här</span>\n ) : (\n <Fragment>\n {!state.selectedCustomerCategory && !this.product && !this.proppedProduct ? (\n <Fragment>\n {state.customer?.widget_title ? (\n <span>{state.customer.widget_title}</span>\n ) : (\n <span>\n Montering/Installation - <strong class=\"underline\">se priser här</strong>\n </span>\n )}\n </Fragment>\n ) : (\n <Fragment>\n {this.product?.title || this.proppedProduct?.title || state.selectedCustomerCategory?.widget_title || (\n <span>\n Montering\n <wbr />\n /Installation {state.selectedCustomerCategory?.name ?? 'på plats'} - <strong class=\"underline\">se priser här</strong>\n </span>\n )}\n {this.proppedProduct && !this.product?.invoice && !this.proppedProduct?.invoice ? (\n <span>\n {' från'} <strong>{getProductPriceWithRotAndRut(this.proppedProduct || this.product)}kr</strong>\n </span>\n ) : null}\n </Fragment>\n )}\n </Fragment>\n )}\n </p>\n </div>\n {this.widgetStyle === WidgetStyle.standard ? <img src={logo} width={104} /> : null}\n {this.widgetStyle === WidgetStyle.alternative ? (\n <span class=\"p-s\">\n Utförs av <strong>Hemfixarna</strong>\n </span>\n ) : null}\n </div>\n {[WidgetStyle.standard, WidgetStyle.alternative].includes(this.widgetStyle) ? (\n <button\n onClick={() => this.openModal()}\n class=\"hemfixarna_btn\"\n style={{\n color: this.buttonColor?.startsWith('#') || !this.buttonColor?.length ? this.buttonColor : `#${this.buttonColor}`,\n backgroundColor: this.buttonBg?.startsWith('#') || !this.buttonBg?.length ? this.buttonBg : `#${this.buttonBg}`,\n }}\n >\n Beställ här\n {this.getCartLength() > 0 && <span>{this.getCartLength()}</span>}\n </button>\n ) : null}\n {WidgetStyle.alternative_2 === this.widgetStyle ? (\n <div class=\"hemfixarna_altbtn\">\n <strong class=\"p-s\">Utförs av</strong>\n <img src={logo} alt=\"hemfixarna logo\" width={98} />\n </div>\n ) : null}\n </div>\n {this.modal && (\n <div>\n <div class={`hemfixarna_modal ${this.showModal ? 'hemfixarna_modal--open' : ''}`}>\n {state.modal && (\n <div class=\"hemfixarna_infomodal\">\n {state.modal.title && <h2>{state.modal.title}</h2>}\n {state.modal.text.map((t: string) => (\n <p innerHTML={t}></p>\n ))}\n <div>\n <button onClick={() => (state.modal = null)}>Stäng</button>\n </div>\n </div>\n )}\n {state.showSourcePasswordPrompt ? (\n <div class=\"hemfixarna_source--pw hemfixarna_infomodal\">\n <form\n onSubmit={e => {\n e.preventDefault();\n this.handleLogin();\n }}\n >\n <input type=\"password\" placeholder=\"Lösenord\" />\n <input type=\"submit\" value=\"Logga in\" />\n {this.loginSourceError && <span>Fel lösenord</span>}\n </form>\n </div>\n ) : null}\n {state.customer && <hemfixarna-breadcrumbs closeModal={() => this.closeModal()} />}\n <div class={`hemfixarna_content hemfixarna_content--${state.step} ${state.step === 4 && state.maleri ? 'hemfixarna_content--painting' : ''}`}>\n {state.step < 4 && <hemfixarna-start />}\n {/* // IF SELECTED PRODUCT (step 4) */}\n {state.step === 4 && <hemfixarna-product />}\n {/* // IF CHECKOUT (step 5) */}\n {state.step === 5 && <hemfixarna-cart />}\n {/* // IF ORDER CONFIRM (step 6) */}\n {state.step === 6 && <hemfixarna-order />}\n </div>\n </div>\n <div class={`hemfixarna_backdrop ${this.showModal ? 'hemfixarna_backdrop--open' : ''}`}></div>\n </div>\n )}\n </div>\n );\n }\n}\n","import { Component, Prop, h } from '@stencil/core';\nimport state from '../../store';\n\n@Component({\n tag: 'hemfixarna-contact',\n shadow: false,\n})\nexport class HemfixarnaInfo {\n @Prop() vertical?: boolean = false;\n\n render() {\n return (\n <div class={`hemfixarna_contact ${this.vertical ? 'hemfixarna_contact--vertical' : 'hemfixarna_contact--horizontal'}`}>\n {state.customer.source ? (\n <div\n onClick={() => {\n if (!state.selectSource) {\n state.showSourcePasswordPrompt = true;\n }\n }}\n class=\"hemfixarna_source\"\n >\n {state.selectSource ? (\n <svg viewBox=\"0 0 1024 1024\" fill=\"#C84E18\" height=\"1em\" width=\"1em\">\n <path d=\"M832 464H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v68c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-68c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM540 701v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 1156 0z\" />\n </svg>\n ) : (\n <svg viewBox=\"0 0 1024 1024\" fill=\"#C84E18\" height=\"1em\" width=\"1em\">\n <path d=\"M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM540 701v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 1156 0zm152-237H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224z\" />\n </svg>\n )}\n </div>\n ) : null}\n <a href=\"tel:0770-220 720\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7 4V20H17V4H7ZM6 2H18C18.5523 2 19 2.44772 19 3V21C19 21.5523 18.5523 22 18 22H6C5.44772 22 5 21.5523 5 21V3C5 2.44772 5.44772 2 6 2ZM12 17C12.5523 17 13 17.4477 13 18C13 18.5523 12.5523 19 12 19C11.4477 19 11 18.5523 11 18C11 17.4477 11.4477 17 12 17Z\"\n fill=\"#C84E18\"\n />\n </svg>\n <span>0770-220 720</span>\n </a>\n <a href=\"https://hemfixarna.se/kundservice/\" target=\"_blank\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_1001_894)\">\n <path\n d=\"M21 12.22C21 6.73 16.74 3 12 3C7.31 3 3 6.65 3 12.28C2.4 12.62 2 13.26 2 14V16C2 17.1 2.9 18 4 18H5V11.9C5 8.03 8.13 4.9 12 4.9C15.87 4.9 19 8.03 19 11.9V19H11V21H19C20.1 21 21 20.1 21 19V17.78C21.59 17.47 22 16.86 22 16.14V13.84C22 13.14 21.59 12.53 21 12.22Z\"\n fill=\"#C84E18\"\n />\n <path d=\"M9 14C9.55228 14 10 13.5523 10 13C10 12.4477 9.55228 12 9 12C8.44772 12 8 12.4477 8 13C8 13.5523 8.44772 14 9 14Z\" fill=\"#C84E18\" />\n <path d=\"M15 14C15.5523 14 16 13.5523 16 13C16 12.4477 15.5523 12 15 12C14.4477 12 14 12.4477 14 13C14 13.5523 14.4477 14 15 14Z\" fill=\"#C84E18\" />\n <path\n d=\"M18 11.03C17.52 8.18 15.04 6 12.05 6C9.01997 6 5.75997 8.51 6.01997 12.45C8.48997 11.44 10.35 9.24 10.88 6.56C12.19 9.19 14.88 11 18 11.03Z\"\n fill=\"#C84E18\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_1001_894\">\n <rect width=\"24\" height=\"24\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <span>Kundservice</span>\n </a>\n </div>\n );\n }\n}\n","@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600&display=swap');\n\n:host {\n font-family: 'Inter', sans-serif;\n\n .hemfixarna {\n &_widgetstyles {\n label {\n cursor: pointer;\n }\n > div {\n display: flex;\n gap: 1rem;\n }\n h5 {\n margin: 1rem 0;\n }\n }\n &_example {\n margin-bottom: 16px;\n background: #000;\n padding: 16px;\n color: #fff;\n display: flex;\n justify-content: space-between;\n cursor: pointer;\n max-width: 500px;\n box-sizing: border-box;\n position: relative;\n\n &--tooltip {\n background: #000;\n top: -48px;\n font-size: 16px;\n left: 40%;\n color: white;\n padding: 8px;\n position: absolute;\n opacity: 0;\n &::after {\n content: '';\n position: absolute;\n top: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n border-color: #000 transparent transparent transparent;\n }\n }\n &:hover {\n .hemfixarna_example--tooltip {\n opacity: 1;\n }\n }\n p {\n font-size: 14px;\n }\n img {\n filter: invert(1);\n }\n }\n &_install {\n display: grid;\n gap: 8px;\n margin-top: 16px;\n }\n &_product--label {\n background: #e1e0f5;\n }\n &_categories {\n max-height: 100%;\n overflow: auto;\n position: relative;\n &--label {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px;\n button {\n background: #3f3a92;\n border: none;\n font-weight: 600;\n padding: 3.2px 9.6px;\n border-radius: 10px;\n margin-right: 8px;\n color: #ece8e8;\n &:active {\n transform: scale(0.95);\n }\n }\n &--big {\n font-weight: 600;\n border-bottom: 1px solid black;\n }\n }\n }\n }\n p {\n margin: 0;\n }\n span {\n color: darkolivegreen;\n font-size: 10px;\n }\n button {\n cursor: pointer;\n }\n > div:not(.hemfixarna_hosted) {\n grid-template-columns: 1fr 1fr;\n }\n .hemfixarna_hosted {\n .hemfixarna_scripts {\n display: none;\n }\n }\n > div {\n display: grid;\n gap: 32px;\n width: 100%;\n height: 100vh;\n place-items: center;\n overflow: hidden;\n padding: 16px 32px;\n box-sizing: border-box;\n > * {\n width: 100%;\n }\n > div {\n max-width: 500px;\n }\n ul {\n margin: 0;\n padding: 0;\n list-style: none;\n ul {\n gap: 1px;\n display: grid;\n }\n li {\n padding-left: 16px;\n background: #fff;\n }\n }\n }\n}\n","import { Component, Fragment, State, Watch, getAssetPath, h } from '@stencil/core';\nimport { Business, Category, Customer, WidgetStyle } from '../../types';\nimport { getCustomer, loginCustomer } from '../../utils/api';\nimport { getApiUrl } from '../../utils/enviroment';\nimport { isBusiness } from '../../utils/types';\n\ninterface ColorAccessibility {\n small: string;\n bold: string;\n large: string;\n overall: string;\n contrast: string;\n}\n\n@Component({\n tag: 'hemfixarna-demo',\n styleUrl: 'hemfixarna-demo.scss',\n shadow: true,\n})\nexport class MyComponent {\n @State() selectedSlug: string;\n @State() selectedID: string;\n @State() tooltipText: string = 'Kopiera till urklipp';\n @State() tree: Category | null = null;\n @State() customer: Customer | null = null;\n @State() widgetStyle: WidgetStyle = WidgetStyle.standard;\n @State() buttonBg: string = '';\n @State() buttonColor: string = '';\n @State() partner: Business | undefined = undefined;\n @State() colorAccessibility?: ColorAccessibility = undefined;\n @State() loggedIn: boolean = false;\n @State() loginError: boolean = false;\n private debounce?: number = null;\n\n @Watch('buttonBg')\n @Watch('buttonColor')\n debouncedFunction() {\n if (this.debounce !== null) {\n clearTimeout(this.debounce);\n this.debounce = null;\n }\n\n this.debounce = window.setTimeout(() => {\n this.checkColorAccessibility();\n this.debounce = null;\n }, 1500);\n }\n\n async checkColorAccessibility() {\n const defaultTextColor = '#fff';\n const defaultBgColor = '#c84e18';\n const firstColor = this.buttonBg.length ? (this.buttonBg.startsWith('#') ? this.buttonBg : `#${this.buttonBg}`) : defaultBgColor;\n const secondColor = this.buttonColor.length ? (this.buttonColor.startsWith('#') ? this.buttonColor : `#${this.buttonColor}`) : defaultTextColor;\n try {\n const response = await fetch('https://www.aremycolorsaccessible.com/api/are-they', {\n mode: 'cors',\n method: 'POST',\n body: JSON.stringify({ colors: [firstColor, secondColor] }),\n });\n\n if (!response) {\n throw new Error('Network response was not ok');\n }\n\n const json = await response.json();\n if (json && (json satisfies ColorAccessibility)) {\n this.colorAccessibility = json;\n }\n } catch (error) {\n console.warn('Error fetching color accessibility:', error);\n }\n }\n\n getColor(rating: string) {\n switch (rating) {\n case 'AAA':\n return 'green';\n case 'AA':\n return 'orange';\n case 'A':\n return 'yellow';\n case 'Fail':\n return 'red';\n default:\n return 'black';\n }\n }\n\n async componentWillLoad() {\n const partner = window.location.pathname.replace('/', '');\n if (!isBusiness(partner) && partner) return;\n this.partner = partner ? (partner as Business) : Business.kund;\n const customer = await getCustomer(this.partner);\n if (customer.code !== 'not_found' && customer) {\n this.customer = customer;\n if (!this.customer.password_protected || window.localStorage.getItem(`${this.customer.ID}-loggedin`)) {\n this.loggedIn = true;\n }\n }\n }\n\n getExample() {\n return `<hemfixarna-component business=\"${this.partner}\"${this.selectedSlug ? ` slug=\"${this.selectedSlug}\" ` : ''}${this.selectedID ? ` id=\"${this.selectedID}\" ` : ''} ${\n this.widgetStyle === WidgetStyle.standard ? '' : `widget-style=\"${this.widgetStyle}\"`\n } ${this.buttonColor.length ? `button-color=\"${this.buttonColor}\"` : ''} ${this.buttonBg.length ? `button-bg=\"${this.buttonBg}\"` : ''}></hemfixarna-component>`;\n }\n\n copyExample() {\n navigator.clipboard.writeText(this.getExample());\n this.tooltipText = 'Snippet kopierad';\n setTimeout(() => {\n this.tooltipText = 'Kopiera till urklipp';\n }, 2000);\n }\n\n cdnLink = '<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm//hemfixarna-web-components@latest/dist/hemfixarna-components/hemfixarna-components.esm.js\"></script>';\n\n copyCdn() {\n navigator.clipboard.writeText(this.cdnLink);\n this.tooltipText = 'Text kopierad';\n setTimeout(() => {\n this.tooltipText = 'Kopiera till urklipp';\n }, 2000);\n }\n\n copyNpmInstall() {\n navigator.clipboard.writeText('npm i hemfixarna-web-components');\n this.tooltipText = 'Text kopierad';\n setTimeout(() => {\n this.tooltipText = 'Kopiera till urklipp';\n }, 2000);\n }\n\n showMaleri() {\n const allCategories = this.customer?.categories.map(c => (c.sub_categories ? c.sub_categories : c)).flat();\n return allCategories?.some(c => c.add_painting);\n }\n\n async handleLogin() {\n const shadowHost = document.querySelector('hemfixarna-demo');\n const shadowRoot = shadowHost.shadowRoot;\n const passwordInput = shadowRoot.querySelector('input[type=\"password\"]');\n const password = (passwordInput as HTMLInputElement).value;\n\n this.loginError = false;\n try {\n const status = await loginCustomer({ id: this.customer.ID, password: password });\n if (status === 200) {\n this.loggedIn = true;\n window.localStorage.setItem(`${this.customer.ID}-loggedin`, 'true');\n } else {\n this.loginError = true;\n }\n } catch (error) {\n console.log(error);\n this.loginError = true;\n }\n }\n\n render() {\n const copy = getAssetPath(`./assets/copy.png`);\n\n return this.customer ? (\n <Fragment>\n {this.loggedIn ? (\n <div class={this.customer?.at_hemfixarna ? 'hemfixarna_hosted' : ''}>\n <div class=\"hemfixarna_scripts\">\n <div onClick={() => this.copyExample()} class=\"hemfixarna_example\">\n <p>{this.getExample()}</p>\n <img src={copy} height={20} />\n <span class=\"hemfixarna_example--tooltip\">{this.tooltipText}</span>\n </div>\n <hemfixarna-component\n business={this.partner}\n buttonBg={this.buttonBg}\n buttonColor={this.buttonColor}\n widgetStyle={this.widgetStyle}\n id={this.selectedID}\n ></hemfixarna-component>\n <div class=\"hemfixarna_install\">\n <div onClick={() => this.copyCdn()} class=\"hemfixarna_example\">\n <p>{this.cdnLink}</p>\n <span class=\"hemfixarna_example--tooltip\">{this.tooltipText}</span>\n <img src={copy} height={20} />\n </div>\n </div>\n <div class=\"hemfixarna_widgetstyles\">\n <h5>Widget styles</h5>\n <div>\n {Object.values(WidgetStyle).map(style => (\n <label key={style}>\n <input type=\"radio\" value={style} checked={this.widgetStyle === style} onChange={() => (this.widgetStyle = style)} />\n {style}\n </label>\n ))}\n </div>\n <div>\n <div>\n <h5>Button background color</h5>\n <input type=\"text\" value={this.buttonBg} onInput={e => (this.buttonBg = (e.target as HTMLInputElement).value)} />\n </div>\n <div>\n <h5>Button text color</h5>\n <input type=\"text\" value={this.buttonColor} onInput={e => (this.buttonColor = (e.target as HTMLInputElement).value)} />\n </div>\n </div>\n </div>\n <span>Write an hexa code no # needed</span>\n {this.colorAccessibility ? (\n <div>\n <h5>Tillgänglighetsrapport</h5>\n <div>\n <strong>Liten text:</strong>\n <span style={{ color: this.getColor(this.colorAccessibility.small) }}>{this.colorAccessibility.small}</span>\n <br />\n <strong>Fet text:</strong>\n <span style={{ color: this.getColor(this.colorAccessibility.bold) }}>{this.colorAccessibility.bold}</span>\n <br />\n <strong>Stor text:</strong>\n <span style={{ color: this.getColor(this.colorAccessibility.large) }}>{this.colorAccessibility.large}</span>\n <br />\n <strong>Kontrastförhållande:</strong> {this.colorAccessibility.contrast}\n </div>\n </div>\n ) : null}\n </div>\n <ul class=\"hemfixarna_categories\">\n <div>\n {this.customer.logo ? (\n <div style={{ width: '100%', display: 'flex', justifyContent: 'center' }}>\n <img style={{ maxWidth: '250px', height: 'auto', margin: '0 auto 2rem' }} src={this.customer.logo.url} alt={this.customer.post_title} />\n </div>\n ) : null}\n {this.showMaleri() ? (\n <li>\n <div class=\"hemfixarna_categories--label hemfixarna_categories--label--big\">\n <div>\n <p>Måleriverktyget</p>\n <span>maleri</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText('maleri')}>Kopiera ID</button>\n {this.customer.at_hemfixarna ? (\n <button onClick={() => navigator.clipboard.writeText(`${getApiUrl()}/partner/${this.customer.post_name}?id=maleri`)}>Kopiera URL</button>\n ) : (\n <button onClick={() => (this.selectedID = 'maleri')}>Ladda måleri</button>\n )}\n </div>\n </div>\n </li>\n ) : null}\n {this.customer.categories.map(c => (\n <li>\n <div class=\"hemfixarna_categories--label hemfixarna_categories--label--big\">\n <div>\n <p>{c.name}</p>\n <span>{`c-${c.id}`}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(`c-${c.id}`)}>Kopiera ID</button>\n {this.customer.at_hemfixarna ? (\n <button onClick={() => navigator.clipboard.writeText(`${getApiUrl()}/partner/${this.customer.post_name}?id=c-${c.id}`)}>Kopiera URL</button>\n ) : (\n <button onClick={() => (this.selectedID = `c-${c.id}`)}>Ladda kategori</button>\n )}\n </div>\n </div>\n {c.show_products && c.products ? (\n <ul>\n {c.products.map(p => (\n <li>\n <div class=\"hemfixarna_categories--label hemfixarna_product--label\">\n <div>\n <p>{p.fields.title}</p>\n <span>{p.fields.ID}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(String(p.fields.ID))}>Kopiera ID</button>\n {this.customer.at_hemfixarna ? (\n <button onClick={() => navigator.clipboard.writeText(`${getApiUrl()}/partner/${this.customer.post_name}?id=${p.fields.ID}`)}>Kopiera URL</button>\n ) : (\n <button onClick={() => (this.selectedID = String(p.fields.ID))}>Ladda produkt</button>\n )}\n </div>\n </div>\n </li>\n ))}\n </ul>\n ) : (\n <ul>\n {c.sub_categories &&\n c.sub_categories.map(sc => (\n <li>\n <div class=\"hemfixarna_categories--label\">\n <div>\n <p>{sc.name}</p>\n <span>{`c-${sc.id}`}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(`c-${sc.id}`)}>Kopiera ID</button>\n {this.customer.at_hemfixarna ? (\n <button onClick={() => navigator.clipboard.writeText(`${getApiUrl()}/partner/${this.customer.post_name}?id=c-${c.id}`)}>Kopiera URL</button>\n ) : (\n <button onClick={() => (this.selectedID = `c-${sc.id}`)}>Ladda kategori</button>\n )}\n </div>\n </div>\n <ul>\n {sc.products.map(p => (\n <li>\n <div class=\"hemfixarna_categories--label hemfixarna_product--label\">\n <div>\n <p>{p.fields.title}</p>\n <span>{p.fields.ID}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(String(p.fields.ID))}>Kopiera ID</button>\n {this.customer.at_hemfixarna ? (\n <button onClick={() => navigator.clipboard.writeText(`${getApiUrl()}/partner/${this.customer.post_name}?id=${p.fields.ID}`)}>\n Kopiera URL\n </button>\n ) : (\n <button onClick={() => (this.selectedID = String(p.fields.ID))}>Ladda produkt</button>\n )}\n </div>\n </div>\n </li>\n ))}\n </ul>\n </li>\n ))}\n </ul>\n )}\n </li>\n ))}\n </div>\n </ul>\n </div>\n ) : (\n <div>\n <form\n onSubmit={e => {\n e.preventDefault();\n this.handleLogin();\n }}\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: '1rem',\n maxWidth: '300px',\n margin: 'auto',\n padding: '20px',\n border: '1px solid #ccc',\n borderRadius: '5px',\n gridColumn: 'span 2',\n }}\n >\n <input type=\"password\" placeholder=\"Lösenord\" />\n <button type=\"submit\">Logga in</button>\n {this.loginError && <span>Fel lösenord</span>}\n </form>\n </div>\n )}\n </Fragment>\n ) : (\n <h1\n style={{\n textAlign: 'center',\n margin: 'auto',\n padding: '20px',\n fontSize: '24px',\n fontWeight: 'bold',\n color: 'red',\n }}\n >\n No customer found\n </h1>\n );\n }\n}\n","// src/errors.ts\nvar PersonnummerError = class extends Error {\n constructor() {\n super(\"Invalid swedish personal identity number\");\n }\n};\n\n// src/utils.ts\nvar compareAsc = (dateLeft, dateRight) => {\n const diff = dateLeft.getTime() - dateRight.getTime();\n return diff < 0 ? -1 : diff > 0 ? 1 : diff;\n};\nvar diffInYears = (dateLeft, dateRight) => {\n const sign = compareAsc(dateLeft, dateRight);\n const yearDiff = Math.abs(dateLeft.getFullYear() - dateRight.getFullYear());\n dateLeft.setFullYear(dateLeft.getFullYear() - sign * yearDiff);\n const isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n const result = sign * (yearDiff - +isLastYearNotFull);\n return result === 0 ? 0 : result;\n};\nvar luhn = (str) => {\n let sum = 0;\n str += \"\";\n for (let i = 0, l = str.length; i < l; i++) {\n let v = parseInt(str[i]);\n v *= 2 - i % 2;\n if (v > 9) {\n v -= 9;\n }\n sum += v;\n }\n return Math.ceil(sum / 10) * 10 - sum;\n};\nvar testDate = (year, month, day) => {\n month -= 1;\n const date = new Date(year, month, day);\n return !(date.getFullYear() !== year || date.getMonth() !== month || date.getDate() !== day);\n};\n\n// src/index.ts\nvar Personnummer = class {\n /**\n * Personnummer constructor.\n *\n * @param {string} pin\n * @param {object} options\n */\n constructor(pin, options) {\n /**\n * Personnummer century.\n *\n * @var {string}\n */\n this._century = \"\";\n /**\n * Personnummer full year.\n *\n * @var {string}\n */\n this._fullYear = \"\";\n /**\n * Personnummer year.\n *\n * @var {string}\n */\n this._year = \"\";\n /**\n * Personnummer month.\n *\n * @var {string}\n */\n this._month = \"\";\n /**\n * Personnummer day.\n *\n * @var {string}\n */\n this._day = \"\";\n /**\n * Personnummer seperator.\n *\n * @var {string}\n */\n this._sep = \"\";\n /**\n * Personnumer first three of the last four numbers.\n *\n * @var {string}\n */\n this._num = \"\";\n /**\n * The last number of the personnummer.\n *\n * @var {string}\n */\n this._check = \"\";\n this.parse(pin, {\n allowCoordinationNumber: true,\n allowInterimNumber: false,\n ...options\n });\n }\n /**\n * Get century.\n *\n * @return {string}\n */\n get century() {\n return this._century;\n }\n /**\n * Get age.\n *\n * @return {string}\n */\n get fullYear() {\n return this._fullYear;\n }\n /**\n * Get age.\n *\n * @return {string}\n */\n get year() {\n return this._year;\n }\n /**\n * Get month.\n *\n * @return {string}\n */\n get month() {\n return this._month;\n }\n /**\n * Get day.\n *\n * @return {string}\n */\n get day() {\n return this._day;\n }\n /**\n * Get sep.\n *\n * @return {string}\n */\n get sep() {\n return this._sep;\n }\n /**\n * Get num.\n *\n * @return {string}\n */\n get num() {\n return this._num;\n }\n /**\n * Get check.\n *\n * @return {string}\n */\n get check() {\n return this._check;\n }\n /**\n * Parse personnummer.\n *\n * @param {string} pin\n * @param {object} options\n *\n * @return {Personnummer}\n */\n static parse(pin, options) {\n return new Personnummer(pin, options);\n }\n /**\n * Validate a Swedish personal identity number.\n *\n * @param {string} str\n * @param {object} options\n *\n * @return {boolean}\n */\n static valid(pin, options) {\n try {\n Personnummer.parse(pin, options);\n return true;\n } catch (e) {\n return false;\n }\n }\n /**\n * Parse personnummer and set class properties.\n *\n * @param {string} pin\n * @param {object} options\n */\n parse(pin, options) {\n if (pin.length < 10 || pin.length > 13) {\n throw new PersonnummerError();\n }\n const reg = /^(\\d{2}){0,1}(\\d{2})(\\d{2})(\\d{2})([+-]?)((?!000)\\d{3}|[TRSUWXJKLMN]\\d{2})(\\d)$/;\n const match = reg.exec(pin);\n if (!match) {\n throw new PersonnummerError();\n }\n const century = match[1];\n const year = match[2];\n const month = match[3];\n const day = match[4];\n const sep = match[5];\n const num = match[6];\n const check = match[7];\n if (typeof century === \"undefined\" || !century.length) {\n const d = /* @__PURE__ */ new Date();\n let baseYear = 0;\n if (sep === \"+\") {\n this._sep = \"+\";\n baseYear = d.getFullYear() - 100;\n } else {\n this._sep = \"-\";\n baseYear = d.getFullYear();\n }\n this._century = (\"\" + (baseYear - (baseYear - parseInt(year)) % 100)).substr(0, 2);\n } else {\n this._century = century;\n if ((/* @__PURE__ */ new Date()).getFullYear() - parseInt(century + year, 10) < 100) {\n this._sep = \"-\";\n } else {\n this._sep = \"+\";\n }\n }\n this._year = year;\n this._fullYear = this._century + year;\n this._month = month;\n this._day = day;\n this._num = num;\n this._check = check;\n if (!this.valid()) {\n throw new PersonnummerError();\n }\n if (!(options == null ? void 0 : options.allowCoordinationNumber) && this.isCoordinationNumber()) {\n throw new PersonnummerError();\n }\n if (!(options == null ? void 0 : options.allowInterimNumber) && this.isInterimNumber()) {\n throw new PersonnummerError();\n }\n }\n /**\n * Validate a Swedish personal identity number.\n *\n * @return {boolean}\n */\n valid() {\n const valid = luhn(\n this.year + this.month + this.day + this.num.replace(/[TRSUWXJKLMN]/, \"1\")\n ) === +this.check && !!this.check;\n if (valid && testDate(parseInt(this.century + this.year), +this.month, +this.day)) {\n return valid;\n }\n return valid && testDate(parseInt(this.century + this.year), +this.month, +this.day - 60);\n }\n /**\n * Format a Swedish personal identity number as one of the official formats,\n * A long format or a short format.\n *\n * If the input number could not be parsed a empty string will be returned.\n *\n * @param {boolean} longFormat\n *\n * @return {string}\n */\n format(longFormat = false) {\n if (longFormat) {\n return `${this.century}${this.year}${this.month}${this.day}${this.num}${this.check}`;\n }\n return `${this.year}${this.month}${this.day}${this.sep}${this.num}${this.check}`;\n }\n /**\n * Get age from a Swedish personal identity number.\n *\n * @return {number}\n */\n getAge() {\n const date = this.getDate();\n return diffInYears(new Date(Date.now()), date);\n }\n /**\n * Get date from a Swedish personal identity number.\n *\n * @return {Date}\n */\n getDate() {\n let ageDay = +this.day;\n if (this.isCoordinationNumber()) {\n ageDay -= 60;\n }\n const ageDate = this.century + this.year + \"-\" + this.month + \"-\" + (ageDay < 10 ? \"0\" + ageDay : ageDay);\n return new Date(ageDate);\n }\n /**\n * Check if a Swedish personal identity number is a interim number or not.\n *\n * @return {boolean}\n */\n isInterimNumber() {\n return /[TRSUWXJKLMN]/.test(this.num[0]);\n }\n /**\n * Check if a Swedish personal identity number is a coordination number or not.\n *\n * @return {boolean}\n */\n isCoordinationNumber() {\n return testDate(\n parseInt(this.century + this.year),\n +this.month,\n +this.day - 60\n );\n }\n /**\n * Check if a Swedish personal identity number is for a female.\n *\n * @return {boolean}\n */\n isFemale() {\n return !this.isMale();\n }\n /**\n * Check if a Swedish personal identity number is for a male.\n *\n * @return {boolean}\n */\n isMale() {\n const sexDigit = parseInt(this.num.substr(-1));\n return sexDigit % 2 === 1;\n }\n};\nvar src_default = Personnummer;\nexport {\n src_default as default\n};\n","\"use strict\";\r\n// tslint:disable:no-bitwise\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.utf8 = void 0;\r\nexports.utf8 = {\r\n encode: encode,\r\n decode: decode,\r\n};\r\nfunction encode(unicodeText) {\r\n unicodeText = unicodeText.replace(/\\r\\n/g, \"\\n\");\r\n var result = \"\";\r\n for (var i = 0; i < unicodeText.length; i++) {\r\n var char = unicodeText.charCodeAt(i);\r\n if (char < 128) {\r\n result += String.fromCharCode(char);\r\n }\r\n else if (char > 127 && char < 2048) {\r\n result += String.fromCharCode((char >> 6) | 192);\r\n result += String.fromCharCode((char & 63) | 128);\r\n }\r\n else {\r\n result += String.fromCharCode((char >> 12) | 224);\r\n result += String.fromCharCode(((char >> 6) & 63) | 128);\r\n result += String.fromCharCode((char & 63) | 128);\r\n }\r\n }\r\n return result;\r\n}\r\nfunction decode(utf8Text) {\r\n var result = \"\";\r\n var i = 0;\r\n var char1 = 0;\r\n var char2 = 0;\r\n var char3 = 0;\r\n while (i < utf8Text.length) {\r\n char1 = utf8Text.charCodeAt(i);\r\n if (char1 < 128) {\r\n result += String.fromCharCode(char1);\r\n i++;\r\n }\r\n else if (char1 > 191 && char1 < 224) {\r\n char2 = utf8Text.charCodeAt(i + 1);\r\n result += String.fromCharCode(((char1 & 31) << 6) | (char2 & 63));\r\n i += 2;\r\n }\r\n else {\r\n char2 = utf8Text.charCodeAt(i + 1);\r\n char3 = utf8Text.charCodeAt(i + 2);\r\n result += String.fromCharCode(((char1 & 15) << 12) | ((char2 & 63) << 6) | (char3 & 63));\r\n i += 3;\r\n }\r\n }\r\n return result;\r\n}\r\n","\"use strict\";\r\n// tslint:disable:no-bitwise\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.generate = void 0;\r\nvar utf8_1 = require(\"./utf8\");\r\nfunction generate(unicodeText) {\r\n var x = [];\r\n var k;\r\n var AA;\r\n var BB;\r\n var CC;\r\n var DD;\r\n var a;\r\n var b;\r\n var c;\r\n var d;\r\n var S11 = 7;\r\n var S12 = 12;\r\n var S13 = 17;\r\n var S14 = 22;\r\n var S21 = 5;\r\n var S22 = 9;\r\n var S23 = 14;\r\n var S24 = 20;\r\n var S31 = 4;\r\n var S32 = 11;\r\n var S33 = 16;\r\n var S34 = 23;\r\n var S41 = 6;\r\n var S42 = 10;\r\n var S43 = 15;\r\n var S44 = 21;\r\n var utf8Text = utf8_1.utf8.encode(unicodeText);\r\n x = convertToWordArray(utf8Text);\r\n a = 0x67452301;\r\n b = 0xefcdab89;\r\n c = 0x98badcfe;\r\n d = 0x10325476;\r\n for (k = 0; k < x.length; k += 16) {\r\n AA = a;\r\n BB = b;\r\n CC = c;\r\n DD = d;\r\n a = FF(a, b, c, d, x[k + 0], S11, 0xd76aa478);\r\n d = FF(d, a, b, c, x[k + 1], S12, 0xe8c7b756);\r\n c = FF(c, d, a, b, x[k + 2], S13, 0x242070db);\r\n b = FF(b, c, d, a, x[k + 3], S14, 0xc1bdceee);\r\n a = FF(a, b, c, d, x[k + 4], S11, 0xf57c0faf);\r\n d = FF(d, a, b, c, x[k + 5], S12, 0x4787c62a);\r\n c = FF(c, d, a, b, x[k + 6], S13, 0xa8304613);\r\n b = FF(b, c, d, a, x[k + 7], S14, 0xfd469501);\r\n a = FF(a, b, c, d, x[k + 8], S11, 0x698098d8);\r\n d = FF(d, a, b, c, x[k + 9], S12, 0x8b44f7af);\r\n c = FF(c, d, a, b, x[k + 10], S13, 0xffff5bb1);\r\n b = FF(b, c, d, a, x[k + 11], S14, 0x895cd7be);\r\n a = FF(a, b, c, d, x[k + 12], S11, 0x6b901122);\r\n d = FF(d, a, b, c, x[k + 13], S12, 0xfd987193);\r\n c = FF(c, d, a, b, x[k + 14], S13, 0xa679438e);\r\n b = FF(b, c, d, a, x[k + 15], S14, 0x49b40821);\r\n a = GG(a, b, c, d, x[k + 1], S21, 0xf61e2562);\r\n d = GG(d, a, b, c, x[k + 6], S22, 0xc040b340);\r\n c = GG(c, d, a, b, x[k + 11], S23, 0x265e5a51);\r\n b = GG(b, c, d, a, x[k + 0], S24, 0xe9b6c7aa);\r\n a = GG(a, b, c, d, x[k + 5], S21, 0xd62f105d);\r\n d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);\r\n c = GG(c, d, a, b, x[k + 15], S23, 0xd8a1e681);\r\n b = GG(b, c, d, a, x[k + 4], S24, 0xe7d3fbc8);\r\n a = GG(a, b, c, d, x[k + 9], S21, 0x21e1cde6);\r\n d = GG(d, a, b, c, x[k + 14], S22, 0xc33707d6);\r\n c = GG(c, d, a, b, x[k + 3], S23, 0xf4d50d87);\r\n b = GG(b, c, d, a, x[k + 8], S24, 0x455a14ed);\r\n a = GG(a, b, c, d, x[k + 13], S21, 0xa9e3e905);\r\n d = GG(d, a, b, c, x[k + 2], S22, 0xfcefa3f8);\r\n c = GG(c, d, a, b, x[k + 7], S23, 0x676f02d9);\r\n b = GG(b, c, d, a, x[k + 12], S24, 0x8d2a4c8a);\r\n a = HH(a, b, c, d, x[k + 5], S31, 0xfffa3942);\r\n d = HH(d, a, b, c, x[k + 8], S32, 0x8771f681);\r\n c = HH(c, d, a, b, x[k + 11], S33, 0x6d9d6122);\r\n b = HH(b, c, d, a, x[k + 14], S34, 0xfde5380c);\r\n a = HH(a, b, c, d, x[k + 1], S31, 0xa4beea44);\r\n d = HH(d, a, b, c, x[k + 4], S32, 0x4bdecfa9);\r\n c = HH(c, d, a, b, x[k + 7], S33, 0xf6bb4b60);\r\n b = HH(b, c, d, a, x[k + 10], S34, 0xbebfbc70);\r\n a = HH(a, b, c, d, x[k + 13], S31, 0x289b7ec6);\r\n d = HH(d, a, b, c, x[k + 0], S32, 0xeaa127fa);\r\n c = HH(c, d, a, b, x[k + 3], S33, 0xd4ef3085);\r\n b = HH(b, c, d, a, x[k + 6], S34, 0x4881d05);\r\n a = HH(a, b, c, d, x[k + 9], S31, 0xd9d4d039);\r\n d = HH(d, a, b, c, x[k + 12], S32, 0xe6db99e5);\r\n c = HH(c, d, a, b, x[k + 15], S33, 0x1fa27cf8);\r\n b = HH(b, c, d, a, x[k + 2], S34, 0xc4ac5665);\r\n a = II(a, b, c, d, x[k + 0], S41, 0xf4292244);\r\n d = II(d, a, b, c, x[k + 7], S42, 0x432aff97);\r\n c = II(c, d, a, b, x[k + 14], S43, 0xab9423a7);\r\n b = II(b, c, d, a, x[k + 5], S44, 0xfc93a039);\r\n a = II(a, b, c, d, x[k + 12], S41, 0x655b59c3);\r\n d = II(d, a, b, c, x[k + 3], S42, 0x8f0ccc92);\r\n c = II(c, d, a, b, x[k + 10], S43, 0xffeff47d);\r\n b = II(b, c, d, a, x[k + 1], S44, 0x85845dd1);\r\n a = II(a, b, c, d, x[k + 8], S41, 0x6fa87e4f);\r\n d = II(d, a, b, c, x[k + 15], S42, 0xfe2ce6e0);\r\n c = II(c, d, a, b, x[k + 6], S43, 0xa3014314);\r\n b = II(b, c, d, a, x[k + 13], S44, 0x4e0811a1);\r\n a = II(a, b, c, d, x[k + 4], S41, 0xf7537e82);\r\n d = II(d, a, b, c, x[k + 11], S42, 0xbd3af235);\r\n c = II(c, d, a, b, x[k + 2], S43, 0x2ad7d2bb);\r\n b = II(b, c, d, a, x[k + 9], S44, 0xeb86d391);\r\n a = addUnsigned(a, AA);\r\n b = addUnsigned(b, BB);\r\n c = addUnsigned(c, CC);\r\n d = addUnsigned(d, DD);\r\n }\r\n return wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);\r\n}\r\nexports.generate = generate;\r\nfunction rotateLeft(lValue, iShiftBits) {\r\n return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));\r\n}\r\nfunction addUnsigned(lX, lY) {\r\n var lX4;\r\n var lY4;\r\n var lX8;\r\n var lY8;\r\n var lResult;\r\n lX8 = lX & 0x80000000;\r\n lY8 = lY & 0x80000000;\r\n lX4 = lX & 0x40000000;\r\n lY4 = lY & 0x40000000;\r\n lResult = (lX & 0x3fffffff) + (lY & 0x3fffffff);\r\n if (lX4 & lY4) {\r\n return lResult ^ 0x80000000 ^ lX8 ^ lY8;\r\n }\r\n if (lX4 | lY4) {\r\n if (lResult & 0x40000000) {\r\n return lResult ^ 0xc0000000 ^ lX8 ^ lY8;\r\n }\r\n else {\r\n return lResult ^ 0x40000000 ^ lX8 ^ lY8;\r\n }\r\n }\r\n else {\r\n return lResult ^ lX8 ^ lY8;\r\n }\r\n}\r\nfunction F(x, y, z) {\r\n return (x & y) | (~x & z);\r\n}\r\nfunction G(x, y, z) {\r\n return (x & z) | (y & ~z);\r\n}\r\nfunction H(x, y, z) {\r\n return x ^ y ^ z;\r\n}\r\nfunction I(x, y, z) {\r\n return y ^ (x | ~z);\r\n}\r\nfunction FF(a, b, c, d, x, s, ac) {\r\n a = addUnsigned(a, addUnsigned(addUnsigned(F(b, c, d), x), ac));\r\n return addUnsigned(rotateLeft(a, s), b);\r\n}\r\nfunction GG(a, b, c, d, x, s, ac) {\r\n a = addUnsigned(a, addUnsigned(addUnsigned(G(b, c, d), x), ac));\r\n return addUnsigned(rotateLeft(a, s), b);\r\n}\r\nfunction HH(a, b, c, d, x, s, ac) {\r\n a = addUnsigned(a, addUnsigned(addUnsigned(H(b, c, d), x), ac));\r\n return addUnsigned(rotateLeft(a, s), b);\r\n}\r\nfunction II(a, b, c, d, x, s, ac) {\r\n a = addUnsigned(a, addUnsigned(addUnsigned(I(b, c, d), x), ac));\r\n return addUnsigned(rotateLeft(a, s), b);\r\n}\r\nfunction convertToWordArray(value) {\r\n var lWordCount;\r\n var lMessageLength = value.length;\r\n var lNumberOfWordsTemp1 = lMessageLength + 8;\r\n var lNumberOfWordsTemp2 = (lNumberOfWordsTemp1 - (lNumberOfWordsTemp1 % 64)) / 64;\r\n var lNumberOfWords = (lNumberOfWordsTemp2 + 1) * 16;\r\n var lWordArray = Array(lNumberOfWords - 1);\r\n var lBytePosition = 0;\r\n var lByteCount = 0;\r\n while (lByteCount < lMessageLength) {\r\n lWordCount = (lByteCount - (lByteCount % 4)) / 4;\r\n lBytePosition = (lByteCount % 4) * 8;\r\n lWordArray[lWordCount] =\r\n lWordArray[lWordCount] | (value.charCodeAt(lByteCount) << lBytePosition);\r\n lByteCount++;\r\n }\r\n lWordCount = (lByteCount - (lByteCount % 4)) / 4;\r\n lBytePosition = (lByteCount % 4) * 8;\r\n lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);\r\n lWordArray[lNumberOfWords - 2] = lMessageLength << 3;\r\n lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;\r\n return lWordArray;\r\n}\r\nfunction wordToHex(lValue) {\r\n var wordToHexValue = \"\";\r\n var wordToHexValueTemp = \"\";\r\n var lByte;\r\n var lCount;\r\n for (lCount = 0; lCount <= 3; lCount++) {\r\n lByte = (lValue >>> (lCount * 8)) & 255;\r\n wordToHexValueTemp = \"0\" + lByte.toString(16);\r\n wordToHexValue =\r\n wordToHexValue + wordToHexValueTemp.substr(wordToHexValueTemp.length - 2, 2);\r\n }\r\n return wordToHexValue;\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MD5 = exports.generate = void 0;\r\nvar md5_1 = require(\"./md5\");\r\nvar md5_2 = require(\"./md5\");\r\nObject.defineProperty(exports, \"generate\", { enumerable: true, get: function () { return md5_2.generate; } });\r\nexports.MD5 = {\r\n generate: md5_1.generate,\r\n};\r\n","import { MD5 } from 'md5-js-tools';\nimport { CreditSafeUser } from '../types/felixtypes';\nimport { getCreditSafeApiUrl } from './enviroment';\n\nconst apiSearch = async (query: string): Promise<CreditSafeUser> => {\n const res = await fetch(getCreditSafeApiUrl(), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n query,\n hash: MD5.generate(String.fromCharCode(83, 101, 67, 82, 101, 116) + query),\n }),\n });\n const data = await res.json();\n return data;\n};\n\nexport default apiSearch;\n","import { Component, Element, State, h } from '@stencil/core';\nimport Personnummer from 'personnummer';\nimport state from '../../store';\nimport apiSearch from '../../utils/creditSafe';\nimport { scrollToTop } from '../../utils/scroll';\n\n@Component({\n tag: 'hemfixarna-getuser',\n shadow: false,\n})\nexport class HemfixarnaGetuser {\n @State() email: string = '';\n @State() emailError: string | null = null;\n @State() phone: string = '';\n @State() phoneError: string | null = null;\n @State() ssn: string = '';\n @State() ssnError: string | null = null;\n @Element() private el: HTMLElement;\n\n componentWillLoad() {\n if (state.user) {\n this.email = state.user.email;\n this.phone = state.user.phone;\n this.ssn = state.user.ssn;\n }\n }\n\n handleChangeEmail = (e: Event) => {\n this.emailError = null;\n this.email = (e.target as HTMLInputElement).value;\n };\n\n handleChangePhone = (e: Event) => {\n this.phoneError = null;\n this.phone = (e.target as HTMLInputElement).value;\n };\n\n handleChangessn = (e: Event) => {\n this.ssnError = null;\n this.ssn = (e.target as HTMLInputElement).value;\n };\n\n handleSubmit = async (e: Event) => {\n e.preventDefault();\n const emailRegex = new RegExp(\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n );\n const validEmail = emailRegex.test(this.email);\n if (!validEmail) {\n this.emailError = 'Ange en giltig e-postadress';\n }\n const validPhone = /^[\\d\\s()+-]{6,}$/.test(this.phone);\n if (!validPhone) {\n this.phoneError = 'Ange ett giltigt telefonnummer';\n }\n const validssn = Personnummer.valid(this.ssn);\n if (!validssn) {\n this.ssnError = 'Ange ett giltigt personnummer';\n } else if (validssn) {\n const pn = Personnummer.parse(this.ssn).format(true);\n this.ssn = [pn.slice(0, 8), '-', pn.slice(8)].join('');\n }\n if (validEmail && validPhone && validssn) {\n try {\n const creditSafeData = await apiSearch(this.ssn);\n if (creditSafeData) {\n state.creditSafeUser = creditSafeData;\n state.checkoutStep = 2;\n state.user = {\n ...creditSafeData,\n email: this.email,\n phone: this.phone,\n ssn: this.ssn,\n };\n } else {\n this.ssnError = 'Vi kunde tyvärr inte hitta en address med ditt angivna personnummer';\n }\n } catch (e) {\n this.ssnError = 'Vi kunde tyvärr inte hitta en address med ditt angivna personnummer';\n console.log(e);\n } finally {\n const el = this.el.closest('.hemfixarna_content');\n scrollToTop(el);\n }\n }\n };\n\n render = () => {\n return (\n <form class=\"mb-2\" onSubmit={e => this.handleSubmit(e)}>\n <div>\n <input class={`${this.email.length ? 'input_active' : ''}`} onChange={e => this.handleChangeEmail(e)} type=\"email\" name=\"email\" value={this.email} />\n <label htmlFor=\"email\">E-post </label>\n </div>\n {this.emailError && <span>{this.emailError}</span>}\n <div>\n <input class={`${this.phone.length ? 'input_active' : ''}`} onChange={e => this.handleChangePhone(e)} type=\"tel\" name=\"phone\" value={this.phone} />\n <label htmlFor=\"phone\">Mobiltelefon </label>\n </div>\n {this.phoneError && <span>{this.phoneError}</span>}\n <div>\n <input class={`${this.ssn.length ? 'input_active' : ''}`} onChange={e => this.handleChangessn(e)} type=\"tel\" name=\"ssn\" value={this.ssn} />\n <label htmlFor=\"phone\">Personnummer*</label>\n </div>\n {this.ssnError && <span>{this.ssnError}</span>}\n <input type=\"submit\" value=\"Fortsätt*\" />\n <p>*Vi hämtar din adress</p>\n </form>\n );\n };\n}\n","import { Component, Fragment, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\n\n@Component({\n tag: 'hemfixarna-info',\n shadow: false,\n})\nexport class HemfixarnaInfo {\n logo = getAssetPath(`./assets/hemfixarna.svg`);\n\n render() {\n const checked = getAssetPath(`./assets/checked.svg`);\n return (\n <div class=\"hemfixarna_info\">\n {state.step < 5 ? (\n <Fragment>\n <h2>{state.customer.info_title}</h2>\n <p>{state.customer.info_text}</p>\n </Fragment>\n ) : (\n <h2>{state.customer.checkout_title}</h2>\n )}\n <ul class=\"hemfixarna_features\">\n {state.step < 5 ? (\n <Fragment>\n {state.customer.trust_badges?.length ? (\n <Fragment>\n {state.customer.trust_badges.map(l => (\n <li key={l.text}>\n <img src={checked} alt=\"checked\" />\n <p>{l.text}</p>\n </li>\n ))}\n </Fragment>\n ) : (\n <Fragment>\n {state.options.trust.map(l => (\n <li key={l.trust_badge}>\n <img src={checked} alt=\"checked\" />\n <p>{l.trust_badge}</p>\n </li>\n ))}\n </Fragment>\n )}\n </Fragment>\n ) : (\n <Fragment>\n {state.customer.checkout_trust_badges?.map(l => (\n <li key={l.text}>\n <img src={checked} alt=\"checked\" />\n <p>{l.text}</p>\n </li>\n ))}\n </Fragment>\n )}\n </ul>\n <img src={this.logo} width={200} alt=\"hemfixarna\" />\n <a class=\"hemfixarna_product--link\" target=\"_blank\" href={state.options.link.url}>\n {state.options.link.title}\n </a>\n </div>\n );\n }\n}\n",":host {\n .invoice {\n gap: 16px;\n display: grid;\n form {\n > span {\n text-align: center;\n padding: 16px 0;\n }\n }\n img {\n right: unset;\n left: unset;\n position: initial;\n transform: none;\n }\n label {\n cursor: pointer;\n font-size: 14px;\n display: flex;\n align-items: flex-start;\n padding: 16px 0;\n input {\n margin: 0 5px 0 0;\n accent-color: #ea662c;\n }\n }\n &-preview {\n display: flex;\n gap: 4px;\n div {\n position: relative;\n button {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0;\n img {\n width: 24px;\n height: 24px;\n }\n }\n > img {\n width: 100px;\n height: 80px;\n object-fit: cover;\n }\n }\n }\n input[type='email'],\n input[type='tel'],\n textarea {\n padding: 16px;\n border: 1px solid #fcd9c9;\n font-size: 16px;\n }\n textarea {\n resize: none;\n height: 200px;\n font-family: 'Inter', sans-serif;\n }\n div:has(> input[type='file']) {\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n background: #fff;\n border: 1px solid #fcd9c9;\n padding: 32px 16px;\n gap: 16px;\n span {\n color: #000;\n font-size: 12px;\n }\n }\n input[type='file'] {\n display: none;\n }\n }\n}\n","import { Component, Element, State, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\nimport { getApiUrl } from '../../utils/enviroment';\n\nconst base = `${getApiUrl()}/wp-json/headless`;\n\ninterface FormElements extends HTMLCollection {\n descriptionInput: {\n value: string;\n };\n emailInput: {\n value: string;\n };\n telInput: {\n value: string;\n };\n termsInput: {\n checked: boolean;\n };\n}\n\n@Component({\n tag: 'hemfixarna-invoice',\n styleUrl: 'hemfixarna-invoice.scss',\n shadow: false,\n})\nexport class HemfixarnaInvoice {\n @State() formError: string | null = null;\n @Element() private el: HTMLElement;\n @State() displayImages: Array<string | ArrayBuffer> = [];\n @State() formImages: Array<File> = [];\n @State() formState: 'initial' | 'loading' = 'initial';\n\n isValidEmail(email: string) {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(email);\n }\n\n componentDidRender() {\n const form = this.el.querySelector('form') as HTMLFormElement;\n if (form) {\n form.addEventListener('input', () => {\n this.formError = null;\n });\n }\n }\n\n disconnectedCallback() {\n const form = this.el.querySelector('form') as HTMLFormElement;\n if (form) {\n form.removeEventListener('input', () => {\n this.formError = null;\n });\n }\n }\n\n async submit(e: Event) {\n e.preventDefault();\n this.formState = 'loading';\n this.formError = null;\n const form = (e.currentTarget as HTMLFormElement).elements as FormElements;\n const values = {\n description: form.descriptionInput.value.length ? form.descriptionInput.value : null,\n email: form.emailInput.value.length ? form.emailInput.value : null,\n tel: form.telInput.value.length ? form.telInput.value : null,\n terms: form.termsInput?.checked,\n };\n\n if (!values.description) {\n this.formError = 'Vänligen fyll i formulärtexten';\n this.formState = 'initial';\n return;\n }\n if (!values.email || !this.isValidEmail(values.email)) {\n this.formError = 'Vänligen ange en giltig e-postadress';\n this.formState = 'initial';\n return;\n }\n if (!values.tel) {\n this.formError = 'Vänligen ange ditt telefonnummer';\n this.formState = 'initial';\n return;\n }\n if (state.selectedProduct.terms_show_checkbox && !values.terms) {\n this.formError = 'Vänligen acceptera villkoren';\n this.formState = 'initial';\n return;\n }\n\n const formData = new FormData();\n formData.append('text', values.description);\n formData.append('email', values.email);\n formData.append('phone', values.tel);\n formData.append('customer', state.business);\n\n this.formImages.forEach(file => {\n formData.append('images[]', file);\n });\n\n formData.append(\n 'product',\n JSON.stringify({\n title: state.selectedProduct.title,\n amount: 1,\n has_rut: state.selectedProduct.rut,\n has_rot: state.selectedProduct.rot,\n has_green: state.selectedProduct.green,\n ID: state.selectedProduct.ID,\n parts: [],\n }),\n );\n\n try {\n const res = await fetch(`${base}/saveinvoiceproduct`, {\n method: 'POST',\n body: formData,\n });\n const { response } = await res.json();\n if (response.code === 200) {\n state.checkoutInvoice = true;\n state.step = 6;\n } else {\n this.formError = 'Vi kan inte ta emot din beställning just nu';\n this.formState = 'initial';\n }\n } catch (error) {\n this.formError = 'Vi kan inte ta emot din beställning just nu';\n this.formState = 'initial';\n }\n }\n\n handleImageDrop(e: DragEvent) {\n e.preventDefault();\n const files = e.dataTransfer.files;\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n\n if (file.type.startsWith('image/')) {\n const reader = new FileReader();\n\n reader.onload = () => {\n this.displayImages = [...this.displayImages, reader.result];\n this.formImages = [...this.formImages, file];\n };\n\n reader.readAsDataURL(file);\n }\n }\n }\n\n handleFileInputChange(e: Event) {\n e.preventDefault();\n const files = (e.target as HTMLInputElement).files;\n\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n if (file.type.startsWith('image/')) {\n const reader = new FileReader();\n reader.onload = () => {\n this.displayImages = [...this.displayImages, reader.result];\n this.formImages = [...this.formImages, file];\n };\n\n reader.readAsDataURL(file);\n }\n }\n }\n\n handleImageClick() {\n (this.el.querySelector('.hemfixarna-file-upload') as HTMLInputElement).click();\n }\n\n preventDragOver(e: DragEvent) {\n e.preventDefault();\n }\n\n removeImage(index: number) {\n this.displayImages = this.displayImages.filter((_, i) => i !== index);\n this.formImages = this.formImages.filter((_, i) => i !== index);\n }\n\n render() {\n const upload = getAssetPath(`./assets/drag-drop.svg`);\n return (\n <div class=\"invoice\">\n <p>{state.selectedProduct.invoice_description}</p>\n <form onSubmit={e => this.submit(e)}>\n <textarea name=\"descriptionInput\" placeholder=\"Beskriv ditt ärende\" />\n <div role=\"button\" aria-label=\"upload image\" onDragOver={e => this.preventDragOver(e)} onDrop={e => this.handleImageDrop(e)} onClick={() => this.handleImageClick()}>\n <img src={upload} alt=\"hemfixarna_logo\" width={24} />\n <div>\n <p>Bifoga ev bilder</p>\n <span>(dra bilder hit)</span>\n </div>\n <input onChange={e => this.handleFileInputChange(e)} class=\"hemfixarna-file-upload\" accept=\"image/*\" type=\"file\" multiple name=\"fileInput\" />\n </div>\n <div class=\"invoice-preview\">\n {this.displayImages.map((img, i) => (\n <div key={i}>\n <img src={img as string} alt=\"uploaded image\" />\n <button onClick={() => this.removeImage(i)}>\n <img src={getAssetPath(`./assets/close.svg`)} alt=\"close\" />\n </button>\n </div>\n ))}\n </div>\n <input placeholder=\"E-post\" type=\"email\" name=\"emailInput\" />\n <input placeholder=\"Telefonnummer\" type=\"tel\" name=\"telInput\" />\n {state.selectedProduct.terms_show_checkbox ? (\n <label>\n <input type=\"checkbox\" name=\"termsInput\" />\n {state.selectedProduct.terms}\n </label>\n ) : null}\n {this.formError ? <span>{this.formError}</span> : null}\n <input type=\"submit\" value={this.formState === 'loading' ? 'Skickar' : 'Kontakta mig'} />\n </form>\n </div>\n );\n }\n}\n","import { Component, h } from '@stencil/core';\nimport state from '../../store';\n\n@Component({\n tag: 'hemfixarna-order',\n shadow: false,\n})\nexport class HemfixarnaOrder {\n resetShop() {\n state.step = 1;\n state.cart = [];\n state.selectedCategory = null;\n state.selectedService = null;\n state.selectedProduct = null;\n state.maleri = null;\n state.checkoutStep = 1;\n }\n\n disconnectedCallback() {\n this.resetShop();\n }\n\n render = () => {\n return (\n <div style={{ background: `url(${state.options.thank_you_image})` }} class=\"hemfixarna_order\">\n <div></div>\n <div>\n <h2>{state.checkoutInvoice ? 'Tack för din förfrågan' : 'Tack för din bokning'}</h2>\n {state.checkoutInvoice ? <p>Vi återkommer inom kort till dig på angivet telefonnummer eller epost</p> : null}\n {state.checkoutInvoice ? <div></div> : <hemfixarna-orderrows cart={false}></hemfixarna-orderrows>}\n <span onClick={() => this.resetShop()}>\n <button>Gör en ny bokning</button>\n </span>\n <hemfixarna-info />\n </div>\n </div>\n );\n };\n}\n","import { Component, Fragment, Prop, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\nimport { CartItem, Icon } from '../../types';\nimport { calculateGreenDiscount, calculateRot, calculateRut, getPartPrice, getProductPrice, getStartFee, getTotalPrice } from '../../utils/calc';\n\n@Component({\n tag: 'hemfixarna-orderrows',\n shadow: false,\n})\nexport class HemfixarnaOrderrows {\n @Prop() cart: boolean = true;\n\n goToProduct(id: number) {\n const products = state.customer.categories\n .map(c => (c.show_products ? c.products : c.sub_categories ? c.sub_categories.map(c => c.products) : []))\n .flat()\n .flat();\n const product = products.find(p => p && p.fields.ID === id);\n if (product) {\n state.selectedProduct = product.fields;\n state.step = 4;\n }\n }\n\n openRot() {\n state.modal = {\n title: state.rotOptions.rot_start_fee_heading,\n text: [state.rotOptions.rot_start_fee_text, state.rotOptions.rot_start_fee_text_secondary],\n };\n }\n\n openRut() {\n state.modal = {\n title: state.rutOptions.rut_start_fee_heading,\n text: [state.rutOptions.rut_start_fee_text, state.rutOptions.rut_start_fee_text_secondary],\n };\n }\n\n openGreen() {\n state.modal = {\n title: state.greenOptions.green_start_fee_heading,\n text: [state.greenOptions.green_start_fee_text, state.greenOptions.green_start_fee_text_secondary],\n };\n }\n\n getDiscountedInfo(item: CartItem) {\n if (item.rut && state.rut) {\n return ' (efter RUT-avdrag)';\n } else if (item.rot && state.rot) {\n return ' (efter ROT-avdrag)';\n } else if (item.green && state.green) {\n return ' (efter Grön teknik avdrag)';\n } else {\n return '';\n }\n }\n\n render() {\n const info = getAssetPath(`./assets/info.svg`);\n\n return (\n <Fragment>\n <ul class=\"hemfixarna_cart--items\">\n {state.cart.map(item => (\n <li class=\"hemfixarna_cart--item\">\n <div>\n <div>\n {item.icon && <img width={30} src={(item.icon as Icon).url ?? (item.icon as string)} alt={item.name} />}\n <p>\n <strong>{item.amount}x </strong>\n {item.name}\n </p>\n </div>\n {this.cart && <button onClick={() => this.goToProduct(item.id)}>Ändra</button>}\n </div>\n <p>\n <strong>{getProductPrice(item, item.price, item.amount)}kr</strong>\n <span>{this.getDiscountedInfo(item)}</span>\n </p>\n {item.parts.length > 0 && (\n <ul>\n {item.parts.map(part => (\n <li>\n <p>\n <strong>{part.amount}x </strong>\n {part.name}\n </p>\n <p>\n <strong>{getPartPrice(part, item, part.amount)}kr</strong>\n </p>\n </li>\n ))}\n </ul>\n )}\n </li>\n ))}\n </ul>\n <div class=\"hemfixarna_cart--additional\">\n <div>\n {getStartFee().rot > 0 && (\n <div class=\"hemfixarna_cart--startfee\">\n <p>\n <strong onClick={() => this.openRot()}>\n {state.rotOptions.rot_start_fee_heading}\n <img height={16} src={info} alt=\"info monteringsavgift\" />\n </strong>\n </p>\n <p>{getStartFee().rot}kr</p>\n </div>\n )}\n {getStartFee().rut > 0 && (\n <div class=\"hemfixarna_cart--startfee\">\n <p>\n <strong onClick={() => this.openRut()}>\n {state.rutOptions.rut_start_fee_heading}\n <img height={16} src={info} alt=\"info monteringsavgift\" />\n </strong>\n </p>\n <p>{getStartFee().rut}kr</p>\n </div>\n )}\n {getStartFee().green > 0 && (\n <div class=\"hemfixarna_cart--startfee\">\n <p>\n <strong onClick={() => this.openGreen()}>\n {state.greenOptions.green_start_fee_heading}\n <img height={16} src={info} alt=\"info monteringsavgift\" />\n </strong>\n </p>\n <p>{getStartFee().green}kr</p>\n </div>\n )}\n </div>\n {state.cart.find((item: CartItem) => item.rot) && (\n <div class=\"hemfixarna_cart--rutrot\">\n <div>\n {this.cart && (\n <label class=\"switch\">\n <input checked={state.rot} onChange={() => (state.rot = !state.rot)} type=\"checkbox\" />\n <span class=\"slider\"></span>\n </label>\n )}\n <p>ROT-avdrag</p>\n </div>\n <p>(-{state.rot ? calculateRot() : 0}kr)</p>\n </div>\n )}\n {state.cart.find((item: CartItem) => item.rut) && (\n <div class=\"hemfixarna_cart--rutrot\">\n <div>\n <label class=\"switch\">\n <input onChange={() => (state.rut = !state.rut)} checked={state.rut} type=\"checkbox\" />\n <span class=\"slider\"></span>\n </label>\n <p>RUT-avdrag</p>\n </div>\n <p>(-{state.rut ? calculateRut() : 0}kr)</p>\n </div>\n )}\n {state.cart.find((item: CartItem) => item.green) && (\n <div class=\"hemfixarna_cart--rutrot\">\n <div>\n <label class=\"switch\">\n <input onChange={() => (state.green = !state.green)} checked={state.green} type=\"checkbox\" />\n <span class=\"slider\"></span>\n </label>\n <p>Grön teknik avdrag</p>\n </div>\n <p>(-{state.green ? calculateGreenDiscount() : 0}kr)</p>\n </div>\n )}\n </div>\n <div class=\"hemfixarna_cart--price\">\n <h2>Totalbelopp: </h2>\n <h2>{getTotalPrice()}kr</h2>\n </div>\n </Fragment>\n );\n }\n}\n","","import { Component, Element, Fragment, State, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\nimport { Business, Icon, Part } from '../../types';\nimport { getPartPrice, getProductPrice } from '../../utils/calc';\nimport { scrollToTop } from '../../utils/scroll';\n\n@Component({\n tag: 'hemfixarna-product',\n styleUrl: 'hemfixarna-product.scss',\n shadow: false,\n})\nexport class HemfixarnaProduct {\n @State() amount: number = 0;\n @State() hideDescription: boolean = true;\n @Element() private el: HTMLElement;\n\n addProduct() {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart) {\n productInCart.amount++;\n state.cart = [...state.cart];\n } else {\n state.cart = [\n ...state.cart,\n {\n id: state.selectedProduct.ID,\n rut: state.selectedProduct.rut,\n rot: state.selectedProduct.rot,\n green: state.selectedProduct.green,\n amount: 1,\n parts: [],\n price: state.selectedProduct.price,\n name: state.selectedProduct.title,\n start_fee: !state.selectedProduct.hide_start_fee,\n terms_checkout: state.selectedProduct.terms_checkout,\n icon: state.selectedProduct.icon,\n },\n ];\n }\n }\n\n removeProduct() {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart && productInCart.amount > 1) {\n productInCart.amount--;\n state.cart = [...state.cart];\n } else {\n state.cart = state.cart.filter(p => p.id !== state.selectedProduct.ID);\n }\n }\n\n //Handle cart and parts\n addPart(part: Part) {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart) {\n const partInCart = productInCart.parts.find(sp => sp.id === part.ID);\n if (partInCart) {\n partInCart.amount++;\n productInCart.parts = [...productInCart.parts];\n } else {\n productInCart.parts = [...productInCart.parts, { id: part.ID, amount: 1, price: part.price, name: part.title ?? part.title }];\n }\n state.cart = [...state.cart.filter(p => p.id !== productInCart.id), productInCart];\n }\n }\n\n removePart(part: Part) {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart) {\n const partInCart = productInCart.parts.find(sp => sp.id === part.ID);\n if (partInCart && partInCart.amount > 1) {\n partInCart.amount--;\n productInCart.parts = [...productInCart.parts];\n } else {\n productInCart.parts = productInCart.parts.filter(sp => sp.id !== part.ID);\n }\n state.cart = [...state.cart.filter(p => p.id !== productInCart.id), productInCart];\n }\n }\n\n goToCart() {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart) {\n state.step = 5;\n const el = this.el.closest('.hemfixarna_content');\n scrollToTop(el);\n }\n }\n\n getAmount() {\n return state.cart.find(p => p.id === state.selectedProduct.ID)?.amount || 0;\n }\n\n getPartAmount(partId: number) {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n return productInCart?.parts.find(sp => sp.id === partId)?.amount || 0;\n }\n\n getTotalPrice() {\n let price = 0;\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart) {\n const partsPrice = productInCart.parts.reduce((acc, curr) => {\n const part = state.selectedProduct.parts.find(p => p.ID === curr.id);\n if (part) {\n return acc + part.price * curr.amount;\n }\n return acc;\n }, 0);\n price = state.selectedProduct.price * productInCart.amount + partsPrice;\n } else {\n price = state.selectedProduct.price;\n }\n return getProductPrice(state.selectedProduct, price);\n }\n\n componentDidRender() {\n const linkElem = document.createElement('link');\n linkElem.setAttribute('rel', 'stylesheet');\n linkElem.setAttribute('href', 'https://painting-frontend.vercel.app/static/css/main.css');\n const fonts = document.createElement('link');\n fonts.setAttribute('rel', 'stylesheet');\n fonts.setAttribute('href', 'https://painting-frontend.vercel.app/fonts.css');\n\n const checkAndInjectCSS = () => {\n const parents = this.el.getElementsByTagName('hemfixare-calculator');\n if (parents.length > 0 && parents[0].shadowRoot !== null) {\n parents[0].shadowRoot.appendChild(linkElem);\n parents[0].shadowRoot.appendChild(fonts);\n } else {\n setTimeout(checkAndInjectCSS, 1);\n }\n };\n\n checkAndInjectCSS();\n }\n\n render() {\n const checked = getAssetPath(`./assets/checked.svg`);\n const plus = getAssetPath(`./assets/plus.svg`);\n const minus = getAssetPath(`./assets/minus.svg`);\n\n if (state.maleri) {\n return (\n <div class=\"hemfixarna_painting\">\n <script\n type=\"text/javascript\"\n src={\n ['localhost', 'vercel'].some(v => window.location.href.includes(v))\n ? 'https://painting-dev.vercel.app/static/js/main.js'\n : 'https://painting-frontend.vercel.app/static/js/main.js'\n }\n defer\n async\n ></script>\n <hemfixare-calculator\n title={state.options.maleri_title}\n subtitle={state.options.maleri_text}\n modal=\"true\"\n customer={state.business === Business.string ? 'string' : state.business}\n ></hemfixare-calculator>\n </div>\n );\n }\n\n return state.selectedProduct ? (\n <div class=\"hemfixarna_product\">\n <div class=\"hemfixarna_product--top\">\n {state.selectedProduct.icon && (\n <img width={80} src={(state.selectedProduct.icon as Icon).url ?? (state.selectedProduct.icon as string)} alt={state.selectedProduct.title} />\n )}\n <div>\n <h1>{state.selectedProduct.title}</h1>\n {!state.selectedProduct.invoice ? <h2>{getProductPrice(state.selectedProduct)} kr/st</h2> : <h2>{state.selectedProduct.invoice_price}</h2>}\n </div>\n </div>\n\n <div class=\"hemfixarna_product--grid\">\n <div class=\"hemfixarna_product--left\">\n {state.selectedProduct.list?.length && (\n <ul class=\"hemfixarna_features\">\n {state.selectedProduct.list.map(l => (\n <li key={l.bullet}>\n <img src={checked} alt=\"checked\" />\n <p>{l.bullet}</p>\n </li>\n ))}\n </ul>\n )}\n {state.selectedProduct.description && (\n <p\n onClick={() => (this.hideDescription = false)}\n class={`hemfixarna_description ${this.hideDescription ? 'hemfixarna_description--hidden' : ''}`}\n innerHTML={state.selectedProduct.description}\n ></p>\n )}\n </div>\n <div class=\"hemfixarna_product--right\">\n {state.selectedProduct.invoice ? (\n <hemfixarna-invoice />\n ) : (\n <Fragment>\n <ul>\n <li class=\"hemfixarna_product--item\">\n <div>\n <p>{state.selectedProduct.title}</p>\n <p class=\"hemfixarna_product--price\">{getProductPrice(state.selectedProduct)}kr/st</p>\n </div>\n <div class=\"hemfixarna_counter\">\n <img class={`${this.getAmount() === 0 ? 'disabled' : ''}`} src={minus} onClick={() => this.removeProduct()} />\n <span>{this.getAmount()}</span>\n <img src={plus} onClick={() => this.addProduct()} />\n </div>\n </li>\n {state.selectedProduct.parts?.length &&\n state.selectedProduct.parts.map(p => (\n <li class=\"hemfixarna_part\">\n <div>\n <p>{p.title ?? p.title}</p>\n <p class=\"hemfixarna_product--price\">{getPartPrice(p, state.selectedProduct)}kr/st</p>\n </div>\n <div class=\"hemfixarna_counter\">\n <img class={`${this.getPartAmount(p.ID) === 0 ? 'disabled' : ''}`} src={minus} onClick={() => this.removePart(p)} />\n <span>{this.getPartAmount(p.ID)}</span>\n <img class={`${this.getAmount() === 0 ? 'disabled' : ''}`} src={plus} onClick={() => this.addPart(p)} />\n </div>\n </li>\n ))}\n </ul>\n <h4 class=\"hemfixarna_product--total\">Totalt {this.getTotalPrice()} kr</h4>\n <button onClick={() => this.goToCart()} class={`hemfixarna_buy ${this.getAmount() === 0 ? 'disabled' : ''}`}>\n Fortsätt\n </button>\n </Fragment>\n )}\n {!state.selectedProduct.hide_start_fee && (state.selectedProduct.rot || state.selectedProduct.rut) && state.rutOptions && state.rotOptions && (\n <p class=\"hemfixarna_terms\">\n <strong>{state.selectedProduct.rot ? state.rotOptions.rot_start_fee_heading : state.rutOptions.rut_start_fee_heading}</strong>\n <br />\n <span innerHTML={state.selectedProduct.rot ? state.rotOptions.rot_start_fee_text : state.rutOptions.rut_start_fee_text}></span>\n </p>\n )}\n {state.options && <hemfixarna-info />}\n </div>\n </div>\n </div>\n ) : null;\n }\n}\n","import { Component, Prop, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\nimport { Category, CustomerCategory, CustomerSubCategory, Icon } from '../../types';\n\n@Component({\n tag: 'hemfixarna-start',\n shadow: false,\n})\nexport class HemfixarnaGrid {\n @Prop() tree?: Category;\n @Prop() slug?: string;\n\n isMainCategory(category: CustomerCategory | CustomerSubCategory): category is CustomerCategory {\n return (category as CustomerCategory).show_products !== undefined;\n }\n\n handleMaleriClick() {\n state.step = 4;\n state.maleri = true;\n }\n\n render() {\n const maleriLogo = getAssetPath('./assets/gubbe-pensel.svg');\n return state.customer ? (\n <div>\n <h2>{state.selectedCustomerCategory ? state.selectedCustomerCategory.name : 'Alla tjänster'}</h2>\n <div class=\"hemfixarna_categories--wrapper\">\n <ul class=\"hemfixarna_categories\">\n {state.selectedCustomerCategory?.add_painting ? (\n <button onClick={() => this.handleMaleriClick()} class=\"hemfixarna_maleribox\">\n <img height={64} src={maleriLogo} alt=\"Måleri Logotyp\" />\n <p>Beräkna fast pris på måleri & tapetsering här</p>\n </button>\n ) : null}\n {state.selectedCustomerCategory\n ? this.isMainCategory(state.selectedCustomerCategory) && state.selectedCustomerCategory.sub_categories && !state.selectedCustomerCategory.show_products\n ? state.selectedCustomerCategory.sub_categories.map(c => <hemfixarna-box category={c}></hemfixarna-box>)\n : state.selectedCustomerCategory.products\n ? state.selectedCustomerCategory.products.map(c => <hemfixarna-box category={c.fields}></hemfixarna-box>)\n : null\n : state.customer.categories.map(c => <hemfixarna-box category={c}></hemfixarna-box>)}\n </ul>\n <hemfixarna-info />\n </div>\n </div>\n ) : (\n <div>\n <h2>Alla tjänster</h2>\n <div class=\"hemfixarna_categories--wrapper\">\n <ul class=\"hemfixarna_categories\">\n {this.tree.sub_cats\n .sort((a, b) => (a.name < b.name ? -1 : 1))\n .map(c => (\n <hemfixarna-box post={c} icon={(c.icon as Icon).url ?? (c.icon as string)} postTitle={c.name}></hemfixarna-box>\n ))}\n </ul>\n <hemfixarna-info />\n </div>\n </div>\n );\n }\n}\n"],"version":3}