dinocollab-shared 1.2.45 → 1.2.47

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 (123) hide show
  1. package/dist/action-license/area.group.js +1 -1
  2. package/dist/action-license/area.group.js.map +1 -1
  3. package/dist/action-license/btn.icon.add-to-package.js +1 -1
  4. package/dist/action-license/btn.icon.add-to-package.js.map +1 -1
  5. package/dist/action-license/quickly-add-to-cart/content.js +1 -1
  6. package/dist/action-license/quickly-add-to-cart/content.js.map +1 -1
  7. package/dist/cart/hooks.js +1 -1
  8. package/dist/cart/hooks.js.map +1 -1
  9. package/dist/cart/service.js +1 -1
  10. package/dist/cart/service.js.map +1 -1
  11. package/dist/cart/styled.js +1 -1
  12. package/dist/cart/styled.js.map +1 -1
  13. package/dist/cart/widget.js +1 -1
  14. package/dist/cart/widget.js.map +1 -1
  15. package/dist/factory/cart-content/create.cart-content.js +1 -1
  16. package/dist/factory/cart-content/styled.js +1 -1
  17. package/dist/factory/cart-content/styled.js.map +1 -1
  18. package/dist/factory/cart-item/create.cart-item.js +1 -1
  19. package/dist/factory/cart-item/create.cart-item.js.map +1 -1
  20. package/dist/factory/cart-item/styled.js +1 -1
  21. package/dist/factory/cart-item/styled.js.map +1 -1
  22. package/dist/media-player/core/btn.volume.js +1 -1
  23. package/dist/media-player/core/btn.volume.js.map +1 -1
  24. package/dist/media-player/core/progressBar.js +1 -1
  25. package/dist/media-player/core/progressBar.js.map +1 -1
  26. package/dist/media-player/core/videoplayer.js +1 -1
  27. package/dist/media-player/core/videoplayer.js.map +1 -1
  28. package/dist/media-player/muted.js +1 -1
  29. package/dist/media-player/muted.js.map +1 -1
  30. package/dist/media-player/player.video-stream.js.map +1 -1
  31. package/dist/media-right/configs.js +1 -1
  32. package/dist/media-right/configs.js.map +1 -1
  33. package/dist/media-right/group-selector/index.js +1 -1
  34. package/dist/media-right/group-selector/index.js.map +1 -1
  35. package/dist/media-right/group-selector/modal-header.js +1 -1
  36. package/dist/media-right/group-selector/modal-header.js.map +1 -1
  37. package/dist/media-right/group-selector/units.js +1 -1
  38. package/dist/media-right/group-selector/units.js.map +1 -1
  39. package/dist/media-right/guide-steps/index.js +1 -1
  40. package/dist/media-right/guide-steps/index.js.map +1 -1
  41. package/dist/media-right/helpers.js +1 -1
  42. package/dist/media-right/helpers.js.map +1 -1
  43. package/dist/media-right/hooks.js +1 -1
  44. package/dist/media-right/hooks.js.map +1 -1
  45. package/dist/media-right/index.js +1 -1
  46. package/dist/media-right/media-widget/index.js +1 -1
  47. package/dist/media-right/media-widget/index.js.map +1 -1
  48. package/dist/media-right/media-widget/media-group-accordion.js +1 -1
  49. package/dist/media-right/media-widget/media-group-accordion.js.map +1 -1
  50. package/dist/media-right/media-widget/new-group-area.js +1 -1
  51. package/dist/media-right/media-widget/new-group-area.js.map +1 -1
  52. package/dist/media-right/media-widget/styled.js +1 -1
  53. package/dist/media-right/media-widget/styled.js.map +1 -1
  54. package/dist/media-right/service.js +1 -1
  55. package/dist/media-right/service.js.map +1 -1
  56. package/dist/media-right/types.js.map +1 -1
  57. package/dist/media-right/unit.control.js +1 -1
  58. package/dist/media-right/unit.control.js.map +1 -1
  59. package/dist/notification/content-converter.js +2 -0
  60. package/dist/notification/content-converter.js.map +1 -0
  61. package/dist/notification/index.js +1 -1
  62. package/dist/notification/notify-detail.js +1 -1
  63. package/dist/notification/notify-detail.js.map +1 -1
  64. package/dist/types/action-license/btn.icon.add-to-package.d.ts +3 -3
  65. package/dist/types/action-license/btn.icon.add-to-package.d.ts.map +1 -1
  66. package/dist/types/action-license/quickly-add-to-cart/content.d.ts +2 -2
  67. package/dist/types/action-license/quickly-add-to-cart/content.d.ts.map +1 -1
  68. package/dist/types/cart/hooks.d.ts +5 -0
  69. package/dist/types/cart/hooks.d.ts.map +1 -1
  70. package/dist/types/cart/service.d.ts +5 -0
  71. package/dist/types/cart/service.d.ts.map +1 -1
  72. package/dist/types/cart/styled.d.ts.map +1 -1
  73. package/dist/types/factory/cart-content/styled.d.ts.map +1 -1
  74. package/dist/types/factory/cart-item/create.cart-item.d.ts +1 -1
  75. package/dist/types/factory/cart-item/create.cart-item.d.ts.map +1 -1
  76. package/dist/types/factory/cart-item/styled.d.ts.map +1 -1
  77. package/dist/types/media-player/core/btn.volume.d.ts.map +1 -1
  78. package/dist/types/media-player/core/progressBar.d.ts +3 -2
  79. package/dist/types/media-player/core/progressBar.d.ts.map +1 -1
  80. package/dist/types/media-player/core/videoplayer.d.ts +5 -4
  81. package/dist/types/media-player/core/videoplayer.d.ts.map +1 -1
  82. package/dist/types/media-player/muted.d.ts +2 -2
  83. package/dist/types/media-player/muted.d.ts.map +1 -1
  84. package/dist/types/media-player/player.video-stream.d.ts +2 -2
  85. package/dist/types/media-player/player.video-stream.d.ts.map +1 -1
  86. package/dist/types/media-right/configs.d.ts +1 -1
  87. package/dist/types/media-right/configs.d.ts.map +1 -1
  88. package/dist/types/media-right/group-selector/index.d.ts +2 -13
  89. package/dist/types/media-right/group-selector/index.d.ts.map +1 -1
  90. package/dist/types/media-right/group-selector/modal-header.d.ts.map +1 -1
  91. package/dist/types/media-right/group-selector/units.d.ts +3 -0
  92. package/dist/types/media-right/group-selector/units.d.ts.map +1 -1
  93. package/dist/types/media-right/guide-steps/index.d.ts.map +1 -1
  94. package/dist/types/media-right/helpers.d.ts +0 -4
  95. package/dist/types/media-right/helpers.d.ts.map +1 -1
  96. package/dist/types/media-right/hooks.d.ts +4 -5
  97. package/dist/types/media-right/hooks.d.ts.map +1 -1
  98. package/dist/types/media-right/media-widget/index.d.ts +0 -1
  99. package/dist/types/media-right/media-widget/index.d.ts.map +1 -1
  100. package/dist/types/media-right/media-widget/media-group-accordion.d.ts +4 -1
  101. package/dist/types/media-right/media-widget/media-group-accordion.d.ts.map +1 -1
  102. package/dist/types/media-right/media-widget/new-group-area.d.ts +2 -0
  103. package/dist/types/media-right/media-widget/new-group-area.d.ts.map +1 -1
  104. package/dist/types/media-right/media-widget/styled.d.ts.map +1 -1
  105. package/dist/types/media-right/service.d.ts +5 -4
  106. package/dist/types/media-right/service.d.ts.map +1 -1
  107. package/dist/types/media-right/types.d.ts +5 -5
  108. package/dist/types/media-right/types.d.ts.map +1 -1
  109. package/dist/types/media-right/unit.control.d.ts +2 -0
  110. package/dist/types/media-right/unit.control.d.ts.map +1 -1
  111. package/dist/types/notification/content-converter.d.ts +14 -0
  112. package/dist/types/notification/content-converter.d.ts.map +1 -0
  113. package/dist/types/notification/index.d.ts +1 -0
  114. package/dist/types/notification/index.d.ts.map +1 -1
  115. package/dist/types/notification/notify-detail.d.ts +1 -1
  116. package/dist/types/notification/notify-detail.d.ts.map +1 -1
  117. package/package.json +1 -1
  118. package/dist/notification/class.config.js +0 -2
  119. package/dist/notification/class.config.js.map +0 -1
  120. package/dist/types/media-right/group-selector/NewCollectionInput.d.ts +0 -7
  121. package/dist/types/media-right/group-selector/NewCollectionInput.d.ts.map +0 -1
  122. package/dist/types/notification/class.config.d.ts +0 -21
  123. package/dist/types/notification/class.config.d.ts.map +0 -1
@@ -1,2 +1,2 @@
1
- import{objectWithoutProperties as r,objectSpread2 as o}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,jsx as e}from"react/jsx-runtime";import{Stack as a,Typography as i,Box as d}from"@mui/material";import{ButtonIconAddToPackage as c,EBtnAddToPackage as n}from"./btn.icon.add-to-package.js";import{AreaQuicklyAddToCart as u}from"./quickly-add-to-cart/index.js";var l=["product","packageProps","cartProps"],p=function(p){var s=p.product,m=p.packageProps,b=p.cartProps,g=r(p,l);return t(a,o(o({gap:1},g),{},{sx:o({padding:2,border:1,borderRadius:3,boxShadow:2,borderColor:function(r){return r.palette.divider},backgroundColor:function(r){return r.palette.background.default}},g.sx||{}),children:[e(a,{sx:{flex:1},children:e(i,{variant:"body2",sx:{color:"var(--color-text-2)"},children:"For social media, YouTube, blogs & educational use."})}),t(a,{gap:3,children:[m&&t(d,{children:[e(i,{variant:"body1",fontWeight:600,gutterBottom:!0,children:"License Package:"}),e(c,o(o({product:s},m),{},{kind:n.Button}))]}),b&&t(d,{children:[e(i,{variant:"body1",fontWeight:600,gutterBottom:!0,children:"Quick Purchase:"}),e(u,o({product:s},b))]})]}),null==g?void 0:g.children]}))};export{p as AreaActionGroups};
1
+ import{objectWithoutProperties as r,objectSpread2 as o}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,jsx as e}from"react/jsx-runtime";import{Stack as a,Typography as i,Box as c,alpha as d}from"@mui/material";import{ButtonIconAddToPackage as n,EBtnAddToPackage as u}from"./btn.icon.add-to-package.js";import{AreaQuicklyAddToCart as l}from"./quickly-add-to-cart/index.js";var p=["product","packageProps","cartProps"],s=function(s){var m=s.product,b=s.packageProps,g=s.cartProps,h=r(s,p);return t(a,o(o({gap:1},h),{},{sx:o({padding:2,border:1,borderRadius:3,boxShadow:3,borderColor:function(r){return r.palette.divider},backgroundColor:function(r){return d(r.palette.background.paper,.2)}},h.sx||{}),children:[e(a,{sx:{flex:1},children:e(i,{variant:"body2",sx:{color:"var(--color-text-2)"},children:"For social media, YouTube, blogs & educational use."})}),t(a,{gap:3,children:[b&&t(c,{children:[e(i,{variant:"body1",fontWeight:600,gutterBottom:!0,children:"License Package:"}),e(n,o(o({product:m},b),{},{kind:u.Button}))]}),g&&t(c,{children:[e(i,{variant:"body1",fontWeight:600,gutterBottom:!0,children:"Quick Purchase:"}),e(l,o({product:m},g))]})]}),null==h?void 0:h.children]}))};export{s as AreaActionGroups};
2
2
  //# sourceMappingURL=area.group.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"area.group.js","sources":["../../src/action-license/area.group.tsx"],"sourcesContent":["import { Box, Stack, Typography } from '@mui/material'\r\nimport { ButtonIconAddToPackage } from './btn.icon.add-to-package'\r\nimport { AreaQuicklyAddToCart } from './quickly-add-to-cart'\r\nimport { EBtnAddToPackage } from './btn.icon.add-to-package'\r\nimport type { StackProps } from '@mui/material'\r\nimport type { AreaQuicklyAddToCartProps } from './quickly-add-to-cart'\r\nimport type { BtnIconAddToPackageProps } from './btn.icon.add-to-package'\r\nimport { IPricePackage } from './types'\r\n\r\nexport interface IAreaActionGroupsProps<TProduct, TPrices extends IPricePackage> extends StackProps {\r\n product?: TProduct\r\n packageProps?: Omit<BtnIconAddToPackageProps<TProduct>, 'product'>\r\n cartProps?: Omit<AreaQuicklyAddToCartProps<TProduct, TPrices>, 'product'>\r\n}\r\n\r\nexport const AreaActionGroups = <TProduct, TPrices extends IPricePackage>({\r\n product,\r\n packageProps,\r\n cartProps,\r\n ...stackProps\r\n}: IAreaActionGroupsProps<TProduct, TPrices>) => {\r\n return (\r\n <Stack\r\n gap={1}\r\n {...stackProps}\r\n sx={{\r\n padding: 2,\r\n border: 1,\r\n borderRadius: 3,\r\n boxShadow: 2,\r\n borderColor: (theme) => theme.palette.divider,\r\n backgroundColor: (theme) => theme.palette.background.default,\r\n ...(stackProps.sx || {})\r\n }}\r\n >\r\n <Stack sx={{ flex: 1 }}>\r\n <Typography variant='body2' sx={{ color: 'var(--color-text-2)' }}>\r\n For social media, YouTube, blogs & educational use.\r\n </Typography>\r\n </Stack>\r\n <Stack gap={3}>\r\n {packageProps && (\r\n <Box>\r\n <Typography variant='body1' fontWeight={600} gutterBottom>\r\n License Package:\r\n </Typography>\r\n <ButtonIconAddToPackage product={product} {...packageProps} kind={EBtnAddToPackage.Button} />\r\n </Box>\r\n )}\r\n {cartProps && (\r\n <Box>\r\n <Typography variant='body1' fontWeight={600} gutterBottom>\r\n Quick Purchase:\r\n </Typography>\r\n <AreaQuicklyAddToCart<TProduct, TPrices> product={product} {...cartProps} />\r\n </Box>\r\n )}\r\n </Stack>\r\n {stackProps?.children}\r\n </Stack>\r\n )\r\n}\r\n"],"names":["AreaActionGroups","_ref","product","packageProps","cartProps","stackProps","_objectWithoutProperties","_excluded","_jsxs","Stack","_objectSpread","gap","sx","padding","border","borderRadius","boxShadow","borderColor","theme","palette","divider","backgroundColor","background","children","_jsx","flex","Typography","variant","color","Box","fontWeight","gutterBottom","ButtonIconAddToPackage","kind","EBtnAddToPackage","Button","AreaQuicklyAddToCart"],"mappings":"saAeaA,EAAmB,SAAHC,GAKmB,IAJ9CC,EAAOD,EAAPC,QACAC,EAAYF,EAAZE,aACAC,EAASH,EAATG,UACGC,EAAUC,EAAAL,EAAAM,GAEb,OACEC,EAACC,EAAKC,EAAAA,EAAA,CACJC,IAAK,GACDN,GAAU,GAAA,CACdO,GAAEF,EAAA,CACAG,QAAS,EACTC,OAAQ,EACRC,aAAc,EACdC,UAAW,EACXC,YAAa,SAACC,GAAK,OAAKA,EAAMC,QAAQC,OAAO,EAC7CC,gBAAiB,SAACH,GAAK,OAAKA,EAAMC,QAAQG,WAAkB,OAAA,GACxDjB,EAAWO,IAAM,IAGvBW,SAAA,CAAAC,EAACf,EAAK,CAACG,GAAI,CAAEa,KAAM,GACjBF,SAAAC,EAACE,EAAW,CAAAC,QAAQ,QAAQf,GAAI,CAAEgB,MAAO,uBAAuBL,SAAA,0DAIlEf,EAACC,EAAK,CAACE,IAAK,EACTY,SAAA,CAAApB,GACCK,EAACqB,aACCL,EAACE,EAAW,CAAAC,QAAQ,QAAQG,WAAY,IAAKC,cAEhC,EAAAR,SAAA,qBACbC,EAACQ,EAAsBtB,EAAAA,EAAA,CAACR,QAASA,GAAaC,GAAY,GAAA,CAAE8B,KAAMC,EAAiBC,aAGtF/B,GACCI,EAACqB,EACC,CAAAN,SAAA,CAAAC,EAACE,EAAU,CAACC,QAAQ,QAAQG,WAAY,IAAKC,6CAG7CP,EAACY,EAAoB1B,EAAA,CAAoBR,QAASA,GAAaE,UAIpEC,aAAAA,EAAAA,EAAYkB,YAGnB"}
