dinocollab-shared 1.2.11 → 1.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/dist/auth/profile.js +1 -1
  2. package/dist/cart/event-store.js +2 -0
  3. package/dist/cart/event-store.js.map +1 -0
  4. package/dist/cart/hooks.js +2 -0
  5. package/dist/cart/hooks.js.map +1 -0
  6. package/dist/cart/index.js +1 -1
  7. package/dist/cart/service.js +2 -0
  8. package/dist/cart/service.js.map +1 -0
  9. package/dist/cart/widget.js +1 -1
  10. package/dist/cart/widget.js.map +1 -1
  11. package/dist/components/no-data-panel.js +1 -1
  12. package/dist/components/no-data-panel.js.map +1 -1
  13. package/dist/layout-global/app-footer.js +1 -1
  14. package/dist/layout-global/app-header.js +1 -1
  15. package/dist/layout-global/app-header.nav.js +1 -1
  16. package/dist/layout-global/app-header.nav.js.map +1 -1
  17. package/dist/layout-global/app-theme-provider.js +1 -1
  18. package/dist/layout-global/app-theme-provider.js.map +1 -1
  19. package/dist/layout-global/configs.js +1 -1
  20. package/dist/layout-global/configs.js.map +1 -1
  21. package/dist/layout-global/index.js +1 -1
  22. package/dist/media-right/event-store.js +2 -0
  23. package/dist/media-right/event-store.js.map +1 -0
  24. package/dist/media-right/group-selector/index.js +1 -1
  25. package/dist/media-right/group-selector/index.js.map +1 -1
  26. package/dist/media-right/group-selector/units.js +1 -1
  27. package/dist/media-right/group-selector/units.js.map +1 -1
  28. package/dist/media-right/hooks.js +2 -0
  29. package/dist/media-right/hooks.js.map +1 -0
  30. package/dist/media-right/index.js +1 -1
  31. package/dist/media-right/media-widget/index.js +1 -1
  32. package/dist/media-right/media-widget/index.js.map +1 -1
  33. package/dist/media-right/media-widget/media-group-accordion.js +1 -1
  34. package/dist/media-right/media-widget/media-group-accordion.js.map +1 -1
  35. package/dist/media-right/media-widget/media-list.js +1 -1
  36. package/dist/media-right/media-widget/media-list.js.map +1 -1
  37. package/dist/media-right/media-widget/styled.js +1 -1
  38. package/dist/media-right/media-widget/styled.js.map +1 -1
  39. package/dist/media-right/service.js +2 -0
  40. package/dist/media-right/service.js.map +1 -0
  41. package/dist/types/cart/{cart-store.d.ts → event-store.d.ts} +1 -22
  42. package/dist/types/cart/event-store.d.ts.map +1 -0
  43. package/dist/types/cart/{hook.d.ts → hooks.d.ts} +5 -7
  44. package/dist/types/cart/hooks.d.ts.map +1 -0
  45. package/dist/types/cart/index.d.ts +2 -1
  46. package/dist/types/cart/index.d.ts.map +1 -1
  47. package/dist/types/cart/service.d.ts +28 -0
  48. package/dist/types/cart/service.d.ts.map +1 -0
  49. package/dist/types/layout-global/app-header.nav.d.ts.map +1 -1
  50. package/dist/types/layout-global/app-theme-provider.d.ts +1 -1
  51. package/dist/types/layout-global/app-theme-provider.d.ts.map +1 -1
  52. package/dist/types/layout-global/configs.d.ts +1 -1
  53. package/dist/types/layout-global/configs.d.ts.map +1 -1
  54. package/dist/types/media-right/event-store.d.ts +27 -0
  55. package/dist/types/media-right/event-store.d.ts.map +1 -0
  56. package/dist/types/media-right/group-selector/index.d.ts +4 -3
  57. package/dist/types/media-right/group-selector/index.d.ts.map +1 -1
  58. package/dist/types/media-right/group-selector/units.d.ts +1 -1
  59. package/dist/types/media-right/group-selector/units.d.ts.map +1 -1
  60. package/dist/types/media-right/{hook.d.ts → hooks.d.ts} +1 -1
  61. package/dist/types/media-right/hooks.d.ts.map +1 -0
  62. package/dist/types/media-right/index.d.ts +2 -1
  63. package/dist/types/media-right/index.d.ts.map +1 -1
  64. package/dist/types/media-right/media-widget/index.d.ts.map +1 -1
  65. package/dist/types/media-right/media-widget/media-group-accordion.d.ts.map +1 -1
  66. package/dist/types/media-right/media-widget/media-list.d.ts.map +1 -1
  67. package/dist/types/media-right/media-widget/styled.d.ts +10 -0
  68. package/dist/types/media-right/media-widget/styled.d.ts.map +1 -1
  69. package/dist/types/media-right/service.d.ts +36 -0
  70. package/dist/types/media-right/service.d.ts.map +1 -0
  71. package/package.json +1 -1
  72. package/dist/cart/cart-store.js +0 -2
  73. package/dist/cart/cart-store.js.map +0 -1
  74. package/dist/cart/hook.js +0 -2
  75. package/dist/cart/hook.js.map +0 -1
  76. package/dist/media-right/cart-store.js +0 -2
  77. package/dist/media-right/cart-store.js.map +0 -1
  78. package/dist/media-right/hook.js +0 -2
  79. package/dist/media-right/hook.js.map +0 -1
  80. package/dist/types/cart/cart-store.d.ts.map +0 -1
  81. package/dist/types/cart/hook.d.ts.map +0 -1
  82. package/dist/types/media-right/cart-store.d.ts +0 -48
  83. package/dist/types/media-right/cart-store.d.ts.map +0 -1
  84. package/dist/types/media-right/hook.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/media-right/group-selector/index.tsx"],"sourcesContent":["import { useState } from 'react'\r\nimport type { FC, FormEvent } from 'react'\r\nimport { createRoot } from 'react-dom/client'\r\nimport { Dialog, DialogContent, DialogActions, Button, Typography, Box } from '@mui/material'\r\nimport type { IMediaRightGroup, IMediaRightItem } from '../types'\r\nimport { CollectionsList } from './units'\r\nimport { ModalHeader } from './modal-header'\r\nimport { canAddGroup, generateGroupId } from '../helpers'\r\nimport { NewCollectionButton, NewCollectionInput } from '../unit.control'\r\nimport { GuideSteps } from '../guide-steps'\r\nimport type { IGuideStepsProps } from '../guide-steps'\r\n\r\nexport interface IGroupSelectorModalProps {\r\n open: boolean\r\n guideStepsProps?: IGuideStepsProps\r\n onClose: () => void\r\n onConfirm: (groupId: string | null, newName?: string) => void\r\n groups: IMediaRightGroup[]\r\n cartItem: IMediaRightItem | null\r\n}\r\n\r\nexport const GroupSelectorModal: FC<IGroupSelectorModalProps> = ({ open, onClose, onConfirm, groups, guideStepsProps, cartItem }) => {\r\n const [selectedGroupId, setSelectedGroupId] = useState<string | null>(null)\r\n const [showNewGroupInput, setShowNewGroupInput] = useState(false)\r\n const [newName, setNewName] = useState<string>('')\r\n\r\n const handleSubmit = (e: FormEvent) => {\r\n e.preventDefault()\r\n\r\n if (showNewGroupInput && newName.trim()) {\r\n // Create new group\r\n onConfirm(null, newName.trim())\r\n } else if (selectedGroupId) {\r\n // Add to selected group\r\n onConfirm(selectedGroupId)\r\n } else {\r\n // Add to cart without group\r\n onConfirm(null)\r\n }\r\n }\r\n\r\n const handleClose = () => {\r\n setSelectedGroupId(null)\r\n setShowNewGroupInput(false)\r\n setNewName('')\r\n onClose()\r\n }\r\n\r\n const handleNewGroupClick = () => {\r\n setSelectedGroupId(null)\r\n setShowNewGroupInput(true)\r\n }\r\n\r\n const handleGroupSelect = (groupId: string) => {\r\n setSelectedGroupId(groupId)\r\n setShowNewGroupInput(false)\r\n }\r\n\r\n const isConfirmDisabled = () => {\r\n if (showNewGroupInput) return !newName.trim()\r\n return !selectedGroupId\r\n }\r\n\r\n return (\r\n <Dialog open={open} onClose={handleClose} maxWidth='xs' fullWidth disableScrollLock={true} keepMounted={false} scroll='paper'>\r\n <ModalHeader cartItem={cartItem} onClose={handleClose} />\r\n <Box component='form' onSubmit={handleSubmit}>\r\n <DialogContent>\r\n <Typography variant='subtitle1' sx={{ mb: 1, fontWeight: 600 }}>\r\n Your Media Rights Package\r\n </Typography>\r\n {canAddGroup(groups) &&\r\n (!showNewGroupInput ? (\r\n <NewCollectionButton onClick={handleNewGroupClick} />\r\n ) : (\r\n <NewCollectionInput value={newName} onChange={setNewName} />\r\n ))}\r\n <CollectionsList groups={groups} selectedGroupId={selectedGroupId} onGroupSelect={handleGroupSelect} />\r\n </DialogContent>\r\n\r\n <DialogActions sx={{ px: 3, pb: 3 }}>\r\n {guideStepsProps && <GuideSteps iconButtonProps={{ color: 'primary', sx: { mr: 'auto' } }} {...guideStepsProps} />}\r\n <Button onClick={handleClose} variant='outlined' type='button'>\r\n Cancel\r\n </Button>\r\n <Button type='submit' variant='contained' disabled={isConfirmDisabled()} sx={{ minWidth: 100 }}>\r\n {showNewGroupInput ? 'Create & Add' : selectedGroupId ? 'Add' : 'Save'}\r\n </Button>\r\n </DialogActions>\r\n </Box>\r\n </Dialog>\r\n )\r\n}\r\n\r\nexport interface IShowGroupSelectorModalProps {\r\n cartItem: IMediaRightItem | null\r\n groups: IMediaRightGroup[]\r\n guideStepsProps?: IGuideStepsProps\r\n addGroup: (group: Omit<IMediaRightGroup, 'createdAt' | 'items'>) => void\r\n addItem: (item: IMediaRightItem) => void\r\n}\r\n\r\nexport const showGroupSelectorModal = ({ cartItem, groups, guideStepsProps, addGroup, addItem }: IShowGroupSelectorModalProps) => {\r\n const modalContainer = document.createElement('div')\r\n document.body.appendChild(modalContainer)\r\n const root = createRoot(modalContainer)\r\n\r\n const handleModalConfirmInModal = (groupId: string | null, newGroupName?: string) => {\r\n if (!cartItem) return\r\n let finalGroupId = groupId\r\n // Create new group if needed\r\n if (!groupId && newGroupName) {\r\n finalGroupId = generateGroupId()\r\n addGroup({\r\n id: finalGroupId,\r\n name: newGroupName,\r\n channels: []\r\n })\r\n }\r\n const cartItemWithGroup: IMediaRightItem = {\r\n ...cartItem,\r\n GroupId: finalGroupId || ''\r\n }\r\n if (finalGroupId) {\r\n addItem(cartItemWithGroup)\r\n }\r\n root.unmount()\r\n document.body.removeChild(modalContainer)\r\n }\r\n root.render(\r\n <GroupSelectorModal\r\n open={true}\r\n onClose={() => {\r\n root.unmount()\r\n document.body.removeChild(modalContainer)\r\n }}\r\n onConfirm={handleModalConfirmInModal}\r\n guideStepsProps={guideStepsProps}\r\n groups={groups}\r\n cartItem={cartItem}\r\n />\r\n )\r\n}\r\n"],"names":["GroupSelectorModal","_ref","open","onClose","onConfirm","groups","guideStepsProps","cartItem","_useState","useState","_useState2","_slicedToArray","selectedGroupId","setSelectedGroupId","_useState3","_useState4","showNewGroupInput","setShowNewGroupInput","_useState5","_useState6","newName","setNewName","handleClose","_jsxs","Dialog","maxWidth","fullWidth","disableScrollLock","keepMounted","scroll","children","_jsx","ModalHeader","Box","component","onSubmit","e","preventDefault","trim","DialogContent","Typography","variant","sx","mb","fontWeight","canAddGroup","NewCollectionInput","value","onChange","NewCollectionButton","onClick","CollectionsList","onGroupSelect","groupId","DialogActions","px","pb","GuideSteps","_objectSpread","iconButtonProps","color","mr","Button","type","disabled","minWidth","showGroupSelectorModal","_ref2","addGroup","addItem","modalContainer","document","createElement","body","appendChild","root","createRoot","render","unmount","removeChild","newGroupName","finalGroupId","generateGroupId","id","name","channels","cartItemWithGroup","GroupId"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/media-right/group-selector/index.tsx"],"sourcesContent":["import { useState, useEffect, useMemo } from 'react'\r\nimport type { FC, FormEvent } from 'react'\r\nimport { createRoot } from 'react-dom/client'\r\nimport { Dialog, DialogContent, DialogActions, Button, Typography, Box } from '@mui/material'\r\nimport type { IMediaRightGroup, IMediaRightItem } from '../types'\r\nimport { CollectionsList } from './units'\r\nimport { ModalHeader } from './modal-header'\r\nimport { canAddGroup, generateGroupId } from '../helpers'\r\nimport { NewCollectionButton, NewCollectionInput } from '../unit.control'\r\nimport { GuideSteps } from '../guide-steps'\r\nimport type { IGuideStepsProps } from '../guide-steps'\r\n\r\nexport interface IGroupSelectorModalProps {\r\n open: boolean\r\n guideStepsProps?: IGuideStepsProps\r\n onClose: () => void\r\n onConfirm: (groupIdsToAdd: string[], groupIdsToRemove: string[], newGroupName?: string) => void\r\n groups: IMediaRightGroup[]\r\n cartItem: IMediaRightItem | null\r\n}\r\n\r\nexport const GroupSelectorModal: FC<IGroupSelectorModalProps> = ({ open, onClose, onConfirm, groups, guideStepsProps, cartItem }) => {\r\n // Find all groups that contain this item\r\n const currentGroupIds = useMemo(() => {\r\n if (!cartItem?.ProductId) return []\r\n const l = groups.filter((g) => g.items?.some((item) => item.ProductId === cartItem.ProductId))\r\n return l.map((g) => g.id).sort()\r\n }, [groups, cartItem])\r\n\r\n // Auto-select: all current groups if exists, otherwise first group if available\r\n const initialGroupIds = currentGroupIds.length > 0 ? currentGroupIds : groups.length > 0 ? [groups[0].id] : []\r\n\r\n const [selectedGroupIds, setSelectedGroupIds] = useState<string[]>(initialGroupIds)\r\n const [showNewGroupInput, setShowNewGroupInput] = useState(false)\r\n const [newName, setNewName] = useState<string>('')\r\n\r\n // Update selection when modal opens or groups/cartItem changes\r\n useEffect(() => {\r\n if (open) {\r\n const newInitialGroupIds = currentGroupIds.length > 0 ? currentGroupIds : groups.length > 0 ? [groups[0].id] : []\r\n setSelectedGroupIds(newInitialGroupIds)\r\n setShowNewGroupInput(false)\r\n setNewName('')\r\n }\r\n }, [open, currentGroupIds, groups.length])\r\n\r\n // Check if there's any change\r\n const hasChanges = () => {\r\n if (showNewGroupInput && newName.trim()) return true\r\n\r\n // Sort and compare arrays (currentGroupIds is already sorted)\r\n const sortedSelected = [...selectedGroupIds].sort()\r\n\r\n // Check if arrays are different\r\n if (currentGroupIds.length !== sortedSelected.length) return true\r\n\r\n return currentGroupIds.some((id, index) => id !== sortedSelected[index])\r\n }\r\n\r\n const handleSubmit = (e: FormEvent) => {\r\n e.preventDefault()\r\n\r\n // Only proceed if there are changes\r\n if (!hasChanges()) {\r\n handleClose()\r\n return\r\n }\r\n\r\n if (showNewGroupInput && newName.trim()) {\r\n // Create new group and add item to it\r\n onConfirm([], [], newName.trim())\r\n } else {\r\n // Calculate changes\r\n const groupIdsToAdd = selectedGroupIds.filter((id) => !currentGroupIds.includes(id))\r\n const groupIdsToRemove = currentGroupIds.filter((id) => !selectedGroupIds.includes(id))\r\n onConfirm(groupIdsToAdd, groupIdsToRemove)\r\n }\r\n }\r\n\r\n const handleClose = () => {\r\n setSelectedGroupIds([])\r\n setShowNewGroupInput(false)\r\n setNewName('')\r\n onClose()\r\n }\r\n\r\n const handleNewGroupClick = () => {\r\n setShowNewGroupInput(true)\r\n }\r\n\r\n const handleGroupSelect = (groupId: string) => {\r\n setSelectedGroupIds((prev) => {\r\n if (prev.includes(groupId)) {\r\n // Uncheck: remove from selection\r\n return prev.filter((id) => id !== groupId)\r\n } else {\r\n // Check: add to selection\r\n return [...prev, groupId]\r\n }\r\n })\r\n setShowNewGroupInput(false)\r\n }\r\n\r\n const isConfirmDisabled = () => {\r\n if (showNewGroupInput) return !newName.trim()\r\n // Allow unchecking all groups (to remove item from all groups)\r\n return false\r\n }\r\n\r\n const getButtonText = () => {\r\n if (showNewGroupInput) return 'Create & Add'\r\n\r\n const changes = hasChanges()\r\n\r\n // Case 1: Item already exists in some groups\r\n if (currentGroupIds.length > 0) {\r\n return changes ? 'Save Changes' : 'OK'\r\n }\r\n\r\n // Case 2: Item doesn't exist in any group yet\r\n return 'Save'\r\n }\r\n\r\n return (\r\n <Dialog open={open} onClose={handleClose} maxWidth='xs' fullWidth disableScrollLock={true} keepMounted={false} scroll='paper'>\r\n <ModalHeader cartItem={cartItem} onClose={handleClose} />\r\n <Box component='form' onSubmit={handleSubmit}>\r\n <DialogContent>\r\n <Typography variant='subtitle1' sx={{ mb: 1, fontWeight: 600 }}>\r\n Your Media Rights Package\r\n </Typography>\r\n {canAddGroup(groups) &&\r\n (!showNewGroupInput ? (\r\n <NewCollectionButton onClick={handleNewGroupClick} />\r\n ) : (\r\n <NewCollectionInput value={newName} onChange={setNewName} />\r\n ))}\r\n <CollectionsList groups={groups} selectedGroupIds={selectedGroupIds} onGroupSelect={handleGroupSelect} />\r\n </DialogContent>\r\n\r\n <DialogActions sx={{ px: 3, pb: 3 }}>\r\n {guideStepsProps && <GuideSteps iconButtonProps={{ color: 'primary', sx: { mr: 'auto' } }} {...guideStepsProps} />}\r\n <Button onClick={handleClose} variant='outlined' type='button'>\r\n Cancel\r\n </Button>\r\n <Button type='submit' variant='contained' disabled={isConfirmDisabled()} sx={{ minWidth: 100 }}>\r\n {getButtonText()}\r\n </Button>\r\n </DialogActions>\r\n </Box>\r\n </Dialog>\r\n )\r\n}\r\n\r\nexport interface IShowGroupSelectorModalProps {\r\n cartItem: IMediaRightItem | null\r\n groups: IMediaRightGroup[]\r\n guideStepsProps?: IGuideStepsProps\r\n addGroup: (group: Omit<IMediaRightGroup, 'createdAt' | 'items' | 'channels'>) => void\r\n addItem: (item: IMediaRightItem) => void\r\n removeItem: (groupId: string, productId: string) => void\r\n}\r\n\r\nexport const showGroupSelectorModal = ({ cartItem, groups, guideStepsProps, addGroup, addItem, removeItem }: IShowGroupSelectorModalProps) => {\r\n const modalContainer = document.createElement('div')\r\n document.body.appendChild(modalContainer)\r\n const root = createRoot(modalContainer)\r\n\r\n const handleModalConfirmInModal = (groupIdsToAdd: string[], groupIdsToRemove: string[], newGroupName?: string) => {\r\n if (!cartItem) return\r\n\r\n // Create new group if needed\r\n if (newGroupName) {\r\n const newGroupId = generateGroupId()\r\n addGroup({\r\n id: newGroupId,\r\n name: newGroupName\r\n })\r\n // Add item to the new group\r\n const cartItemWithGroup: IMediaRightItem = {\r\n ...cartItem,\r\n GroupId: newGroupId\r\n }\r\n addItem(cartItemWithGroup)\r\n } else {\r\n // Remove from groups\r\n groupIdsToRemove.forEach((groupId) => {\r\n if (cartItem.ProductId) {\r\n removeItem(groupId, cartItem.ProductId)\r\n }\r\n })\r\n\r\n // Add to groups\r\n groupIdsToAdd.forEach((groupId) => {\r\n const cartItemWithGroup: IMediaRightItem = {\r\n ...cartItem,\r\n GroupId: groupId\r\n }\r\n addItem(cartItemWithGroup)\r\n })\r\n }\r\n\r\n root.unmount()\r\n document.body.removeChild(modalContainer)\r\n }\r\n root.render(\r\n <GroupSelectorModal\r\n open={true}\r\n onClose={() => {\r\n root.unmount()\r\n document.body.removeChild(modalContainer)\r\n }}\r\n onConfirm={handleModalConfirmInModal}\r\n guideStepsProps={guideStepsProps}\r\n groups={groups}\r\n cartItem={cartItem}\r\n />\r\n )\r\n}\r\n"],"names":["GroupSelectorModal","_ref","open","onClose","onConfirm","groups","guideStepsProps","cartItem","currentGroupIds","useMemo","ProductId","filter","g","_g$items","items","some","item","map","id","sort","initialGroupIds","length","_useState","useState","_useState2","_slicedToArray","selectedGroupIds","setSelectedGroupIds","_useState3","_useState4","showNewGroupInput","setShowNewGroupInput","_useState5","_useState6","newName","setNewName","useEffect","newInitialGroupIds","hasChanges","trim","sortedSelected","_toConsumableArray","index","handleClose","_jsxs","Dialog","maxWidth","fullWidth","disableScrollLock","keepMounted","scroll","children","_jsx","ModalHeader","Box","component","onSubmit","e","preventDefault","groupIdsToAdd","includes","groupIdsToRemove","DialogContent","Typography","variant","sx","mb","fontWeight","canAddGroup","NewCollectionInput","value","onChange","NewCollectionButton","onClick","CollectionsList","onGroupSelect","groupId","prev","concat","DialogActions","px","pb","GuideSteps","_objectSpread","iconButtonProps","color","mr","Button","type","disabled","minWidth","changes","getButtonText","showGroupSelectorModal","_ref2","addGroup","addItem","removeItem","modalContainer","document","createElement","body","appendChild","root","createRoot","render","unmount","removeChild","newGroupName","newGroupId","generateGroupId","name","cartItemWithGroup","GroupId","forEach"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{jsxs as e,jsx as r}from"react/jsx-runtime";import{Box as t,Typography as i,List as o,ListItem as n,ListItemButton as a,Checkbox as l,Stack as c,Chip as d}from"@mui/material";import s from"@mui/icons-material/FolderOutlined";var m=function(t){var o=t.group,m=t.isSelected,u=t.onSelect;return r(n,{disablePadding:!0,children:e(a,{selected:m,onClick:function(){return u(o.id)},sx:{gap:1,borderRadius:1,"&.Mui-selected":{bgcolor:"primary.50","&:hover":{bgcolor:"primary.100"}}},children:[r(l,{checked:m,size:"small"}),r(s,{fontSize:"small"}),e(c,{direction:"row",gap:1,sx:{minWidth:0,flexGrow:1,alignItems:"center",justifyContent:"space-between"},children:[r(i,{variant:"body2",noWrap:!0,children:o.name}),r(d,{label:"".concat(o.items.length," items"),size:"small"})]})]})})},u=function(n){var a=n.groups,l=n.selectedGroupId,c=n.onGroupSelect;return 0===a.length?e(t,{sx:{textAlign:"center",py:2,color:"text.secondary"},children:[r(s,{sx:{fontSize:48,mb:1,opacity:.5}}),r(i,{variant:"body2",children:"No Media Rights Packages yet. Create your first package!"})]}):r(o,{sx:{maxHeight:300,overflow:"auto"},children:a.map(function(e){return r(m,{group:e,isSelected:l===e.id,onSelect:c},e.id)})})};export{u as CollectionsList};
1
+ import{jsxs as e,jsx as r}from"react/jsx-runtime";import{Box as i,Typography as t,List as n,ListItem as o,ListItemButton as a,Checkbox as l,Stack as c,Chip as d}from"@mui/material";import s from"@mui/icons-material/FolderOutlined";var m=function(i){var n=i.group,m=i.isSelected,u=i.onSelect;return r(o,{disablePadding:!0,children:e(a,{selected:m,onClick:function(){return u(n.id)},sx:{gap:1,borderRadius:1,"&.Mui-selected":{bgcolor:"primary.50","&:hover":{bgcolor:"primary.100"}}},children:[r(l,{checked:m,size:"small"}),r(s,{fontSize:"small"}),e(c,{direction:"row",gap:1,sx:{minWidth:0,flexGrow:1,alignItems:"center",justifyContent:"space-between"},children:[r(t,{variant:"body2",noWrap:!0,children:n.name}),r(d,{label:"".concat(n.items.length," items"),size:"small"})]})]})})},u=function(o){var a=o.groups,l=o.selectedGroupIds,c=o.onGroupSelect;return 0===a.length?e(i,{sx:{textAlign:"center",py:2,color:"text.secondary"},children:[r(s,{sx:{fontSize:48,mb:1,opacity:.5}}),r(t,{variant:"body2",children:"No Media Rights Packages yet. Create your first package!"})]}):r(n,{sx:{maxHeight:300,overflow:"auto"},children:a.map(function(e){return r(m,{group:e,isSelected:l.includes(e.id),onSelect:c},e.id)})})};export{u as CollectionsList};
2
2
  //# sourceMappingURL=units.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"units.js","sources":["../../../src/media-right/group-selector/units.tsx"],"sourcesContent":["import type { FC } from 'react'\r\nimport { List, Box, Typography, ListItem, ListItemButton, Checkbox, Stack, Chip } from '@mui/material'\r\nimport FolderOutlinedIcon from '@mui/icons-material/FolderOutlined'\r\nimport type { IMediaRightGroup } from '../types'\r\n\r\nexport interface CollectionItemProps {\r\n group: IMediaRightGroup\r\n isSelected: boolean\r\n onSelect: (groupId: string) => void\r\n}\r\n\r\nconst CollectionItem: FC<CollectionItemProps> = ({ group, isSelected, onSelect }) => {\r\n return (\r\n <ListItem disablePadding>\r\n <ListItemButton\r\n selected={isSelected}\r\n onClick={() => onSelect(group.id)}\r\n sx={{\r\n gap: 1,\r\n borderRadius: 1,\r\n '&.Mui-selected': {\r\n bgcolor: 'primary.50',\r\n '&:hover': {\r\n bgcolor: 'primary.100'\r\n }\r\n }\r\n }}\r\n >\r\n <Checkbox checked={isSelected} size='small' />\r\n <FolderOutlinedIcon fontSize='small' />\r\n <Stack direction='row' gap={1} sx={{ minWidth: 0, flexGrow: 1, alignItems: 'center', justifyContent: 'space-between' }}>\r\n <Typography variant='body2' noWrap>\r\n {group.name}\r\n </Typography>\r\n <Chip label={`${group.items.length} items`} size='small' />\r\n </Stack>\r\n </ListItemButton>\r\n </ListItem>\r\n )\r\n}\r\n\r\nexport interface CollectionsListProps {\r\n groups: IMediaRightGroup[]\r\n selectedGroupId: string | null\r\n onGroupSelect: (groupId: string) => void\r\n}\r\n\r\nexport const CollectionsList: FC<CollectionsListProps> = ({ groups, selectedGroupId, onGroupSelect }) => {\r\n if (groups.length === 0) {\r\n return (\r\n <Box sx={{ textAlign: 'center', py: 2, color: 'text.secondary' }}>\r\n <FolderOutlinedIcon sx={{ fontSize: 48, mb: 1, opacity: 0.5 }} />\r\n <Typography variant='body2'>No Media Rights Packages yet. Create your first package!</Typography>\r\n </Box>\r\n )\r\n }\r\n\r\n return (\r\n <List sx={{ maxHeight: 300, overflow: 'auto' }}>\r\n {groups.map((group) => (\r\n <CollectionItem key={group.id} group={group} isSelected={selectedGroupId === group.id} onSelect={onGroupSelect} />\r\n ))}\r\n </List>\r\n )\r\n}\r\n"],"names":["CollectionItem","_ref","group","isSelected","onSelect","_jsx","ListItem","disablePadding","children","_jsxs","ListItemButton","selected","onClick","id","sx","gap","borderRadius","bgcolor","Checkbox","checked","size","FolderOutlinedIcon","fontSize","Stack","direction","minWidth","flexGrow","alignItems","justifyContent","Typography","variant","noWrap","name","Chip","label","concat","items","length","CollectionsList","_ref2","groups","selectedGroupId","onGroupSelect","Box","textAlign","py","color","mb","opacity","List","maxHeight","overflow","map"],"mappings":"uOAWA,IAAMA,EAA0C,SAA5BC,GAAgE,IAAjCC,EAAKD,EAALC,MAAOC,EAAUF,EAAVE,WAAYC,EAAQH,EAARG,SACpE,OACEC,EAACC,EAAS,CAAAC,gBACR,EAAAC,SAAAC,EAACC,EAAc,CACbC,SAAUR,EACVS,QAAS,WAAF,OAAQR,EAASF,EAAMW,GAAG,EACjCC,GAAI,CACFC,IAAK,EACLC,aAAc,EACd,iBAAkB,CAChBC,QAAS,aACT,UAAW,CACTA,QAAS,iBAGdT,SAAA,CAEDH,EAACa,EAAQ,CAACC,QAAShB,EAAYiB,KAAK,UACpCf,EAACgB,GAAmBC,SAAS,UAC7Bb,EAACc,GAAMC,UAAU,MAAMT,IAAK,EAAGD,GAAI,CAAEW,SAAU,EAAGC,SAAU,EAAGC,WAAY,SAAUC,eAAgB,iBAAiBpB,SAAA,CACpHH,EAACwB,EAAU,CAACC,QAAQ,QAAQC,mBACzB7B,EAAM8B,OAET3B,EAAC4B,GAAKC,MAAK,GAAAC,OAAKjC,EAAMkC,MAAMC,OAAc,UAAEjB,KAAK,iBAK3D,EAQakB,EAA4C,SAA7BC,GAA4E,IAA5CC,EAAMD,EAANC,OAAQC,EAAeF,EAAfE,gBAAiBC,EAAaH,EAAbG,cACnF,OAAsB,IAAlBF,EAAOH,OAEP5B,EAACkC,EAAG,CAAC7B,GAAI,CAAE8B,UAAW,SAAUC,GAAI,EAAGC,MAAO,kBAAkBtC,SAAA,CAC9DH,EAACgB,EAAmB,CAAAP,GAAI,CAAEQ,SAAU,GAAIyB,GAAI,EAAGC,QAAS,MACxD3C,EAACwB,EAAW,CAAAC,QAAQ,QAAOtB,SAAA,gEAM/BH,EAAC4C,EAAK,CAAAnC,GAAI,CAAEoC,UAAW,IAAKC,SAAU,QACnC3C,SAAAgC,EAAOY,IAAI,SAAClD,GAAK,OAChBG,EAACL,EAAc,CAAgBE,MAAOA,EAAOC,WAAYsC,IAAoBvC,EAAMW,GAAIT,SAAUsC,GAA5ExC,EAAMW,GAC5B,IAGP"}
1
+ {"version":3,"file":"units.js","sources":["../../../src/media-right/group-selector/units.tsx"],"sourcesContent":["import type { FC } from 'react'\r\nimport { List, Box, Typography, ListItem, ListItemButton, Checkbox, Stack, Chip } from '@mui/material'\r\nimport FolderOutlinedIcon from '@mui/icons-material/FolderOutlined'\r\nimport type { IMediaRightGroup } from '../types'\r\n\r\nexport interface CollectionItemProps {\r\n group: IMediaRightGroup\r\n isSelected: boolean\r\n onSelect: (groupId: string) => void\r\n}\r\n\r\nconst CollectionItem: FC<CollectionItemProps> = ({ group, isSelected, onSelect }) => {\r\n return (\r\n <ListItem disablePadding>\r\n <ListItemButton\r\n selected={isSelected}\r\n onClick={() => onSelect(group.id)}\r\n sx={{\r\n gap: 1,\r\n borderRadius: 1,\r\n '&.Mui-selected': {\r\n bgcolor: 'primary.50',\r\n '&:hover': {\r\n bgcolor: 'primary.100'\r\n }\r\n }\r\n }}\r\n >\r\n <Checkbox checked={isSelected} size='small' />\r\n <FolderOutlinedIcon fontSize='small' />\r\n <Stack direction='row' gap={1} sx={{ minWidth: 0, flexGrow: 1, alignItems: 'center', justifyContent: 'space-between' }}>\r\n <Typography variant='body2' noWrap>\r\n {group.name}\r\n </Typography>\r\n <Chip label={`${group.items.length} items`} size='small' />\r\n </Stack>\r\n </ListItemButton>\r\n </ListItem>\r\n )\r\n}\r\n\r\nexport interface CollectionsListProps {\r\n groups: IMediaRightGroup[]\r\n selectedGroupIds: string[]\r\n onGroupSelect: (groupId: string) => void\r\n}\r\n\r\nexport const CollectionsList: FC<CollectionsListProps> = ({ groups, selectedGroupIds, onGroupSelect }) => {\r\n if (groups.length === 0) {\r\n return (\r\n <Box sx={{ textAlign: 'center', py: 2, color: 'text.secondary' }}>\r\n <FolderOutlinedIcon sx={{ fontSize: 48, mb: 1, opacity: 0.5 }} />\r\n <Typography variant='body2'>No Media Rights Packages yet. Create your first package!</Typography>\r\n </Box>\r\n )\r\n }\r\n\r\n return (\r\n <List sx={{ maxHeight: 300, overflow: 'auto' }}>\r\n {groups.map((group) => (\r\n <CollectionItem key={group.id} group={group} isSelected={selectedGroupIds.includes(group.id)} onSelect={onGroupSelect} />\r\n ))}\r\n </List>\r\n )\r\n}\r\n"],"names":["CollectionItem","_ref","group","isSelected","onSelect","_jsx","ListItem","disablePadding","children","_jsxs","ListItemButton","selected","onClick","id","sx","gap","borderRadius","bgcolor","Checkbox","checked","size","FolderOutlinedIcon","fontSize","Stack","direction","minWidth","flexGrow","alignItems","justifyContent","Typography","variant","noWrap","name","Chip","label","concat","items","length","CollectionsList","_ref2","groups","selectedGroupIds","onGroupSelect","Box","textAlign","py","color","mb","opacity","List","maxHeight","overflow","map","includes"],"mappings":"uOAWA,IAAMA,EAA0C,SAA5BC,GAAgE,IAAjCC,EAAKD,EAALC,MAAOC,EAAUF,EAAVE,WAAYC,EAAQH,EAARG,SACpE,OACEC,EAACC,EAAS,CAAAC,gBACR,EAAAC,SAAAC,EAACC,EAAc,CACbC,SAAUR,EACVS,QAAS,WAAF,OAAQR,EAASF,EAAMW,GAAG,EACjCC,GAAI,CACFC,IAAK,EACLC,aAAc,EACd,iBAAkB,CAChBC,QAAS,aACT,UAAW,CACTA,QAAS,iBAGdT,SAAA,CAEDH,EAACa,EAAQ,CAACC,QAAShB,EAAYiB,KAAK,UACpCf,EAACgB,GAAmBC,SAAS,UAC7Bb,EAACc,GAAMC,UAAU,MAAMT,IAAK,EAAGD,GAAI,CAAEW,SAAU,EAAGC,SAAU,EAAGC,WAAY,SAAUC,eAAgB,iBAAiBpB,SAAA,CACpHH,EAACwB,EAAU,CAACC,QAAQ,QAAQC,mBACzB7B,EAAM8B,OAET3B,EAAC4B,GAAKC,MAAK,GAAAC,OAAKjC,EAAMkC,MAAMC,OAAc,UAAEjB,KAAK,iBAK3D,EAQakB,EAA4C,SAA7BC,GAA6E,IAA7CC,EAAMD,EAANC,OAAQC,EAAgBF,EAAhBE,iBAAkBC,EAAaH,EAAbG,cACpF,OAAsB,IAAlBF,EAAOH,OAEP5B,EAACkC,EAAG,CAAC7B,GAAI,CAAE8B,UAAW,SAAUC,GAAI,EAAGC,MAAO,kBAAkBtC,SAAA,CAC9DH,EAACgB,EAAmB,CAAAP,GAAI,CAAEQ,SAAU,GAAIyB,GAAI,EAAGC,QAAS,MACxD3C,EAACwB,EAAW,CAAAC,QAAQ,QAAOtB,SAAA,gEAM/BH,EAAC4C,EAAK,CAAAnC,GAAI,CAAEoC,UAAW,IAAKC,SAAU,QAAQ3C,SAC3CgC,EAAOY,IAAI,SAAClD,GAAK,OAChBG,EAACL,GAA8BE,MAAOA,EAAOC,WAAYsC,EAAiBY,SAASnD,EAAMW,IAAKT,SAAUsC,GAAnFxC,EAAMW,GAC5B,IAGP"}
@@ -0,0 +1,2 @@
1
+ import{slicedToArray as e}from"../_virtual/_rollupPluginBabelHelpers.js";import{useRef as r,useState as n,useEffect as t}from"react";import{MediaRightService as o,mediaRightService as a}from"./service.js";function u(u){var c=r(!1);null!=u&&u.localStorageKey&&!c.current&&o.setLocalStorageKey(u.localStorageKey);var l=n(function(){return a.getGroupsMap()}),i=e(l,2),p=i[0],f=i[1];return t(function(){c.current||(a.initialize(),c.current=!0);var e=a.subscribe("stateChange",function(e){var r=e.groups;f(r)});return function(){e&&e()}},[]),{groups:Object.values(p),groupsMap:p}}function c(e){var n=r(!1);null!=e&&e.localStorageKey&&!n.current&&(o.setLocalStorageKey(e.localStorageKey),n.current=!0);return{addGroup:function(e){a.addGroup(e)},updateGroup:function(e,r){a.updateGroup(e,r)},removeGroup:function(e){a.removeGroup(e)},addItem:function(e){a.addItem(e)},updateItem:function(e,r,n){a.updateItem(e,r,n)},removeItem:function(e,r){a.removeItem(e,r)},addChannel:function(e,r){a.addChannel(e,r)},updateChannel:function(e,r,n){a.updateChannel(e,r,n)},removeChannel:function(e,r){a.removeChannel(e,r)},clearChannels:function(e){a.clearChannels(e)},clearCart:function(){a.clearAll()}}}export{c as useMediaRightActions,u as useMediaRightStore};
2
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +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.setLocalStorageKey(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.setLocalStorageKey(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: IMediaRightChannel) => {\r\n mediaRightService.addChannel(groupId, channel)\r\n }\r\n\r\n const updateChannel = (groupId: string, channelIndex: number, updates: Partial<IMediaRightChannel>) => {\r\n mediaRightService.updateChannel(groupId, channelIndex, updates)\r\n }\r\n\r\n const removeChannel = (groupId: string, channelIndex: number) => {\r\n mediaRightService.removeChannel(groupId, channelIndex)\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","setLocalStorageKey","_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","channelIndex","removeChannel","clearChannels","clearCart","clearAll"],"mappings":"6MAQM,SAAUA,EAA4BC,GAC1C,IAAMC,EAAiBC,GAAO,GAG1BF,SAAAA,EAAQG,kBAAoBF,EAAeG,SAC7CC,EAAkBC,mBAAmBN,EAAOG,iBAG9C,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,mBAAmBN,EAAOG,iBAC5CF,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,EAAsBV,GAC5DnB,EAAkB4B,cAAcV,EAASW,EAAcV,EACxD,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
- export{mediaRightStoreOptions}from"./configs.js";export{EChannelType}from"./types.js";export{GuideSteps}from"./guide-steps/index.js";export{MediaGroupWidget,createMediaGroupWidget}from"./media-widget/index.js";export{GroupSelectorModal,showGroupSelectorModal}from"./group-selector/index.js";export{useMediaRightActions,useMediaRightStore}from"./hook.js";export{areDuplicatedLink,canAddGroup,canAddItemToGroup,convertStringToLinks,generateGroupId}from"./helpers.js";
1
+ export{mediaRightStoreOptions}from"./configs.js";export{EChannelType}from"./types.js";export{GuideSteps}from"./guide-steps/index.js";export{MediaGroupWidget,createMediaGroupWidget}from"./media-widget/index.js";export{GroupSelectorModal,showGroupSelectorModal}from"./group-selector/index.js";export{useMediaRightActions,useMediaRightStore}from"./hooks.js";export{MediaRightService,mediaRightService}from"./service.js";export{areDuplicatedLink,canAddGroup,canAddItemToGroup,convertStringToLinks,generateGroupId}from"./helpers.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import{slicedToArray as o,objectSpread2 as r}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as e,jsx as t,Fragment as n}from"react/jsx-runtime";import{useState as i,Fragment as a}from"react";import{Badge as l,Stack as p,Typography as c,Button as u}from"@mui/material";import m from"@mui/icons-material/DriveFileMoveOutlined";import d from"@mui/icons-material/FolderSpecialOutlined";import{EmptyState as s}from"./units.js";import{MenuStyled as g}from"./styled.js";import{IconButtonDark as f}from"../../components/buttons.js";import{MediaGroupAccordion as h}from"./media-group-accordion.js";import{useMediaRightStore as x,useMediaRightActions as b}from"../hook.js";import{NewGroupArea as v}from"./new-group-area.js";import{canAddGroup as j,generateGroupId as k}from"../helpers.js";import{ItemTitlePropsContext as P}from"./item-title-props-context.js";var C=function(C){var S,y=C.localStorageKey,G=C.hrefCart,T=C.buttonMoveToCartProps,w=C.onDetailClick,z=x({localStorageKey:y}).groups,D=b({localStorageKey:y}),I=i(null),M=o(I,2),O=M[0],F=M[1],K=i(!1),B=o(K,2),E=B[0],_=B[1],A=function(o){D.addGroup({name:o,id:k()})},H=function(o){D.updateGroup(o.id,o)},L=function(o){D.removeGroup(o)},N=function(o,r){D.removeItem(o,r)};return e(a,{children:[t(f,{onClick:function(o){return F(o.currentTarget)},children:t(l,{badgeContent:z.length||0,color:"error",children:t(d,{})})}),t(g,{disableScrollLock:!0,anchorEl:O,open:Boolean(O),onClose:function(){return F(null)},anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:t(P.Provider,{value:{itemTitleProps:C.itemTitleProps,itemTitlePropsGetter:C.itemTitlePropsGetter,onClose:function(){return F(null)}},children:e(n,{children:[e(p,{alignItems:"start",spacing:1,sx:{padding:"12px 16px",position:"sticky",top:0,bgcolor:"background.paper",zIndex:2,boxShadow:"0px 0.5px 5px 0px rgba(0, 0, 0, 0.15)"},children:[e(c,{variant:"h6",component:"span",sx:{flex:1},children:["Your Media Rights Package (",null!==(S=z.length)&&void 0!==S?S:0," Package",z.length>1?"s":"",")"]}),j(z)&&t(v,{onSaveGroup:A})]}),0===z.length?t(s,{}):z.map(function(o){return t(h,{group:o,onEditGroup:H,onDeleteGroup:L,onDeleteMedia:N,accordionProps:{expanded:E===o.id,onChange:function(r,e){return _(!!e&&o.id)}}},o.id)}),t(p,{justifyContent:"end",flexDirection:"row",padding:"6px 12px",sx:{position:"sticky",bottom:0,bgcolor:"background.paper",zIndex:1,boxShadow:"0px 0.5px 5px 0px rgba(0, 0, 0, 0.15)"},children:t(u,r(r(r({},G?{component:"a",href:G}:{}),{},{color:"inherit",size:"small",endIcon:t(m,{}),onClick:function(o){F(null),w&&w(o)},disabled:z.length<1},T),{},{children:"Show Package"}))})]})})})]})},S=function(o){var e=function(e){return t(C,r(r({},o),e))};return e.displayName="MediaGroupWidget",e};export{C as MediaGroupWidget,S as createMediaGroupWidget};
1
+ import{slicedToArray as r,objectSpread2 as o}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as e,jsx as t,Fragment as n}from"react/jsx-runtime";import{useState as i,Fragment as l}from"react";import{Badge as a,Stack as c,Typography as m,Button as u}from"@mui/material";import p from"@mui/icons-material/DriveFileMoveOutlined";import s from"@mui/icons-material/FolderSpecialOutlined";import{EmptyState as d}from"./units.js";import{MenuStyled as h,mediaWidgetClasses as f}from"./styled.js";import{IconButtonDark as g}from"../../components/buttons.js";import{MediaGroupAccordion as v}from"./media-group-accordion.js";import{useMediaRightStore as P,useMediaRightActions as j}from"../hooks.js";import{NewGroupArea as C}from"./new-group-area.js";import{canAddGroup as G,generateGroupId as k}from"../helpers.js";import{ItemTitlePropsContext as S}from"./item-title-props-context.js";var T=function(T){var b,y=T.localStorageKey,M=T.hrefCart,x=T.buttonMoveToCartProps,D=T.onDetailClick,N=P({localStorageKey:y}).groups,O=j({localStorageKey:y}),z=i(null),F=r(z,2),K=F[0],w=F[1],B=i(!1),E=r(B,2),I=E[0],L=E[1],_=function(r){O.addGroup({name:r,id:k()})},A=function(r){O.updateGroup(r.id,r)},H=function(r){O.removeGroup(r)},R=function(r,o){O.removeItem(r,o)};return e(l,{children:[t(g,{onClick:function(r){return w(r.currentTarget)},children:t(a,{badgeContent:N.length||0,color:"error",children:t(s,{})})}),t(h,{disableScrollLock:!0,anchorEl:K,open:Boolean(K),onClose:function(){return w(null)},anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},MenuListProps:{component:"div"},children:t(S.Provider,{value:{itemTitleProps:T.itemTitleProps,itemTitlePropsGetter:T.itemTitlePropsGetter,onClose:function(){return w(null)}},children:e(n,{children:[e(c,{spacing:1,className:f.header,children:[e(m,{variant:"h6",component:"span",className:f.headerText,children:["Your Media Rights Package (",null!==(b=N.length)&&void 0!==b?b:0," Package",N.length>1?"s":"",")"]}),G(N)&&t(C,{onSaveGroup:_})]}),0===N.length?t(d,{}):N.map(function(r){return t(v,{group:r,onEditGroup:A,onDeleteGroup:H,onDeleteMedia:R,accordionProps:{expanded:I===r.id,onChange:function(o,e){return L(!!e&&r.id)}}},r.id)}),t(c,{className:f.footer,children:t(u,o(o(o({},M?{component:"a",href:M}:{}),{},{color:"inherit",size:"small",endIcon:t(p,{}),onClick:function(r){w(null),D&&D(r)},disabled:N.length<1},x),{},{children:"Show Package"}))})]})})})]})},b=function(r){var e=function(e){return t(T,o(o({},r),e))};return e.displayName="MediaGroupWidget",e};export{T as MediaGroupWidget,b 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 { Fragment, useState } from 'react'\r\nimport { Badge, Button, ButtonProps, Stack, Typography } from '@mui/material'\r\nimport DriveFileMoveOutlinedIcon from '@mui/icons-material/DriveFileMoveOutlined'\r\nimport FolderSpecialOutlinedIcon from '@mui/icons-material/FolderSpecialOutlined'\r\nimport { EmptyState } from './units'\r\nimport { MenuStyled } from './styled'\r\nimport { IconButtonDark } from '../../components/buttons'\r\nimport { MediaGroupAccordion } from './media-group-accordion'\r\nimport { useMediaRightStore, useMediaRightActions } from '../hook'\r\nimport { NewGroupArea } from './new-group-area'\r\nimport { canAddGroup, generateGroupId } from '../helpers'\r\nimport { ItemTitlePropsContext } from './item-title-props-context'\r\nimport type { ITitlePropsContextValue } from './item-title-props-context'\r\nimport type { IMediaRightGroup } from '../types'\r\n\r\nexport interface IMediaGroupWidgetProps extends ITitlePropsContextValue {\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\nexport const MediaGroupWidget: React.FC<IMediaGroupWidgetProps> = (props) => {\r\n const { localStorageKey, hrefCart, buttonMoveToCartProps, onDetailClick } = props\r\n const { groups } = useMediaRightStore({ localStorageKey })\r\n const actions = useMediaRightActions({ localStorageKey })\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 = () => {\r\n return (\r\n <>\r\n <Stack\r\n alignItems={'start'}\r\n spacing={1}\r\n sx={{\r\n padding: '12px 16px',\r\n position: 'sticky',\r\n top: 0,\r\n bgcolor: 'background.paper',\r\n zIndex: 2,\r\n boxShadow: '0px 0.5px 5px 0px rgba(0, 0, 0, 0.15)'\r\n }}\r\n >\r\n <Typography variant='h6' component='span' sx={{ flex: 1 }}>\r\n Your Media Rights Package ({groups.length ?? 0} Package{groups.length > 1 ? 's' : ''})\r\n </Typography>\r\n {canAddGroup(groups) && <NewGroupArea onSaveGroup={handleSaveNewGroup} />}\r\n </Stack>\r\n {/* <Divider /> */}\r\n {groups.length === 0 ? (\r\n <EmptyState />\r\n ) : (\r\n groups.map((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 />\r\n ))\r\n )}\r\n {/* <Divider /> */}\r\n <Stack\r\n justifyContent={'end'}\r\n flexDirection={'row'}\r\n padding={'6px 12px'}\r\n sx={{ position: 'sticky', bottom: 0, bgcolor: 'background.paper', zIndex: 1, boxShadow: '0px 0.5px 5px 0px rgba(0, 0, 0, 0.15)' }}\r\n >\r\n <Button\r\n {...(hrefCart ? { component: 'a', href: hrefCart } : {})}\r\n color='inherit'\r\n size='small'\r\n endIcon={<DriveFileMoveOutlinedIcon />}\r\n onClick={(e) => {\r\n setAnchorEl(null)\r\n if (onDetailClick) onDetailClick(e)\r\n }}\r\n disabled={groups.length < 1}\r\n {...buttonMoveToCartProps}\r\n >\r\n Show Package\r\n </Button>\r\n </Stack>\r\n </>\r\n )\r\n }\r\n\r\n return (\r\n <Fragment>\r\n <IconButtonDark onClick={(e) => setAnchorEl(e.currentTarget)}>\r\n <Badge badgeContent={groups.length || 0} color='error'>\r\n <FolderSpecialOutlinedIcon />\r\n </Badge>\r\n </IconButtonDark>\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 >\r\n <ItemTitlePropsContext.Provider\r\n value={{\r\n itemTitleProps: props.itemTitleProps,\r\n itemTitlePropsGetter: props.itemTitlePropsGetter,\r\n onClose: () => setAnchorEl(null)\r\n }}\r\n >\r\n {renderContent()}\r\n </ItemTitlePropsContext.Provider>\r\n </MenuStyled>\r\n </Fragment>\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":["MediaGroupWidget","props","_groups$length","localStorageKey","hrefCart","buttonMoveToCartProps","onDetailClick","groups","useMediaRightStore","actions","useMediaRightActions","_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","_jsxs","Fragment","children","_jsx","IconButtonDark","onClick","e","currentTarget","Badge","badgeContent","length","color","FolderSpecialOutlinedIcon","MenuStyled","disableScrollLock","open","Boolean","onClose","anchorOrigin","vertical","horizontal","transformOrigin","ItemTitlePropsContext","Provider","value","itemTitleProps","itemTitlePropsGetter","_Fragment","Stack","alignItems","spacing","sx","padding","position","top","bgcolor","zIndex","boxShadow","Typography","variant","component","flex","canAddGroup","NewGroupArea","onSaveGroup","EmptyState","map","MediaGroupAccordion","onEditGroup","onDeleteGroup","onDeleteMedia","accordionProps","expanded","onChange","_","isExpanded","justifyContent","flexDirection","bottom","Button","_objectSpread","href","size","endIcon","DriveFileMoveOutlinedIcon","disabled","createMediaGroupWidget","params","_MediaGroupWidget","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/media-right/media-widget/index.tsx"],"sourcesContent":["import { Fragment, useState } from 'react'\r\nimport { Badge, Button, ButtonProps, colors, Stack, Typography } from '@mui/material'\r\nimport DriveFileMoveOutlinedIcon from '@mui/icons-material/DriveFileMoveOutlined'\r\nimport FolderSpecialOutlinedIcon from '@mui/icons-material/FolderSpecialOutlined'\r\nimport { EmptyState } from './units'\r\nimport { mediaWidgetClasses, MenuStyled } from './styled'\r\nimport { IconButtonDark } from '../../components/buttons'\r\nimport { MediaGroupAccordion } from './media-group-accordion'\r\nimport { useMediaRightStore, useMediaRightActions } from '../hooks'\r\nimport { NewGroupArea } from './new-group-area'\r\nimport { canAddGroup, generateGroupId } from '../helpers'\r\nimport { ItemTitlePropsContext } from './item-title-props-context'\r\nimport type { ITitlePropsContextValue } from './item-title-props-context'\r\nimport type { IMediaRightGroup } from '../types'\r\n\r\nexport interface IMediaGroupWidgetProps extends ITitlePropsContextValue {\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\nexport const MediaGroupWidget: React.FC<IMediaGroupWidgetProps> = (props) => {\r\n const { localStorageKey, hrefCart, buttonMoveToCartProps, onDetailClick } = props\r\n const { groups } = useMediaRightStore({ localStorageKey })\r\n const actions = useMediaRightActions({ localStorageKey })\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 = () => {\r\n return (\r\n <>\r\n <Stack spacing={1} className={mediaWidgetClasses.header}>\r\n <Typography variant='h6' component='span' className={mediaWidgetClasses.headerText}>\r\n Your Media Rights Package ({groups.length ?? 0} Package{groups.length > 1 ? 's' : ''})\r\n </Typography>\r\n {canAddGroup(groups) && <NewGroupArea onSaveGroup={handleSaveNewGroup} />}\r\n </Stack>\r\n {/* <Divider /> */}\r\n {groups.length === 0 ? (\r\n <EmptyState />\r\n ) : (\r\n groups.map((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 />\r\n ))\r\n )}\r\n {/* <Divider /> */}\r\n <Stack className={mediaWidgetClasses.footer}>\r\n <Button\r\n {...(hrefCart ? { component: 'a', href: hrefCart } : {})}\r\n color='inherit'\r\n size='small'\r\n endIcon={<DriveFileMoveOutlinedIcon />}\r\n onClick={(e) => {\r\n setAnchorEl(null)\r\n if (onDetailClick) onDetailClick(e)\r\n }}\r\n disabled={groups.length < 1}\r\n {...buttonMoveToCartProps}\r\n >\r\n Show Package\r\n </Button>\r\n </Stack>\r\n </>\r\n )\r\n }\r\n\r\n return (\r\n <Fragment>\r\n <IconButtonDark onClick={(e) => setAnchorEl(e.currentTarget)}>\r\n <Badge badgeContent={groups.length || 0} color='error'>\r\n <FolderSpecialOutlinedIcon />\r\n </Badge>\r\n </IconButtonDark>\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 <ItemTitlePropsContext.Provider\r\n value={{\r\n itemTitleProps: props.itemTitleProps,\r\n itemTitlePropsGetter: props.itemTitlePropsGetter,\r\n onClose: () => setAnchorEl(null)\r\n }}\r\n >\r\n {renderContent()}\r\n </ItemTitlePropsContext.Provider>\r\n </MenuStyled>\r\n </Fragment>\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":["MediaGroupWidget","props","_groups$length","localStorageKey","hrefCart","buttonMoveToCartProps","onDetailClick","groups","useMediaRightStore","actions","useMediaRightActions","_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","_jsxs","Fragment","children","_jsx","IconButtonDark","onClick","e","currentTarget","Badge","badgeContent","length","color","FolderSpecialOutlinedIcon","MenuStyled","disableScrollLock","open","Boolean","onClose","anchorOrigin","vertical","horizontal","transformOrigin","MenuListProps","component","ItemTitlePropsContext","Provider","value","itemTitleProps","itemTitlePropsGetter","_Fragment","Stack","spacing","className","mediaWidgetClasses","header","Typography","variant","headerText","canAddGroup","NewGroupArea","onSaveGroup","EmptyState","map","MediaGroupAccordion","onEditGroup","onDeleteGroup","onDeleteMedia","accordionProps","expanded","onChange","_","isExpanded","footer","Button","_objectSpread","href","size","endIcon","DriveFileMoveOutlinedIcon","disabled","createMediaGroupWidget","params","_MediaGroupWidget","displayName"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{slicedToArray as i,objectSpread2 as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,jsx as o}from"react/jsx-runtime";import{useState as n}from"react";import{Accordion as r,AccordionSummary as m,Box as l,Typography as a,Chip as s,IconButton as d,AccordionDetails as c}from"@mui/material";import p from"@mui/icons-material/Edit";import u from"@mui/icons-material/ExpandMore";import f from"@mui/icons-material/FolderOutlined";import{MediaList as x}from"./media-list.js";import{DeleteButton as h}from"./button.delete.js";import{InlineEditing as g}from"./inline-editing.js";import{mediaRightStoreOptions as j}from"../configs.js";var v=function(v){var S=v.group,W=v.accordionProps,b=v.onEditGroup,z=v.onDeleteGroup,E=v.onDeleteMedia,M=n(!1),y=i(M,2),P=y[0],A=y[1];return t(r,e(e({component:"div"},W),{},{sx:e({my:"0 !important"},null==W?void 0:W.sx),children:[o(m,{component:"div",expandIcon:o(u,{}),sx:{minWidth:0,"& .MuiAccordionSummary-content":{minWidth:0,margin:0}},children:t(l,{sx:{display:"flex",alignItems:"center",flex:1,gap:1,minWidth:0},children:[o(f,{fontSize:"small"}),t(g,{isEdit:P,setShowEdit:A,onSubmit:function(i){b(e(e({},S),{},{name:i})),A(!1)},defaultValue:S.name,textField:{inputProps:{maxLength:j.MAX_NAME_GROUP},sx:{flex:1,minWidth:0,"& .MuiOutlinedInput-root":{height:"32px"}}},sxForm:{flex:1},children:[o(a,{variant:"body2",noWrap:!0,title:S.name,fontWeight:600,sx:{flex:1,minWidth:0},children:S.name}),o(s,{sx:{fontSize:"12px"},label:"".concat(S.items.length," items"),size:"small"}),o(d,{size:"small",onClick:function(i){i.stopPropagation(),A(!0)},color:"success",children:o(p,{fontSize:"small"})}),o(h,{onDelete:function(){return z(S.id)},size:"small"})]},S.id+S.name+P)]})}),o(c,{sx:{p:0},children:o(x,{medias:S.items,onDelete:function(i){return E(S.id,i)}})})]}))};export{v as MediaGroupAccordion};
1
+ import{slicedToArray as i,objectSpread2 as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,jsx as o}from"react/jsx-runtime";import{useState as n}from"react";import{Accordion as r,AccordionSummary as m,Box as l,Typography as a,Chip as s,IconButton as d,AccordionDetails as c}from"@mui/material";import p from"@mui/icons-material/Edit";import u from"@mui/icons-material/ExpandMore";import f from"@mui/icons-material/FolderOutlined";import{MediaList as x}from"./media-list.js";import{DeleteButton as h}from"./button.delete.js";import{InlineEditing as g}from"./inline-editing.js";import{mediaRightStoreOptions as j}from"../configs.js";import{mediaWidgetClasses as v}from"./styled.js";var S=function(S){var b=S.group,z=S.accordionProps,E=S.onEditGroup,M=S.onDeleteGroup,y=S.onDeleteMedia,P=n(!1),A=i(P,2),D=A[0],W=A[1];return t(r,e(e({component:"div"},z),{},{sx:e({my:"0 !important"},null==z?void 0:z.sx),children:[o(m,{component:"div",expandIcon:o(u,{}),sx:{minWidth:0,"& .MuiAccordionSummary-content":{minWidth:0,margin:0}},children:t(l,{className:v.item,children:[o(f,{fontSize:"small"}),t(g,{isEdit:D,setShowEdit:W,onSubmit:function(i){E(e(e({},b),{},{name:i})),W(!1)},defaultValue:b.name,textField:{inputProps:{maxLength:j.MAX_NAME_GROUP},sx:{flex:1,minWidth:0,"& .MuiOutlinedInput-root":{height:"32px"}}},sxForm:{flex:1},children:[o(a,{variant:"body2",noWrap:!0,title:b.name,className:v.itemTitle,children:b.name}),o(s,{sx:{fontSize:"12px"},label:"".concat(b.items.length," items"),size:"small"}),o(d,{size:"small",onClick:function(i){i.stopPropagation(),W(!0)},color:"success",children:o(p,{fontSize:"small"})}),o(h,{onDelete:function(){return M(b.id)},size:"small"})]},b.id+b.name+D)]})}),o(c,{sx:{p:0},children:o(x,{medias:b.items,onDelete:function(i){return y(b.id,i)}})})]}))};export{S as MediaGroupAccordion};
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":["import { useState } from 'react'\r\nimport { Accordion, AccordionSummary, AccordionDetails, Box, Typography, Chip, IconButton, AccordionProps } from '@mui/material'\r\nimport type { FC, MouseEvent } from 'react'\r\nimport type { IMediaRightGroup } from '../types'\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 { MediaList } from './media-list'\r\nimport { DeleteButton } from './button.delete'\r\nimport { InlineEditing } from './inline-editing'\r\nimport { mediaRightStoreOptions } from '../configs'\r\n\r\nexport interface IMediaGroupAccordionProps {\r\n group: IMediaRightGroup\r\n accordionProps?: Partial<AccordionProps>\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> = ({ group, accordionProps, onEditGroup, onDeleteGroup, onDeleteMedia }) => {\r\n const [isEditing, setIsEditing] = useState(false)\r\n\r\n const handleSaveEdit = (value: string) => {\r\n onEditGroup({ ...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 <Accordion component={'div'} {...accordionProps} sx={{ my: '0 !important', ...accordionProps?.sx }}>\r\n <AccordionSummary component={'div'} expandIcon={<ExpandMoreIcon />} sx={{ minWidth: 0, '& .MuiAccordionSummary-content': { minWidth: 0, margin: 0 } }}>\r\n <Box sx={{ display: 'flex', alignItems: 'center', flex: 1, gap: 1, minWidth: 0 }}>\r\n <FolderOutlinedIcon fontSize='small' />\r\n <InlineEditing\r\n key={group.id + group.name + isEditing}\r\n isEdit={isEditing}\r\n setShowEdit={setIsEditing}\r\n onSubmit={handleSaveEdit}\r\n defaultValue={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 <Typography variant='body2' noWrap title={group.name} fontWeight={600} sx={{ flex: 1, minWidth: 0 }}>\r\n {group.name}\r\n </Typography>\r\n <Chip sx={{ fontSize: '12px' }} label={`${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={() => onDeleteGroup(group.id)} size='small' />\r\n </InlineEditing>\r\n </Box>\r\n </AccordionSummary>\r\n <AccordionDetails sx={{ p: 0 }}>\r\n <MediaList medias={group.items} onDelete={(mediaId) => onDeleteMedia(group.id, mediaId)} />\r\n </AccordionDetails>\r\n </Accordion>\r\n )\r\n}\r\n"],"names":["MediaGroupAccordion","_ref","group","accordionProps","onEditGroup","onDeleteGroup","onDeleteMedia","_useState","useState","_useState2","_slicedToArray","isEditing","setIsEditing","_jsxs","Accordion","_objectSpread","component","sx","my","children","_jsx","AccordionSummary","expandIcon","ExpandMoreIcon","minWidth","margin","Box","display","alignItems","flex","gap","FolderOutlinedIcon","fontSize","InlineEditing","isEdit","setShowEdit","onSubmit","value","name","defaultValue","textField","inputProps","maxLength","mediaRightStoreOptions","MAX_NAME_GROUP","height","sxForm","Typography","variant","noWrap","title","fontWeight","Chip","label","concat","items","length","size","IconButton","onClick","e","stopPropagation","color","EditIcon","DeleteButton","onDelete","id","AccordionDetails","p","MediaList","medias","mediaId"],"mappings":"gpBAoBaA,EAAqD,SAAlCC,GAA2G,IAAtEC,EAAKD,EAALC,MAAOC,EAAcF,EAAdE,eAAgBC,EAAWH,EAAXG,YAAaC,EAAaJ,EAAbI,cAAeC,EAAaL,EAAbK,cACtHC,EAAkCC,GAAS,GAAMC,EAAAC,EAAAH,EAAA,GAA1CI,EAASF,EAAA,GAAEG,EAAYH,EAAA,GAY9B,OACEI,EAACC,EAASC,EAAAA,EAAA,CAACC,UAAW,OAAWb,GAAc,GAAA,CAAEc,GAAEF,EAAA,CAAIG,GAAI,gBAAmBf,eAAAA,EAAgBc,IAAIE,SAAA,CAChGC,EAACC,EAAiB,CAAAL,UAAW,MAAOM,WAAYF,EAACG,MAAmBN,GAAI,CAAEO,SAAU,EAAG,iCAAkC,CAAEA,SAAU,EAAGC,OAAQ,IAAKN,SACnJN,EAACa,EAAG,CAACT,GAAI,CAAEU,QAAS,OAAQC,WAAY,SAAUC,KAAM,EAAGC,IAAK,EAAGN,SAAU,GAAGL,SAAA,CAC9EC,EAACW,GAAmBC,SAAS,UAC7BnB,EAACoB,EAAa,CAEZC,OAAQvB,EACRwB,YAAavB,EACbwB,SAnBa,SAACC,GACtBjC,EAAWW,EAAAA,KAAMb,GAAK,CAAA,EAAA,CAAEoC,KAAMD,KAC9BzB,GAAa,EACd,EAiBS2B,aAAcrC,EAAMoC,KACpBE,UAAW,CACTC,WAAY,CAAEC,UAAWC,EAAuBC,gBAChD3B,GAAI,CAAEY,KAAM,EAAGL,SAAU,EAAG,2BAA4B,CAAEqB,OAAQ,UAEpEC,OAAQ,CAAEjB,KAAM,GAAGV,SAAA,CAEnBC,EAAC2B,GAAWC,QAAQ,QAAQC,UAAOC,MAAOhD,EAAMoC,KAAMa,WAAY,IAAKlC,GAAI,CAAEY,KAAM,EAAGL,SAAU,GAC7FL,SAAAjB,EAAMoC,OAETlB,EAACgC,EAAI,CAACnC,GAAI,CAAEe,SAAU,QAAUqB,MAAK,GAAAC,OAAKpD,EAAMqD,MAAMC,OAAc,UAAEC,KAAK,UAC3ErC,EAACsC,EAAW,CAAAD,KAAK,QAAQE,QA1BX,SAACC,GACvBA,EAAEC,kBACFjD,GAAa,EACd,EAuB4DkD,MAAM,UAAS3C,SAChEC,EAAC2C,EAAQ,CAAC/B,SAAS,YAErBZ,EAAC4C,EAAa,CAAAC,SAAU,WAAF,OAAQ5D,EAAcH,EAAMgE,GAAG,EAAET,KAAK,YAlBvDvD,EAAMgE,GAAKhE,EAAMoC,KAAO3B,QAsBnCS,EAAC+C,EAAgB,CAAClD,GAAI,CAAEmD,EAAG,YACzBhD,EAACiD,GAAUC,OAAQpE,EAAMqD,MAAOU,SAAU,SAACM,GAAO,OAAKjE,EAAcJ,EAAMgE,GAAIK,EAAQ,SAI/F"}
1
+ {"version":3,"file":"media-group-accordion.js","sources":["../../../src/media-right/media-widget/media-group-accordion.tsx"],"sourcesContent":["import { useState } from 'react'\r\nimport { Accordion, AccordionSummary, AccordionDetails, Box, Typography, Chip, IconButton, AccordionProps } from '@mui/material'\r\nimport type { FC, MouseEvent } from 'react'\r\nimport type { IMediaRightGroup } from '../types'\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 { MediaList } from './media-list'\r\nimport { DeleteButton } from './button.delete'\r\nimport { InlineEditing } from './inline-editing'\r\nimport { mediaRightStoreOptions } from '../configs'\r\nimport { mediaWidgetClasses } from './styled'\r\n\r\nexport interface IMediaGroupAccordionProps {\r\n group: IMediaRightGroup\r\n accordionProps?: Partial<AccordionProps>\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> = ({ group, accordionProps, onEditGroup, onDeleteGroup, onDeleteMedia }) => {\r\n const [isEditing, setIsEditing] = useState(false)\r\n\r\n const handleSaveEdit = (value: string) => {\r\n onEditGroup({ ...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 <Accordion component='div' {...accordionProps} sx={{ my: '0 !important', ...accordionProps?.sx }}>\r\n <AccordionSummary\r\n component='div'\r\n expandIcon={<ExpandMoreIcon />}\r\n sx={{ minWidth: 0, '& .MuiAccordionSummary-content': { minWidth: 0, margin: 0 } }}\r\n >\r\n <Box className={mediaWidgetClasses.item}>\r\n <FolderOutlinedIcon fontSize='small' />\r\n <InlineEditing\r\n key={group.id + group.name + isEditing}\r\n isEdit={isEditing}\r\n setShowEdit={setIsEditing}\r\n onSubmit={handleSaveEdit}\r\n defaultValue={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 <Typography variant='body2' noWrap title={group.name} className={mediaWidgetClasses.itemTitle}>\r\n {group.name}\r\n </Typography>\r\n <Chip sx={{ fontSize: '12px' }} label={`${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={() => onDeleteGroup(group.id)} size='small' />\r\n </InlineEditing>\r\n </Box>\r\n </AccordionSummary>\r\n <AccordionDetails sx={{ p: 0 }}>\r\n <MediaList medias={group.items} onDelete={(mediaId) => onDeleteMedia(group.id, mediaId)} />\r\n </AccordionDetails>\r\n </Accordion>\r\n )\r\n}\r\n"],"names":["MediaGroupAccordion","_ref","group","accordionProps","onEditGroup","onDeleteGroup","onDeleteMedia","_useState","useState","_useState2","_slicedToArray","isEditing","setIsEditing","_jsxs","Accordion","_objectSpread","component","sx","my","_jsx","AccordionSummary","expandIcon","ExpandMoreIcon","minWidth","margin","children","Box","className","mediaWidgetClasses","item","FolderOutlinedIcon","fontSize","InlineEditing","isEdit","setShowEdit","onSubmit","value","name","defaultValue","textField","inputProps","maxLength","mediaRightStoreOptions","MAX_NAME_GROUP","flex","height","sxForm","Typography","variant","noWrap","title","itemTitle","Chip","label","concat","items","length","size","IconButton","onClick","e","stopPropagation","color","EditIcon","DeleteButton","onDelete","id","AccordionDetails","p","MediaList","medias","mediaId"],"mappings":"isBAqBaA,EAAqD,SAAlCC,GAA2G,IAAtEC,EAAKD,EAALC,MAAOC,EAAcF,EAAdE,eAAgBC,EAAWH,EAAXG,YAAaC,EAAaJ,EAAbI,cAAeC,EAAaL,EAAbK,cACtHC,EAAkCC,GAAS,GAAMC,EAAAC,EAAAH,EAAA,GAA1CI,EAASF,EAAA,GAAEG,EAAYH,EAAA,GAY9B,OACEI,EAACC,EAASC,EAAAA,EAAA,CAACC,UAAU,OAAUb,GAAc,GAAA,CAAEc,GAAEF,EAAA,CAAIG,GAAI,gBAAmBf,eAAAA,EAAgBc,cAC1FE,EAACC,GACCJ,UAAU,MACVK,WAAYF,EAACG,MACbL,GAAI,CAAEM,SAAU,EAAG,iCAAkC,CAAEA,SAAU,EAAGC,OAAQ,IAAKC,SAEjFZ,EAACa,EAAG,CAACC,UAAWC,EAAmBC,KAAIJ,SAAA,CACrCN,EAACW,EAAkB,CAACC,SAAS,UAC7BlB,EAACmB,GAECC,OAAQtB,EACRuB,YAAatB,EACbuB,SAvBa,SAACC,GACtBhC,EAAWW,EAAAA,KAAMb,GAAK,CAAA,EAAA,CAAEmC,KAAMD,KAC9BxB,GAAa,EACd,EAqBS0B,aAAcpC,EAAMmC,KACpBE,UAAW,CACTC,WAAY,CAAEC,UAAWC,EAAuBC,gBAChD1B,GAAI,CAAE2B,KAAM,EAAGrB,SAAU,EAAG,2BAA4B,CAAEsB,OAAQ,UAEpEC,OAAQ,CAAEF,KAAM,GAAGnB,SAAA,CAEnBN,EAAC4B,GAAWC,QAAQ,QAAQC,QAAO,EAAAC,MAAOhD,EAAMmC,KAAMV,UAAWC,EAAmBuB,UACjF1B,SAAAvB,EAAMmC,OAETlB,EAACiC,EAAK,CAAAnC,GAAI,CAAEc,SAAU,QAAUsB,MAAK,GAAAC,OAAKpD,EAAMqD,MAAMC,OAAc,UAAEC,KAAK,UAC3EtC,EAACuC,EAAU,CAACD,KAAK,QAAQE,QA9BX,SAACC,GACvBA,EAAEC,kBACFjD,GAAa,EACd,EA2B4DkD,MAAM,UAASrC,SAChEN,EAAC4C,EAAQ,CAAChC,SAAS,YAErBZ,EAAC6C,EAAa,CAAAC,SAAU,WAAF,OAAQ5D,EAAcH,EAAMgE,GAAG,EAAET,KAAK,YAlBvDvD,EAAMgE,GAAKhE,EAAMmC,KAAO1B,QAsBnCQ,EAACgD,EAAgB,CAAClD,GAAI,CAAEmD,EAAG,GAAG3C,SAC5BN,EAACkD,GAAUC,OAAQpE,EAAMqD,MAAOU,SAAU,SAACM,GAAO,OAAKjE,EAAcJ,EAAMgE,GAAIK,EAAQ,SAI/F"}
@@ -1,2 +1,2 @@
1
- import{objectSpread2 as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as t,jsxs as r}from"react/jsx-runtime";import{ImageWithFallback as o}from"dinocollab-core/components";import{useItemTitleProps as i}from"./item-title-props-context.js";import{Typography as l,List as n,ListItem as a}from"@mui/material";import{DeleteButton as c}from"./button.delete.js";var m=function(m){var u=m.medias,d=m.onDelete,p=i()||{},s=p.itemTitleProps,f=p.itemTitlePropsGetter,x=p.onClose;return 0===u.length?t(l,{variant:"body2",color:"text.secondary",sx:{textAlign:"center",py:2},children:"No media in this package yet"}):t(n,{children:u.map(function(i){return r(a,{sx:{gap:1,alignItems:"center"},children:[t(o,{src:null==i?void 0:i.PictureUrl,title:null==i?void 0:i.PictureUrl,fallbackSrc:"images/default-video.webp",alt:"product-picture",style:{width:"50px",height:"50px",borderRadius:3,objectFit:"cover",flex:"0 0 auto"}}),t(l,e(e({noWrap:!0,variant:"subtitle1",fontWeight:500,sx:{flexGrow:1},title:i.ProductName},f?f(i):null!=s?s:{}),{},{onClick:x,children:i.ProductName})),t(c,{onDelete:function(){return d(i.ProductId)},size:"small"})]},i.MediaId)})})};export{m as MediaList};
1
+ import{objectSpread2 as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as t,jsxs as r}from"react/jsx-runtime";import{ImageWithFallback as i}from"dinocollab-core/components";import{useItemTitleProps as o}from"./item-title-props-context.js";import{Typography as l,List as a,ListItem as n}from"@mui/material";import{DeleteButton as c}from"./button.delete.js";import{mediaWidgetClasses as m}from"./styled.js";var s=function(s){var d=s.medias,p=s.onDelete,u=o()||{},f=u.itemTitleProps,h=u.itemTitlePropsGetter,x=u.onClose;return 0===d.length?t(l,{variant:"body2",color:"text.secondary",sx:{textAlign:"center",py:2},children:"No media in this package yet"}):t(a,{children:d.map(function(o){return r(n,{sx:{gap:1,alignItems:"center"},className:m.itemChild,children:[t(i,{src:null==o?void 0:o.PictureUrl,title:null==o?void 0:o.PictureUrl,fallbackSrc:"images/default-video.webp",alt:"product-picture",style:{width:"50px",height:"50px",borderRadius:3,objectFit:"cover",flex:"0 0 auto"}}),t(l,e(e({noWrap:!0,variant:"subtitle1",fontWeight:500,sx:{flexGrow:1},title:o.ProductName},h?h(o):null!=f?f:{}),{},{onClick:x,className:m.itemChildTitle,children:o.ProductName})),t(c,{onDelete:function(){return p(o.ProductId)},size:"small"})]},o.MediaId)})})};export{s as MediaList};
2
2
  //# sourceMappingURL=media-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"media-list.js","sources":["../../../src/media-right/media-widget/media-list.tsx"],"sourcesContent":["import { ImageWithFallback } from 'dinocollab-core/components'\r\nimport { useItemTitleProps } from './item-title-props-context'\r\nimport { List, ListItem, Typography } from '@mui/material'\r\nimport type { FC } from 'react'\r\nimport type { IMediaRightItem } from '../types'\r\nimport { DeleteButton } from './button.delete'\r\n\r\nexport interface IMediaListProps {\r\n medias: IMediaRightItem[]\r\n onDelete: (mediaId: string) => void\r\n}\r\n\r\nexport const MediaList: FC<IMediaListProps> = ({ medias, onDelete }) => {\r\n const { itemTitleProps, itemTitlePropsGetter, onClose } = useItemTitleProps() || {}\r\n\r\n if (medias.length === 0) {\r\n return (\r\n <Typography variant='body2' color='text.secondary' sx={{ textAlign: 'center', py: 2 }}>\r\n No media in this package yet\r\n </Typography>\r\n )\r\n }\r\n\r\n return (\r\n <List>\r\n {medias.map((media) => (\r\n <ListItem key={media.MediaId} sx={{ gap: 1, alignItems: 'center' }}>\r\n <ImageWithFallback\r\n src={media?.PictureUrl}\r\n title={media?.PictureUrl}\r\n fallbackSrc='images/default-video.webp'\r\n alt='product-picture'\r\n style={{\r\n width: '50px',\r\n height: '50px',\r\n borderRadius: 3,\r\n objectFit: 'cover',\r\n flex: '0 0 auto'\r\n }}\r\n />\r\n <Typography\r\n noWrap\r\n variant='subtitle1'\r\n fontWeight={500}\r\n sx={{ flexGrow: 1 }}\r\n title={media.ProductName}\r\n {...(itemTitlePropsGetter ? itemTitlePropsGetter(media) : itemTitleProps ?? {})}\r\n onClick={onClose}\r\n >\r\n {media.ProductName}\r\n </Typography>\r\n <DeleteButton onDelete={() => onDelete(media.ProductId)} size='small' />\r\n </ListItem>\r\n ))}\r\n </List>\r\n )\r\n}\r\n"],"names":["MediaList","_ref","medias","onDelete","_ref2","useItemTitleProps","itemTitleProps","itemTitlePropsGetter","onClose","length","_jsx","Typography","variant","color","sx","textAlign","py","children","List","map","media","_jsxs","ListItem","gap","alignItems","ImageWithFallback","src","PictureUrl","title","fallbackSrc","alt","style","width","height","borderRadius","objectFit","flex","_objectSpread","noWrap","fontWeight","flexGrow","ProductName","onClick","DeleteButton","ProductId","size","MediaId"],"mappings":"wXAYaA,EAAiC,SAAxBC,GAAiD,IAAtBC,EAAMD,EAANC,OAAQC,EAAQF,EAARE,SACvDC,EAA0DC,KAAuB,CAAE,EAA3EC,EAAcF,EAAdE,eAAgBC,EAAoBH,EAApBG,qBAAsBC,EAAOJ,EAAPI,QAE9C,OAAsB,IAAlBN,EAAOO,OAEPC,EAACC,EAAW,CAAAC,QAAQ,QAAQC,MAAM,iBAAiBC,GAAI,CAAEC,UAAW,SAAUC,GAAI,GAErEC,SAAA,iCAKfP,EAACQ,EACE,CAAAD,SAAAf,EAAOiB,IAAI,SAACC,GAAK,OAChBC,EAACC,EAAQ,CAAqBR,GAAI,CAAES,IAAK,EAAGC,WAAY,UAAUP,SAAA,CAChEP,EAACe,EACC,CAAAC,IAAKN,aAAAA,EAAAA,EAAOO,WACZC,MAAOR,aAAAA,EAAAA,EAAOO,WACdE,YAAY,4BACZC,IAAI,kBACJC,MAAO,CACLC,MAAO,OACPC,OAAQ,OACRC,aAAc,EACdC,UAAW,QACXC,KAAM,cAGV1B,EAACC,EAAU0B,EAAAA,EAAA,CACTC,UACA1B,QAAQ,YACR2B,WAAY,IACZzB,GAAI,CAAE0B,SAAU,GAChBZ,MAAOR,EAAMqB,aACRlC,EAAuBA,EAAqBa,GAASd,QAAAA,EAAkB,CAAE,GAAA,CAAA,EAAA,CAC9EoC,QAASlC,WAERY,EAAMqB,eAET/B,EAACiC,GAAaxC,SAAU,WAAF,OAAQA,EAASiB,EAAMwB,UAAU,EAAEC,KAAK,YAzBjDzB,EAAM0B,QA2BtB,IAGP"}
1
+ {"version":3,"file":"media-list.js","sources":["../../../src/media-right/media-widget/media-list.tsx"],"sourcesContent":["import { ImageWithFallback } from 'dinocollab-core/components'\r\nimport { useItemTitleProps } from './item-title-props-context'\r\nimport { List, ListItem, Typography } from '@mui/material'\r\nimport type { FC } from 'react'\r\nimport type { IMediaRightItem } from '../types'\r\nimport { DeleteButton } from './button.delete'\r\nimport { mediaWidgetClasses } from './styled'\r\n\r\nexport interface IMediaListProps {\r\n medias: IMediaRightItem[]\r\n onDelete: (mediaId: string) => void\r\n}\r\n\r\nexport const MediaList: FC<IMediaListProps> = ({ medias, onDelete }) => {\r\n const { itemTitleProps, itemTitlePropsGetter, onClose } = useItemTitleProps() || {}\r\n\r\n if (medias.length === 0) {\r\n return (\r\n <Typography variant='body2' color='text.secondary' sx={{ textAlign: 'center', py: 2 }}>\r\n No media in this package yet\r\n </Typography>\r\n )\r\n }\r\n\r\n return (\r\n <List>\r\n {medias.map((media) => (\r\n <ListItem key={media.MediaId} sx={{ gap: 1, alignItems: 'center' }} className={mediaWidgetClasses.itemChild}>\r\n <ImageWithFallback\r\n src={media?.PictureUrl}\r\n title={media?.PictureUrl}\r\n fallbackSrc='images/default-video.webp'\r\n alt='product-picture'\r\n style={{\r\n width: '50px',\r\n height: '50px',\r\n borderRadius: 3,\r\n objectFit: 'cover',\r\n flex: '0 0 auto'\r\n }}\r\n />\r\n <Typography\r\n noWrap\r\n variant='subtitle1'\r\n fontWeight={500}\r\n sx={{ flexGrow: 1 }}\r\n title={media.ProductName}\r\n {...(itemTitlePropsGetter ? itemTitlePropsGetter(media) : itemTitleProps ?? {})}\r\n onClick={onClose}\r\n className={mediaWidgetClasses.itemChildTitle}\r\n >\r\n {media.ProductName}\r\n </Typography>\r\n <DeleteButton onDelete={() => onDelete(media.ProductId)} size='small' />\r\n </ListItem>\r\n ))}\r\n </List>\r\n )\r\n}\r\n"],"names":["MediaList","_ref","medias","onDelete","_ref2","useItemTitleProps","itemTitleProps","itemTitlePropsGetter","onClose","length","_jsx","Typography","variant","color","sx","textAlign","py","children","List","map","media","_jsxs","ListItem","gap","alignItems","className","mediaWidgetClasses","itemChild","ImageWithFallback","src","PictureUrl","title","fallbackSrc","alt","style","width","height","borderRadius","objectFit","flex","_objectSpread","noWrap","fontWeight","flexGrow","ProductName","onClick","itemChildTitle","DeleteButton","ProductId","size","MediaId"],"mappings":"yaAaaA,EAAiC,SAAxBC,GAAiD,IAAtBC,EAAMD,EAANC,OAAQC,EAAQF,EAARE,SACvDC,EAA0DC,KAAuB,CAAE,EAA3EC,EAAcF,EAAdE,eAAgBC,EAAoBH,EAApBG,qBAAsBC,EAAOJ,EAAPI,QAE9C,OAAsB,IAAlBN,EAAOO,OAEPC,EAACC,EAAW,CAAAC,QAAQ,QAAQC,MAAM,iBAAiBC,GAAI,CAAEC,UAAW,SAAUC,GAAI,GAErEC,SAAA,iCAKfP,EAACQ,EACE,CAAAD,SAAAf,EAAOiB,IAAI,SAACC,GAAK,OAChBC,EAACC,EAAQ,CAAqBR,GAAI,CAAES,IAAK,EAAGC,WAAY,UAAYC,UAAWC,EAAmBC,UAASV,SAAA,CACzGP,EAACkB,EACC,CAAAC,IAAKT,aAAAA,EAAAA,EAAOU,WACZC,MAAOX,aAAAA,EAAAA,EAAOU,WACdE,YAAY,4BACZC,IAAI,kBACJC,MAAO,CACLC,MAAO,OACPC,OAAQ,OACRC,aAAc,EACdC,UAAW,QACXC,KAAM,cAGV7B,EAACC,EAAU6B,EAAAA,EAAA,CACTC,QAAM,EACN7B,QAAQ,YACR8B,WAAY,IACZ5B,GAAI,CAAE6B,SAAU,GAChBZ,MAAOX,EAAMwB,aACRrC,EAAuBA,EAAqBa,GAASd,QAAAA,EAAkB,CAAE,GAAA,CAAA,EAAA,CAC9EuC,QAASrC,EACTiB,UAAWC,EAAmBoB,eAAc7B,SAE3CG,EAAMwB,eAETlC,EAACqC,EAAa,CAAA5C,SAAU,WAAF,OAAQA,EAASiB,EAAM4B,UAAU,EAAEC,KAAK,YA1BjD7B,EAAM8B,QA4BtB,IAGP"}
@@ -1,2 +1,2 @@
1
- import{styled as r,Menu as o}from"@mui/material";var a=r(o)(function(r){var o=r.theme;return{"--color-bg":"#ffffff","--color-text":o.palette.common.black,marginTop:"45px",">.MuiPaper-root":{position:"relative",overflow:"visible",display:"flex",flexDirection:"column",backgroundColor:"var(--color-bg, #000000)",borderRadius:o.shape.borderRadius,minWidth:"280px",width:"90vw",maxWidth:"450px",boxShadow:"0 1px 1px rgba(0, 0, 0, 0.05), 0 2px 2px rgba(0, 0, 0, 0.2), 0 4px 4px rgba(0, 0, 0, 0.15), 0 8px 8px rgba(0, 0, 0, 0.05)",animation:"fadeInDown 0.3s ease-out",marginTop:"8px",color:"var(--color-text, #000000)","&::before":{content:'""',position:"absolute",backgroundColor:"var(--color-bg, #ffffff)",width:"10px",height:"10px",top:"-4px",right:o.spacing(1),transform:"translateX(-50%) rotate(45deg)",zIndex:0},"@keyframes fadeInDown":{"0%":{opacity:0,transform:"translateY(-10px)"},"100%":{opacity:1,transform:"translateY(0)"}}},".MuiBackdrop-root":{backgroundColor:"transparent"},".MuiList-root":{padding:0,height:"100%",overflowY:"auto","&::-webkit-scrollbar":{width:"6px",background:"transparent"},"&::-webkit-scrollbar-thumb":{background:"#e0e0e0",borderRadius:"8px"},"&::-webkit-scrollbar-thumb:hover":{background:"#bdbdbd"},"&":{scrollbarWidth:"thin",scrollbarColor:"#e0e0e0 transparent"}}}});export{a as MenuStyled};
1
+ import{defineProperty as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import{styled as t,Menu as o}from"@mui/material";var r={header:"DinoMediaWidget-header",headerText:"DinoMediaWidget-headerText",footer:"DinoMediaWidget-footer",item:"DinoMediaWidget-item",itemTitle:"DinoMediaWidget-itemTitle",itemChild:"DinoMediaWidget-itemChild",itemChildTitle:"DinoMediaWidget-itemChildTitle"},i=t(o)(function(t){var o=t.theme;return e(e(e(e(e(e({"--color-bg":o.palette.background.paper,"--color-text":o.palette.text.primary,marginTop:"45px",">.MuiPaper-root":{position:"relative",overflow:"visible",display:"flex",flexDirection:"column",backgroundColor:"var(--color-bg, #000000)",borderRadius:o.shape.borderRadius,minWidth:"280px",width:"90vw",maxWidth:"450px",boxShadow:"0 1px 1px rgba(0, 0, 0, 0.05), 0 2px 2px rgba(0, 0, 0, 0.2), 0 4px 4px rgba(0, 0, 0, 0.15), 0 8px 8px rgba(0, 0, 0, 0.05)",animation:"fadeInDown 0.3s ease-out",marginTop:"8px","&::before":{content:'""',position:"absolute",backgroundColor:o.palette.divider,width:"10px",height:"10px",top:"-4px",right:o.spacing(1),transform:"translateX(-50%) rotate(45deg)",zIndex:0},"@keyframes fadeInDown":{"0%":{opacity:0,transform:"translateY(-10px)"},"100%":{opacity:1,transform:"translateY(0)"}}},".MuiBackdrop-root":{backgroundColor:"transparent"},".MuiList-root":{padding:0,height:"100%",overflowY:"auto","&::-webkit-scrollbar":{width:"6px",background:"transparent"},"&::-webkit-scrollbar-thumb":{background:"#e0e0e0",borderRadius:"8px"},"&::-webkit-scrollbar-thumb:hover":{background:"#bdbdbd"},"&":{scrollbarWidth:"thin",scrollbarColor:"#e0e0e0 transparent"}}},".".concat(r.header),{padding:"12px 16px",position:"sticky",top:0,backgroundColor:o.palette.background.paper,zIndex:2,boxShadow:"0px 0.5px 5px 0px rgba(0, 0, 0, 0.15)",alignItems:"flex-start"}),".".concat(r.headerText),{flex:1,color:o.palette.text.primary}),".".concat(r.footer),{position:"sticky",bottom:0,backgroundColor:o.palette.background.paper,zIndex:1,boxShadow:"0px 0.5px 5px 0px rgba(0, 0, 0, 0.15)",justifyContent:"end",flexDirection:"row",padding:"6px 12px"}),".".concat(r.item),{display:"flex",alignItems:"center",flex:1,gap:1,minWidth:0}),".".concat(r.itemTitle),{fontWeight:600,flex:1,minWidth:0,color:o.palette.text.primary,marginLeft:o.spacing(1)}),".".concat(r.itemChildTitle),{color:o.palette.text.primary})});export{i as MenuStyled,r as mediaWidgetClasses};
2
2
  //# sourceMappingURL=styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styled.js","sources":["../../../src/media-right/media-widget/styled.tsx"],"sourcesContent":["import { Menu, styled } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\nimport type { MenuProps } from '@mui/material'\r\n\r\nexport const MenuStyled: ComponentType<MenuProps> = styled(Menu)(({ theme }) => ({\r\n '--color-bg': '#ffffff',\r\n '--color-text': theme.palette.common.black,\r\n\r\n marginTop: '45px',\r\n '>.MuiPaper-root': {\r\n position: 'relative',\r\n overflow: 'visible',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n backgroundColor: 'var(--color-bg, #000000)',\r\n borderRadius: theme.shape.borderRadius,\r\n minWidth: '280px',\r\n width: '90vw',\r\n maxWidth: '450px',\r\n boxShadow: `0 1px 1px rgba(0, 0, 0, 0.05), 0 2px 2px rgba(0, 0, 0, 0.2), 0 4px 4px rgba(0, 0, 0, 0.15), 0 8px 8px rgba(0, 0, 0, 0.05)`,\r\n animation: 'fadeInDown 0.3s ease-out',\r\n marginTop: '8px',\r\n color: 'var(--color-text, #000000)',\r\n\r\n '&::before': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n backgroundColor: 'var(--color-bg, #ffffff)',\r\n width: '10px',\r\n height: '10px',\r\n top: '-4px',\r\n right: theme.spacing(1),\r\n transform: 'translateX(-50%) rotate(45deg)',\r\n zIndex: 0\r\n },\r\n\r\n '@keyframes fadeInDown': {\r\n '0%': { opacity: 0, transform: 'translateY(-10px)' },\r\n '100%': { opacity: 1, transform: 'translateY(0)' }\r\n }\r\n },\r\n '.MuiBackdrop-root': { backgroundColor: 'transparent' },\r\n '.MuiList-root': {\r\n padding: 0,\r\n height: '100%',\r\n overflowY: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '6px',\r\n background: 'transparent'\r\n },\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#e0e0e0',\r\n borderRadius: '8px'\r\n },\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#bdbdbd'\r\n },\r\n '&': {\r\n scrollbarWidth: 'thin',\r\n scrollbarColor: '#e0e0e0 transparent'\r\n }\r\n }\r\n}))\r\n"],"names":["MenuStyled","styled","Menu","_ref","theme","palette","common","black","marginTop","position","overflow","display","flexDirection","backgroundColor","borderRadius","shape","minWidth","width","maxWidth","boxShadow","animation","color","content","height","top","right","spacing","transform","zIndex","opacity","padding","overflowY","background","scrollbarWidth","scrollbarColor"],"mappings":"iDAIO,IAAMA,EAAuCC,EAAOC,EAAPD,CAAa,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAK,MAAQ,CAC/E,aAAc,UACd,eAAgBA,EAAMC,QAAQC,OAAOC,MAErCC,UAAW,OACX,kBAAmB,CACjBC,SAAU,WACVC,SAAU,UACVC,QAAS,OACTC,cAAe,SACfC,gBAAiB,2BACjBC,aAAcV,EAAMW,MAAMD,aAC1BE,SAAU,QACVC,MAAO,OACPC,SAAU,QACVC,UAAsI,4HACtIC,UAAW,2BACXZ,UAAW,MACXa,MAAO,6BAEP,YAAa,CACXC,QAAS,KACTb,SAAU,WACVI,gBAAiB,2BACjBI,MAAO,OACPM,OAAQ,OACRC,IAAK,OACLC,MAAOrB,EAAMsB,QAAQ,GACrBC,UAAW,iCACXC,OAAQ,GAGV,wBAAyB,CACvB,KAAM,CAAEC,QAAS,EAAGF,UAAW,qBAC/B,OAAQ,CAAEE,QAAS,EAAGF,UAAW,mBAGrC,oBAAqB,CAAEd,gBAAiB,eACxC,gBAAiB,CACfiB,QAAS,EACTP,OAAQ,OACRQ,UAAW,OACX,uBAAwB,CACtBd,MAAO,MACPe,WAAY,eAEd,6BAA8B,CAC5BA,WAAY,UACZlB,aAAc,OAEhB,mCAAoC,CAClCkB,WAAY,WAEd,IAAK,CACHC,eAAgB,OAChBC,eAAgB,wBAGrB"}
1
+ {"version":3,"file":"styled.js","sources":["../../../src/media-right/media-widget/styled.tsx"],"sourcesContent":["import { Menu, styled } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\nimport type { MenuProps } from '@mui/material'\r\n\r\nexport const mediaWidgetClasses = {\r\n root: 'DinoMediaWidget-root',\r\n header: 'DinoMediaWidget-header',\r\n headerText: 'DinoMediaWidget-headerText',\r\n footer: 'DinoMediaWidget-footer',\r\n item: 'DinoMediaWidget-item',\r\n itemTitle: 'DinoMediaWidget-itemTitle',\r\n itemChild: 'DinoMediaWidget-itemChild',\r\n itemChildTitle: 'DinoMediaWidget-itemChildTitle'\r\n}\r\n\r\nexport const MenuStyled: ComponentType<MenuProps> = styled(Menu)(({ theme }) => ({\r\n '--color-bg': theme.palette.background.paper,\r\n '--color-text': theme.palette.text.primary,\r\n\r\n marginTop: '45px',\r\n '>.MuiPaper-root': {\r\n position: 'relative',\r\n overflow: 'visible',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n backgroundColor: 'var(--color-bg, #000000)',\r\n borderRadius: theme.shape.borderRadius,\r\n minWidth: '280px',\r\n width: '90vw',\r\n maxWidth: '450px',\r\n boxShadow: `0 1px 1px rgba(0, 0, 0, 0.05), 0 2px 2px rgba(0, 0, 0, 0.2), 0 4px 4px rgba(0, 0, 0, 0.15), 0 8px 8px rgba(0, 0, 0, 0.05)`,\r\n animation: 'fadeInDown 0.3s ease-out',\r\n marginTop: '8px',\r\n // color: 'var(--color-text, #000000)',\r\n\r\n '&::before': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n backgroundColor: theme.palette.divider,\r\n width: '10px',\r\n height: '10px',\r\n top: '-4px',\r\n right: theme.spacing(1),\r\n transform: 'translateX(-50%) rotate(45deg)',\r\n zIndex: 0\r\n },\r\n\r\n '@keyframes fadeInDown': {\r\n '0%': { opacity: 0, transform: 'translateY(-10px)' },\r\n '100%': { opacity: 1, transform: 'translateY(0)' }\r\n }\r\n },\r\n '.MuiBackdrop-root': { backgroundColor: 'transparent' },\r\n '.MuiList-root': {\r\n padding: 0,\r\n height: '100%',\r\n overflowY: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '6px',\r\n background: 'transparent'\r\n },\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#e0e0e0',\r\n borderRadius: '8px'\r\n },\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#bdbdbd'\r\n },\r\n '&': {\r\n scrollbarWidth: 'thin',\r\n scrollbarColor: '#e0e0e0 transparent'\r\n }\r\n },\r\n [`.${mediaWidgetClasses.header}`]: {\r\n padding: '12px 16px',\r\n position: 'sticky',\r\n top: 0,\r\n backgroundColor: theme.palette.background.paper,\r\n zIndex: 2,\r\n boxShadow: '0px 0.5px 5px 0px rgba(0, 0, 0, 0.15)',\r\n alignItems: 'flex-start'\r\n },\r\n [`.${mediaWidgetClasses.headerText}`]: {\r\n flex: 1,\r\n color: theme.palette.text.primary\r\n },\r\n [`.${mediaWidgetClasses.footer}`]: {\r\n position: 'sticky',\r\n bottom: 0,\r\n backgroundColor: theme.palette.background.paper,\r\n zIndex: 1,\r\n boxShadow: '0px 0.5px 5px 0px rgba(0, 0, 0, 0.15)',\r\n justifyContent: 'end',\r\n flexDirection: 'row',\r\n padding: '6px 12px'\r\n },\r\n [`.${mediaWidgetClasses.item}`]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flex: 1,\r\n gap: 1,\r\n minWidth: 0\r\n },\r\n [`.${mediaWidgetClasses.itemTitle}`]: {\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 [`.${mediaWidgetClasses.itemChildTitle}`]: {\r\n color: theme.palette.text.primary\r\n }\r\n}))\r\n"],"names":["mediaWidgetClasses","header","headerText","footer","item","itemTitle","itemChild","itemChildTitle","MenuStyled","styled","Menu","_ref","theme","_defineProperty","palette","background","paper","text","primary","marginTop","position","overflow","display","flexDirection","backgroundColor","borderRadius","shape","minWidth","width","maxWidth","boxShadow","animation","content","divider","height","top","right","spacing","transform","zIndex","opacity","padding","overflowY","scrollbarWidth","scrollbarColor","concat","alignItems","flex","color","bottom","justifyContent","gap","fontWeight","marginLeft"],"mappings":"8HAIO,IAAMA,EAAqB,CAEhCC,OAAQ,yBACRC,WAAY,6BACZC,OAAQ,yBACRC,KAAM,uBACNC,UAAW,4BACXC,UAAW,4BACXC,eAAgB,kCAGLC,EAAuCC,EAAOC,EAAPD,CAAa,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAK,OAAAC,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAA,CACvE,aAAcD,EAAME,QAAQC,WAAWC,MACvC,eAAgBJ,EAAME,QAAQG,KAAKC,QAEnCC,UAAW,OACX,kBAAmB,CACjBC,SAAU,WACVC,SAAU,UACVC,QAAS,OACTC,cAAe,SACfC,gBAAiB,2BACjBC,aAAcb,EAAMc,MAAMD,aAC1BE,SAAU,QACVC,MAAO,OACPC,SAAU,QACVC,UAAsI,4HACtIC,UAAW,2BACXZ,UAAW,MAGX,YAAa,CACXa,QAAS,KACTZ,SAAU,WACVI,gBAAiBZ,EAAME,QAAQmB,QAC/BL,MAAO,OACPM,OAAQ,OACRC,IAAK,OACLC,MAAOxB,EAAMyB,QAAQ,GACrBC,UAAW,iCACXC,OAAQ,GAGV,wBAAyB,CACvB,KAAM,CAAEC,QAAS,EAAGF,UAAW,qBAC/B,OAAQ,CAAEE,QAAS,EAAGF,UAAW,mBAGrC,oBAAqB,CAAEd,gBAAiB,eACxC,gBAAiB,CACfiB,QAAS,EACTP,OAAQ,OACRQ,UAAW,OACX,uBAAwB,CACtBd,MAAO,MACPb,WAAY,eAEd,6BAA8B,CAC5BA,WAAY,UACZU,aAAc,OAEhB,mCAAoC,CAClCV,WAAY,WAEd,IAAK,CACH4B,eAAgB,OAChBC,eAAgB,yBAEnB,IAAAC,OACI7C,EAAmBC,QAAW,CACjCwC,QAAS,YACTrB,SAAU,SACVe,IAAK,EACLX,gBAAiBZ,EAAME,QAAQC,WAAWC,MAC1CuB,OAAQ,EACRT,UAAW,wCACXgB,WAAY,mBACbD,OACI7C,EAAmBE,YAAe,CACrC6C,KAAM,EACNC,MAAOpC,EAAME,QAAQG,KAAKC,cAC3B2B,OACI7C,EAAmBG,QAAW,CACjCiB,SAAU,SACV6B,OAAQ,EACRzB,gBAAiBZ,EAAME,QAAQC,WAAWC,MAC1CuB,OAAQ,EACRT,UAAW,wCACXoB,eAAgB,MAChB3B,cAAe,MACfkB,QAAS,iBACVI,OACI7C,EAAmBI,MAAS,CAC/BkB,QAAS,OACTwB,WAAY,SACZC,KAAM,EACNI,IAAK,EACLxB,SAAU,QACXkB,OACI7C,EAAmBK,WAAc,CACpC+C,WAAY,IACZL,KAAM,EACNpB,SAAU,EACVqB,MAAOpC,EAAME,QAAQG,KAAKC,QAC1BmC,WAAYzC,EAAMyB,QAAQ,SAC3BQ,OACI7C,EAAmBO,gBAAmB,CACzCyC,MAAOpC,EAAME,QAAQG,KAAKC,SAC3B"}
@@ -0,0 +1,2 @@
1
+ import{defineProperty as o,createClass as e,objectSpread2 as r,toConsumableArray as a,classCallCheck as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{createObjectSingleton as n}from"dinocollab-core/utils";import{MediaRightEventStore as l}from"./event-store.js";import{mediaRightStoreOptions as i}from"./configs.js";var s=e(function e(){t(this,e),o(this,"localStorageKey","__media_right_default__"),o(this,"store",new l)}),u=function(){function l(){t(this,l)}return e(l,[{key:"initialize",value:function(){l.provider.store.emit("requestState",{})}},{key:"subscribe",value:function(o,e){return l.provider.store.subscribe(o,e)}},{key:"getGroups",value:function(){var o,e=this.loadFromLocalStorage();return Object.values(null!==(o=e.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 e;return null===(e=this.loadFromLocalStorage().groups)||void 0===e?void 0:e[o]}},{key:"addGroup",value:function(e){var a=this.loadFromLocalStorage();if(Object.keys(a.groups).length>=i.MAX_GROUP)throw new Error("Maximum groups limit reached (".concat(i.MAX_GROUP,")"));if(e.name&&e.name.length>i.MAX_NAME_GROUP)throw new Error("Group name exceeds maximum length (".concat(i.MAX_NAME_GROUP,")"));var t=r(r({},e),{},{createdAt:Date.now(),items:[],channels:[]}),n=r(r({},a.groups),{},o({},e.id,t));this.saveToLocalStorage(n)}},{key:"updateGroup",value:function(e,a){var t=this.loadFromLocalStorage();if(t.groups[e]){if(a.name&&a.name.length>i.MAX_NAME_GROUP)throw new Error("Group name exceeds maximum length (".concat(i.MAX_NAME_GROUP,")"));var n=r(r({},t.groups),{},o({},e,r(r({},t.groups[e]),a)));this.saveToLocalStorage(n)}}},{key:"removeGroup",value:function(o){var e=this.loadFromLocalStorage(),a=r({},e.groups);delete a[o],this.saveToLocalStorage(a)}},{key:"addChannel",value:function(e,t){var n=this.loadFromLocalStorage(),l=n.groups[e];if(!l)throw new Error("Group ".concat(e," not found"));if(l.channels.length>=i.MAX_CHANNELS)throw new Error("Group ".concat(e," has reached maximum channels limit (").concat(i.MAX_CHANNELS,")"));var s=r(r({},l),{},{channels:[].concat(a(l.channels),[t])}),u=r(r({},n.groups),{},o({},e,s));this.saveToLocalStorage(u)}},{key:"updateChannel",value:function(e,t,n){var l=this.loadFromLocalStorage(),i=l.groups[e];if(i&&i.channels[t]){var s=a(i.channels);s[t]=r(r({},s[t]),n);var u=r(r({},l.groups),{},o({},e,r(r({},i),{},{channels:s})));this.saveToLocalStorage(u)}}},{key:"removeChannel",value:function(e,t){var n=this.loadFromLocalStorage(),l=n.groups[e];if(l){var i=a(l.channels);i.splice(t,1);var s=r(r({},n.groups),{},o({},e,r(r({},l),{},{channels:i})));this.saveToLocalStorage(s)}}},{key:"clearChannels",value:function(e){var a=this.loadFromLocalStorage(),t=a.groups[e];if(t){var n=r(r({},a.groups),{},o({},e,r(r({},t),{},{channels:[]})));this.saveToLocalStorage(n)}}},{key:"addItem",value:function(e){var t=this.loadFromLocalStorage(),n=t.groups[e.GroupId];if(!n)throw new Error("Group ".concat(e.GroupId," not found"));var l,s=n.items.findIndex(function(o){return o.ProductId===e.ProductId});if(-1===s&&n.items.length>=i.MAX_ITEMS_PER_GROUP)throw new Error("Group ".concat(e.GroupId," has reached maximum items limit (").concat(i.MAX_ITEMS_PER_GROUP,")"));s>=0?(l=a(n.items))[s]=e:l=[].concat(a(n.items),[e]);var u=r(r({},t.groups),{},o({},e.GroupId,r(r({},n),{},{items:l})));this.saveToLocalStorage(u)}},{key:"updateItem",value:function(e,t,n){var l=this.loadFromLocalStorage(),i=l.groups[e];if(i){var s=i.items.findIndex(function(o){return o.ProductId===t});if(s>=0){var u=a(i.items);u[s]=r(r({},u[s]),n);var c=r(r({},l.groups),{},o({},e,r(r({},i),{},{items:u})));this.saveToLocalStorage(c)}}}},{key:"removeItem",value:function(e,a){var t=this.loadFromLocalStorage(),n=t.groups[e];if(n){var l=n.items.filter(function(o){return o.ProductId!==a}),i=r(r({},t.groups),{},o({},e,r(r({},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 e=localStorage.getItem(l.provider.localStorageKey),r=e?JSON.parse(e):null;null!=r&&r.groups&&Object.keys(r.groups).length>0&&(o=r)}}catch(o){console.error("Error loading media rights from localStorage:",o)}return o}},{key:"saveToLocalStorage",value:function(o){if("undefined"!=typeof globalThis&&globalThis.localStorage)if(l.provider.localStorageKey){var e={version:"1.0",groups:o};localStorage.setItem(l.provider.localStorageKey,JSON.stringify(e)),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 s}},{key:"setProvider",value:function(o){n(l.key_provider).set(null!=o?o:new s)}},{key:"setLocalStorageKey",value:function(o){var e=l.provider;e.localStorageKey=o,l.setProvider(e)}}])}();o(u,"key_provider","__media_right_key_provider__");var c=new u;export{u as MediaRightService,c as mediaRightService};
2
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sources":["../../src/media-right/service.ts"],"sourcesContent":["import { createObjectSingleton } from 'dinocollab-core/utils'\r\nimport { IMediaRightGroup, IMediaRightItem, IMediaRightChannel } from './types'\r\nimport { MediaRightEventStore } from './event-store'\r\nimport { mediaRightStoreOptions } from './configs'\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 {\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}\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 setLocalStorageKey(key: string) {\r\n const provider = MediaRightService.provider\r\n provider.localStorageKey = key\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 if (currentGroupCount >= mediaRightStoreOptions.MAX_GROUP) {\r\n throw new Error(`Maximum groups limit reached (${mediaRightStoreOptions.MAX_GROUP})`)\r\n }\r\n\r\n // Validate group name length\r\n if (group.name && group.name.length > mediaRightStoreOptions.MAX_NAME_GROUP) {\r\n throw new Error(`Group name exceeds maximum length (${mediaRightStoreOptions.MAX_NAME_GROUP})`)\r\n }\r\n\r\n const newGroup: IMediaRightGroup<O> = {\r\n ...group,\r\n createdAt: Date.now(),\r\n items: [],\r\n channels: []\r\n }\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 if (updates.name && updates.name.length > mediaRightStoreOptions.MAX_NAME_GROUP) {\r\n throw new Error(`Group name exceeds maximum length (${mediaRightStoreOptions.MAX_NAME_GROUP})`)\r\n }\r\n\r\n const updatedGroups = {\r\n ...storedData.groups,\r\n [groupId]: { ...storedData.groups[groupId], ...updates }\r\n }\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 if (!group) {\r\n throw new Error(`Group ${groupId} not found`)\r\n }\r\n\r\n // Validate max channels limit\r\n if (group.channels.length >= mediaRightStoreOptions.MAX_CHANNELS) {\r\n throw new Error(`Group ${groupId} has reached maximum channels limit (${mediaRightStoreOptions.MAX_CHANNELS})`)\r\n }\r\n\r\n const updatedGroup = {\r\n ...group,\r\n channels: [...group.channels, channel]\r\n }\r\n\r\n const updatedGroups = {\r\n ...storedData.groups,\r\n [groupId]: updatedGroup\r\n }\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 = {\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 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 = {\r\n ...storedData.groups,\r\n [groupId]: { ...group, channels: [] }\r\n }\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(`Group ${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 if (existingItemIndex === -1 && group.items.length >= mediaRightStoreOptions.MAX_ITEMS_PER_GROUP) {\r\n throw new Error(`Group ${item.GroupId} has reached maximum items limit (${mediaRightStoreOptions.MAX_ITEMS_PER_GROUP})`)\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 = {\r\n ...storedData.groups,\r\n [item.GroupId]: { ...group, items: updatedItems }\r\n }\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 = {\r\n ...storedData.groups,\r\n [groupId]: { ...group, items: updatedItems }\r\n }\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 = {\r\n ...storedData.groups,\r\n [groupId]: { ...group, items: updatedItems }\r\n }\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 media rights 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","MediaRightService","key","value","provider","store","emit","event","callback","subscribe","_storedData$groups","storedData","loadFromLocalStorage","Object","values","groups","_storedData$groups2","groupId","_storedData$groups3","group","keys","length","mediaRightStoreOptions","MAX_GROUP","Error","concat","name","MAX_NAME_GROUP","newGroup","_objectSpread","createdAt","Date","now","items","channels","updatedGroups","id","saveToLocalStorage","updates","channel","MAX_CHANNELS","updatedGroup","_toConsumableArray","channelIndex","updatedChannels","splice","item","GroupId","updatedItems","existingItemIndex","findIndex","i","ProductId","MAX_ITEMS_PER_GROUP","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","setProvider","mediaRightService"],"mappings":"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"}
@@ -25,26 +25,5 @@ export declare class CartEventStore extends EventEmitter<ICartEventConfigs> {
25
25
  _createWrapListener: (callback: (...payload: any[]) => void) => (...payload: any[]) => void;
26
26
  subscribe<K extends keyof ICartEventConfigs>(eventName: K, listener: K extends keyof ICartEventConfigs ? (ICartEventConfigs[K] extends unknown[] ? (...args: ICartEventConfigs[K]) => void : never) : never, isTry?: boolean): () => void;
27
27
  }
28
- export declare function getCartEventStore(): CartEventStore | null;
29
- export interface ICartStoreConfigs {
30
- idGetter: IIdGetter;
31
- localStorageKey?: string;
32
- }
33
- export declare class MfeCartStore {
34
- private configs;
35
- constructor(config: ICartStoreConfigs);
36
- initialize: () => void;
37
- destroy: () => void;
38
- emitStateChange(items: IItem): void;
39
- add(item: any, overwrite?: boolean): this;
40
- addMany(items: any[], overwrite?: boolean): this;
41
- updateOrAdd(id: string, updates: Partial<any>): this;
42
- remove(id: string): this;
43
- clear(): this;
44
- getState(): IItem;
45
- getItems(): any[];
46
- private loadFromLocalStorage;
47
- private saveToLocalStorage;
48
- }
49
28
  export {};
50
- //# sourceMappingURL=cart-store.d.ts.map
29
+ //# sourceMappingURL=event-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-store.d.ts","sourceRoot":"","sources":["../../../src/cart/event-store.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY,MAAM,QAAQ,CAAA;AAEjC,MAAM,MAAM,SAAS,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAA;AAEpD,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAEhC,UAAU,aAAa;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,OAAO,CAAC,EAAE,aAAa,CAAA;KAAE,CAAC,CAAA;IACxD,YAAY,EAAE,CAAC;QAAE,OAAO,CAAC,EAAE,aAAa,CAAA;KAAE,CAAC,CAAA;CAC5C;AAED,qBAAa,cAAe,SAAQ,YAAY,CAAC,iBAAiB,CAAC;;IAIjE;;;;;OAKG;IACH,mBAAmB,0BAA2B,GAAG,EAAE,KAAK,IAAI,kBACtC,GAAG,EAAE,UAO1B;IACD,SAAS,CAAC,CAAC,SAAS,MAAM,iBAAiB,EACzC,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,CAAC,SAAS,MAAM,iBAAiB,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,EAChJ,KAAK,GAAE,OAAc;CAQxB"}
@@ -1,15 +1,13 @@
1
1
  import { ICartItem } from './types';
2
- export interface ICartStoreOptions {
3
- localStorageKey?: string;
4
- }
5
- export declare function useCartStore<T extends ICartItem = ICartItem>(params?: ICartStoreOptions): {
2
+ export declare function useCartStore<T extends ICartItem = ICartItem>(): {
6
3
  items: T[];
7
4
  };
8
- export declare function useCartActions<T extends ICartItem = ICartItem>(params?: ICartStoreOptions): {
5
+ export declare function useCartActions<T extends ICartItem = ICartItem>(): {
6
+ idGetter: (item: T) => string;
9
7
  addToCart: (item: T) => void;
8
+ updateCart: (id: string, updates: Partial<T>) => void;
10
9
  updateOrAddCart: (id: string, updates: Partial<T>) => void;
11
10
  removeFromCart: (id: string) => void;
12
11
  clearCart: () => void;
13
- idGetter: (item: T) => string;
14
12
  };
15
- //# sourceMappingURL=hook.d.ts.map
13
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/cart/hooks.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGnC,wBAAgB,YAAY,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;;EA0B3D;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;qBACpC,CAAC;sBAEA,CAAC;qBAIF,MAAM,WAAW,QAAQ,CAAC,CAAC;0BAItB,MAAM,WAAW,QAAQ,CAAC,CAAC;yBAI5B,MAAM;;EAanC"}
@@ -17,8 +17,9 @@
17
17
  */
18
18
  export * from './types';
19
19
  export { CartWidget, createCartWidget } from './widget';
20
- export * from './hook';
20
+ export * from './hooks';
21
21
  export * from './helpers';
22
+ export * from './service';
22
23
  /**
23
24
  * Simple usage:
24
25
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cart/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,cAAc,SAAS,CAAA;AAGvB,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEvD,cAAc,QAAQ,CAAA;AAEtB,cAAc,WAAW,CAAA;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cart/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,cAAc,SAAS,CAAA;AAGvB,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEvD,cAAc,SAAS,CAAA;AAEvB,cAAc,WAAW,CAAA;AAEzB,cAAc,WAAW,CAAA;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG"}
@@ -0,0 +1,28 @@
1
+ import { ICartItem } from './types';
2
+ import { CartEventStore } from './event-store';
3
+ export interface ICartMetadata<T extends ICartItem = ICartItem> {
4
+ version: string;
5
+ items: T[];
6
+ }
7
+ export interface ICartProvider {
8
+ localStorageKey: string;
9
+ store: CartEventStore;
10
+ }
11
+ export declare class CartService<T extends ICartItem = ICartItem> {
12
+ static key_provider: string;
13
+ static get provider(): ICartProvider;
14
+ static setProvider(provider: ICartProvider): void;
15
+ static setLocalStorageKey(key: string): void;
16
+ initialize(): void;
17
+ subscribe(event: string, callback: (...args: any[]) => void): () => void;
18
+ getCarts(): T[];
19
+ addToCart(cartItem: T | T[]): void;
20
+ removeFromCart(cartItem: T | T[]): void;
21
+ updateCart(productId: string, updates: Partial<T>): void;
22
+ updateOrAddCart(productId: string, updates: Partial<T>): void;
23
+ clearCart(): void;
24
+ private loadFromLocalStorage;
25
+ private saveToLocalStorage;
26
+ }
27
+ export declare const cartService: CartService<ICartItem<any>>;
28
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/cart/service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC5D,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,CAAC,EAAE,CAAA;CACX;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,MAAM,CAAA;IACvB,KAAK,EAAE,cAAc,CAAA;CACtB;AAOD,qBAAa,WAAW,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IACtD,MAAM,CAAC,YAAY,SAA0B;IAC7C,MAAM,KAAK,QAAQ,IAAI,aAAa,CAGnC;IACD,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,aAAa;IAI1C,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM;IAMrC,UAAU;IAIV,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI;IAI3D,QAAQ,IAAI,CAAC,EAAE;IAKf,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;IAOlC,cAAc,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;IAOvC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAMxD,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAa7D,SAAS,IAAI,IAAI;IAIjB,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,kBAAkB;CAY3B;AAED,eAAO,MAAM,WAAW,6BAA+B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"app-header.nav.d.ts","sourceRoot":"","sources":["../../../src/layout-global/app-header.nav.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,OAAO,CAAA;AAGtD,OAAO,EAAmB,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAGtE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,IAAI,EAAE,QAAQ,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAA;CACtG;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,iBAAiB,CAAA;IAC1B,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IACnB,cAAc,CAAC,EAAE,oBAAoB,CAAA;IACrC,KAAK,CAAC,EAAE,kBAAkB,CAAA;CAC3B;AAED,cAAM,YAAa,SAAQ,SAAS,CAAC,eAAe,CAAC;IACnD,MAAM;IA4BN,iBAAiB,SAAU,OAAO,KAAG,QAAQ,qBAAqB,CAAC,CAgBlE;IAED,kBAAkB,MAAO,YAAY,iBAAiB,EAAE,UAAU,CAAC,QAAQ,OAAO,UAIjF;CACF;AACD,eAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"app-header.nav.d.ts","sourceRoot":"","sources":["../../../src/layout-global/app-header.nav.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,OAAO,CAAA;AAGtD,OAAO,EAAmB,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAGtE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,IAAI,EAAE,QAAQ,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAA;CACtG;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,iBAAiB,CAAA;IAC1B,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IACnB,cAAc,CAAC,EAAE,oBAAoB,CAAA;IACrC,KAAK,CAAC,EAAE,kBAAkB,CAAA;CAC3B;AAED,cAAM,YAAa,SAAQ,SAAS,CAAC,eAAe,CAAC;IACnD,MAAM;IA4BN,iBAAiB,SAAU,OAAO,KAAG,QAAQ,qBAAqB,CAAC,CAclE;IAED,kBAAkB,MAAO,YAAY,iBAAiB,EAAE,UAAU,CAAC,QAAQ,OAAO,UAIjF;CACF;AACD,eAAe,YAAY,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { ReactNode } from 'react';
2
- export declare const getLightTheme: (primary: string, secondary: string, fontScale?: number) => import("@mui/material").Theme;
3
2
  export interface IAppThemeProviderProps {
4
3
  children: ReactNode;
4
+ mode?: 'light' | 'dark';
5
5
  primaryVar?: string;
6
6
  secondaryVar?: string;
7
7
  fontScale?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"app-theme-provider.d.ts","sourceRoot":"","sources":["../../../src/layout-global/app-theme-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAQjC,eAAO,MAAM,aAAa,YAAa,MAAM,aAAa,MAAM,cAAa,MAAM,kCA0ClF,CAAA;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,SAAS,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,eAAO,MAAM,gBAAgB,UAAW,sBAAsB,4CAI7D,CAAA"}
1
+ {"version":3,"file":"app-theme-provider.d.ts","sourceRoot":"","sources":["../../../src/layout-global/app-theme-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAyEjC,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,SAAS,CAAA;IACnB,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,eAAO,MAAM,gBAAgB,UAAW,sBAAsB,4CAI7D,CAAA"}
@@ -2,7 +2,7 @@ import { IAppMenu, IAppNav, IAppSocial, ENavKey, INavLink } from './types';
2
2
  import type { IAppSiteBaseUrl } from '../types';
3
3
  export declare const appLogoUrl = "images/logo.webp";
4
4
  export declare const getAppLogoUrl: (base: IAppSiteBaseUrl) => string;
5
- export declare const bgFooterUrl = "images/bg-footer.webp";
5
+ export declare const bgFooterUrl = "images/bg-footer.jpg";
6
6
  export declare const getBgFooterUrl: (base: IAppSiteBaseUrl) => string;
7
7
  export declare const appSocialConfigs: IAppSocial[];
8
8
  export declare const mapNavTitles: Record<ENavKey, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"configs.d.ts","sourceRoot":"","sources":["../../../src/layout-global/configs.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAmB,MAAM,SAAS,CAAA;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C,eAAO,MAAM,UAAU,qBAAqB,CAAA;AAC5C,eAAO,MAAM,aAAa,SAAU,eAAe,WAA6B,CAAA;AAEhF,eAAO,MAAM,WAAW,0BAA0B,CAAA;AAClD,eAAO,MAAM,cAAc,SAAU,eAAe,WAA8B,CAAA;AAElF,eAAO,MAAM,gBAAgB,EAAE,UAAU,EAMxC,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAchD,CAAA;AAMD,eAAO,MAAM,WAAW,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAgD9E,CAAA;AAEF,eAAO,MAAM,oBAAoB,YAAa,eAAe,KAAG,QAAQ,EA+BvE,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,EAUtE,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,EAepE,CAAA;AAED,eAAO,MAAM,iBAAiB,uLAAuL,CAAA;AAErN,eAAO,MAAM,gBAAgB,cAG5B,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,EAMzE,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,EAAE,EAmBxE,CAAA"}
1
+ {"version":3,"file":"configs.d.ts","sourceRoot":"","sources":["../../../src/layout-global/configs.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAmB,MAAM,SAAS,CAAA;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C,eAAO,MAAM,UAAU,qBAAqB,CAAA;AAC5C,eAAO,MAAM,aAAa,SAAU,eAAe,WAA6B,CAAA;AAEhF,eAAO,MAAM,WAAW,yBAAyB,CAAA;AACjD,eAAO,MAAM,cAAc,SAAU,eAAe,WAA8B,CAAA;AAElF,eAAO,MAAM,gBAAgB,EAAE,UAAU,EAMxC,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAchD,CAAA;AAMD,eAAO,MAAM,WAAW,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAgD9E,CAAA;AAEF,eAAO,MAAM,oBAAoB,YAAa,eAAe,KAAG,QAAQ,EA+BvE,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,EAUtE,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,EAepE,CAAA;AAED,eAAO,MAAM,iBAAiB,uLAAuL,CAAA;AAErN,eAAO,MAAM,gBAAgB,cAG5B,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,EAMzE,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,EAAE,EAmBxE,CAAA"}