dinocollab-shared 1.2.43 → 1.2.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cart/widget.js +1 -1
- package/dist/cart/widget.js.map +1 -1
- package/dist/factory/cart-content/create.cart-content.js +1 -1
- package/dist/factory/cart-content/create.cart-content.js.map +1 -1
- package/dist/factory/cart-content/styled.js +1 -1
- package/dist/factory/cart-content/styled.js.map +1 -1
- package/dist/factory/cart-item/create.cart-item.js +1 -1
- package/dist/factory/cart-item/create.cart-item.js.map +1 -1
- package/dist/factory/cart-item/styled.js +1 -1
- package/dist/factory/cart-item/styled.js.map +1 -1
- package/dist/media-right/hooks.js.map +1 -1
- package/dist/media-right/media-widget/index.js +1 -1
- package/dist/media-right/media-widget/index.js.map +1 -1
- package/dist/media-right/media-widget/media-group-accordion.js +1 -1
- package/dist/media-right/media-widget/media-group-accordion.js.map +1 -1
- package/dist/media-right/service.js +1 -1
- package/dist/media-right/service.js.map +1 -1
- package/dist/media-right/types.js.map +1 -1
- package/dist/types/media-right/hooks.d.ts +5 -5
- package/dist/types/media-right/hooks.d.ts.map +1 -1
- package/dist/types/media-right/media-widget/index.d.ts.map +1 -1
- package/dist/types/media-right/media-widget/media-group-accordion.d.ts.map +1 -1
- package/dist/types/media-right/service.d.ts +4 -4
- package/dist/types/media-right/service.d.ts.map +1 -1
- package/dist/types/media-right/types.d.ts +4 -1
- package/dist/types/media-right/types.d.ts.map +1 -1
- package/package.json +3 -2
package/dist/cart/widget.js
CHANGED
|
@@ -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
|
|
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};
|
|
2
2
|
//# sourceMappingURL=widget.js.map
|
package/dist/cart/widget.js.map
CHANGED
|
@@ -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":"urBAuBA,IAAMA,EAAcC,EAA6B,CAC/CC,OAAQ,CACNC,MAAO,YACPC,eAAgB,gBAElBC,MAAO,CACLF,MAAO,qBACPG,SAAU,8BAIRC,EAAWC,EAA0B,CACzCC,MAAO,CACLC,WAAY,SAACC,GAAG,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,OACdC,EAACC,EAAM,CAAAC,UAAU,MAAMC,SAAU,OAAQC,MAAO,OAAQC,IAAK,EAAGC,WAAW,SAASC,eAAgB,gBAAeC,SAAA,CACjHC,EAACC,EAAQ,CAAAC,QAAQ,QAAQC,GAAI,CAAEC,MAA0BjB,QAArBA,EAAED,EAAImB,KAAKC,kBAAUnB,IAAAA,EAAAA,EAAI,QAC1DY,SAAkBX,QAAlBA,EAAAF,EAAImB,KAAKE,iBAASnB,IAAAA,EAAAA,EAAI,kBAEzBG,EAACC,EAAK,CAACC,UAAU,MAAMG,IAAK,GAAKC,WAAW,WAAUE,SAAA,CACpDR,EAACiB,EAAa,CAAAT,SAAA,CAAA,IAAcV,QAAdA,EAAAH,EAAImB,KAAKI,aAAKpB,IAAAA,EAAAA,EAAI,KAChCE,EAACiB,EAAU,CAACN,QAAQ,QAAQC,GAAI,CAAEO,SAAU,OAAQN,MAAO,WAAWL,SAAA,CAAA,YAAAT,EAClEJ,EAAImB,KAAKM,cAAM,IAAArB,EAAAA,EAAI,EAAC,gBAGpB,KAKDsB,EAAmC,SAACC,GAAS,IAAAC,EAAAC,EACxDC,EAAgCC,EAA6B,MAAKC,EAAAC,EAAAH,EAAA,GAA3DI,EAAQF,EAAA,GAAEG,EAAWH,EAAA,GAC5BI,EAAgCL,GAAS,GAAMM,EAAAJ,EAAAG,EAAA,GAAxCE,EAAQD,EAAA,GAAEE,EAAWF,EAAA,GACtBG,EAAQC,IACRC,EAAWC,EAAcH,EAAMI,YAAYC,KAAK,OAEhDC,EAAmB,QAAdlB,EAAGD,EAAMmB,aAAK,IAAAlB,EAAAA,EAAI,GAG7BG,EAAS,WACPQ,GAAY,EACd,GAEA,IAIMQ,EAAU,WACdZ,EAAY,KACb,EAEKa,EAAgBC,EAAY,WAAA,OAChCnC,EAACzB,EACC,CAAAyD,MAAOA,EACPJ,SAAUA,EACVK,QAASA,EACTG,sBAAuBvB,EAAMuB,sBAC7BC,WAAY,SAACC,GACXL,IACIpB,EAAM0B,mBAAmB1B,EAAM0B,kBAAkBD,EACtD,EACDtD,MAAO,CACLwD,YAAa,SAACtD,GAAO,IAAAuD,EACbC,EAAYC,EAAazD,EAAI8C,OACnC,OACEzC,EAACC,EAAK,CAACM,eAAgB,WAAUC,SAAA,CAC/BC,EAACQ,EACC,CAAAN,QAAQ,UACRC,GAAI,CAAEyC,cAAe,YAAaC,WAAY,IAAKC,cAAe,QAAS1C,MAAO,+BAA+BL,SAAA,UAInHR,EAACiB,EAAU,CAACN,QAAQ,KAAKC,GAAI,CAAE0C,WAAY,IAAKzC,MAAO,WACnDL,SAAA,CAAA,IAAe,QAAf0C,EAAAC,EAAUK,aAAVN,IAAeA,OAAfA,EAAAA,EAAiBO,QAAQ,QAIlC,EACD3C,KAAM,SAACA,EAAM4C,GAAK,IAAAC,EAAA,OAChBlD,EAAClB,EAEC,CAAAuB,KAAMA,EACN8C,KAAM9C,EAAK+C,YACXC,SAAUhD,EAAKiD,WACfC,aAAc1C,EAAM0C,aACpBC,eAAgB3C,EAAM2C,eACtBC,qBAAsB5C,EAAM4C,qBAC5BxB,QAASA,GAPUiB,QAOHA,EAPX7C,EAAKqD,iBAASR,IAAAA,EAAAA,EAAID,EAQvB,IAIT,EAAE,CAACjB,EAAOJ,EAAUf,EAAOoB,IAE5B,OACE1C,EAACoE,aACC3D,EAAC4D,GAAeC,QAAS,SAACC,GAAC,OArDfC,EAqD2BD,EAAEE,mBApD3C3C,EAAY0C,GADC,IAACA,CAqD2C,EAAAhE,SACrDC,EAACiE,GAAMC,aAAc1C,GAAwB,QAAhBT,EAAIiB,EAAMmC,cAAMpD,IAAAA,EAAAA,EAAS,EAAGX,MAAM,QAAOL,SACpEC,EAACoE,EAAwB,CAAC1D,SAAS,cAGtCkB,EACC5B,EAACqE,EAAM,CACLC,OAAO,QACPC,KAAMC,QAAQpD,GACda,QAASA,EACTwC,mBACA,EAAAC,WAAY,CAAEvE,GAAI,CAAER,MAAO,qBAAsBgF,SAAU,eAE3D3E,EAAC4E,YAAM1C,QAGTlC,EAAC6E,GACCJ,mBAAiB,EACjBrD,SAAUA,EACVmD,KAAMC,QAAQpD,GACda,QAASA,EACT6C,aAAc,CAAEC,SAAU,MAAOC,WAAY,SAC7CC,gBAAiB,CAAEF,SAAU,MAAOC,WAAY,SAChDE,cAAe,CAAEC,UAAW,MAAOhF,GAAI,CAAEiF,QAAS,OAAQC,cAAe,WAAYtF,SAErFC,EAAC4E,EAAI,CAAA7E,SAAEmC,UAKjB,EAEaoD,EAAmB,SAACC,GAC/B,IAAMC,EAA6C,SAAC3E,GAAK,OAAKb,EAACY,EAAU6E,EAAAA,EAAA,CAAA,EAAKF,GAAY1E,GAAS,EAEnG,OADA2E,EAAYE,YAAc,aACnBF,CACT"}
|
|
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{
|
|
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};
|
|
2
2
|
//# sourceMappingURL=create.cart-content.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.cart-content.js","sources":["../../../src/factory/cart-content/create.cart-content.tsx"],"sourcesContent":["import React, { ComponentType } from 'react'\r\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward'\r\nimport { Typography } from '@mui/material'\r\nimport { ButtonOrange, NoDataPanel } from '../../components'\r\nimport { Root, Header, HeaderLeft, Body, Items, Footer } from './styled'\r\nimport type { ICartContentProps, ICartContentViewContext, ICartContentOptions } from './types'\r\n\r\nexport const createCartContent = <T = {},>(defaultOptions?: ICartContentOptions): ComponentType<ICartContentProps<T>> => {\r\n const FactoryCartContent: ComponentType<ICartContentProps<T>> = (props) => {\r\n const carts = props.carts ?? []\r\n const viewContext: ICartContentViewContext<T> = {\r\n carts: carts as T[],\r\n isMobile: props.isMobile,\r\n labels: {\r\n ...(defaultOptions?.labels ?? {}),\r\n ...(props.options?.labels ?? {})\r\n },\r\n empty: {\r\n ...(defaultOptions?.empty ?? {}),\r\n ...(props.options?.empty ?? {})\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 emptyDefault = <NoDataPanel title={viewContext.empty?.title} subTitle={viewContext.empty?.subTitle} sx={{ m: 1, flex: 1 }} />\r\n const itemsNode = (\r\n <>\r\n {carts.length > 0\r\n ? carts.map((it, i) => (props.slots?.item ? props.slots.item(it as T, i, viewContext) : null))\r\n : (resolveSlot(props.slots?.empty, null) ?? emptyDefault)}\r\n </>\r\n )\r\n\r\n const headerNode = (\r\n <Header flexWrap={'wrap'} {...props.slots?.headerProps}>\r\n {resolveSlot(\r\n props.slots?.headerLeft,\r\n <HeaderLeft {...props.slots?.headerLeftProps}>\r\n <Typography variant='h5' component='h2' fontWeight={'bold'}>\r\n {viewContext.labels?.title}\r\n </Typography>\r\n <Typography variant='body2' sx={{ color: 'var(--color-text-secondary)' }}>\r\n {carts.length ?? 0} {carts.length === 1 ? viewContext.labels?.itemsSuffixSingle : viewContext.labels?.itemsSuffixMany} in total\r\n </Typography>\r\n </HeaderLeft>\r\n )}\r\n {props.slots?.headerRight && resolveSlot(props.slots?.headerRight, null)}\r\n </Header>\r\n )\r\n\r\n const footerNode = (\r\n <Footer>\r\n <ButtonOrange\r\n variant='contained'\r\n size='medium'\r\n endIcon={<ArrowForwardIcon />}\r\n onClick={(e) => {\r\n props.onClose?.()\r\n props.onCheckout?.(e as React.MouseEvent<HTMLButtonElement, MouseEvent>)\r\n }}\r\n disabled={carts.length < 1}\r\n sx={{ height: '
|
|
1
|
+
{"version":3,"file":"create.cart-content.js","sources":["../../../src/factory/cart-content/create.cart-content.tsx"],"sourcesContent":["import React, { ComponentType } from 'react'\r\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward'\r\nimport { Typography } from '@mui/material'\r\nimport { ButtonOrange, NoDataPanel } from '../../components'\r\nimport { Root, Header, HeaderLeft, Body, Items, Footer } from './styled'\r\nimport type { ICartContentProps, ICartContentViewContext, ICartContentOptions } from './types'\r\n\r\nexport const createCartContent = <T = {},>(defaultOptions?: ICartContentOptions): ComponentType<ICartContentProps<T>> => {\r\n const FactoryCartContent: ComponentType<ICartContentProps<T>> = (props) => {\r\n const carts = props.carts ?? []\r\n const viewContext: ICartContentViewContext<T> = {\r\n carts: carts as T[],\r\n isMobile: props.isMobile,\r\n labels: {\r\n ...(defaultOptions?.labels ?? {}),\r\n ...(props.options?.labels ?? {})\r\n },\r\n empty: {\r\n ...(defaultOptions?.empty ?? {}),\r\n ...(props.options?.empty ?? {})\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 emptyDefault = <NoDataPanel title={viewContext.empty?.title} subTitle={viewContext.empty?.subTitle} sx={{ m: 1, flex: 1 }} />\r\n const itemsNode = (\r\n <>\r\n {carts.length > 0\r\n ? carts.map((it, i) => (props.slots?.item ? props.slots.item(it as T, i, viewContext) : null))\r\n : (resolveSlot(props.slots?.empty, null) ?? emptyDefault)}\r\n </>\r\n )\r\n\r\n const headerNode = (\r\n <Header flexWrap={'wrap'} {...props.slots?.headerProps}>\r\n {resolveSlot(\r\n props.slots?.headerLeft,\r\n <HeaderLeft {...props.slots?.headerLeftProps}>\r\n <Typography variant='h5' component='h2' fontWeight={'bold'}>\r\n {viewContext.labels?.title}\r\n </Typography>\r\n <Typography variant='body2' sx={{ color: 'var(--color-text-secondary)' }}>\r\n {carts.length ?? 0} {carts.length === 1 ? viewContext.labels?.itemsSuffixSingle : viewContext.labels?.itemsSuffixMany} in total\r\n </Typography>\r\n </HeaderLeft>\r\n )}\r\n {props.slots?.headerRight && resolveSlot(props.slots?.headerRight, null)}\r\n </Header>\r\n )\r\n\r\n const footerNode = (\r\n <Footer>\r\n <ButtonOrange\r\n variant='contained'\r\n size='medium'\r\n endIcon={<ArrowForwardIcon />}\r\n onClick={(e) => {\r\n props.onClose?.()\r\n props.onCheckout?.(e as React.MouseEvent<HTMLButtonElement, MouseEvent>)\r\n }}\r\n disabled={carts.length < 1}\r\n sx={{ height: '42px', borderRadius: 1, fontWeight: 700, fontSize: '1rem', backgroundColor: '#e88c3f', textTransform: 'none' }}\r\n {...props.buttonMoveToCartProps}\r\n {...props.buttonCheckoutProps}\r\n >\r\n {props.buttonMoveToCartProps?.children || props.buttonCheckoutProps?.children || viewContext.labels?.buttonCheckout}\r\n </ButtonOrange>\r\n </Footer>\r\n )\r\n\r\n return (\r\n <Root className={props.isMobile ? 'mobile' : ''}>\r\n {resolveSlot(props.slots?.header, headerNode)}\r\n <Body>\r\n <Items>\r\n {resolveSlot(props.slots?.beforeItems, null)}\r\n {resolveSlot(props.slots?.items, itemsNode) ?? itemsNode}\r\n {resolveSlot(props.slots?.afterItems, null)}\r\n </Items>\r\n </Body>\r\n {resolveSlot(props.slots?.footer, footerNode)}\r\n </Root>\r\n )\r\n }\r\n\r\n FactoryCartContent.displayName = 'FactoryCartContent'\r\n return FactoryCartContent\r\n}\r\n\r\nexport default createCartContent\r\n"],"names":["createCartContent","defaultOptions","FactoryCartContent","props","_props$carts","_defaultOptions$label","_props$options$labels","_props$options","_defaultOptions$empty","_props$options$empty","_props$options2","_viewContext$empty","_viewContext$empty2","_resolveSlot","_props$slots2","_props$slots3","_props$slots4","_props$slots5","_viewContext$labels","_carts$length","_viewContext$labels2","_viewContext$labels3","_props$slots6","_props$slots7","_props$buttonMoveToCa","_props$buttonCheckout","_viewContext$labels4","_props$slots8","_props$slots9","_resolveSlot2","_props$slots0","_props$slots1","_props$slots10","carts","viewContext","isMobile","labels","_objectSpread","options","empty","resolveSlot","slot","defaultNode","emptyDefault","_jsx","NoDataPanel","title","subTitle","sx","m","flex","itemsNode","_Fragment","children","length","map","it","i","_props$slots","slots","item","headerNode","_jsxs","Header","flexWrap","headerProps","headerLeft","HeaderLeft","headerLeftProps","Typography","variant","component","fontWeight","color","itemsSuffixSingle","itemsSuffixMany","headerRight","footerNode","Footer","ButtonOrange","size","endIcon","ArrowForwardIcon","onClick","e","_props$onClose","_props$onCheckout","onClose","call","onCheckout","disabled","height","borderRadius","fontSize","backgroundColor","textTransform","buttonMoveToCartProps","buttonCheckoutProps","buttonCheckout","Root","className","header","Body","Items","beforeItems","items","afterItems","footer","displayName"],"mappings":"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"}
|
|
@@ -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){return{padding:
|
|
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};
|
|
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:
|
|
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,2 +1,2 @@
|
|
|
1
|
-
import{objectSpread2 as
|
|
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};
|
|
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":"
|
|
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,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
|
|
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};
|
|
2
2
|
//# sourceMappingURL=styled.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sources":["../../../src/factory/cart-item/styled.tsx"],"sourcesContent":["import { Box, styled, alpha } from '@mui/material'\r\nimport { ImageWithFallback } from 'dinocollab-core/components'\r\nimport type { ComponentType } from 'react'\r\nimport type { BoxProps } from '@mui/material'\r\nimport type { IImageWithFallbackProps } from 'dinocollab-core/components'\r\n\r\nexport const ItemRoot: ComponentType<BoxProps> = styled(Box)(({ theme }) => ({\r\n '--height-item': 'auto',\r\n '--color-bg': theme.palette.mode === 'dark' ? '#1A1A1A' : '#FFFFFF',\r\n '--color-bg-rgb': theme.palette.mode === 'dark' ? '26, 26, 26' : '255, 255, 255',\r\n '--color-bg-secondary': theme.palette.mode === 'dark' ? '#0F0F0F' : '#F9FAFB',\r\n '--color-text': theme.palette.mode === 'dark' ? theme.palette.common.white : theme.palette.common.black,\r\n '--color-text-secondary': theme.palette.mode === 'dark' ? '#a1a1aa' : '#64748b',\r\n '--color-border': theme.palette.mode === 'dark' ? '#27272a' : '#f1f5f9',\r\n '--border-radius': '6px',\r\n '--border-radius-lg': '16px',\r\n '--mui-palette-text-primary': theme.palette.mode === 'dark' ? '#FFFFFF' : '#000000',\r\n\r\n position: 'relative',\r\n display: 'flex',\r\n gap: theme.spacing(1),\r\n padding: theme.spacing(1),\r\n background: 'rgba(var(--color-bg-rgb), 0.7)',\r\n borderRadius: 'var(--border-radius
|
|
1
|
+
{"version":3,"file":"styled.js","sources":["../../../src/factory/cart-item/styled.tsx"],"sourcesContent":["import { Box, styled, alpha } from '@mui/material'\r\nimport { ImageWithFallback } from 'dinocollab-core/components'\r\nimport type { ComponentType } from 'react'\r\nimport type { BoxProps } from '@mui/material'\r\nimport type { IImageWithFallbackProps } from 'dinocollab-core/components'\r\n\r\nexport const ItemRoot: ComponentType<BoxProps> = styled(Box)(({ theme }) => ({\r\n '--height-item': 'auto',\r\n '--color-bg': theme.palette.mode === 'dark' ? '#1A1A1A' : '#FFFFFF',\r\n '--color-bg-rgb': theme.palette.mode === 'dark' ? '26, 26, 26' : '255, 255, 255',\r\n '--color-bg-secondary': theme.palette.mode === 'dark' ? '#0F0F0F' : '#F9FAFB',\r\n '--color-text': theme.palette.mode === 'dark' ? theme.palette.common.white : theme.palette.common.black,\r\n '--color-text-secondary': theme.palette.mode === 'dark' ? '#a1a1aa' : '#64748b',\r\n '--color-border': theme.palette.mode === 'dark' ? '#27272a' : '#f1f5f9',\r\n '--border-radius': '6px',\r\n '--border-radius-lg': '16px',\r\n '--mui-palette-text-primary': theme.palette.mode === 'dark' ? '#FFFFFF' : '#000000',\r\n\r\n position: 'relative',\r\n display: 'flex',\r\n gap: theme.spacing(1),\r\n padding: theme.spacing(1),\r\n background: 'rgba(var(--color-bg-rgb), 0.7)',\r\n borderRadius: 'var(--border-radius)',\r\n border: '1px solid var(--color-border)',\r\n transition: 'all 0.2s ease',\r\n '& a': { textDecoration: 'none', color: 'var(--color-text)' },\r\n '&:hover': {\r\n boxShadow: `0 0 0 1px ${alpha(theme.palette.primary.main || '#E11D48', 0.2)}`,\r\n borderColor: alpha(theme.palette.primary.main || '#E11D48', 0.3)\r\n },\r\n '&:hover a': { textDecoration: 'underline' }\r\n}))\r\n\r\nexport const ItemImg: ComponentType<IImageWithFallbackProps> = styled(ImageWithFallback)<{ src?: string }>(({ theme }) => ({\r\n height: '62px',\r\n aspectRatio: '1 / 1',\r\n borderRadius: 'var(--border-radius)',\r\n objectFit: 'cover',\r\n flex: '0 0 auto',\r\n backgroundColor: theme.palette.mode === 'dark' ? '#27272a' : alpha(theme.palette.grey[200], 0.5)\r\n}))\r\n\r\nexport const ItemContent: ComponentType<BoxProps> = styled(Box)({\r\n flex: 1,\r\n marginBlock: ' auto',\r\n alignItems: 'flex-start',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'space-between',\r\n minWidth: 0\r\n})\r\n\r\nexport const ItemTitle: ComponentType<BoxProps> = styled(Box)(({ theme }) => ({\r\n color: 'var(--color-text)',\r\n fontWeight: 600,\r\n fontSize: '0.875rem',\r\n lineHeight: 1.25,\r\n marginBlock: theme.spacing(0.5),\r\n minWidth: 0,\r\n width: '100%',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n display: '-webkit-box',\r\n WebkitLineClamp: 1,\r\n WebkitBoxOrient: 'vertical'\r\n}))\r\n"],"names":["ItemRoot","styled","Box","_ref","theme","palette","mode","common","white","black","position","display","gap","spacing","padding","background","borderRadius","border","transition","textDecoration","color","boxShadow","concat","alpha","primary","main","borderColor","ItemImg","ImageWithFallback","_ref2","height","aspectRatio","objectFit","flex","backgroundColor","grey","ItemContent","marginBlock","alignItems","flexDirection","justifyContent","minWidth","ItemTitle","_ref3","fontWeight","fontSize","lineHeight","width","overflow","textOverflow","WebkitLineClamp","WebkitBoxOrient"],"mappings":"0HAMO,IAAMA,EAAoCC,EAAOC,EAAPD,CAAY,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAK,MAAQ,CAC3E,gBAAiB,OACjB,aAAqC,SAAvBA,EAAMC,QAAQC,KAAkB,UAAY,UAC1D,iBAAyC,SAAvBF,EAAMC,QAAQC,KAAkB,aAAe,gBACjE,uBAA+C,SAAvBF,EAAMC,QAAQC,KAAkB,UAAY,UACpE,eAAuC,SAAvBF,EAAMC,QAAQC,KAAkBF,EAAMC,QAAQE,OAAOC,MAAQJ,EAAMC,QAAQE,OAAOE,MAClG,yBAAiD,SAAvBL,EAAMC,QAAQC,KAAkB,UAAY,UACtE,iBAAyC,SAAvBF,EAAMC,QAAQC,KAAkB,UAAY,UAC9D,kBAAmB,MACnB,qBAAsB,OACtB,6BAAqD,SAAvBF,EAAMC,QAAQC,KAAkB,UAAY,UAE1EI,SAAU,WACVC,QAAS,OACTC,IAAKR,EAAMS,QAAQ,GACnBC,QAASV,EAAMS,QAAQ,GACvBE,WAAY,iCACZC,aAAc,uBACdC,OAAQ,gCACRC,WAAY,gBACZ,MAAO,CAAEC,eAAgB,OAAQC,MAAO,qBACxC,UAAW,CACTC,uBAASC,OAAeC,EAAMnB,EAAMC,QAAQmB,QAAQC,MAAQ,UAAW,KACvEC,YAAaH,EAAMnB,EAAMC,QAAQmB,QAAQC,MAAQ,UAAW,KAE9D,YAAa,CAAEN,eAAgB,aAChC,GAEYQ,EAAkD1B,EAAO2B,EAAP3B,CAA4C,SAAA4B,GAAA,IAAGzB,EAAKyB,EAALzB,MAAK,MAAQ,CACzH0B,OAAQ,OACRC,YAAa,QACbf,aAAc,uBACdgB,UAAW,QACXC,KAAM,WACNC,gBAAwC,SAAvB9B,EAAMC,QAAQC,KAAkB,UAAYiB,EAAMnB,EAAMC,QAAQ8B,KAAK,KAAM,IAC7F,GAEYC,EAAuCnC,EAAOC,EAAPD,CAAY,CAC9DgC,KAAM,EACNI,YAAa,QACbC,WAAY,aACZ3B,QAAS,OACT4B,cAAe,SACfC,eAAgB,gBAChBC,SAAU,IAGCC,EAAqCzC,EAAOC,EAAPD,CAAY,SAAA0C,GAAQ,MAAQ,CAC5EvB,MAAO,oBACPwB,WAAY,IACZC,SAAU,WACVC,WAAY,KACZT,YALoEM,EAALvC,MAK5CS,QAAQ,IAC3B4B,SAAU,EACVM,MAAO,OACPC,SAAU,SACVC,aAAc,WACdtC,QAAS,cACTuC,gBAAiB,EACjBC,gBAAiB,WAClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../src/media-right/hooks.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react'\r\nimport { mediaRightService, MediaRightService } from './service'\r\nimport { IMediaRightChannel, IMediaRightGroup, IMediaRightItem } from './types'\r\n\r\nexport interface IMediaRightStoreOptions {\r\n localStorageKey?: string\r\n}\r\n\r\nexport function useMediaRightStore<O = any>(params?: IMediaRightStoreOptions) {\r\n const initializedRef = useRef(false)\r\n\r\n // Set custom localStorage key BEFORE getting initial data\r\n if (params?.localStorageKey && !initializedRef.current) {\r\n MediaRightService.setOptions({ localStorageKey: params.localStorageKey })\r\n }\r\n\r\n const [groups, setGroups] = useState<Record<string, IMediaRightGroup<O>>>(\r\n () => mediaRightService.getGroupsMap() as Record<string, IMediaRightGroup<O>>\r\n )\r\n\r\n useEffect(() => {\r\n // Initialize and subscribe to changes\r\n if (!initializedRef.current) {\r\n mediaRightService.initialize()\r\n initializedRef.current = true\r\n }\r\n\r\n const unsubscribe = mediaRightService.subscribe('stateChange', ({ groups }) => {\r\n setGroups(groups as Record<string, IMediaRightGroup<O>>)\r\n })\r\n\r\n return () => {\r\n if (unsubscribe) unsubscribe()\r\n }\r\n }, [])\r\n\r\n return { groups: Object.values(groups), groupsMap: groups }\r\n}\r\n\r\nexport function useMediaRightActions<O = any>(params?: IMediaRightStoreOptions) {\r\n const initializedRef = useRef(false)\r\n\r\n // Set custom localStorage key ONCE on mount\r\n if (params?.localStorageKey && !initializedRef.current) {\r\n MediaRightService.setOptions({ localStorageKey: params.localStorageKey })\r\n initializedRef.current = true\r\n }\r\n\r\n const addGroup = (group: Omit<IMediaRightGroup<O>, 'createdAt' | 'items' | 'channels'>) => {\r\n mediaRightService.addGroup(group)\r\n }\r\n\r\n const updateGroup = (groupId: string, updates: Partial<Pick<IMediaRightGroup<O>, 'name'>>) => {\r\n mediaRightService.updateGroup(groupId, updates)\r\n }\r\n\r\n const removeGroup = (groupId: string) => {\r\n mediaRightService.removeGroup(groupId)\r\n }\r\n\r\n const addItem = (item: IMediaRightItem<O>) => {\r\n mediaRightService.addItem(item)\r\n }\r\n\r\n const updateItem = (groupId: string, productId: string, updates: Partial<IMediaRightItem<O>>) => {\r\n mediaRightService.updateItem(groupId, productId, updates)\r\n }\r\n\r\n const removeItem = (groupId: string, productId: string) => {\r\n mediaRightService.removeItem(groupId, productId)\r\n }\r\n\r\n const clearCart = () => {\r\n mediaRightService.clearAll()\r\n }\r\n\r\n const addChannel = (groupId: string, channel:
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../src/media-right/hooks.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react'\r\nimport { mediaRightService, MediaRightService } from './service'\r\nimport { IMediaRightChannel, IMediaRightChannelCreate, IMediaRightGroup, IMediaRightItem } from './types'\r\n\r\nexport interface IMediaRightStoreOptions {\r\n localStorageKey?: string\r\n}\r\n\r\nexport function useMediaRightStore<O = any>(params?: IMediaRightStoreOptions) {\r\n const initializedRef = useRef(false)\r\n\r\n // Set custom localStorage key BEFORE getting initial data\r\n if (params?.localStorageKey && !initializedRef.current) {\r\n MediaRightService.setOptions({ localStorageKey: params.localStorageKey })\r\n }\r\n\r\n const [groups, setGroups] = useState<Record<string, IMediaRightGroup<O>>>(\r\n () => mediaRightService.getGroupsMap() as Record<string, IMediaRightGroup<O>>\r\n )\r\n\r\n useEffect(() => {\r\n // Initialize and subscribe to changes\r\n if (!initializedRef.current) {\r\n mediaRightService.initialize()\r\n initializedRef.current = true\r\n }\r\n\r\n const unsubscribe = mediaRightService.subscribe('stateChange', ({ groups }) => {\r\n setGroups(groups as Record<string, IMediaRightGroup<O>>)\r\n })\r\n\r\n return () => {\r\n if (unsubscribe) unsubscribe()\r\n }\r\n }, [])\r\n\r\n return { groups: Object.values(groups), groupsMap: groups }\r\n}\r\n\r\nexport function useMediaRightActions<O = any>(params?: IMediaRightStoreOptions) {\r\n const initializedRef = useRef(false)\r\n\r\n // Set custom localStorage key ONCE on mount\r\n if (params?.localStorageKey && !initializedRef.current) {\r\n MediaRightService.setOptions({ localStorageKey: params.localStorageKey })\r\n initializedRef.current = true\r\n }\r\n\r\n const addGroup = (group: Omit<IMediaRightGroup<O>, 'id' | 'createdAt' | 'items' | 'channels'>) => {\r\n mediaRightService.addGroup(group)\r\n }\r\n\r\n const updateGroup = (groupId: string, updates: Partial<Pick<IMediaRightGroup<O>, 'name'>>) => {\r\n mediaRightService.updateGroup(groupId, updates)\r\n }\r\n\r\n const removeGroup = (groupId: string) => {\r\n mediaRightService.removeGroup(groupId)\r\n }\r\n\r\n const addItem = (item: IMediaRightItem<O>) => {\r\n mediaRightService.addItem(item)\r\n }\r\n\r\n const updateItem = (groupId: string, productId: string, updates: Partial<IMediaRightItem<O>>) => {\r\n mediaRightService.updateItem(groupId, productId, updates)\r\n }\r\n\r\n const removeItem = (groupId: string, productId: string) => {\r\n mediaRightService.removeItem(groupId, productId)\r\n }\r\n\r\n const clearCart = () => {\r\n mediaRightService.clearAll()\r\n }\r\n\r\n const addChannel = (groupId: string, channel: IMediaRightChannelCreate) => {\r\n mediaRightService.addChannel(groupId, channel)\r\n }\r\n\r\n const updateChannel = (groupId: string, channelId: string, updates: Partial<IMediaRightChannel>) => {\r\n mediaRightService.updateChannel(groupId, channelId, updates)\r\n }\r\n\r\n const removeChannel = (groupId: string, channelId: string) => {\r\n mediaRightService.removeChannel(groupId, channelId)\r\n }\r\n\r\n const clearChannels = (groupId: string) => {\r\n mediaRightService.clearChannels(groupId)\r\n }\r\n\r\n return {\r\n addGroup,\r\n updateGroup,\r\n removeGroup,\r\n addItem,\r\n updateItem,\r\n removeItem,\r\n addChannel,\r\n updateChannel,\r\n removeChannel,\r\n clearChannels,\r\n clearCart\r\n }\r\n}\r\n"],"names":["useMediaRightStore","params","initializedRef","useRef","localStorageKey","current","MediaRightService","setOptions","_useState","useState","mediaRightService","getGroupsMap","_useState2","_slicedToArray","groups","setGroups","useEffect","initialize","unsubscribe","subscribe","_ref","Object","values","groupsMap","useMediaRightActions","addGroup","group","updateGroup","groupId","updates","removeGroup","addItem","item","updateItem","productId","removeItem","addChannel","channel","updateChannel","channelId","removeChannel","clearChannels","clearCart","clearAll"],"mappings":"6MAQM,SAAUA,EAA4BC,GAC1C,IAAMC,EAAiBC,GAAO,GAG1BF,SAAAA,EAAQG,kBAAoBF,EAAeG,SAC7CC,EAAkBC,WAAW,CAAEH,gBAAiBH,EAAOG,kBAGzD,IAAAI,EAA4BC,EAC1B,WAAA,OAAMC,EAAkBC,iBACzBC,EAAAC,EAAAL,EAAA,GAFMM,EAAMF,EAAA,GAAEG,EAASH,EAAA,GAoBxB,OAhBAI,EAAU,WAEHd,EAAeG,UAClBK,EAAkBO,aAClBf,EAAeG,SAAU,GAG3B,IAAMa,EAAcR,EAAkBS,UAAU,cAAe,SAAAC,GAAe,IAAZN,EAAMM,EAANN,OAChEC,EAAUD,EACZ,GAEA,OAAO,WACDI,GAAaA,GAClB,CACF,EAAE,IAEI,CAAEJ,OAAQO,OAAOC,OAAOR,GAASS,UAAWT,EACrD,CAEM,SAAUU,EAA8BvB,GAC5C,IAAMC,EAAiBC,GAAO,GAG1BF,SAAAA,EAAQG,kBAAoBF,EAAeG,UAC7CC,EAAkBC,WAAW,CAAEH,gBAAiBH,EAAOG,kBACvDF,EAAeG,SAAU,GA+C3B,MAAO,CACLoB,SA7Ce,SAACC,GAChBhB,EAAkBe,SAASC,EAC5B,EA4CCC,YA1CkB,SAACC,EAAiBC,GACpCnB,EAAkBiB,YAAYC,EAASC,EACxC,EAyCCC,YAvCkB,SAACF,GACnBlB,EAAkBoB,YAAYF,EAC/B,EAsCCG,QApCc,SAACC,GACftB,EAAkBqB,QAAQC,EAC3B,EAmCCC,WAjCiB,SAACL,EAAiBM,EAAmBL,GACtDnB,EAAkBuB,WAAWL,EAASM,EAAWL,EAClD,EAgCCM,WA9BiB,SAACP,EAAiBM,GACnCxB,EAAkByB,WAAWP,EAASM,EACvC,EA6BCE,WAvBiB,SAACR,EAAiBS,GACnC3B,EAAkB0B,WAAWR,EAASS,EACvC,EAsBCC,cApBoB,SAACV,EAAiBW,EAAmBV,GACzDnB,EAAkB4B,cAAcV,EAASW,EAAWV,EACrD,EAmBCW,cAjBoB,SAACZ,EAAiBW,GACtC7B,EAAkB8B,cAAcZ,EAASW,EAC1C,EAgBCE,cAdoB,SAACb,GACrBlB,EAAkB+B,cAAcb,EACjC,EAaCc,UA/BgB,WAChBhC,EAAkBiC,UACnB,EA+BH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{slicedToArray as o,objectSpread2 as r}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as t,jsxs as e,Fragment as n}from"react/jsx-runtime";import{useState as i,useCallback as l}from"react";import{useTheme as a,useMediaQuery as c,Badge as u,Drawer as s}from"@mui/material";import p from"@mui/icons-material/PlaylistPlay";import{canAddGroup as m
|
|
1
|
+
import{slicedToArray as o,objectSpread2 as r}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as t,jsxs as e,Fragment as n}from"react/jsx-runtime";import{useState as i,useCallback as l}from"react";import{useTheme as a,useMediaQuery as c,Badge as u,Drawer as s}from"@mui/material";import p from"@mui/icons-material/PlaylistPlay";import{canAddGroup as m}from"../helpers.js";import{Root as d,MenuStyled as f}from"./styled.js";import{IconButtonDark as h}from"../../components/buttons.js";import{MediaGroupAccordion as g}from"./media-group-accordion.js";import{useMediaRightStore as y,useMediaRightActions as P}from"../hooks.js";import{createCartContent as b}from"../../factory/cart-content/create.cart-content.js";import{createCartItem as v}from"../../factory/cart-item/create.cart-item.js";import{NewGroupArea as x}from"./new-group-area.js";var C=b({labels:{title:"Your Playlist",buttonCheckout:"Show in playlist",itemsSuffixMany:"playlists",itemsSuffixSingle:"playlist"},empty:{title:"Your playlist is empty",subTitle:"Try adding some playlist"}}),j=v({}),S=function(r){var b=r.localStorageKey,v=y({localStorageKey:b}).groups,S=P({localStorageKey:b}),T=a(),G=c(T.breakpoints.down("sm")),M=i(null),k=o(M,2),w=k[0],D=k[1],I=i(!1),L=o(I,2),B=L[0],K=L[1],z=function(o){S.addGroup({name:o})},A=function(o){S.updateGroup(o.id,o)},E=function(o){S.removeGroup(o)},N=function(o,r){S.removeItem(o,r)},O=l(function(){return t(C,{isMobile:G,carts:v,onClose:function(){return D(null)},onCheckout:function(){return D(null)},buttonMoveToCartProps:r.buttonMoveToCartProps,slots:{headerLeftProps:{flexDirection:"row",alignItems:"flex-end",justifyContent:"space-between",gap:1,flex:1},headerRight:function(o){return m(v)&&t(x,{onSaveGroup:z})},item:function(o){return t(g,{group:o,onEditGroup:A,onDeleteGroup:E,onDeleteMedia:N,accordionProps:{expanded:B===o.id,onChange:function(r,t){return K(!!t&&o.id)}},accordionDetailsProps:{sx:{display:"flex",flexDirection:"column",position:"relative",gap:1,p:1,"& .MuiAccordionDetails-root":{p:0}}},renderItem:function(e){return t(j,{item:e,name:e.ProductName,imageUrl:e.PictureUrl,onRemoveCart:function(){return N(o.id,e.ProductId)},itemTitleProps:r.itemTitleProps,itemTitlePropsGetter:r.itemTitlePropsGetter,onClose:function(){return D(null)}},e.ProductId)}},o.id)}}})},[v,G,r,B]);return e(n,{children:[t(h,{onClick:function(o){return D(o.currentTarget)},children:t(u,{badgeContent:v.length||0,color:"error",children:t(p,{})})}),G?t(s,{anchor:"right",open:Boolean(w),onClose:function(){return D(null)},disableScrollLock:!0,PaperProps:{sx:{width:"calc(100% - 100px)",maxWidth:360}},children:t(d,{children:O()})}):t(f,{disableScrollLock:!0,anchorEl:w,open:Boolean(w),onClose:function(){return D(null)},anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},MenuListProps:{component:"div"},children:t(d,{children:O()})})]})},T=function(o){var e=function(e){return t(S,r(r({},o),e))};return e.displayName="MediaGroupWidget",e};export{S as MediaGroupWidget,T as createMediaGroupWidget};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/media-right/media-widget/index.tsx"],"sourcesContent":["import { useCallback, useState } from 'react'\r\nimport { Badge, ButtonProps, Drawer, TypographyProps, useMediaQuery, useTheme } from '@mui/material'\r\nimport PlaylistPlayIcon from '@mui/icons-material/PlaylistPlay'\r\nimport { canAddGroup, generateGroupId } from '../helpers'\r\nimport { MenuStyled, Root } from './styled'\r\nimport { IconButtonDark } from '../../components/buttons'\r\nimport { MediaGroupAccordion } from './media-group-accordion'\r\nimport { useMediaRightStore, useMediaRightActions } from '../hooks'\r\nimport type { IMediaRightGroup, IMediaRightItem } from '../types'\r\nimport createCartContent from '../../factory/cart-content/create.cart-content'\r\nimport createCartItem from '../../factory/cart-item/create.cart-item'\r\nimport { NewGroupArea } from './new-group-area'\r\n\r\nexport interface IMediaGroupWidgetProps {\r\n itemTitleProps?: TypographyProps & { [key: string]: any }\r\n itemTitlePropsGetter?: (item: IMediaRightItem, onClose?: () => void) => TypographyProps & { [key: string]: any }\r\n onClose?: () => void\r\n localStorageKey?: string\r\n hrefCart?: string\r\n buttonMoveToCartProps?: ButtonProps & { [key: string]: any }\r\n onDetailClick?: ButtonProps['onClick']\r\n}\r\n\r\nconst CartContent = createCartContent<IMediaRightGroup>({\r\n labels: {\r\n title: 'Your Playlist',\r\n buttonCheckout: 'Show in playlist',\r\n itemsSuffixMany: 'playlists',\r\n itemsSuffixSingle: 'playlist'\r\n },\r\n empty: {\r\n title: 'Your playlist is empty',\r\n subTitle: 'Try adding some media items'\r\n }\r\n})\r\n\r\nconst CartItem = createCartItem<IMediaRightItem>({})\r\n\r\nexport const MediaGroupWidget: React.FC<IMediaGroupWidgetProps> = (props) => {\r\n const { localStorageKey } = props\r\n const { groups } = useMediaRightStore({ localStorageKey })\r\n const actions = useMediaRightActions({ localStorageKey })\r\n const theme = useTheme()\r\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'))\r\n\r\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\r\n const [expandedGroupId, setExpandedGroupId] = useState<string | false>(false)\r\n\r\n const handleSaveNewGroup = (groupName: string) => {\r\n actions.addGroup({\r\n name: groupName,\r\n id: generateGroupId()\r\n })\r\n }\r\n\r\n const handleEditGroup = (group: IMediaRightGroup) => {\r\n actions.updateGroup(group.id, group)\r\n }\r\n\r\n const handleDeleteGroup = (groupId: string) => {\r\n actions.removeGroup(groupId)\r\n }\r\n\r\n const handleDeleteMedia = (groupId: string, productId: string) => {\r\n actions.removeItem(groupId, productId)\r\n }\r\n\r\n const renderContent = useCallback(\r\n () => (\r\n <CartContent\r\n isMobile={isMobile}\r\n carts={groups}\r\n onClose={() => setAnchorEl(null)}\r\n onCheckout={() => setAnchorEl(null)}\r\n buttonMoveToCartProps={props.buttonMoveToCartProps}\r\n slots={{\r\n headerLeftProps: {\r\n flexDirection: 'row',\r\n alignItems: 'flex-end',\r\n justifyContent: 'space-between',\r\n gap: 1,\r\n flex: 1\r\n },\r\n headerRight: (ctx) => canAddGroup(groups) && <NewGroupArea onSaveGroup={handleSaveNewGroup} />,\r\n item: (group) => (\r\n <MediaGroupAccordion\r\n key={group.id}\r\n group={group}\r\n onEditGroup={handleEditGroup}\r\n onDeleteGroup={handleDeleteGroup}\r\n onDeleteMedia={handleDeleteMedia}\r\n accordionProps={{\r\n expanded: expandedGroupId === group.id,\r\n onChange: (_, isExpanded) => setExpandedGroupId(isExpanded ? group.id : false)\r\n }}\r\n accordionDetailsProps={{\r\n sx: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n position: 'relative',\r\n gap: 1,\r\n p: 1,\r\n '& .MuiAccordionDetails-root': { p: 0 }\r\n }\r\n }}\r\n renderItem={(item) => (\r\n <CartItem\r\n item={item}\r\n key={item.ProductId}\r\n name={item.ProductName}\r\n imageUrl={item.PictureUrl}\r\n onRemoveCart={() => handleDeleteMedia(group.id, item.ProductId)}\r\n itemTitleProps={props.itemTitleProps}\r\n itemTitlePropsGetter={props.itemTitlePropsGetter}\r\n onClose={() => setAnchorEl(null)}\r\n />\r\n )}\r\n />\r\n )\r\n }}\r\n />\r\n ),\r\n [groups, isMobile, props, expandedGroupId]\r\n )\r\n\r\n return (\r\n <>\r\n <IconButtonDark onClick={(e) => setAnchorEl(e.currentTarget)}>\r\n <Badge badgeContent={groups.length || 0} color='error'>\r\n <PlaylistPlayIcon />\r\n </Badge>\r\n </IconButtonDark>\r\n {isMobile ? (\r\n <Drawer\r\n anchor='right'\r\n open={Boolean(anchorEl)}\r\n onClose={() => setAnchorEl(null)}\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={() => setAnchorEl(null)}\r\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n MenuListProps={{ component: 'div' }}\r\n >\r\n <Root>{renderContent()}</Root>\r\n </MenuStyled>\r\n )}\r\n </>\r\n )\r\n}\r\n\r\nexport const createMediaGroupWidget = (params: IMediaGroupWidgetProps) => {\r\n const _MediaGroupWidget: React.FC<Partial<IMediaGroupWidgetProps>> = (props) => <MediaGroupWidget {...params} {...props} />\r\n _MediaGroupWidget.displayName = 'MediaGroupWidget'\r\n return _MediaGroupWidget\r\n}\r\n"],"names":["CartContent","createCartContent","labels","title","buttonCheckout","itemsSuffixMany","itemsSuffixSingle","empty","subTitle","CartItem","createCartItem","MediaGroupWidget","props","localStorageKey","groups","useMediaRightStore","actions","useMediaRightActions","theme","useTheme","isMobile","useMediaQuery","breakpoints","down","_useState","useState","_useState2","_slicedToArray","anchorEl","setAnchorEl","_useState3","_useState4","expandedGroupId","setExpandedGroupId","handleSaveNewGroup","groupName","addGroup","name","id","generateGroupId","handleEditGroup","group","updateGroup","handleDeleteGroup","groupId","removeGroup","handleDeleteMedia","productId","removeItem","renderContent","useCallback","_jsx","carts","onClose","onCheckout","buttonMoveToCartProps","slots","headerLeftProps","flexDirection","alignItems","justifyContent","gap","flex","headerRight","ctx","canAddGroup","NewGroupArea","onSaveGroup","item","MediaGroupAccordion","onEditGroup","onDeleteGroup","onDeleteMedia","accordionProps","expanded","onChange","_","isExpanded","accordionDetailsProps","sx","display","position","p","renderItem","ProductName","imageUrl","PictureUrl","onRemoveCart","ProductId","itemTitleProps","itemTitlePropsGetter","_jsxs","_Fragment","children","IconButtonDark","onClick","e","currentTarget","Badge","badgeContent","length","color","PlaylistPlayIcon","Drawer","anchor","open","Boolean","disableScrollLock","PaperProps","width","maxWidth","Root","MenuStyled","anchorOrigin","vertical","horizontal","transformOrigin","MenuListProps","component","createMediaGroupWidget","params","_MediaGroupWidget","_objectSpread","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/media-right/media-widget/index.tsx"],"sourcesContent":["import { useCallback, useState } from 'react'\r\nimport { Badge, ButtonProps, Drawer, TypographyProps, useMediaQuery, useTheme } from '@mui/material'\r\nimport PlaylistPlayIcon from '@mui/icons-material/PlaylistPlay'\r\nimport { canAddGroup, generateGroupId } from '../helpers'\r\nimport { MenuStyled, Root } from './styled'\r\nimport { IconButtonDark } from '../../components/buttons'\r\nimport { MediaGroupAccordion } from './media-group-accordion'\r\nimport { useMediaRightStore, useMediaRightActions } from '../hooks'\r\nimport type { IMediaRightGroup, IMediaRightItem } from '../types'\r\nimport createCartContent from '../../factory/cart-content/create.cart-content'\r\nimport createCartItem from '../../factory/cart-item/create.cart-item'\r\nimport { NewGroupArea } from './new-group-area'\r\n\r\nexport interface IMediaGroupWidgetProps {\r\n itemTitleProps?: TypographyProps & { [key: string]: any }\r\n itemTitlePropsGetter?: (item: IMediaRightItem, onClose?: () => void) => TypographyProps & { [key: string]: any }\r\n onClose?: () => void\r\n localStorageKey?: string\r\n hrefCart?: string\r\n buttonMoveToCartProps?: ButtonProps & { [key: string]: any }\r\n onDetailClick?: ButtonProps['onClick']\r\n}\r\n\r\nconst CartContent = createCartContent<IMediaRightGroup>({\r\n labels: {\r\n title: 'Your Playlist',\r\n buttonCheckout: 'Show in playlist',\r\n itemsSuffixMany: 'playlists',\r\n itemsSuffixSingle: 'playlist'\r\n },\r\n empty: {\r\n title: 'Your playlist is empty',\r\n subTitle: 'Try adding some playlist'\r\n }\r\n})\r\n\r\nconst CartItem = createCartItem<IMediaRightItem>({})\r\n\r\nexport const MediaGroupWidget: React.FC<IMediaGroupWidgetProps> = (props) => {\r\n const { localStorageKey } = props\r\n const { groups } = useMediaRightStore({ localStorageKey })\r\n const actions = useMediaRightActions({ localStorageKey })\r\n const theme = useTheme()\r\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'))\r\n\r\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\r\n const [expandedGroupId, setExpandedGroupId] = useState<string | false>(false)\r\n\r\n const handleSaveNewGroup = (groupName: string) => {\r\n actions.addGroup({\r\n name: groupName\r\n })\r\n }\r\n\r\n const handleEditGroup = (group: IMediaRightGroup) => {\r\n actions.updateGroup(group.id, group)\r\n }\r\n\r\n const handleDeleteGroup = (groupId: string) => {\r\n actions.removeGroup(groupId)\r\n }\r\n\r\n const handleDeleteMedia = (groupId: string, productId: string) => {\r\n actions.removeItem(groupId, productId)\r\n }\r\n\r\n const renderContent = useCallback(\r\n () => (\r\n <CartContent\r\n isMobile={isMobile}\r\n carts={groups}\r\n onClose={() => setAnchorEl(null)}\r\n onCheckout={() => setAnchorEl(null)}\r\n buttonMoveToCartProps={props.buttonMoveToCartProps}\r\n slots={{\r\n headerLeftProps: {\r\n flexDirection: 'row',\r\n alignItems: 'flex-end',\r\n justifyContent: 'space-between',\r\n gap: 1,\r\n flex: 1\r\n },\r\n headerRight: (ctx) => canAddGroup(groups) && <NewGroupArea onSaveGroup={handleSaveNewGroup} />,\r\n item: (group) => (\r\n <MediaGroupAccordion\r\n key={group.id}\r\n group={group}\r\n onEditGroup={handleEditGroup}\r\n onDeleteGroup={handleDeleteGroup}\r\n onDeleteMedia={handleDeleteMedia}\r\n accordionProps={{\r\n expanded: expandedGroupId === group.id,\r\n onChange: (_, isExpanded) => setExpandedGroupId(isExpanded ? group.id : false)\r\n }}\r\n accordionDetailsProps={{\r\n sx: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n position: 'relative',\r\n gap: 1,\r\n p: 1,\r\n '& .MuiAccordionDetails-root': { p: 0 }\r\n }\r\n }}\r\n renderItem={(item) => (\r\n <CartItem\r\n item={item}\r\n key={item.ProductId}\r\n name={item.ProductName}\r\n imageUrl={item.PictureUrl}\r\n onRemoveCart={() => handleDeleteMedia(group.id, item.ProductId)}\r\n itemTitleProps={props.itemTitleProps}\r\n itemTitlePropsGetter={props.itemTitlePropsGetter}\r\n onClose={() => setAnchorEl(null)}\r\n />\r\n )}\r\n />\r\n )\r\n }}\r\n />\r\n ),\r\n [groups, isMobile, props, expandedGroupId]\r\n )\r\n\r\n return (\r\n <>\r\n <IconButtonDark onClick={(e) => setAnchorEl(e.currentTarget)}>\r\n <Badge badgeContent={groups.length || 0} color='error'>\r\n <PlaylistPlayIcon />\r\n </Badge>\r\n </IconButtonDark>\r\n {isMobile ? (\r\n <Drawer\r\n anchor='right'\r\n open={Boolean(anchorEl)}\r\n onClose={() => setAnchorEl(null)}\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={() => setAnchorEl(null)}\r\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n MenuListProps={{ component: 'div' }}\r\n >\r\n <Root>{renderContent()}</Root>\r\n </MenuStyled>\r\n )}\r\n </>\r\n )\r\n}\r\n\r\nexport const createMediaGroupWidget = (params: IMediaGroupWidgetProps) => {\r\n const _MediaGroupWidget: React.FC<Partial<IMediaGroupWidgetProps>> = (props) => <MediaGroupWidget {...params} {...props} />\r\n _MediaGroupWidget.displayName = 'MediaGroupWidget'\r\n return _MediaGroupWidget\r\n}\r\n"],"names":["CartContent","createCartContent","labels","title","buttonCheckout","itemsSuffixMany","itemsSuffixSingle","empty","subTitle","CartItem","createCartItem","MediaGroupWidget","props","localStorageKey","groups","useMediaRightStore","actions","useMediaRightActions","theme","useTheme","isMobile","useMediaQuery","breakpoints","down","_useState","useState","_useState2","_slicedToArray","anchorEl","setAnchorEl","_useState3","_useState4","expandedGroupId","setExpandedGroupId","handleSaveNewGroup","groupName","addGroup","name","handleEditGroup","group","updateGroup","id","handleDeleteGroup","groupId","removeGroup","handleDeleteMedia","productId","removeItem","renderContent","useCallback","_jsx","carts","onClose","onCheckout","buttonMoveToCartProps","slots","headerLeftProps","flexDirection","alignItems","justifyContent","gap","flex","headerRight","ctx","canAddGroup","NewGroupArea","onSaveGroup","item","MediaGroupAccordion","onEditGroup","onDeleteGroup","onDeleteMedia","accordionProps","expanded","onChange","_","isExpanded","accordionDetailsProps","sx","display","position","p","renderItem","ProductName","imageUrl","PictureUrl","onRemoveCart","ProductId","itemTitleProps","itemTitlePropsGetter","_jsxs","_Fragment","children","IconButtonDark","onClick","e","currentTarget","Badge","badgeContent","length","color","PlaylistPlayIcon","Drawer","anchor","open","Boolean","disableScrollLock","PaperProps","width","maxWidth","Root","MenuStyled","anchorOrigin","vertical","horizontal","transformOrigin","MenuListProps","component","createMediaGroupWidget","params","_MediaGroupWidget","_objectSpread","displayName"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as o,slicedToArray as r,objectSpread2 as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as i,jsx as n}from"react/jsx-runtime";import{useState as t}from"react";import{styled as a,Accordion as m,accordionSummaryClasses as l,Box as p,Typography as
|
|
1
|
+
import{defineProperty as o,slicedToArray as r,objectSpread2 as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as i,jsx as n}from"react/jsx-runtime";import{useState as t}from"react";import{styled as a,Accordion as m,accordionSummaryClasses as l,Box as p,Typography as d,AccordionSummary as c,Badge as s,IconButton as u,AccordionDetails as g}from"@mui/material";import f from"@mui/icons-material/Edit";import x from"@mui/icons-material/ExpandMore";import h from"@mui/icons-material/FolderOutlined";import{DeleteButton as b}from"./button.delete.js";import{InlineEditing as y}from"./inline-editing.js";import{mediaRightStoreOptions as v}from"../configs.js";import"../../components/buttons.js";import{NoDataPanel as P}from"../../components/no-data-panel.js";var j=function(o){var a,m=t(!1),l=r(m,2),p=l[0],d=l[1];return i(k,e(e({component:"div"},o.accordionProps),{},{sx:e({my:"0 !important"},null===(a=o.accordionProps)||void 0===a?void 0:a.sx),children:[n(c,e(e({component:"div",expandIcon:n(x,{})},o.accordionSummaryProps),{},{children:i(W,{children:[n(s,{badgeContent:o.group.items.length,color:"primary",children:n(h,{fontSize:"small"})}),i(y,{isEdit:p,setShowEdit:d,onSubmit:function(r){o.onEditGroup(e(e({},o.group),{},{name:r})),d(!1)},defaultValue:o.group.name,textField:{inputProps:{maxLength:v.MAX_NAME_GROUP},sx:{flex:1,minWidth:0,"& .MuiOutlinedInput-root":{height:"32px"}}},sxForm:{flex:1},children:[n(I,{variant:"body2",noWrap:!0,title:o.group.name,children:o.group.name}),n(u,{size:"small",onClick:function(o){o.stopPropagation(),d(!0)},color:"success",children:n(f,{fontSize:"small"})}),n(b,{onDelete:function(){return o.onDeleteGroup(o.group.id)},size:"small"})]},o.group.id+o.group.name+p)]})})),n(g,e(e({},o.accordionDetailsProps),{},{children:o.group.items.length>0?o.group.items.map(function(r){return o.renderItem?o.renderItem(r):null}):n(P,{title:"No media in this playlist",sx:{flex:1}})}))]}))},k=a(m)(o({backgroundColor:"transparent",boxShadow:"none",backgroundImage:"none","&:before":{display:"none"},"&.Mui-expanded":{margin:0}},".".concat(l.root),o({position:"sticky",top:0,zIndex:1,background:"rgba(var(--color-bg-rba),0.7)",backdropFilter:"blur(500px)",WebkitBackdropFilter:"blur(500px)",borderRadius:"12px",minWidth:0},"& .".concat(l.content),{minWidth:0,margin:0}))),W=a(p)(function(o){return{display:"flex",alignItems:"center",flex:1,gap:o.theme.spacing(1),minWidth:0}}),I=a(d)(function(o){var r=o.theme;return{fontWeight:600,flex:1,minWidth:0,color:r.palette.text.primary,marginLeft:r.spacing(1)}});export{W as ItemBox,I as ItemTitle,j as MediaGroupAccordion,k as PlaylistAccordion};
|
|
2
2
|
//# sourceMappingURL=media-group-accordion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-group-accordion.js","sources":["../../../src/media-right/media-widget/media-group-accordion.tsx"],"sourcesContent":["// imports\r\nimport { useState } from 'react'\r\nimport { Accordion, AccordionSummary, AccordionDetails, Box, Typography,
|
|
1
|
+
{"version":3,"file":"media-group-accordion.js","sources":["../../../src/media-right/media-widget/media-group-accordion.tsx"],"sourcesContent":["// imports\r\nimport { useState } from 'react'\r\nimport { Accordion, AccordionSummary, AccordionDetails, Box, Typography, IconButton, styled, accordionSummaryClasses, Badge } from '@mui/material'\r\nimport EditIcon from '@mui/icons-material/Edit'\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore'\r\nimport FolderOutlinedIcon from '@mui/icons-material/FolderOutlined'\r\nimport { DeleteButton } from './button.delete'\r\nimport { InlineEditing } from './inline-editing'\r\nimport { mediaRightStoreOptions } from '../configs'\r\nimport { NoDataPanel } from '../../components'\r\n// types\r\nimport type { ComponentType, FC, MouseEvent } from 'react'\r\nimport type { AccordionProps, AccordionDetailsProps, AccordionSummaryProps, BoxProps, TypographyProps } from '@mui/material'\r\nimport type { IMediaRightGroup, IMediaRightItem } from '../types'\r\n\r\nexport interface IMediaGroupAccordionProps {\r\n group: IMediaRightGroup\r\n accordionProps?: Partial<AccordionProps>\r\n accordionSummaryProps?: Partial<AccordionSummaryProps>\r\n accordionDetailsProps?: Partial<AccordionDetailsProps>\r\n renderItem?: (item: IMediaRightItem) => React.ReactNode\r\n onEditGroup: (group: IMediaRightGroup) => void\r\n onDeleteGroup: (groupId: string) => void\r\n onDeleteMedia: (groupId: string, mediaId: string) => void\r\n}\r\n\r\nexport const MediaGroupAccordion: FC<IMediaGroupAccordionProps> = (props) => {\r\n const [isEditing, setIsEditing] = useState(false)\r\n\r\n const handleSaveEdit = (value: string) => {\r\n props.onEditGroup({ ...props.group, name: value })\r\n setIsEditing(false)\r\n }\r\n\r\n const handleEditClick = (e: MouseEvent) => {\r\n e.stopPropagation()\r\n setIsEditing(true)\r\n }\r\n\r\n return (\r\n <PlaylistAccordion component='div' {...props.accordionProps} sx={{ my: '0 !important', ...props.accordionProps?.sx }}>\r\n <AccordionSummary component='div' expandIcon={<ExpandMoreIcon />} {...props.accordionSummaryProps}>\r\n <ItemBox>\r\n <Badge badgeContent={props.group.items.length} color='primary'>\r\n <FolderOutlinedIcon fontSize='small' />\r\n </Badge>\r\n <InlineEditing\r\n key={props.group.id + props.group.name + isEditing}\r\n isEdit={isEditing}\r\n setShowEdit={setIsEditing}\r\n onSubmit={handleSaveEdit}\r\n defaultValue={props.group.name}\r\n textField={{\r\n inputProps: { maxLength: mediaRightStoreOptions.MAX_NAME_GROUP },\r\n sx: { flex: 1, minWidth: 0, '& .MuiOutlinedInput-root': { height: '32px' } }\r\n }}\r\n sxForm={{ flex: 1 }}\r\n >\r\n <ItemTitle variant='body2' noWrap title={props.group.name}>\r\n {props.group.name}\r\n </ItemTitle>\r\n {/* <Chip sx={{ fontSize: '12px' }} label={`${props.group.items.length} items`} size='small' /> */}\r\n <IconButton size='small' onClick={handleEditClick} color='success'>\r\n <EditIcon fontSize='small' />\r\n </IconButton>\r\n <DeleteButton onDelete={() => props.onDeleteGroup(props.group.id)} size='small' />\r\n </InlineEditing>\r\n </ItemBox>\r\n </AccordionSummary>\r\n <AccordionDetails {...props.accordionDetailsProps}>\r\n {props.group.items.length > 0 ? (\r\n props.group.items.map((item) => (props.renderItem ? props.renderItem(item) : null))\r\n ) : (\r\n <NoDataPanel title={'No media in this playlist'} sx={{ flex: 1 }} />\r\n )}\r\n </AccordionDetails>\r\n </PlaylistAccordion>\r\n )\r\n}\r\n\r\nexport const PlaylistAccordion: ComponentType<AccordionProps> = styled(Accordion)({\r\n backgroundColor: 'transparent',\r\n boxShadow: 'none',\r\n backgroundImage: 'none',\r\n '&:before': { display: 'none' },\r\n '&.Mui-expanded': { margin: 0 },\r\n [`.${accordionSummaryClasses.root}`]: {\r\n position: 'sticky',\r\n top: 0,\r\n zIndex: 1,\r\n background: 'rgba(var(--color-bg-rba),0.7)',\r\n backdropFilter: 'blur(500px)',\r\n WebkitBackdropFilter: 'blur(500px)',\r\n borderRadius: '12px',\r\n minWidth: 0,\r\n [`& .${accordionSummaryClasses.content}`]: {\r\n minWidth: 0,\r\n margin: 0\r\n }\r\n }\r\n})\r\n\r\nexport const ItemBox: ComponentType<BoxProps> = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n flex: 1,\r\n gap: theme.spacing(1),\r\n minWidth: 0\r\n}))\r\n\r\nexport const ItemTitle: ComponentType<TypographyProps> = styled(Typography)(({ theme }) => ({\r\n fontWeight: 600,\r\n flex: 1,\r\n minWidth: 0,\r\n color: theme.palette.text.primary,\r\n marginLeft: theme.spacing(1)\r\n}))\r\n"],"names":["MediaGroupAccordion","props","_props$accordionProps","_useState","useState","_useState2","_slicedToArray","isEditing","setIsEditing","_jsxs","PlaylistAccordion","_objectSpread","component","accordionProps","sx","my","_jsx","AccordionSummary","expandIcon","ExpandMoreIcon","accordionSummaryProps","children","ItemBox","Badge","badgeContent","group","items","length","color","FolderOutlinedIcon","fontSize","InlineEditing","isEdit","setShowEdit","onSubmit","value","onEditGroup","name","defaultValue","textField","inputProps","maxLength","mediaRightStoreOptions","MAX_NAME_GROUP","flex","minWidth","height","sxForm","ItemTitle","variant","noWrap","title","IconButton","size","onClick","e","stopPropagation","EditIcon","DeleteButton","onDelete","onDeleteGroup","id","AccordionDetails","accordionDetailsProps","map","item","renderItem","NoDataPanel","styled","Accordion","_defineProperty","backgroundColor","boxShadow","backgroundImage","display","margin","concat","accordionSummaryClasses","root","position","top","zIndex","background","backdropFilter","WebkitBackdropFilter","borderRadius","content","Box","_ref","alignItems","gap","theme","spacing","Typography","_ref2","fontWeight","palette","text","primary","marginLeft"],"mappings":"swBA0BaA,EAAqD,SAACC,GAAS,IAAAC,EAC1EC,EAAkCC,GAAS,GAAMC,EAAAC,EAAAH,EAAA,GAA1CI,EAASF,EAAA,GAAEG,EAAYH,EAAA,GAY9B,OACEI,EAACC,EAAiBC,EAAAA,EAAA,CAACC,UAAU,OAAUX,EAAMY,gBAAc,GAAA,CAAEC,GAAEH,EAAA,CAAII,GAAI,gBAAuCb,QAAzBA,EAAKD,EAAMY,sBAANX,IAAoBA,OAApBA,EAAAA,EAAsBY,cAC9GE,EAACC,EAAgBN,EAAAA,EAAA,CAACC,UAAU,MAAMM,WAAYF,EAACG,OAAuBlB,EAAMmB,uBAAqB,GAAA,CAAAC,SAC/FZ,EAACa,EACC,CAAAD,SAAA,CAAAL,EAACO,EAAM,CAAAC,aAAcvB,EAAMwB,MAAMC,MAAMC,OAAQC,MAAM,mBACnDZ,EAACa,GAAmBC,SAAS,YAE/BrB,EAACsB,EAAa,CAEZC,OAAQzB,EACR0B,YAAazB,EACb0B,SArBa,SAACC,GACtBlC,EAAMmC,YAAWzB,EAAAA,EAAA,CAAA,EAAMV,EAAMwB,OAAK,GAAA,CAAEY,KAAMF,KAC1C3B,GAAa,EACd,EAmBS8B,aAAcrC,EAAMwB,MAAMY,KAC1BE,UAAW,CACTC,WAAY,CAAEC,UAAWC,EAAuBC,gBAChD7B,GAAI,CAAE8B,KAAM,EAAGC,SAAU,EAAG,2BAA4B,CAAEC,OAAQ,UAEpEC,OAAQ,CAAEH,KAAM,GAEhBvB,SAAA,CAAAL,EAACgC,EAAS,CAACC,QAAQ,QAAQC,QAAM,EAACC,MAAOlD,EAAMwB,MAAMY,KAAIhB,SACtDpB,EAAMwB,MAAMY,OAGfrB,EAACoC,EAAW,CAAAC,KAAK,QAAQC,QA5BX,SAACC,GACvBA,EAAEC,kBACFhD,GAAa,EACd,EAyB4DoB,MAAM,UAASP,SAChEL,EAACyC,EAAQ,CAAC3B,SAAS,YAErBd,EAAC0C,GAAaC,SAAU,WAAF,OAAQ1D,EAAM2D,cAAc3D,EAAMwB,MAAMoC,GAAG,EAAER,KAAK,YAlBnEpD,EAAMwB,MAAMoC,GAAK5D,EAAMwB,MAAMY,KAAO9B,SAsB/CS,EAAC8C,EAAgBnD,EAAAA,EAAA,CAAA,EAAKV,EAAM8D,uBAAqB,GAAA,CAC9C1C,SAAApB,EAAMwB,MAAMC,MAAMC,OAAS,EAC1B1B,EAAMwB,MAAMC,MAAMsC,IAAI,SAACC,GAAI,OAAMhE,EAAMiE,WAAajE,EAAMiE,WAAWD,GAAQ,IAAI,GAEjFjD,EAACmD,EAAW,CAAChB,MAAO,4BAA6BrC,GAAI,CAAE8B,KAAM,WAKvE,EAEalC,EAAmD0D,EAAOC,EAAPD,CAAiBE,EAAA,CAC/EC,gBAAiB,cACjBC,UAAW,OACXC,gBAAiB,OACjB,WAAY,CAAEC,QAAS,QACvB,iBAAkB,CAAEC,OAAQ,IAAG,IAAAC,OAC1BC,EAAwBC,MAAIR,EAAA,CAC/BS,SAAU,SACVC,IAAK,EACLC,OAAQ,EACRC,WAAY,gCACZC,eAAgB,cAChBC,qBAAsB,cACtBC,aAAc,OACdxC,SAAU,GAAC,MAAA+B,OACJC,EAAwBS,SAAY,CACzCzC,SAAU,EACV8B,OAAQ,MAKDrD,EAAmC8C,EAAOmB,EAAPnB,CAAY,SAAAoB,GAAQ,MAAQ,CAC1Ed,QAAS,OACTe,WAAY,SACZ7C,KAAM,EACN8C,IAJkEF,EAALG,MAIlDC,QAAQ,GACnB/C,SAAU,EACX,GAEYG,EAA4CoB,EAAOyB,EAAPzB,CAAmB,SAAA0B,GAAA,IAAGH,EAAKG,EAALH,MAAK,MAAQ,CAC1FI,WAAY,IACZnD,KAAM,EACNC,SAAU,EACVjB,MAAO+D,EAAMK,QAAQC,KAAKC,QAC1BC,WAAYR,EAAMC,QAAQ,GAC3B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as
|
|
1
|
+
import{defineProperty as o,createClass as r,objectSpread2 as e,toConsumableArray as a,classCallCheck as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{createObjectSingleton as n}from"dinocollab-core/utils";import{mediaRightStoreOptions as l}from"./configs.js";import{MediaRightEventStore as i}from"./event-store.js";import{v4 as s}from"uuid";var u=r(function r(){t(this,r),o(this,"localStorageKey","__media_right_default__"),o(this,"store",new i),o(this,"maxItemsPerGroup",l.MAX_ITEMS_PER_GROUP),o(this,"maxGroup",l.MAX_GROUP),o(this,"maxNameGroup",l.MAX_NAME_GROUP),o(this,"maxChannels",l.MAX_CHANNELS)}),c=function(){function l(){t(this,l)}return r(l,[{key:"initialize",value:function(){l.provider.store.emit("requestState",{})}},{key:"subscribe",value:function(o,r){return l.provider.store.subscribe(o,r)}},{key:"getGroups",value:function(){var o,r=this.loadFromLocalStorage();return Object.values(null!==(o=r.groups)&&void 0!==o?o:{})}},{key:"getGroupsMap",value:function(){var o;return null!==(o=this.loadFromLocalStorage().groups)&&void 0!==o?o:{}}},{key:"getGroup",value:function(o){var r;return null===(r=this.loadFromLocalStorage().groups)||void 0===r?void 0:r[o]}},{key:"addGroup",value:function(r){var a=this.loadFromLocalStorage(),t=Object.keys(a.groups).length,n=l.provider.maxGroup;if(t>=n)throw new Error("Maximum playlist limit reached (".concat(n,")"));var i=l.provider.maxNameGroup;if(r.name&&r.name.length>i)throw new Error("Playlist name exceeds maximum length (".concat(i,")"));var u=e(e({},r),{},{id:s(),createdAt:Date.now(),items:[],channels:[]}),c=e(e({},a.groups),{},o({},u.id,u));this.saveToLocalStorage(c)}},{key:"updateGroup",value:function(r,a){var t=this.loadFromLocalStorage();if(t.groups[r]){var n=l.provider.maxNameGroup;if(a.name&&a.name.length>n)throw new Error("Playlist name exceeds maximum length (".concat(n,")"));var i=e(e({},t.groups),{},o({},r,e(e({},t.groups[r]),a)));this.saveToLocalStorage(i)}}},{key:"removeGroup",value:function(o){var r=this.loadFromLocalStorage(),a=e({},r.groups);delete a[o],this.saveToLocalStorage(a)}},{key:"addChannel",value:function(r,t){var n=this.loadFromLocalStorage(),i=n.groups[r];if(!i)throw new Error("Playlist ".concat(r," not found"));var u=l.provider.maxChannels;if(i.channels.length>=u)throw new Error("Playlist ".concat(r," has reached maximum channels limit (").concat(u,")"));var c=e(e({},t),{},{Id:s()}),v=e(e({},i),{},{channels:[].concat(a(i.channels),[c])}),d=e(e({},n.groups),{},o({},r,v));this.saveToLocalStorage(d)}},{key:"updateChannel",value:function(r,t,n){var l=this.loadFromLocalStorage(),i=l.groups[r];if(!i)throw new Error("Playlist ".concat(r," not found"));var s=i.channels.findIndex(function(o){return o.Id===t});if(-1===s)throw new Error("Channel ".concat(t," not found in playlist ").concat(r));var u=a(i.channels);u[s]=e(e({},u[s]),n);var c=e(e({},l.groups),{},o({},r,e(e({},i),{},{channels:u})));this.saveToLocalStorage(c)}},{key:"removeChannel",value:function(r,t){var n=this.loadFromLocalStorage(),l=n.groups[r];if(!l)throw new Error("Playlist ".concat(r," not found"));var i=l.channels.findIndex(function(o){return o.Id===t});if(-1===i)throw new Error("Channel ".concat(t," not found in playlist ").concat(r));var s=a(l.channels);s.splice(i,1);var u=e(e({},n.groups),{},o({},r,e(e({},l),{},{channels:s})));this.saveToLocalStorage(u)}},{key:"clearChannels",value:function(r){var a=this.loadFromLocalStorage(),t=a.groups[r];if(t){var n=e(e({},a.groups),{},o({},r,e(e({},t),{},{channels:[]})));this.saveToLocalStorage(n)}}},{key:"addItem",value:function(r){var t=this.loadFromLocalStorage(),n=t.groups[r.GroupId];if(!n)throw new Error("Playlist ".concat(r.GroupId," not found"));var i,s=n.items.findIndex(function(o){return o.ProductId===r.ProductId}),u=l.provider.maxItemsPerGroup;if(-1===s&&n.items.length>=u)throw new Error("Playlist ".concat(r.GroupId," has reached maximum items limit (").concat(u,")"));s>=0?(i=a(n.items))[s]=r:i=[].concat(a(n.items),[r]);var c=e(e({},t.groups),{},o({},r.GroupId,e(e({},n),{},{items:i})));this.saveToLocalStorage(c)}},{key:"updateItem",value:function(r,t,n){var l=this.loadFromLocalStorage(),i=l.groups[r];if(!i)throw new Error("Playlist ".concat(r," not found"));var s=i.items.findIndex(function(o){return o.ProductId===t});if(-1===s)throw new Error("Item ".concat(t," not found in playlist ").concat(r));var u=a(i.items);u[s]=e(e({},u[s]),n);var c=e(e({},l.groups),{},o({},r,e(e({},i),{},{items:u})));this.saveToLocalStorage(c)}},{key:"removeItem",value:function(r,a){var t=this.loadFromLocalStorage(),n=t.groups[r];if(!n)throw new Error("Playlist ".concat(r," not found"));var l=n.items.filter(function(o){return o.ProductId!==a}),i=e(e({},t.groups),{},o({},r,e(e({},n),{},{items:l})));this.saveToLocalStorage(i)}},{key:"clearAll",value:function(){this.saveToLocalStorage({})}},{key:"loadFromLocalStorage",value:function(){var o={version:"1.0",groups:{}};try{if("undefined"!=typeof globalThis&&globalThis.localStorage){var r=localStorage.getItem(l.provider.localStorageKey),e=r?JSON.parse(r):null;null!=e&&e.groups&&Object.keys(e.groups).length>0&&(o=e)}}catch(o){console.error("Error loading playlist from localStorage:",o)}return o}},{key:"saveToLocalStorage",value:function(o){if("undefined"!=typeof globalThis&&globalThis.localStorage)if(l.provider.localStorageKey){var r={version:"1.0",groups:o};localStorage.setItem(l.provider.localStorageKey,JSON.stringify(r)),l.provider.store.emit("stateChange",{groups:o})}else console.warn("No localStorageKey provided, skipping storage")}}],[{key:"provider",get:function(){var o;return null!==(o=n(l.key_provider).get())&&void 0!==o?o:new u}},{key:"setProvider",value:function(o){n(l.key_provider).set(null!=o?o:new u)}},{key:"setOptions",value:function(o){var r=l.provider;void 0!==o.localStorageKey&&(r.localStorageKey=o.localStorageKey),void 0!==o.maxItemsPerGroup&&(r.maxItemsPerGroup=o.maxItemsPerGroup),void 0!==o.maxGroup&&(r.maxGroup=o.maxGroup),void 0!==o.maxNameGroup&&(r.maxNameGroup=o.maxNameGroup),void 0!==o.maxChannels&&(r.maxChannels=o.maxChannels),l.setProvider(r)}}])}();o(c,"key_provider","__media_right_key_provider__");var v=new c;export{c as MediaRightService,v as mediaRightService};
|
|
2
2
|
//# sourceMappingURL=service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sources":["../../src/media-right/service.ts"],"sourcesContent":["import { createObjectSingleton } from 'dinocollab-core/utils'\r\nimport { mediaRightStoreOptions } from './configs'\r\nimport { MediaRightEventStore } from './event-store'\r\nimport { IMediaRightGroup, IMediaRightItem, IMediaRightChannel, IMediaRightOptions } from './types'\r\n\r\nexport interface IMediaRightMetadata<O = any> {\r\n version: string\r\n groups: Record<string, IMediaRightGroup<O>>\r\n}\r\n\r\nexport interface IMediaRightProvider extends IMediaRightOptions {\r\n localStorageKey: string\r\n store: MediaRightEventStore\r\n}\r\n\r\nclass MediaRightProviderDefault implements IMediaRightProvider {\r\n localStorageKey = '__media_right_default__'\r\n store = new MediaRightEventStore()\r\n maxItemsPerGroup = mediaRightStoreOptions.MAX_ITEMS_PER_GROUP\r\n maxGroup = mediaRightStoreOptions.MAX_GROUP\r\n maxNameGroup = mediaRightStoreOptions.MAX_NAME_GROUP\r\n maxChannels = mediaRightStoreOptions.MAX_CHANNELS\r\n}\r\n\r\nexport class MediaRightService<O = any> {\r\n static key_provider = '__media_right_key_provider__'\r\n\r\n static get provider(): IMediaRightProvider {\r\n const ObjectProvider = createObjectSingleton<IMediaRightProvider>(MediaRightService.key_provider)\r\n return ObjectProvider.get() ?? new MediaRightProviderDefault()\r\n }\r\n\r\n static setProvider(provider: IMediaRightProvider) {\r\n const ObjectProvider = createObjectSingleton<IMediaRightProvider>(MediaRightService.key_provider)\r\n ObjectProvider.set(provider ?? new MediaRightProviderDefault())\r\n }\r\n\r\n static setOptions(options: IMediaRightOptions) {\r\n const provider = MediaRightService.provider\r\n if (options.localStorageKey !== undefined) provider.localStorageKey = options.localStorageKey\r\n if (options.maxItemsPerGroup !== undefined) provider.maxItemsPerGroup = options.maxItemsPerGroup\r\n if (options.maxGroup !== undefined) provider.maxGroup = options.maxGroup\r\n if (options.maxNameGroup !== undefined) provider.maxNameGroup = options.maxNameGroup\r\n if (options.maxChannels !== undefined) provider.maxChannels = options.maxChannels\r\n MediaRightService.setProvider(provider)\r\n }\r\n\r\n initialize() {\r\n MediaRightService.provider.store.emit('requestState', {})\r\n }\r\n\r\n subscribe(event: string, callback: (...args: any[]) => void) {\r\n return MediaRightService.provider.store.subscribe(event as any, callback as any)\r\n }\r\n\r\n // Group operations\r\n getGroups(): IMediaRightGroup<O>[] {\r\n const storedData = this.loadFromLocalStorage()\r\n return Object.values(storedData.groups ?? {})\r\n }\r\n\r\n getGroupsMap(): Record<string, IMediaRightGroup<O>> {\r\n const storedData = this.loadFromLocalStorage()\r\n return storedData.groups ?? {}\r\n }\r\n\r\n getGroup(groupId: string): IMediaRightGroup<O> | undefined {\r\n const storedData = this.loadFromLocalStorage()\r\n return storedData.groups?.[groupId]\r\n }\r\n\r\n addGroup(group: Omit<IMediaRightGroup<O>, 'createdAt' | 'items' | 'channels'>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n\r\n // Validate max groups limit\r\n const currentGroupCount = Object.keys(storedData.groups).length\r\n const maxGroup = MediaRightService.provider.maxGroup!\r\n if (currentGroupCount >= maxGroup) {\r\n throw new Error(`Maximum playlist limit reached (${maxGroup})`)\r\n }\r\n\r\n // Validate group name length\r\n const maxNameGroup = MediaRightService.provider.maxNameGroup!\r\n if (group.name && group.name.length > maxNameGroup) {\r\n throw new Error(`Playlist name exceeds maximum length (${maxNameGroup})`)\r\n }\r\n\r\n const newGroup: IMediaRightGroup<O> = { ...group, createdAt: Date.now(), items: [], channels: [] }\r\n const updatedGroups = { ...storedData.groups, [group.id]: newGroup }\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n updateGroup(groupId: string, updates: Partial<Pick<IMediaRightGroup<O>, 'name'>>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n if (storedData.groups[groupId]) {\r\n // Validate group name length if updating name\r\n const maxNameGroup = MediaRightService.provider.maxNameGroup!\r\n if (updates.name && updates.name.length > maxNameGroup) {\r\n throw new Error(`Playlist name exceeds maximum length (${maxNameGroup})`)\r\n }\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: { ...storedData.groups[groupId], ...updates } }\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n }\r\n\r\n removeGroup(groupId: string): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const updatedGroups = { ...storedData.groups }\r\n delete updatedGroups[groupId]\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n // Channel operations\r\n addChannel(groupId: string, channel: IMediaRightChannel): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n // Validate group existence\r\n if (!group) throw new Error(`Playlist ${groupId} not found`)\r\n\r\n // Validate max channels limit\r\n const maxChannels = MediaRightService.provider.maxChannels!\r\n if (group.channels.length >= maxChannels) {\r\n throw new Error(`Playlist ${groupId} has reached maximum channels limit (${maxChannels})`)\r\n }\r\n\r\n const updatedGroup = { ...group, channels: [...group.channels, channel] }\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: updatedGroup }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n updateChannel(groupId: string, channelIndex: number, updates: Partial<IMediaRightChannel>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group || !group.channels[channelIndex]) return\r\n\r\n const updatedChannels = [...group.channels]\r\n updatedChannels[channelIndex] = { ...updatedChannels[channelIndex], ...updates }\r\n\r\n const updatedGroups = {\r\n ...storedData.groups,\r\n [groupId]: { ...group, channels: updatedChannels }\r\n }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n removeChannel(groupId: string, channelIndex: number): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) return\r\n\r\n const updatedChannels = [...group.channels]\r\n updatedChannels.splice(channelIndex, 1)\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: { ...group, channels: updatedChannels } }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n clearChannels(groupId: string): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) return\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: { ...group, channels: [] } }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n // Item operations\r\n addItem(item: IMediaRightItem<O>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[item.GroupId]\r\n\r\n if (!group) {\r\n throw new Error(`Playlist ${item.GroupId} not found`)\r\n }\r\n\r\n // Validate max items limit (only for new items, not updates)\r\n const existingItemIndex = group.items.findIndex((i) => i.ProductId === item.ProductId)\r\n const maxItemsPerGroup = MediaRightService.provider.maxItemsPerGroup!\r\n if (existingItemIndex === -1 && group.items.length >= maxItemsPerGroup) {\r\n throw new Error(`Playlist ${item.GroupId} has reached maximum items limit (${maxItemsPerGroup})`)\r\n }\r\n\r\n let updatedItems: IMediaRightItem<O>[]\r\n\r\n if (existingItemIndex >= 0) {\r\n updatedItems = [...group.items]\r\n updatedItems[existingItemIndex] = item\r\n } else {\r\n updatedItems = [...group.items, item]\r\n }\r\n\r\n const updatedGroups = { ...storedData.groups, [item.GroupId]: { ...group, items: updatedItems } }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n updateItem(groupId: string, productId: string, updates: Partial<IMediaRightItem<O>>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) return\r\n\r\n const itemIndex = group.items.findIndex((i) => i.ProductId === productId)\r\n if (itemIndex >= 0) {\r\n const updatedItems = [...group.items]\r\n updatedItems[itemIndex] = { ...updatedItems[itemIndex], ...updates }\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: { ...group, items: updatedItems } }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n }\r\n\r\n removeItem(groupId: string, productId: string): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) return\r\n\r\n const updatedItems = group.items.filter((i) => i.ProductId !== productId)\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: { ...group, items: updatedItems } }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n clearAll(): void {\r\n this.saveToLocalStorage({})\r\n }\r\n\r\n private loadFromLocalStorage(): IMediaRightMetadata<O> {\r\n const defaultValue: IMediaRightMetadata<O> = { version: '1.0', groups: {} }\r\n let data = defaultValue\r\n\r\n try {\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n const temp = localStorage.getItem(MediaRightService.provider.localStorageKey)\r\n const tempParsed = temp ? JSON.parse(temp) : null\r\n if (tempParsed?.groups && Object.keys(tempParsed.groups).length > 0) {\r\n data = tempParsed\r\n }\r\n }\r\n } catch (error) {\r\n console.error('Error loading playlist from localStorage:', error)\r\n }\r\n\r\n return data\r\n }\r\n\r\n private saveToLocalStorage(groups: Record<string, IMediaRightGroup<O>>) {\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n if (MediaRightService.provider.localStorageKey) {\r\n const value: IMediaRightMetadata<O> = { version: '1.0', groups }\r\n localStorage.setItem(MediaRightService.provider.localStorageKey, JSON.stringify(value))\r\n MediaRightService.provider.store.emit('stateChange', { groups })\r\n } else {\r\n console.warn('No localStorageKey provided, skipping storage')\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport const mediaRightService = new MediaRightService()\r\n"],"names":["MediaRightProviderDefault","_createClass","_classCallCheck","_defineProperty","this","MediaRightEventStore","mediaRightStoreOptions","MAX_ITEMS_PER_GROUP","MAX_GROUP","MAX_NAME_GROUP","MAX_CHANNELS","MediaRightService","key","value","provider","store","emit","event","callback","subscribe","_storedData$groups","storedData","loadFromLocalStorage","Object","values","groups","_storedData$groups2","groupId","_storedData$groups3","group","currentGroupCount","keys","length","maxGroup","Error","concat","maxNameGroup","name","newGroup","_objectSpread","createdAt","Date","now","items","channels","updatedGroups","id","saveToLocalStorage","updates","channel","maxChannels","updatedGroup","_toConsumableArray","channelIndex","updatedChannels","splice","item","GroupId","updatedItems","existingItemIndex","findIndex","i","ProductId","maxItemsPerGroup","productId","itemIndex","filter","data","version","globalThis","localStorage","temp","getItem","localStorageKey","tempParsed","JSON","parse","error","console","setItem","stringify","warn","get","_ObjectProvider$get","createObjectSingleton","key_provider","set","options","undefined","setProvider","mediaRightService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.js","sources":["../../src/media-right/service.ts"],"sourcesContent":["import { createObjectSingleton } from 'dinocollab-core/utils'\r\nimport { mediaRightStoreOptions } from './configs'\r\nimport { MediaRightEventStore } from './event-store'\r\nimport { IMediaRightGroup, IMediaRightItem, IMediaRightChannel, IMediaRightOptions } from './types'\r\nimport { v4 as uuidv4 } from 'uuid'\r\n\r\nexport interface IMediaRightMetadata<O = any> {\r\n version: string\r\n groups: Record<string, IMediaRightGroup<O>>\r\n}\r\n\r\nexport interface IMediaRightProvider extends IMediaRightOptions {\r\n localStorageKey: string\r\n store: MediaRightEventStore\r\n}\r\n\r\nclass MediaRightProviderDefault implements IMediaRightProvider {\r\n localStorageKey = '__media_right_default__'\r\n store = new MediaRightEventStore()\r\n maxItemsPerGroup = mediaRightStoreOptions.MAX_ITEMS_PER_GROUP\r\n maxGroup = mediaRightStoreOptions.MAX_GROUP\r\n maxNameGroup = mediaRightStoreOptions.MAX_NAME_GROUP\r\n maxChannels = mediaRightStoreOptions.MAX_CHANNELS\r\n}\r\n\r\nexport class MediaRightService<O = any> {\r\n static key_provider = '__media_right_key_provider__'\r\n\r\n static get provider(): IMediaRightProvider {\r\n const ObjectProvider = createObjectSingleton<IMediaRightProvider>(MediaRightService.key_provider)\r\n return ObjectProvider.get() ?? new MediaRightProviderDefault()\r\n }\r\n\r\n static setProvider(provider: IMediaRightProvider) {\r\n const ObjectProvider = createObjectSingleton<IMediaRightProvider>(MediaRightService.key_provider)\r\n ObjectProvider.set(provider ?? new MediaRightProviderDefault())\r\n }\r\n\r\n static setOptions(options: IMediaRightOptions) {\r\n const provider = MediaRightService.provider\r\n if (options.localStorageKey !== undefined) provider.localStorageKey = options.localStorageKey\r\n if (options.maxItemsPerGroup !== undefined) provider.maxItemsPerGroup = options.maxItemsPerGroup\r\n if (options.maxGroup !== undefined) provider.maxGroup = options.maxGroup\r\n if (options.maxNameGroup !== undefined) provider.maxNameGroup = options.maxNameGroup\r\n if (options.maxChannels !== undefined) provider.maxChannels = options.maxChannels\r\n MediaRightService.setProvider(provider)\r\n }\r\n\r\n initialize() {\r\n MediaRightService.provider.store.emit('requestState', {})\r\n }\r\n\r\n subscribe(event: string, callback: (...args: any[]) => void) {\r\n return MediaRightService.provider.store.subscribe(event as any, callback as any)\r\n }\r\n\r\n // Group operations\r\n getGroups(): IMediaRightGroup<O>[] {\r\n const storedData = this.loadFromLocalStorage()\r\n return Object.values(storedData.groups ?? {})\r\n }\r\n\r\n getGroupsMap(): Record<string, IMediaRightGroup<O>> {\r\n const storedData = this.loadFromLocalStorage()\r\n return storedData.groups ?? {}\r\n }\r\n\r\n getGroup(groupId: string): IMediaRightGroup<O> | undefined {\r\n const storedData = this.loadFromLocalStorage()\r\n return storedData.groups?.[groupId]\r\n }\r\n\r\n addGroup(group: Omit<IMediaRightGroup<O>, 'id' | 'createdAt' | 'items' | 'channels'>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n\r\n // Validate max groups limit\r\n const currentGroupCount = Object.keys(storedData.groups).length\r\n const maxGroup = MediaRightService.provider.maxGroup!\r\n if (currentGroupCount >= maxGroup) {\r\n throw new Error(`Maximum playlist limit reached (${maxGroup})`)\r\n }\r\n\r\n // Validate group name length\r\n const maxNameGroup = MediaRightService.provider.maxNameGroup!\r\n if (group.name && group.name.length > maxNameGroup) {\r\n throw new Error(`Playlist name exceeds maximum length (${maxNameGroup})`)\r\n }\r\n\r\n const newGroup: IMediaRightGroup<O> = { ...group, id: uuidv4(), createdAt: Date.now(), items: [], channels: [] }\r\n const updatedGroups = { ...storedData.groups, [newGroup.id]: newGroup }\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n updateGroup(groupId: string, updates: Partial<Pick<IMediaRightGroup<O>, 'name'>>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n if (storedData.groups[groupId]) {\r\n // Validate group name length if updating name\r\n const maxNameGroup = MediaRightService.provider.maxNameGroup!\r\n if (updates.name && updates.name.length > maxNameGroup) {\r\n throw new Error(`Playlist name exceeds maximum length (${maxNameGroup})`)\r\n }\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: { ...storedData.groups[groupId], ...updates } }\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n }\r\n\r\n removeGroup(groupId: string): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const updatedGroups = { ...storedData.groups }\r\n delete updatedGroups[groupId]\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n // Channel operations\r\n addChannel(groupId: string, channel: Omit<IMediaRightChannel, 'Id'>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n // Validate group existence\r\n if (!group) throw new Error(`Playlist ${groupId} not found`)\r\n\r\n // Validate max channels limit\r\n const maxChannels = MediaRightService.provider.maxChannels!\r\n if (group.channels.length >= maxChannels) {\r\n throw new Error(`Playlist ${groupId} has reached maximum channels limit (${maxChannels})`)\r\n }\r\n\r\n const newChannel: IMediaRightChannel = { ...channel, Id: uuidv4() }\r\n const updatedGroup = { ...group, channels: [...group.channels, newChannel] }\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: updatedGroup }\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n updateChannel(groupId: string, channelId: string, updates: Partial<IMediaRightChannel>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) throw new Error(`Playlist ${groupId} not found`)\r\n\r\n const channelIndex = group.channels.findIndex((c) => c.Id === channelId)\r\n if (channelIndex === -1) throw new Error(`Channel ${channelId} not found in playlist ${groupId}`)\r\n\r\n const updatedChannels = [...group.channels]\r\n updatedChannels[channelIndex] = { ...updatedChannels[channelIndex], ...updates }\r\n\r\n const updatedGroups = {\r\n ...storedData.groups,\r\n [groupId]: { ...group, channels: updatedChannels }\r\n }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n removeChannel(groupId: string, channelId: string): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) throw new Error(`Playlist ${groupId} not found`)\r\n\r\n const channelIndex = group.channels.findIndex((c) => c.Id === channelId)\r\n if (channelIndex === -1) throw new Error(`Channel ${channelId} not found in playlist ${groupId}`)\r\n\r\n const updatedChannels = [...group.channels]\r\n updatedChannels.splice(channelIndex, 1)\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: { ...group, channels: updatedChannels } }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n clearChannels(groupId: string): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) return\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: { ...group, channels: [] } }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n // Item operations\r\n addItem(item: IMediaRightItem<O>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[item.GroupId]\r\n\r\n if (!group) {\r\n throw new Error(`Playlist ${item.GroupId} not found`)\r\n }\r\n\r\n // Validate max items limit (only for new items, not updates)\r\n const existingItemIndex = group.items.findIndex((i) => i.ProductId === item.ProductId)\r\n const maxItemsPerGroup = MediaRightService.provider.maxItemsPerGroup!\r\n if (existingItemIndex === -1 && group.items.length >= maxItemsPerGroup) {\r\n throw new Error(`Playlist ${item.GroupId} has reached maximum items limit (${maxItemsPerGroup})`)\r\n }\r\n\r\n let updatedItems: IMediaRightItem<O>[]\r\n\r\n if (existingItemIndex >= 0) {\r\n updatedItems = [...group.items]\r\n updatedItems[existingItemIndex] = item\r\n } else {\r\n updatedItems = [...group.items, item]\r\n }\r\n\r\n const updatedGroups = { ...storedData.groups, [item.GroupId]: { ...group, items: updatedItems } }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n updateItem(groupId: string, productId: string, updates: Partial<IMediaRightItem<O>>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) throw new Error(`Playlist ${groupId} not found`)\r\n\r\n const itemIndex = group.items.findIndex((i) => i.ProductId === productId)\r\n if (itemIndex === -1) throw new Error(`Item ${productId} not found in playlist ${groupId}`)\r\n\r\n const updatedItems = [...group.items]\r\n updatedItems[itemIndex] = { ...updatedItems[itemIndex], ...updates }\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: { ...group, items: updatedItems } }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n removeItem(groupId: string, productId: string): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) throw new Error(`Playlist ${groupId} not found`)\r\n\r\n const updatedItems = group.items.filter((i) => i.ProductId !== productId)\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: { ...group, items: updatedItems } }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n clearAll(): void {\r\n this.saveToLocalStorage({})\r\n }\r\n\r\n private loadFromLocalStorage(): IMediaRightMetadata<O> {\r\n const defaultValue: IMediaRightMetadata<O> = { version: '1.0', groups: {} }\r\n let data = defaultValue\r\n\r\n try {\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n const temp = localStorage.getItem(MediaRightService.provider.localStorageKey)\r\n const tempParsed = temp ? JSON.parse(temp) : null\r\n if (tempParsed?.groups && Object.keys(tempParsed.groups).length > 0) {\r\n data = tempParsed\r\n }\r\n }\r\n } catch (error) {\r\n console.error('Error loading playlist from localStorage:', error)\r\n }\r\n\r\n return data\r\n }\r\n\r\n private saveToLocalStorage(groups: Record<string, IMediaRightGroup<O>>) {\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n if (MediaRightService.provider.localStorageKey) {\r\n const value: IMediaRightMetadata<O> = { version: '1.0', groups }\r\n localStorage.setItem(MediaRightService.provider.localStorageKey, JSON.stringify(value))\r\n MediaRightService.provider.store.emit('stateChange', { groups })\r\n } else {\r\n console.warn('No localStorageKey provided, skipping storage')\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport const mediaRightService = new MediaRightService()\r\n"],"names":["MediaRightProviderDefault","_createClass","_classCallCheck","_defineProperty","this","MediaRightEventStore","mediaRightStoreOptions","MAX_ITEMS_PER_GROUP","MAX_GROUP","MAX_NAME_GROUP","MAX_CHANNELS","MediaRightService","key","value","provider","store","emit","event","callback","subscribe","_storedData$groups","storedData","loadFromLocalStorage","Object","values","groups","_storedData$groups2","groupId","_storedData$groups3","group","currentGroupCount","keys","length","maxGroup","Error","concat","maxNameGroup","name","newGroup","_objectSpread","id","uuidv4","createdAt","Date","now","items","channels","updatedGroups","saveToLocalStorage","updates","channel","maxChannels","newChannel","Id","updatedGroup","_toConsumableArray","channelId","channelIndex","findIndex","c","updatedChannels","splice","item","GroupId","updatedItems","existingItemIndex","i","ProductId","maxItemsPerGroup","productId","itemIndex","filter","data","version","globalThis","localStorage","temp","getItem","localStorageKey","tempParsed","JSON","parse","error","console","setItem","stringify","warn","get","_ObjectProvider$get","createObjectSingleton","key_provider","set","options","undefined","setProvider","mediaRightService"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../src/media-right/types.ts"],"sourcesContent":["/**\r\n * Channel information for media rights groups\r\n */\r\nexport enum EChannelType {\r\n Youtube = 'Youtube',\r\n Other = 'Other'\r\n}\r\n\r\nexport interface
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../src/media-right/types.ts"],"sourcesContent":["/**\r\n * Channel information for media rights groups\r\n */\r\nexport enum EChannelType {\r\n Youtube = 'Youtube',\r\n Other = 'Other'\r\n}\r\n\r\nexport interface IMediaRightChannelCreate {\r\n /** URL of the channel */\r\n ChannelUrl: string\r\n /** Name of the channel */\r\n Name: string\r\n /** Type of the channel */\r\n ChannelType: EChannelType\r\n /** Additional custom information */\r\n CustomInfo: string\r\n}\r\n\r\nexport interface IMediaRightChannel extends IMediaRightChannelCreate {\r\n Id: string\r\n}\r\n\r\n/**\r\n * Cart group structure\r\n */\r\nexport interface IMediaRightGroup<O = any> {\r\n /** Unique identifier for the group */\r\n id: string\r\n /** Group name */\r\n name: string\r\n /** Creation timestamp */\r\n createdAt: number\r\n /** Items in this group */\r\n items: IMediaRightItem<O>[]\r\n /** Channels associated with this group */\r\n channels: IMediaRightChannel[]\r\n}\r\n\r\n/**\r\n * Shopping cart item structure\r\n */\r\nexport interface IMediaRightItem<O = any> {\r\n /** Unique identifier for the cart item */\r\n ProductId: string\r\n /** Group ID this item belongs to */\r\n GroupId: string\r\n /** The social URL associated with the product */\r\n // SocialUrl?: string\r\n /** The type of the product, e.g., Media or Audio */\r\n Type?: string\r\n /** The name of the product */\r\n ProductName?: string\r\n /** The picture URL associated with the product */\r\n PictureUrl: string\r\n /** This will be the ID used to stream video or retrieve audio. */\r\n MediaId: string\r\n /** Additional options for the media item */\r\n Options?: O\r\n}\r\n\r\n/**\r\n * Cart summary data\r\n */\r\nexport interface ICartSummary {\r\n totalGroups: number\r\n totalItems: number\r\n totalPrice: number\r\n}\r\n\r\nexport interface IMediaRightOptions {\r\n localStorageKey?: string\r\n maxItemsPerGroup?: number\r\n maxGroup?: number\r\n maxNameGroup?: number\r\n maxChannels?: number\r\n}\r\n"],"names":["EChannelType"],"mappings":"IAGYA,GAAZ,SAAYA,GACVA,EAAA,QAAA,UACAA,EAAA,MAAA,OACD,CAHD,CAAYA,IAAAA,EAGX,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IMediaRightChannel, IMediaRightGroup, IMediaRightItem } from './types';
|
|
1
|
+
import { IMediaRightChannel, IMediaRightChannelCreate, IMediaRightGroup, IMediaRightItem } from './types';
|
|
2
2
|
export interface IMediaRightStoreOptions {
|
|
3
3
|
localStorageKey?: string;
|
|
4
4
|
}
|
|
@@ -7,15 +7,15 @@ export declare function useMediaRightStore<O = any>(params?: IMediaRightStoreOpt
|
|
|
7
7
|
groupsMap: Record<string, IMediaRightGroup<O>>;
|
|
8
8
|
};
|
|
9
9
|
export declare function useMediaRightActions<O = any>(params?: IMediaRightStoreOptions): {
|
|
10
|
-
addGroup: (group: Omit<IMediaRightGroup<O>, 'createdAt' | 'items' | 'channels'>) => void;
|
|
10
|
+
addGroup: (group: Omit<IMediaRightGroup<O>, 'id' | 'createdAt' | 'items' | 'channels'>) => void;
|
|
11
11
|
updateGroup: (groupId: string, updates: Partial<Pick<IMediaRightGroup<O>, 'name'>>) => void;
|
|
12
12
|
removeGroup: (groupId: string) => void;
|
|
13
13
|
addItem: (item: IMediaRightItem<O>) => void;
|
|
14
14
|
updateItem: (groupId: string, productId: string, updates: Partial<IMediaRightItem<O>>) => void;
|
|
15
15
|
removeItem: (groupId: string, productId: string) => void;
|
|
16
|
-
addChannel: (groupId: string, channel:
|
|
17
|
-
updateChannel: (groupId: string,
|
|
18
|
-
removeChannel: (groupId: string,
|
|
16
|
+
addChannel: (groupId: string, channel: IMediaRightChannelCreate) => void;
|
|
17
|
+
updateChannel: (groupId: string, channelId: string, updates: Partial<IMediaRightChannel>) => void;
|
|
18
|
+
removeChannel: (groupId: string, channelId: string) => void;
|
|
19
19
|
clearChannels: (groupId: string) => void;
|
|
20
20
|
clearCart: () => void;
|
|
21
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/media-right/hooks.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/media-right/hooks.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzG,MAAM,WAAW,uBAAuB;IACtC,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,wBAAgB,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,EAAE,uBAAuB;;;EA6B3E;AAED,wBAAgB,oBAAoB,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,EAAE,uBAAuB;sBASnD,KAAK,iBAAiB,CAAC,CAAC,EAAE,IAAI,GAAG,WAAW,GAAG,OAAO,GAAG,UAAU,CAAC;2BAI/D,MAAM,WAAW,QAAQ,KAAK,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;2BAI3D,MAAM;oBAIb,gBAAgB,CAAC,CAAC;0BAIZ,MAAM,aAAa,MAAM,WAAW,QAAQ,gBAAgB,CAAC,CAAC,CAAC;0BAI/D,MAAM,aAAa,MAAM;0BAQzB,MAAM,WAAW,wBAAwB;6BAItC,MAAM,aAAa,MAAM,WAAW,QAAQ,kBAAkB,CAAC;6BAI/D,MAAM,aAAa,MAAM;6BAIzB,MAAM;;EAiBvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/media-right/media-widget/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAS,WAAW,EAAU,eAAe,EAA2B,MAAM,eAAe,CAAA;AAOpG,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,UAAU,CAAA;AAKjE,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,eAAe,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;IACzD,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,MAAM,IAAI,KAAK,eAAe,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;IAChH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qBAAqB,CAAC,EAAE,WAAW,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;IAC5D,aAAa,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;CACvC;AAiBD,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/media-right/media-widget/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAS,WAAW,EAAU,eAAe,EAA2B,MAAM,eAAe,CAAA;AAOpG,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,UAAU,CAAA;AAKjE,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,eAAe,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;IACzD,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,MAAM,IAAI,KAAK,eAAe,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;IAChH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qBAAqB,CAAC,EAAE,WAAW,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;IAC5D,aAAa,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;CACvC;AAiBD,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAsH7D,CAAA;AAED,eAAO,MAAM,sBAAsB,WAAY,sBAAsB,wDAIpE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-group-accordion.d.ts","sourceRoot":"","sources":["../../../../src/media-right/media-widget/media-group-accordion.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"media-group-accordion.d.ts","sourceRoot":"","sources":["../../../../src/media-right/media-widget/media-group-accordion.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,EAAE,EAAc,MAAM,OAAO,CAAA;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC5H,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAEjE,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,gBAAgB,CAAA;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IACxC,qBAAqB,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAA;IACtD,qBAAqB,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAA;IACtD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,KAAK,CAAC,SAAS,CAAA;IACvD,WAAW,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAA;IAC9C,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAC1D;AAED,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,yBAAyB,CAoD7D,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,cAAc,CAoB1D,CAAA;AAEF,eAAO,MAAM,OAAO,EAAE,aAAa,CAAC,QAAQ,CAMzC,CAAA;AAEH,eAAO,MAAM,SAAS,EAAE,aAAa,CAAC,eAAe,CAMlD,CAAA"}
|
|
@@ -18,12 +18,12 @@ export declare class MediaRightService<O = any> {
|
|
|
18
18
|
getGroups(): IMediaRightGroup<O>[];
|
|
19
19
|
getGroupsMap(): Record<string, IMediaRightGroup<O>>;
|
|
20
20
|
getGroup(groupId: string): IMediaRightGroup<O> | undefined;
|
|
21
|
-
addGroup(group: Omit<IMediaRightGroup<O>, 'createdAt' | 'items' | 'channels'>): void;
|
|
21
|
+
addGroup(group: Omit<IMediaRightGroup<O>, 'id' | 'createdAt' | 'items' | 'channels'>): void;
|
|
22
22
|
updateGroup(groupId: string, updates: Partial<Pick<IMediaRightGroup<O>, 'name'>>): void;
|
|
23
23
|
removeGroup(groupId: string): void;
|
|
24
|
-
addChannel(groupId: string, channel: IMediaRightChannel): void;
|
|
25
|
-
updateChannel(groupId: string,
|
|
26
|
-
removeChannel(groupId: string,
|
|
24
|
+
addChannel(groupId: string, channel: Omit<IMediaRightChannel, 'Id'>): void;
|
|
25
|
+
updateChannel(groupId: string, channelId: string, updates: Partial<IMediaRightChannel>): void;
|
|
26
|
+
removeChannel(groupId: string, channelId: string): void;
|
|
27
27
|
clearChannels(groupId: string): void;
|
|
28
28
|
addItem(item: IMediaRightItem<O>): void;
|
|
29
29
|
updateItem(groupId: string, productId: string, updates: Partial<IMediaRightItem<O>>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/media-right/service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/media-right/service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAGnG,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,GAAG;IAC1C,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;CAC5C;AAED,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,eAAe,EAAE,MAAM,CAAA;IACvB,KAAK,EAAE,oBAAoB,CAAA;CAC5B;AAWD,qBAAa,iBAAiB,CAAC,CAAC,GAAG,GAAG;IACpC,MAAM,CAAC,YAAY,SAAiC;IAEpD,MAAM,KAAK,QAAQ,IAAI,mBAAmB,CAGzC;IAED,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,mBAAmB;IAKhD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,kBAAkB;IAU7C,UAAU;IAIV,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI;IAK3D,SAAS,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE;IAKlC,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAKnD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,SAAS;IAK1D,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,WAAW,GAAG,OAAO,GAAG,UAAU,CAAC,GAAG,IAAI;IAqB3F,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI;IAcvF,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQlC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,GAAG,IAAI;IAoB1E,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAoB7F,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAiBvD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAYpC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI;IA6BvC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAiB1F,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAapD,QAAQ,IAAI,IAAI;IAIhB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,kBAAkB;CAW3B;AAED,eAAO,MAAM,iBAAiB,wBAA0B,CAAA"}
|
|
@@ -5,7 +5,7 @@ export declare enum EChannelType {
|
|
|
5
5
|
Youtube = "Youtube",
|
|
6
6
|
Other = "Other"
|
|
7
7
|
}
|
|
8
|
-
export interface
|
|
8
|
+
export interface IMediaRightChannelCreate {
|
|
9
9
|
/** URL of the channel */
|
|
10
10
|
ChannelUrl: string;
|
|
11
11
|
/** Name of the channel */
|
|
@@ -15,6 +15,9 @@ export interface IMediaRightChannel {
|
|
|
15
15
|
/** Additional custom information */
|
|
16
16
|
CustomInfo: string;
|
|
17
17
|
}
|
|
18
|
+
export interface IMediaRightChannel extends IMediaRightChannelCreate {
|
|
19
|
+
Id: string;
|
|
20
|
+
}
|
|
18
21
|
/**
|
|
19
22
|
* Cart group structure
|
|
20
23
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/media-right/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/media-right/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,yBAAyB;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,0BAA0B;IAC1B,WAAW,EAAE,YAAY,CAAA;IACzB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,kBAAmB,SAAQ,wBAAwB;IAClE,EAAE,EAAE,MAAM,CAAA;CACX;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,GAAG;IACvC,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAA;IACV,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,0BAA0B;IAC1B,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAA;IAC3B,0CAA0C;IAC1C,QAAQ,EAAE,kBAAkB,EAAE,CAAA;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,GAAG;IACtC,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAA;IACjB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAA;IACf,iDAAiD;IAEjD,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAA;IAClB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAA;IACf,4CAA4C;IAC5C,OAAO,CAAC,EAAE,CAAC,CAAA;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dinocollab-shared",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.45",
|
|
4
4
|
"description": "DinoCollab shared utilities and components",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -100,7 +100,8 @@
|
|
|
100
100
|
"react-dom": "18.3.1",
|
|
101
101
|
"react-quill": "2.0.0",
|
|
102
102
|
"react-router-dom": "6.30.0",
|
|
103
|
-
"reflect-metadata": "0.2.2"
|
|
103
|
+
"reflect-metadata": "0.2.2",
|
|
104
|
+
"uuid": "13.0.0"
|
|
104
105
|
},
|
|
105
106
|
"devDependencies": {
|
|
106
107
|
"@babel/core": "7.27.1",
|