1
+ {"version":3,"file":"area.group.js","sources":["../../src/action-license/area.group.tsx"],"sourcesContent":["import { alpha, Box, Stack, Typography } from '@mui/material'\r\nimport { ButtonIconAddToPackage } from './btn.icon.add-to-package'\r\nimport { AreaQuicklyAddToCart } from './quickly-add-to-cart'\r\nimport { EBtnAddToPackage } from './btn.icon.add-to-package'\r\nimport type { StackProps } from '@mui/material'\r\nimport type { AreaQuicklyAddToCartProps } from './quickly-add-to-cart'\r\nimport type { BtnIconAddToPackageProps } from './btn.icon.add-to-package'\r\nimport { IPricePackage } from './types'\r\n\r\nexport interface IAreaActionGroupsProps<TProduct, TPrices extends IPricePackage> extends StackProps {\r\n product?: TProduct\r\n packageProps?: Omit<BtnIconAddToPackageProps<TProduct>, 'product'>\r\n cartProps?: Omit<AreaQuicklyAddToCartProps<TProduct, TPrices>, 'product'>\r\n}\r\n\r\nexport const AreaActionGroups = <TProduct, TPrices extends IPricePackage>({\r\n product,\r\n packageProps,\r\n cartProps,\r\n ...stackProps\r\n}: IAreaActionGroupsProps<TProduct, TPrices>) => {\r\n return (\r\n <Stack\r\n gap={1}\r\n {...stackProps}\r\n sx={{\r\n padding: 2,\r\n border: 1,\r\n borderRadius: 3,\r\n boxShadow: 3,\r\n borderColor: (theme) => theme.palette.divider,\r\n backgroundColor: (theme) => alpha(theme.palette.background.paper, 0.2),\r\n ...(stackProps.sx || {})\r\n }}\r\n >\r\n <Stack sx={{ flex: 1 }}>\r\n <Typography variant='body2' sx={{ color: 'var(--color-text-2)' }}>\r\n For social media, YouTube, blogs & educational use.\r\n </Typography>\r\n </Stack>\r\n <Stack gap={3}>\r\n {packageProps && (\r\n <Box>\r\n <Typography variant='body1' fontWeight={600} gutterBottom>\r\n License Package:\r\n </Typography>\r\n <ButtonIconAddToPackage product={product} {...packageProps} kind={EBtnAddToPackage.Button} />\r\n </Box>\r\n )}\r\n {cartProps && (\r\n <Box>\r\n <Typography variant='body1' fontWeight={600} gutterBottom>\r\n Quick Purchase:\r\n </Typography>\r\n <AreaQuicklyAddToCart<TProduct, TPrices> product={product} {...cartProps} />\r\n </Box>\r\n )}\r\n </Stack>\r\n {stackProps?.children}\r\n </Stack>\r\n )\r\n}\r\n"],"names":["AreaActionGroups","_ref","product","packageProps","cartProps","stackProps","_objectWithoutProperties","_excluded","_jsxs","Stack","_objectSpread","gap","sx","padding","border","borderRadius","boxShadow","borderColor","theme","palette","divider","backgroundColor","alpha","background","paper","children","_jsx","flex","Typography","variant","color","Box","fontWeight","gutterBottom","ButtonIconAddToPackage","kind","EBtnAddToPackage","Button","AreaQuicklyAddToCart"],"mappings":"ibAeaA,EAAmB,SAAHC,GAKmB,IAJ9CC,EAAOD,EAAPC,QACAC,EAAYF,EAAZE,aACAC,EAASH,EAATG,UACGC,EAAUC,EAAAL,EAAAM,GAEb,OACEC,EAACC,EAAKC,EAAAA,EAAA,CACJC,IAAK,GACDN,GAAU,GAAA,CACdO,GAAEF,EAAA,CACAG,QAAS,EACTC,OAAQ,EACRC,aAAc,EACdC,UAAW,EACXC,YAAa,SAACC,GAAK,OAAKA,EAAMC,QAAQC,OAAO,EAC7CC,gBAAiB,SAACH,GAAK,OAAKI,EAAMJ,EAAMC,QAAQI,WAAWC,MAAO,GAAI,GAClEnB,EAAWO,IAAM,IAGvBa,SAAA,CAAAC,EAACjB,EAAK,CAACG,GAAI,CAAEe,KAAM,GACjBF,SAAAC,EAACE,EAAW,CAAAC,QAAQ,QAAQjB,GAAI,CAAEkB,MAAO,uBAAuBL,SAAA,0DAIlEjB,EAACC,EAAK,CAACE,IAAK,EACTc,SAAA,CAAAtB,GACCK,EAACuB,aACCL,EAACE,EAAW,CAAAC,QAAQ,QAAQG,WAAY,IAAKC,cAEhC,EAAAR,SAAA,qBACbC,EAACQ,EAAsBxB,EAAAA,EAAA,CAACR,QAASA,GAAaC,GAAY,GAAA,CAAEgC,KAAMC,EAAiBC,aAGtFjC,GACCI,EAACuB,EACC,CAAAN,SAAA,CAAAC,EAACE,EAAU,CAACC,QAAQ,QAAQG,WAAY,IAAKC,6CAG7CP,EAACY,EAAoB5B,EAAA,CAAoBR,QAASA,GAAaE,UAIpEC,aAAAA,EAAAA,EAAYoB,YAGnB"}
@@ -1,2 +1,2 @@
1
- import{objectSpread2 as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as o,jsxs as r}from"react/jsx-runtime";import{Tooltip as n,IconButton as i,Stack as e,Button as a,alpha as l,Skeleton as c}from"@mui/material";import u from"@mui/icons-material/BookmarkAddOutlined";import{HelpOutlinePulseIcon as s}from"dinocollab-core/components";var d;!function(t){t.Icon="icon",t.Button="button"}(d||(d={}));var p=function(c){var p=c.product,f=c.buttonProps,b=c.tooltipProps,h=c.helpProps,v=c.kind,k=void 0===v?d.Icon:v,g=c.addToCart;return p?k===d.Button?r(e,{direction:"row",justifyContent:"space-between",alignItems:"center",position:"relative",children:[o(a,t(t({startIcon:o(u,{fontSize:"small"}),fullWidth:!0,type:"submit",variant:"contained",color:"success",onClick:function(){return g(p)}},f),{},{children:"Add to Playlist"})),o(n,{title:"Read more about our services",placement:"left",children:o(i,t(t({sx:{position:"absolute",right:"-11px",bottom:"-11px",color:function(t){return l(t.palette.primary.main,.8)},backgroundColor:function(t){return t.palette.background.paper},"&:hover":{backgroundColor:function(t){return t.palette.background.paper}}},size:"small",onClick:function(t){return t.stopPropagation()}},h),{},{children:o(s,{})}))})]}):o(n,t(t({title:"Add to Playlist",arrow:!0,placement:"top"},b),{},{children:o(i,t(t({variant:"contained",color:"inherit",size:"small",onClick:function(){return g(p)}},f),{},{children:o(u,{fontSize:"small",sx:{fontSize:18}})}))})):o(m,{kind:k,buttonProps:f})},m=function(r){var n=r.buttonProps,i=r.kind;return(void 0===i?d.Icon:i)===d.Button?o(c,{variant:"rectangular",width:"100%",height:36,sx:t({borderRadius:2},null==n?void 0:n.sx)}):o(c,{variant:"circular",width:32,height:32,sx:t({},null==n?void 0:n.sx)})};export{p as ButtonIconAddToPackage,m as ButtonIconAddToPackageSkeleton,d as EBtnAddToPackage};
1
+ import{objectSpread2 as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as o,jsxs as r}from"react/jsx-runtime";import{Tooltip as n,IconButton as i,Stack as e,Button as a,alpha as l,Skeleton as c}from"@mui/material";import u from"@mui/icons-material/BookmarkAddOutlined";import{HelpOutlinePulseIcon as s}from"dinocollab-core/components";var d;!function(t){t.Icon="icon",t.Button="button"}(d||(d={}));var p=function(c){var p=c.product,b=c.buttonProps,f=c.tooltipProps,h=c.helpProps,g=c.kind,v=void 0===g?d.Icon:g,k=c.onClick;return p?v===d.Button?r(e,{direction:"row",justifyContent:"space-between",alignItems:"center",position:"relative",children:[o(a,t(t({startIcon:o(u,{fontSize:"small"}),fullWidth:!0,type:"submit",variant:"contained",color:"success",onClick:function(t){return k&&k(p,t)}},b),{},{children:"Add to Playlist"})),o(n,{title:"Read more about our services",placement:"left",children:o(i,t(t({sx:{position:"absolute",right:"-11px",bottom:"-11px",color:function(t){return l(t.palette.primary.main,.8)},backgroundColor:function(t){return t.palette.background.paper},backgroundImage:"linear-gradient(rgba(255, 255, 255, 0.165), rgba(255, 255, 255, 0.165))","&:hover":{backgroundColor:function(t){return t.palette.background.paper}}},size:"small",onClick:function(t){return t.stopPropagation()}},h),{},{children:o(s,{})}))})]}):o(n,t(t({title:"Add to Playlist",arrow:!0,placement:"top"},f),{},{children:o(i,t(t({variant:"contained",color:"inherit",size:"small",onClick:function(t){return k&&k(p,t)}},b),{},{children:o(u,{fontSize:"small",sx:{fontSize:18}})}))})):o(m,{kind:v,buttonProps:b})},m=function(r){var n=r.buttonProps,i=r.kind;return(void 0===i?d.Icon:i)===d.Button?o(c,{variant:"rectangular",width:"100%",height:36,sx:t({borderRadius:2},null==n?void 0:n.sx)}):o(c,{variant:"circular",width:32,height:32,sx:t({},null==n?void 0:n.sx)})};export{p as ButtonIconAddToPackage,m as ButtonIconAddToPackageSkeleton,d as EBtnAddToPackage};
2
2
  //# sourceMappingURL=btn.icon.add-to-package.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"btn.icon.add-to-package.js","sources":["../../src/action-license/btn.icon.add-to-package.tsx"],"sourcesContent":["import { Skeleton } from '@mui/material'\r\nimport { alpha, Button, IconButton, Stack, Tooltip } from '@mui/material'\r\nimport BookmarkAddOutlinedIcon from '@mui/icons-material/BookmarkAddOutlined'\r\nimport { HelpOutlinePulseIcon } from 'dinocollab-core/components'\r\nimport type { FC } from 'react'\r\nimport type { ButtonProps, IconButtonProps, TooltipProps } from '@mui/material'\r\n\r\nexport enum EBtnAddToPackage {\r\n Icon = 'icon',\r\n Button = 'button'\r\n}\r\nexport interface BtnIconAddToPackageProps<T> {\r\n product?: T\r\n buttonProps?: ButtonProps\r\n tooltipProps?: Partial<TooltipProps>\r\n helpProps?: Partial<IconButtonProps> & Record<string, any>\r\n kind?: EBtnAddToPackage\r\n addToCart: (item: T) => void\r\n}\r\n\r\nexport const ButtonIconAddToPackage = <T,>({\r\n product,\r\n buttonProps,\r\n tooltipProps,\r\n helpProps,\r\n kind = EBtnAddToPackage.Icon,\r\n addToCart\r\n}: BtnIconAddToPackageProps<T>) => {\r\n if (!product) return <ButtonIconAddToPackageSkeleton kind={kind} buttonProps={buttonProps} />\r\n switch (kind) {\r\n case EBtnAddToPackage.Button:\r\n return (\r\n <Stack direction='row' justifyContent='space-between' alignItems='center' position={'relative'}>\r\n <Button\r\n startIcon={<BookmarkAddOutlinedIcon fontSize='small' />}\r\n fullWidth\r\n type='submit'\r\n variant='contained'\r\n color='success'\r\n onClick={() => addToCart(product)}\r\n {...buttonProps}\r\n >\r\n Add to Playlist\r\n </Button>\r\n <Tooltip title='Read more about our services' placement='left'>\r\n <IconButton\r\n sx={{\r\n position: 'absolute',\r\n right: '-11px',\r\n bottom: '-11px',\r\n color: (theme) => alpha(theme.palette.primary.main, 0.8),\r\n backgroundColor: (theme) => theme.palette.background.paper,\r\n '&:hover': {\r\n backgroundColor: (theme) => theme.palette.background.paper\r\n }\r\n }}\r\n size='small'\r\n onClick={(e) => e.stopPropagation()}\r\n {...helpProps}\r\n >\r\n <HelpOutlinePulseIcon />\r\n </IconButton>\r\n </Tooltip>\r\n </Stack>\r\n )\r\n default:\r\n return (\r\n <Tooltip title='Add to Playlist' arrow placement={'top'} {...tooltipProps}>\r\n <IconButton variant='contained' color='inherit' size='small' onClick={() => addToCart(product)} {...buttonProps}>\r\n <BookmarkAddOutlinedIcon fontSize='small' sx={{ fontSize: 18 }} />\r\n </IconButton>\r\n </Tooltip>\r\n )\r\n }\r\n}\r\n\r\n// Skeleton for loading state\r\n\r\ninterface ButtonIconAddToPackageSkeletonProps {\r\n kind?: EBtnAddToPackage\r\n buttonProps?: ButtonProps\r\n}\r\n\r\nexport const ButtonIconAddToPackageSkeleton: FC<ButtonIconAddToPackageSkeletonProps> = ({ buttonProps, kind = EBtnAddToPackage.Icon }) => {\r\n if (kind === EBtnAddToPackage.Button) {\r\n return <Skeleton variant='rectangular' width={'100%'} height={36} sx={{ borderRadius: 2, ...buttonProps?.sx }} />\r\n }\r\n return <Skeleton variant='circular' width={32} height={32} sx={{ ...buttonProps?.sx }} />\r\n}\r\n"],"names":["EBtnAddToPackage","ButtonIconAddToPackage","_ref","product","buttonProps","tooltipProps","helpProps","_ref$kind","kind","Icon","addToCart","Button","_jsxs","Stack","direction","justifyContent","alignItems","position","_jsx","_objectSpread","startIcon","BookmarkAddOutlinedIcon","fontSize","fullWidth","type","variant","color","onClick","children","Tooltip","title","placement","IconButton","sx","right","bottom","theme","alpha","palette","primary","main","backgroundColor","background","paper","size","e","stopPropagation","HelpOutlinePulseIcon","arrow","ButtonIconAddToPackageSkeleton","_ref2","_ref2$kind","Skeleton","width","height","borderRadius"],"mappings":"gWAOYA,GAAZ,SAAYA,GACVA,EAAA,KAAA,OACAA,EAAA,OAAA,QACD,CAHD,CAAYA,IAAAA,EAGX,CAAA,QAUYC,EAAyB,SAAHC,GAOD,IANhCC,EAAOD,EAAPC,QACAC,EAAWF,EAAXE,YACAC,EAAYH,EAAZG,aACAC,EAASJ,EAATI,UAASC,EAAAL,EACTM,KAAAA,OAAI,IAAAD,EAAGP,EAAiBS,KAAIF,EAC5BG,EAASR,EAATQ,UAEA,OAAKP,EACGK,IACDR,EAAiBW,OAElBC,EAACC,EAAK,CAACC,UAAU,MAAMC,eAAe,gBAAgBC,WAAW,SAASC,SAAU,qBAClFC,EAACP,EAAMQ,EAAAA,EAAA,CACLC,UAAWF,EAACG,EAAwB,CAAAC,SAAS,UAC7CC,aACAC,KAAK,SACLC,QAAQ,YACRC,MAAM,UACNC,QAAS,WAAF,OAAQjB,EAAUP,EAAQ,GAC7BC,GAAW,GAAA,CAAAwB,SAAA,qBAIjBV,EAACW,EAAQ,CAAAC,MAAM,+BAA+BC,UAAU,OACtDH,SAAAV,EAACc,EAAUb,EAAAA,EAAA,CACTc,GAAI,CACFhB,SAAU,WACViB,MAAO,QACPC,OAAQ,QACRT,MAAO,SAACU,GAAK,OAAKC,EAAMD,EAAME,QAAQC,QAAQC,KAAM,GAAI,EACxDC,gBAAiB,SAACL,GAAK,OAAKA,EAAME,QAAQI,WAAWC,KAAK,EAC1D,UAAW,CACTF,gBAAiB,SAACL,GAAK,OAAKA,EAAME,QAAQI,WAAWC,KAAK,IAG9DC,KAAK,QACLjB,QAAS,SAACkB,GAAC,OAAKA,EAAEC,iBAAiB,GAC/BxC,GAAS,GAAA,CAEbsB,SAAAV,EAAC6B,EAAoB,CAAA,WAO3B7B,EAACW,EAAOV,EAAAA,EAAA,CAACW,MAAM,kBAAkBkB,OAAK,EAACjB,UAAW,OAAW1B,GAAY,GAAA,CAAAuB,SACvEV,EAACc,EAAUb,EAAAA,EAAA,CAACM,QAAQ,YAAYC,MAAM,UAAUkB,KAAK,QAAQjB,QAAS,WAAF,OAAQjB,EAAUP,EAAQ,GAAMC,GAAW,GAAA,CAC7GwB,SAAAV,EAACG,EAAuB,CAACC,SAAS,QAAQW,GAAI,CAAEX,SAAU,YAzC/CJ,EAAC+B,EAA8B,CAACzC,KAAMA,EAAMJ,YAAaA,GA8ChF,EASa6C,EAA0E,SAA5CC,GAA8F,IAA/C9C,EAAW8C,EAAX9C,YAAW+C,EAAAD,EAAE1C,KACrG,YADyG,IAAA2C,EAAGnD,EAAiBS,KAAI0C,KACpHnD,EAAiBW,OACrBO,EAACkC,EAAS,CAAA3B,QAAQ,cAAc4B,MAAO,OAAQC,OAAQ,GAAIrB,GAAEd,EAAA,CAAIoC,aAAc,GAAMnD,aAAAA,EAAAA,EAAa6B,MAEpGf,EAACkC,EAAQ,CAAC3B,QAAQ,WAAW4B,MAAO,GAAIC,OAAQ,GAAIrB,GAAEd,EAAOf,CAAAA,EAAAA,aAAW,EAAXA,EAAa6B,KACnF"}
