dinocollab-shared 1.2.44 → 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-item/create.cart-item.js +1 -1
- package/dist/factory/cart-item/create.cart-item.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":"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"}
|
|
1
|
+
{"version":3,"file":"widget.js","sources":["../../src/cart/widget.tsx"],"sourcesContent":["import { Fragment, useState, FC, useCallback } from 'react'\r\nimport { Badge, ButtonProps, Drawer, Stack, Typography, TypographyProps, useMediaQuery, useTheme } from '@mui/material'\r\nimport ShoppingCartOutlinedIcon from '@mui/icons-material/ShoppingCartOutlined'\r\nimport { ICartItem } from './types'\r\nimport { IAppSiteBaseUrl } from '../types'\r\nimport { ItemTag, MenuStyled, Root } from './styled'\r\nimport { IconButtonDark } from '../components'\r\nimport { getTotalData } from './helpers'\r\nimport createCartContent from '../factory/cart-content/create.cart-content'\r\nimport createCartItem from '../factory/cart-item/create.cart-item'\r\n\r\ninterface ICartWidgetProps {\r\n baseUrl: IAppSiteBaseUrl\r\n carts?: ICartItem[]\r\n hrefCart?: string\r\n buttonMoveToCartProps?: ButtonProps & { [key: string]: any }\r\n storageKey?: string\r\n onRemoveCart?: (item: ICartItem) => void\r\n onMoveToCartClick?: (e: React.MouseEvent<HTMLAnchorElement | HTMLButtonElement, MouseEvent>) => void\r\n itemTitleProps?: TypographyProps & { [key: string]: any }\r\n itemTitlePropsGetter?: (item: ICartItem, close?: () => void) => TypographyProps & { [key: string]: any }\r\n}\r\n\r\nconst CartContent = createCartContent<ICartItem>({\r\n labels: {\r\n title: 'Your Cart',\r\n buttonCheckout: 'Show in cart'\r\n },\r\n empty: {\r\n title: 'Your cart is empty',\r\n subTitle: 'Try adding some products'\r\n }\r\n})\r\n\r\nconst CartItem = createCartItem<ICartItem>({\r\n slots: {\r\n beforeTile: (ctx) => (\r\n <Stack direction='row' flexWrap={'wrap'} width={'100%'} gap={1} alignItems='center' justifyContent={'space-between'}>\r\n <ItemTag variant='body1' sx={{ color: ctx.item.PriceColor ?? '#000' }}>\r\n {ctx.item.PriceName ?? 'Unknown Price'}\r\n </ItemTag>\r\n <Stack direction='row' gap={0.5} alignItems='flex-end'>\r\n <Typography>${ctx.item.Price ?? 0}</Typography>\r\n <Typography variant='body1' sx={{ fontSize: '14px', color: '#818181' }}>\r\n x{ctx.item.Amount ?? 0} urls\r\n </Typography>\r\n </Stack>\r\n </Stack>\r\n )\r\n }\r\n})\r\n\r\nexport const CartWidget: FC<ICartWidgetProps> = (props) => {\r\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\r\n const [hydrated, setHydrated] = useState(false)\r\n const theme = useTheme()\r\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'))\r\n\r\n const carts = props.carts ?? []\r\n\r\n // Use effect to set hydrated on mount\r\n useState(() => {\r\n setHydrated(true)\r\n })\r\n\r\n const onOpen = (target: HTMLElement) => {\r\n setAnchorEl(target)\r\n }\r\n\r\n const onClose = () => {\r\n setAnchorEl(null)\r\n }\r\n\r\n const renderContent = useCallback(() => (\r\n <CartContent\r\n carts={carts}\r\n isMobile={isMobile}\r\n onClose={onClose}\r\n buttonMoveToCartProps={props.buttonMoveToCartProps}\r\n onCheckout={(event) => {\r\n onClose()\r\n if (props.onMoveToCartClick) props.onMoveToCartClick(event as React.MouseEvent<HTMLAnchorElement | HTMLButtonElement, MouseEvent>)\r\n }}\r\n slots={{\r\n headerRight: (ctx) => {\r\n const totalData = getTotalData(ctx.carts)\r\n return (\r\n <Stack justifyContent={'flex-end'}>\r\n <Typography\r\n variant='caption'\r\n sx={{ textTransform: 'uppercase', fontWeight: 500, letterSpacing: '0.1em', color: 'var(--color-text-secondary)' }}\r\n >\r\n Total\r\n </Typography>\r\n <Typography variant='h6' sx={{ fontWeight: 700, color: '#e88c3f' }}>\r\n ${totalData.price?.toFixed(2)}\r\n </Typography>\r\n </Stack>\r\n )\r\n },\r\n item: (item, index) => (\r\n <CartItem\r\n key={item.ProductId ?? index}\r\n item={item}\r\n name={item.ProductName}\r\n imageUrl={item.PictureUrl}\r\n onRemoveCart={props.onRemoveCart}\r\n itemTitleProps={props.itemTitleProps}\r\n itemTitlePropsGetter={props.itemTitlePropsGetter}\r\n onClose={onClose}\r\n />\r\n )\r\n }}\r\n />\r\n ), [carts, isMobile, props, onClose])\r\n\r\n return (\r\n <Fragment>\r\n <IconButtonDark onClick={(e) => onOpen(e.currentTarget)}>\r\n <Badge badgeContent={hydrated ? (carts.length ?? 0) : 0} color='error'>\r\n <ShoppingCartOutlinedIcon fontSize='small' />\r\n </Badge>\r\n </IconButtonDark>\r\n {isMobile ? (\r\n <Drawer\r\n anchor='right'\r\n open={Boolean(anchorEl)}\r\n onClose={onClose}\r\n disableScrollLock\r\n PaperProps={{ sx: { width: 'calc(100% - 100px)', maxWidth: 360 } }}\r\n >\r\n <Root>{renderContent()}</Root>\r\n </Drawer>\r\n ) : (\r\n <MenuStyled\r\n disableScrollLock\r\n anchorEl={anchorEl}\r\n open={Boolean(anchorEl)}\r\n onClose={onClose}\r\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n MenuListProps={{ component: 'div', sx: { display: 'flex', flexDirection: 'column' } }}\r\n >\r\n <Root>{renderContent()}</Root>\r\n </MenuStyled>\r\n )}\r\n </Fragment>\r\n )\r\n}\r\n\r\nexport const createCartWidget = (params: ICartWidgetProps) => {\r\n const _CartWidget: FC<Partial<ICartWidgetProps>> = (props) => <CartWidget {...params} {...props} />\r\n _CartWidget.displayName = 'CartWidget'\r\n return _CartWidget\r\n}\r\n"],"names":["CartContent","createCartContent","labels","title","buttonCheckout","empty","subTitle","CartItem","createCartItem","slots","beforeTile","ctx","_ctx$item$PriceColor","_ctx$item$PriceName","_ctx$item$Price","_ctx$item$Amount","_jsxs","Stack","direction","flexWrap","width","gap","alignItems","justifyContent","children","_jsx","ItemTag","variant","sx","color","item","PriceColor","PriceName","Typography","Price","fontSize","Amount","CartWidget","props","_props$carts","_carts$length","_useState","useState","_useState2","_slicedToArray","anchorEl","setAnchorEl","_useState3","_useState4","hydrated","setHydrated","theme","useTheme","isMobile","useMediaQuery","breakpoints","down","carts","onClose","renderContent","useCallback","buttonMoveToCartProps","onCheckout","event","onMoveToCartClick","headerRight","_totalData$price","totalData","getTotalData","textTransform","fontWeight","letterSpacing","price","toFixed","index","_item$ProductId","name","ProductName","imageUrl","PictureUrl","onRemoveCart","itemTitleProps","itemTitlePropsGetter","ProductId","Fragment","IconButtonDark","onClick","e","target","currentTarget","Badge","badgeContent","length","ShoppingCartOutlinedIcon","Drawer","anchor","open","Boolean","disableScrollLock","PaperProps","maxWidth","Root","MenuStyled","anchorOrigin","vertical","horizontal","transformOrigin","MenuListProps","component","display","flexDirection","createCartWidget","params","_CartWidget","_objectSpread","displayName"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{objectSpread2 as l}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as o,Fragment as i,jsxs as t}from"react/jsx-runtime";import e from"@mui/icons-material/ArrowForward";import{Typography as n}from"@mui/material";import{
|
|
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,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 +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 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 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":"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"}
|
|
@@ -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":"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,
|
|
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",
|