dinocollab-shared 1.2.46 → 1.2.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/action-license/area.group.js +1 -1
  2. package/dist/action-license/area.group.js.map +1 -1
  3. package/dist/action-license/btn.icon.add-to-package.js +1 -1
  4. package/dist/action-license/btn.icon.add-to-package.js.map +1 -1
  5. package/dist/action-license/quickly-add-to-cart/content.js +1 -1
  6. package/dist/action-license/quickly-add-to-cart/content.js.map +1 -1
  7. package/dist/cart/hooks.js +1 -1
  8. package/dist/cart/hooks.js.map +1 -1
  9. package/dist/cart/service.js +1 -1
  10. package/dist/cart/service.js.map +1 -1
  11. package/dist/cart/styled.js +1 -1
  12. package/dist/cart/styled.js.map +1 -1
  13. package/dist/factory/cart-content/styled.js +1 -1
  14. package/dist/factory/cart-content/styled.js.map +1 -1
  15. package/dist/factory/cart-item/create.cart-item.js +1 -1
  16. package/dist/factory/cart-item/create.cart-item.js.map +1 -1
  17. package/dist/factory/cart-item/styled.js +1 -1
  18. package/dist/factory/cart-item/styled.js.map +1 -1
  19. package/dist/media-right/configs.js +1 -1
  20. package/dist/media-right/configs.js.map +1 -1
  21. package/dist/media-right/group-selector/index.js +1 -1
  22. package/dist/media-right/group-selector/index.js.map +1 -1
  23. package/dist/media-right/group-selector/modal-header.js +1 -1
  24. package/dist/media-right/group-selector/modal-header.js.map +1 -1
  25. package/dist/media-right/group-selector/units.js +1 -1
  26. package/dist/media-right/group-selector/units.js.map +1 -1
  27. package/dist/media-right/guide-steps/index.js +1 -1
  28. package/dist/media-right/guide-steps/index.js.map +1 -1
  29. package/dist/media-right/helpers.js +1 -1
  30. package/dist/media-right/helpers.js.map +1 -1
  31. package/dist/media-right/hooks.js +1 -1
  32. package/dist/media-right/hooks.js.map +1 -1
  33. package/dist/media-right/index.js +1 -1
  34. package/dist/media-right/media-widget/index.js +1 -1
  35. package/dist/media-right/media-widget/index.js.map +1 -1
  36. package/dist/media-right/media-widget/media-group-accordion.js +1 -1
  37. package/dist/media-right/media-widget/media-group-accordion.js.map +1 -1
  38. package/dist/media-right/media-widget/new-group-area.js +1 -1
  39. package/dist/media-right/media-widget/new-group-area.js.map +1 -1
  40. package/dist/media-right/media-widget/styled.js +1 -1
  41. package/dist/media-right/media-widget/styled.js.map +1 -1
  42. package/dist/media-right/service.js +1 -1
  43. package/dist/media-right/service.js.map +1 -1
  44. package/dist/media-right/types.js.map +1 -1
  45. package/dist/media-right/unit.control.js +1 -1
  46. package/dist/media-right/unit.control.js.map +1 -1
  47. package/dist/types/action-license/btn.icon.add-to-package.d.ts +3 -3
  48. package/dist/types/action-license/btn.icon.add-to-package.d.ts.map +1 -1
  49. package/dist/types/action-license/quickly-add-to-cart/content.d.ts +2 -2
  50. package/dist/types/action-license/quickly-add-to-cart/content.d.ts.map +1 -1
  51. package/dist/types/cart/hooks.d.ts +5 -0
  52. package/dist/types/cart/hooks.d.ts.map +1 -1
  53. package/dist/types/cart/service.d.ts +5 -0
  54. package/dist/types/cart/service.d.ts.map +1 -1
  55. package/dist/types/cart/styled.d.ts.map +1 -1
  56. package/dist/types/factory/cart-content/styled.d.ts.map +1 -1
  57. package/dist/types/factory/cart-item/create.cart-item.d.ts +1 -1
  58. package/dist/types/factory/cart-item/create.cart-item.d.ts.map +1 -1
  59. package/dist/types/factory/cart-item/styled.d.ts.map +1 -1
  60. package/dist/types/media-right/configs.d.ts +1 -1
  61. package/dist/types/media-right/configs.d.ts.map +1 -1
  62. package/dist/types/media-right/group-selector/index.d.ts +2 -13
  63. package/dist/types/media-right/group-selector/index.d.ts.map +1 -1
  64. package/dist/types/media-right/group-selector/modal-header.d.ts.map +1 -1
  65. package/dist/types/media-right/group-selector/units.d.ts +3 -0
  66. package/dist/types/media-right/group-selector/units.d.ts.map +1 -1
  67. package/dist/types/media-right/guide-steps/index.d.ts.map +1 -1
  68. package/dist/types/media-right/helpers.d.ts +0 -4
  69. package/dist/types/media-right/helpers.d.ts.map +1 -1
  70. package/dist/types/media-right/hooks.d.ts +4 -5
  71. package/dist/types/media-right/hooks.d.ts.map +1 -1
  72. package/dist/types/media-right/media-widget/index.d.ts +0 -1
  73. package/dist/types/media-right/media-widget/index.d.ts.map +1 -1
  74. package/dist/types/media-right/media-widget/media-group-accordion.d.ts +4 -1
  75. package/dist/types/media-right/media-widget/media-group-accordion.d.ts.map +1 -1
  76. package/dist/types/media-right/media-widget/new-group-area.d.ts +2 -0
  77. package/dist/types/media-right/media-widget/new-group-area.d.ts.map +1 -1
  78. package/dist/types/media-right/media-widget/styled.d.ts.map +1 -1
  79. package/dist/types/media-right/service.d.ts +5 -4
  80. package/dist/types/media-right/service.d.ts.map +1 -1
  81. package/dist/types/media-right/types.d.ts +5 -5
  82. package/dist/types/media-right/types.d.ts.map +1 -1
  83. package/dist/types/media-right/unit.control.d.ts +2 -0
  84. package/dist/types/media-right/unit.control.d.ts.map +1 -1
  85. package/package.json +1 -1
  86. package/dist/types/media-right/group-selector/NewCollectionInput.d.ts +0 -7
  87. package/dist/types/media-right/group-selector/NewCollectionInput.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/media-right/group-selector/index.tsx"],"sourcesContent":["import { createRoot } from 'react-dom/client'\r\nimport { useState, useEffect, useMemo } from 'react'\r\nimport { Dialog, DialogContent, DialogActions, Button, Typography, Box } from '@mui/material'\r\nimport type { FC, FormEvent } from 'react'\r\nimport { CollectionsList } from './units'\r\nimport { GuideSteps } from '../guide-steps'\r\nimport { ModalHeader } from './modal-header'\r\nimport { canAddGroup, generateGroupId } from '../helpers'\r\nimport { NewCollectionButton, NewCollectionInput } from '../unit.control'\r\nimport type { IGuideStepsProps } from '../guide-steps'\r\nimport type { IMediaRightGroup, IMediaRightItem } from '../types'\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 isChanged = useMemo(() => {\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 return currentGroupIds.some((id, index) => id !== sortedSelected[index])\r\n }, [showNewGroupInput, newName, selectedGroupIds, currentGroupIds])\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 (!isChanged) {\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 // Case 1: Item already exists in some groups\r\n if (currentGroupIds.length > 0) {\r\n return isChanged ? '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 Playlist\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='text' type='button' color='inherit'>\r\n Cancel\r\n </Button>\r\n <Button type='submit' variant={isChanged ? 'contained' : 'outlined'} disabled={isConfirmDisabled()} color='primary' 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({ id: newGroupId, name: newGroupName })\r\n // Add item to the new group\r\n const cartItemWithGroup: IMediaRightItem = { ...cartItem, GroupId: newGroupId }\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 = { ...cartItem, GroupId: groupId }\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","isChanged","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","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
+ {"version":3,"file":"index.js","sources":["../../../src/media-right/group-selector/index.tsx"],"sourcesContent":["import { useState, useMemo } from 'react'\r\nimport { Dialog, DialogContent, DialogActions, Button, Typography, Box, Alert } from '@mui/material'\r\nimport type { FC, FormEvent } from 'react'\r\nimport { CollectionsList } from './units'\r\nimport { GuideSteps } from '../guide-steps'\r\nimport { ModalHeader } from './modal-header'\r\nimport { NewCollectionButton, NewCollectionInput } from '../unit.control'\r\nimport { useMediaRightActions, useMediaRightStore } from '../hooks'\r\nimport type { IGuideStepsProps } from '../guide-steps'\r\nimport type { IMediaRightItem } from '../types'\r\n\r\nexport interface IGroupSelectorModalProps {\r\n open: boolean\r\n guideStepsProps?: IGuideStepsProps\r\n onClose: () => void\r\n cartItem: IMediaRightItem | null\r\n}\r\n\r\nexport const ModalAddMediaRight: FC<IGroupSelectorModalProps> = ({ open, onClose, guideStepsProps, cartItem }) => {\r\n const { groups, options } = useMediaRightStore()\r\n const actions = useMediaRightActions()\r\n // Determine which groups can be selected (active) based on maxItemsPerGroup limit and which groups currently contain the item\r\n const activeGroupIds = useMemo(() => {\r\n if (!cartItem?.ProductId) return []\r\n const ids = groups\r\n .filter((g) => g.items?.some((item) => item.ProductId === cartItem.ProductId) || g.items.length < options.maxItemsPerGroup)\r\n .map((g) => g.id)\r\n return ids\r\n }, [groups, cartItem, options.maxItemsPerGroup])\r\n\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 : activeGroupIds.length > 0 ? [activeGroupIds[0]] : []\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 const [errorMessage, setErrorMessage] = useState<string>('')\r\n\r\n const isChanged = useMemo(() => {\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 return currentGroupIds.some((id, index) => id !== sortedSelected[index])\r\n }, [showNewGroupInput, newName, selectedGroupIds, currentGroupIds])\r\n\r\n const handleSubmit = (e: FormEvent) => {\r\n e.preventDefault()\r\n if (!cartItem) return\r\n\r\n // Only proceed if there are changes\r\n if (!isChanged) {\r\n handleClose()\r\n return\r\n }\r\n try {\r\n if (showNewGroupInput && newName.trim()) {\r\n // Create new group and add item to it\r\n const newGroup = actions.addGroup({ name: newName.trim() })\r\n const cartItemWithGroup: IMediaRightItem = { ...cartItem, GroupId: newGroup.id }\r\n actions.addItem(cartItemWithGroup)\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\r\n // Remove from groups\r\n groupIdsToRemove.forEach((groupId) => {\r\n if (cartItem.ProductId) {\r\n actions.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 = { ...cartItem, GroupId: groupId }\r\n actions.addItem(cartItemWithGroup)\r\n })\r\n }\r\n\r\n handleClose()\r\n } catch (error) {\r\n console.error('Error saving group changes8678888:', error)\r\n setErrorMessage(error instanceof Error ? error.message : 'Failed to save changes. Please try again.')\r\n }\r\n }\r\n\r\n const handleClose = () => {\r\n setSelectedGroupIds([])\r\n setShowNewGroupInput(false)\r\n setNewName('')\r\n setErrorMessage('')\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 // Case 1: Item already exists in some groups\r\n if (currentGroupIds.length > 0) {\r\n return isChanged ? '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 {errorMessage && (\r\n <Alert onClose={() => setErrorMessage('')} severity='error' sx={{ m: 1 }}>\r\n {errorMessage}\r\n </Alert>\r\n )}\r\n <DialogContent sx={{ py: 0 }}>\r\n <Typography variant='subtitle1' sx={{ mb: 1, fontWeight: 600 }}>\r\n Your Playlist\r\n </Typography>\r\n {groups.length < options.maxGroup &&\r\n (!showNewGroupInput ? (\r\n <NewCollectionButton onClick={handleNewGroupClick} />\r\n ) : (\r\n <NewCollectionInput value={newName} onChange={setNewName} inputProps={{ maxLength: options.maxNameGroup }} />\r\n ))}\r\n <CollectionsList\r\n groups={groups}\r\n selectedGroupIds={selectedGroupIds}\r\n activeGroupIds={activeGroupIds}\r\n onGroupSelect={handleGroupSelect}\r\n tooltipDisabled={`Maximum items per playlist (${options.maxItemsPerGroup} items)`}\r\n />\r\n </DialogContent>\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='text' type='button' color='inherit'>\r\n Cancel\r\n </Button>\r\n <Button type='submit' variant={isChanged ? 'contained' : 'outlined'} disabled={isConfirmDisabled()} color='primary' sx={{ minWidth: 100 }}>\r\n {getButtonText()}\r\n </Button>\r\n </DialogActions>\r\n </Box>\r\n </Dialog>\r\n )\r\n}\r\n"],"names":["ModalAddMediaRight","_ref","open","onClose","guideStepsProps","cartItem","_useMediaRightStore","useMediaRightStore","groups","options","actions","useMediaRightActions","activeGroupIds","useMemo","ProductId","filter","g","_g$items","items","some","item","length","maxItemsPerGroup","map","id","currentGroupIds","_g$items2","sort","initialGroupIds","_useState","useState","_useState2","_slicedToArray","selectedGroupIds","setSelectedGroupIds","_useState3","_useState4","showNewGroupInput","setShowNewGroupInput","_useState5","_useState6","newName","setNewName","_useState7","_useState8","errorMessage","setErrorMessage","isChanged","trim","sortedSelected","_toConsumableArray","index","handleClose","_jsxs","Dialog","maxWidth","fullWidth","disableScrollLock","keepMounted","scroll","children","_jsx","ModalHeader","Box","component","onSubmit","e","preventDefault","newGroup","addGroup","name","cartItemWithGroup","_objectSpread","GroupId","addItem","groupIdsToAdd","includes","forEach","groupId","removeItem","error","console","Error","message","Alert","severity","sx","m","DialogContent","py","Typography","variant","mb","fontWeight","maxGroup","NewCollectionInput","value","onChange","inputProps","maxLength","maxNameGroup","NewCollectionButton","onClick","CollectionsList","onGroupSelect","prev","concat","tooltipDisabled","DialogActions","px","pb","GuideSteps","iconButtonProps","color","mr","Button","type","disabled","minWidth"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{jsx as r,jsxs as e}from"react/jsx-runtime";import{DialogTitle as i,Box as t,Avatar as l,Typography as a,IconButton as n}from"@mui/material";import o from"@mui/icons-material/VideoLibraryOutlined";import c from"@mui/icons-material/Close";var d=function(d){var m=d.cartItem,s=d.onClose;return r(i,{children:e(t,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[e(t,{sx:{display:"flex",alignItems:"center",gap:1},children:[null!=m&&m.PictureUrl?r(l,{src:m.PictureUrl,alt:m.ProductName||"Product",sx:{width:60,height:60,borderRadius:2}}):r(o,{}),e(t,{children:[r(a,{variant:"h6",children:"Add to Playlist"}),r(a,{variant:"body2",color:"text.secondary",children:null==m?void 0:m.ProductName})]})]}),r(n,{onClick:s,size:"small",children:r(c,{})})]})})};export{d as ModalHeader};
1
+ import{jsx as r,jsxs as e}from"react/jsx-runtime";import{DialogTitle as i,Box as t,Avatar as o,Typography as a,IconButton as n}from"@mui/material";import l from"@mui/icons-material/VideoLibraryOutlined";import c from"@mui/icons-material/Close";var d=function(d){var s=d.cartItem,m=d.onClose;return r(i,{sx:{position:"sticky",top:0,zIndex:2,backgroundColor:function(r){return r.palette.background.paper},backgroundImage:"var(--Paper-overlay)"},children:e(t,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[e(t,{sx:{display:"flex",alignItems:"center",gap:1},children:[null!=s&&s.PictureUrl?r(o,{src:s.PictureUrl,alt:s.ProductName||"Product",sx:{width:60,height:60,borderRadius:2}}):r(l,{}),e(t,{children:[r(a,{variant:"h6",children:"Add to Playlist"}),r(a,{variant:"body2",color:"text.secondary",children:null==s?void 0:s.ProductName})]})]}),r(n,{onClick:m,size:"small",children:r(c,{})})]})})};export{d as ModalHeader};
2
2
  //# sourceMappingURL=modal-header.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"modal-header.js","sources":["../../../src/media-right/group-selector/modal-header.tsx"],"sourcesContent":["import type { FC } from 'react'\r\nimport { DialogTitle, Box, Typography, IconButton, Avatar } from '@mui/material'\r\nimport VideoLibraryOutlinedIcon from '@mui/icons-material/VideoLibraryOutlined'\r\nimport CloseIcon from '@mui/icons-material/Close'\r\nimport type { IMediaRightItem } from '../types'\r\n\r\nexport interface ModalHeaderProps {\r\n cartItem: IMediaRightItem | null\r\n onClose: () => void\r\n}\r\n\r\nexport const ModalHeader: FC<ModalHeaderProps> = ({ cartItem, onClose }) => {\r\n return (\r\n <DialogTitle>\r\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>\r\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\r\n {cartItem?.PictureUrl ? (\r\n <Avatar src={cartItem.PictureUrl} alt={cartItem.ProductName || 'Product'} sx={{ width: 60, height: 60, borderRadius: 2 }} />\r\n ) : (\r\n <VideoLibraryOutlinedIcon />\r\n )}\r\n <Box>\r\n <Typography variant='h6'>Add to Playlist</Typography>\r\n <Typography variant='body2' color='text.secondary'>\r\n {cartItem?.ProductName}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n <IconButton onClick={onClose} size='small'>\r\n <CloseIcon />\r\n </IconButton>\r\n </Box>\r\n </DialogTitle>\r\n )\r\n}\r\n"],"names":["ModalHeader","_ref","cartItem","onClose","_jsx","DialogTitle","children","_jsxs","Box","sx","display","alignItems","justifyContent","gap","PictureUrl","Avatar","src","alt","ProductName","width","height","borderRadius","VideoLibraryOutlinedIcon","Typography","variant","color","IconButton","onClick","size","CloseIcon"],"mappings":"wPAWaA,EAAoC,SAAzBC,GAAmD,IAAvBC,EAAQD,EAARC,SAAUC,EAAOF,EAAPE,QAC5D,OACEC,EAACC,EAAW,CAAAC,SACVC,EAACC,EAAI,CAAAC,GAAI,CAAEC,QAAS,OAAQC,WAAY,SAAUC,eAAgB,iBAChEN,SAAA,CAAAC,EAACC,EAAG,CAACC,GAAI,CAAEC,QAAS,OAAQC,WAAY,SAAUE,IAAK,GAAGP,SAAA,CACvDJ,SAAAA,EAAUY,WACTV,EAACW,EAAO,CAAAC,IAAKd,EAASY,WAAYG,IAAKf,EAASgB,aAAe,UAAWT,GAAI,CAAEU,MAAO,GAAIC,OAAQ,GAAIC,aAAc,KAErHjB,EAACkB,EAA2B,CAAA,GAE9Bf,EAACC,EACC,CAAAF,SAAA,CAAAF,EAACmB,EAAU,CAACC,QAAQ,KAAIlB,SAAA,oBACxBF,EAACmB,EAAW,CAAAC,QAAQ,QAAQC,MAAM,iBAAgBnB,SAC/CJ,aAAQ,EAARA,EAAUgB,oBAIjBd,EAACsB,EAAW,CAAAC,QAASxB,EAASyB,KAAK,QAAOtB,SACxCF,EAACyB,EAAY,CAAA,SAKvB"}
1
+ {"version":3,"file":"modal-header.js","sources":["../../../src/media-right/group-selector/modal-header.tsx"],"sourcesContent":["import type { FC } from 'react'\r\nimport { DialogTitle, Box, Typography, IconButton, Avatar } from '@mui/material'\r\nimport VideoLibraryOutlinedIcon from '@mui/icons-material/VideoLibraryOutlined'\r\nimport CloseIcon from '@mui/icons-material/Close'\r\nimport type { IMediaRightItem } from '../types'\r\n\r\nexport interface ModalHeaderProps {\r\n cartItem: IMediaRightItem | null\r\n onClose: () => void\r\n}\r\n\r\nexport const ModalHeader: FC<ModalHeaderProps> = ({ cartItem, onClose }) => {\r\n return (\r\n <DialogTitle\r\n sx={{\r\n position: 'sticky',\r\n top: 0,\r\n zIndex: 2,\r\n backgroundColor: (theme) => theme.palette.background.paper,\r\n backgroundImage: 'var(--Paper-overlay)'\r\n }}\r\n >\r\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>\r\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\r\n {cartItem?.PictureUrl ? (\r\n <Avatar src={cartItem.PictureUrl} alt={cartItem.ProductName || 'Product'} sx={{ width: 60, height: 60, borderRadius: 2 }} />\r\n ) : (\r\n <VideoLibraryOutlinedIcon />\r\n )}\r\n <Box>\r\n <Typography variant='h6'>Add to Playlist</Typography>\r\n <Typography variant='body2' color='text.secondary'>\r\n {cartItem?.ProductName}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n <IconButton onClick={onClose} size='small'>\r\n <CloseIcon />\r\n </IconButton>\r\n </Box>\r\n </DialogTitle>\r\n )\r\n}\r\n"],"names":["ModalHeader","_ref","cartItem","onClose","_jsx","DialogTitle","sx","position","top","zIndex","backgroundColor","theme","palette","background","paper","backgroundImage","children","_jsxs","Box","display","alignItems","justifyContent","gap","PictureUrl","Avatar","src","alt","ProductName","width","height","borderRadius","VideoLibraryOutlinedIcon","Typography","variant","color","IconButton","onClick","size","CloseIcon"],"mappings":"wPAWaA,EAAoC,SAAzBC,GAAmD,IAAvBC,EAAQD,EAARC,SAAUC,EAAOF,EAAPE,QAC5D,OACEC,EAACC,EAAW,CACVC,GAAI,CACFC,SAAU,SACVC,IAAK,EACLC,OAAQ,EACRC,gBAAiB,SAACC,GAAK,OAAKA,EAAMC,QAAQC,WAAWC,KAAK,EAC1DC,gBAAiB,wBAClBC,SAEDC,EAACC,EAAI,CAAAZ,GAAI,CAAEa,QAAS,OAAQC,WAAY,SAAUC,eAAgB,iBAAiBL,SAAA,CACjFC,EAACC,EAAI,CAAAZ,GAAI,CAAEa,QAAS,OAAQC,WAAY,SAAUE,IAAK,GAAGN,SAAA,CACvDd,SAAAA,EAAUqB,WACTnB,EAACoB,EAAO,CAAAC,IAAKvB,EAASqB,WAAYG,IAAKxB,EAASyB,aAAe,UAAWrB,GAAI,CAAEsB,MAAO,GAAIC,OAAQ,GAAIC,aAAc,KAErH1B,EAAC2B,EAAwB,CAAA,GAE3Bd,EAACC,aACCd,EAAC4B,EAAW,CAAAC,QAAQ,KAAiCjB,SAAA,oBACrDZ,EAAC4B,EAAU,CAACC,QAAQ,QAAQC,MAAM,iBAAgBlB,SAC/Cd,aAAQ,EAARA,EAAUyB,oBAIjBvB,EAAC+B,EAAW,CAAAC,QAASjC,EAASkC,KAAK,QAAOrB,SACxCZ,EAACkC,EAAY,CAAA,SAKvB"}
@@ -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 n,ListItem as o,ListItemButton as l,Checkbox as a,Stack as c,Chip as s}from"@mui/material";import d from"@mui/icons-material/FolderOutlined";var m=function(t){var n=t.group,m=t.isSelected,u=t.onSelect;return r(o,{disablePadding:!0,children:e(l,{selected:m,onClick:function(){return u(n.id)},sx:{gap:1,borderRadius:1,"&.Mui-selected":{bgcolor:"primary.50","&:hover":{bgcolor:"primary.100"}}},children:[r(a,{checked:m,size:"small"}),r(d,{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:n.name}),r(s,{label:"".concat(n.items.length," items"),size:"small"})]})]})})},u=function(o){var l=o.groups,a=o.selectedGroupIds,c=o.onGroupSelect;return 0===l.length?e(t,{sx:{textAlign:"center",py:2,color:"text.secondary"},children:[r(d,{sx:{fontSize:48,mb:1,opacity:.5}}),r(i,{variant:"body2",children:"No playlist yet. Create your first playlist!"})]}):r(n,{sx:{maxHeight:300,overflow:"auto"},children:l.map(function(e){return r(m,{group:e,isSelected:a.includes(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,Tooltip as o,ListItem as l,ListItemButton as a,Checkbox as d,Badge as c,Stack as s}from"@mui/material";import p from"@mui/icons-material/FolderOutlined";var u=function(i){var n=i.group,o=i.isSelected,u=i.disabled,m=i.onSelect;return r(l,{disablePadding:!0,children:e(a,{onClick:function(){return m(n.id)},disabled:u,sx:{gap:1,borderRadius:1,"&:hover":{bgcolor:"rgba(255, 255, 255, 0.08)"}},children:[r(d,{checked:o,disabled:u,size:"small"}),r(c,{badgeContent:n.items.length,color:"primary",children:r(p,{fontSize:"small"})}),r(s,{direction:"row",gap:1,sx:{minWidth:0,flexGrow:1,alignItems:"center",justifyContent:"space-between"},children:r(t,{variant:"body2",noWrap:!0,children:n.name})})]})})},m=function(l){var a=l.groups,d=l.selectedGroupIds,c=l.activeGroupIds,s=l.onGroupSelect,m=l.tooltipDisabled;return 0===a.length?e(i,{sx:{textAlign:"center",py:2,color:"text.secondary"},children:[r(p,{sx:{fontSize:48,mb:1,opacity:.5}}),r(t,{variant:"body2",children:"No playlist yet. Create your first playlist!"})]}):r(n,{sx:{maxHeight:300,overflow:"auto"},children:a.map(function(e){var i=c.includes(e.id);return r(o,{title:i?"":m,placement:"top",arrow:!0,children:r("span",{children:r(u,{group:e,isSelected:d.includes(e.id),disabled:!i,onSelect:s})})},e.id)})})};export{m 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 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 playlist yet. Create your first playlist!</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,oDAM/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"}
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, Badge, Tooltip } 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 disabled?: boolean\r\n onSelect: (groupId: string) => void\r\n}\r\n\r\nconst CollectionItem: FC<CollectionItemProps> = ({ group, isSelected, disabled, onSelect }) => {\r\n return (\r\n <ListItem disablePadding>\r\n <ListItemButton\r\n onClick={() => onSelect(group.id)}\r\n disabled={disabled}\r\n sx={{\r\n gap: 1,\r\n borderRadius: 1,\r\n '&:hover': {\r\n bgcolor: `rgba(255, 255, 255, 0.08)`\r\n }\r\n }}\r\n >\r\n <Checkbox checked={isSelected} disabled={disabled} size='small' />\r\n <Badge badgeContent={group.items.length} color='primary'>\r\n <FolderOutlinedIcon fontSize='small' />\r\n </Badge>\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 </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 activeGroupIds: string[]\r\n onGroupSelect: (groupId: string) => void\r\n tooltipDisabled?: string\r\n}\r\n\r\nexport const CollectionsList: FC<CollectionsListProps> = ({ groups, selectedGroupIds, activeGroupIds, onGroupSelect, tooltipDisabled }) => {\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 playlist yet. Create your first playlist!</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 const canSelect = activeGroupIds.includes(group.id)\r\n return (\r\n <Tooltip key={group.id} title={canSelect ? '' : tooltipDisabled} placement='top' arrow>\r\n <span>\r\n <CollectionItem group={group} isSelected={selectedGroupIds.includes(group.id)} disabled={!canSelect} onSelect={onGroupSelect} />\r\n </span>\r\n </Tooltip>\r\n )\r\n })}\r\n </List>\r\n )\r\n}\r\n"],"names":["CollectionItem","_ref","group","isSelected","disabled","onSelect","_jsx","ListItem","disablePadding","children","_jsxs","ListItemButton","onClick","id","sx","gap","borderRadius","bgcolor","Checkbox","checked","size","Badge","badgeContent","items","length","color","FolderOutlinedIcon","fontSize","Stack","direction","minWidth","flexGrow","alignItems","justifyContent","Typography","variant","noWrap","name","CollectionsList","_ref2","groups","selectedGroupIds","activeGroupIds","onGroupSelect","tooltipDisabled","Box","textAlign","py","mb","opacity","List","maxHeight","overflow","map","canSelect","includes","Tooltip","title","placement","arrow"],"mappings":"qPAYA,IAAMA,EAA0C,SAA5BC,GAA0E,IAA3CC,EAAKD,EAALC,MAAOC,EAAUF,EAAVE,WAAYC,EAAQH,EAARG,SAAUC,EAAQJ,EAARI,SAC9E,OACEC,EAACC,EAAS,CAAAC,gBACR,EAAAC,SAAAC,EAACC,EAAc,CACbC,QAAS,WAAF,OAAQP,EAASH,EAAMW,GAAG,EACjCT,SAAUA,EACVU,GAAI,CACFC,IAAK,EACLC,aAAc,EACd,UAAW,CACTC,QAAO,8BAEVR,SAAA,CAEDH,EAACY,EAAQ,CAACC,QAAShB,EAAYC,SAAUA,EAAUgB,KAAK,UACxDd,EAACe,GAAMC,aAAcpB,EAAMqB,MAAMC,OAAQC,MAAM,UAC7ChB,SAAAH,EAACoB,EAAmB,CAAAC,SAAS,YAE/BrB,EAACsB,EAAM,CAAAC,UAAU,MAAMd,IAAK,EAAGD,GAAI,CAAEgB,SAAU,EAAGC,SAAU,EAAGC,WAAY,SAAUC,eAAgB,iBACnGxB,SAAAH,EAAC4B,EAAW,CAAAC,QAAQ,QAAQC,QACzB,EAAA3B,SAAAP,EAAMmC,aAMnB,EAUaC,EAA4C,SAA7BC,GAA8G,IAA9EC,EAAMD,EAANC,OAAQC,EAAgBF,EAAhBE,iBAAkBC,EAAcH,EAAdG,eAAgBC,EAAaJ,EAAbI,cAAeC,EAAeL,EAAfK,gBACnH,OAAsB,IAAlBJ,EAAOhB,OAEPd,EAACmC,EAAG,CAAC/B,GAAI,CAAEgC,UAAW,SAAUC,GAAI,EAAGtB,MAAO,kBAAkBhB,SAAA,CAC9DH,EAACoB,EAAmB,CAAAZ,GAAI,CAAEa,SAAU,GAAIqB,GAAI,EAAGC,QAAS,MACxD3C,EAAC4B,EAAW,CAAAC,QAAQ,QAAO1B,SAAA,oDAM/BH,EAAC4C,EAAI,CAACpC,GAAI,CAAEqC,UAAW,IAAKC,SAAU,QAAQ3C,SAC3C+B,EAAOa,IAAI,SAACnD,GACX,IAAMoD,EAAYZ,EAAea,SAASrD,EAAMW,IAChD,OACEP,EAACkD,EAAuB,CAAAC,MAAOH,EAAY,GAAKV,EAAiBc,UAAU,MAAMC,OAAK,EAAAlD,SACpFH,EACE,OAAA,CAAAG,SAAAH,EAACN,EAAc,CAACE,MAAOA,EAAOC,WAAYsC,EAAiBc,SAASrD,EAAMW,IAAKT,UAAWkD,EAAWjD,SAAUsC,OAFrGzC,EAAMW,GAMvB,IAGP"}
@@ -1,2 +1,2 @@
1
- import{slicedToArray as t,objectSpread2 as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as i,Fragment as r,jsx as e}from"react/jsx-runtime";import{useState as o,useRef as l,useEffect as a}from"react";import{IconButton as c,Dialog as s,DialogTitle as u,DialogContent as m,Box as d,Stack as p,Typography as h,DialogActions as f,MobileStepper as x,Button as g}from"@mui/material";import b from"@mui/icons-material/HelpOutline";import v from"@mui/icons-material/Close";var k=function(k){var z=k.title,C=k.iconButtonProps,w=k.dialogProps,y=k.contentProps,B=k.steps,I=o(!1),S=t(I,2),j=S[0],H=S[1],P=o(0),W=t(P,2),T=W[0],X=W[1],_=l(0),A=l(null),D=function(){H(!1),X(0),_.current=0};return a(function(){A.current&&(A.current.scrollTop=0)},[T]),i(r,{children:[e(c,n(n({onClick:function(){return H(!0)},size:"small"},C),{},{children:e(b,{})})),i(s,n(n({open:j,onClose:D,maxWidth:"sm",fullWidth:!0},w),{},{children:[i(u,{py:2,sx:{position:"relative",boxShadow:"0 2px 8px -4px rgba(0,0,0,0.25)",zIndex:2,background:"#fff"},children:[z,e(c,{"aria-label":"close",onClick:D,sx:{position:"absolute",right:8,top:"50%",transform:"translateY(-50%)",color:function(t){return t.palette.grey[500]},zIndex:1},size:"small",children:e(v,{})})]}),e(m,{ref:A,sx:{p:2,position:"relative",overflowX:"hidden",minHeight:260},children:e(d,{sx:{display:"flex",flexDirection:"row",width:"".concat(100*B.length,"%"),transform:"translateX(-".concat(T*(100/B.length),"%)"),transition:"transform 0.4s cubic-bezier(0.4, 0, 0.2, 1)"},children:B.map(function(t,r){var o;return i(p,n(n({alignItems:"start",width:"".concat(100/B.length,"%"),flexShrink:0,px:2},y),{},{children:[e("img",{src:t.img,alt:t.label,style:{maxWidth:"100%",marginInline:"auto",maxHeight:120,marginBottom:16}}),e(h,{variant:"h6",fontWeight:600,gutterBottom:!0,children:t.label}),null===(o=t.text)||void 0===o?void 0:o.split("\n").map(function(t,n){return e(h,{variant:0===n?"subtitle1":"body2",children:t},n)}),t.content&&e(d,{sx:{mt:1,width:"100%"},children:t.content})]}),r)})})}),i(f,{sx:{px:3,pb:2,boxShadow:"0 -2px 8px -4px rgba(0,0,0,0.25)",zIndex:2,background:"#fff"},children:[e(x,{variant:"dots",steps:B.length,position:"static",activeStep:T,sx:{background:"transparent",justifyContent:"center",mr:"auto"},nextButton:null,backButton:null}),T>0&&e(g,{onClick:function(){_.current=T,X(function(t){return t-1})},size:"small",children:"Back"}),T===B.length-1?e(g,{onClick:D,size:"small",variant:"contained",children:"Finish"}):e(g,{onClick:function(){_.current=T,X(function(t){return t+1})},size:"small",variant:"contained",children:"Next"})]})]}))]})};export{k as GuideSteps};
1
+ import{slicedToArray as i,objectSpread2 as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,Fragment as o,jsx as e}from"react/jsx-runtime";import{useState as r,useRef as l,useEffect as a}from"react";import{IconButton as c,Dialog as s,DialogTitle as d,DialogContent as u,Slide as m,Stack as p,Typography as h,Box as x,DialogActions as f,Button as v}from"@mui/material";import g from"@mui/icons-material/HelpOutline";import b from"@mui/icons-material/Close";var z=function(z){var k,C,w,y,B=z.title,I=z.iconButtonProps,j=z.dialogProps,P=z.contentProps,W=z.steps,O=r(!1),S=i(O,2),E=S[0],F=S[1],H=r(0),T=i(H,2),_=T[0],A=T[1],D=r("next"),M=i(D,2),N=M[0],R=M[1],X=l(null),Y=function(){F(!1)};return a(function(){X.current&&(X.current.scrollTop=0)},[_]),t(o,{children:[e(c,n(n({onClick:function(){F(!0),A(0),R("next")},size:"small"},I),{},{children:e(g,{})})),t(s,n(n({open:E,scroll:"paper",onClose:Y,maxWidth:"sm",fullWidth:!0,sx:{"& .MuiDialog-paper":{width:"80%",height:700}}},j),{},{children:[t(d,{py:2,sx:{position:"relative",boxShadow:"0 2px 8px -4px rgba(0,0,0,0.25)",zIndex:2},children:[B,e(c,{"aria-label":"close",onClick:Y,sx:{position:"absolute",right:8,top:"50%",transform:"translateY(-50%)",color:function(i){return i.palette.grey[500]},zIndex:1},size:"small",children:e(b,{})})]}),e(u,{ref:X,sx:{position:"relative",overflowX:"hidden"},children:e(m,{in:!0,direction:"next"===N?"left":"right",timeout:320,mountOnEnter:!0,unmountOnExit:!0,children:t(p,n(n({alignItems:"start",px:2},P),{},{children:[(null===(k=W[_])||void 0===k?void 0:k.img)&&e("img",{src:W[_].img,alt:W[_].label,style:{maxWidth:"100%",objectFit:"contain",marginInline:"auto",marginBottom:16,borderRadius:8}}),e(h,{variant:"h6",fontWeight:600,gutterBottom:!0,children:null===(C=W[_])||void 0===C?void 0:C.label}),null===(w=W[_])||void 0===w||null===(w=w.text)||void 0===w?void 0:w.split("\n").map(function(i,n){return e(h,{variant:0===n?"subtitle1":"body2",children:i},n)}),(null===(y=W[_])||void 0===y?void 0:y.content)&&e(x,{sx:{mt:1,width:"100%"},children:W[_].content})]}))},"".concat(_,"-").concat(N))}),t(f,{sx:{px:3,pb:2,boxShadow:"0 -2px 8px -4px rgba(0,0,0,0.25)",zIndex:2},children:[e(x,{sx:{mr:"auto"}}),_>0&&e(v,{onClick:function(){R("back"),A(function(i){return i-1})},size:"small",children:"Back"}),_===W.length-1?e(v,{onClick:Y,size:"small",variant:"contained",children:"Finish"}):e(v,{onClick:function(){R("next"),A(function(i){return i+1})},size:"small",variant:"contained",children:"Next"})]})]}))]})};export{z as GuideSteps};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/media-right/guide-steps/index.tsx"],"sourcesContent":["import { useState, useRef, useEffect } from 'react'\r\nimport { Dialog, DialogContent, DialogActions, Button, IconButton, Box, Typography, MobileStepper, Stack, DialogTitle } from '@mui/material'\r\nimport HelpOutlineIcon from '@mui/icons-material/HelpOutline'\r\nimport CloseIcon from '@mui/icons-material/Close'\r\nimport type { FC } from 'react'\r\nimport type { DialogProps, IconButtonProps, StackProps } from '@mui/material'\r\n\r\nexport interface IGuideStep {\r\n label: string\r\n img: string\r\n text?: string\r\n content?: React.ReactNode\r\n}\r\n\r\nexport interface IGuideStepsProps {\r\n title?: string\r\n iconButtonProps?: IconButtonProps\r\n dialogProps?: DialogProps\r\n contentProps?: StackProps\r\n steps: IGuideStep[]\r\n}\r\n\r\nexport const GuideSteps: FC<IGuideStepsProps> = ({ title, iconButtonProps, dialogProps, contentProps, steps }) => {\r\n const [open, setOpen] = useState(false)\r\n const [activeStep, setActiveStep] = useState(0)\r\n const prevStep = useRef(0)\r\n const contentRef = useRef<HTMLDivElement>(null)\r\n const handleOpen = () => setOpen(true)\r\n const handleClose = () => {\r\n setOpen(false)\r\n setActiveStep(0)\r\n prevStep.current = 0\r\n }\r\n const handleNext = () => {\r\n prevStep.current = activeStep\r\n setActiveStep((prev) => prev + 1)\r\n }\r\n const handleBack = () => {\r\n prevStep.current = activeStep\r\n setActiveStep((prev) => prev - 1)\r\n }\r\n\r\n useEffect(() => {\r\n if (contentRef.current) {\r\n contentRef.current.scrollTop = 0\r\n }\r\n }, [activeStep])\r\n\r\n return (\r\n <>\r\n <IconButton onClick={handleOpen} size='small' {...iconButtonProps}>\r\n <HelpOutlineIcon />\r\n </IconButton>\r\n <Dialog open={open} onClose={handleClose} maxWidth='sm' fullWidth {...dialogProps}>\r\n <DialogTitle\r\n py={2}\r\n sx={{\r\n position: 'relative',\r\n boxShadow: '0 2px 8px -4px rgba(0,0,0,0.25)',\r\n zIndex: 2,\r\n background: '#fff'\r\n }}\r\n >\r\n {title}\r\n <IconButton\r\n aria-label='close'\r\n onClick={handleClose}\r\n sx={{\r\n position: 'absolute',\r\n right: 8,\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n color: (theme) => theme.palette.grey[500],\r\n zIndex: 1\r\n }}\r\n size='small'\r\n >\r\n <CloseIcon />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent ref={contentRef} sx={{ p: 2, position: 'relative', overflowX: 'hidden', minHeight: 260 }}>\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flexDirection: 'row',\r\n width: `${steps.length * 100}%`,\r\n transform: `translateX(-${activeStep * (100 / steps.length)}%)`,\r\n transition: 'transform 0.4s cubic-bezier(0.4, 0, 0.2, 1)'\r\n }}\r\n >\r\n {steps.map((step, idx) => (\r\n <Stack key={idx} alignItems='start' width={`${100 / steps.length}%`} flexShrink={0} px={2} {...contentProps}>\r\n <img src={step.img} alt={step.label} style={{ maxWidth: '100%', marginInline: 'auto', maxHeight: 120, marginBottom: 16 }} />\r\n <Typography variant='h6' fontWeight={600} gutterBottom>\r\n {step.label}\r\n </Typography>\r\n {step.text?.split('\\n').map((line, lineIdx) => (\r\n <Typography key={lineIdx} variant={lineIdx === 0 ? 'subtitle1' : 'body2'}>\r\n {line}\r\n </Typography>\r\n ))}\r\n {step.content && <Box sx={{ mt: 1, width: '100%' }}>{step.content}</Box>}\r\n </Stack>\r\n ))}\r\n </Box>\r\n </DialogContent>\r\n <DialogActions\r\n sx={{\r\n px: 3,\r\n pb: 2,\r\n boxShadow: '0 -2px 8px -4px rgba(0,0,0,0.25)',\r\n zIndex: 2,\r\n background: '#fff'\r\n }}\r\n >\r\n <MobileStepper\r\n variant='dots'\r\n steps={steps.length}\r\n position='static'\r\n activeStep={activeStep}\r\n sx={{ background: 'transparent', justifyContent: 'center', mr: 'auto' }}\r\n nextButton={null}\r\n backButton={null}\r\n />\r\n {activeStep > 0 && (\r\n <Button onClick={handleBack} size='small'>\r\n Back\r\n </Button>\r\n )}\r\n {activeStep === steps.length - 1 ? (\r\n <Button onClick={handleClose} size='small' variant='contained'>\r\n Finish\r\n </Button>\r\n ) : (\r\n <Button onClick={handleNext} size='small' variant='contained'>\r\n Next\r\n </Button>\r\n )}\r\n </DialogActions>\r\n </Dialog>\r\n </>\r\n )\r\n}\r\n"],"names":["GuideSteps","_ref","title","iconButtonProps","dialogProps","contentProps","steps","_useState","useState","_useState2","_slicedToArray","open","setOpen","_useState3","_useState4","activeStep","setActiveStep","prevStep","useRef","contentRef","handleClose","current","useEffect","scrollTop","_jsxs","_jsx","IconButton","_objectSpread","onClick","size","children","HelpOutlineIcon","Dialog","onClose","maxWidth","fullWidth","DialogTitle","py","sx","position","boxShadow","zIndex","background","right","top","transform","color","theme","palette","grey","CloseIcon","DialogContent","ref","p","overflowX","minHeight","Box","display","flexDirection","width","concat","length","transition","map","step","idx","_step$text","Stack","alignItems","flexShrink","px","src","img","alt","label","style","marginInline","maxHeight","marginBottom","Typography","variant","fontWeight","gutterBottom","text","split","line","lineIdx","content","mt","DialogActions","pb","MobileStepper","justifyContent","mr","nextButton","backButton","Button","prev"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/media-right/guide-steps/index.tsx"],"sourcesContent":["import { useState, useRef, useEffect } from 'react'\r\nimport { Dialog, DialogContent, DialogActions, Button, IconButton, Box, Typography, Stack, Slide, DialogTitle } from '@mui/material'\r\nimport HelpOutlineIcon from '@mui/icons-material/HelpOutline'\r\nimport CloseIcon from '@mui/icons-material/Close'\r\nimport type { FC } from 'react'\r\nimport type { DialogProps, IconButtonProps, StackProps } from '@mui/material'\r\n\r\nexport interface IGuideStep {\r\n label: string\r\n img: string\r\n text?: string\r\n content?: React.ReactNode\r\n}\r\n\r\nexport interface IGuideStepsProps {\r\n title?: string\r\n iconButtonProps?: IconButtonProps\r\n dialogProps?: DialogProps\r\n contentProps?: StackProps\r\n steps: IGuideStep[]\r\n}\r\n\r\nexport const GuideSteps: FC<IGuideStepsProps> = ({ title, iconButtonProps, dialogProps, contentProps, steps }) => {\r\n const [open, setOpen] = useState(false)\r\n const [activeStep, setActiveStep] = useState(0)\r\n const [stepDirection, setStepDirection] = useState<'next' | 'back'>('next')\r\n const contentRef = useRef<HTMLDivElement>(null)\r\n const handleOpen = () => {\r\n setOpen(true)\r\n setActiveStep(0)\r\n setStepDirection('next')\r\n }\r\n const handleClose = () => {\r\n setOpen(false)\r\n }\r\n const handleNext = () => {\r\n setStepDirection('next')\r\n setActiveStep((prev) => prev + 1)\r\n }\r\n const handleBack = () => {\r\n setStepDirection('back')\r\n setActiveStep((prev) => prev - 1)\r\n }\r\n\r\n useEffect(() => {\r\n if (contentRef.current) {\r\n contentRef.current.scrollTop = 0\r\n }\r\n }, [activeStep])\r\n\r\n return (\r\n <>\r\n <IconButton onClick={handleOpen} size='small' {...iconButtonProps}>\r\n <HelpOutlineIcon />\r\n </IconButton>\r\n <Dialog\r\n open={open}\r\n scroll='paper'\r\n onClose={handleClose}\r\n maxWidth='sm'\r\n fullWidth\r\n sx={{ '& .MuiDialog-paper': { width: '80%', height: 700 } }}\r\n {...dialogProps}\r\n >\r\n <DialogTitle\r\n py={2}\r\n sx={{\r\n position: 'relative',\r\n boxShadow: '0 2px 8px -4px rgba(0,0,0,0.25)',\r\n zIndex: 2\r\n }}\r\n >\r\n {title}\r\n <IconButton\r\n aria-label='close'\r\n onClick={handleClose}\r\n sx={{\r\n position: 'absolute',\r\n right: 8,\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n color: (theme) => theme.palette.grey[500],\r\n zIndex: 1\r\n }}\r\n size='small'\r\n >\r\n <CloseIcon />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent ref={contentRef} sx={{ position: 'relative', overflowX: 'hidden' }}>\r\n <Slide\r\n key={`${activeStep}-${stepDirection}`}\r\n in\r\n direction={stepDirection === 'next' ? 'left' : 'right'}\r\n timeout={320}\r\n mountOnEnter\r\n unmountOnExit\r\n >\r\n <Stack alignItems='start' px={2} {...contentProps}>\r\n {steps[activeStep]?.img && (\r\n <img\r\n src={steps[activeStep].img}\r\n alt={steps[activeStep].label}\r\n style={{ maxWidth: '100%', objectFit: 'contain', marginInline: 'auto', marginBottom: 16, borderRadius: 8 }}\r\n />\r\n )}\r\n <Typography variant='h6' fontWeight={600} gutterBottom>\r\n {steps[activeStep]?.label}\r\n </Typography>\r\n {steps[activeStep]?.text?.split('\\n').map((line, lineIdx) => (\r\n <Typography key={lineIdx} variant={lineIdx === 0 ? 'subtitle1' : 'body2'}>\r\n {line}\r\n </Typography>\r\n ))}\r\n {steps[activeStep]?.content && <Box sx={{ mt: 1, width: '100%' }}>{steps[activeStep].content}</Box>}\r\n </Stack>\r\n </Slide>\r\n </DialogContent>\r\n <DialogActions\r\n sx={{\r\n px: 3,\r\n pb: 2,\r\n boxShadow: '0 -2px 8px -4px rgba(0,0,0,0.25)',\r\n zIndex: 2\r\n }}\r\n >\r\n <Box sx={{ mr: 'auto' }} />\r\n {activeStep > 0 && (\r\n <Button onClick={handleBack} size='small'>\r\n Back\r\n </Button>\r\n )}\r\n {activeStep === steps.length - 1 ? (\r\n <Button onClick={handleClose} size='small' variant='contained'>\r\n Finish\r\n </Button>\r\n ) : (\r\n <Button onClick={handleNext} size='small' variant='contained'>\r\n Next\r\n </Button>\r\n )}\r\n </DialogActions>\r\n </Dialog>\r\n </>\r\n )\r\n}\r\n"],"names":["GuideSteps","_ref","_steps$activeStep","_steps$activeStep2","_steps$activeStep3","_steps$activeStep4","title","iconButtonProps","dialogProps","contentProps","steps","_useState","useState","_useState2","_slicedToArray","open","setOpen","_useState3","_useState4","activeStep","setActiveStep","_useState5","_useState6","stepDirection","setStepDirection","contentRef","useRef","handleClose","useEffect","current","scrollTop","_jsxs","_Fragment","children","_jsx","IconButton","_objectSpread","onClick","size","HelpOutlineIcon","Dialog","scroll","onClose","maxWidth","fullWidth","sx","width","height","DialogTitle","py","position","boxShadow","zIndex","right","top","transform","color","theme","palette","grey","CloseIcon","DialogContent","ref","overflowX","Slide","in","direction","timeout","mountOnEnter","unmountOnExit","Stack","alignItems","px","img","src","alt","label","style","objectFit","marginInline","marginBottom","borderRadius","Typography","variant","fontWeight","gutterBottom","text","split","map","line","lineIdx","content","Box","mt","concat","DialogActions","pb","mr","Button","prev","length"],"mappings":"geAsBaA,EAAmC,SAAzBC,GAA0F,IAAAC,EAAAC,EAAAC,EAAAC,EAA9DC,EAAKL,EAALK,MAAOC,EAAeN,EAAfM,gBAAiBC,EAAWP,EAAXO,YAAaC,EAAYR,EAAZQ,aAAcC,EAAKT,EAALS,MACpGC,EAAwBC,GAAS,GAAMC,EAAAC,EAAAH,EAAA,GAAhCI,EAAIF,EAAA,GAAEG,EAAOH,EAAA,GACpBI,EAAoCL,EAAS,GAAEM,EAAAJ,EAAAG,EAAA,GAAxCE,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GAChCG,EAA0CT,EAA0B,QAAOU,EAAAR,EAAAO,EAAA,GAApEE,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GAChCG,EAAaC,EAAuB,MAMpCC,EAAc,WAClBX,GAAQ,EACT,EAgBD,OANAY,EAAU,WACJH,EAAWI,UACbJ,EAAWI,QAAQC,UAAY,EAEnC,EAAG,CAACX,IAGFY,EAAAC,EAAA,CAAAC,SAAA,CACEC,EAACC,EAAUC,EAAAA,EAAA,CAACC,QAzBG,WACjBrB,GAAQ,GACRI,EAAc,GACdI,EAAiB,OAClB,EAqBoCc,KAAK,SAAY/B,GAAe,GAAA,CAAA0B,SAC/DC,EAACK,EAAkB,CAAA,MAErBR,EAACS,EAAMJ,EAAAA,EAAA,CACLrB,KAAMA,EACN0B,OAAO,QACPC,QAASf,EACTgB,SAAS,KACTC,WACA,EAAAC,GAAI,CAAE,qBAAsB,CAAEC,MAAO,MAAOC,OAAQ,OAChDvC,GAAW,GAAA,CAEfyB,SAAA,CAAAF,EAACiB,EAAW,CACVC,GAAI,EACJJ,GAAI,CACFK,SAAU,WACVC,UAAW,kCACXC,OAAQ,GACTnB,SAAA,CAEA3B,EACD4B,EAACC,EACY,CAAA,aAAA,QACXE,QAASV,EACTkB,GAAI,CACFK,SAAU,WACVG,MAAO,EACPC,IAAK,MACLC,UAAW,mBACXC,MAAO,SAACC,GAAK,OAAKA,EAAMC,QAAQC,KAAK,IAAI,EACzCP,OAAQ,GAEVd,KAAK,QAELL,SAAAC,EAAC0B,EAAY,CAAA,QAGjB1B,EAAC2B,GAAcC,IAAKrC,EAAYoB,GAAI,CAAEK,SAAU,WAAYa,UAAW,UACrE9B,SAAAC,EAAC8B,EAAK,CAEJC,IAAE,EACFC,UAA6B,SAAlB3C,EAA2B,OAAS,QAC/C4C,QAAS,IACTC,cACA,EAAAC,eAEA,EAAApC,SAAAF,EAACuC,EAAKlC,EAAAA,EAAA,CAACmC,WAAW,QAAQC,GAAI,GAAO/D,GAAY,GAAA,CAAAwB,SAAA,UAC9C/B,EAAAQ,EAAMS,UAAW,IAAAjB,OAAA,EAAjBA,EAAmBuE,MAClBvC,EAAA,MAAA,CACEwC,IAAKhE,EAAMS,GAAYsD,IACvBE,IAAKjE,EAAMS,GAAYyD,MACvBC,MAAO,CAAElC,SAAU,OAAQmC,UAAW,UAAWC,aAAc,OAAQC,aAAc,GAAIC,aAAc,KAG3G/C,EAACgD,EAAW,CAAAC,QAAQ,KAAKC,WAAY,IAAKC,cAAY,EAAApD,SAClC9B,QADkCA,EACnDO,EAAMS,UAANhB,IAAiBA,OAAjBA,EAAAA,EAAmByE,QAEJxE,QADLA,EACZM,EAAMS,UAAWf,IAAAA,GAAM,QAANA,EAAjBA,EAAmBkF,YAAI,IAAAlF,OAAA,EAAvBA,EAAyBmF,MAAM,MAAMC,IAAI,SAACC,EAAMC,GAAO,OACtDxD,EAACgD,EAAyB,CAAAC,QAAqB,IAAZO,EAAgB,YAAc,QAAOzD,SACrEwD,GADcC,EAGlB,YACArF,EAAAK,EAAMS,UAAW,IAAAd,OAAA,EAAjBA,EAAmBsF,UAAWzD,EAAC0D,EAAI,CAAA/C,GAAI,CAAEgD,GAAI,EAAG/C,MAAO,QAAQb,SAAGvB,EAAMS,GAAYwE,yBAvB/ExE,OAAU2E,OAAIvE,MA2B1BQ,EAACgE,EACC,CAAAlD,GAAI,CACF2B,GAAI,EACJwB,GAAI,EACJ7C,UAAW,mCACXC,OAAQ,GACTnB,SAAA,CAEDC,EAAC0D,EAAG,CAAC/C,GAAI,CAAEoD,GAAI,UACd9E,EAAa,GACZe,EAACgE,EAAO,CAAA7D,QAzFC,WACjBb,EAAiB,QACjBJ,EAAc,SAAC+E,GAAI,OAAKA,EAAO,GAChC,EAsFsC7D,KAAK,QAEzBL,SAAA,SAEVd,IAAeT,EAAM0F,OAAS,EAC7BlE,EAACgE,EAAO,CAAA7D,QAASV,EAAaW,KAAK,QAAQ6C,QAAQ,gCAInDjD,EAACgE,GAAO7D,QAtGC,WACjBb,EAAiB,QACjBJ,EAAc,SAAC+E,GAAI,OAAKA,EAAO,GAChC,EAmGsC7D,KAAK,QAAQ6C,QAAQ,YAEzClD,SAAA,kBAMrB"}
@@ -1,2 +1,2 @@
1
- import{mediaRightStoreOptions as t}from"./configs.js";var n=function(){var t,n;return null!==(n=(null!==(t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").split("http").join(" http").match(/[hH][tT][tT][pP][sS]?:\/\/[^\s]+/g))&&void 0!==t?t:[]).filter(function(t){return t}).map(function(t){return t.trim()}))&&void 0!==n?n:[]},r=function(){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=new Set(n(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"")),o=t.trim();return r.has(o)},o=function(){return"group_".concat(Date.now(),"_").concat(Math.random().toString(36).substr(2,9))},i=function(n){return n.length<t.MAX_GROUP},e=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100;return t.items.length<n};export{r as areDuplicatedLink,i as canAddGroup,e as canAddItemToGroup,n as convertStringToLinks,o as generateGroupId};
1
+ var t=function(){var t,n;return null!==(n=(null!==(t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").split("http").join(" http").match(/[hH][tT][tT][pP][sS]?:\/\/[^\s]+/g))&&void 0!==t?t:[]).filter(function(t){return t}).map(function(t){return t.trim()}))&&void 0!==n?n:[]},n=function(){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=new Set(t(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"")),o=n.trim();return r.has(o)},r=function(){return"group_".concat(Date.now(),"_").concat(Math.random().toString(36).substr(2,9))},o=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100;return t.items.length<n};export{n as areDuplicatedLink,o as canAddItemToGroup,t as convertStringToLinks,r as generateGroupId};
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../src/media-right/helpers.ts"],"sourcesContent":["import { mediaRightStoreOptions } from './configs'\r\nimport type { IMediaRightGroup } from './types'\r\n\r\n/**\r\n * Convert a string to an array of URLs using improved regex\r\n * @param text Input string\r\n * @returns Array of matched URLs\r\n */\r\nexport const convertStringToLinks = (text: string = ''): string[] => {\r\n const updatedText = text.split('http').join(' http')\r\n const list = updatedText.match(/[hH][tT][tT][pP][sS]?:\\/\\/[^\\s]+/g) ?? []\r\n return list.filter((x) => x).map((x) => x.trim()) ?? []\r\n}\r\n\r\n/**\r\n * Check if a link is duplicated in a string\r\n * @param linkString Input string containing links\r\n * @param value Link to check\r\n * @returns True if the link is duplicated, false otherwise\r\n */\r\nexport const areDuplicatedLink = (linkString: string = '', value: string = '') => {\r\n const linkSet = new Set(convertStringToLinks(linkString))\r\n const formatString = value.trim()\r\n return linkSet.has(formatString)\r\n}\r\n\r\n/**\r\n * Calculate total data from groups\r\n */\r\n// export const getTotalData = (groups: IMediaRightGroup[]): ICartSummary => {\r\n// return groups.reduce(\r\n// (acc, group) => {\r\n// const groupTotal = group.items.reduce((sum, item) => sum + (item.Price * item.Amount), 0)\r\n// return {\r\n// totalGroups: acc.totalGroups + 1,\r\n// totalItems: acc.totalItems + group.items.length,\r\n// totalPrice: acc.totalPrice + groupTotal\r\n// }\r\n// },\r\n// { totalGroups: 0, totalItems: 0, totalPrice: 0 }\r\n// )\r\n// }\r\n\r\n/**\r\n * Get total items and price for a specific group\r\n */\r\n// export const getGroupTotal = (group: IMediaRightGroup) => {\r\n// return group.items.reduce(\r\n// (acc, item) => ({\r\n// totalItems: acc.totalItems + 1,\r\n// totalPrice: acc.totalPrice + (item.Price * item.Amount)\r\n// }),\r\n// { totalItems: 0, totalPrice: 0 }\r\n// )\r\n// }\r\n\r\n/**\r\n * Generate unique group ID\r\n */\r\nexport const generateGroupId = () => {\r\n return `group_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`\r\n}\r\n\r\n/**\r\n * Validate group limit\r\n */\r\nexport const canAddGroup = (group: IMediaRightGroup[]): boolean => {\r\n return group.length < mediaRightStoreOptions.MAX_GROUP\r\n}\r\n/**\r\n * Validate group item limit\r\n */\r\nexport const canAddItemToGroup = (group: IMediaRightGroup, maxItems: number = 100): boolean => {\r\n return group.items.length < maxItems\r\n}\r\n"],"names":["convertStringToLinks","_updatedText$match","_list$filter$map","arguments","length","undefined","split","join","match","filter","x","map","trim","areDuplicatedLink","value","linkSet","Set","formatString","has","generateGroupId","concat","Date","now","Math","random","toString","substr","canAddGroup","group","mediaRightStoreOptions","MAX_GROUP","canAddItemToGroup","maxItems","items"],"mappings":"0DAQaA,EAAuB,WAAgC,IAAAC,EAAAC,EAGlE,OAAiDA,QAAjDA,GADmED,QAAzDA,GAFwCE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,IACzBG,MAAM,QAAQC,KAAK,SACnBC,MAAM,4CAAoCP,IAAAA,EAAAA,EAAI,IAC3DQ,OAAO,SAACC,GAAC,OAAKA,CAAC,GAAEC,IAAI,SAACD,GAAC,OAAKA,EAAEE,MAAM,UAACV,IAAAA,EAAAA,EAAI,EACvD,EAQaW,EAAoB,WAAgD,IAAtBC,EAAAX,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAgB,GACnEY,EAAU,IAAIC,IAAIhB,EAD6BG,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,KAE/Cc,EAAeH,EAAMF,OAC3B,OAAOG,EAAQG,IAAID,EACrB,EAmCaE,EAAkB,WAC7B,MAAAC,SAAAA,OAAgBC,KAAKC,MAAKF,KAAAA,OAAIG,KAAKC,SAASC,SAAS,IAAIC,OAAO,EAAG,GACrE,EAKaC,EAAc,SAACC,GAC1B,OAAOA,EAAMxB,OAASyB,EAAuBC,SAC/C,EAIaC,EAAoB,SAACH,GAA4D,IAAnCI,EAAA7B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAmB,IAC5E,OAAOyB,EAAMK,MAAM7B,OAAS4B,CAC9B"}
1
+ {"version":3,"file":"helpers.js","sources":["../../src/media-right/helpers.ts"],"sourcesContent":["import type { IMediaRightGroup } from './types'\r\n\r\n/**\r\n * Convert a string to an array of URLs using improved regex\r\n * @param text Input string\r\n * @returns Array of matched URLs\r\n */\r\nexport const convertStringToLinks = (text: string = ''): string[] => {\r\n const updatedText = text.split('http').join(' http')\r\n const list = updatedText.match(/[hH][tT][tT][pP][sS]?:\\/\\/[^\\s]+/g) ?? []\r\n return list.filter((x) => x).map((x) => x.trim()) ?? []\r\n}\r\n\r\n/**\r\n * Check if a link is duplicated in a string\r\n * @param linkString Input string containing links\r\n * @param value Link to check\r\n * @returns True if the link is duplicated, false otherwise\r\n */\r\nexport const areDuplicatedLink = (linkString: string = '', value: string = '') => {\r\n const linkSet = new Set(convertStringToLinks(linkString))\r\n const formatString = value.trim()\r\n return linkSet.has(formatString)\r\n}\r\n\r\n/**\r\n * Calculate total data from groups\r\n */\r\n// export const getTotalData = (groups: IMediaRightGroup[]): ICartSummary => {\r\n// return groups.reduce(\r\n// (acc, group) => {\r\n// const groupTotal = group.items.reduce((sum, item) => sum + (item.Price * item.Amount), 0)\r\n// return {\r\n// totalGroups: acc.totalGroups + 1,\r\n// totalItems: acc.totalItems + group.items.length,\r\n// totalPrice: acc.totalPrice + groupTotal\r\n// }\r\n// },\r\n// { totalGroups: 0, totalItems: 0, totalPrice: 0 }\r\n// )\r\n// }\r\n\r\n/**\r\n * Get total items and price for a specific group\r\n */\r\n// export const getGroupTotal = (group: IMediaRightGroup) => {\r\n// return group.items.reduce(\r\n// (acc, item) => ({\r\n// totalItems: acc.totalItems + 1,\r\n// totalPrice: acc.totalPrice + (item.Price * item.Amount)\r\n// }),\r\n// { totalItems: 0, totalPrice: 0 }\r\n// )\r\n// }\r\n\r\n/**\r\n * Generate unique group ID\r\n */\r\nexport const generateGroupId = () => {\r\n return `group_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`\r\n}\r\n\r\n/**\r\n * Validate group item limit\r\n */\r\nexport const canAddItemToGroup = (group: IMediaRightGroup, maxItems: number = 100): boolean => {\r\n return group.items.length < maxItems\r\n}\r\n"],"names":["convertStringToLinks","_updatedText$match","_list$filter$map","arguments","length","undefined","split","join","match","filter","x","map","trim","areDuplicatedLink","value","linkSet","Set","formatString","has","generateGroupId","concat","Date","now","Math","random","toString","substr","canAddItemToGroup","group","maxItems","items"],"mappings":"IAOaA,EAAuB,WAAgC,IAAAC,EAAAC,EAGlE,OAAiDA,QAAjDA,GADmED,QAAzDA,GAFwCE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,IACzBG,MAAM,QAAQC,KAAK,SACnBC,MAAM,4CAAoCP,IAAAA,EAAAA,EAAI,IAC3DQ,OAAO,SAACC,GAAC,OAAKA,CAAC,GAAEC,IAAI,SAACD,GAAC,OAAKA,EAAEE,MAAM,UAACV,IAAAA,EAAAA,EAAI,EACvD,EAQaW,EAAoB,WAAgD,IAAtBC,EAAAX,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAgB,GACnEY,EAAU,IAAIC,IAAIhB,EAD6BG,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,KAE/Cc,EAAeH,EAAMF,OAC3B,OAAOG,EAAQG,IAAID,EACrB,EAmCaE,EAAkB,WAC7B,MAAAC,SAAAA,OAAgBC,KAAKC,MAAKF,KAAAA,OAAIG,KAAKC,SAASC,SAAS,IAAIC,OAAO,EAAG,GACrE,EAKaC,EAAoB,SAACC,GAA4D,IAAnCC,EAAA1B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAmB,IAC5E,OAAOyB,EAAME,MAAM1B,OAASyB,CAC9B"}
@@ -1,2 +1,2 @@
1
- import{slicedToArray as e}from"../_virtual/_rollupPluginBabelHelpers.js";import{useRef as n,useState as r,useEffect as t}from"react";import{MediaRightService as o,mediaRightService as a}from"./service.js";function u(u){var l=n(!1);null!=u&&u.localStorageKey&&!l.current&&o.setOptions({localStorageKey:u.localStorageKey});var c=r(function(){return a.getGroupsMap()}),i=e(c,2),p=i[0],f=i[1];return t(function(){l.current||(a.initialize(),l.current=!0);var e=a.subscribe("stateChange",function(e){var n=e.groups;f(n)});return function(){e&&e()}},[]),{groups:Object.values(p),groupsMap:p}}function l(e){var r=n(!1);null!=e&&e.localStorageKey&&!r.current&&(o.setOptions({localStorageKey:e.localStorageKey}),r.current=!0);return{addGroup:function(e){a.addGroup(e)},updateGroup:function(e,n){a.updateGroup(e,n)},removeGroup:function(e){a.removeGroup(e)},addItem:function(e){a.addItem(e)},updateItem:function(e,n,r){a.updateItem(e,n,r)},removeItem:function(e,n){a.removeItem(e,n)},addChannel:function(e,n){a.addChannel(e,n)},updateChannel:function(e,n,r){a.updateChannel(e,n,r)},removeChannel:function(e,n){a.removeChannel(e,n)},clearChannels:function(e){a.clearChannels(e)},clearCart:function(){a.clearAll()}}}export{l as useMediaRightActions,u as useMediaRightStore};
1
+ import{slicedToArray as r}from"../_virtual/_rollupPluginBabelHelpers.js";import{useRef as n,useState as e,useEffect as t}from"react";import{MediaRightService as u,mediaRightService as o}from"./service.js";function a(a){var i=n(!1);a&&!i.current&&u.setOptions(a);var c=e(function(){return o.getGroupsMap()}),p=r(c,2),l=p[0],s=p[1];return t(function(){i.current||(o.initialize(),i.current=!0);var r=o.subscribe("stateChange",function(r){var n=r.groups;s(n)});return function(){r&&r()}},[]),{groups:Object.values(l),groupsMap:l,options:o.getOptions()}}function i(r){var e=n(!1);r&&!e.current&&(u.setOptions(r),e.current=!0);return{addGroup:function(r){return o.addGroup(r)},updateGroup:function(r,n){return o.updateGroup(r,n)},removeGroup:function(r){return o.removeGroup(r)},addItem:function(r){return o.addItem(r)},updateItem:function(r,n,e){return o.updateItem(r,n,e)},removeItem:function(r,n){return o.removeItem(r,n)},addChannel:function(r,n){return o.addChannel(r,n)},updateChannel:function(r,n,e){return o.updateChannel(r,n,e)},removeChannel:function(r,n){return o.removeChannel(r,n)},clearChannels:function(r){return o.clearChannels(r)},clearCart:function(){return o.clearAll()}}}export{i as useMediaRightActions,a as useMediaRightStore};
2
2
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../src/media-right/hooks.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react'\r\nimport { mediaRightService, MediaRightService } from './service'\r\nimport { IMediaRightChannel, IMediaRightChannelCreate, IMediaRightGroup, IMediaRightItem } from './types'\r\n\r\nexport interface IMediaRightStoreOptions {\r\n localStorageKey?: string\r\n}\r\n\r\nexport function useMediaRightStore<O = any>(params?: IMediaRightStoreOptions) {\r\n const initializedRef = useRef(false)\r\n\r\n // Set custom localStorage key BEFORE getting initial data\r\n if (params?.localStorageKey && !initializedRef.current) {\r\n MediaRightService.setOptions({ localStorageKey: params.localStorageKey })\r\n }\r\n\r\n const [groups, setGroups] = useState<Record<string, IMediaRightGroup<O>>>(\r\n () => mediaRightService.getGroupsMap() as Record<string, IMediaRightGroup<O>>\r\n )\r\n\r\n useEffect(() => {\r\n // Initialize and subscribe to changes\r\n if (!initializedRef.current) {\r\n mediaRightService.initialize()\r\n initializedRef.current = true\r\n }\r\n\r\n const unsubscribe = mediaRightService.subscribe('stateChange', ({ groups }) => {\r\n setGroups(groups as Record<string, IMediaRightGroup<O>>)\r\n })\r\n\r\n return () => {\r\n if (unsubscribe) unsubscribe()\r\n }\r\n }, [])\r\n\r\n return { groups: Object.values(groups), groupsMap: groups }\r\n}\r\n\r\nexport function useMediaRightActions<O = any>(params?: IMediaRightStoreOptions) {\r\n const initializedRef = useRef(false)\r\n\r\n // Set custom localStorage key ONCE on mount\r\n if (params?.localStorageKey && !initializedRef.current) {\r\n MediaRightService.setOptions({ localStorageKey: params.localStorageKey })\r\n initializedRef.current = true\r\n }\r\n\r\n const addGroup = (group: Omit<IMediaRightGroup<O>, 'id' | 'createdAt' | 'items' | 'channels'>) => {\r\n mediaRightService.addGroup(group)\r\n }\r\n\r\n const updateGroup = (groupId: string, updates: Partial<Pick<IMediaRightGroup<O>, 'name'>>) => {\r\n mediaRightService.updateGroup(groupId, updates)\r\n }\r\n\r\n const removeGroup = (groupId: string) => {\r\n mediaRightService.removeGroup(groupId)\r\n }\r\n\r\n const addItem = (item: IMediaRightItem<O>) => {\r\n mediaRightService.addItem(item)\r\n }\r\n\r\n const updateItem = (groupId: string, productId: string, updates: Partial<IMediaRightItem<O>>) => {\r\n mediaRightService.updateItem(groupId, productId, updates)\r\n }\r\n\r\n const removeItem = (groupId: string, productId: string) => {\r\n mediaRightService.removeItem(groupId, productId)\r\n }\r\n\r\n const clearCart = () => {\r\n mediaRightService.clearAll()\r\n }\r\n\r\n const addChannel = (groupId: string, channel: IMediaRightChannelCreate) => {\r\n mediaRightService.addChannel(groupId, channel)\r\n }\r\n\r\n const updateChannel = (groupId: string, channelId: string, updates: Partial<IMediaRightChannel>) => {\r\n mediaRightService.updateChannel(groupId, channelId, updates)\r\n }\r\n\r\n const removeChannel = (groupId: string, channelId: string) => {\r\n mediaRightService.removeChannel(groupId, channelId)\r\n }\r\n\r\n const clearChannels = (groupId: string) => {\r\n mediaRightService.clearChannels(groupId)\r\n }\r\n\r\n return {\r\n addGroup,\r\n updateGroup,\r\n removeGroup,\r\n addItem,\r\n updateItem,\r\n removeItem,\r\n addChannel,\r\n updateChannel,\r\n removeChannel,\r\n clearChannels,\r\n clearCart\r\n }\r\n}\r\n"],"names":["useMediaRightStore","params","initializedRef","useRef","localStorageKey","current","MediaRightService","setOptions","_useState","useState","mediaRightService","getGroupsMap","_useState2","_slicedToArray","groups","setGroups","useEffect","initialize","unsubscribe","subscribe","_ref","Object","values","groupsMap","useMediaRightActions","addGroup","group","updateGroup","groupId","updates","removeGroup","addItem","item","updateItem","productId","removeItem","addChannel","channel","updateChannel","channelId","removeChannel","clearChannels","clearCart","clearAll"],"mappings":"6MAQM,SAAUA,EAA4BC,GAC1C,IAAMC,EAAiBC,GAAO,GAG1BF,SAAAA,EAAQG,kBAAoBF,EAAeG,SAC7CC,EAAkBC,WAAW,CAAEH,gBAAiBH,EAAOG,kBAGzD,IAAAI,EAA4BC,EAC1B,WAAA,OAAMC,EAAkBC,iBACzBC,EAAAC,EAAAL,EAAA,GAFMM,EAAMF,EAAA,GAAEG,EAASH,EAAA,GAoBxB,OAhBAI,EAAU,WAEHd,EAAeG,UAClBK,EAAkBO,aAClBf,EAAeG,SAAU,GAG3B,IAAMa,EAAcR,EAAkBS,UAAU,cAAe,SAAAC,GAAe,IAAZN,EAAMM,EAANN,OAChEC,EAAUD,EACZ,GAEA,OAAO,WACDI,GAAaA,GAClB,CACF,EAAE,IAEI,CAAEJ,OAAQO,OAAOC,OAAOR,GAASS,UAAWT,EACrD,CAEM,SAAUU,EAA8BvB,GAC5C,IAAMC,EAAiBC,GAAO,GAG1BF,SAAAA,EAAQG,kBAAoBF,EAAeG,UAC7CC,EAAkBC,WAAW,CAAEH,gBAAiBH,EAAOG,kBACvDF,EAAeG,SAAU,GA+C3B,MAAO,CACLoB,SA7Ce,SAACC,GAChBhB,EAAkBe,SAASC,EAC5B,EA4CCC,YA1CkB,SAACC,EAAiBC,GACpCnB,EAAkBiB,YAAYC,EAASC,EACxC,EAyCCC,YAvCkB,SAACF,GACnBlB,EAAkBoB,YAAYF,EAC/B,EAsCCG,QApCc,SAACC,GACftB,EAAkBqB,QAAQC,EAC3B,EAmCCC,WAjCiB,SAACL,EAAiBM,EAAmBL,GACtDnB,EAAkBuB,WAAWL,EAASM,EAAWL,EAClD,EAgCCM,WA9BiB,SAACP,EAAiBM,GACnCxB,EAAkByB,WAAWP,EAASM,EACvC,EA6BCE,WAvBiB,SAACR,EAAiBS,GACnC3B,EAAkB0B,WAAWR,EAASS,EACvC,EAsBCC,cApBoB,SAACV,EAAiBW,EAAmBV,GACzDnB,EAAkB4B,cAAcV,EAASW,EAAWV,EACrD,EAmBCW,cAjBoB,SAACZ,EAAiBW,GACtC7B,EAAkB8B,cAAcZ,EAASW,EAC1C,EAgBCE,cAdoB,SAACb,GACrBlB,EAAkB+B,cAAcb,EACjC,EAaCc,UA/BgB,WAChBhC,EAAkBiC,UACnB,EA+BH"}
1
+ {"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 type { IMediaRightChannel, IMediaRightChannelCreate, IMediaRightGroup, IMediaRightItem, IMediaRightOptions } from './types'\r\n\r\nexport type IMediaRightStoreOptions = IMediaRightOptions\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 && !initializedRef.current) {\r\n MediaRightService.setOptions(params)\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, options: mediaRightService.getOptions() }\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 && !initializedRef.current) {\r\n MediaRightService.setOptions(params)\r\n initializedRef.current = true\r\n }\r\n\r\n const addGroup = (group: Omit<IMediaRightGroup<O>, 'id' | 'createdAt' | 'items' | 'channels'>) => {\r\n return mediaRightService.addGroup(group)\r\n }\r\n\r\n const updateGroup = (groupId: string, updates: Partial<Pick<IMediaRightGroup<O>, 'name'>>) => {\r\n return mediaRightService.updateGroup(groupId, updates)\r\n }\r\n\r\n const removeGroup = (groupId: string) => {\r\n return mediaRightService.removeGroup(groupId)\r\n }\r\n\r\n const addItem = (item: IMediaRightItem<O>) => {\r\n return mediaRightService.addItem(item)\r\n }\r\n\r\n const updateItem = (groupId: string, productId: string, updates: Partial<IMediaRightItem<O>>) => {\r\n return mediaRightService.updateItem(groupId, productId, updates)\r\n }\r\n\r\n const removeItem = (groupId: string, productId: string) => {\r\n return mediaRightService.removeItem(groupId, productId)\r\n }\r\n\r\n const clearCart = () => {\r\n return mediaRightService.clearAll()\r\n }\r\n\r\n const addChannel = (groupId: string, channel: IMediaRightChannelCreate) => {\r\n return mediaRightService.addChannel(groupId, channel)\r\n }\r\n\r\n const updateChannel = (groupId: string, channelId: string, updates: Partial<IMediaRightChannel>) => {\r\n return mediaRightService.updateChannel(groupId, channelId, updates)\r\n }\r\n\r\n const removeChannel = (groupId: string, channelId: string) => {\r\n return mediaRightService.removeChannel(groupId, channelId)\r\n }\r\n\r\n const clearChannels = (groupId: string) => {\r\n return 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","current","MediaRightService","setOptions","_useState","useState","mediaRightService","getGroupsMap","_useState2","_slicedToArray","groups","setGroups","useEffect","initialize","unsubscribe","subscribe","_ref","Object","values","groupsMap","options","getOptions","useMediaRightActions","addGroup","group","updateGroup","groupId","updates","removeGroup","addItem","item","updateItem","productId","removeItem","addChannel","channel","updateChannel","channelId","removeChannel","clearChannels","clearCart","clearAll"],"mappings":"6MAMM,SAAUA,EAA4BC,GAC1C,IAAMC,EAAiBC,GAAO,GAG1BF,IAAWC,EAAeE,SAC5BC,EAAkBC,WAAWL,GAG/B,IAAAM,EAA4BC,EAC1B,WAAA,OAAMC,EAAkBC,iBACzBC,EAAAC,EAAAL,EAAA,GAFMM,EAAMF,EAAA,GAAEG,EAASH,EAAA,GAoBxB,OAhBAI,EAAU,WAEHb,EAAeE,UAClBK,EAAkBO,aAClBd,EAAeE,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,EAAQU,QAASd,EAAkBe,aACxF,CAEM,SAAUC,EAA8BxB,GAC5C,IAAMC,EAAiBC,GAAO,GAG1BF,IAAWC,EAAeE,UAC5BC,EAAkBC,WAAWL,GAC7BC,EAAeE,SAAU,GA+C3B,MAAO,CACLsB,SA7Ce,SAACC,GAChB,OAAOlB,EAAkBiB,SAASC,EACnC,EA4CCC,YA1CkB,SAACC,EAAiBC,GACpC,OAAOrB,EAAkBmB,YAAYC,EAASC,EAC/C,EAyCCC,YAvCkB,SAACF,GACnB,OAAOpB,EAAkBsB,YAAYF,EACtC,EAsCCG,QApCc,SAACC,GACf,OAAOxB,EAAkBuB,QAAQC,EAClC,EAmCCC,WAjCiB,SAACL,EAAiBM,EAAmBL,GACtD,OAAOrB,EAAkByB,WAAWL,EAASM,EAAWL,EACzD,EAgCCM,WA9BiB,SAACP,EAAiBM,GACnC,OAAO1B,EAAkB2B,WAAWP,EAASM,EAC9C,EA6BCE,WAvBiB,SAACR,EAAiBS,GACnC,OAAO7B,EAAkB4B,WAAWR,EAASS,EAC9C,EAsBCC,cApBoB,SAACV,EAAiBW,EAAmBV,GACzD,OAAOrB,EAAkB8B,cAAcV,EAASW,EAAWV,EAC5D,EAmBCW,cAjBoB,SAACZ,EAAiBW,GACtC,OAAO/B,EAAkBgC,cAAcZ,EAASW,EACjD,EAgBCE,cAdoB,SAACb,GACrB,OAAOpB,EAAkBiC,cAAcb,EACxC,EAaCc,UA/BgB,WAChB,OAAOlC,EAAkBmC,UAC1B,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"./hooks.js";export{MediaRightService,mediaRightService}from"./service.js";export{areDuplicatedLink,canAddGroup,canAddItemToGroup,convertStringToLinks,generateGroupId}from"./helpers.js";
1
+ export{mediaRightDefaultOptions}from"./configs.js";export{EChannelType}from"./types.js";export{GuideSteps}from"./guide-steps/index.js";export{MediaGroupWidget,createMediaGroupWidget}from"./media-widget/index.js";export{ModalAddMediaRight}from"./group-selector/index.js";export{useMediaRightActions,useMediaRightStore}from"./hooks.js";export{MediaRightService,mediaRightService}from"./service.js";export{areDuplicatedLink,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{jsx as t,jsxs as e,Fragment as n}from"react/jsx-runtime";import{useState as i,useCallback as l}from"react";import{useTheme as a,useMediaQuery as c,Badge as u,Drawer as s}from"@mui/material";import p from"@mui/icons-material/PlaylistPlay";import{canAddGroup as m}from"../helpers.js";import{Root as d,MenuStyled as f}from"./styled.js";import{IconButtonDark as h}from"../../components/buttons.js";import{MediaGroupAccordion as g}from"./media-group-accordion.js";import{useMediaRightStore as y,useMediaRightActions as P}from"../hooks.js";import{createCartContent as b}from"../../factory/cart-content/create.cart-content.js";import{createCartItem as v}from"../../factory/cart-item/create.cart-item.js";import{NewGroupArea as x}from"./new-group-area.js";var C=b({labels:{title:"Your Playlist",buttonCheckout:"Show in playlist",itemsSuffixMany:"playlists",itemsSuffixSingle:"playlist"},empty:{title:"Your playlist is empty",subTitle:"Try adding some playlist"}}),j=v({}),S=function(r){var b=r.localStorageKey,v=y({localStorageKey:b}).groups,S=P({localStorageKey:b}),T=a(),G=c(T.breakpoints.down("sm")),M=i(null),k=o(M,2),w=k[0],D=k[1],I=i(!1),L=o(I,2),B=L[0],K=L[1],z=function(o){S.addGroup({name:o})},A=function(o){S.updateGroup(o.id,o)},E=function(o){S.removeGroup(o)},N=function(o,r){S.removeItem(o,r)},O=l(function(){return t(C,{isMobile:G,carts:v,onClose:function(){return D(null)},onCheckout:function(){return D(null)},buttonMoveToCartProps:r.buttonMoveToCartProps,slots:{headerLeftProps:{flexDirection:"row",alignItems:"flex-end",justifyContent:"space-between",gap:1,flex:1},headerRight:function(o){return m(v)&&t(x,{onSaveGroup:z})},item:function(o){return t(g,{group:o,onEditGroup:A,onDeleteGroup:E,onDeleteMedia:N,accordionProps:{expanded:B===o.id,onChange:function(r,t){return K(!!t&&o.id)}},accordionDetailsProps:{sx:{display:"flex",flexDirection:"column",position:"relative",gap:1,p:1,"& .MuiAccordionDetails-root":{p:0}}},renderItem:function(e){return t(j,{item:e,name:e.ProductName,imageUrl:e.PictureUrl,onRemoveCart:function(){return N(o.id,e.ProductId)},itemTitleProps:r.itemTitleProps,itemTitlePropsGetter:r.itemTitlePropsGetter,onClose:function(){return D(null)}},e.ProductId)}},o.id)}}})},[v,G,r,B]);return e(n,{children:[t(h,{onClick:function(o){return D(o.currentTarget)},children:t(u,{badgeContent:v.length||0,color:"error",children:t(p,{})})}),G?t(s,{anchor:"right",open:Boolean(w),onClose:function(){return D(null)},disableScrollLock:!0,PaperProps:{sx:{width:"calc(100% - 100px)",maxWidth:360}},children:t(d,{children:O()})}):t(f,{disableScrollLock:!0,anchorEl:w,open:Boolean(w),onClose:function(){return D(null)},anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},MenuListProps:{component:"div"},children:t(d,{children:O()})})]})},T=function(o){var e=function(e){return t(S,r(r({},o),e))};return e.displayName="MediaGroupWidget",e};export{S as MediaGroupWidget,T as createMediaGroupWidget};
1
+ import{slicedToArray as o,objectSpread2 as t}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as r,jsxs as e,Fragment as n}from"react/jsx-runtime";import{useState as i,useCallback as l}from"react";import{useTheme as a,useMediaQuery as u,Badge as c,Drawer as p}from"@mui/material";import s from"@mui/icons-material/PlaylistPlay";import{Root as m,MenuStyled as d}from"./styled.js";import{IconButtonDark as f}from"../../components/buttons.js";import{MediaGroupAccordion as h}from"./media-group-accordion.js";import{useMediaRightStore as g,useMediaRightActions as P}from"../hooks.js";import{createCartContent as x}from"../../factory/cart-content/create.cart-content.js";import{createCartItem as y}from"../../factory/cart-item/create.cart-item.js";import{NewGroupArea as b}from"./new-group-area.js";var v=x({labels:{title:"Your Playlist",buttonCheckout:"Show in playlist",itemsSuffixMany:"playlists",itemsSuffixSingle:"playlist"},empty:{title:"Your playlist is empty",subTitle:"Try adding some playlist"}}),C=y({}),G=function(t){var x=g(),y=x.groups,G=x.options,j=P(),T=a(),M=u(T.breakpoints.down("sm")),S=i(null),k=o(S,2),w=k[0],D=k[1],L=i(!1),I=o(L,2),N=I[0],B=I[1],E=function(o){j.addGroup({name:o})},z=function(o){j.updateGroup(o.id,o)},A=function(o){j.removeGroup(o)},F=function(o,t){j.removeItem(o,t)},O=l(function(){return r(v,{isMobile:M,carts:y,onClose:function(){return D(null)},onCheckout:function(){return D(null)},buttonMoveToCartProps:t.buttonMoveToCartProps,slots:{headerLeftProps:{flexDirection:"row",alignItems:"flex-end",justifyContent:"space-between",gap:1,flex:1},headerRight:function(){return y.length<G.maxGroup&&r(b,{textFieldProps:{inputProps:{maxLength:G.maxNameGroup}},onSaveGroup:E})},item:function(o){return r(h,{group:o,options:G,onEditGroup:z,onDeleteGroup:A,onDeleteMedia:F,accordionProps:{expanded:N===o.id,onChange:function(t,r){return B(!!r&&o.id)}},inlineEditingProps:{textField:{inputProps:{maxLength:G.maxNameGroup}}},accordionDetailsProps:{sx:{display:"flex",flexDirection:"column",position:"relative",gap:1,p:1,"& .MuiAccordionDetails-root":{p:0}}},renderItem:function(e){return r(C,{item:e,name:e.ProductName,imageUrl:e.PictureUrl,onRemoveCart:function(){return F(o.id,e.ProductId)},itemTitleProps:t.itemTitleProps,itemTitlePropsGetter:t.itemTitlePropsGetter,onClose:function(){return D(null)}},e.ProductId)}},o.id)}}})},[y,M,t,N]);return e(n,{children:[r(f,{onClick:function(o){return D(o.currentTarget)},children:r(c,{badgeContent:y.length||0,color:"error",children:r(s,{})})}),M?r(p,{anchor:"right",open:Boolean(w),onClose:function(){return D(null)},disableScrollLock:!0,PaperProps:{sx:{width:"calc(100% - 100px)",maxWidth:360}},children:r(m,{children:O()})}):r(d,{disableScrollLock:!0,anchorEl:w,open:Boolean(w),onClose:function(){return D(null)},anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},MenuListProps:{component:"div"},children:r(m,{children:O()})})]})},j=function(o){var e=function(e){return r(G,t(t({},o),e))};return e.displayName="MediaGroupWidget",e};export{G as MediaGroupWidget,j as createMediaGroupWidget};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/media-right/media-widget/index.tsx"],"sourcesContent":["import { useCallback, useState } from 'react'\r\nimport { Badge, ButtonProps, Drawer, TypographyProps, useMediaQuery, useTheme } from '@mui/material'\r\nimport PlaylistPlayIcon from '@mui/icons-material/PlaylistPlay'\r\nimport { canAddGroup, generateGroupId } from '../helpers'\r\nimport { MenuStyled, Root } from './styled'\r\nimport { IconButtonDark } from '../../components/buttons'\r\nimport { MediaGroupAccordion } from './media-group-accordion'\r\nimport { useMediaRightStore, useMediaRightActions } from '../hooks'\r\nimport type { IMediaRightGroup, IMediaRightItem } from '../types'\r\nimport createCartContent from '../../factory/cart-content/create.cart-content'\r\nimport createCartItem from '../../factory/cart-item/create.cart-item'\r\nimport { NewGroupArea } from './new-group-area'\r\n\r\nexport interface IMediaGroupWidgetProps {\r\n itemTitleProps?: TypographyProps & { [key: string]: any }\r\n itemTitlePropsGetter?: (item: IMediaRightItem, onClose?: () => void) => TypographyProps & { [key: string]: any }\r\n onClose?: () => void\r\n localStorageKey?: string\r\n hrefCart?: string\r\n buttonMoveToCartProps?: ButtonProps & { [key: string]: any }\r\n onDetailClick?: ButtonProps['onClick']\r\n}\r\n\r\nconst CartContent = createCartContent<IMediaRightGroup>({\r\n labels: {\r\n title: 'Your Playlist',\r\n buttonCheckout: 'Show in playlist',\r\n itemsSuffixMany: 'playlists',\r\n itemsSuffixSingle: 'playlist'\r\n },\r\n empty: {\r\n title: 'Your playlist is empty',\r\n subTitle: 'Try adding some playlist'\r\n }\r\n})\r\n\r\nconst CartItem = createCartItem<IMediaRightItem>({})\r\n\r\nexport const MediaGroupWidget: React.FC<IMediaGroupWidgetProps> = (props) => {\r\n const { localStorageKey } = props\r\n const { groups } = useMediaRightStore({ localStorageKey })\r\n const actions = useMediaRightActions({ localStorageKey })\r\n const theme = useTheme()\r\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'))\r\n\r\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\r\n const [expandedGroupId, setExpandedGroupId] = useState<string | false>(false)\r\n\r\n const handleSaveNewGroup = (groupName: string) => {\r\n actions.addGroup({\r\n name: groupName\r\n })\r\n }\r\n\r\n const handleEditGroup = (group: IMediaRightGroup) => {\r\n actions.updateGroup(group.id, group)\r\n }\r\n\r\n const handleDeleteGroup = (groupId: string) => {\r\n actions.removeGroup(groupId)\r\n }\r\n\r\n const handleDeleteMedia = (groupId: string, productId: string) => {\r\n actions.removeItem(groupId, productId)\r\n }\r\n\r\n const renderContent = useCallback(\r\n () => (\r\n <CartContent\r\n isMobile={isMobile}\r\n carts={groups}\r\n onClose={() => setAnchorEl(null)}\r\n onCheckout={() => setAnchorEl(null)}\r\n buttonMoveToCartProps={props.buttonMoveToCartProps}\r\n slots={{\r\n headerLeftProps: {\r\n flexDirection: 'row',\r\n alignItems: 'flex-end',\r\n justifyContent: 'space-between',\r\n gap: 1,\r\n flex: 1\r\n },\r\n headerRight: (ctx) => canAddGroup(groups) && <NewGroupArea onSaveGroup={handleSaveNewGroup} />,\r\n item: (group) => (\r\n <MediaGroupAccordion\r\n key={group.id}\r\n group={group}\r\n onEditGroup={handleEditGroup}\r\n onDeleteGroup={handleDeleteGroup}\r\n onDeleteMedia={handleDeleteMedia}\r\n accordionProps={{\r\n expanded: expandedGroupId === group.id,\r\n onChange: (_, isExpanded) => setExpandedGroupId(isExpanded ? group.id : false)\r\n }}\r\n accordionDetailsProps={{\r\n sx: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n position: 'relative',\r\n gap: 1,\r\n p: 1,\r\n '& .MuiAccordionDetails-root': { p: 0 }\r\n }\r\n }}\r\n renderItem={(item) => (\r\n <CartItem\r\n item={item}\r\n key={item.ProductId}\r\n name={item.ProductName}\r\n imageUrl={item.PictureUrl}\r\n onRemoveCart={() => handleDeleteMedia(group.id, item.ProductId)}\r\n itemTitleProps={props.itemTitleProps}\r\n itemTitlePropsGetter={props.itemTitlePropsGetter}\r\n onClose={() => setAnchorEl(null)}\r\n />\r\n )}\r\n />\r\n )\r\n }}\r\n />\r\n ),\r\n [groups, isMobile, props, expandedGroupId]\r\n )\r\n\r\n return (\r\n <>\r\n <IconButtonDark onClick={(e) => setAnchorEl(e.currentTarget)}>\r\n <Badge badgeContent={groups.length || 0} color='error'>\r\n <PlaylistPlayIcon />\r\n </Badge>\r\n </IconButtonDark>\r\n {isMobile ? (\r\n <Drawer\r\n anchor='right'\r\n open={Boolean(anchorEl)}\r\n onClose={() => setAnchorEl(null)}\r\n disableScrollLock\r\n PaperProps={{ sx: { width: 'calc(100% - 100px)', maxWidth: 360 } }}\r\n >\r\n <Root>{renderContent()}</Root>\r\n </Drawer>\r\n ) : (\r\n <MenuStyled\r\n disableScrollLock\r\n anchorEl={anchorEl}\r\n open={Boolean(anchorEl)}\r\n onClose={() => setAnchorEl(null)}\r\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n MenuListProps={{ component: 'div' }}\r\n >\r\n <Root>{renderContent()}</Root>\r\n </MenuStyled>\r\n )}\r\n </>\r\n )\r\n}\r\n\r\nexport const createMediaGroupWidget = (params: IMediaGroupWidgetProps) => {\r\n const _MediaGroupWidget: React.FC<Partial<IMediaGroupWidgetProps>> = (props) => <MediaGroupWidget {...params} {...props} />\r\n _MediaGroupWidget.displayName = 'MediaGroupWidget'\r\n return _MediaGroupWidget\r\n}\r\n"],"names":["CartContent","createCartContent","labels","title","buttonCheckout","itemsSuffixMany","itemsSuffixSingle","empty","subTitle","CartItem","createCartItem","MediaGroupWidget","props","localStorageKey","groups","useMediaRightStore","actions","useMediaRightActions","theme","useTheme","isMobile","useMediaQuery","breakpoints","down","_useState","useState","_useState2","_slicedToArray","anchorEl","setAnchorEl","_useState3","_useState4","expandedGroupId","setExpandedGroupId","handleSaveNewGroup","groupName","addGroup","name","handleEditGroup","group","updateGroup","id","handleDeleteGroup","groupId","removeGroup","handleDeleteMedia","productId","removeItem","renderContent","useCallback","_jsx","carts","onClose","onCheckout","buttonMoveToCartProps","slots","headerLeftProps","flexDirection","alignItems","justifyContent","gap","flex","headerRight","ctx","canAddGroup","NewGroupArea","onSaveGroup","item","MediaGroupAccordion","onEditGroup","onDeleteGroup","onDeleteMedia","accordionProps","expanded","onChange","_","isExpanded","accordionDetailsProps","sx","display","position","p","renderItem","ProductName","imageUrl","PictureUrl","onRemoveCart","ProductId","itemTitleProps","itemTitlePropsGetter","_jsxs","_Fragment","children","IconButtonDark","onClick","e","currentTarget","Badge","badgeContent","length","color","PlaylistPlayIcon","Drawer","anchor","open","Boolean","disableScrollLock","PaperProps","width","maxWidth","Root","MenuStyled","anchorOrigin","vertical","horizontal","transformOrigin","MenuListProps","component","createMediaGroupWidget","params","_MediaGroupWidget","_objectSpread","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/media-right/media-widget/index.tsx"],"sourcesContent":["import { useCallback, useState } from 'react'\r\nimport { Badge, ButtonProps, Drawer, TypographyProps, useMediaQuery, useTheme } from '@mui/material'\r\nimport PlaylistPlayIcon from '@mui/icons-material/PlaylistPlay'\r\nimport { MenuStyled, Root } from './styled'\r\nimport { IconButtonDark } from '../../components/buttons'\r\nimport { MediaGroupAccordion } from './media-group-accordion'\r\nimport { useMediaRightStore, useMediaRightActions } from '../hooks'\r\nimport type { IMediaRightGroup, IMediaRightItem } from '../types'\r\nimport createCartContent from '../../factory/cart-content/create.cart-content'\r\nimport createCartItem from '../../factory/cart-item/create.cart-item'\r\nimport { NewGroupArea } from './new-group-area'\r\n\r\nexport interface IMediaGroupWidgetProps {\r\n itemTitleProps?: TypographyProps & { [key: string]: any }\r\n itemTitlePropsGetter?: (item: IMediaRightItem, onClose?: () => void) => TypographyProps & { [key: string]: any }\r\n onClose?: () => void\r\n hrefCart?: string\r\n buttonMoveToCartProps?: ButtonProps & { [key: string]: any }\r\n onDetailClick?: ButtonProps['onClick']\r\n}\r\n\r\nconst CartContent = createCartContent<IMediaRightGroup>({\r\n labels: {\r\n title: 'Your Playlist',\r\n buttonCheckout: 'Show in playlist',\r\n itemsSuffixMany: 'playlists',\r\n itemsSuffixSingle: 'playlist'\r\n },\r\n empty: {\r\n title: 'Your playlist is empty',\r\n subTitle: 'Try adding some playlist'\r\n }\r\n})\r\n\r\nconst CartItem = createCartItem<IMediaRightItem>({})\r\n\r\nexport const MediaGroupWidget: React.FC<IMediaGroupWidgetProps> = (props) => {\r\n const { groups, options } = useMediaRightStore()\r\n const actions = useMediaRightActions()\r\n const theme = useTheme()\r\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'))\r\n\r\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\r\n const [expandedGroupId, setExpandedGroupId] = useState<string | false>(false)\r\n\r\n const handleSaveNewGroup = (groupName: string) => {\r\n actions.addGroup({\r\n name: groupName\r\n })\r\n }\r\n\r\n const handleEditGroup = (group: IMediaRightGroup) => {\r\n actions.updateGroup(group.id, group)\r\n }\r\n\r\n const handleDeleteGroup = (groupId: string) => {\r\n actions.removeGroup(groupId)\r\n }\r\n\r\n const handleDeleteMedia = (groupId: string, productId: string) => {\r\n actions.removeItem(groupId, productId)\r\n }\r\n\r\n const renderContent = useCallback(\r\n () => (\r\n <CartContent\r\n isMobile={isMobile}\r\n carts={groups}\r\n onClose={() => setAnchorEl(null)}\r\n onCheckout={() => setAnchorEl(null)}\r\n buttonMoveToCartProps={props.buttonMoveToCartProps}\r\n slots={{\r\n headerLeftProps: {\r\n flexDirection: 'row',\r\n alignItems: 'flex-end',\r\n justifyContent: 'space-between',\r\n gap: 1,\r\n flex: 1\r\n },\r\n headerRight: () =>\r\n groups.length < options.maxGroup && (\r\n <NewGroupArea textFieldProps={{ inputProps: { maxLength: options.maxNameGroup } }} onSaveGroup={handleSaveNewGroup} />\r\n ),\r\n item: (group) => (\r\n <MediaGroupAccordion\r\n key={group.id}\r\n group={group}\r\n options={options}\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 inlineEditingProps={{\r\n textField: {\r\n inputProps: { maxLength: options.maxNameGroup }\r\n }\r\n }}\r\n accordionDetailsProps={{\r\n sx: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n position: 'relative',\r\n gap: 1,\r\n p: 1,\r\n '& .MuiAccordionDetails-root': { p: 0 }\r\n }\r\n }}\r\n renderItem={(item) => (\r\n <CartItem\r\n item={item}\r\n key={item.ProductId}\r\n name={item.ProductName}\r\n imageUrl={item.PictureUrl}\r\n onRemoveCart={() => handleDeleteMedia(group.id, item.ProductId)}\r\n itemTitleProps={props.itemTitleProps}\r\n itemTitlePropsGetter={props.itemTitlePropsGetter}\r\n onClose={() => setAnchorEl(null)}\r\n />\r\n )}\r\n />\r\n )\r\n }}\r\n />\r\n ),\r\n [groups, isMobile, props, expandedGroupId]\r\n )\r\n\r\n return (\r\n <>\r\n <IconButtonDark onClick={(e) => setAnchorEl(e.currentTarget)}>\r\n <Badge badgeContent={groups.length || 0} color='error'>\r\n <PlaylistPlayIcon />\r\n </Badge>\r\n </IconButtonDark>\r\n {isMobile ? (\r\n <Drawer\r\n anchor='right'\r\n open={Boolean(anchorEl)}\r\n onClose={() => setAnchorEl(null)}\r\n disableScrollLock\r\n PaperProps={{ sx: { width: 'calc(100% - 100px)', maxWidth: 360 } }}\r\n >\r\n <Root>{renderContent()}</Root>\r\n </Drawer>\r\n ) : (\r\n <MenuStyled\r\n disableScrollLock\r\n anchorEl={anchorEl}\r\n open={Boolean(anchorEl)}\r\n onClose={() => setAnchorEl(null)}\r\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n MenuListProps={{ component: 'div' }}\r\n >\r\n <Root>{renderContent()}</Root>\r\n </MenuStyled>\r\n )}\r\n </>\r\n )\r\n}\r\n\r\nexport const createMediaGroupWidget = (params: IMediaGroupWidgetProps) => {\r\n const _MediaGroupWidget: React.FC<Partial<IMediaGroupWidgetProps>> = (props) => <MediaGroupWidget {...params} {...props} />\r\n _MediaGroupWidget.displayName = 'MediaGroupWidget'\r\n return _MediaGroupWidget\r\n}\r\n"],"names":["CartContent","createCartContent","labels","title","buttonCheckout","itemsSuffixMany","itemsSuffixSingle","empty","subTitle","CartItem","createCartItem","MediaGroupWidget","props","_useMediaRightStore","useMediaRightStore","groups","options","actions","useMediaRightActions","theme","useTheme","isMobile","useMediaQuery","breakpoints","down","_useState","useState","_useState2","_slicedToArray","anchorEl","setAnchorEl","_useState3","_useState4","expandedGroupId","setExpandedGroupId","handleSaveNewGroup","groupName","addGroup","name","handleEditGroup","group","updateGroup","id","handleDeleteGroup","groupId","removeGroup","handleDeleteMedia","productId","removeItem","renderContent","useCallback","_jsx","carts","onClose","onCheckout","buttonMoveToCartProps","slots","headerLeftProps","flexDirection","alignItems","justifyContent","gap","flex","headerRight","length","maxGroup","NewGroupArea","textFieldProps","inputProps","maxLength","maxNameGroup","onSaveGroup","item","MediaGroupAccordion","onEditGroup","onDeleteGroup","onDeleteMedia","accordionProps","expanded","onChange","_","isExpanded","inlineEditingProps","textField","accordionDetailsProps","sx","display","position","p","renderItem","ProductName","imageUrl","PictureUrl","onRemoveCart","ProductId","itemTitleProps","itemTitlePropsGetter","_jsxs","_Fragment","children","IconButtonDark","onClick","e","currentTarget","Badge","badgeContent","color","PlaylistPlayIcon","Drawer","anchor","open","Boolean","disableScrollLock","PaperProps","width","maxWidth","Root","MenuStyled","anchorOrigin","vertical","horizontal","transformOrigin","MenuListProps","component","createMediaGroupWidget","params","_MediaGroupWidget","_objectSpread","displayName"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as o,slicedToArray as r,objectSpread2 as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as i,jsx as n}from"react/jsx-runtime";import{useState as t}from"react";import{styled as a,Accordion as m,accordionSummaryClasses as l,Box as p,Typography as d,AccordionSummary as c,Badge as s,IconButton as u,AccordionDetails as g}from"@mui/material";import f from"@mui/icons-material/Edit";import x from"@mui/icons-material/ExpandMore";import h from"@mui/icons-material/FolderOutlined";import{DeleteButton as b}from"./button.delete.js";import{InlineEditing as y}from"./inline-editing.js";import{mediaRightStoreOptions as v}from"../configs.js";import{NoDataPanel as P}from"../../components/no-data-panel.js";var k=function(o){var a,m=t(!1),l=r(m,2),p=l[0],d=l[1];return i(W,e(e({component:"div"},o.accordionProps),{},{sx:e({my:"0 !important"},null===(a=o.accordionProps)||void 0===a?void 0:a.sx),children:[n(c,e(e({component:"div",expandIcon:n(x,{})},o.accordionSummaryProps),{},{children:i(j,{children:[n(s,{badgeContent:o.group.items.length,color:"primary",children:n(h,{fontSize:"small"})}),i(y,{isEdit:p,setShowEdit:d,onSubmit:function(r){o.onEditGroup(e(e({},o.group),{},{name:r})),d(!1)},defaultValue:o.group.name,textField:{inputProps:{maxLength:v.MAX_NAME_GROUP},sx:{flex:1,minWidth:0,"& .MuiOutlinedInput-root":{height:"32px"}}},sxForm:{flex:1},children:[n(I,{variant:"body2",noWrap:!0,title:o.group.name,children:o.group.name}),n(u,{size:"small",onClick:function(o){o.stopPropagation(),d(!0)},color:"success",children:n(f,{fontSize:"small"})}),n(b,{onDelete:function(){return o.onDeleteGroup(o.group.id)},size:"small"})]},o.group.id+o.group.name+p)]})})),n(g,e(e({},o.accordionDetailsProps),{},{children:o.group.items.length>0?o.group.items.map(function(r){return o.renderItem?o.renderItem(r):null}):n(P,{title:"No media in this playlist",sx:{flex:1}})}))]}))},W=a(m)(o({backgroundColor:"transparent",boxShadow:"none",backgroundImage:"none","&:before":{display:"none"},"&.Mui-expanded":{margin:0}},".".concat(l.root),o({position:"sticky",top:0,zIndex:1,background:"rgba(var(--color-bg-rba),0.7)",backdropFilter:"blur(500px)",WebkitBackdropFilter:"blur(500px)",borderRadius:"12px",minWidth:0},"& .".concat(l.content),{minWidth:0,margin:0}))),j=a(p)(function(o){return{display:"flex",alignItems:"center",flex:1,gap:o.theme.spacing(1),minWidth:0}}),I=a(d)(function(o){var r=o.theme;return{fontWeight:600,flex:1,minWidth:0,color:r.palette.text.primary,marginLeft:r.spacing(1)}});export{j as ItemBox,I as ItemTitle,k as MediaGroupAccordion,W as PlaylistAccordion};
1
+ import{defineProperty as i,slicedToArray as o,objectSpread2 as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as n,jsx as r}from"react/jsx-runtime";import{useState as t}from"react";import{styled as a,Accordion as l,alpha as d,accordionSummaryClasses as m,Box as p,Typography as u,AccordionSummary as c,Badge as s,IconButton as g,AccordionDetails as f}from"@mui/material";import x from"@mui/icons-material/Edit";import h from"@mui/icons-material/ExpandMore";import b from"@mui/icons-material/FolderOutlined";import{DeleteButton as v}from"./button.delete.js";import{InlineEditing as y}from"./inline-editing.js";import{NoDataPanel as P}from"../../components/no-data-panel.js";var k=function(i){var a,l,d,m=t(!1),p=o(m,2),u=p[0],k=p[1];return n(E,e(e({component:"div"},i.accordionProps),{},{sx:e({my:"0 !important"},null===(a=i.accordionProps)||void 0===a?void 0:a.sx),children:[r(c,e(e({component:"div",expandIcon:r(h,{})},i.accordionSummaryProps),{},{children:n(W,{children:[r(s,{badgeContent:i.group.items.length,color:"primary",children:r(b,{fontSize:"small"})}),n(y,e(e({isEdit:u,setShowEdit:k,onSubmit:function(o){i.onEditGroup(e(e({},i.group),{},{name:o})),k(!1)},defaultValue:i.group.name,sxForm:{flex:1}},i.inlineEditingProps),{},{textField:e(e({},null===(l=i.inlineEditingProps)||void 0===l?void 0:l.textField),{},{sx:e({flex:1,minWidth:0,"& .MuiOutlinedInput-root":{height:"32px"}},null===(d=i.inlineEditingProps)||void 0===d||null===(d=d.textField)||void 0===d?void 0:d.sx)}),children:[r(F,{variant:"body2",noWrap:!0,title:i.group.name,children:i.group.name}),r(g,{size:"small",onClick:function(i){i.stopPropagation(),k(!0)},color:"success",children:r(x,{fontSize:"small"})}),r(v,{onDelete:function(){return i.onDeleteGroup(i.group.id)},size:"small"})]}),i.group.id+i.group.name+u)]})})),r(f,e(e({},i.accordionDetailsProps),{},{children:i.group.items.length>0?i.group.items.map(function(o){return i.renderItem?i.renderItem(o):null}):r(P,{title:"No media in this playlist",sx:{flex:1}})}))]}))},E=a(l)(function(o){var e=o.theme;return i({backgroundColor:"transparent",boxShadow:"none",backgroundImage:"none","&:before":{display:"none"},"&.Mui-expanded":{margin:0}},".".concat(m.root),i({position:"sticky",top:0,zIndex:1,background:d(e.palette.background.paper,.6),backdropFilter:"blur(500px)",WebkitBackdropFilter:"blur(500px)",borderRadius:"12px",minWidth:0},"& .".concat(m.content),{minWidth:0,margin:0}))}),W=a(p)(function(i){return{display:"flex",alignItems:"center",flex:1,gap:i.theme.spacing(1),minWidth:0}}),F=a(u)(function(i){var o=i.theme;return{fontWeight:600,flex:1,minWidth:0,color:o.palette.text.primary,marginLeft:o.spacing(1)}});export{W as ItemBox,F as ItemTitle,k as MediaGroupAccordion,E as PlaylistAccordion};
2
2
  //# sourceMappingURL=media-group-accordion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"media-group-accordion.js","sources":["../../../src/media-right/media-widget/media-group-accordion.tsx"],"sourcesContent":["// imports\r\nimport { useState } from 'react'\r\nimport { Accordion, AccordionSummary, AccordionDetails, Box, Typography, IconButton, styled, accordionSummaryClasses, Badge } from '@mui/material'\r\nimport EditIcon from '@mui/icons-material/Edit'\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore'\r\nimport FolderOutlinedIcon from '@mui/icons-material/FolderOutlined'\r\nimport { DeleteButton } from './button.delete'\r\nimport { InlineEditing } from './inline-editing'\r\nimport { mediaRightStoreOptions } from '../configs'\r\nimport { NoDataPanel } from '../../components'\r\n// types\r\nimport type { ComponentType, FC, MouseEvent } from 'react'\r\nimport type { AccordionProps, AccordionDetailsProps, AccordionSummaryProps, BoxProps, TypographyProps } from '@mui/material'\r\nimport type { IMediaRightGroup, IMediaRightItem } from '../types'\r\n\r\nexport interface IMediaGroupAccordionProps {\r\n group: IMediaRightGroup\r\n accordionProps?: Partial<AccordionProps>\r\n accordionSummaryProps?: Partial<AccordionSummaryProps>\r\n accordionDetailsProps?: Partial<AccordionDetailsProps>\r\n renderItem?: (item: IMediaRightItem) => React.ReactNode\r\n onEditGroup: (group: IMediaRightGroup) => void\r\n onDeleteGroup: (groupId: string) => void\r\n onDeleteMedia: (groupId: string, mediaId: string) => void\r\n}\r\n\r\nexport const MediaGroupAccordion: FC<IMediaGroupAccordionProps> = (props) => {\r\n const [isEditing, setIsEditing] = useState(false)\r\n\r\n const handleSaveEdit = (value: string) => {\r\n props.onEditGroup({ ...props.group, name: value })\r\n setIsEditing(false)\r\n }\r\n\r\n const handleEditClick = (e: MouseEvent) => {\r\n e.stopPropagation()\r\n setIsEditing(true)\r\n }\r\n\r\n return (\r\n <PlaylistAccordion component='div' {...props.accordionProps} sx={{ my: '0 !important', ...props.accordionProps?.sx }}>\r\n <AccordionSummary component='div' expandIcon={<ExpandMoreIcon />} {...props.accordionSummaryProps}>\r\n <ItemBox>\r\n <Badge badgeContent={props.group.items.length} color='primary'>\r\n <FolderOutlinedIcon fontSize='small' />\r\n </Badge>\r\n <InlineEditing\r\n key={props.group.id + props.group.name + isEditing}\r\n isEdit={isEditing}\r\n setShowEdit={setIsEditing}\r\n onSubmit={handleSaveEdit}\r\n defaultValue={props.group.name}\r\n textField={{\r\n inputProps: { maxLength: mediaRightStoreOptions.MAX_NAME_GROUP },\r\n sx: { flex: 1, minWidth: 0, '& .MuiOutlinedInput-root': { height: '32px' } }\r\n }}\r\n sxForm={{ flex: 1 }}\r\n >\r\n <ItemTitle variant='body2' noWrap title={props.group.name}>\r\n {props.group.name}\r\n </ItemTitle>\r\n {/* <Chip sx={{ fontSize: '12px' }} label={`${props.group.items.length} items`} size='small' /> */}\r\n <IconButton size='small' onClick={handleEditClick} color='success'>\r\n <EditIcon fontSize='small' />\r\n </IconButton>\r\n <DeleteButton onDelete={() => props.onDeleteGroup(props.group.id)} size='small' />\r\n </InlineEditing>\r\n </ItemBox>\r\n </AccordionSummary>\r\n <AccordionDetails {...props.accordionDetailsProps}>\r\n {props.group.items.length > 0 ? (\r\n props.group.items.map((item) => (props.renderItem ? props.renderItem(item) : null))\r\n ) : (\r\n <NoDataPanel title={'No media in this playlist'} sx={{ flex: 1 }} />\r\n )}\r\n </AccordionDetails>\r\n </PlaylistAccordion>\r\n )\r\n}\r\n\r\nexport const PlaylistAccordion: ComponentType<AccordionProps> = styled(Accordion)({\r\n backgroundColor: 'transparent',\r\n boxShadow: 'none',\r\n backgroundImage: 'none',\r\n '&:before': { display: 'none' },\r\n '&.Mui-expanded': { margin: 0 },\r\n [`.${accordionSummaryClasses.root}`]: {\r\n position: 'sticky',\r\n top: 0,\r\n zIndex: 1,\r\n background: 'rgba(var(--color-bg-rba),0.7)',\r\n backdropFilter: 'blur(500px)',\r\n WebkitBackdropFilter: 'blur(500px)',\r\n borderRadius: '12px',\r\n minWidth: 0,\r\n [`& .${accordionSummaryClasses.content}`]: {\r\n minWidth: 0,\r\n margin: 0\r\n }\r\n }\r\n})\r\n\r\nexport const ItemBox: ComponentType<BoxProps> = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n flex: 1,\r\n gap: theme.spacing(1),\r\n minWidth: 0\r\n}))\r\n\r\nexport const ItemTitle: ComponentType<TypographyProps> = styled(Typography)(({ theme }) => ({\r\n fontWeight: 600,\r\n flex: 1,\r\n minWidth: 0,\r\n color: theme.palette.text.primary,\r\n marginLeft: theme.spacing(1)\r\n}))\r\n"],"names":["MediaGroupAccordion","props","_props$accordionProps","_useState","useState","_useState2","_slicedToArray","isEditing","setIsEditing","_jsxs","PlaylistAccordion","_objectSpread","component","accordionProps","sx","my","_jsx","AccordionSummary","expandIcon","ExpandMoreIcon","accordionSummaryProps","children","ItemBox","Badge","badgeContent","group","items","length","color","FolderOutlinedIcon","fontSize","InlineEditing","isEdit","setShowEdit","onSubmit","value","onEditGroup","name","defaultValue","textField","inputProps","maxLength","mediaRightStoreOptions","MAX_NAME_GROUP","flex","minWidth","height","sxForm","ItemTitle","variant","noWrap","title","IconButton","size","onClick","e","stopPropagation","EditIcon","DeleteButton","onDelete","onDeleteGroup","id","AccordionDetails","accordionDetailsProps","map","item","renderItem","NoDataPanel","styled","Accordion","_defineProperty","backgroundColor","boxShadow","backgroundImage","display","margin","concat","accordionSummaryClasses","root","position","top","zIndex","background","backdropFilter","WebkitBackdropFilter","borderRadius","content","Box","_ref","alignItems","gap","theme","spacing","Typography","_ref2","fontWeight","palette","text","primary","marginLeft"],"mappings":"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"}
1
+ {"version":3,"file":"media-group-accordion.js","sources":["../../../src/media-right/media-widget/media-group-accordion.tsx"],"sourcesContent":["// imports\r\nimport { useState } from 'react'\r\nimport { Accordion, AccordionSummary, AccordionDetails, Box } from '@mui/material'\r\nimport { Typography, IconButton, styled, accordionSummaryClasses, Badge, alpha } from '@mui/material'\r\nimport EditIcon from '@mui/icons-material/Edit'\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore'\r\nimport FolderOutlinedIcon from '@mui/icons-material/FolderOutlined'\r\nimport { DeleteButton } from './button.delete'\r\nimport { InlineEditing } from './inline-editing'\r\nimport { NoDataPanel } from '../../components'\r\n// types\r\nimport type { ComponentType, FC, MouseEvent } from 'react'\r\nimport type { AccordionProps, AccordionDetailsProps, AccordionSummaryProps, BoxProps, TypographyProps } from '@mui/material'\r\nimport type { IMediaRightGroup, IMediaRightItem, IMediaRightOptions } from '../types'\r\nimport type { IInlineEditingProps } from './inline-editing'\r\n\r\nexport interface IMediaGroupAccordionProps {\r\n group: IMediaRightGroup\r\n options: IMediaRightOptions\r\n accordionProps?: Partial<AccordionProps>\r\n accordionSummaryProps?: Partial<AccordionSummaryProps>\r\n accordionDetailsProps?: Partial<AccordionDetailsProps>\r\n inlineEditingProps?: Partial<IInlineEditingProps>\r\n renderItem?: (item: IMediaRightItem) => React.ReactNode\r\n onEditGroup: (group: IMediaRightGroup) => void\r\n onDeleteGroup: (groupId: string) => void\r\n onDeleteMedia: (groupId: string, mediaId: string) => void\r\n}\r\n\r\nexport const MediaGroupAccordion: FC<IMediaGroupAccordionProps> = (props) => {\r\n const [isEditing, setIsEditing] = useState(false)\r\n\r\n const handleSaveEdit = (value: string) => {\r\n props.onEditGroup({ ...props.group, name: value })\r\n setIsEditing(false)\r\n }\r\n\r\n const handleEditClick = (e: MouseEvent) => {\r\n e.stopPropagation()\r\n setIsEditing(true)\r\n }\r\n\r\n return (\r\n <PlaylistAccordion component='div' {...props.accordionProps} sx={{ my: '0 !important', ...props.accordionProps?.sx }}>\r\n <AccordionSummary component='div' expandIcon={<ExpandMoreIcon />} {...props.accordionSummaryProps}>\r\n <ItemBox>\r\n <Badge badgeContent={props.group.items.length} color='primary'>\r\n <FolderOutlinedIcon fontSize='small' />\r\n </Badge>\r\n <InlineEditing\r\n key={props.group.id + props.group.name + isEditing}\r\n isEdit={isEditing}\r\n setShowEdit={setIsEditing}\r\n onSubmit={handleSaveEdit}\r\n defaultValue={props.group.name}\r\n sxForm={{ flex: 1 }}\r\n {...props.inlineEditingProps}\r\n textField={{\r\n ...props.inlineEditingProps?.textField,\r\n sx: { flex: 1, minWidth: 0, '& .MuiOutlinedInput-root': { height: '32px' }, ...props.inlineEditingProps?.textField?.sx }\r\n }}\r\n >\r\n <ItemTitle variant='body2' noWrap title={props.group.name}>\r\n {props.group.name}\r\n </ItemTitle>\r\n {/* <Chip sx={{ fontSize: '12px' }} label={`${props.group.items.length} items`} size='small' /> */}\r\n <IconButton size='small' onClick={handleEditClick} color='success'>\r\n <EditIcon fontSize='small' />\r\n </IconButton>\r\n <DeleteButton onDelete={() => props.onDeleteGroup(props.group.id)} size='small' />\r\n </InlineEditing>\r\n </ItemBox>\r\n </AccordionSummary>\r\n <AccordionDetails {...props.accordionDetailsProps}>\r\n {props.group.items.length > 0 ? (\r\n props.group.items.map((item) => (props.renderItem ? props.renderItem(item) : null))\r\n ) : (\r\n <NoDataPanel title={'No media in this playlist'} sx={{ flex: 1 }} />\r\n )}\r\n </AccordionDetails>\r\n </PlaylistAccordion>\r\n )\r\n}\r\n\r\nexport const PlaylistAccordion: ComponentType<AccordionProps> = styled(Accordion)(({ theme }) => ({\r\n backgroundColor: 'transparent',\r\n boxShadow: 'none',\r\n backgroundImage: 'none',\r\n '&:before': { display: 'none' },\r\n '&.Mui-expanded': { margin: 0 },\r\n [`.${accordionSummaryClasses.root}`]: {\r\n position: 'sticky',\r\n top: 0,\r\n zIndex: 1,\r\n background: alpha(theme.palette.background.paper, 0.6),\r\n backdropFilter: 'blur(500px)',\r\n WebkitBackdropFilter: 'blur(500px)',\r\n borderRadius: '12px',\r\n minWidth: 0,\r\n [`& .${accordionSummaryClasses.content}`]: {\r\n minWidth: 0,\r\n margin: 0\r\n }\r\n }\r\n}))\r\n\r\nexport const ItemBox: ComponentType<BoxProps> = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n flex: 1,\r\n gap: theme.spacing(1),\r\n minWidth: 0\r\n}))\r\n\r\nexport const ItemTitle: ComponentType<TypographyProps> = styled(Typography)(({ theme }) => ({\r\n fontWeight: 600,\r\n flex: 1,\r\n minWidth: 0,\r\n color: theme.palette.text.primary,\r\n marginLeft: theme.spacing(1)\r\n}))\r\n"],"names":["MediaGroupAccordion","props","_props$accordionProps","_props$inlineEditingP","_props$inlineEditingP2","_useState","useState","_useState2","_slicedToArray","isEditing","setIsEditing","_jsxs","PlaylistAccordion","_objectSpread","component","accordionProps","sx","my","_jsx","AccordionSummary","expandIcon","ExpandMoreIcon","accordionSummaryProps","children","ItemBox","Badge","badgeContent","group","items","length","color","FolderOutlinedIcon","fontSize","InlineEditing","isEdit","setShowEdit","onSubmit","value","onEditGroup","name","defaultValue","sxForm","flex","inlineEditingProps","textField","minWidth","height","ItemTitle","variant","noWrap","title","IconButton","size","onClick","e","stopPropagation","EditIcon","DeleteButton","onDelete","onDeleteGroup","id","AccordionDetails","accordionDetailsProps","map","item","renderItem","NoDataPanel","styled","Accordion","_ref","theme","_defineProperty","backgroundColor","boxShadow","backgroundImage","display","margin","concat","accordionSummaryClasses","root","position","top","zIndex","background","alpha","palette","paper","backdropFilter","WebkitBackdropFilter","borderRadius","content","Box","_ref3","alignItems","gap","spacing","Typography","_ref4","fontWeight","text","primary","marginLeft"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{slicedToArray as i}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as r}from"react/jsx-runtime";import{useState as t}from"react";import{InlineEditing as o}from"./inline-editing.js";import{mediaRightStoreOptions as e}from"../configs.js";import{NewCollectionButton as n}from"../unit.control.js";import{Box as m}from"@mui/material";var l=function(l){var a=l.onSaveGroup,p=t(!1),s=i(p,2),u=s[0],c=s[1];return r(m,{sx:{p:1,pt:0,width:"100%"},children:r(o,{isEdit:u,onSubmit:function(i){i.trim()&&(a(i.trim()),c(!1))},setShowEdit:c,textField:{label:"Playlist name",placeholder:"Enter playlist name",inputProps:{maxLength:e.MAX_NAME_GROUP},sx:{width:"100%"}},children:r(n,{onClick:function(){c(!0)}})})})};export{l as NewGroupArea};
1
+ import{slicedToArray as r,objectSpread2 as t}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i}from"react/jsx-runtime";import{useState as e}from"react";import{InlineEditing as o}from"./inline-editing.js";import{NewCollectionButton as l}from"../unit.control.js";import{Box as n}from"@mui/material";var m=function(m){var a=m.textFieldProps,p=m.onSaveGroup,s=e(!1),c=r(s,2),d=c[0],u=c[1];return i(n,{sx:{p:1,pt:0,width:"100%"},children:i(o,{isEdit:d,onSubmit:function(r){r.trim()&&(p(r.trim()),u(!1))},setShowEdit:u,textField:t({label:"Playlist name",placeholder:"Enter playlist name",sx:{width:"100%"}},a),children:i(l,{onClick:function(){u(!0)}})})})};export{m as NewGroupArea};
2
2
  //# sourceMappingURL=new-group-area.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"new-group-area.js","sources":["../../../src/media-right/media-widget/new-group-area.tsx"],"sourcesContent":["import React, { useState } from 'react'\r\nimport { InlineEditing } from './inline-editing'\r\nimport { mediaRightStoreOptions } from '../configs'\r\nimport { NewCollectionButton } from '../unit.control'\r\nimport { Box } from '@mui/material'\r\n\r\ninterface INewGroupAreaProps {\r\n onSaveGroup: (groupName: string) => void\r\n}\r\n\r\nexport const NewGroupArea: React.FC<INewGroupAreaProps> = ({ onSaveGroup }) => {\r\n const [showNewGroupInput, setShowNewGroupInput] = useState(false)\r\n\r\n const handleNewGroupClick = () => {\r\n setShowNewGroupInput(true)\r\n }\r\n\r\n const handleSaveNewGroup = (value: string) => {\r\n if (value.trim()) {\r\n onSaveGroup(value.trim())\r\n setShowNewGroupInput(false)\r\n }\r\n }\r\n\r\n return (\r\n <Box sx={{ p: 1, pt: 0, width: '100%' }}>\r\n <InlineEditing\r\n isEdit={showNewGroupInput}\r\n onSubmit={handleSaveNewGroup}\r\n setShowEdit={setShowNewGroupInput}\r\n textField={{\r\n label: 'Playlist name',\r\n placeholder: 'Enter playlist name',\r\n inputProps: { maxLength: mediaRightStoreOptions.MAX_NAME_GROUP },\r\n sx: { width: '100%' }\r\n }}\r\n >\r\n <NewCollectionButton onClick={handleNewGroupClick} />\r\n </InlineEditing>\r\n </Box>\r\n )\r\n}\r\n"],"names":["NewGroupArea","_ref","onSaveGroup","_useState","useState","_useState2","_slicedToArray","showNewGroupInput","setShowNewGroupInput","_jsx","Box","sx","p","pt","width","children","InlineEditing","isEdit","onSubmit","value","trim","setShowEdit","textField","label","placeholder","inputProps","maxLength","mediaRightStoreOptions","MAX_NAME_GROUP","NewCollectionButton","onClick"],"mappings":"iWAUaA,EAA6C,SAAjCC,GAAqD,IAAjBC,EAAWD,EAAXC,YAC3DC,EAAkDC,GAAS,GAAMC,EAAAC,EAAAH,EAAA,GAA1DI,EAAiBF,EAAA,GAAEG,EAAoBH,EAAA,GAa9C,OACEI,EAACC,EAAI,CAAAC,GAAI,CAAEC,EAAG,EAAGC,GAAI,EAAGC,MAAO,QAAQC,SACrCN,EAACO,EAAa,CACZC,OAAQV,EACRW,SAXqB,SAACC,GACtBA,EAAMC,SACRlB,EAAYiB,EAAMC,QAClBZ,GAAqB,GAExB,EAOKa,YAAab,EACbc,UAAW,CACTC,MAAO,gBACPC,YAAa,sBACbC,WAAY,CAAEC,UAAWC,EAAuBC,gBAChDjB,GAAI,CAAEG,MAAO,SAGfC,SAAAN,EAACoB,EAAmB,CAACC,QAxBC,WAC1BtB,GAAqB,EACtB,OA0BH"}
1
+ {"version":3,"file":"new-group-area.js","sources":["../../../src/media-right/media-widget/new-group-area.tsx"],"sourcesContent":["import React, { useState } from 'react'\r\nimport { InlineEditing } from './inline-editing'\r\nimport { NewCollectionButton } from '../unit.control'\r\nimport { Box } from '@mui/material'\r\nimport type { TextFieldProps } from '@mui/material'\r\n\r\ninterface INewGroupAreaProps {\r\n textFieldProps: Partial<TextFieldProps>\r\n onSaveGroup: (groupName: string) => void\r\n}\r\n\r\nexport const NewGroupArea: React.FC<INewGroupAreaProps> = ({ textFieldProps, onSaveGroup }) => {\r\n const [showNewGroupInput, setShowNewGroupInput] = useState(false)\r\n\r\n const handleNewGroupClick = () => {\r\n setShowNewGroupInput(true)\r\n }\r\n\r\n const handleSaveNewGroup = (value: string) => {\r\n if (value.trim()) {\r\n onSaveGroup(value.trim())\r\n setShowNewGroupInput(false)\r\n }\r\n }\r\n\r\n return (\r\n <Box sx={{ p: 1, pt: 0, width: '100%' }}>\r\n <InlineEditing\r\n isEdit={showNewGroupInput}\r\n onSubmit={handleSaveNewGroup}\r\n setShowEdit={setShowNewGroupInput}\r\n textField={{\r\n label: 'Playlist name',\r\n placeholder: 'Enter playlist name',\r\n sx: { width: '100%' },\r\n ...textFieldProps\r\n }}\r\n >\r\n <NewCollectionButton onClick={handleNewGroupClick} />\r\n </InlineEditing>\r\n </Box>\r\n )\r\n}\r\n"],"names":["NewGroupArea","_ref","textFieldProps","onSaveGroup","_useState","useState","_useState2","_slicedToArray","showNewGroupInput","setShowNewGroupInput","_jsx","Box","sx","p","pt","width","children","InlineEditing","isEdit","onSubmit","value","trim","setShowEdit","textField","_objectSpread","label","placeholder","NewCollectionButton","onClick"],"mappings":"6TAWaA,EAA6C,SAAjCC,GAAqE,IAAjCC,EAAcD,EAAdC,eAAgBC,EAAWF,EAAXE,YAC3EC,EAAkDC,GAAS,GAAMC,EAAAC,EAAAH,EAAA,GAA1DI,EAAiBF,EAAA,GAAEG,EAAoBH,EAAA,GAa9C,OACEI,EAACC,EAAI,CAAAC,GAAI,CAAEC,EAAG,EAAGC,GAAI,EAAGC,MAAO,QAAQC,SACrCN,EAACO,EAAa,CACZC,OAAQV,EACRW,SAXqB,SAACC,GACtBA,EAAMC,SACRlB,EAAYiB,EAAMC,QAClBZ,GAAqB,GAExB,EAOKa,YAAab,EACbc,UAASC,EAAA,CACPC,MAAO,gBACPC,YAAa,sBACbd,GAAI,CAAEG,MAAO,SACVb,GAGLc,SAAAN,EAACiB,EAAmB,CAACC,QAxBC,WAC1BnB,GAAqB,EACtB,OA0BH"}
@@ -1,2 +1,2 @@
1
- import{styled as r,Stack as o,Menu as t}from"@mui/material";var a=r(o)(function(r){var o=r.theme;return{"--color-bg":"dark"===o.palette.mode?"#121212":o.palette.background.paper,"--color-bg-rba":"dark"===o.palette.mode?"18, 18, 18":"255, 255, 255","--color-text":o.palette.text.primary,"--cart-color-bg":"var(--color-bg)",height:"100%"}}),e=r(t)(function(r){var o=r.theme;return{"--color-bg":"dark"===o.palette.mode?"#121212":o.palette.background.paper,"--color-text":o.palette.text.primary,"--cart-color-bg":"var(--color-bg)",marginTop:"45px","> .MuiPaper-root":{position:"relative",overflow:"visible",display:"flex",flexDirection:"column",backgroundColor:"var(--color-bg, #000000)",borderRadius:o.shape.borderRadius,minWidth:"280px",maxWidth:"550px",boxShadow:"0 1px 1px rgba(0, 0, 0, 0.05), 0 2px 2px rgba(0, 0, 0, 0.2), 0 4px 4px rgba(0, 0, 0, 0.15), 0 8px 8px rgba(0, 0, 0, 0.05)",animation:"fadeInDown 0.3s ease-out",marginTop:"8px",color:"var(--color-text, #000000)","@keyframes fadeInDown":{"0%":{opacity:0,transform:"translateY(-10px)"},"100%":{opacity:1,transform:"translateY(0)"}},"&::before":{content:'""',position:"absolute",backgroundColor:"var(--color-bg, #ffffff)",width:"10px",height:"10px",top:"-4px",right:o.spacing(1),transform:"translateX(-50%) rotate(45deg)",zIndex:0}},".MuiBackdrop-root":{backgroundColor:"transparent"},".MuiList-root":{padding:0,height:"100%",minHeight:0,maxHeight:"60vh"}}});export{e as MenuStyled,a as Root};
1
+ import{styled as a,Stack as r,Menu as t}from"@mui/material";var o=a(r)(function(a){return a.theme,{height:"100%"}}),e=a(t)(function(a){var r=a.theme;return{marginTop:"45px","> .MuiPaper-root":{position:"relative",overflow:"visible",display:"flex",flexDirection:"column",backgroundColor:r.palette.background.paper,borderRadius:r.shape.borderRadius,minWidth:"280px",maxWidth:"550px",boxShadow:r.shadows[5],animation:"fadeInDown 0.3s ease-out",marginTop:"8px",color:r.palette.text.primary,"@keyframes fadeInDown":{"0%":{opacity:0,transform:"translateY(-10px)"},"100%":{opacity:1,transform:"translateY(0)"}},"&::before":{content:'""',position:"absolute",backgroundColor:r.palette.background.paper,backgroundImage:"linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))",width:"10px",height:"10px",top:"-4px",right:r.spacing(1),transform:"translateX(-50%) rotate(45deg)",zIndex:0}},".MuiBackdrop-root":{backgroundColor:"transparent"},".MuiList-root":{padding:0,height:"100%",minHeight:0,maxHeight:"60vh"}}});export{e as MenuStyled,o as Root};
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, Stack } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\nimport type { MenuProps, StackProps } from '@mui/material'\r\n\r\nexport const Root: ComponentType<StackProps> = styled(Stack)(({ theme }) => ({\r\n '--color-bg': theme.palette.mode === 'dark' ? '#121212' : theme.palette.background.paper,\r\n '--color-bg-rba': theme.palette.mode === 'dark' ? '18, 18, 18' : '255, 255, 255',\r\n '--color-text': theme.palette.text.primary,\r\n '--cart-color-bg': 'var(--color-bg)',\r\n height: '100%'\r\n}))\r\n\r\nexport const MenuStyled: ComponentType<MenuProps> = styled(Menu)(({ theme }) => ({\r\n '--color-bg': theme.palette.mode === 'dark' ? '#121212' : theme.palette.background.paper,\r\n '--color-text': theme.palette.text.primary,\r\n '--cart-color-bg': 'var(--color-bg)',\r\n marginTop: '45px',\r\n '> .MuiPaper-root': {\r\n position: 'relative',\r\n overflow: 'visible',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n backgroundColor: 'var(--color-bg, #000000)',\r\n borderRadius: theme.shape.borderRadius,\r\n minWidth: '280px',\r\n maxWidth: '550px',\r\n boxShadow: `0 1px 1px rgba(0, 0, 0, 0.05), 0 2px 2px rgba(0, 0, 0, 0.2), 0 4px 4px rgba(0, 0, 0, 0.15), 0 8px 8px rgba(0, 0, 0, 0.05)`,\r\n animation: 'fadeInDown 0.3s ease-out',\r\n marginTop: '8px',\r\n color: 'var(--color-text, #000000)',\r\n\r\n '@keyframes fadeInDown': {\r\n '0%': { opacity: 0, transform: 'translateY(-10px)' },\r\n '100%': { opacity: 1, transform: 'translateY(0)' }\r\n },\r\n\r\n '&::before': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n backgroundColor: 'var(--color-bg, #ffffff)',\r\n width: '10px',\r\n height: '10px',\r\n top: '-4px',\r\n right: theme.spacing(1),\r\n transform: 'translateX(-50%) rotate(45deg)',\r\n zIndex: 0\r\n }\r\n },\r\n '.MuiBackdrop-root': { backgroundColor: 'transparent' },\r\n '.MuiList-root': { padding: 0, height: '100%', minHeight: 0, maxHeight: '60vh' }\r\n}))\r\n"],"names":["Root","styled","Stack","_ref","theme","palette","mode","background","paper","text","primary","height","MenuStyled","Menu","_ref2","marginTop","position","overflow","display","flexDirection","backgroundColor","borderRadius","shape","minWidth","maxWidth","boxShadow","animation","color","opacity","transform","content","width","top","right","spacing","zIndex","padding","minHeight","maxHeight"],"mappings":"4DAIO,IAAMA,EAAkCC,EAAOC,EAAPD,CAAc,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAK,MAAQ,CAC3E,aAAqC,SAAvBA,EAAMC,QAAQC,KAAkB,UAAYF,EAAMC,QAAQE,WAAWC,MACnF,iBAAyC,SAAvBJ,EAAMC,QAAQC,KAAkB,aAAe,gBACjE,eAAgBF,EAAMC,QAAQI,KAAKC,QACnC,kBAAmB,kBACnBC,OAAQ,OACT,GAEYC,EAAuCX,EAAOY,EAAPZ,CAAa,SAAAa,GAAA,IAAGV,EAAKU,EAALV,MAAK,MAAQ,CAC/E,aAAqC,SAAvBA,EAAMC,QAAQC,KAAkB,UAAYF,EAAMC,QAAQE,WAAWC,MACnF,eAAgBJ,EAAMC,QAAQI,KAAKC,QACnC,kBAAmB,kBACnBK,UAAW,OACX,mBAAoB,CAClBC,SAAU,WACVC,SAAU,UACVC,QAAS,OACTC,cAAe,SACfC,gBAAiB,2BACjBC,aAAcjB,EAAMkB,MAAMD,aAC1BE,SAAU,QACVC,SAAU,QACVC,UAAsI,4HACtIC,UAAW,2BACXX,UAAW,MACXY,MAAO,6BAEP,wBAAyB,CACvB,KAAM,CAAEC,QAAS,EAAGC,UAAW,qBAC/B,OAAQ,CAAED,QAAS,EAAGC,UAAW,kBAGnC,YAAa,CACXC,QAAS,KACTd,SAAU,WACVI,gBAAiB,2BACjBW,MAAO,OACPpB,OAAQ,OACRqB,IAAK,OACLC,MAAO7B,EAAM8B,QAAQ,GACrBL,UAAW,iCACXM,OAAQ,IAGZ,oBAAqB,CAAEf,gBAAiB,eACxC,gBAAiB,CAAEgB,QAAS,EAAGzB,OAAQ,OAAQ0B,UAAW,EAAGC,UAAW,QACzE"}
1
+ {"version":3,"file":"styled.js","sources":["../../../src/media-right/media-widget/styled.tsx"],"sourcesContent":["import { Menu, styled, Stack } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\nimport type { MenuProps, StackProps } from '@mui/material'\r\n\r\nexport const Root: ComponentType<StackProps> = styled(Stack)(({ theme }) => ({\r\n height: '100%'\r\n}))\r\n\r\nexport const MenuStyled: ComponentType<MenuProps> = styled(Menu)(({ theme }) => ({\r\n marginTop: '45px',\r\n '> .MuiPaper-root': {\r\n position: 'relative',\r\n overflow: 'visible',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: theme.shape.borderRadius,\r\n minWidth: '280px',\r\n maxWidth: '550px',\r\n boxShadow: theme.shadows[5],\r\n animation: 'fadeInDown 0.3s ease-out',\r\n marginTop: '8px',\r\n color: theme.palette.text.primary,\r\n\r\n '@keyframes fadeInDown': {\r\n '0%': { opacity: 0, transform: 'translateY(-10px)' },\r\n '100%': { opacity: 1, transform: 'translateY(0)' }\r\n },\r\n\r\n '&::before': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n backgroundColor: theme.palette.background.paper,\r\n backgroundImage: 'linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))',\r\n width: '10px',\r\n height: '10px',\r\n top: '-4px',\r\n right: theme.spacing(1),\r\n transform: 'translateX(-50%) rotate(45deg)',\r\n zIndex: 0\r\n }\r\n },\r\n '.MuiBackdrop-root': { backgroundColor: 'transparent' },\r\n '.MuiList-root': { padding: 0, height: '100%', minHeight: 0, maxHeight: '60vh' }\r\n}))\r\n"],"names":["Root","styled","Stack","_ref","theme","height","MenuStyled","Menu","_ref2","marginTop","position","overflow","display","flexDirection","backgroundColor","palette","background","paper","borderRadius","shape","minWidth","maxWidth","boxShadow","shadows","animation","color","text","primary","opacity","transform","content","backgroundImage","width","top","right","spacing","zIndex","padding","minHeight","maxHeight"],"mappings":"4DAIO,IAAMA,EAAkCC,EAAOC,EAAPD,CAAc,SAAAE,GAAQ,OAAAA,EAALC,MAAa,CAC3EC,OAAQ,OACT,GAEYC,EAAuCL,EAAOM,EAAPN,CAAa,SAAAO,GAAA,IAAGJ,EAAKI,EAALJ,MAAK,MAAQ,CAC/EK,UAAW,OACX,mBAAoB,CAClBC,SAAU,WACVC,SAAU,UACVC,QAAS,OACTC,cAAe,SACfC,gBAAiBV,EAAMW,QAAQC,WAAWC,MAC1CC,aAAcd,EAAMe,MAAMD,aAC1BE,SAAU,QACVC,SAAU,QACVC,UAAWlB,EAAMmB,QAAQ,GACzBC,UAAW,2BACXf,UAAW,MACXgB,MAAOrB,EAAMW,QAAQW,KAAKC,QAE1B,wBAAyB,CACvB,KAAM,CAAEC,QAAS,EAAGC,UAAW,qBAC/B,OAAQ,CAAED,QAAS,EAAGC,UAAW,kBAGnC,YAAa,CACXC,QAAS,KACTpB,SAAU,WACVI,gBAAiBV,EAAMW,QAAQC,WAAWC,MAC1Cc,gBAAiB,wEACjBC,MAAO,OACP3B,OAAQ,OACR4B,IAAK,OACLC,MAAO9B,EAAM+B,QAAQ,GACrBN,UAAW,iCACXO,OAAQ,IAGZ,oBAAqB,CAAEtB,gBAAiB,eACxC,gBAAiB,CAAEuB,QAAS,EAAGhC,OAAQ,OAAQiC,UAAW,EAAGC,UAAW,QACzE"}