1
+ {"version":3,"file":"btn.icon.add-to-package.js","sources":["../../src/action-license/btn.icon.add-to-package.tsx"],"sourcesContent":["import { Skeleton } from '@mui/material'\r\nimport { alpha, Button, IconButton, Stack, Tooltip } from '@mui/material'\r\nimport BookmarkAddOutlinedIcon from '@mui/icons-material/BookmarkAddOutlined'\r\nimport { HelpOutlinePulseIcon } from 'dinocollab-core/components'\r\nimport type { FC } from 'react'\r\nimport type { ButtonProps, IconButtonProps, TooltipProps } from '@mui/material'\r\n\r\nexport enum EBtnAddToPackage {\r\n Icon = 'icon',\r\n Button = 'button'\r\n}\r\nexport interface BtnIconAddToPackageProps<T> {\r\n product?: T\r\n buttonProps?: ButtonProps\r\n tooltipProps?: Partial<TooltipProps>\r\n helpProps?: Partial<IconButtonProps> & Record<string, unknown>\r\n kind?: EBtnAddToPackage\r\n onClick: (item: T, e: React.MouseEvent<HTMLButtonElement>) => void\r\n}\r\n\r\nexport const ButtonIconAddToPackage = <T,>({\r\n product,\r\n buttonProps,\r\n tooltipProps,\r\n helpProps,\r\n kind = EBtnAddToPackage.Icon,\r\n onClick\r\n}: BtnIconAddToPackageProps<T>) => {\r\n if (!product) return <ButtonIconAddToPackageSkeleton kind={kind} buttonProps={buttonProps} />\r\n switch (kind) {\r\n case EBtnAddToPackage.Button:\r\n return (\r\n <Stack direction='row' justifyContent='space-between' alignItems='center' position={'relative'}>\r\n <Button\r\n startIcon={<BookmarkAddOutlinedIcon fontSize='small' />}\r\n fullWidth\r\n type='submit'\r\n variant='contained'\r\n color='success'\r\n onClick={(e) => onClick && onClick(product, e)}\r\n {...buttonProps}\r\n >\r\n Add to Playlist\r\n </Button>\r\n <Tooltip title='Read more about our services' placement='left'>\r\n <IconButton\r\n sx={{\r\n position: 'absolute',\r\n right: '-11px',\r\n bottom: '-11px',\r\n color: (theme) => alpha(theme.palette.primary.main, 0.8),\r\n backgroundColor: (theme) => theme.palette.background.paper,\r\n backgroundImage: 'linear-gradient(rgba(255, 255, 255, 0.165), rgba(255, 255, 255, 0.165))',\r\n '&:hover': {\r\n backgroundColor: (theme) => theme.palette.background.paper\r\n }\r\n }}\r\n size='small'\r\n onClick={(e) => e.stopPropagation()}\r\n {...helpProps}\r\n >\r\n <HelpOutlinePulseIcon />\r\n </IconButton>\r\n </Tooltip>\r\n </Stack>\r\n )\r\n default:\r\n return (\r\n <Tooltip title='Add to Playlist' arrow placement={'top'} {...tooltipProps}>\r\n <IconButton variant='contained' color='inherit' size='small' onClick={(e) => onClick && onClick(product, e)} {...buttonProps}>\r\n <BookmarkAddOutlinedIcon fontSize='small' sx={{ fontSize: 18 }} />\r\n </IconButton>\r\n </Tooltip>\r\n )\r\n }\r\n}\r\n\r\n// Skeleton for loading state\r\n\r\ninterface ButtonIconAddToPackageSkeletonProps {\r\n kind?: EBtnAddToPackage\r\n buttonProps?: ButtonProps\r\n}\r\n\r\nexport const ButtonIconAddToPackageSkeleton: FC<ButtonIconAddToPackageSkeletonProps> = ({ buttonProps, kind = EBtnAddToPackage.Icon }) => {\r\n if (kind === EBtnAddToPackage.Button) {\r\n return <Skeleton variant='rectangular' width={'100%'} height={36} sx={{ borderRadius: 2, ...buttonProps?.sx }} />\r\n }\r\n return <Skeleton variant='circular' width={32} height={32} sx={{ ...buttonProps?.sx }} />\r\n}\r\n"],"names":["EBtnAddToPackage","ButtonIconAddToPackage","_ref","product","buttonProps","tooltipProps","helpProps","_ref$kind","kind","Icon","onClick","Button","_jsxs","Stack","direction","justifyContent","alignItems","position","children","_jsx","_objectSpread","startIcon","BookmarkAddOutlinedIcon","fontSize","fullWidth","type","variant","color","e","Tooltip","title","placement","IconButton","sx","right","bottom","theme","alpha","palette","primary","main","backgroundColor","background","paper","backgroundImage","size","stopPropagation","HelpOutlinePulseIcon","arrow","ButtonIconAddToPackageSkeleton","_ref2","_ref2$kind","Skeleton","width","height","borderRadius"],"mappings":"gWAOYA,GAAZ,SAAYA,GACVA,EAAA,KAAA,OACAA,EAAA,OAAA,QACD,CAHD,CAAYA,IAAAA,EAGX,CAAA,QAUYC,EAAyB,SAAHC,GAOD,IANhCC,EAAOD,EAAPC,QACAC,EAAWF,EAAXE,YACAC,EAAYH,EAAZG,aACAC,EAASJ,EAATI,UAASC,EAAAL,EACTM,KAAAA,OAAI,IAAAD,EAAGP,EAAiBS,KAAIF,EAC5BG,EAAOR,EAAPQ,QAEA,OAAKP,EACGK,IACDR,EAAiBW,OAElBC,EAACC,EAAM,CAAAC,UAAU,MAAMC,eAAe,gBAAgBC,WAAW,SAASC,SAAU,WAClFC,SAAA,CAAAC,EAACR,EAAMS,EAAAA,EAAA,CACLC,UAAWF,EAACG,EAAwB,CAAAC,SAAS,UAC7CC,aACAC,KAAK,SACLC,QAAQ,YACRC,MAAM,UACNjB,QAAS,SAACkB,GAAC,OAAKlB,GAAWA,EAAQP,EAASyB,EAAE,GAC1CxB,GAAW,GAAA,CAGRc,SAAA,qBACTC,EAACU,EAAO,CAACC,MAAM,+BAA+BC,UAAU,OAAMb,SAC5DC,EAACa,EAAUZ,EAAAA,EAAA,CACTa,GAAI,CACFhB,SAAU,WACViB,MAAO,QACPC,OAAQ,QACRR,MAAO,SAACS,GAAK,OAAKC,EAAMD,EAAME,QAAQC,QAAQC,KAAM,GAAI,EACxDC,gBAAiB,SAACL,GAAK,OAAKA,EAAME,QAAQI,WAAWC,KAAK,EAC1DC,gBAAiB,0EACjB,UAAW,CACTH,gBAAiB,SAACL,GAAK,OAAKA,EAAME,QAAQI,WAAWC,KAAK,IAG9DE,KAAK,QACLnC,QAAS,SAACkB,GAAC,OAAKA,EAAEkB,iBAAiB,GAC/BxC,GAAS,GAAA,CAEbY,SAAAC,EAAC4B,EAAoB,CAAA,WAO3B5B,EAACU,EAAOT,EAAAA,EAAA,CAACU,MAAM,kBAAkBkB,OAAK,EAACjB,UAAW,OAAW1B,GAAY,GAAA,CACvEa,SAAAC,EAACa,EAAUZ,EAAAA,EAAA,CAACM,QAAQ,YAAYC,MAAM,UAAUkB,KAAK,QAAQnC,QAAS,SAACkB,GAAC,OAAKlB,GAAWA,EAAQP,EAASyB,EAAE,GAAMxB,GAAW,GAAA,UAC1He,EAACG,EAAwB,CAAAC,SAAS,QAAQU,GAAI,CAAEV,SAAU,YA1C/CJ,EAAC8B,EAA8B,CAACzC,KAAMA,EAAMJ,YAAaA,GA+ChF,EASa6C,EAA0E,SAA5CC,GAA8F,IAA/C9C,EAAW8C,EAAX9C,YAAW+C,EAAAD,EAAE1C,KACrG,YADyG,IAAA2C,EAAGnD,EAAiBS,KAAI0C,KACpHnD,EAAiBW,OACrBQ,EAACiC,EAAS,CAAA1B,QAAQ,cAAc2B,MAAO,OAAQC,OAAQ,GAAIrB,GAAEb,EAAA,CAAImC,aAAc,GAAMnD,aAAAA,EAAAA,EAAa6B,MAEpGd,EAACiC,EAAQ,CAAC1B,QAAQ,WAAW2B,MAAO,GAAIC,OAAQ,GAAIrB,GAAEb,EAAOhB,CAAAA,EAAAA,aAAW,EAAXA,EAAa6B,KACnF"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as e,inherits as o,createClass as t,objectSpread2 as r,classCallCheck as i,callSuper as a}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as l,jsx as n}from"react/jsx-runtime";import{Component as c}from"react";import{styled as s,Box as d,alpha as p,Stack as u,Tooltip as m,IconButton as h,RadioGroup as f,FormControlLabel as v,Typography as x,Radio as g}from"@mui/material";import{CheckCircle as b}from"@mui/icons-material";import C from"@mui/icons-material/HelpOutline";import I from"@mui/icons-material/AddShoppingCart";import{quickToCartClasses as P}from"./type.js";import{AppButtonOrange as k}from"../buttons.js";var y=function(){function s(o){var t,r,c,d,p;i(this,s),p=a(this,s,[o]),e(p,"renderRadioGroup",function(){var e,o,t,r,i=null!==(e=null===(o=p.props.data)||void 0===o?void 0:o.Prices)&&void 0!==e?e:[],a=p.props.config;return n(f,{name:"PriceSelectedId",value:null!==(t=null===(r=p.state.Value)||void 0===r?void 0:r.toString())&&void 0!==t?t:null,onChange:p.handleChange,sx:{padding:"0",margin:"0",flexDirection:"row",gap:1},children:i.map(function(e,o){var t,r=p.state.Value===e.Id;return n(v,{value:e.Id,control:n(g,{sx:{display:"none"}}),className:P.itemWrap,sx:{border:"1px solid ".concat(e.Color+"70"),boxShadow:"0 2px 4px ".concat(e.Color+"20")},label:l(u,{className:P.item,px:.5,flexDirection:{sx:"column",md:"column"},children:[r&&n(b,{className:P.checkCircle}),n(x,{className:P.itemName,sx:{color:e.Color},children:e.Name}),n(x,{className:P.itemPrice,children:(null===(t=a.formatPrice)||void 0===t?void 0:t.call(a,e.Price))||"$".concat(e.Price)})]})},o)})})}),e(p,"handleChange",function(e,o){var t=null!=o?o:"";p.setState({Value:t})}),p.priceIdOld=p.props.currentPricePackageId;var m=null!==(t=null===(r=p.props.data)||void 0===r?void 0:r.Prices)&&void 0!==t?t:[],h=null===(c=m[Math.floor(m.length/2)])||void 0===c?void 0:c.Id;return p.state={Value:p.priceIdOld||h||(null===(d=m[0])||void 0===d?void 0:d.Id)},p}return o(s,c),t(s,[{key:"render",value:function(){var e=this.props.disabled||!!this.priceIdOld&&this.priceIdOld===this.state.Value,o=[P.root,"form-quickly-add-to-cart"].join(" "),t=this.props.config;return l(S,{className:o,children:[this.renderRadioGroup(),l(u,{flexDirection:"row",justifyContent:"space-between",alignItems:"center",className:P.content,children:[n(k,{startIcon:t.buttonIcon||n(I,{fontSize:"small"}),fullWidth:!0,type:"submit",variant:"contained",color:"success",disabled:e,children:this.priceIdOld?t.updateButtonText||"Update Cart":t.addButtonText||"Add to Cart"}),n(m,{title:t.helpTooltip||"Read more about our services",placement:"left",children:n(h,r(r({className:P.helpIcon,size:"small"},t.helpProps||{}),{},{children:n(C,{})}))})]})]})}}])}(),N=function(e,o){return"".concat("",".").concat(P[e]).concat("")},S=s(d)(function(o){var t=o.theme;return e(e(e(e(e(e(e({},N("content"),{marginTop:"12px",position:"relative"}),N("helpIcon"),{position:"absolute",right:"-11px",bottom:"-11px",color:p(t.palette.primary.main,.8),backgroundColor:t.palette.background.paper,"&:hover":{backgroundColor:t.palette.background.paper}}),N("checkCircle"),{position:"absolute",top:-8,right:-8,fontSize:"18px",color:"#4caf50",zIndex:1,backgroundColor:"white",borderRadius:"50%"}),N("itemWrap"),{marginInline:0,padding:"5px",borderRadius:"10px",flexGrow:1,position:"relative","& .MuiFormControlLabel-label":{flexGrow:1}}),N("item"),{display:"flex",alignItems:"center",justifyContent:"space-between",flexGrow:1}),N("itemName"),{fontSize:"12px",fontWeight:700}),N("itemPrice"),{fontSize:"12px",color:"dark"===t.palette.mode?t.palette.text.secondary:"#606060"})});export{y as FormContentBase,S as QuickAddToCartStyled};
1
+ import{defineProperty as e,inherits as r,createClass as o,objectSpread2 as t,classCallCheck as a,callSuper as i}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as l,jsx as n}from"react/jsx-runtime";import{Component as c}from"react";import{styled as d,Box as s,alpha as p,Stack as u,Tooltip as m,IconButton as h,RadioGroup as f,FormControlLabel as g,Typography as v,Radio as b}from"@mui/material";import{CheckCircle as x}from"@mui/icons-material";import C from"@mui/icons-material/HelpOutline";import I from"@mui/icons-material/AddShoppingCart";import{quickToCartClasses as k}from"./type.js";import{AppButtonOrange as P}from"../buttons.js";var y=function(){function d(r){var o,t,c,s,p;a(this,d),p=i(this,d,[r]),e(p,"renderRadioGroup",function(){var e,r,o,t,a=null!==(e=null===(r=p.props.data)||void 0===r?void 0:r.Prices)&&void 0!==e?e:[],i=p.props.config;return n(f,{name:"PriceSelectedId",value:null!==(o=null===(t=p.state.Value)||void 0===t?void 0:t.toString())&&void 0!==o?o:null,onChange:p.handleChange,sx:{padding:"0",margin:"0",flexDirection:"row",gap:1},children:a.map(function(e,r){var o,t=p.state.Value===e.Id;return n(g,{value:e.Id,control:n(b,{sx:{display:"none"}}),className:k.itemWrap,sx:{border:"1px solid ".concat(e.Color+"70"),boxShadow:"0 2px 4px ".concat(e.Color+"20")},label:l(u,{className:k.item,px:.5,flexDirection:{sx:"column",md:"column"},children:[t&&n(x,{className:k.checkCircle}),n(v,{className:k.itemName,sx:{color:e.Color},children:e.Name}),n(v,{className:k.itemPrice,children:(null===(o=i.formatPrice)||void 0===o?void 0:o.call(i,e.Price))||"$".concat(e.Price)})]})},r)})})}),e(p,"handleChange",function(e,r){var o=null!=r?r:"";p.setState({Value:o})}),p.priceIdOld=p.props.currentPricePackageId;var m=null!==(o=null===(t=p.props.data)||void 0===t?void 0:t.Prices)&&void 0!==o?o:[],h=null===(c=m[Math.floor(m.length/2)])||void 0===c?void 0:c.Id;return p.state={Value:p.priceIdOld||h||(null===(s=m[0])||void 0===s?void 0:s.Id)},p}return r(d,c),o(d,[{key:"render",value:function(){var e=this.props.disabled||!!this.priceIdOld&&this.priceIdOld===this.state.Value,r=[k.root,"form-quickly-add-to-cart"].join(" "),o=this.props.config;return l(S,{className:r,children:[this.renderRadioGroup(),l(u,{flexDirection:"row",justifyContent:"space-between",alignItems:"center",className:k.content,children:[n(P,{startIcon:o.buttonIcon||n(I,{fontSize:"small"}),fullWidth:!0,type:"submit",variant:"contained",color:"success",disabled:e,children:this.priceIdOld?o.updateButtonText||"Update Cart":o.addButtonText||"Add to Cart"}),n(m,{title:o.helpTooltip||"Read more about our services",placement:"left",children:n(h,t(t({className:k.helpIcon,size:"small"},o.helpProps||{}),{},{children:n(C,{})}))})]})]})}}])}(),N=function(e,r){return"".concat("",".").concat(k[e]).concat("")},S=d(s)(function(r){var o=r.theme;return e(e(e(e(e(e(e({},N("content"),{marginTop:"12px",position:"relative"}),N("helpIcon"),{position:"absolute",right:"-11px",bottom:"-11px",color:p(o.palette.primary.main,.8),backgroundColor:o.palette.background.paper,backgroundImage:"linear-gradient(rgba(255, 255, 255, 0.165), rgba(255, 255, 255, 0.165))","&:hover":{backgroundColor:o.palette.background.paper}}),N("checkCircle"),{position:"absolute",top:-8,right:-8,fontSize:"18px",color:"#4caf50",zIndex:1,backgroundColor:o.palette.background.paper,borderRadius:"50%"}),N("itemWrap"),{marginInline:0,padding:"5px",borderRadius:"10px",flexGrow:1,position:"relative",backgroundColor:p(o.palette.background.paper,.5),"& .MuiFormControlLabel-label":{flexGrow:1}}),N("item"),{display:"flex",alignItems:"center",justifyContent:"space-between",flexGrow:1}),N("itemName"),{fontSize:"12px",fontWeight:700}),N("itemPrice"),{fontSize:"12px",color:o.palette.text.primary})});export{y as FormContentBase,S as QuickAddToCartStyled};
2
2
  //# sourceMappingURL=content.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"content.js","sources":["../../../src/action-license/quickly-add-to-cart/content.tsx"],"sourcesContent":["import { Component, ComponentType } from 'react'\r\nimport { styled, alpha, Box, FormControlLabel, IconButton, Radio, RadioGroup, Stack, Tooltip, Typography } from '@mui/material'\r\nimport { CheckCircle } from '@mui/icons-material'\r\nimport HelpOutlineIcon from '@mui/icons-material/HelpOutline'\r\nimport AddShoppingCartIcon from '@mui/icons-material/AddShoppingCart'\r\nimport type { BoxProps } from '@mui/material'\r\nimport type { IFormBase } from 'dinocollab-core/form'\r\nimport { IPricePackage } from '../types'\r\nimport { quickToCartClasses } from './type'\r\nimport { AppButtonOrange } from '../buttons'\r\nimport type { IFormQuicklyAddToCartData, IQuicklyAddToCartConfig } from './type'\r\n\r\ninterface IState {\r\n Value?: string\r\n}\r\n\r\ninterface IFormContentProps<TProduct, TPrices extends IPricePackage> extends IFormBase<IFormQuicklyAddToCartData<TProduct, TPrices>> {\r\n currentPricePackageId?: string\r\n config: IQuicklyAddToCartConfig\r\n}\r\n\r\nexport class FormContentBase<TProduct, TPrices extends IPricePackage> extends Component<IFormContentProps<TProduct, TPrices>, IState> {\r\n priceIdOld?: string\r\n constructor(props: IFormContentProps<TProduct, TPrices>) {\r\n super(props)\r\n this.priceIdOld = this.props.currentPricePackageId\r\n const prices = this.props.data?.Prices ?? []\r\n const middleIndex = Math.floor(prices.length / 2)\r\n const middlePrice = prices[middleIndex]?.Id\r\n\r\n this.state = { Value: this.priceIdOld || middlePrice || prices[0]?.Id }\r\n }\r\n\r\n render() {\r\n const disabled = this.props.disabled || (!!this.priceIdOld && this.priceIdOld === this.state.Value)\r\n const classes = [quickToCartClasses.root, 'form-quickly-add-to-cart'].join(' ')\r\n const { config } = this.props\r\n\r\n return (\r\n <QuickAddToCartStyled className={classes}>\r\n {this.renderRadioGroup()}\r\n <Stack flexDirection='row' justifyContent='space-between' alignItems='center' className={quickToCartClasses.content}>\r\n <AppButtonOrange\r\n startIcon={config.buttonIcon || <AddShoppingCartIcon fontSize='small' />}\r\n fullWidth\r\n type='submit'\r\n variant='contained'\r\n color='success'\r\n disabled={disabled}\r\n >\r\n {this.priceIdOld ? config.updateButtonText || 'Update Cart' : config.addButtonText || 'Add to Cart'}\r\n </AppButtonOrange>\r\n <Tooltip title={config.helpTooltip || 'Read more about our services'} placement='left'>\r\n <IconButton className={quickToCartClasses.helpIcon} size='small' {...(config.helpProps || {})}>\r\n <HelpOutlineIcon />\r\n </IconButton>\r\n </Tooltip>\r\n </Stack>\r\n </QuickAddToCartStyled>\r\n )\r\n }\r\n\r\n renderRadioGroup = () => {\r\n const list = this.props.data?.Prices ?? []\r\n const { config } = this.props\r\n\r\n return (\r\n <RadioGroup\r\n name='PriceSelectedId'\r\n value={this.state.Value?.toString() ?? null}\r\n onChange={this.handleChange}\r\n sx={{ padding: '0', margin: '0', flexDirection: 'row', gap: 1 }}\r\n >\r\n {list.map((e, i) => {\r\n const isSelected = this.state.Value === e.Id\r\n return (\r\n <FormControlLabel\r\n key={i}\r\n value={e.Id}\r\n control={<Radio sx={{ display: 'none' }} />}\r\n className={quickToCartClasses.itemWrap}\r\n sx={{ border: `1px solid ${e.Color + '70'}`, boxShadow: `0 2px 4px ${e.Color + '20'}` }}\r\n label={\r\n <Stack className={quickToCartClasses.item} px={0.5} flexDirection={{ sx: 'column', md: 'column' }}>\r\n {isSelected && <CheckCircle className={quickToCartClasses.checkCircle} />}\r\n <Typography className={quickToCartClasses.itemName} sx={{ color: e.Color }}>\r\n {e.Name}\r\n </Typography>\r\n <Typography className={quickToCartClasses.itemPrice}>{config.formatPrice?.(e.Price) || `$${e.Price}`}</Typography>\r\n </Stack>\r\n }\r\n />\r\n )\r\n })}\r\n </RadioGroup>\r\n )\r\n }\r\n\r\n handleChange = (_: React.ChangeEvent<HTMLInputElement>, value: string) => {\r\n const id: string = value ?? ''\r\n this.setState({ Value: id })\r\n }\r\n}\r\n\r\nconst getClass = (key: keyof typeof quickToCartClasses, options?: { prefix?: string; suffix?: string }) => {\r\n return `${options?.prefix || ''}.${quickToCartClasses[key]}${options?.suffix || ''}`\r\n}\r\n\r\nexport const QuickAddToCartStyled: ComponentType<BoxProps & { [key: string]: any }> = styled(Box)(({ theme }) => ({\r\n // [getClass('root', { prefix: '&' })]: {\r\n // // paddingTop: '10px'\r\n // },\r\n [getClass('content')]: {\r\n marginTop: '12px',\r\n position: 'relative'\r\n },\r\n [getClass('helpIcon')]: {\r\n position: 'absolute',\r\n right: '-11px',\r\n bottom: '-11px',\r\n color: alpha(theme.palette.primary.main, 0.8),\r\n backgroundColor: theme.palette.background.paper,\r\n '&:hover': {\r\n backgroundColor: theme.palette.background.paper\r\n }\r\n },\r\n [getClass('checkCircle')]: {\r\n position: 'absolute',\r\n top: -8,\r\n right: -8,\r\n fontSize: '18px',\r\n color: '#4caf50',\r\n zIndex: 1,\r\n backgroundColor: 'white',\r\n borderRadius: '50%'\r\n },\r\n [getClass('itemWrap')]: {\r\n marginInline: 0,\r\n padding: '5px',\r\n borderRadius: '10px',\r\n flexGrow: 1,\r\n position: 'relative',\r\n '& .MuiFormControlLabel-label': { flexGrow: 1 }\r\n },\r\n [getClass('item')]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n flexGrow: 1\r\n },\r\n [getClass('itemName')]: {\r\n fontSize: '12px',\r\n fontWeight: 700\r\n },\r\n [getClass('itemPrice')]: {\r\n fontSize: '12px',\r\n color: theme.palette.mode === 'dark' ? theme.palette.text.secondary : '#606060'\r\n }\r\n}))\r\n"],"names":["FormContentBase","props","_this$props$data$Pric2","_this$props$data2","_prices$middleIndex","_prices$","_this","_classCallCheck","_callSuper","_defineProperty","_this$props$data$Pric","_this$props$data","_this$state$Value$toS","_this$state$Value","list","data","Prices","config","_jsx","RadioGroup","name","value","state","Value","toString","onChange","handleChange","sx","padding","margin","flexDirection","gap","children","map","e","i","_config$formatPrice","isSelected","Id","FormControlLabel","control","Radio","display","className","quickToCartClasses","itemWrap","border","concat","Color","boxShadow","label","_jsxs","Stack","item","px","md","CheckCircle","checkCircle","Typography","itemName","color","Name","itemPrice","formatPrice","call","Price","_","id","setState","priceIdOld","currentPricePackageId","prices","middlePrice","Math","floor","length","_inherits","Component","_createClass","key","disabled","this","classes","root","join","QuickAddToCartStyled","renderRadioGroup","justifyContent","alignItems","content","AppButtonOrange","startIcon","buttonIcon","AddShoppingCartIcon","fontSize","fullWidth","type","variant","updateButtonText","addButtonText","Tooltip","title","helpTooltip","placement","IconButton","_objectSpread","helpIcon","size","helpProps","HelpOutlineIcon","getClass","options","styled","Box","_ref","theme","marginTop","position","right","bottom","alpha","palette","primary","main","backgroundColor","background","paper","top","zIndex","borderRadius","marginInline","flexGrow","fontWeight","mode","text","secondary"],"mappings":"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"}
1
+ {"version":3,"file":"content.js","sources":["../../../src/action-license/quickly-add-to-cart/content.tsx"],"sourcesContent":["import { Component, ComponentType } from 'react'\r\nimport { styled, alpha, Box, FormControlLabel, IconButton, Radio, RadioGroup, Stack, Tooltip, Typography } from '@mui/material'\r\nimport { CheckCircle } from '@mui/icons-material'\r\nimport HelpOutlineIcon from '@mui/icons-material/HelpOutline'\r\nimport AddShoppingCartIcon from '@mui/icons-material/AddShoppingCart'\r\nimport { quickToCartClasses } from './type'\r\nimport { AppButtonOrange } from '../buttons'\r\nimport type { IFormBase } from 'dinocollab-core/form'\r\nimport type { BoxProps } from '@mui/material'\r\nimport type { IPricePackage } from '../types'\r\nimport type { IFormQuicklyAddToCartData, IQuicklyAddToCartConfig } from './type'\r\n\r\ninterface IState {\r\n Value?: string\r\n}\r\n\r\ninterface IFormContentProps<TProduct, TPrices extends IPricePackage> extends IFormBase<IFormQuicklyAddToCartData<TProduct, TPrices>> {\r\n currentPricePackageId?: string\r\n config: IQuicklyAddToCartConfig\r\n}\r\n\r\nexport class FormContentBase<TProduct, TPrices extends IPricePackage> extends Component<IFormContentProps<TProduct, TPrices>, IState> {\r\n priceIdOld?: string\r\n constructor(props: IFormContentProps<TProduct, TPrices>) {\r\n super(props)\r\n this.priceIdOld = this.props.currentPricePackageId\r\n const prices = this.props.data?.Prices ?? []\r\n const middleIndex = Math.floor(prices.length / 2)\r\n const middlePrice = prices[middleIndex]?.Id\r\n\r\n this.state = { Value: this.priceIdOld || middlePrice || prices[0]?.Id }\r\n }\r\n\r\n render() {\r\n const disabled = this.props.disabled || (!!this.priceIdOld && this.priceIdOld === this.state.Value)\r\n const classes = [quickToCartClasses.root, 'form-quickly-add-to-cart'].join(' ')\r\n const { config } = this.props\r\n\r\n return (\r\n <QuickAddToCartStyled className={classes}>\r\n {this.renderRadioGroup()}\r\n <Stack flexDirection='row' justifyContent='space-between' alignItems='center' className={quickToCartClasses.content}>\r\n <AppButtonOrange\r\n startIcon={config.buttonIcon || <AddShoppingCartIcon fontSize='small' />}\r\n fullWidth\r\n type='submit'\r\n variant='contained'\r\n color='success'\r\n disabled={disabled}\r\n >\r\n {this.priceIdOld ? config.updateButtonText || 'Update Cart' : config.addButtonText || 'Add to Cart'}\r\n </AppButtonOrange>\r\n <Tooltip title={config.helpTooltip || 'Read more about our services'} placement='left'>\r\n <IconButton className={quickToCartClasses.helpIcon} size='small' {...(config.helpProps || {})}>\r\n <HelpOutlineIcon />\r\n </IconButton>\r\n </Tooltip>\r\n </Stack>\r\n </QuickAddToCartStyled>\r\n )\r\n }\r\n\r\n renderRadioGroup = () => {\r\n const list = this.props.data?.Prices ?? []\r\n const { config } = this.props\r\n\r\n return (\r\n <RadioGroup\r\n name='PriceSelectedId'\r\n value={this.state.Value?.toString() ?? null}\r\n onChange={this.handleChange}\r\n sx={{ padding: '0', margin: '0', flexDirection: 'row', gap: 1 }}\r\n >\r\n {list.map((e, i) => {\r\n const isSelected = this.state.Value === e.Id\r\n return (\r\n <FormControlLabel\r\n key={i}\r\n value={e.Id}\r\n control={<Radio sx={{ display: 'none' }} />}\r\n className={quickToCartClasses.itemWrap}\r\n sx={{ border: `1px solid ${e.Color + '70'}`, boxShadow: `0 2px 4px ${e.Color + '20'}` }}\r\n label={\r\n <Stack className={quickToCartClasses.item} px={0.5} flexDirection={{ sx: 'column', md: 'column' }}>\r\n {isSelected && <CheckCircle className={quickToCartClasses.checkCircle} />}\r\n <Typography className={quickToCartClasses.itemName} sx={{ color: e.Color }}>\r\n {e.Name}\r\n </Typography>\r\n <Typography className={quickToCartClasses.itemPrice}>{config.formatPrice?.(e.Price) || `$${e.Price}`}</Typography>\r\n </Stack>\r\n }\r\n />\r\n )\r\n })}\r\n </RadioGroup>\r\n )\r\n }\r\n\r\n handleChange = (_: React.ChangeEvent<HTMLInputElement>, value: string) => {\r\n const id: string = value ?? ''\r\n this.setState({ Value: id })\r\n }\r\n}\r\n\r\nconst getClass = (key: keyof typeof quickToCartClasses, options?: { prefix?: string; suffix?: string }) => {\r\n return `${options?.prefix || ''}.${quickToCartClasses[key]}${options?.suffix || ''}`\r\n}\r\n\r\nexport const QuickAddToCartStyled: ComponentType<BoxProps & { [key: string]: any }> = styled(Box)(({ theme }) => ({\r\n // [getClass('root', { prefix: '&' })]: {\r\n // // paddingTop: '10px'\r\n // },\r\n [getClass('content')]: {\r\n marginTop: '12px',\r\n position: 'relative'\r\n },\r\n [getClass('helpIcon')]: {\r\n position: 'absolute',\r\n right: '-11px',\r\n bottom: '-11px',\r\n color: alpha(theme.palette.primary.main, 0.8),\r\n backgroundColor: theme.palette.background.paper,\r\n backgroundImage: 'linear-gradient(rgba(255, 255, 255, 0.165), rgba(255, 255, 255, 0.165))',\r\n '&:hover': {\r\n backgroundColor: theme.palette.background.paper\r\n }\r\n },\r\n [getClass('checkCircle')]: {\r\n position: 'absolute',\r\n top: -8,\r\n right: -8,\r\n fontSize: '18px',\r\n color: '#4caf50',\r\n zIndex: 1,\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: '50%'\r\n },\r\n [getClass('itemWrap')]: {\r\n marginInline: 0,\r\n padding: '5px',\r\n borderRadius: '10px',\r\n flexGrow: 1,\r\n position: 'relative',\r\n backgroundColor: alpha(theme.palette.background.paper, 0.5),\r\n '& .MuiFormControlLabel-label': { flexGrow: 1 }\r\n },\r\n [getClass('item')]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n flexGrow: 1\r\n },\r\n [getClass('itemName')]: {\r\n fontSize: '12px',\r\n fontWeight: 700\r\n },\r\n [getClass('itemPrice')]: {\r\n fontSize: '12px',\r\n color: theme.palette.text.primary\r\n }\r\n}))\r\n"],"names":["FormContentBase","props","_this$props$data$Pric2","_this$props$data2","_prices$middleIndex","_prices$","_this","_classCallCheck","_callSuper","_defineProperty","_this$props$data$Pric","_this$props$data","_this$state$Value$toS","_this$state$Value","list","data","Prices","config","_jsx","RadioGroup","name","value","state","Value","toString","onChange","handleChange","sx","padding","margin","flexDirection","gap","children","map","e","i","_config$formatPrice","isSelected","Id","FormControlLabel","control","Radio","display","className","quickToCartClasses","itemWrap","border","concat","Color","boxShadow","label","_jsxs","Stack","item","px","md","CheckCircle","checkCircle","Typography","itemName","color","Name","itemPrice","formatPrice","call","Price","_","id","setState","priceIdOld","currentPricePackageId","prices","middlePrice","Math","floor","length","_inherits","Component","_createClass","key","disabled","this","classes","root","join","QuickAddToCartStyled","renderRadioGroup","justifyContent","alignItems","content","AppButtonOrange","startIcon","buttonIcon","AddShoppingCartIcon","fontSize","fullWidth","type","variant","updateButtonText","addButtonText","Tooltip","title","helpTooltip","placement","IconButton","_objectSpread","helpIcon","size","helpProps","HelpOutlineIcon","getClass","options","styled","Box","_ref","theme","marginTop","position","right","bottom","alpha","palette","primary","main","backgroundColor","background","paper","backgroundImage","top","zIndex","borderRadius","marginInline","flexGrow","fontWeight","text"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{slicedToArray as r}from"../_virtual/_rollupPluginBabelHelpers.js";import{useRef as t,useState as e,useEffect as a}from"react";import{cartService as n}from"./service.js";function i(){var i=t(!1),u=e(n.getCarts()),o=r(u,2),c=o[0],d=o[1];return a(function(){i.current||(n.initialize(),i.current=!0);var r=n.subscribe("stateChange",function(r){var t=r.items,e=Array.isArray(t)?t:Object.values(t);d(e)});return function(){r&&r()}},[]),{items:c}}function u(){var r=function(r){return r.ProductId};return{idGetter:r,addToCart:function(r){n.addToCart(r)},updateCart:function(r,t){n.updateCart(r,t)},updateOrAddCart:function(r,t){n.updateOrAddCart(r,t)},removeFromCart:function(t){var e=n.getCarts().find(function(e){return r(e)===t});e&&n.removeFromCart(e)},clearCart:function(){n.clearCart()}}}export{u as useCartActions,i as useCartStore};
1
+ import{slicedToArray as r}from"../_virtual/_rollupPluginBabelHelpers.js";import{useRef as t,useState as e,useEffect as n}from"react";import{cartService as a}from"./service.js";function i(){var i=t(!1),o=e(a.getCarts()),u=r(o,2),c=u[0],d=u[1];return n(function(){i.current||(a.initialize(),i.current=!0);var r=a.subscribe("stateChange",function(r){var t=r.items,e=Array.isArray(t)?t:Object.values(t);d(e)});return function(){r&&r()}},[]),{items:c,options:a.getOptions()}}function o(){var r=function(r){return r.ProductId};return{idGetter:r,addToCart:function(r){a.addToCart(r)},updateCart:function(r,t){a.updateCart(r,t)},updateOrAddCart:function(r,t){a.updateOrAddCart(r,t)},removeFromCart:function(t){var e=a.getCarts().find(function(e){return r(e)===t});e&&a.removeFromCart(e)},clearCart:function(){a.clearCart()}}}export{o as useCartActions,i as useCartStore};
2
2
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../src/cart/hooks.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react'\r\nimport { ICartItem } from './types'\r\nimport { cartService } from './service'\r\n\r\nexport function useCartStore<T extends ICartItem = ICartItem>() {\r\n const initializedRef = useRef(false)\r\n const [items, setItems] = useState<T[]>(cartService.getCarts() as T[])\r\n\r\n useEffect(() => {\r\n // Load initial items\r\n // const initialItems = cartService.getCarts() as T[]\r\n // setItems(initialItems)\r\n\r\n // Initialize and subscribe to changes\r\n if (!initializedRef.current) {\r\n cartService.initialize()\r\n initializedRef.current = true\r\n }\r\n\r\n const unsubscribe = cartService.subscribe('stateChange', ({ items }) => {\r\n const itemArray = Array.isArray(items) ? items : Object.values(items)\r\n setItems(itemArray as T[])\r\n })\r\n\r\n return () => {\r\n if (unsubscribe) unsubscribe()\r\n }\r\n }, [])\r\n\r\n return { items }\r\n}\r\n\r\nexport function useCartActions<T extends ICartItem = ICartItem>() {\r\n const idGetter = (item: T) => item.ProductId\r\n\r\n const addToCart = (item: T) => {\r\n cartService.addToCart(item)\r\n }\r\n\r\n const updateCart = (id: string, updates: Partial<T>) => {\r\n cartService.updateCart(id, updates)\r\n }\r\n\r\n const updateOrAddCart = (id: string, updates: Partial<T>) => {\r\n cartService.updateOrAddCart(id, updates)\r\n }\r\n\r\n const removeFromCart = (id: string) => {\r\n const items = cartService.getCarts() as T[]\r\n const itemToRemove = items.find((item) => idGetter(item) === id)\r\n if (itemToRemove) {\r\n cartService.removeFromCart(itemToRemove)\r\n }\r\n }\r\n\r\n const clearCart = () => {\r\n cartService.clearCart()\r\n }\r\n\r\n return { idGetter, addToCart, updateCart, updateOrAddCart, removeFromCart, clearCart }\r\n}\r\n"],"names":["useCartStore","initializedRef","useRef","_useState","useState","cartService","getCarts","_useState2","_slicedToArray","items","setItems","useEffect","current","initialize","unsubscribe","subscribe","_ref","itemArray","Array","isArray","Object","values","useCartActions","idGetter","item","ProductId","addToCart","updateCart","id","updates","updateOrAddCart","removeFromCart","itemToRemove","find","clearCart"],"mappings":"yLAIgBA,IACd,IAAMC,EAAiBC,GAAO,GAC9BC,EAA0BC,EAAcC,EAAYC,YAAkBC,EAAAC,EAAAL,EAAA,GAA/DM,EAAKF,EAAA,GAAEG,EAAQH,EAAA,GAuBtB,OArBAI,EAAU,WAMHV,EAAeW,UAClBP,EAAYQ,aACZZ,EAAeW,SAAU,GAG3B,IAAME,EAAcT,EAAYU,UAAU,cAAe,SAAAC,GAAc,IAAXP,EAAKO,EAALP,MACpDQ,EAAYC,MAAMC,QAAQV,GAASA,EAAQW,OAAOC,OAAOZ,GAC/DC,EAASO,EACX,GAEA,OAAO,WACDH,GAAaA,GAClB,CACF,EAAE,IAEI,CAAEL,MAAAA,EACX,UAEgBa,IACd,IAAMC,EAAW,SAACC,GAAO,OAAKA,EAAKC,SAAS,EA0B5C,MAAO,CAAEF,SAAAA,EAAUG,UAxBD,SAACF,GACjBnB,EAAYqB,UAAUF,EACvB,EAsB6BG,WApBX,SAACC,EAAYC,GAC9BxB,EAAYsB,WAAWC,EAAIC,EAC5B,EAkByCC,gBAhBlB,SAACF,EAAYC,GACnCxB,EAAYyB,gBAAgBF,EAAIC,EACjC,EAc0DE,eAZpC,SAACH,GACtB,IACMI,EADQ3B,EAAYC,WACC2B,KAAK,SAACT,GAAI,OAAKD,EAASC,KAAUI,IACzDI,GACF3B,EAAY0B,eAAeC,EAE9B,EAM0EE,UAJzD,WAChB7B,EAAY6B,WACb,EAGH"}
1
+ {"version":3,"file":"hooks.js","sources":["../../src/cart/hooks.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react'\r\nimport { ICartItem } from './types'\r\nimport { cartService } from './service'\r\n\r\nexport function useCartStore<T extends ICartItem = ICartItem>() {\r\n const initializedRef = useRef(false)\r\n const [items, setItems] = useState<T[]>(cartService.getCarts() as T[])\r\n\r\n useEffect(() => {\r\n // Load initial items\r\n // const initialItems = cartService.getCarts() as T[]\r\n // setItems(initialItems)\r\n\r\n // Initialize and subscribe to changes\r\n if (!initializedRef.current) {\r\n cartService.initialize()\r\n initializedRef.current = true\r\n }\r\n\r\n const unsubscribe = cartService.subscribe('stateChange', ({ items }) => {\r\n const itemArray = Array.isArray(items) ? items : Object.values(items)\r\n setItems(itemArray as T[])\r\n })\r\n\r\n return () => {\r\n if (unsubscribe) unsubscribe()\r\n }\r\n }, [])\r\n\r\n return { items, options: cartService.getOptions() }\r\n}\r\n\r\nexport function useCartActions<T extends ICartItem = ICartItem>() {\r\n const idGetter = (item: T) => item.ProductId\r\n\r\n const addToCart = (item: T) => {\r\n cartService.addToCart(item)\r\n }\r\n\r\n const updateCart = (id: string, updates: Partial<T>) => {\r\n cartService.updateCart(id, updates)\r\n }\r\n\r\n const updateOrAddCart = (id: string, updates: Partial<T>) => {\r\n cartService.updateOrAddCart(id, updates)\r\n }\r\n\r\n const removeFromCart = (id: string) => {\r\n const items = cartService.getCarts() as T[]\r\n const itemToRemove = items.find((item) => idGetter(item) === id)\r\n if (itemToRemove) {\r\n cartService.removeFromCart(itemToRemove)\r\n }\r\n }\r\n\r\n const clearCart = () => {\r\n cartService.clearCart()\r\n }\r\n\r\n return { idGetter, addToCart, updateCart, updateOrAddCart, removeFromCart, clearCart }\r\n}\r\n"],"names":["useCartStore","initializedRef","useRef","_useState","useState","cartService","getCarts","_useState2","_slicedToArray","items","setItems","useEffect","current","initialize","unsubscribe","subscribe","_ref","itemArray","Array","isArray","Object","values","options","getOptions","useCartActions","idGetter","item","ProductId","addToCart","updateCart","id","updates","updateOrAddCart","removeFromCart","itemToRemove","find","clearCart"],"mappings":"yLAIgBA,IACd,IAAMC,EAAiBC,GAAO,GAC9BC,EAA0BC,EAAcC,EAAYC,YAAkBC,EAAAC,EAAAL,EAAA,GAA/DM,EAAKF,EAAA,GAAEG,EAAQH,EAAA,GAuBtB,OArBAI,EAAU,WAMHV,EAAeW,UAClBP,EAAYQ,aACZZ,EAAeW,SAAU,GAG3B,IAAME,EAAcT,EAAYU,UAAU,cAAe,SAAAC,GAAc,IAAXP,EAAKO,EAALP,MACpDQ,EAAYC,MAAMC,QAAQV,GAASA,EAAQW,OAAOC,OAAOZ,GAC/DC,EAASO,EACX,GAEA,OAAO,WACDH,GAAaA,GAClB,CACF,EAAE,IAEI,CAAEL,MAAAA,EAAOa,QAASjB,EAAYkB,aACvC,UAEgBC,IACd,IAAMC,EAAW,SAACC,GAAO,OAAKA,EAAKC,SAAS,EA0B5C,MAAO,CAAEF,SAAAA,EAAUG,UAxBD,SAACF,GACjBrB,EAAYuB,UAAUF,EACvB,EAsB6BG,WApBX,SAACC,EAAYC,GAC9B1B,EAAYwB,WAAWC,EAAIC,EAC5B,EAkByCC,gBAhBlB,SAACF,EAAYC,GACnC1B,EAAY2B,gBAAgBF,EAAIC,EACjC,EAc0DE,eAZpC,SAACH,GACtB,IACMI,EADQ7B,EAAYC,WACC6B,KAAK,SAACT,GAAI,OAAKD,EAASC,KAAUI,IACzDI,GACF7B,EAAY4B,eAAeC,EAE9B,EAM0EE,UAJzD,WAChB/B,EAAY+B,WACb,EAGH"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as e,createClass as o,toConsumableArray as r,objectSpread2 as t,classCallCheck as a}from"../_virtual/_rollupPluginBabelHelpers.js";import{ApiAlertContext as i}from"dinocollab-core/api-context";import{createObjectSingleton as l,tryParseArray as n}from"dinocollab-core/utils";import{CartEventStore as s}from"./event-store.js";import{MAX_LINKS as c,MAX_ITEMS as u}from"./configs.js";var d=o(function o(){a(this,o),e(this,"localStorageKey","__cart_default__"),e(this,"maxLinks",c),e(this,"maxItems",u),e(this,"store",new s)}),v=function(){function s(){a(this,s),e(this,"isValidCart",function(e){var o=s.provider.maxItems,r=s.provider.maxLinks,t=!0;o>-1&&(t=e.items.length<=o);var a=!0;return r>-1&&(a=e.items.every(function(e){return n(e.SocialUrl,[]).length<=r})),t&&a})}return o(s,[{key:"initialize",value:function(){var e;null===(e=s.provider.store)||void 0===e||e.emit("requestState",{})}},{key:"subscribe",value:function(e,o){var r;return null===(r=s.provider.store)||void 0===r?void 0:r.subscribe(e,o)}},{key:"getCarts",value:function(){var e;return null!==(e=this.loadFromLocalStorage().items)&&void 0!==e?e:[]}},{key:"addToCart",value:function(e){var o,t=this.loadFromLocalStorage(),a=Array.isArray(e)?e:[e],i=[].concat(r(null!==(o=t.items)&&void 0!==o?o:[]),r(a));this.saveToLocalStorage(i)}},{key:"removeFromCart",value:function(e){var o,r=this.loadFromLocalStorage(),t=Array.isArray(e)?e:[e],a=(null!==(o=r.items)&&void 0!==o?o:[]).filter(function(e){return!t.some(function(o){return o.ProductId===e.ProductId})});this.saveToLocalStorage(a)}},{key:"updateCart",value:function(e,o){var r,a=(null!==(r=this.loadFromLocalStorage().items)&&void 0!==r?r:[]).map(function(r){return r.ProductId===e?t(t({},r),o):r});this.saveToLocalStorage(a)}},{key:"updateOrAddCart",value:function(e,o){var a,i=this.loadFromLocalStorage(),l=(null!==(a=i.items)&&void 0!==a?a:[]).findIndex(function(o){return o.ProductId===e});if(-1!==l){var n,s=r(null!==(n=i.items)&&void 0!==n?n:[]);s[l]=t(t({},s[l]),o),this.saveToLocalStorage(s)}else this.addToCart(t({ProductId:e},o))}},{key:"clearCart",value:function(){this.saveToLocalStorage([])}},{key:"loadFromLocalStorage",value:function(){var e={version:"1.0",items:[]};try{if("undefined"!=typeof globalThis&&globalThis.localStorage){var o,r=localStorage.getItem(s.provider.localStorageKey),t=r?JSON.parse(r):null;Boolean(null==t||null===(o=t.items)||void 0===o?void 0:o.length)&&(e=t)}}catch(e){console.error("Error loading carts from localStorage:",e)}return e}},{key:"saveToLocalStorage",value:function(e){if(this.isValidCart({version:"1.0",items:e})){if("undefined"!=typeof globalThis&&globalThis.localStorage)if(s.provider.localStorageKey){var o,r={version:"1.0",items:e};localStorage.setItem(s.provider.localStorageKey,JSON.stringify(r)),null===(o=s.provider.store)||void 0===o||o.emit("stateChange",{items:e})}else console.warn("No localStorageKey provided, skipping storage")}else this.notifyValidationError()}},{key:"notifyValidationError",value:function(){var e,o=s.provider.maxItems,r=s.provider.maxLinks,t=["Max items: ".concat(o>-1?o:"unlimited"),"Max links per item: ".concat(r>-1?r:"unlimited")];null===(e=i.ApiAlert)||void 0===e||e.PushInfo("Cart limit exceeded. ".concat(t.join(", "),". Please review your cart."))}}],[{key:"provider",get:function(){var e;return null!==(e=l(s.key_provider).get())&&void 0!==e?e:new d}},{key:"setProvider",value:function(e){l(s.key_provider).set(null!=e?e:new d)}},{key:"setOptions",value:function(e){var o=s.provider;void 0!==e.localStorageKey&&(o.localStorageKey=e.localStorageKey),void 0!==e.maxItems&&(o.maxItems=e.maxItems),void 0!==e.maxLinks&&(o.maxLinks=e.maxLinks),s.setProvider(o)}}])}();e(v,"key_provider","__cart_key_provider__");var m=new v;export{v as CartService,m as cartService};
1
+ import{defineProperty as e,createClass as o,toConsumableArray as r,objectSpread2 as t,classCallCheck as a}from"../_virtual/_rollupPluginBabelHelpers.js";import{ApiAlertContext as i}from"dinocollab-core/api-context";import{createObjectSingleton as l,tryParseArray as n}from"dinocollab-core/utils";import{CartEventStore as s}from"./event-store.js";import{MAX_LINKS as c,MAX_ITEMS as u}from"./configs.js";var v=o(function o(){a(this,o),e(this,"localStorageKey","__cart_default__"),e(this,"maxLinks",c),e(this,"maxItems",u),e(this,"store",new s)}),d=function(){function s(){a(this,s),e(this,"isValidCart",function(e){var o=s.provider.maxItems,r=s.provider.maxLinks,t=!0;o>-1&&(t=e.items.length<=o);var a=!0;return r>-1&&(a=e.items.every(function(e){return n(e.SocialUrl,[]).length<=r})),t&&a})}return o(s,[{key:"initialize",value:function(){var e;null===(e=s.provider.store)||void 0===e||e.emit("requestState",{})}},{key:"subscribe",value:function(e,o){var r;return null===(r=s.provider.store)||void 0===r?void 0:r.subscribe(e,o)}},{key:"getOptions",value:function(){var e=s.provider;return{localStorageKey:e.localStorageKey,maxItems:e.maxItems,maxLinks:e.maxLinks}}},{key:"getCarts",value:function(){var e;return null!==(e=this.loadFromLocalStorage().items)&&void 0!==e?e:[]}},{key:"addToCart",value:function(e){var o,t=this.loadFromLocalStorage(),a=Array.isArray(e)?e:[e],i=[].concat(r(null!==(o=t.items)&&void 0!==o?o:[]),r(a));this.saveToLocalStorage(i)}},{key:"removeFromCart",value:function(e){var o,r=this.loadFromLocalStorage(),t=Array.isArray(e)?e:[e],a=(null!==(o=r.items)&&void 0!==o?o:[]).filter(function(e){return!t.some(function(o){return o.ProductId===e.ProductId})});this.saveToLocalStorage(a)}},{key:"updateCart",value:function(e,o){var r,a=(null!==(r=this.loadFromLocalStorage().items)&&void 0!==r?r:[]).map(function(r){return r.ProductId===e?t(t({},r),o):r});this.saveToLocalStorage(a)}},{key:"updateOrAddCart",value:function(e,o){var a,i=this.loadFromLocalStorage(),l=(null!==(a=i.items)&&void 0!==a?a:[]).findIndex(function(o){return o.ProductId===e});if(-1!==l){var n,s=r(null!==(n=i.items)&&void 0!==n?n:[]);s[l]=t(t({},s[l]),o),this.saveToLocalStorage(s)}else this.addToCart(t({ProductId:e},o))}},{key:"clearCart",value:function(){this.saveToLocalStorage([])}},{key:"loadFromLocalStorage",value:function(){var e={version:"1.0",items:[]};try{if("undefined"!=typeof globalThis&&globalThis.localStorage){var o,r=localStorage.getItem(s.provider.localStorageKey),t=r?JSON.parse(r):null;Boolean(null==t||null===(o=t.items)||void 0===o?void 0:o.length)&&(e=t)}}catch(e){console.error("Error loading carts from localStorage:",e)}return e}},{key:"saveToLocalStorage",value:function(e){if(this.isValidCart({version:"1.0",items:e})){if("undefined"!=typeof globalThis&&globalThis.localStorage)if(s.provider.localStorageKey){var o,r={version:"1.0",items:e};localStorage.setItem(s.provider.localStorageKey,JSON.stringify(r)),null===(o=s.provider.store)||void 0===o||o.emit("stateChange",{items:e})}else console.warn("No localStorageKey provided, skipping storage")}else this.notifyValidationError()}},{key:"notifyValidationError",value:function(){var e,o=s.provider.maxItems,r=s.provider.maxLinks,t=["Max items: ".concat(o>-1?o:"unlimited"),"Max links per item: ".concat(r>-1?r:"unlimited")];null===(e=i.ApiAlert)||void 0===e||e.PushInfo("Cart limit exceeded. ".concat(t.join(", "),". Please review your cart."))}}],[{key:"provider",get:function(){var e;return null!==(e=l(s.key_provider).get())&&void 0!==e?e:new v}},{key:"setProvider",value:function(e){l(s.key_provider).set(null!=e?e:new v)}},{key:"setOptions",value:function(e){var o=s.provider;void 0!==e.localStorageKey&&(o.localStorageKey=e.localStorageKey),void 0!==e.maxItems&&(o.maxItems=e.maxItems),void 0!==e.maxLinks&&(o.maxLinks=e.maxLinks),s.setProvider(o)}}])}();e(d,"key_provider","__cart_key_provider__");var m=new d;export{d as CartService,m as cartService};
2
2
  //# sourceMappingURL=service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sources":["../../src/cart/service.ts"],"sourcesContent":["import { ApiAlertContext } from 'dinocollab-core/api-context'\r\nimport { createObjectSingleton, tryParseArray } from 'dinocollab-core/utils'\r\nimport { ICartItem, ICartOptions } from './types'\r\nimport { CartEventStore } from './event-store'\r\nimport { MAX_ITEMS, MAX_LINKS } from './configs'\r\n\r\nexport interface ICartMetadata<T extends ICartItem = ICartItem> {\r\n version: string\r\n items: T[]\r\n}\r\n\r\nexport interface ICartProvider extends ICartOptions {\r\n store?: CartEventStore\r\n}\r\n\r\nclass CartProviderDefault implements ICartProvider {\r\n localStorageKey = '__cart_default__'\r\n maxLinks = MAX_LINKS\r\n maxItems = MAX_ITEMS\r\n store = new CartEventStore()\r\n}\r\n\r\nexport class CartService<T extends ICartItem = ICartItem> {\r\n static key_provider = '__cart_key_provider__'\r\n static get provider(): ICartProvider {\r\n const ObjectProvider = createObjectSingleton<ICartProvider>(CartService.key_provider)\r\n return ObjectProvider.get() ?? new CartProviderDefault()\r\n }\r\n static setProvider(provider: ICartProvider) {\r\n const ObjectProvider = createObjectSingleton<ICartProvider>(CartService.key_provider)\r\n ObjectProvider.set(provider ?? new CartProviderDefault())\r\n }\r\n static setOptions(options: { localStorageKey?: string; maxItems?: number; maxLinks?: number }) {\r\n const provider = CartService.provider\r\n if (options.localStorageKey !== undefined) provider.localStorageKey = options.localStorageKey\r\n if (options.maxItems !== undefined) provider.maxItems = options.maxItems\r\n if (options.maxLinks !== undefined) provider.maxLinks = options.maxLinks\r\n CartService.setProvider(provider)\r\n }\r\n\r\n initialize() {\r\n CartService.provider.store?.emit('requestState', {})\r\n }\r\n\r\n subscribe(event: string, callback: (...args: any[]) => void) {\r\n return CartService.provider.store?.subscribe(event as any, callback as any)\r\n }\r\n\r\n getCarts(): T[] {\r\n const storedItems = this.loadFromLocalStorage()\r\n return storedItems.items ?? []\r\n }\r\n\r\n addToCart(cartItem: T | T[]): void {\r\n const storedItems = this.loadFromLocalStorage()\r\n const itemsToAdd = Array.isArray(cartItem) ? cartItem : [cartItem]\r\n const updatedItems = [...(storedItems.items ?? []), ...itemsToAdd]\r\n this.saveToLocalStorage(updatedItems)\r\n }\r\n\r\n removeFromCart(cartItem: T | T[]): void {\r\n const storedItems = this.loadFromLocalStorage()\r\n const itemsToRemove = Array.isArray(cartItem) ? cartItem : [cartItem]\r\n const updatedItems = (storedItems.items ?? []).filter((x) => !itemsToRemove.some((y) => y.ProductId === x.ProductId))\r\n this.saveToLocalStorage(updatedItems)\r\n }\r\n\r\n updateCart(productId: string, updates: Partial<T>): void {\r\n const storedItems = this.loadFromLocalStorage()\r\n const updatedItems = (storedItems.items ?? []).map((item) => (item.ProductId === productId ? { ...item, ...updates } : item))\r\n this.saveToLocalStorage(updatedItems)\r\n }\r\n\r\n updateOrAddCart(productId: string, updates: Partial<T>): void {\r\n const storedItems = this.loadFromLocalStorage()\r\n const existingIndex = (storedItems.items ?? []).findIndex((item) => item.ProductId === productId)\r\n\r\n if (existingIndex !== -1) {\r\n const updatedItems = [...(storedItems.items ?? [])]\r\n updatedItems[existingIndex] = { ...updatedItems[existingIndex], ...updates }\r\n this.saveToLocalStorage(updatedItems)\r\n } else {\r\n this.addToCart({ ProductId: productId, ...updates } as T)\r\n }\r\n }\r\n\r\n clearCart(): void {\r\n this.saveToLocalStorage([])\r\n }\r\n\r\n private loadFromLocalStorage(): ICartMetadata<T> {\r\n const defaultValue: ICartMetadata<T> = { version: '1.0', items: [] }\r\n let data = defaultValue\r\n try {\r\n // Check if running in client environment with localStorage available\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n const temp = localStorage.getItem(CartService.provider.localStorageKey!)\r\n const tempParsed = temp ? JSON.parse(temp) : null\r\n if (Boolean(tempParsed?.items?.length)) data = tempParsed\r\n }\r\n } catch (error) {\r\n console.error('Error loading carts from localStorage:', error)\r\n }\r\n return data\r\n }\r\n\r\n private saveToLocalStorage(items: T[]) {\r\n const isValid = this.isValidCart({ version: '1.0', items })\r\n if (!isValid) {\r\n this.notifyValidationError()\r\n return\r\n }\r\n // Check if running in client environment with localStorage available\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n if (CartService.provider.localStorageKey) {\r\n const value: ICartMetadata<T> = { version: '1.0', items }\r\n localStorage.setItem(CartService.provider.localStorageKey, JSON.stringify(value))\r\n CartService.provider.store?.emit('stateChange', { items })\r\n } else {\r\n console.warn('No localStorageKey provided, skipping storage')\r\n }\r\n }\r\n }\r\n\r\n private isValidCart = (data: ICartMetadata<T>): boolean => {\r\n const maxItems = CartService.provider.maxItems!\r\n const maxLinks = CartService.provider.maxLinks!\r\n\r\n let isMaxItemsValid = true\r\n if (maxItems > -1) isMaxItemsValid = data.items.length <= maxItems\r\n\r\n let isMaxLinksValid = true\r\n if (maxLinks > -1) {\r\n isMaxLinksValid = data.items.every((item) => {\r\n const links = tryParseArray(item.SocialUrl, [])\r\n return links.length <= maxLinks\r\n })\r\n }\r\n return isMaxItemsValid && isMaxLinksValid\r\n }\r\n\r\n private notifyValidationError() {\r\n const maxItems = CartService.provider.maxItems!\r\n const maxLinks = CartService.provider.maxLinks!\r\n const texts = [`Max items: ${maxItems > -1 ? maxItems : 'unlimited'}`, `Max links per item: ${maxLinks > -1 ? maxLinks : 'unlimited'}`]\r\n ApiAlertContext.ApiAlert?.PushInfo(`Cart limit exceeded. ${texts.join(', ')}. Please review your cart.`)\r\n }\r\n}\r\n\r\nexport const cartService = new CartService<ICartItem>()\r\n"],"names":["CartProviderDefault","_createClass","_classCallCheck","_defineProperty","MAX_LINKS","MAX_ITEMS","this","CartEventStore","CartService","data","maxItems","provider","maxLinks","isMaxItemsValid","items","length","isMaxLinksValid","every","item","tryParseArray","SocialUrl","key","value","_CartService$provider","store","emit","event","callback","_CartService$provider2","subscribe","_storedItems$items","loadFromLocalStorage","cartItem","_storedItems$items2","storedItems","itemsToAdd","Array","isArray","updatedItems","concat","_toConsumableArray","saveToLocalStorage","_storedItems$items3","itemsToRemove","filter","x","some","y","ProductId","productId","updates","_storedItems$items4","map","_objectSpread","_storedItems$items5","existingIndex","findIndex","_storedItems$items6","addToCart","version","globalThis","localStorage","_tempParsed$items","temp","getItem","localStorageKey","tempParsed","JSON","parse","Boolean","error","console","isValidCart","_CartService$provider3","setItem","stringify","warn","notifyValidationError","_ApiAlertContext$ApiA","texts","ApiAlertContext","ApiAlert","PushInfo","join","get","_ObjectProvider$get","createObjectSingleton","key_provider","set","options","undefined","setProvider","cartService"],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sources":["../../src/cart/service.ts"],"sourcesContent":["import { ApiAlertContext } from 'dinocollab-core/api-context'\r\nimport { createObjectSingleton, tryParseArray } from 'dinocollab-core/utils'\r\nimport { ICartItem, ICartOptions } from './types'\r\nimport { CartEventStore } from './event-store'\r\nimport { MAX_ITEMS, MAX_LINKS } from './configs'\r\n\r\nexport interface ICartMetadata<T extends ICartItem = ICartItem> {\r\n version: string\r\n items: T[]\r\n}\r\n\r\nexport interface ICartProvider extends ICartOptions {\r\n store?: CartEventStore\r\n}\r\n\r\nclass CartProviderDefault implements ICartProvider {\r\n localStorageKey = '__cart_default__'\r\n maxLinks = MAX_LINKS\r\n maxItems = MAX_ITEMS\r\n store = new CartEventStore()\r\n}\r\n\r\nexport class CartService<T extends ICartItem = ICartItem> {\r\n static key_provider = '__cart_key_provider__'\r\n static get provider(): ICartProvider {\r\n const ObjectProvider = createObjectSingleton<ICartProvider>(CartService.key_provider)\r\n return ObjectProvider.get() ?? new CartProviderDefault()\r\n }\r\n static setProvider(provider: ICartProvider) {\r\n const ObjectProvider = createObjectSingleton<ICartProvider>(CartService.key_provider)\r\n ObjectProvider.set(provider ?? new CartProviderDefault())\r\n }\r\n static setOptions(options: { localStorageKey?: string; maxItems?: number; maxLinks?: number }) {\r\n const provider = CartService.provider\r\n if (options.localStorageKey !== undefined) provider.localStorageKey = options.localStorageKey\r\n if (options.maxItems !== undefined) provider.maxItems = options.maxItems\r\n if (options.maxLinks !== undefined) provider.maxLinks = options.maxLinks\r\n CartService.setProvider(provider)\r\n }\r\n\r\n initialize() {\r\n CartService.provider.store?.emit('requestState', {})\r\n }\r\n\r\n subscribe(event: string, callback: (...args: any[]) => void) {\r\n return CartService.provider.store?.subscribe(event as any, callback as any)\r\n }\r\n\r\n getOptions() {\r\n const { localStorageKey, maxItems, maxLinks } = CartService.provider\r\n return { localStorageKey, maxItems, maxLinks }\r\n }\r\n\r\n getCarts(): T[] {\r\n const storedItems = this.loadFromLocalStorage()\r\n return storedItems.items ?? []\r\n }\r\n\r\n addToCart(cartItem: T | T[]): void {\r\n const storedItems = this.loadFromLocalStorage()\r\n const itemsToAdd = Array.isArray(cartItem) ? cartItem : [cartItem]\r\n const updatedItems = [...(storedItems.items ?? []), ...itemsToAdd]\r\n this.saveToLocalStorage(updatedItems)\r\n }\r\n\r\n removeFromCart(cartItem: T | T[]): void {\r\n const storedItems = this.loadFromLocalStorage()\r\n const itemsToRemove = Array.isArray(cartItem) ? cartItem : [cartItem]\r\n const updatedItems = (storedItems.items ?? []).filter((x) => !itemsToRemove.some((y) => y.ProductId === x.ProductId))\r\n this.saveToLocalStorage(updatedItems)\r\n }\r\n\r\n updateCart(productId: string, updates: Partial<T>): void {\r\n const storedItems = this.loadFromLocalStorage()\r\n const updatedItems = (storedItems.items ?? []).map((item) => (item.ProductId === productId ? { ...item, ...updates } : item))\r\n this.saveToLocalStorage(updatedItems)\r\n }\r\n\r\n updateOrAddCart(productId: string, updates: Partial<T>): void {\r\n const storedItems = this.loadFromLocalStorage()\r\n const existingIndex = (storedItems.items ?? []).findIndex((item) => item.ProductId === productId)\r\n\r\n if (existingIndex !== -1) {\r\n const updatedItems = [...(storedItems.items ?? [])]\r\n updatedItems[existingIndex] = { ...updatedItems[existingIndex], ...updates }\r\n this.saveToLocalStorage(updatedItems)\r\n } else {\r\n this.addToCart({ ProductId: productId, ...updates } as T)\r\n }\r\n }\r\n\r\n clearCart(): void {\r\n this.saveToLocalStorage([])\r\n }\r\n\r\n private loadFromLocalStorage(): ICartMetadata<T> {\r\n const defaultValue: ICartMetadata<T> = { version: '1.0', items: [] }\r\n let data = defaultValue\r\n try {\r\n // Check if running in client environment with localStorage available\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n const temp = localStorage.getItem(CartService.provider.localStorageKey!)\r\n const tempParsed = temp ? JSON.parse(temp) : null\r\n if (Boolean(tempParsed?.items?.length)) data = tempParsed\r\n }\r\n } catch (error) {\r\n console.error('Error loading carts from localStorage:', error)\r\n }\r\n return data\r\n }\r\n\r\n private saveToLocalStorage(items: T[]) {\r\n const isValid = this.isValidCart({ version: '1.0', items })\r\n if (!isValid) {\r\n this.notifyValidationError()\r\n return\r\n }\r\n // Check if running in client environment with localStorage available\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n if (CartService.provider.localStorageKey) {\r\n const value: ICartMetadata<T> = { version: '1.0', items }\r\n localStorage.setItem(CartService.provider.localStorageKey, JSON.stringify(value))\r\n CartService.provider.store?.emit('stateChange', { items })\r\n } else {\r\n console.warn('No localStorageKey provided, skipping storage')\r\n }\r\n }\r\n }\r\n\r\n private isValidCart = (data: ICartMetadata<T>): boolean => {\r\n const maxItems = CartService.provider.maxItems!\r\n const maxLinks = CartService.provider.maxLinks!\r\n\r\n let isMaxItemsValid = true\r\n if (maxItems > -1) isMaxItemsValid = data.items.length <= maxItems\r\n\r\n let isMaxLinksValid = true\r\n if (maxLinks > -1) {\r\n isMaxLinksValid = data.items.every((item) => {\r\n const links = tryParseArray(item.SocialUrl, [])\r\n return links.length <= maxLinks\r\n })\r\n }\r\n return isMaxItemsValid && isMaxLinksValid\r\n }\r\n\r\n private notifyValidationError() {\r\n const maxItems = CartService.provider.maxItems!\r\n const maxLinks = CartService.provider.maxLinks!\r\n const texts = [`Max items: ${maxItems > -1 ? maxItems : 'unlimited'}`, `Max links per item: ${maxLinks > -1 ? maxLinks : 'unlimited'}`]\r\n ApiAlertContext.ApiAlert?.PushInfo(`Cart limit exceeded. ${texts.join(', ')}. Please review your cart.`)\r\n }\r\n}\r\n\r\nexport const cartService = new CartService<ICartItem>()\r\n"],"names":["CartProviderDefault","_createClass","_classCallCheck","_defineProperty","MAX_LINKS","MAX_ITEMS","this","CartEventStore","CartService","data","maxItems","provider","maxLinks","isMaxItemsValid","items","length","isMaxLinksValid","every","item","tryParseArray","SocialUrl","key","value","_CartService$provider","store","emit","event","callback","_CartService$provider2","subscribe","_CartService$provider3","localStorageKey","_storedItems$items","loadFromLocalStorage","cartItem","_storedItems$items2","storedItems","itemsToAdd","Array","isArray","updatedItems","concat","_toConsumableArray","saveToLocalStorage","_storedItems$items3","itemsToRemove","filter","x","some","y","ProductId","productId","updates","_storedItems$items4","map","_objectSpread","_storedItems$items5","existingIndex","findIndex","_storedItems$items6","addToCart","version","globalThis","localStorage","_tempParsed$items","temp","getItem","tempParsed","JSON","parse","Boolean","error","console","isValidCart","_CartService$provider4","setItem","stringify","warn","notifyValidationError","_ApiAlertContext$ApiA","texts","ApiAlertContext","ApiAlert","PushInfo","join","get","_ObjectProvider$get","createObjectSingleton","key_provider","set","options","undefined","setProvider","cartService"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{styled as r,Stack as o,Menu as t,Typography as a,alpha as e}from"@mui/material";var i=r(o)(function(r){var o=r.theme;return{"--color-bg":"dark"===o.palette.mode?"#121212":o.palette.background.paper,"--color-bg-rba":"dark"===o.palette.mode?"18, 18, 18":"255, 255, 255","--color-text":o.palette.text.primary,"--cart-color-bg":"var(--color-bg)",height:"100%"}}),p=r(t)(function(r){var o=r.theme;return{"--color-bg":"dark"===o.palette.mode?"#121212":o.palette.background.paper,"--color-text":o.palette.text.primary,"--cart-color-bg":"var(--color-bg)",marginTop:"45px","> .MuiPaper-root":{position:"relative",overflow:"visible",display:"flex",flexDirection:"column",backgroundColor:"var(--color-bg, #000000)",borderRadius:o.shape.borderRadius,minWidth:"280px",maxWidth:"550px",boxShadow:"0 1px 1px rgba(0, 0, 0, 0.05), 0 2px 2px rgba(0, 0, 0, 0.2), 0 4px 4px rgba(0, 0, 0, 0.15), 0 8px 8px rgba(0, 0, 0, 0.05)",animation:"fadeInDown 0.3s ease-out",marginTop:"8px",color:"var(--color-text, #000000)","@keyframes fadeInDown":{"0%":{opacity:0,transform:"translateY(-10px)"},"100%":{opacity:1,transform:"translateY(0)"}},"&::before":{content:'""',position:"absolute",backgroundColor:"var(--color-bg, #ffffff)",width:"10px",height:"10px",top:"-4px",right:o.spacing(1),transform:"translateX(-50%) rotate(45deg)",zIndex:0}},".MuiBackdrop-root":{backgroundColor:"transparent"},".MuiList-root":{padding:0,height:"100%",minHeight:0,maxHeight:"60vh"}}}),n=r(a)(function(r){var o=r.theme;return{fontWeight:700,fontSize:"0.75rem",backgroundColor:e(o.palette.primary.main||"#E11D48",.1),padding:"2px 8px",borderRadius:"999px",display:"inline-block"}});export{n as ItemTag,p as MenuStyled,i as Root};
1
+ import{styled as r,Stack as a,Menu as t,Typography as o,alpha as e}from"@mui/material";var p=r(a)(function(r){var a=r.theme;return{"--color-bg":a.palette.background.paper,"--color-bg-rba":"dark"===a.palette.mode?"18, 18, 18":"255, 255, 255","--color-text":a.palette.text.primary,"--cart-color-bg":"var(--color-bg)",height:"100%"}}),i=r(t)(function(r){var a=r.theme;return{"--color-bg":a.palette.background.paper,"--color-text":a.palette.text.primary,"--cart-color-bg":"var(--color-bg)",marginTop:"45px","> .MuiPaper-root":{position:"relative",overflow:"visible",display:"flex",flexDirection:"column",backgroundColor:a.palette.background.paper,borderRadius:a.shape.borderRadius,minWidth:"280px",maxWidth:"550px",boxShadow:"0 1px 1px rgba(0, 0, 0, 0.05), 0 2px 2px rgba(0, 0, 0, 0.2), 0 4px 4px rgba(0, 0, 0, 0.15), 0 8px 8px rgba(0, 0, 0, 0.05)",animation:"fadeInDown 0.3s ease-out",marginTop:"8px",color:a.palette.text.primary,"@keyframes fadeInDown":{"0%":{opacity:0,transform:"translateY(-10px)"},"100%":{opacity:1,transform:"translateY(0)"}},"&::before":{content:'""',position:"absolute",backgroundColor:a.palette.background.paper,backgroundImage:"linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))",width:"10px",height:"10px",top:"-4px",right:a.spacing(1),transform:"translateX(-50%) rotate(45deg)",zIndex:0}},".MuiBackdrop-root":{backgroundColor:"transparent"},".MuiList-root":{padding:0,height:"100%",minHeight:0,maxHeight:"60vh"}}}),n=r(o)(function(r){var a=r.theme;return{fontWeight:700,fontSize:"0.75rem",backgroundColor:e(a.palette.primary.main||"#E11D48",.1),padding:"2px 8px",borderRadius:"999px",display:"inline-block"}});export{n as ItemTag,i as MenuStyled,p as Root};
2
2
  //# sourceMappingURL=styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styled.js","sources":["../../src/cart/styled.tsx"],"sourcesContent":["import { alpha, Menu, Stack, styled, Typography } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\nimport type { MenuProps, StackProps, TypographyProps } from '@mui/material'\r\n\r\nexport const Root: ComponentType<StackProps> = styled(Stack)(({ theme }) => ({\r\n '--color-bg': theme.palette.mode === 'dark' ? '#121212' : theme.palette.background.paper,\r\n '--color-bg-rba': theme.palette.mode === 'dark' ? '18, 18, 18' : '255, 255, 255',\r\n '--color-text': theme.palette.text.primary,\r\n '--cart-color-bg': 'var(--color-bg)',\r\n height: '100%'\r\n}))\r\n\r\nexport const MenuStyled: ComponentType<MenuProps> = styled(Menu)(({ theme }) => ({\r\n '--color-bg': theme.palette.mode === 'dark' ? '#121212' : theme.palette.background.paper,\r\n '--color-text': theme.palette.text.primary,\r\n '--cart-color-bg': 'var(--color-bg)',\r\n marginTop: '45px',\r\n '> .MuiPaper-root': {\r\n position: 'relative',\r\n overflow: 'visible',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n backgroundColor: 'var(--color-bg, #000000)',\r\n borderRadius: theme.shape.borderRadius,\r\n minWidth: '280px',\r\n maxWidth: '550px',\r\n boxShadow: `0 1px 1px rgba(0, 0, 0, 0.05), 0 2px 2px rgba(0, 0, 0, 0.2), 0 4px 4px rgba(0, 0, 0, 0.15), 0 8px 8px rgba(0, 0, 0, 0.05)`,\r\n animation: 'fadeInDown 0.3s ease-out',\r\n marginTop: '8px',\r\n color: 'var(--color-text, #000000)',\r\n\r\n '@keyframes fadeInDown': {\r\n '0%': { opacity: 0, transform: 'translateY(-10px)' },\r\n '100%': { opacity: 1, transform: 'translateY(0)' }\r\n },\r\n\r\n '&::before': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n backgroundColor: 'var(--color-bg, #ffffff)',\r\n width: '10px',\r\n height: '10px',\r\n top: '-4px',\r\n right: theme.spacing(1),\r\n transform: 'translateX(-50%) rotate(45deg)',\r\n zIndex: 0\r\n }\r\n },\r\n '.MuiBackdrop-root': { backgroundColor: 'transparent' },\r\n '.MuiList-root': { padding: 0, height: '100%', minHeight: 0, maxHeight: '60vh' }\r\n}))\r\n\r\nexport const ItemTag: ComponentType<TypographyProps> = styled(Typography)(({ theme }) => ({\r\n fontWeight: 700,\r\n fontSize: '0.75rem',\r\n backgroundColor: alpha(theme.palette.primary.main || '#E11D48', 0.1),\r\n padding: '2px 8px',\r\n borderRadius: '999px',\r\n display: 'inline-block'\r\n}))\r\n"],"names":["Root","styled","Stack","_ref","theme","palette","mode","background","paper","text","primary","height","MenuStyled","Menu","_ref2","marginTop","position","overflow","display","flexDirection","backgroundColor","borderRadius","shape","minWidth","maxWidth","boxShadow","animation","color","opacity","transform","content","width","top","right","spacing","zIndex","padding","minHeight","maxHeight","ItemTag","Typography","_ref3","fontWeight","fontSize","alpha","main"],"mappings":"uFAIO,IAAMA,EAAkCC,EAAOC,EAAPD,CAAc,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAK,MAAQ,CAC3E,aAAqC,SAAvBA,EAAMC,QAAQC,KAAkB,UAAYF,EAAMC,QAAQE,WAAWC,MACnF,iBAAyC,SAAvBJ,EAAMC,QAAQC,KAAkB,aAAe,gBACjE,eAAgBF,EAAMC,QAAQI,KAAKC,QACnC,kBAAmB,kBACnBC,OAAQ,OACT,GAEYC,EAAuCX,EAAOY,EAAPZ,CAAa,SAAAa,GAAA,IAAGV,EAAKU,EAALV,MAAK,MAAQ,CAC/E,aAAqC,SAAvBA,EAAMC,QAAQC,KAAkB,UAAYF,EAAMC,QAAQE,WAAWC,MACnF,eAAgBJ,EAAMC,QAAQI,KAAKC,QACnC,kBAAmB,kBACnBK,UAAW,OACX,mBAAoB,CAClBC,SAAU,WACVC,SAAU,UACVC,QAAS,OACTC,cAAe,SACfC,gBAAiB,2BACjBC,aAAcjB,EAAMkB,MAAMD,aAC1BE,SAAU,QACVC,SAAU,QACVC,UAAsI,4HACtIC,UAAW,2BACXX,UAAW,MACXY,MAAO,6BAEP,wBAAyB,CACvB,KAAM,CAAEC,QAAS,EAAGC,UAAW,qBAC/B,OAAQ,CAAED,QAAS,EAAGC,UAAW,kBAGnC,YAAa,CACXC,QAAS,KACTd,SAAU,WACVI,gBAAiB,2BACjBW,MAAO,OACPpB,OAAQ,OACRqB,IAAK,OACLC,MAAO7B,EAAM8B,QAAQ,GACrBL,UAAW,iCACXM,OAAQ,IAGZ,oBAAqB,CAAEf,gBAAiB,eACxC,gBAAiB,CAAEgB,QAAS,EAAGzB,OAAQ,OAAQ0B,UAAW,EAAGC,UAAW,QACzE,GAEYC,EAA0CtC,EAAOuC,EAAPvC,CAAmB,SAAAwC,GAAA,IAAGrC,EAAKqC,EAALrC,MAAK,MAAQ,CACxFsC,WAAY,IACZC,SAAU,UACVvB,gBAAiBwB,EAAMxC,EAAMC,QAAQK,QAAQmC,MAAQ,UAAW,IAChET,QAAS,UACTf,aAAc,QACdH,QAAS,eACV"}
1
+ {"version":3,"file":"styled.js","sources":["../../src/cart/styled.tsx"],"sourcesContent":["import { alpha, Menu, Stack, styled, Typography } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\nimport type { MenuProps, StackProps, TypographyProps } from '@mui/material'\r\n\r\nexport const Root: ComponentType<StackProps> = styled(Stack)(({ theme }) => ({\r\n '--color-bg': theme.palette.background.paper,\r\n '--color-bg-rba': theme.palette.mode === 'dark' ? '18, 18, 18' : '255, 255, 255',\r\n '--color-text': theme.palette.text.primary,\r\n '--cart-color-bg': 'var(--color-bg)',\r\n height: '100%'\r\n}))\r\n\r\nexport const MenuStyled: ComponentType<MenuProps> = styled(Menu)(({ theme }) => ({\r\n '--color-bg': theme.palette.background.paper,\r\n '--color-text': theme.palette.text.primary,\r\n '--cart-color-bg': 'var(--color-bg)',\r\n marginTop: '45px',\r\n '> .MuiPaper-root': {\r\n position: 'relative',\r\n overflow: 'visible',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: theme.shape.borderRadius,\r\n minWidth: '280px',\r\n maxWidth: '550px',\r\n boxShadow: `0 1px 1px rgba(0, 0, 0, 0.05), 0 2px 2px rgba(0, 0, 0, 0.2), 0 4px 4px rgba(0, 0, 0, 0.15), 0 8px 8px rgba(0, 0, 0, 0.05)`,\r\n animation: 'fadeInDown 0.3s ease-out',\r\n marginTop: '8px',\r\n color: theme.palette.text.primary,\r\n\r\n '@keyframes fadeInDown': {\r\n '0%': { opacity: 0, transform: 'translateY(-10px)' },\r\n '100%': { opacity: 1, transform: 'translateY(0)' }\r\n },\r\n\r\n '&::before': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n backgroundColor: theme.palette.background.paper,\r\n backgroundImage: 'linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))',\r\n width: '10px',\r\n height: '10px',\r\n top: '-4px',\r\n right: theme.spacing(1),\r\n transform: 'translateX(-50%) rotate(45deg)',\r\n zIndex: 0\r\n }\r\n },\r\n '.MuiBackdrop-root': { backgroundColor: 'transparent' },\r\n '.MuiList-root': { padding: 0, height: '100%', minHeight: 0, maxHeight: '60vh' }\r\n}))\r\n\r\nexport const ItemTag: ComponentType<TypographyProps> = styled(Typography)(({ theme }) => ({\r\n fontWeight: 700,\r\n fontSize: '0.75rem',\r\n backgroundColor: alpha(theme.palette.primary.main || '#E11D48', 0.1),\r\n padding: '2px 8px',\r\n borderRadius: '999px',\r\n display: 'inline-block'\r\n}))\r\n"],"names":["Root","styled","Stack","_ref","theme","palette","background","paper","mode","text","primary","height","MenuStyled","Menu","_ref2","marginTop","position","overflow","display","flexDirection","backgroundColor","borderRadius","shape","minWidth","maxWidth","boxShadow","animation","color","opacity","transform","content","backgroundImage","width","top","right","spacing","zIndex","padding","minHeight","maxHeight","ItemTag","Typography","_ref3","fontWeight","fontSize","alpha","main"],"mappings":"uFAIO,IAAMA,EAAkCC,EAAOC,EAAPD,CAAc,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAK,MAAQ,CAC3E,aAAcA,EAAMC,QAAQC,WAAWC,MACvC,iBAAyC,SAAvBH,EAAMC,QAAQG,KAAkB,aAAe,gBACjE,eAAgBJ,EAAMC,QAAQI,KAAKC,QACnC,kBAAmB,kBACnBC,OAAQ,OACT,GAEYC,EAAuCX,EAAOY,EAAPZ,CAAa,SAAAa,GAAA,IAAGV,EAAKU,EAALV,MAAK,MAAQ,CAC/E,aAAcA,EAAMC,QAAQC,WAAWC,MACvC,eAAgBH,EAAMC,QAAQI,KAAKC,QACnC,kBAAmB,kBACnBK,UAAW,OACX,mBAAoB,CAClBC,SAAU,WACVC,SAAU,UACVC,QAAS,OACTC,cAAe,SACfC,gBAAiBhB,EAAMC,QAAQC,WAAWC,MAC1Cc,aAAcjB,EAAMkB,MAAMD,aAC1BE,SAAU,QACVC,SAAU,QACVC,UAAsI,4HACtIC,UAAW,2BACXX,UAAW,MACXY,MAAOvB,EAAMC,QAAQI,KAAKC,QAE1B,wBAAyB,CACvB,KAAM,CAAEkB,QAAS,EAAGC,UAAW,qBAC/B,OAAQ,CAAED,QAAS,EAAGC,UAAW,kBAGnC,YAAa,CACXC,QAAS,KACTd,SAAU,WACVI,gBAAiBhB,EAAMC,QAAQC,WAAWC,MAC1CwB,gBAAiB,wEACjBC,MAAO,OACPrB,OAAQ,OACRsB,IAAK,OACLC,MAAO9B,EAAM+B,QAAQ,GACrBN,UAAW,iCACXO,OAAQ,IAGZ,oBAAqB,CAAEhB,gBAAiB,eACxC,gBAAiB,CAAEiB,QAAS,EAAG1B,OAAQ,OAAQ2B,UAAW,EAAGC,UAAW,QACzE,GAEYC,EAA0CvC,EAAOwC,EAAPxC,CAAmB,SAAAyC,GAAA,IAAGtC,EAAKsC,EAALtC,MAAK,MAAQ,CACxFuC,WAAY,IACZC,SAAU,UACVxB,gBAAiByB,EAAMzC,EAAMC,QAAQK,QAAQoC,MAAQ,UAAW,IAChET,QAAS,UACThB,aAAc,QACdH,QAAS,eACV"}
@@ -1,2 +1,2 @@
1
- import{slicedToArray as r,objectSpread2 as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as o,jsxs as e}from"react/jsx-runtime";import{useState as n,useCallback as i,Fragment as l}from"react";import{useTheme as a,useMediaQuery as c,Stack as s,Typography as m,Badge as u,Drawer as d}from"@mui/material";import p from"@mui/icons-material/ShoppingCartOutlined";import{Root as f,MenuStyled as h,ItemTag as v}from"./styled.js";import{IconButtonDark as C}from"../components/buttons.js";import"../components/no-data-panel.js";import{getTotalData as g}from"./helpers.js";import{createCartContent as x}from"../factory/cart-content/create.cart-content.js";import{createCartItem as b}from"../factory/cart-item/create.cart-item.js";var P=x({labels:{title:"Your Cart",buttonCheckout:"Show in cart"},empty:{title:"Your cart is empty",subTitle:"Try adding some products"}}),T=b({slots:{beforeTile:function(r){var t,n,i,l;return e(s,{direction:"row",flexWrap:"wrap",width:"100%",gap:1,alignItems:"center",justifyContent:"space-between",children:[o(v,{variant:"body1",sx:{color:null!==(t=r.item.PriceColor)&&void 0!==t?t:"#000"},children:null!==(n=r.item.PriceName)&&void 0!==n?n:"Unknown Price"}),e(s,{direction:"row",gap:.5,alignItems:"flex-end",children:[e(m,{children:["$",null!==(i=r.item.Price)&&void 0!==i?i:0]}),e(m,{variant:"body1",sx:{fontSize:"14px",color:"#818181"},children:["x",null!==(l=r.item.Amount)&&void 0!==l?l:0," urls"]})]})]})}}}),y=function(t){var v,x,b=n(null),y=r(b,2),j=y[0],k=y[1],w=n(!1),S=r(w,2),M=S[0],W=S[1],z=a(),B=c(z.breakpoints.down("sm")),I=null!==(v=t.carts)&&void 0!==v?v:[];n(function(){W(!0)});var L=function(){k(null)},N=i(function(){return o(P,{carts:I,isMobile:B,onClose:L,buttonMoveToCartProps:t.buttonMoveToCartProps,onCheckout:function(r){L(),t.onMoveToCartClick&&t.onMoveToCartClick(r)},slots:{headerRight:function(r){var t,n=g(r.carts);return e(s,{justifyContent:"flex-end",children:[o(m,{variant:"caption",sx:{textTransform:"uppercase",fontWeight:500,letterSpacing:"0.1em",color:"var(--color-text-secondary)"},children:"Total"}),e(m,{variant:"h6",sx:{fontWeight:700,color:"#e88c3f"},children:["$",null===(t=n.price)||void 0===t?void 0:t.toFixed(2)]})]})},item:function(r,e){var n;return o(T,{item:r,name:r.ProductName,imageUrl:r.PictureUrl,onRemoveCart:t.onRemoveCart,itemTitleProps:t.itemTitleProps,itemTitlePropsGetter:t.itemTitlePropsGetter,onClose:L},null!==(n=r.ProductId)&&void 0!==n?n:e)}}})},[I,B,t,L]);return e(l,{children:[o(C,{onClick:function(r){return t=r.currentTarget,void k(t);var t},children:o(u,{badgeContent:M&&null!==(x=I.length)&&void 0!==x?x:0,color:"error",children:o(p,{fontSize:"small"})})}),B?o(d,{anchor:"right",open:Boolean(j),onClose:L,disableScrollLock:!0,PaperProps:{sx:{width:"calc(100% - 100px)",maxWidth:360}},children:o(f,{children:N()})}):o(h,{disableScrollLock:!0,anchorEl:j,open:Boolean(j),onClose:L,anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},MenuListProps:{component:"div",sx:{display:"flex",flexDirection:"column"}},children:o(f,{children:N()})})]})},j=function(r){var e=function(e){return o(y,t(t({},r),e))};return e.displayName="CartWidget",e};export{y as CartWidget,j as createCartWidget};
1
+ import{slicedToArray as r,objectSpread2 as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as o,jsxs as e}from"react/jsx-runtime";import{useState as i,useCallback as n,Fragment as l}from"react";import{useTheme as a,useMediaQuery as c,Stack as s,Typography as m,Badge as u,Drawer as d}from"@mui/material";import p from"@mui/icons-material/ShoppingCartOutlined";import{Root as f,MenuStyled as h,ItemTag as v}from"./styled.js";import{getTotalData as C}from"./helpers.js";import{createCartContent as g}from"../factory/cart-content/create.cart-content.js";import{createCartItem as x}from"../factory/cart-item/create.cart-item.js";import{IconButtonDark as b}from"../components/buttons.js";var P=g({labels:{title:"Your Cart",buttonCheckout:"Show in cart"},empty:{title:"Your cart is empty",subTitle:"Try adding some products"}}),T=x({slots:{beforeTile:function(r){var t,i,n,l;return e(s,{direction:"row",flexWrap:"wrap",width:"100%",gap:1,alignItems:"center",justifyContent:"space-between",children:[o(v,{variant:"body1",sx:{color:null!==(t=r.item.PriceColor)&&void 0!==t?t:"#000"},children:null!==(i=r.item.PriceName)&&void 0!==i?i:"Unknown Price"}),e(s,{direction:"row",gap:.5,alignItems:"flex-end",children:[e(m,{children:["$",null!==(n=r.item.Price)&&void 0!==n?n:0]}),e(m,{variant:"body1",sx:{fontSize:"14px",color:"#818181"},children:["x",null!==(l=r.item.Amount)&&void 0!==l?l:0," urls"]})]})]})}}}),y=function(t){var v,g,x=i(null),y=r(x,2),j=y[0],k=y[1],w=i(!1),S=r(w,2),M=S[0],W=S[1],z=a(),B=c(z.breakpoints.down("sm")),I=null!==(v=t.carts)&&void 0!==v?v:[];i(function(){W(!0)});var L=function(){k(null)},N=n(function(){return o(P,{carts:I,isMobile:B,onClose:L,buttonMoveToCartProps:t.buttonMoveToCartProps,onCheckout:function(r){L(),t.onMoveToCartClick&&t.onMoveToCartClick(r)},slots:{headerRight:function(r){var t,i=C(r.carts);return e(s,{justifyContent:"flex-end",children:[o(m,{variant:"caption",sx:{textTransform:"uppercase",fontWeight:500,letterSpacing:"0.1em",color:"var(--color-text-secondary)"},children:"Total"}),e(m,{variant:"h6",sx:{fontWeight:700,color:"#e88c3f"},children:["$",null===(t=i.price)||void 0===t?void 0:t.toFixed(2)]})]})},item:function(r,e){var i;return o(T,{item:r,name:r.ProductName,imageUrl:r.PictureUrl,onRemoveCart:t.onRemoveCart,itemTitleProps:t.itemTitleProps,itemTitlePropsGetter:t.itemTitlePropsGetter,onClose:L},null!==(i=r.ProductId)&&void 0!==i?i:e)}}})},[I,B,t,L]);return e(l,{children:[o(b,{onClick:function(r){return t=r.currentTarget,void k(t);var t},children:o(u,{badgeContent:M&&null!==(g=I.length)&&void 0!==g?g:0,color:"error",children:o(p,{fontSize:"small"})})}),B?o(d,{anchor:"right",open:Boolean(j),onClose:L,disableScrollLock:!0,PaperProps:{sx:{width:"calc(100% - 100px)",maxWidth:360}},children:o(f,{children:N()})}):o(h,{disableScrollLock:!0,anchorEl:j,open:Boolean(j),onClose:L,anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},MenuListProps:{component:"div",sx:{display:"flex",flexDirection:"column"}},children:o(f,{children:N()})})]})},j=function(r){var e=function(e){return o(y,t(t({},r),e))};return e.displayName="CartWidget",e};export{y as CartWidget,j as createCartWidget};
2
2
  //# sourceMappingURL=widget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"widget.js","sources":["../../src/cart/widget.tsx"],"sourcesContent":["import { Fragment, useState, FC, useCallback } from 'react'\r\nimport { Badge, ButtonProps, Drawer, Stack, Typography, TypographyProps, useMediaQuery, useTheme } from '@mui/material'\r\nimport ShoppingCartOutlinedIcon from '@mui/icons-material/ShoppingCartOutlined'\r\nimport { ICartItem } from './types'\r\nimport { IAppSiteBaseUrl } from '../types'\r\nimport { ItemTag, MenuStyled, Root } from './styled'\r\nimport { IconButtonDark } from '../components'\r\nimport { getTotalData } from './helpers'\r\nimport createCartContent from '../factory/cart-content/create.cart-content'\r\nimport createCartItem from '../factory/cart-item/create.cart-item'\r\n\r\ninterface ICartWidgetProps {\r\n baseUrl: IAppSiteBaseUrl\r\n carts?: ICartItem[]\r\n hrefCart?: string\r\n buttonMoveToCartProps?: ButtonProps & { [key: string]: any }\r\n storageKey?: string\r\n onRemoveCart?: (item: ICartItem) => void\r\n onMoveToCartClick?: (e: React.MouseEvent<HTMLAnchorElement | HTMLButtonElement, MouseEvent>) => void\r\n itemTitleProps?: TypographyProps & { [key: string]: any }\r\n itemTitlePropsGetter?: (item: ICartItem, close?: () => void) => TypographyProps & { [key: string]: any }\r\n}\r\n\r\nconst CartContent = createCartContent<ICartItem>({\r\n labels: {\r\n title: 'Your Cart',\r\n buttonCheckout: 'Show in cart'\r\n },\r\n empty: {\r\n title: 'Your cart is empty',\r\n subTitle: 'Try adding some products'\r\n }\r\n})\r\n\r\nconst CartItem = createCartItem<ICartItem>({\r\n slots: {\r\n beforeTile: (ctx) => (\r\n <Stack direction='row' flexWrap={'wrap'} width={'100%'} gap={1} alignItems='center' justifyContent={'space-between'}>\r\n <ItemTag variant='body1' sx={{ color: ctx.item.PriceColor ?? '#000' }}>\r\n {ctx.item.PriceName ?? 'Unknown Price'}\r\n </ItemTag>\r\n <Stack direction='row' gap={0.5} alignItems='flex-end'>\r\n <Typography>${ctx.item.Price ?? 0}</Typography>\r\n <Typography variant='body1' sx={{ fontSize: '14px', color: '#818181' }}>\r\n x{ctx.item.Amount ?? 0} urls\r\n </Typography>\r\n </Stack>\r\n </Stack>\r\n )\r\n }\r\n})\r\n\r\nexport const CartWidget: FC<ICartWidgetProps> = (props) => {\r\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\r\n const [hydrated, setHydrated] = useState(false)\r\n const theme = useTheme()\r\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'))\r\n\r\n const carts = props.carts ?? []\r\n\r\n // Use effect to set hydrated on mount\r\n useState(() => {\r\n setHydrated(true)\r\n })\r\n\r\n const onOpen = (target: HTMLElement) => {\r\n setAnchorEl(target)\r\n }\r\n\r\n const onClose = () => {\r\n setAnchorEl(null)\r\n }\r\n\r\n const renderContent = useCallback(() => (\r\n <CartContent\r\n carts={carts}\r\n isMobile={isMobile}\r\n onClose={onClose}\r\n buttonMoveToCartProps={props.buttonMoveToCartProps}\r\n onCheckout={(event) => {\r\n onClose()\r\n if (props.onMoveToCartClick) props.onMoveToCartClick(event as React.MouseEvent<HTMLAnchorElement | HTMLButtonElement, MouseEvent>)\r\n }}\r\n slots={{\r\n headerRight: (ctx) => {\r\n const totalData = getTotalData(ctx.carts)\r\n return (\r\n <Stack justifyContent={'flex-end'}>\r\n <Typography\r\n variant='caption'\r\n sx={{ textTransform: 'uppercase', fontWeight: 500, letterSpacing: '0.1em', color: 'var(--color-text-secondary)' }}\r\n >\r\n Total\r\n </Typography>\r\n <Typography variant='h6' sx={{ fontWeight: 700, color: '#e88c3f' }}>\r\n ${totalData.price?.toFixed(2)}\r\n </Typography>\r\n </Stack>\r\n )\r\n },\r\n item: (item, index) => (\r\n <CartItem\r\n key={item.ProductId ?? index}\r\n item={item}\r\n name={item.ProductName}\r\n imageUrl={item.PictureUrl}\r\n onRemoveCart={props.onRemoveCart}\r\n itemTitleProps={props.itemTitleProps}\r\n itemTitlePropsGetter={props.itemTitlePropsGetter}\r\n onClose={onClose}\r\n />\r\n )\r\n }}\r\n />\r\n ), [carts, isMobile, props, onClose])\r\n\r\n return (\r\n <Fragment>\r\n <IconButtonDark onClick={(e) => onOpen(e.currentTarget)}>\r\n <Badge badgeContent={hydrated ? (carts.length ?? 0) : 0} color='error'>\r\n <ShoppingCartOutlinedIcon fontSize='small' />\r\n </Badge>\r\n </IconButtonDark>\r\n {isMobile ? (\r\n <Drawer\r\n anchor='right'\r\n open={Boolean(anchorEl)}\r\n onClose={onClose}\r\n disableScrollLock\r\n PaperProps={{ sx: { width: 'calc(100% - 100px)', maxWidth: 360 } }}\r\n >\r\n <Root>{renderContent()}</Root>\r\n </Drawer>\r\n ) : (\r\n <MenuStyled\r\n disableScrollLock\r\n anchorEl={anchorEl}\r\n open={Boolean(anchorEl)}\r\n onClose={onClose}\r\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n MenuListProps={{ component: 'div', sx: { display: 'flex', flexDirection: 'column' } }}\r\n >\r\n <Root>{renderContent()}</Root>\r\n </MenuStyled>\r\n )}\r\n </Fragment>\r\n )\r\n}\r\n\r\nexport const createCartWidget = (params: ICartWidgetProps) => {\r\n const _CartWidget: FC<Partial<ICartWidgetProps>> = (props) => <CartWidget {...params} {...props} />\r\n _CartWidget.displayName = 'CartWidget'\r\n return _CartWidget\r\n}\r\n"],"names":["CartContent","createCartContent","labels","title","buttonCheckout","empty","subTitle","CartItem","createCartItem","slots","beforeTile","ctx","_ctx$item$PriceColor","_ctx$item$PriceName","_ctx$item$Price","_ctx$item$Amount","_jsxs","Stack","direction","flexWrap","width","gap","alignItems","justifyContent","children","_jsx","ItemTag","variant","sx","color","item","PriceColor","PriceName","Typography","Price","fontSize","Amount","CartWidget","props","_props$carts","_carts$length","_useState","useState","_useState2","_slicedToArray","anchorEl","setAnchorEl","_useState3","_useState4","hydrated","setHydrated","theme","useTheme","isMobile","useMediaQuery","breakpoints","down","carts","onClose","renderContent","useCallback","buttonMoveToCartProps","onCheckout","event","onMoveToCartClick","headerRight","_totalData$price","totalData","getTotalData","textTransform","fontWeight","letterSpacing","price","toFixed","index","_item$ProductId","name","ProductName","imageUrl","PictureUrl","onRemoveCart","itemTitleProps","itemTitlePropsGetter","ProductId","Fragment","IconButtonDark","onClick","e","target","currentTarget","Badge","badgeContent","length","ShoppingCartOutlinedIcon","Drawer","anchor","open","Boolean","disableScrollLock","PaperProps","maxWidth","Root","MenuStyled","anchorOrigin","vertical","horizontal","transformOrigin","MenuListProps","component","display","flexDirection","createCartWidget","params","_CartWidget","_objectSpread","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"widget.js","sources":["../../src/cart/widget.tsx"],"sourcesContent":["import { Fragment, useState, FC, useCallback } from 'react'\r\nimport { Badge, ButtonProps, Drawer, Stack, Typography, TypographyProps, useMediaQuery, useTheme } from '@mui/material'\r\nimport ShoppingCartOutlinedIcon from '@mui/icons-material/ShoppingCartOutlined'\r\nimport { ICartItem } from './types'\r\nimport { IAppSiteBaseUrl } from '../types'\r\nimport { ItemTag, MenuStyled, Root } from './styled'\r\nimport { IconButtonDark } from '../components'\r\nimport { getTotalData } from './helpers'\r\nimport createCartContent from '../factory/cart-content/create.cart-content'\r\nimport createCartItem from '../factory/cart-item/create.cart-item'\r\n\r\ninterface ICartWidgetProps {\r\n baseUrl: IAppSiteBaseUrl\r\n carts?: ICartItem[]\r\n hrefCart?: string\r\n buttonMoveToCartProps?: ButtonProps & { [key: string]: any }\r\n storageKey?: string\r\n onRemoveCart?: (item: ICartItem) => void\r\n onMoveToCartClick?: (e: React.MouseEvent<HTMLAnchorElement | HTMLButtonElement, MouseEvent>) => void\r\n itemTitleProps?: TypographyProps & { [key: string]: any }\r\n itemTitlePropsGetter?: (item: ICartItem, close?: () => void) => TypographyProps & { [key: string]: any }\r\n}\r\n\r\nconst CartContent = createCartContent<ICartItem>({\r\n labels: {\r\n title: 'Your Cart',\r\n buttonCheckout: 'Show in cart'\r\n },\r\n empty: {\r\n title: 'Your cart is empty',\r\n subTitle: 'Try adding some products'\r\n }\r\n})\r\n\r\nconst CartItem = createCartItem<ICartItem>({\r\n slots: {\r\n beforeTile: (ctx) => (\r\n <Stack direction='row' flexWrap={'wrap'} width={'100%'} gap={1} alignItems='center' justifyContent={'space-between'}>\r\n <ItemTag variant='body1' sx={{ color: ctx.item.PriceColor ?? '#000' }}>\r\n {ctx.item.PriceName ?? 'Unknown Price'}\r\n </ItemTag>\r\n <Stack direction='row' gap={0.5} alignItems='flex-end'>\r\n <Typography>${ctx.item.Price ?? 0}</Typography>\r\n <Typography variant='body1' sx={{ fontSize: '14px', color: '#818181' }}>\r\n x{ctx.item.Amount ?? 0} urls\r\n </Typography>\r\n </Stack>\r\n </Stack>\r\n )\r\n }\r\n})\r\n\r\nexport const CartWidget: FC<ICartWidgetProps> = (props) => {\r\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\r\n const [hydrated, setHydrated] = useState(false)\r\n const theme = useTheme()\r\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'))\r\n\r\n const carts = props.carts ?? []\r\n\r\n // Use effect to set hydrated on mount\r\n useState(() => {\r\n setHydrated(true)\r\n })\r\n\r\n const onOpen = (target: HTMLElement) => {\r\n setAnchorEl(target)\r\n }\r\n\r\n const onClose = () => {\r\n setAnchorEl(null)\r\n }\r\n\r\n const renderContent = useCallback(() => (\r\n <CartContent\r\n carts={carts}\r\n isMobile={isMobile}\r\n onClose={onClose}\r\n buttonMoveToCartProps={props.buttonMoveToCartProps}\r\n onCheckout={(event) => {\r\n onClose()\r\n if (props.onMoveToCartClick) props.onMoveToCartClick(event as React.MouseEvent<HTMLAnchorElement | HTMLButtonElement, MouseEvent>)\r\n }}\r\n slots={{\r\n headerRight: (ctx) => {\r\n const totalData = getTotalData(ctx.carts)\r\n return (\r\n <Stack justifyContent={'flex-end'}>\r\n <Typography\r\n variant='caption'\r\n sx={{ textTransform: 'uppercase', fontWeight: 500, letterSpacing: '0.1em', color: 'var(--color-text-secondary)' }}\r\n >\r\n Total\r\n </Typography>\r\n <Typography variant='h6' sx={{ fontWeight: 700, color: '#e88c3f' }}>\r\n ${totalData.price?.toFixed(2)}\r\n </Typography>\r\n </Stack>\r\n )\r\n },\r\n item: (item, index) => (\r\n <CartItem\r\n key={item.ProductId ?? index}\r\n item={item}\r\n name={item.ProductName}\r\n imageUrl={item.PictureUrl}\r\n onRemoveCart={props.onRemoveCart}\r\n itemTitleProps={props.itemTitleProps}\r\n itemTitlePropsGetter={props.itemTitlePropsGetter}\r\n onClose={onClose}\r\n />\r\n )\r\n }}\r\n />\r\n ), [carts, isMobile, props, onClose])\r\n\r\n return (\r\n <Fragment>\r\n <IconButtonDark onClick={(e) => onOpen(e.currentTarget)}>\r\n <Badge badgeContent={hydrated ? (carts.length ?? 0) : 0} color='error'>\r\n <ShoppingCartOutlinedIcon fontSize='small' />\r\n </Badge>\r\n </IconButtonDark>\r\n {isMobile ? (\r\n <Drawer\r\n anchor='right'\r\n open={Boolean(anchorEl)}\r\n onClose={onClose}\r\n disableScrollLock\r\n PaperProps={{ sx: { width: 'calc(100% - 100px)', maxWidth: 360 } }}\r\n >\r\n <Root>{renderContent()}</Root>\r\n </Drawer>\r\n ) : (\r\n <MenuStyled\r\n disableScrollLock\r\n anchorEl={anchorEl}\r\n open={Boolean(anchorEl)}\r\n onClose={onClose}\r\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n MenuListProps={{ component: 'div', sx: { display: 'flex', flexDirection: 'column' } }}\r\n >\r\n <Root>{renderContent()}</Root>\r\n </MenuStyled>\r\n )}\r\n </Fragment>\r\n )\r\n}\r\n\r\nexport const createCartWidget = (params: ICartWidgetProps) => {\r\n const _CartWidget: FC<Partial<ICartWidgetProps>> = (props) => <CartWidget {...params} {...props} />\r\n _CartWidget.displayName = 'CartWidget'\r\n return _CartWidget\r\n}\r\n"],"names":["CartContent","createCartContent","labels","title","buttonCheckout","empty","subTitle","CartItem","createCartItem","slots","beforeTile","ctx","_ctx$item$PriceColor","_ctx$item$PriceName","_ctx$item$Price","_ctx$item$Amount","_jsxs","Stack","direction","flexWrap","width","gap","alignItems","justifyContent","children","_jsx","ItemTag","variant","sx","color","item","PriceColor","PriceName","Typography","Price","fontSize","Amount","CartWidget","props","_props$carts","_carts$length","_useState","useState","_useState2","_slicedToArray","anchorEl","setAnchorEl","_useState3","_useState4","hydrated","setHydrated","theme","useTheme","isMobile","useMediaQuery","breakpoints","down","carts","onClose","renderContent","useCallback","buttonMoveToCartProps","onCheckout","event","onMoveToCartClick","headerRight","_totalData$price","totalData","getTotalData","textTransform","fontWeight","letterSpacing","price","toFixed","index","_item$ProductId","name","ProductName","imageUrl","PictureUrl","onRemoveCart","itemTitleProps","itemTitlePropsGetter","ProductId","Fragment","IconButtonDark","onClick","e","target","currentTarget","Badge","badgeContent","length","ShoppingCartOutlinedIcon","Drawer","anchor","open","Boolean","disableScrollLock","PaperProps","maxWidth","Root","MenuStyled","anchorOrigin","vertical","horizontal","transformOrigin","MenuListProps","component","display","flexDirection","createCartWidget","params","_CartWidget","_objectSpread","displayName"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{objectSpread2 as l}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as o,Fragment as i,jsxs as t}from"react/jsx-runtime";import e from"@mui/icons-material/ArrowForward";import{Typography as n}from"@mui/material";import{ButtonOrange as d}from"../../components/buttons.js";import{NoDataPanel as r}from"../../components/no-data-panel.js";import{Header as s,HeaderLeft as u,Footer as v,Root as a,Body as m,Items as c}from"./styled.js";var p=function(p){var h=function(h){var f,b,y,g,x,C,P,j,k,M,S,T,w,I,R,W,z,F,L,N,_,A,B,H,q,D,E,G,J,K=null!==(f=h.carts)&&void 0!==f?f:[],O={carts:K,isMobile:h.isMobile,labels:l(l({},null!==(b=null==p?void 0:p.labels)&&void 0!==b?b:{}),null!==(y=null===(g=h.options)||void 0===g?void 0:g.labels)&&void 0!==y?y:{}),empty:l(l({},null!==(x=null==p?void 0:p.empty)&&void 0!==x?x:{}),null!==(C=null===(P=h.options)||void 0===P?void 0:P.empty)&&void 0!==C?C:{})},Q=function(l,o){return l?"function"==typeof l?l(O):l:o},U=o(r,{title:null===(j=O.empty)||void 0===j?void 0:j.title,subTitle:null===(k=O.empty)||void 0===k?void 0:k.subTitle,sx:{m:1,flex:1}}),V=o(i,{children:K.length>0?K.map(function(l,o){var i;return null!==(i=h.slots)&&void 0!==i&&i.item?h.slots.item(l,o,O):null}):null!==(M=Q(null===(S=h.slots)||void 0===S?void 0:S.empty,null))&&void 0!==M?M:U}),X=t(s,l(l({flexWrap:"wrap"},null===(T=h.slots)||void 0===T?void 0:T.headerProps),{},{children:[Q(null===(w=h.slots)||void 0===w?void 0:w.headerLeft,t(u,l(l({},null===(I=h.slots)||void 0===I?void 0:I.headerLeftProps),{},{children:[o(n,{variant:"h5",component:"h2",fontWeight:"bold",children:null===(R=O.labels)||void 0===R?void 0:R.title}),t(n,{variant:"body2",sx:{color:"var(--color-text-secondary)"},children:[null!==(W=K.length)&&void 0!==W?W:0," ",1===K.length?null===(z=O.labels)||void 0===z?void 0:z.itemsSuffixSingle:null===(F=O.labels)||void 0===F?void 0:F.itemsSuffixMany," in total"]})]}))),(null===(L=h.slots)||void 0===L?void 0:L.headerRight)&&Q(null===(N=h.slots)||void 0===N?void 0:N.headerRight,null)]})),Y=o(v,{children:o(d,l(l(l({variant:"contained",size:"medium",endIcon:o(e,{}),onClick:function(l){var o,i;null===(o=h.onClose)||void 0===o||o.call(h),null===(i=h.onCheckout)||void 0===i||i.call(h,l)},disabled:K.length<1,sx:{height:"42px",borderRadius:1,fontWeight:700,fontSize:"1rem",backgroundColor:"#e88c3f",textTransform:"none"}},h.buttonMoveToCartProps),h.buttonCheckoutProps),{},{children:(null===(_=h.buttonMoveToCartProps)||void 0===_?void 0:_.children)||(null===(A=h.buttonCheckoutProps)||void 0===A?void 0:A.children)||(null===(B=O.labels)||void 0===B?void 0:B.buttonCheckout)}))});return t(a,{className:h.isMobile?"mobile":"",children:[Q(null===(H=h.slots)||void 0===H?void 0:H.header,X),o(m,{children:t(c,{children:[Q(null===(q=h.slots)||void 0===q?void 0:q.beforeItems,null),null!==(D=Q(null===(E=h.slots)||void 0===E?void 0:E.items,V))&&void 0!==D?D:V,Q(null===(G=h.slots)||void 0===G?void 0:G.afterItems,null)]})}),Q(null===(J=h.slots)||void 0===J?void 0:J.footer,Y)]})};return h.displayName="FactoryCartContent",h};export{p as createCartContent,p as default};
1
+ import{objectSpread2 as l}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as o,Fragment as i,jsxs as t}from"react/jsx-runtime";import e from"@mui/icons-material/ArrowForward";import{Typography as n}from"@mui/material";import{Header as d,HeaderLeft as r,Footer as s,Root as u,Body as v,Items as a}from"./styled.js";import{NoDataPanel as m}from"../../components/no-data-panel.js";import{ButtonOrange as c}from"../../components/buttons.js";var p=function(p){var h=function(h){var f,b,y,g,x,C,P,j,k,M,S,T,w,I,R,W,z,F,L,N,_,A,B,H,q,D,E,G,J,K=null!==(f=h.carts)&&void 0!==f?f:[],O={carts:K,isMobile:h.isMobile,labels:l(l({},null!==(b=null==p?void 0:p.labels)&&void 0!==b?b:{}),null!==(y=null===(g=h.options)||void 0===g?void 0:g.labels)&&void 0!==y?y:{}),empty:l(l({},null!==(x=null==p?void 0:p.empty)&&void 0!==x?x:{}),null!==(C=null===(P=h.options)||void 0===P?void 0:P.empty)&&void 0!==C?C:{})},Q=function(l,o){return l?"function"==typeof l?l(O):l:o},U=o(m,{title:null===(j=O.empty)||void 0===j?void 0:j.title,subTitle:null===(k=O.empty)||void 0===k?void 0:k.subTitle,sx:{m:1,flex:1}}),V=o(i,{children:K.length>0?K.map(function(l,o){var i;return null!==(i=h.slots)&&void 0!==i&&i.item?h.slots.item(l,o,O):null}):null!==(M=Q(null===(S=h.slots)||void 0===S?void 0:S.empty,null))&&void 0!==M?M:U}),X=t(d,l(l({flexWrap:"wrap"},null===(T=h.slots)||void 0===T?void 0:T.headerProps),{},{children:[Q(null===(w=h.slots)||void 0===w?void 0:w.headerLeft,t(r,l(l({},null===(I=h.slots)||void 0===I?void 0:I.headerLeftProps),{},{children:[o(n,{variant:"h5",component:"h2",fontWeight:"bold",children:null===(R=O.labels)||void 0===R?void 0:R.title}),t(n,{variant:"body2",sx:{color:"var(--color-text-secondary)"},children:[null!==(W=K.length)&&void 0!==W?W:0," ",1===K.length?null===(z=O.labels)||void 0===z?void 0:z.itemsSuffixSingle:null===(F=O.labels)||void 0===F?void 0:F.itemsSuffixMany," in total"]})]}))),(null===(L=h.slots)||void 0===L?void 0:L.headerRight)&&Q(null===(N=h.slots)||void 0===N?void 0:N.headerRight,null)]})),Y=o(s,{children:o(c,l(l(l({variant:"contained",size:"medium",endIcon:o(e,{}),onClick:function(l){var o,i;null===(o=h.onClose)||void 0===o||o.call(h),null===(i=h.onCheckout)||void 0===i||i.call(h,l)},disabled:K.length<1,sx:{height:"42px",borderRadius:1,fontWeight:700,fontSize:"1rem",backgroundColor:"#e88c3f",textTransform:"none"}},h.buttonMoveToCartProps),h.buttonCheckoutProps),{},{children:(null===(_=h.buttonMoveToCartProps)||void 0===_?void 0:_.children)||(null===(A=h.buttonCheckoutProps)||void 0===A?void 0:A.children)||(null===(B=O.labels)||void 0===B?void 0:B.buttonCheckout)}))});return t(u,{className:h.isMobile?"mobile":"",children:[Q(null===(H=h.slots)||void 0===H?void 0:H.header,X),o(v,{children:t(a,{children:[Q(null===(q=h.slots)||void 0===q?void 0:q.beforeItems,null),null!==(D=Q(null===(E=h.slots)||void 0===E?void 0:E.items,V))&&void 0!==D?D:V,Q(null===(G=h.slots)||void 0===G?void 0:G.afterItems,null)]})}),Q(null===(J=h.slots)||void 0===J?void 0:J.footer,Y)]})};return h.displayName="FactoryCartContent",h};export{p as createCartContent,p as default};
2
2
  //# sourceMappingURL=create.cart-content.js.map
@@ -1,2 +1,2 @@
1
- import{styled as r,Box as e,Stack as o}from"@mui/material";var t=r(e)(function(r){var e=r.theme;return{"--height-item":"auto","--color-bg":"var(--cart-color-bg, ".concat("dark"===e.palette.mode?"#1a1a1a":"#FFFFFF",")"),"--color-bg-secondary":"var(--cart-color-bg-secondary, ".concat("dark"===e.palette.mode?"#0F0F0F":"#F9FAFB",")"),"--color-text":e.palette.text.primary,"--color-text-secondary":"dark"===e.palette.mode?"#a1a1aa":"#64748b","--color-border":"dark"===e.palette.mode?"#27272a":"#f1f5f9","--color-primary":e.palette.primary.main||"#E11D48","--border-radius":"12px","--border-radius-lg":"16px",flex:"1",display:"flex",flexDirection:"column",minHeight:0,maxHeight:"60vh","&.mobile":{height:"100%",maxHeight:"none"}}}),a=r(o)(function(r){var e=r.theme;return{padding:e.spacing(1,2),justifyContent:"space-between",flexDirection:"row",alignItems:"center",gap:e.spacing(2),position:"sticky",top:0,background:"var(--color-bg)",backdropFilter:"blur(20px)",WebkitBackdropFilter:"blur(20px)",zIndex:2,borderBottom:"1px solid var(--color-border)"}}),i=r(o)(function(){return{gap:4}}),n=r(e)(function(){return{flex:1,minHeight:0,overflowY:"auto"}}),c=r(e)(function(r){var e=r.theme;return{padding:e.spacing(1),display:"flex",flexDirection:"column",gap:e.spacing(1)}}),l=r(e)(function(r){var e=r.theme;return{padding:e.spacing(1.5),display:"flex",flexDirection:"column",gap:e.spacing(2),position:"sticky",bottom:0,background:"var(--color-bg)",zIndex:1,borderTop:"1px solid var(--color-border)"}});export{n as Body,l as Footer,a as Header,i as HeaderLeft,c as Items,t as Root,t as default};
1
+ import{styled as e,Box as i,Stack as t}from"@mui/material";var r=e(i)(function(e){return e.theme,{flex:"1",display:"flex",flexDirection:"column",minHeight:0,maxHeight:"60vh","&.mobile":{height:"100%",maxHeight:"none"}}}),a=e(t)(function(e){var i=e.theme;return{padding:i.spacing(1,2),justifyContent:"space-between",flexDirection:"row",alignItems:"center",gap:i.spacing(2),position:"sticky",top:0,backgroundColor:i.palette.background.paper,backgroundImage:"linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))",backdropFilter:"blur(20px)",WebkitBackdropFilter:"blur(20px)",zIndex:2,borderTopLeftRadius:i.spacing(.5),borderTopRightRadius:i.spacing(.5),borderBottom:"1px solid ".concat(i.palette.divider)}}),n=e(t)(function(){return{gap:4}}),o=e(i)(function(){return{flex:1,minHeight:0,overflowY:"auto"}}),p=e(i)(function(e){var i=e.theme;return{padding:i.spacing(1),display:"flex",flexDirection:"column",gap:i.spacing(1)}}),c=e(i)(function(e){var i=e.theme;return{padding:i.spacing(1.5),display:"flex",flexDirection:"column",gap:i.spacing(2),position:"sticky",bottom:0,background:i.palette.background.paper,backgroundImage:"linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))",zIndex:1,borderTop:"1px solid ".concat(i.palette.divider),borderBottomLeftRadius:i.spacing(.5),borderBottomRightRadius:i.spacing(.5)}});export{o as Body,c as Footer,a as Header,n as HeaderLeft,p as Items,r as Root,r as default};
2
2
  //# sourceMappingURL=styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styled.js","sources":["../../../src/factory/cart-content/styled.tsx"],"sourcesContent":["import { Box, BoxProps, Stack, StackProps, styled } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\n\r\nexport const Root: ComponentType<BoxProps> = styled(Box)(({ theme }) => ({\r\n '--height-item': 'auto',\r\n '--color-bg': `var(--cart-color-bg, ${theme.palette.mode === 'dark' ? '#1a1a1a' : '#FFFFFF'})`,\r\n '--color-bg-secondary': `var(--cart-color-bg-secondary, ${theme.palette.mode === 'dark' ? '#0F0F0F' : '#F9FAFB'})`,\r\n '--color-text': theme.palette.text.primary,\r\n '--color-text-secondary': theme.palette.mode === 'dark' ? '#a1a1aa' : '#64748b',\r\n '--color-border': theme.palette.mode === 'dark' ? '#27272a' : '#f1f5f9',\r\n '--color-primary': theme.palette.primary.main || '#E11D48',\r\n '--border-radius': '12px',\r\n '--border-radius-lg': '16px',\r\n flex: '1',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n minHeight: 0,\r\n maxHeight: '60vh',\r\n '&.mobile': { height: '100%', maxHeight: 'none' }\r\n}))\r\n\r\nexport const Header: ComponentType<StackProps> = styled(Stack)(({ theme }) => ({\r\n padding: theme.spacing(1, 2),\r\n justifyContent: 'space-between',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n gap: theme.spacing(2),\r\n position: 'sticky',\r\n top: 0,\r\n background: 'var(--color-bg)',\r\n backdropFilter: 'blur(20px)',\r\n WebkitBackdropFilter: 'blur(20px)',\r\n zIndex: 2,\r\n borderBottom: '1px solid var(--color-border)'\r\n}))\r\n\r\nexport const HeaderLeft: ComponentType<StackProps> = styled(Stack)(() => ({ gap: 4 }))\r\n\r\nexport const Body: ComponentType<BoxProps> = styled(Box)(() => ({ flex: 1, minHeight: 0, overflowY: 'auto' }))\r\n\r\nexport const Items: ComponentType<BoxProps> = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(1),\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: theme.spacing(1)\r\n}))\r\n\r\nexport const Footer: ComponentType<BoxProps> = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(1.5),\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: theme.spacing(2),\r\n position: 'sticky',\r\n bottom: 0,\r\n background: 'var(--color-bg)',\r\n zIndex: 1,\r\n borderTop: '1px solid var(--color-border)'\r\n}))\r\n\r\nexport default Root\r\n"],"names":["Root","styled","Box","_ref","theme","concat","palette","mode","text","primary","main","flex","display","flexDirection","minHeight","maxHeight","height","Header","Stack","_ref2","padding","spacing","justifyContent","alignItems","gap","position","top","background","backdropFilter","WebkitBackdropFilter","zIndex","borderBottom","HeaderLeft","Body","overflowY","Items","_ref3","Footer","_ref4","bottom","borderTop"],"mappings":"2DAGO,IAAMA,EAAgCC,EAAOC,EAAPD,CAAY,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAK,MAAQ,CACvE,gBAAiB,OACjB,aAAYC,wBAAAA,OAAiD,SAAvBD,EAAME,QAAQC,KAAkB,UAAY,UAAY,KAC9F,uBAAsBF,kCAAAA,OAA2D,SAAvBD,EAAME,QAAQC,KAAkB,UAAY,UAAY,KAClH,eAAgBH,EAAME,QAAQE,KAAKC,QACnC,yBAAiD,SAAvBL,EAAME,QAAQC,KAAkB,UAAY,UACtE,iBAAyC,SAAvBH,EAAME,QAAQC,KAAkB,UAAY,UAC9D,kBAAmBH,EAAME,QAAQG,QAAQC,MAAQ,UACjD,kBAAmB,OACnB,qBAAsB,OACtBC,KAAM,IACNC,QAAS,OACTC,cAAe,SACfC,UAAW,EACXC,UAAW,OACX,WAAY,CAAEC,OAAQ,OAAQD,UAAW,QAC1C,GAEYE,EAAoChB,EAAOiB,EAAPjB,CAAc,SAAAkB,GAAA,IAAGf,EAAKe,EAALf,MAAK,MAAQ,CAC7EgB,QAAShB,EAAMiB,QAAQ,EAAG,GAC1BC,eAAgB,gBAChBT,cAAe,MACfU,WAAY,SACZC,IAAKpB,EAAMiB,QAAQ,GACnBI,SAAU,SACVC,IAAK,EACLC,WAAY,kBACZC,eAAgB,aAChBC,qBAAsB,aACtBC,OAAQ,EACRC,aAAc,gCACf,GAEYC,EAAwC/B,EAAOiB,EAAPjB,CAAc,WAAA,MAAO,CAAEuB,IAAK,EAAG,GAEvES,EAAgChC,EAAOC,EAAPD,CAAY,WAAA,MAAO,CAAEU,KAAM,EAAGG,UAAW,EAAGoB,UAAW,OAAQ,GAE/FC,EAAiClC,EAAOC,EAAPD,CAAY,SAAAmC,GAAA,IAAGhC,EAAKgC,EAALhC,MAAK,MAAQ,CACxEgB,QAAShB,EAAMiB,QAAQ,GACvBT,QAAS,OACTC,cAAe,SACfW,IAAKpB,EAAMiB,QAAQ,GACpB,GAEYgB,EAAkCpC,EAAOC,EAAPD,CAAY,SAAAqC,GAAA,IAAGlC,EAAKkC,EAALlC,MAAK,MAAQ,CACzEgB,QAAShB,EAAMiB,QAAQ,KACvBT,QAAS,OACTC,cAAe,SACfW,IAAKpB,EAAMiB,QAAQ,GACnBI,SAAU,SACVc,OAAQ,EACRZ,WAAY,kBACZG,OAAQ,EACRU,UAAW,gCACZ"}
1
+ {"version":3,"file":"styled.js","sources":["../../../src/factory/cart-content/styled.tsx"],"sourcesContent":["import { Box, BoxProps, Stack, StackProps, styled } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\n\r\nexport const Root: ComponentType<BoxProps> = styled(Box)(({ theme }) => ({\r\n flex: '1',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n minHeight: 0,\r\n maxHeight: '60vh',\r\n '&.mobile': { height: '100%', maxHeight: 'none' }\r\n}))\r\n\r\nexport const Header: ComponentType<StackProps> = styled(Stack)(({ theme }) => ({\r\n padding: theme.spacing(1, 2),\r\n justifyContent: 'space-between',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n gap: theme.spacing(2),\r\n position: 'sticky',\r\n top: 0,\r\n backgroundColor: theme.palette.background.paper,\r\n backgroundImage: 'linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))',\r\n backdropFilter: 'blur(20px)',\r\n WebkitBackdropFilter: 'blur(20px)',\r\n zIndex: 2,\r\n borderTopLeftRadius: theme.spacing(0.5),\r\n borderTopRightRadius: theme.spacing(0.5),\r\n borderBottom: `1px solid ${theme.palette.divider}`\r\n}))\r\n\r\nexport const HeaderLeft: ComponentType<StackProps> = styled(Stack)(() => ({ gap: 4 }))\r\n\r\nexport const Body: ComponentType<BoxProps> = styled(Box)(() => ({ flex: 1, minHeight: 0, overflowY: 'auto' }))\r\n\r\nexport const Items: ComponentType<BoxProps> = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(1),\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: theme.spacing(1)\r\n}))\r\n\r\nexport const Footer: ComponentType<BoxProps> = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(1.5),\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: theme.spacing(2),\r\n position: 'sticky',\r\n bottom: 0,\r\n background: theme.palette.background.paper,\r\n backgroundImage: 'linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))',\r\n zIndex: 1,\r\n borderTop: `1px solid ${theme.palette.divider}`,\r\n borderBottomLeftRadius: theme.spacing(0.5),\r\n borderBottomRightRadius: theme.spacing(0.5)\r\n}))\r\n\r\nexport default Root\r\n"],"names":["Root","styled","Box","_ref","theme","flex","display","flexDirection","minHeight","maxHeight","height","Header","Stack","_ref2","padding","spacing","justifyContent","alignItems","gap","position","top","backgroundColor","palette","background","paper","backgroundImage","backdropFilter","WebkitBackdropFilter","zIndex","borderTopLeftRadius","borderTopRightRadius","borderBottom","concat","divider","HeaderLeft","Body","overflowY","Items","_ref3","Footer","_ref4","bottom","borderTop","borderBottomLeftRadius","borderBottomRightRadius"],"mappings":"2DAGO,IAAMA,EAAgCC,EAAOC,EAAPD,CAAY,SAAAE,GAAQ,OAAAA,EAALC,MAAa,CACvEC,KAAM,IACNC,QAAS,OACTC,cAAe,SACfC,UAAW,EACXC,UAAW,OACX,WAAY,CAAEC,OAAQ,OAAQD,UAAW,QAC1C,GAEYE,EAAoCV,EAAOW,EAAPX,CAAc,SAAAY,GAAA,IAAGT,EAAKS,EAALT,MAAK,MAAQ,CAC7EU,QAASV,EAAMW,QAAQ,EAAG,GAC1BC,eAAgB,gBAChBT,cAAe,MACfU,WAAY,SACZC,IAAKd,EAAMW,QAAQ,GACnBI,SAAU,SACVC,IAAK,EACLC,gBAAiBjB,EAAMkB,QAAQC,WAAWC,MAC1CC,gBAAiB,wEACjBC,eAAgB,aAChBC,qBAAsB,aACtBC,OAAQ,EACRC,oBAAqBzB,EAAMW,QAAQ,IACnCe,qBAAsB1B,EAAMW,QAAQ,IACpCgB,0BAAYC,OAAe5B,EAAMkB,QAAQW,SAC1C,GAEYC,EAAwCjC,EAAOW,EAAPX,CAAc,WAAA,MAAO,CAAEiB,IAAK,EAAG,GAEvEiB,EAAgClC,EAAOC,EAAPD,CAAY,WAAA,MAAO,CAAEI,KAAM,EAAGG,UAAW,EAAG4B,UAAW,OAAQ,GAE/FC,EAAiCpC,EAAOC,EAAPD,CAAY,SAAAqC,GAAA,IAAGlC,EAAKkC,EAALlC,MAAK,MAAQ,CACxEU,QAASV,EAAMW,QAAQ,GACvBT,QAAS,OACTC,cAAe,SACfW,IAAKd,EAAMW,QAAQ,GACpB,GAEYwB,EAAkCtC,EAAOC,EAAPD,CAAY,SAAAuC,GAAA,IAAGpC,EAAKoC,EAALpC,MAAK,MAAQ,CACzEU,QAASV,EAAMW,QAAQ,KACvBT,QAAS,OACTC,cAAe,SACfW,IAAKd,EAAMW,QAAQ,GACnBI,SAAU,SACVsB,OAAQ,EACRlB,WAAYnB,EAAMkB,QAAQC,WAAWC,MACrCC,gBAAiB,wEACjBG,OAAQ,EACRc,UAAS,aAAAV,OAAe5B,EAAMkB,QAAQW,SACtCU,uBAAwBvC,EAAMW,QAAQ,IACtC6B,wBAAyBxC,EAAMW,QAAQ,IACxC"}
@@ -1,2 +1,2 @@
1
- import{objectSpread2 as o}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as t,jsxs as r}from"react/jsx-runtime";import{useMemo as e}from"react";import{Typography as l}from"@mui/material";import{ItemTitle as i,ItemRoot as n,ItemImg as a,ItemContent as s}from"./styled.js";import{IconButtonConfirm as u}from"../../components/buttons.js";import"../../components/no-data-panel.js";var m=function(m){var d=function(d){var p,c,v,f={item:d.item},b=e(function(){var o,t;return{slots:null!==(o=null!==(t=d.slots)&&void 0!==t?t:null==m?void 0:m.slots)&&void 0!==o?o:{}}},[]),g=function(o,t){return o?"function"==typeof o?o(f):o:t},x=t(i,{children:t(l,o(o({variant:"subtitle1",title:d.name},null!==(p=d.itemTitleProps)&&void 0!==p?p:d.itemTitlePropsGetter?d.itemTitlePropsGetter(d.item,d.onClose):{}),{},{children:d.name}))});return r(n,{children:[t(a,{src:d.imageUrl,fallbackSrc:"images/default-video.webp",alt:"product-picture"}),r(s,{children:[t(u,{size:"small",onAccept:function(){var o;return null===(o=d.onRemoveCart)||void 0===o?void 0:o.call(d,d.item)},slots:{sxLayout:{position:"absolute",left:0,top:0,flexDirection:"row-reverse",borderTopLeftRadius:"24px",borderBottomRightRadius:"16px",backgroundColor:"rgba(var(--color-bg-rgb), 0.7)"},removeProps:{sx:{color:"#dd5b5b"}}}}),g(null===(c=b.slots)||void 0===c?void 0:c.beforeTile,null),x,g(null===(v=b.slots)||void 0===v?void 0:v.afterTile,null)]})]})};return d.displayName="FactoryCartItem",d};export{m as createCartItem,m as default};
1
+ import{objectSpread2 as t}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as e,jsxs as o}from"react/jsx-runtime";import{useMemo as r}from"react";import{Typography as l,alpha as i}from"@mui/material";import{ItemTitle as n,ItemRoot as a,ItemImg as s,ItemContent as u}from"./styled.js";import{IconButtonConfirm as m}from"../../components/buttons.js";function c(c){var d=function(d){var p,f,v,b={item:d.item},g=r(function(){var t,e;return{slots:null!==(t=null!==(e=d.slots)&&void 0!==e?e:null==c?void 0:c.slots)&&void 0!==t?t:{}}},[]),x=function(t,e){return t?"function"==typeof t?t(b):t:e},h=e(n,{children:e(l,t(t({variant:"subtitle1",title:d.name},null!==(p=d.itemTitleProps)&&void 0!==p?p:d.itemTitlePropsGetter?d.itemTitlePropsGetter(d.item,d.onClose):{}),{},{children:d.name}))});return o(a,{children:[e(s,{src:d.imageUrl,fallbackSrc:"images/default-video.webp",alt:"product-picture"}),o(u,{children:[e(m,{size:"small",onAccept:function(){var t;return null===(t=d.onRemoveCart)||void 0===t?void 0:t.call(d,d.item)},slots:{sxLayout:{position:"absolute",left:0,top:0,flexDirection:"row-reverse",borderBottomRightRadius:"16px",backgroundColor:function(t){return i(t.palette.background.paper,.8)}},removeProps:{sx:{color:"#dd5b5b"}}}}),x(null===(f=g.slots)||void 0===f?void 0:f.beforeTile,null),h,x(null===(v=g.slots)||void 0===v?void 0:v.afterTile,null)]})]})};return d.displayName="FactoryCartItem",d}export{c as createCartItem,c as default};
2
2
  //# sourceMappingURL=create.cart-item.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.cart-item.js","sources":["../../../src/factory/cart-item/create.cart-item.tsx"],"sourcesContent":["import { ComponentType, useMemo } from 'react'\r\nimport { Typography } from '@mui/material'\r\nimport { ItemContent, ItemImg, ItemRoot, ItemTitle } from './styled'\r\nimport IFactoryCartProps, { ICartContext, ICartOptions } from './types'\r\nimport { IconButtonConfirm } from '../../components'\r\n\r\nexport const createCartItem = <T = {},>(configs?: ICartOptions<T>): ComponentType<IFactoryCartProps<T>> => {\r\n const CartItem: ComponentType<IFactoryCartProps<T>> = (props) => {\r\n const viewContext: ICartContext<T> = { item: props.item }\r\n\r\n const initConfigs = useMemo(\r\n () => ({\r\n slots: props.slots ?? configs?.slots ?? {}\r\n }),\r\n []\r\n )\r\n\r\n const resolveSlot = (slot: any, defaultNode: React.ReactNode) => {\r\n if (!slot) return defaultNode\r\n if (typeof slot === 'function') return slot(viewContext)\r\n return slot\r\n }\r\n\r\n const titleNode = (\r\n <ItemTitle>\r\n <Typography\r\n variant='subtitle1'\r\n title={props.name}\r\n {...(props.itemTitleProps ?? (props.itemTitlePropsGetter ? props.itemTitlePropsGetter(props.item, props.onClose) : {}))}\r\n >\r\n {props.name}\r\n </Typography>\r\n </ItemTitle>\r\n )\r\n\r\n return (\r\n <ItemRoot>\r\n <ItemImg src={props.imageUrl} fallbackSrc='images/default-video.webp' alt='product-picture' />\r\n <ItemContent>\r\n <IconButtonConfirm\r\n size='small'\r\n onAccept={() => props.onRemoveCart?.(props.item)}\r\n slots={{\r\n sxLayout: {\r\n position: 'absolute',\r\n left: 0,\r\n top: 0,\r\n flexDirection: 'row-reverse',\r\n borderTopLeftRadius: '24px',\r\n borderBottomRightRadius: '16px',\r\n backgroundColor: 'rgba(var(--color-bg-rgb), 0.7)'\r\n },\r\n removeProps: { sx: { color: '#dd5b5b' } }\r\n }}\r\n />\r\n {resolveSlot(initConfigs.slots?.beforeTile, null)}\r\n {titleNode}\r\n {resolveSlot(initConfigs.slots?.afterTile, null)}\r\n </ItemContent>\r\n </ItemRoot>\r\n )\r\n }\r\n\r\n CartItem.displayName = 'FactoryCartItem'\r\n return CartItem\r\n}\r\n\r\nexport default createCartItem\r\n"],"names":["createCartItem","configs","CartItem","props","_props$itemTitleProps","_initConfigs$slots","_initConfigs$slots2","viewContext","item","initConfigs","useMemo","_ref","_props$slots","slots","resolveSlot","slot","defaultNode","titleNode","_jsx","ItemTitle","children","Typography","_objectSpread","variant","title","name","itemTitleProps","itemTitlePropsGetter","onClose","_jsxs","ItemRoot","ItemImg","src","imageUrl","fallbackSrc","alt","ItemContent","IconButtonConfirm","size","onAccept","_props$onRemoveCart","onRemoveCart","call","sxLayout","position","left","top","flexDirection","borderTopLeftRadius","borderBottomRightRadius","backgroundColor","removeProps","sx","color","beforeTile","afterTile","displayName"],"mappings":"2YAMaA,EAAiB,SAAUC,GACtC,IAAMC,EAAgD,SAACC,GAAS,IAAAC,EAAAC,EAAAC,EACxDC,EAA+B,CAAEC,KAAML,EAAMK,MAE7CC,EAAcC,EAClB,WAAA,IAAAC,EAAAC,EAAA,MAAO,CACLC,MAAoC,QAA/BF,EAAaC,QAAbA,EAAET,EAAMU,aAAKD,IAAAA,EAAAA,EAAIX,aAAO,EAAPA,EAASY,aAAK,IAAAF,EAAAA,EAAI,CAAA,EACxC,EACF,IAGIG,EAAc,SAACC,EAAWC,GAC9B,OAAKD,EACe,mBAATA,EAA4BA,EAAKR,GACrCQ,EAFWC,CAGnB,EAEKC,EACJC,EAACC,EACC,CAAAC,SAAAF,EAACG,EAAUC,EAAAA,EAAA,CACTC,QAAQ,YACRC,MAAOrB,EAAMsB,MACY,QADRrB,EACZD,EAAMuB,sBAAc,IAAAtB,EAAAA,EAAKD,EAAMwB,qBAAuBxB,EAAMwB,qBAAqBxB,EAAMK,KAAML,EAAMyB,SAAW,IAAE,GAAA,CAAER,SAEtHjB,EAAMsB,UAKb,OACEI,EAACC,EAAQ,CAAAV,SAAA,CACPF,EAACa,EAAO,CAACC,IAAK7B,EAAM8B,SAAUC,YAAY,4BAA4BC,IAAI,oBAC1EN,EAACO,aACClB,EAACmB,GACCC,KAAK,QACLC,SAAU,WAAF,IAAAC,EAAA,eAAAA,EAAQrC,EAAMsC,oBAAY,IAAAD,OAAA,EAAlBA,EAAAE,KAAAvC,EAAqBA,EAAMK,KAAK,EAChDK,MAAO,CACL8B,SAAU,CACRC,SAAU,WACVC,KAAM,EACNC,IAAK,EACLC,cAAe,cACfC,oBAAqB,OACrBC,wBAAyB,OACzBC,gBAAiB,kCAEnBC,YAAa,CAAEC,GAAI,CAAEC,MAAO,eAG/BvC,EAA6B,QAAlBT,EAACI,EAAYI,aAAZR,IAAiBA,OAAjBA,EAAAA,EAAmBiD,WAAY,MAC3CrC,EACAH,EAA6BR,QAAlBA,EAACG,EAAYI,iBAAKP,SAAjBA,EAAmBiD,UAAW,WAIlD,EAGD,OADArD,EAASsD,YAAc,kBAChBtD,CACT"}
1
+ {"version":3,"file":"create.cart-item.js","sources":["../../../src/factory/cart-item/create.cart-item.tsx"],"sourcesContent":["import { ComponentType, useMemo } from 'react'\r\nimport { alpha, Typography } from '@mui/material'\r\nimport { ItemContent, ItemImg, ItemRoot, ItemTitle } from './styled'\r\nimport IFactoryCartProps, { ICartContext, ICartOptions } from './types'\r\nimport { IconButtonConfirm } from '../../components'\r\n\r\nexport function createCartItem<T = {}>(configs?: ICartOptions<T>): ComponentType<IFactoryCartProps<T>> {\r\n const CartItem: ComponentType<IFactoryCartProps<T>> = (props) => {\r\n const viewContext: ICartContext<T> = { item: props.item }\r\n\r\n const initConfigs = useMemo(() => ({ slots: props.slots ?? configs?.slots ?? {} }), [])\r\n\r\n const resolveSlot = (slot: any, defaultNode: React.ReactNode) => {\r\n if (!slot) return defaultNode\r\n if (typeof slot === 'function') return slot(viewContext)\r\n return slot\r\n }\r\n\r\n const titleNode = (\r\n <ItemTitle>\r\n <Typography\r\n variant='subtitle1'\r\n title={props.name}\r\n {...(props.itemTitleProps ?? (props.itemTitlePropsGetter ? props.itemTitlePropsGetter(props.item, props.onClose) : {}))}\r\n >\r\n {props.name}\r\n </Typography>\r\n </ItemTitle>\r\n )\r\n\r\n return (\r\n <ItemRoot>\r\n <ItemImg src={props.imageUrl} fallbackSrc='images/default-video.webp' alt='product-picture' />\r\n <ItemContent>\r\n <IconButtonConfirm\r\n size='small'\r\n onAccept={() => props.onRemoveCart?.(props.item)}\r\n slots={{\r\n sxLayout: {\r\n position: 'absolute',\r\n left: 0,\r\n top: 0,\r\n flexDirection: 'row-reverse',\r\n borderBottomRightRadius: '16px',\r\n backgroundColor: (theme) => alpha(theme.palette.background.paper, 0.8)\r\n },\r\n removeProps: { sx: { color: '#dd5b5b' } }\r\n }}\r\n />\r\n {resolveSlot(initConfigs.slots?.beforeTile, null)}\r\n {titleNode}\r\n {resolveSlot(initConfigs.slots?.afterTile, null)}\r\n </ItemContent>\r\n </ItemRoot>\r\n )\r\n }\r\n\r\n CartItem.displayName = 'FactoryCartItem'\r\n return CartItem\r\n}\r\n\r\nexport default createCartItem\r\n"],"names":["createCartItem","configs","CartItem","props","_props$itemTitleProps","_initConfigs$slots","_initConfigs$slots2","viewContext","item","initConfigs","useMemo","_ref","_props$slots","slots","resolveSlot","slot","defaultNode","titleNode","_jsx","ItemTitle","children","Typography","_objectSpread","variant","title","name","itemTitleProps","itemTitlePropsGetter","onClose","_jsxs","ItemRoot","ItemImg","src","imageUrl","fallbackSrc","alt","ItemContent","IconButtonConfirm","size","onAccept","_props$onRemoveCart","onRemoveCart","call","sxLayout","position","left","top","flexDirection","borderBottomRightRadius","backgroundColor","theme","alpha","palette","background","paper","removeProps","sx","color","beforeTile","afterTile","displayName"],"mappings":"wWAMM,SAAUA,EAAuBC,GACrC,IAAMC,EAAgD,SAACC,GAAS,IAAAC,EAAAC,EAAAC,EACxDC,EAA+B,CAAEC,KAAML,EAAMK,MAE7CC,EAAcC,EAAQ,WAAA,IAAAC,EAAAC,EAAA,MAAO,CAAEC,MAAoC,QAA/BF,EAAaC,QAAbA,EAAET,EAAMU,aAAKD,IAAAA,EAAAA,EAAIX,aAAO,EAAPA,EAASY,aAAK,IAAAF,EAAAA,EAAI,CAAA,EAAK,EAAE,IAE9EG,EAAc,SAACC,EAAWC,GAC9B,OAAKD,EACe,mBAATA,EAA4BA,EAAKR,GACrCQ,EAFWC,CAGnB,EAEKC,EACJC,EAACC,EACC,CAAAC,SAAAF,EAACG,EAAUC,EAAAA,EAAA,CACTC,QAAQ,YACRC,MAAOrB,EAAMsB,MACY,QADRrB,EACZD,EAAMuB,sBAAc,IAAAtB,EAAAA,EAAKD,EAAMwB,qBAAuBxB,EAAMwB,qBAAqBxB,EAAMK,KAAML,EAAMyB,SAAW,IAAE,GAAA,CAAER,SAEtHjB,EAAMsB,UAKb,OACEI,EAACC,EAAQ,CAAAV,SAAA,CACPF,EAACa,EAAO,CAACC,IAAK7B,EAAM8B,SAAUC,YAAY,4BAA4BC,IAAI,oBAC1EN,EAACO,aACClB,EAACmB,GACCC,KAAK,QACLC,SAAU,WAAF,IAAAC,EAAA,eAAAA,EAAQrC,EAAMsC,oBAAY,IAAAD,OAAA,EAAlBA,EAAAE,KAAAvC,EAAqBA,EAAMK,KAAK,EAChDK,MAAO,CACL8B,SAAU,CACRC,SAAU,WACVC,KAAM,EACNC,IAAK,EACLC,cAAe,cACfC,wBAAyB,OACzBC,gBAAiB,SAACC,GAAK,OAAKC,EAAMD,EAAME,QAAQC,WAAWC,MAAO,GAAI,GAExEC,YAAa,CAAEC,GAAI,CAAEC,MAAO,eAG/B3C,EAA6B,QAAlBT,EAACI,EAAYI,aAAZR,IAAiBA,OAAjBA,EAAAA,EAAmBqD,WAAY,MAC3CzC,EACAH,EAA6BR,QAAlBA,EAACG,EAAYI,iBAAKP,SAAjBA,EAAmBqD,UAAW,WAIlD,EAGD,OADAzD,EAAS0D,YAAc,kBAChB1D,CACT"}
@@ -1,2 +1,2 @@
1
- import{styled as e,Box as o,alpha as r}from"@mui/material";import{ImageWithFallback as t}from"dinocollab-core/components";var a=e(o)(function(e){var o=e.theme;return{"--height-item":"auto","--color-bg":"dark"===o.palette.mode?"#1A1A1A":"#FFFFFF","--color-bg-rgb":"dark"===o.palette.mode?"26, 26, 26":"255, 255, 255","--color-bg-secondary":"dark"===o.palette.mode?"#0F0F0F":"#F9FAFB","--color-text":"dark"===o.palette.mode?o.palette.common.white:o.palette.common.black,"--color-text-secondary":"dark"===o.palette.mode?"#a1a1aa":"#64748b","--color-border":"dark"===o.palette.mode?"#27272a":"#f1f5f9","--border-radius":"6px","--border-radius-lg":"16px","--mui-palette-text-primary":"dark"===o.palette.mode?"#FFFFFF":"#000000",position:"relative",display:"flex",gap:o.spacing(1),padding:o.spacing(1),background:"rgba(var(--color-bg-rgb), 0.7)",borderRadius:"var(--border-radius)",border:"1px solid var(--color-border)",transition:"all 0.2s ease","& a":{textDecoration:"none",color:"var(--color-text)"},"&:hover":{boxShadow:"0 0 0 1px ".concat(r(o.palette.primary.main||"#E11D48",.2)),borderColor:r(o.palette.primary.main||"#E11D48",.3)},"&:hover a":{textDecoration:"underline"}}}),i=e(t)(function(e){var o=e.theme;return{height:"62px",aspectRatio:"1 / 1",borderRadius:"var(--border-radius)",objectFit:"cover",flex:"0 0 auto",backgroundColor:"dark"===o.palette.mode?"#27272a":r(o.palette.grey[200],.5)}}),l=e(o)({flex:1,marginBlock:" auto",alignItems:"flex-start",display:"flex",flexDirection:"column",justifyContent:"space-between",minWidth:0}),d=e(o)(function(e){return{color:"var(--color-text)",fontWeight:600,fontSize:"0.875rem",lineHeight:1.25,marginBlock:e.theme.spacing(.5),minWidth:0,width:"100%",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:1,WebkitBoxOrient:"vertical"}});export{l as ItemContent,i as ItemImg,a as ItemRoot,d as ItemTitle};
1
+ import{styled as e,Box as t,alpha as o}from"@mui/material";import{ImageWithFallback as i}from"dinocollab-core/components";var r=e(t)(function(e){var t=e.theme;return{position:"relative",display:"flex",gap:t.spacing(1),padding:t.spacing(1),background:o(t.palette.background.paper,.5),borderRadius:t.spacing(.5),border:"1px solid ".concat(o(t.palette.divider,.3)),transition:"all 0.2s ease","& a":{textDecoration:"none",color:t.palette.text.primary},"&:hover":{boxShadow:"0 0 0 1px ".concat(o(t.palette.primary.main||"#E11D48",.2)),borderColor:o(t.palette.primary.main||"#E11D48",.3)},"&:hover a":{textDecoration:"underline"}}}),a=e(i)(function(e){var t=e.theme;return{height:"62px",aspectRatio:"1 / 1",borderRadius:t.spacing(.5),objectFit:"cover",flex:"0 0 auto",backgroundColor:"dark"===t.palette.mode?"#27272a":o(t.palette.grey[200],.5)}}),n=e(t)({flex:1,marginBlock:" auto",alignItems:"flex-start",display:"flex",flexDirection:"column",justifyContent:"space-between",minWidth:0}),l=e(t)(function(e){return{color:"var(--color-text)",fontWeight:600,fontSize:"0.875rem",lineHeight:1.25,marginBlock:e.theme.spacing(.5),minWidth:0,width:"100%",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:1,WebkitBoxOrient:"vertical"}});export{n as ItemContent,a as ItemImg,r as ItemRoot,l as ItemTitle};
2
2
  //# sourceMappingURL=styled.js.map