dinocollab-shared 1.2.44 → 1.2.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/media-player/core/btn.volume.js +1 -1
- package/dist/media-player/core/btn.volume.js.map +1 -1
- package/dist/media-player/core/progressBar.js +1 -1
- package/dist/media-player/core/progressBar.js.map +1 -1
- package/dist/media-player/core/videoplayer.js +1 -1
- package/dist/media-player/core/videoplayer.js.map +1 -1
- package/dist/media-player/muted.js +1 -1
- package/dist/media-player/muted.js.map +1 -1
- package/dist/media-player/player.video-stream.js.map +1 -1
- package/dist/media-right/hooks.js.map +1 -1
- package/dist/media-right/media-widget/index.js +1 -1
- package/dist/media-right/media-widget/index.js.map +1 -1
- package/dist/media-right/media-widget/media-group-accordion.js +1 -1
- package/dist/media-right/media-widget/media-group-accordion.js.map +1 -1
- package/dist/media-right/service.js +1 -1
- package/dist/media-right/service.js.map +1 -1
- package/dist/media-right/types.js.map +1 -1
- package/dist/notification/content-converter.js +2 -0
- package/dist/notification/content-converter.js.map +1 -0
- package/dist/notification/index.js +1 -1
- package/dist/notification/notify-detail.js +1 -1
- package/dist/notification/notify-detail.js.map +1 -1
- package/dist/types/media-player/core/btn.volume.d.ts.map +1 -1
- package/dist/types/media-player/core/progressBar.d.ts +3 -2
- package/dist/types/media-player/core/progressBar.d.ts.map +1 -1
- package/dist/types/media-player/core/videoplayer.d.ts +5 -4
- package/dist/types/media-player/core/videoplayer.d.ts.map +1 -1
- package/dist/types/media-player/muted.d.ts +2 -2
- package/dist/types/media-player/muted.d.ts.map +1 -1
- package/dist/types/media-player/player.video-stream.d.ts +2 -2
- package/dist/types/media-player/player.video-stream.d.ts.map +1 -1
- package/dist/types/media-right/hooks.d.ts +5 -5
- package/dist/types/media-right/hooks.d.ts.map +1 -1
- package/dist/types/media-right/media-widget/index.d.ts.map +1 -1
- package/dist/types/media-right/media-widget/media-group-accordion.d.ts.map +1 -1
- package/dist/types/media-right/service.d.ts +4 -4
- package/dist/types/media-right/service.d.ts.map +1 -1
- package/dist/types/media-right/types.d.ts +4 -1
- package/dist/types/media-right/types.d.ts.map +1 -1
- package/dist/types/notification/content-converter.d.ts +14 -0
- package/dist/types/notification/content-converter.d.ts.map +1 -0
- package/dist/types/notification/index.d.ts +1 -0
- package/dist/types/notification/index.d.ts.map +1 -1
- package/dist/types/notification/notify-detail.d.ts +1 -1
- package/dist/types/notification/notify-detail.d.ts.map +1 -1
- package/package.json +3 -2
- package/dist/notification/class.config.js +0 -2
- package/dist/notification/class.config.js.map +0 -1
- package/dist/types/notification/class.config.d.ts +0 -21
- package/dist/types/notification/class.config.d.ts.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{objectSpread2 as o}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,jsx as e}from"react/jsx-runtime";import r from"@mui/material/IconButton";import i from"@mui/material/Slider";import l from"@mui/icons-material/VolumeOff";import a from"@mui/icons-material/VolumeUp";var n=function(n){var m=n.
|
|
1
|
+
import{objectSpread2 as o}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,jsx as e}from"react/jsx-runtime";import r from"@mui/material/IconButton";import i from"@mui/material/Slider";import l from"@mui/icons-material/VolumeOff";import a from"@mui/icons-material/VolumeUp";var n=function(n){var m=n.sliderPosition,c=void 0===m?"above":m,s=n.sliderHeight,u=void 0===s?60:s,f=n.sliderWidth,p=void 0===f?4:f,d=n.orientation,v=void 0===d?"vertical":d,h=n.volume,b=n.muted,x=n.setVolume,g=n.toggleMute;if(1==n.hidden)return null;var y={};return"above"===c?y={position:"absolute",left:"50%",bottom:"calc(100%)",transform:"translateX(-50%)",height:u,width:p}:"right"===c?y={opacity:1,height:p,width:u}:"below"===c&&(y={position:"absolute",left:"50%",top:"calc(100% + 8px)",transform:"translateX(-50%)",height:u,width:p}),t("div",{style:{position:"relative",display:"flex",alignItems:"center",justifyContent:"center"},className:"volume-slider-wrapper",children:[e(r,{size:"small",onClick:function(){return g()},children:e(b?l:a,{fontSize:"small",sx:{color:"var(--mp-core1-color-text, #fff)"}})}),e(i,{orientation:v,min:0,max:1,step:.01,value:b?0:h,onChange:function(o,t){return x(Number(t))},sx:o(o({opacity:0},y),{},{color:"var(--mp-core1-color-text, #fff)",pointerEvents:"none",transition:"opacity 0.2s","& .MuiSlider-thumb":{display:"none",width:12,height:12,backgroundColor:"var(--mp-core1-color-text, #fff)",border:"2px solid var(--mp-core1-color-text, #fff)"},"&:hover .MuiSlider-thumb":{display:"block","&::after":{content:"unset"}},".volume-slider-wrapper:hover &":{opacity:1,pointerEvents:"auto"},"& .MuiSlider-rail":{color:"var(--mp-core1-color-text, #fff)",opacity:.3},"& .MuiSlider-track":{color:"var(--mp-core1-color-text, #fff)"}})})]})};export{n as default};
|
|
2
2
|
//# sourceMappingURL=btn.volume.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"btn.volume.js","sources":["../../../src/media-player/core/btn.volume.tsx"],"sourcesContent":["import IconButton from '@mui/material/IconButton'\r\nimport Slider from '@mui/material/Slider'\r\nimport VolumeOffIcon from '@mui/icons-material/VolumeOff'\r\nimport VolumeUpIcon from '@mui/icons-material/VolumeUp'\r\n\r\ntype MediaControlProps = {\r\n hidden?: boolean\r\n sliderPosition?: 'above' | 'right' | 'below'\r\n orientation?: 'horizontal' | 'vertical'\r\n sliderHeight?: number\r\n sliderWidth?: number\r\n volume?: number\r\n muted?: boolean\r\n setVolume: (value: number) => void\r\n toggleMute: () => void\r\n}\r\n\r\nconst BtnVolume: React.FC<MediaControlProps> = ({\r\n
|
|
1
|
+
{"version":3,"file":"btn.volume.js","sources":["../../../src/media-player/core/btn.volume.tsx"],"sourcesContent":["import IconButton from '@mui/material/IconButton'\r\nimport Slider from '@mui/material/Slider'\r\nimport VolumeOffIcon from '@mui/icons-material/VolumeOff'\r\nimport VolumeUpIcon from '@mui/icons-material/VolumeUp'\r\n\r\ntype MediaControlProps = {\r\n hidden?: boolean\r\n sliderPosition?: 'above' | 'right' | 'below'\r\n orientation?: 'horizontal' | 'vertical'\r\n sliderHeight?: number\r\n sliderWidth?: number\r\n volume?: number\r\n muted?: boolean\r\n setVolume: (value: number) => void\r\n toggleMute: () => void\r\n}\r\n\r\nconst BtnVolume: React.FC<MediaControlProps> = (props) => {\r\n const { sliderPosition = 'above', sliderHeight = 60, sliderWidth = 4, orientation = 'vertical', volume, muted } = props\r\n const { setVolume, toggleMute } = props\r\n\r\n if (props.hidden == true) return null\r\n\r\n const IconComp = muted ? VolumeOffIcon : VolumeUpIcon\r\n // Xác định style cho slider dựa vào vị trí\r\n let sliderStyle: React.CSSProperties = {}\r\n if (sliderPosition === 'above') {\r\n sliderStyle = {\r\n position: 'absolute',\r\n left: '50%',\r\n bottom: 'calc(100%)',\r\n transform: 'translateX(-50%)',\r\n height: sliderHeight,\r\n width: sliderWidth\r\n }\r\n } else if (sliderPosition === 'right') {\r\n sliderStyle = {\r\n opacity: 1,\r\n height: sliderWidth,\r\n width: sliderHeight\r\n }\r\n } else if (sliderPosition === 'below') {\r\n sliderStyle = {\r\n position: 'absolute',\r\n left: '50%',\r\n top: 'calc(100% + 8px)',\r\n transform: 'translateX(-50%)',\r\n height: sliderHeight,\r\n width: sliderWidth\r\n }\r\n }\r\n return (\r\n <div\r\n style={{\r\n position: 'relative',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }}\r\n className='volume-slider-wrapper'\r\n >\r\n <IconButton size='small' onClick={() => toggleMute()}>\r\n <IconComp fontSize='small' sx={{ color: 'var(--mp-core1-color-text, #fff)' }} />\r\n </IconButton>\r\n <Slider\r\n orientation={orientation}\r\n min={0}\r\n max={1}\r\n step={0.01}\r\n value={muted ? 0 : volume}\r\n onChange={(_, value) => setVolume(Number(value))}\r\n sx={{\r\n opacity: 0,\r\n ...sliderStyle,\r\n color: 'var(--mp-core1-color-text, #fff)',\r\n pointerEvents: 'none',\r\n transition: 'opacity 0.2s',\r\n '& .MuiSlider-thumb': {\r\n display: 'none',\r\n width: 12,\r\n height: 12,\r\n backgroundColor: 'var(--mp-core1-color-text, #fff)',\r\n border: `2px solid var(--mp-core1-color-text, #fff)`\r\n },\r\n '&:hover .MuiSlider-thumb': {\r\n display: 'block',\r\n '&::after': {\r\n content: 'unset'\r\n }\r\n },\r\n '.volume-slider-wrapper:hover &': {\r\n opacity: 1,\r\n pointerEvents: 'auto'\r\n },\r\n '& .MuiSlider-rail': {\r\n color: 'var(--mp-core1-color-text, #fff)',\r\n opacity: 0.3\r\n },\r\n '& .MuiSlider-track': {\r\n color: 'var(--mp-core1-color-text, #fff)'\r\n }\r\n }}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default BtnVolume\r\n"],"names":["BtnVolume","props","_props$sliderPosition","sliderPosition","_props$sliderHeight","sliderHeight","_props$sliderWidth","sliderWidth","_props$orientation","orientation","volume","muted","setVolume","toggleMute","hidden","sliderStyle","position","left","bottom","transform","height","width","opacity","top","_jsxs","style","display","alignItems","justifyContent","className","_jsx","IconButton","size","onClick","children","VolumeOffIcon","VolumeUpIcon","fontSize","sx","color","Slider","min","max","step","value","onChange","_","Number","_objectSpread","pointerEvents","transition","backgroundColor","border","content"],"mappings":"mSAiBA,IAAMA,EAAyC,SAACC,GAC9C,IAAAC,EAAkHD,EAA1GE,eAAAA,OAAiB,IAAHD,EAAG,QAAOA,EAAAE,EAAkFH,EAAhFI,aAAAA,OAAe,IAAHD,EAAG,GAAEA,EAAAE,EAA+DL,EAA7DM,YAAAA,OAAc,IAAHD,EAAG,EAACA,EAAAE,EAA8CP,EAA5CQ,YAAAA,OAAc,IAAHD,EAAG,WAAUA,EAAEE,EAAkBT,EAAlBS,OAAQC,EAAUV,EAAVU,MAChGC,EAA0BX,EAA1BW,UAAWC,EAAeZ,EAAfY,WAEnB,GAAoB,GAAhBZ,EAAMa,OAAgB,OAAO,KAEjC,IAEIC,EAAmC,CAAE,EA0BzC,MAzBuB,UAAnBZ,EACFY,EAAc,CACZC,SAAU,WACVC,KAAM,MACNC,OAAQ,aACRC,UAAW,mBACXC,OAAQf,EACRgB,MAAOd,GAEmB,UAAnBJ,EACTY,EAAc,CACZO,QAAS,EACTF,OAAQb,EACRc,MAAOhB,GAEmB,UAAnBF,IACTY,EAAc,CACZC,SAAU,WACVC,KAAM,MACNM,IAAK,mBACLJ,UAAW,mBACXC,OAAQf,EACRgB,MAAOd,IAITiB,EACE,MAAA,CAAAC,MAAO,CACLT,SAAU,WACVU,QAAS,OACTC,WAAY,SACZC,eAAgB,UAElBC,UAAU,kCAEVC,EAACC,GAAWC,KAAK,QAAQC,QAAS,WAAF,OAAQpB,GAAY,EAClDqB,SAAAJ,EAvCWnB,EAAQwB,EAAgBC,EAuC1B,CAACC,SAAS,QAAQC,GAAI,CAAEC,MAAO,wCAE1CT,EAACU,EAAM,CACL/B,YAAaA,EACbgC,IAAK,EACLC,IAAK,EACLC,KAAM,IACNC,MAAOjC,EAAQ,EAAID,EACnBmC,SAAU,SAACC,EAAGF,GAAK,OAAKhC,EAAUmC,OAAOH,GAAO,EAChDN,GAAEU,EAAAA,EAAA,CACA1B,QAAS,GACNP,GAAW,GAAA,CACdwB,MAAO,mCACPU,cAAe,OACfC,WAAY,eACZ,qBAAsB,CACpBxB,QAAS,OACTL,MAAO,GACPD,OAAQ,GACR+B,gBAAiB,mCACjBC,OAAM,8CAER,2BAA4B,CAC1B1B,QAAS,QACT,WAAY,CACV2B,QAAS,UAGb,iCAAkC,CAChC/B,QAAS,EACT2B,cAAe,QAEjB,oBAAqB,CACnBV,MAAO,mCACPjB,QAAS,IAEX,qBAAsB,CACpBiB,MAAO,0CAMnB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as r,jsx as e}from"react/jsx-runtime";import{Box as t,Slider as o}from"@mui/material";var
|
|
1
|
+
import{jsxs as r,jsx as e}from"react/jsx-runtime";import{Box as t,Slider as o}from"@mui/material";var n=function(n){var i=n.bufferedSegments,a=n.progress,l=n.isLoading,d=n.hidden,s=n.onChange;return 1==d?null:r(t,{sx:{position:"relative",width:"100%",display:"flex",alignItems:"center"},children:[i.map(function(r,o){return e(t,{sx:{position:"absolute",top:"50%",transform:"translateY(-50%)",left:"".concat(r.left,"%"),width:"".concat(r.width,"%"),height:5,backgroundColor:"rgba(255,255,255,0.4)",pointerEvents:"none",borderRadius:2,zIndex:1}},o)}),l&&e(t,{sx:{position:"absolute",top:"50%",transform:"translateY(-50%)",left:0,height:5,width:"100%",backgroundImage:"repeating-linear-gradient(\n 30deg,\n rgba(255,255,255,0.2) 0px,\n rgba(255,255,255,0.2) 6px,\n rgba(255,255,255,0.08) 6px,\n rgba(255,255,255,0.08) 12px\n )",filter:"blur(0.5px)",backgroundSize:"48px 48px",animation:"stripeAnimation 4s linear infinite",pointerEvents:"none",overflow:"hidden",borderRadius:2,zIndex:2}}),e(o,{value:a,min:0,max:100,step:.1,onChange:function(r,e){return null==s?void 0:s(Number(e))},sx:{position:"absolute",top:"50%",left:0,width:"100%",transform:"translateY(-50%)",height:5,color:"var(--mp-core1-color-main, #ed4229)",zIndex:3,padding:0,"& .MuiSlider-thumb":{display:"none",width:12,height:12,backgroundColor:"var(--mp-core1-color-text, #fff)",border:"2px solid var(--mp-core1-color-text, #fff)"},"&:hover .MuiSlider-thumb":{display:"block"},"& .MuiSlider-rail":{color:"var(--mp-core1-color-text, #fff)",opacity:.3},"& .MuiSlider-track":{borderRadius:2}}})]})};export{n as default};
|
|
2
2
|
//# sourceMappingURL=progressBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progressBar.js","sources":["../../../src/media-player/core/progressBar.tsx"],"sourcesContent":["import React from 'react'\r\nimport { Slider, Box } from '@mui/material'\r\n\r\ninterface
|
|
1
|
+
{"version":3,"file":"progressBar.js","sources":["../../../src/media-player/core/progressBar.tsx"],"sourcesContent":["import React from 'react'\r\nimport { Slider, Box } from '@mui/material'\r\n\r\ninterface IProgressBarProps {\r\n bufferedSegments: { left: number; width: number }[]\r\n progress: number\r\n isLoading: boolean\r\n hidden?: boolean\r\n onChange?: (value: number) => void\r\n}\r\n\r\nconst ProgressBar: React.FC<IProgressBarProps> = (props) => {\r\n const { bufferedSegments, progress, isLoading, hidden, onChange } = props\r\n if (hidden == true) return null\r\n return (\r\n <Box sx={{ position: 'relative', width: '100%', display: 'flex', alignItems: 'center' }}>\r\n {bufferedSegments.map((seg, idx) => (\r\n <Box\r\n key={idx}\r\n sx={{\r\n position: 'absolute',\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n left: `${seg.left}%`,\r\n width: `${seg.width}%`,\r\n height: 5,\r\n backgroundColor: 'rgba(255,255,255,0.4)',\r\n pointerEvents: 'none',\r\n borderRadius: 2,\r\n zIndex: 1\r\n }}\r\n />\r\n ))}\r\n {/* Loading stripe */}\r\n {isLoading && (\r\n <Box\r\n sx={{\r\n position: 'absolute',\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n left: 0,\r\n height: 5,\r\n width: '100%',\r\n backgroundImage: `repeating-linear-gradient(\r\n 30deg,\r\n rgba(255,255,255,0.2) 0px,\r\n rgba(255,255,255,0.2) 6px,\r\n rgba(255,255,255,0.08) 6px,\r\n rgba(255,255,255,0.08) 12px\r\n )`,\r\n filter: 'blur(0.5px)',\r\n backgroundSize: '48px 48px',\r\n animation: 'stripeAnimation 4s linear infinite',\r\n pointerEvents: 'none',\r\n overflow: 'hidden',\r\n borderRadius: 2,\r\n zIndex: 2\r\n }}\r\n />\r\n )}\r\n {/* Slider */}\r\n <Slider\r\n value={progress}\r\n min={0}\r\n max={100}\r\n step={0.1}\r\n onChange={(_, value) => onChange?.(Number(value))}\r\n sx={{\r\n position: 'absolute',\r\n top: '50%',\r\n left: 0,\r\n width: '100%',\r\n transform: 'translateY(-50%)',\r\n height: 5,\r\n color: 'var(--mp-core1-color-main, #ed4229)',\r\n zIndex: 3,\r\n padding: 0,\r\n '& .MuiSlider-thumb': {\r\n display: 'none',\r\n width: 12,\r\n height: 12,\r\n backgroundColor: 'var(--mp-core1-color-text, #fff)',\r\n border: `2px solid var(--mp-core1-color-text, #fff)`\r\n },\r\n '&:hover .MuiSlider-thumb': {\r\n display: 'block'\r\n },\r\n '& .MuiSlider-rail': {\r\n color: 'var(--mp-core1-color-text, #fff)',\r\n opacity: 0.3\r\n },\r\n '& .MuiSlider-track': {\r\n borderRadius: 2\r\n }\r\n }}\r\n />\r\n </Box>\r\n )\r\n}\r\n\r\nexport default ProgressBar\r\n"],"names":["ProgressBar","props","bufferedSegments","progress","isLoading","hidden","onChange","_jsxs","Box","sx","position","width","display","alignItems","children","map","seg","idx","_jsx","top","transform","left","concat","height","backgroundColor","pointerEvents","borderRadius","zIndex","backgroundImage","filter","backgroundSize","animation","overflow","Slider","value","min","max","step","_","Number","color","padding","border","opacity"],"mappings":"kGAWA,IAAMA,EAA2C,SAACC,GAChD,IAAQC,EAA4DD,EAA5DC,iBAAkBC,EAA0CF,EAA1CE,SAAUC,EAAgCH,EAAhCG,UAAWC,EAAqBJ,EAArBI,OAAQC,EAAaL,EAAbK,SACvD,OAAc,GAAVD,EAAuB,KAEzBE,EAACC,GAAIC,GAAI,CAAEC,SAAU,WAAYC,MAAO,OAAQC,QAAS,OAAQC,WAAY,UAC1EC,SAAA,CAAAZ,EAAiBa,IAAI,SAACC,EAAKC,GAAG,OAC7BC,EAACV,EAAG,CAEFC,GAAI,CACFC,SAAU,WACVS,IAAK,MACLC,UAAW,mBACXC,QAAIC,OAAKN,EAAIK,KAAO,KACpBV,SAAKW,OAAKN,EAAIL,MAAQ,KACtBY,OAAQ,EACRC,gBAAiB,wBACjBC,cAAe,OACfC,aAAc,EACdC,OAAQ,IAXLV,EAaL,GAGHb,GACCc,EAACV,EACC,CAAAC,GAAI,CACFC,SAAU,WACVS,IAAK,MACLC,UAAW,mBACXC,KAAM,EACNE,OAAQ,EACRZ,MAAO,OACPiB,gBAMA,gOACAC,OAAQ,cACRC,eAAgB,YAChBC,UAAW,qCACXN,cAAe,OACfO,SAAU,SACVN,aAAc,EACdC,OAAQ,KAKdT,EAACe,EACC,CAAAC,MAAO/B,EACPgC,IAAK,EACLC,IAAK,IACLC,KAAM,GACN/B,SAAU,SAACgC,EAAGJ,GAAK,OAAK5B,aAAAA,EAAAA,EAAWiC,OAAOL,GAAO,EACjDzB,GAAI,CACFC,SAAU,WACVS,IAAK,MACLE,KAAM,EACNV,MAAO,OACPS,UAAW,mBACXG,OAAQ,EACRiB,MAAO,sCACPb,OAAQ,EACRc,QAAS,EACT,qBAAsB,CACpB7B,QAAS,OACTD,MAAO,GACPY,OAAQ,GACRC,gBAAiB,mCACjBkB,OAAM,8CAER,2BAA4B,CAC1B9B,QAAS,SAEX,oBAAqB,CACnB4B,MAAO,mCACPG,QAAS,IAEX,qBAAsB,CACpBjB,aAAc,QAM1B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as e,objectSpread2 as o}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,jsx as r}from"react/jsx-runtime";import{forwardRef as a,useRef as n,useEffect as i}from"react";import{styled as l,Box as s,useTheme as d,useMediaQuery as c,Stack as m}from"@mui/material";import{useVideoPlayerCore as u}from"./useVideoPlayerCore.js";import p from"./progressBar.js";import f from"./btn.play.js";import g from"./btn.volume.js";import
|
|
1
|
+
import{defineProperty as e,objectSpread2 as o}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,jsx as r}from"react/jsx-runtime";import{forwardRef as a,useRef as n,useEffect as i}from"react";import{styled as l,Box as s,useTheme as d,useMediaQuery as c,Stack as m}from"@mui/material";import{useVideoPlayerCore as u}from"./useVideoPlayerCore.js";import p from"./progressBar.js";import f from"./btn.play.js";import g from"./btn.volume.js";import h from"./btn.pip.js";import v from"./btn.fullscreen.js";import y from"./time.js";var b={autoPlay:!1,muted:!1,pip:!1,fullscreen:!1,volume:!0,preload:"auto"},C=a(function(e,a){var l=n(null),s=n(null),C=d(),x=c(C.breakpoints.down("md")),k=function(){for(var e=arguments.length,o=new Array(e),t=0;t<e;t++)o[t]=arguments[t];return function(e){o.forEach(function(o){o&&("function"==typeof o?o(e):o.current=e)})}}(l,a),S=u(l,s),w=S.state,j=S.controls;i(function(){if("mediaSession"in navigator&&e.mediaMetadata&&l.current)return navigator.mediaSession.metadata=new MediaMetadata({title:e.mediaMetadata.title||"Video",artist:e.mediaMetadata.artist||"Berlin Tomek",album:e.mediaMetadata.album||"Media Album",artwork:e.mediaMetadata.artwork?Array.from(e.mediaMetadata.artwork):void 0}),function(){navigator.mediaSession.setActionHandler("play",null),navigator.mediaSession.setActionHandler("pause",null),navigator.mediaSession.setActionHandler("seekbackward",null),navigator.mediaSession.setActionHandler("seekforward",null),navigator.mediaSession.setActionHandler("seekto",null)}},[e.mediaMetadata]);var A=!0===e.readonly;i(function(){if(A){var e=l.current;e&&e.play().catch(function(){})}},[A]);var H=o(o({},b),e.controls);return t(M,{sx:e.sx,className:[P.root,e.className].filter(function(e){return!!e}).join(" "),ref:s,children:[r("video",{ref:k,controls:!1,width:"100%",height:"100%",src:e.src,autoPlay:H.autoPlay,muted:H.muted,preload:H.preload}),r("div",o({className:P.overlay},A?{}:{onClick:j.togglePlay})),t("div",{className:P.control,children:[r(f,{hidden:A,isPlaying:w.isPlaying,onClick:j.togglePlay}),r(p,{hidden:A,bufferedSegments:w.bufferedSegments,progress:w.progress,isLoading:w.isLoading,onChange:j.handleSeek}),r(y,{currentTime:w.currentTime,duration:w.duration}),r(g,{hidden:A||x||H.muted||!H.volume,sliderPosition:"right",orientation:"horizontal",muted:w.muted,volume:w.volume,setVolume:j.setVolume,toggleMute:j.toggleMute}),t(m,{flexDirection:"row",alignItems:"center",gap:0,children:[e.anotherControls,r(h,{hidden:x||!H.pip,onClick:j.togglePIP}),r(v,{hidden:!H.fullscreen,isFullscreen:w.isFullscreen,onClick:j.toggleFullscreen})]})]}),r("div",{className:P.controlCompact,children:r(p,{hidden:A,bufferedSegments:w.bufferedSegments,progress:w.progress,isLoading:w.isLoading})})]})}),P={root:"MediaPlayerCore-root",control:"MediaPlayerCore-control",controlCompact:"MediaPlayerCore-control-compact",overlay:"MediaPlayerCore-overlay",bufferedSegments:"MediaPlayerCore-buffered-segments"},x=P,M=l(s)(e(e(e(e(e({"--mp-core1-color-main":"#ed4229","--mp-core1-color-text":"#fff","--mp-core1-icon-size":"34px",width:"640px",height:"360px",position:"relative"},".".concat(x.control),{position:"absolute",bottom:0,left:0,width:"100%",display:"flex",alignItems:"center",justifyContent:"flex-end",padding:"6px 8px",gap:"8px",zIndex:3,transition:"0.3s",transform:"translateY(100%)"}),".".concat(x.controlCompact),{position:"absolute",bottom:0,left:0,width:"100%",transition:"0.3s",zIndex:2,opacity:.5}),".".concat(x.overlay),{position:"absolute",bottom:0,left:0,width:"100%",height:"100%",zIndex:1,opacity:0,transition:"0.3s",cursor:"pointer",background:"linear-gradient(to top, rgba(0, 0, 0, 0.7) 0%, rgba(0, 0, 0, 0) 20%)"}),".".concat(x.bufferedSegments),{position:"absolute",top:0,height:"100%",backgroundColor:"rgba(255,255,255,0.4)",pointerEvents:"none"}),"&:hover",e(e(e({},".".concat(x.overlay),{opacity:1}),".".concat(x.control),{transform:"translateY(0)"}),".".concat(x.controlCompact),{opacity:0,transform:"translateY(110%)"})));export{C as default,b as defaultControlsConfig};
|
|
2
2
|
//# sourceMappingURL=videoplayer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"videoplayer.js","sources":["../../../src/media-player/core/videoplayer.tsx"],"sourcesContent":["import { forwardRef, useEffect, useRef } from 'react'\r\nimport { Box, Stack, styled, SxProps, Theme, useMediaQuery, useTheme } from '@mui/material'\r\nimport { useVideoPlayerCore } from './useVideoPlayerCore'\r\nimport VideoProgressBar from './progressBar'\r\nimport PlayButton from './btn.play'\r\nimport BtnVolume from './btn.volume'\r\nimport BtnPIP from './btn.pip'\r\nimport FullscreenButton from './btn.fullscreen'\r\nimport MediaTime from './time'\r\n\r\nconst MPCoreClasses = {\r\n root: 'MediaPlayerCore-root',\r\n control: 'MediaPlayerCore-control',\r\n controlCompact: 'MediaPlayerCore-control-compact',\r\n overlay: 'MediaPlayerCore-overlay',\r\n playButton: 'MediaPlayerCore-play-button',\r\n timer: 'MediaPlayerCore-timer',\r\n progressBar: 'MediaPlayerCore-progress-bar',\r\n loading: 'MediaPlayerCore-loading',\r\n timeline: 'MediaPlayerCore-timeline',\r\n bufferedSegments: 'MediaPlayerCore-buffered-segments'\r\n}\r\n\r\nexport interface IControlsConfig {\r\n autoPlay?: boolean\r\n muted?: boolean\r\n volume?: boolean\r\n pip?: boolean\r\n fullscreen?: boolean\r\n preload?: 'auto' | 'metadata' | 'none'\r\n}\r\n\r\n// Giá trị mặc định cho MediaPlayerCore2Slots\r\nexport const defaultControlsConfig: IControlsConfig = {\r\n autoPlay: false,\r\n muted: false,\r\n pip: false,\r\n fullscreen: false,\r\n volume: true,\r\n preload: 'auto'\r\n}\r\n\r\nexport interface MediaPlayerSlot {\r\n controls?: IControlsConfig\r\n anotherControls?: React.ReactNode\r\n mediaMetadata?: MediaMetadata\r\n}\r\ninterface IProps extends MediaPlayerSlot {\r\n src?: string\r\n sx?: SxProps<Theme>\r\n className?: string\r\n}\r\n\r\nconst MediaPlayerCore = forwardRef<HTMLVideoElement, IProps>((props, ref) => {\r\n const videoRef = useRef<HTMLVideoElement | null>(null)\r\n const videoContainerRef = useRef<HTMLDivElement>(null)\r\n const theme = useTheme()\r\n const isMobile = useMediaQuery(theme.breakpoints.down('md'))\r\n const combinedRef = mergeRefs(videoRef, ref)\r\n const { state, controls } = useVideoPlayerCore(videoRef, videoContainerRef)\r\n\r\n function mergeRefs<T>(...refs: (React.Ref<T> | undefined)[]): React.RefCallback<T> {\r\n return (value: T) => {\r\n refs.forEach((ref) => {\r\n if (!ref) return\r\n if (typeof ref === 'function') {\r\n ref(value)\r\n } else {\r\n ;(ref as React.MutableRefObject<T | null>).current = value\r\n }\r\n })\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (!('mediaSession' in navigator) || !props.mediaMetadata) return\r\n const video = videoRef.current\r\n if (!video) return\r\n // Set metadata\r\n navigator.mediaSession.metadata = new MediaMetadata({\r\n title: props.mediaMetadata.title || 'Video',\r\n artist: props.mediaMetadata.artist || 'Berlin Tomek',\r\n album: props.mediaMetadata.album || 'Media Album',\r\n artwork: props.mediaMetadata.artwork ? Array.from(props.mediaMetadata.artwork) : undefined\r\n })\r\n return () => {\r\n navigator.mediaSession.setActionHandler('play', null)\r\n navigator.mediaSession.setActionHandler('pause', null)\r\n navigator.mediaSession.setActionHandler('seekbackward', null)\r\n navigator.mediaSession.setActionHandler('seekforward', null)\r\n navigator.mediaSession.setActionHandler('seekto', null)\r\n }\r\n }, [props.mediaMetadata])\r\n\r\n const controlsConfig = { ...defaultControlsConfig, ...props.controls }\r\n\r\n const getClasses = () => {\r\n return [MPCoreClasses.root, props.className].filter((x) => !!x).join(' ')\r\n }\r\n\r\n return (\r\n <Wrap sx={props.sx} className={getClasses()} ref={videoContainerRef}>\r\n <video\r\n ref={combinedRef}\r\n controls={false}\r\n width='100%'\r\n height='100%'\r\n src={props.src}\r\n autoPlay={controlsConfig.autoPlay}\r\n muted={controlsConfig.muted}\r\n preload={controlsConfig.preload}\r\n />\r\n <div className={MPCoreClasses.overlay} onClick={controls.togglePlay} />\r\n <div className={MPCoreClasses.control}>\r\n <PlayButton isPlaying={state.isPlaying} onClick={controls.togglePlay} />\r\n <VideoProgressBar\r\n bufferedSegments={state.bufferedSegments}\r\n progress={state.progress}\r\n isLoading={state.isLoading}\r\n onChange={controls.handleSeek}\r\n />\r\n <MediaTime currentTime={state.currentTime} duration={state.duration} />\r\n <BtnVolume\r\n hidden={isMobile || controlsConfig.muted || !controlsConfig.volume}\r\n sliderPosition='right'\r\n orientation='horizontal'\r\n muted={state.muted}\r\n volume={state.volume}\r\n setVolume={controls.setVolume}\r\n toggleMute={controls.toggleMute}\r\n />\r\n <Stack flexDirection='row' alignItems='center' gap={0}>\r\n {props.anotherControls}\r\n <BtnPIP hidden={isMobile || !controlsConfig.pip} onClick={controls.togglePIP} />\r\n <FullscreenButton hidden={!controlsConfig.fullscreen} isFullscreen={state.isFullscreen} onClick={controls.toggleFullscreen} />\r\n </Stack>\r\n </div>\r\n <div className={MPCoreClasses.controlCompact}>\r\n <VideoProgressBar bufferedSegments={state.bufferedSegments} progress={state.progress} isLoading={state.isLoading} />\r\n </div>\r\n </Wrap>\r\n )\r\n})\r\n\r\nexport default MediaPlayerCore\r\n\r\nconst Wrap = styled(Box)({\r\n '--mp-core1-color-main': '#ed4229',\r\n '--mp-core1-color-text': '#fff',\r\n '--mp-core1-icon-size': '34px',\r\n width: '640px',\r\n height: '360px',\r\n position: 'relative',\r\n [`.${MPCoreClasses.control}`]: {\r\n position: 'absolute',\r\n bottom: 0,\r\n left: 0,\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '6px 8px',\r\n gap: '8px',\r\n zIndex: 3,\r\n transition: '0.3s',\r\n transform: 'translateY(100%)'\r\n },\r\n [`.${MPCoreClasses.controlCompact}`]: {\r\n position: 'absolute',\r\n bottom: 0,\r\n left: 0,\r\n width: '100%',\r\n transition: '0.3s',\r\n zIndex: 2,\r\n opacity: 0.5\r\n },\r\n [`.${MPCoreClasses.overlay}`]: {\r\n position: 'absolute',\r\n bottom: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n zIndex: 1,\r\n opacity: 0,\r\n transition: '0.3s',\r\n cursor: 'pointer',\r\n background: 'linear-gradient(to top, rgba(0, 0, 0, 0.7) 0%, rgba(0, 0, 0, 0) 20%)'\r\n },\r\n [`.${MPCoreClasses.bufferedSegments}`]: {\r\n position: 'absolute',\r\n top: 0,\r\n height: '100%',\r\n backgroundColor: 'rgba(255,255,255,0.4)',\r\n pointerEvents: 'none'\r\n },\r\n '&:hover': {\r\n [`.${MPCoreClasses.overlay}`]: {\r\n opacity: 1\r\n },\r\n [`.${MPCoreClasses.control}`]: {\r\n transform: 'translateY(0)'\r\n },\r\n [`.${MPCoreClasses.controlCompact}`]: {\r\n opacity: 0,\r\n transform: 'translateY(110%)'\r\n }\r\n }\r\n})\r\n"],"names":["MPCoreClasses","root","control","controlCompact","overlay","bufferedSegments","defaultControlsConfig","autoPlay","muted","pip","fullscreen","volume","preload","MediaPlayerCore","forwardRef","props","ref","videoRef","useRef","videoContainerRef","theme","useTheme","isMobile","useMediaQuery","breakpoints","down","combinedRef","_len","arguments","length","refs","Array","_key","value","forEach","current","mergeRefs","_useVideoPlayerCore","useVideoPlayerCore","state","controls","useEffect","navigator","mediaMetadata","mediaSession","metadata","MediaMetadata","title","artist","album","artwork","from","undefined","setActionHandler","controlsConfig","_objectSpread","_jsxs","Wrap","sx","className","filter","x","join","children","_jsx","width","height","src","onClick","togglePlay","PlayButton","isPlaying","VideoProgressBar","progress","isLoading","onChange","handleSeek","MediaTime","currentTime","duration","BtnVolume","hidden","sliderPosition","orientation","setVolume","toggleMute","Stack","flexDirection","alignItems","gap","anotherControls","BtnPIP","togglePIP","FullscreenButton","isFullscreen","toggleFullscreen","styled","Box","_defineProperty","position","concat","bottom","left","display","padding","zIndex","transition","transform","opacity","cursor","background","top","backgroundColor","pointerEvents"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"videoplayer.js","sources":["../../../src/media-player/core/videoplayer.tsx"],"sourcesContent":["import { forwardRef, useEffect, useRef } from 'react'\r\nimport { Box, Stack, styled, SxProps, Theme, useMediaQuery, useTheme } from '@mui/material'\r\nimport { useVideoPlayerCore } from './useVideoPlayerCore'\r\nimport VideoProgressBar from './progressBar'\r\nimport PlayButton from './btn.play'\r\nimport BtnVolume from './btn.volume'\r\nimport BtnPIP from './btn.pip'\r\nimport FullscreenButton from './btn.fullscreen'\r\nimport MediaTime from './time'\r\n\r\nexport interface IControlsConfig {\r\n autoPlay?: boolean\r\n muted?: boolean\r\n volume?: boolean\r\n pip?: boolean\r\n fullscreen?: boolean\r\n preload?: 'auto' | 'metadata' | 'none'\r\n}\r\n\r\n// Giá trị mặc định cho MediaPlayerCore2Slots\r\nexport const defaultControlsConfig: IControlsConfig = {\r\n autoPlay: false,\r\n muted: false,\r\n pip: false,\r\n fullscreen: false,\r\n volume: true,\r\n preload: 'auto'\r\n}\r\n\r\nexport interface IVideoPlayerSlots {\r\n controls?: IControlsConfig\r\n anotherControls?: React.ReactNode\r\n mediaMetadata?: MediaMetadata\r\n}\r\n\r\nexport interface IVideoPlayerProps extends IVideoPlayerSlots {\r\n src?: string\r\n sx?: SxProps<Theme>\r\n className?: string\r\n readonly?: boolean\r\n}\r\n\r\nconst VideoPlayerCore = forwardRef<HTMLVideoElement, IVideoPlayerProps>((props, ref) => {\r\n const videoRef = useRef<HTMLVideoElement | null>(null)\r\n const videoContainerRef = useRef<HTMLDivElement>(null)\r\n const theme = useTheme()\r\n const isMobile = useMediaQuery(theme.breakpoints.down('md'))\r\n const combinedRef = mergeRefs(videoRef, ref)\r\n const { state, controls } = useVideoPlayerCore(videoRef, videoContainerRef)\r\n\r\n function mergeRefs<T>(...refs: (React.Ref<T> | undefined)[]): React.RefCallback<T> {\r\n return (value: T) => {\r\n refs.forEach((ref) => {\r\n if (!ref) return\r\n if (typeof ref === 'function') {\r\n ref(value)\r\n } else {\r\n ;(ref as React.MutableRefObject<T | null>).current = value\r\n }\r\n })\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (!('mediaSession' in navigator) || !props.mediaMetadata) return\r\n const video = videoRef.current\r\n if (!video) return\r\n // Set metadata\r\n navigator.mediaSession.metadata = new MediaMetadata({\r\n title: props.mediaMetadata.title || 'Video',\r\n artist: props.mediaMetadata.artist || 'Berlin Tomek',\r\n album: props.mediaMetadata.album || 'Media Album',\r\n artwork: props.mediaMetadata.artwork ? Array.from(props.mediaMetadata.artwork) : undefined\r\n })\r\n return () => {\r\n navigator.mediaSession.setActionHandler('play', null)\r\n navigator.mediaSession.setActionHandler('pause', null)\r\n navigator.mediaSession.setActionHandler('seekbackward', null)\r\n navigator.mediaSession.setActionHandler('seekforward', null)\r\n navigator.mediaSession.setActionHandler('seekto', null)\r\n }\r\n }, [props.mediaMetadata])\r\n\r\n const isReadOnly = props.readonly === true\r\n useEffect(() => {\r\n if (!isReadOnly) return\r\n const v = videoRef.current\r\n if (!v) return\r\n // đảm bảo play (bỏ qua interaction)\r\n v.play().catch(() => {\r\n // nếu trình duyệt chặn autoplay, giữ im lặng\r\n })\r\n }, [isReadOnly])\r\n\r\n const controlsConfig = { ...defaultControlsConfig, ...props.controls }\r\n\r\n const getClasses = () => {\r\n return [MPCoreClasses.root, props.className].filter((x) => !!x).join(' ')\r\n }\r\n\r\n return (\r\n <RootStyled sx={props.sx} className={getClasses()} ref={videoContainerRef}>\r\n <video\r\n ref={combinedRef}\r\n controls={false}\r\n width='100%'\r\n height='100%'\r\n src={props.src}\r\n autoPlay={controlsConfig.autoPlay}\r\n muted={controlsConfig.muted}\r\n preload={controlsConfig.preload}\r\n />\r\n <div className={MPCoreClasses.overlay} {...(!isReadOnly ? { onClick: controls.togglePlay } : {})} />\r\n <div className={MPCoreClasses.control}>\r\n <PlayButton hidden={isReadOnly} isPlaying={state.isPlaying} onClick={controls.togglePlay} />\r\n <VideoProgressBar\r\n hidden={isReadOnly}\r\n bufferedSegments={state.bufferedSegments}\r\n progress={state.progress}\r\n isLoading={state.isLoading}\r\n onChange={controls.handleSeek}\r\n />\r\n <MediaTime currentTime={state.currentTime} duration={state.duration} />\r\n <BtnVolume\r\n hidden={isReadOnly || isMobile || controlsConfig.muted || !controlsConfig.volume}\r\n sliderPosition='right'\r\n orientation='horizontal'\r\n muted={state.muted}\r\n volume={state.volume}\r\n setVolume={controls.setVolume}\r\n toggleMute={controls.toggleMute}\r\n />\r\n <Stack flexDirection='row' alignItems='center' gap={0}>\r\n {props.anotherControls}\r\n <BtnPIP hidden={isMobile || !controlsConfig.pip} onClick={controls.togglePIP} />\r\n <FullscreenButton hidden={!controlsConfig.fullscreen} isFullscreen={state.isFullscreen} onClick={controls.toggleFullscreen} />\r\n </Stack>\r\n </div>\r\n <div className={MPCoreClasses.controlCompact}>\r\n <VideoProgressBar hidden={isReadOnly} bufferedSegments={state.bufferedSegments} progress={state.progress} isLoading={state.isLoading} />\r\n </div>\r\n </RootStyled>\r\n )\r\n})\r\n\r\nexport default VideoPlayerCore\r\n\r\nconst MPCoreClasses = {\r\n root: 'MediaPlayerCore-root',\r\n control: 'MediaPlayerCore-control',\r\n controlCompact: 'MediaPlayerCore-control-compact',\r\n overlay: 'MediaPlayerCore-overlay',\r\n playButton: 'MediaPlayerCore-play-button',\r\n timer: 'MediaPlayerCore-timer',\r\n progressBar: 'MediaPlayerCore-progress-bar',\r\n loading: 'MediaPlayerCore-loading',\r\n timeline: 'MediaPlayerCore-timeline',\r\n bufferedSegments: 'MediaPlayerCore-buffered-segments'\r\n}\r\n\r\nconst classes = MPCoreClasses\r\n\r\nconst RootStyled = styled(Box)({\r\n '--mp-core1-color-main': '#ed4229',\r\n '--mp-core1-color-text': '#fff',\r\n '--mp-core1-icon-size': '34px',\r\n width: '640px',\r\n height: '360px',\r\n position: 'relative',\r\n [`.${classes.control}`]: {\r\n position: 'absolute',\r\n bottom: 0,\r\n left: 0,\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n padding: '6px 8px',\r\n gap: '8px',\r\n zIndex: 3,\r\n transition: '0.3s',\r\n transform: 'translateY(100%)'\r\n },\r\n [`.${classes.controlCompact}`]: {\r\n position: 'absolute',\r\n bottom: 0,\r\n left: 0,\r\n width: '100%',\r\n transition: '0.3s',\r\n zIndex: 2,\r\n opacity: 0.5\r\n },\r\n [`.${classes.overlay}`]: {\r\n position: 'absolute',\r\n bottom: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n zIndex: 1,\r\n opacity: 0,\r\n transition: '0.3s',\r\n cursor: 'pointer',\r\n background: 'linear-gradient(to top, rgba(0, 0, 0, 0.7) 0%, rgba(0, 0, 0, 0) 20%)'\r\n },\r\n [`.${classes.bufferedSegments}`]: {\r\n position: 'absolute',\r\n top: 0,\r\n height: '100%',\r\n backgroundColor: 'rgba(255,255,255,0.4)',\r\n pointerEvents: 'none'\r\n },\r\n '&:hover': {\r\n [`.${classes.overlay}`]: { opacity: 1 },\r\n [`.${classes.control}`]: { transform: 'translateY(0)' },\r\n [`.${classes.controlCompact}`]: { opacity: 0, transform: 'translateY(110%)' }\r\n }\r\n})\r\n"],"names":["defaultControlsConfig","autoPlay","muted","pip","fullscreen","volume","preload","VideoPlayerCore","forwardRef","props","ref","videoRef","useRef","videoContainerRef","theme","useTheme","isMobile","useMediaQuery","breakpoints","down","combinedRef","_len","arguments","length","refs","Array","_key","value","forEach","current","mergeRefs","_useVideoPlayerCore","useVideoPlayerCore","state","controls","useEffect","navigator","mediaMetadata","mediaSession","metadata","MediaMetadata","title","artist","album","artwork","from","undefined","setActionHandler","isReadOnly","readonly","v","play","controlsConfig","_objectSpread","_jsxs","RootStyled","sx","className","MPCoreClasses","root","filter","x","join","children","_jsx","width","height","src","overlay","onClick","togglePlay","control","PlayButton","hidden","isPlaying","VideoProgressBar","bufferedSegments","progress","isLoading","onChange","handleSeek","MediaTime","currentTime","duration","BtnVolume","sliderPosition","orientation","setVolume","toggleMute","Stack","flexDirection","alignItems","gap","anotherControls","BtnPIP","togglePIP","FullscreenButton","isFullscreen","toggleFullscreen","controlCompact","classes","styled","Box","_defineProperty","position","concat","bottom","left","display","justifyContent","padding","zIndex","transition","transform","opacity","cursor","background","top","backgroundColor","pointerEvents"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{objectSpread2 as o}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as r,jsx as i}from"react/jsx-runtime";import{styled as e,Box as t,Fade as
|
|
1
|
+
import{objectSpread2 as o}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as r,jsx as i}from"react/jsx-runtime";import{styled as e,Box as t,Fade as l,Skeleton as a}from"@mui/material";import{EMediaPlayerStatus as n}from"./types.js";import{useStreamUrl as d,getAspectRatioStyled as s}from"./helpers.js";import u from"./core/videoplayer.js";var m=function(e){var t,m,v,h=d(e.resourceId,e.fetchDataStream),f=h.status,g=h.streamUrl;return r(c,{className:f===n.Loaded?"loaded":"",sx:s(null===(t=e.slots)||void 0===t?void 0:t.aspectRatio),children:[i(p,{children:g&&i(u,o(o({className:"player",src:g,anotherControls:!0},null===(m=e.slots)||void 0===m?void 0:m.coreProps),{},{controls:o({autoPlay:!0,muted:!0},null===(v=e.slots)||void 0===v||null===(v=v.coreProps)||void 0===v?void 0:v.controls)}))}),i(l,{in:f===n.Loading||e.loading,unmountOnExit:!0,children:i(p,{children:function(){var o,r,t;if(null!==(o=e.slots)&&void 0!==o&&o.loading)return e.slots.loading;var l=null!==(r=null===(t=e.slots)||void 0===t||null===(t=t.loadingProps)||void 0===t?void 0:t.animationDuration)&&void 0!==r?r:"1s";return i(a,{animation:"wave",variant:"rounded",sx:{width:"100%",height:"100%","&::after":{animationDuration:l}}})}()})}),i(l,{in:f===n.Error&&!e.loading,unmountOnExit:!0,children:i(p,{children:i("img",{src:"images/video-error.webp",alt:"video-error",style:{width:"100%",height:"100%"}})})})]})},c=e(t)({"--mp-core1-color-main":"#ed4229","--mp-core1-color-text":"#fff","--mp-core1-icon-size":"34px",position:"relative",paddingBottom:"56.25%",borderRadius:"6px",overflow:"hidden","&.loaded":{background:"#000"}}),p=e(t)({position:"absolute",top:0,left:0,width:"100%",height:"100%",zIndex:2,".player":{width:"100%",height:"100%"}});export{m as MediaPlayerMuted,m as default};
|
|
2
2
|
//# sourceMappingURL=muted.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muted.js","sources":["../../src/media-player/muted.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"muted.js","sources":["../../src/media-player/muted.tsx"],"sourcesContent":["// imports\r\nimport { Box, Fade, Skeleton, styled } from '@mui/material'\r\nimport { EMediaPlayerStatus } from './types'\r\nimport { getAspectRatioStyled, useStreamUrl } from './helpers'\r\nimport VideoPlayerCore from './core/videoplayer'\r\n// types\r\nimport type { FC } from 'react'\r\nimport type { IVideoPlayerProps } from './core/videoplayer'\r\nimport type { MediaPlayerBaseProps, MediaPlayerBaseSlots } from './types'\r\n\r\nexport interface SlotMediaPlayerMutedProps extends MediaPlayerBaseSlots {\r\n coreProps?: IVideoPlayerProps\r\n}\r\n\r\nexport interface IMediaPlayerMutedProps extends MediaPlayerBaseProps {\r\n slots?: SlotMediaPlayerMutedProps\r\n}\r\n\r\nexport const MediaPlayerMuted: FC<IMediaPlayerMutedProps> = (props) => {\r\n const { status, streamUrl } = useStreamUrl(props.resourceId, props.fetchDataStream)\r\n\r\n const renderLoading = () => {\r\n if (props.slots?.loading) return props.slots.loading\r\n const duration = props.slots?.loadingProps?.animationDuration ?? '1s'\r\n return <Skeleton animation='wave' variant='rounded' sx={{ width: '100%', height: '100%', '&::after': { animationDuration: duration } }} />\r\n }\r\n\r\n return (\r\n <WrapPlayer className={status === EMediaPlayerStatus.Loaded ? 'loaded' : ''} sx={getAspectRatioStyled(props.slots?.aspectRatio)}>\r\n <WrapVideo>\r\n {streamUrl && (\r\n // <MediaPlayerCore1 className='player' src={streamUrl} slots={props.slots?.core1Props} />\r\n <VideoPlayerCore\r\n className='player'\r\n src={streamUrl}\r\n anotherControls\r\n {...props.slots?.coreProps}\r\n controls={{ autoPlay: true, muted: true, ...props.slots?.coreProps?.controls }}\r\n />\r\n )}\r\n </WrapVideo>\r\n <Fade in={status === EMediaPlayerStatus.Loading || props.loading} unmountOnExit>\r\n <WrapVideo>{renderLoading()}</WrapVideo>\r\n </Fade>\r\n <Fade in={status === EMediaPlayerStatus.Error && !props.loading} unmountOnExit>\r\n <WrapVideo>\r\n <img src='images/video-error.webp' alt='video-error' style={{ width: '100%', height: '100%' }} />\r\n </WrapVideo>\r\n </Fade>\r\n </WrapPlayer>\r\n )\r\n}\r\n\r\nexport default MediaPlayerMuted\r\n\r\nconst WrapPlayer = styled(Box)({\r\n '--mp-core1-color-main': '#ed4229',\r\n '--mp-core1-color-text': '#fff',\r\n '--mp-core1-icon-size': '34px',\r\n position: 'relative',\r\n paddingBottom: '56.25%',\r\n borderRadius: '6px',\r\n overflow: 'hidden',\r\n '&.loaded': {\r\n background: '#000'\r\n }\r\n})\r\n\r\nconst WrapVideo = styled(Box)({\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n zIndex: 2,\r\n '.player': {\r\n width: '100%',\r\n height: '100%'\r\n }\r\n})\r\n"],"names":["MediaPlayerMuted","props","_props$slots3","_props$slots4","_props$slots5","_useStreamUrl","useStreamUrl","resourceId","fetchDataStream","status","streamUrl","_jsxs","WrapPlayer","className","EMediaPlayerStatus","Loaded","sx","getAspectRatioStyled","slots","aspectRatio","children","_jsx","WrapVideo","VideoPlayerCore","_objectSpread","src","anotherControls","coreProps","controls","autoPlay","muted","Fade","in","Loading","loading","unmountOnExit","_props$slots","_props$slots$loadingP","_props$slots2","duration","loadingProps","animationDuration","Skeleton","animation","variant","width","height","renderLoading","Error","alt","style","styled","Box","position","paddingBottom","borderRadius","overflow","background","top","left","zIndex"],"mappings":"kWAkBaA,EAA+C,SAACC,GAAS,IAAAC,EAAAC,EAAAC,EACpEC,EAA8BC,EAAaL,EAAMM,WAAYN,EAAMO,iBAA3DC,EAAMJ,EAANI,OAAQC,EAASL,EAATK,UAQhB,OACEC,EAACC,EAAU,CAACC,UAAWJ,IAAWK,EAAmBC,OAAS,SAAW,GAAIC,GAAIC,EAAgC,QAAZf,EAACD,EAAMiB,aAAK,IAAAhB,OAAA,EAAXA,EAAaiB,aACjHC,SAAA,CAAAC,EAACC,EAAS,CAAAF,SACPV,GAECW,EAACE,EAAeC,EAAAA,EAAA,CACdX,UAAU,SACVY,IAAKf,EACLgB,iBAAe,WAAAvB,EACXF,EAAMiB,aAAK,IAAAf,OAAA,EAAXA,EAAawB,WAAS,CAAA,EAAA,CAC1BC,SAAQJ,EAAA,CAAIK,UAAU,EAAMC,OAAO,GAAoB,QAAhB1B,EAAKH,EAAMiB,aAAKd,IAAAA,GAAW,QAAXA,EAAXA,EAAauB,iBAAbvB,IAAsBA,OAAtBA,EAAAA,EAAwBwB,eAI1EP,EAACU,EAAK,CAAAC,GAAIvB,IAAWK,EAAmBmB,SAAWhC,EAAMiC,QAASC,eAAa,EAAAf,SAC7EC,EAACC,EAAW,CAAAF,SArBI,WAAK,IAAAgB,EAAAC,EAAAC,EACzB,WAAAF,EAAInC,EAAMiB,aAAK,IAAAkB,GAAXA,EAAaF,QAAS,OAAOjC,EAAMiB,MAAMgB,QAC7C,IAAMK,EAAuD,QAA/CF,EAAc,QAAdC,EAAGrC,EAAMiB,aAAK,IAAAoB,GAAc,QAAdA,EAAXA,EAAaE,oBAAY,IAAAF,OAAA,EAAzBA,EAA2BG,yBAAiB,IAAAJ,EAAAA,EAAI,KACjE,OAAOhB,EAACqB,EAAS,CAAAC,UAAU,OAAOC,QAAQ,UAAU5B,GAAI,CAAE6B,MAAO,OAAQC,OAAQ,OAAQ,WAAY,CAAEL,kBAAmBF,KAC3H,CAiBiBQ,OAEd1B,EAACU,EAAI,CAACC,GAAIvB,IAAWK,EAAmBkC,QAAU/C,EAAMiC,QAASC,eAAa,EAAAf,SAC5EC,EAACC,EAAS,CAAAF,SACRC,EAAK,MAAA,CAAAI,IAAI,0BAA0BwB,IAAI,cAAcC,MAAO,CAAEL,MAAO,OAAQC,OAAQ,gBAK/F,EAIMlC,EAAauC,EAAOC,EAAPD,CAAY,CAC7B,wBAAyB,UACzB,wBAAyB,OACzB,uBAAwB,OACxBE,SAAU,WACVC,cAAe,SACfC,aAAc,MACdC,SAAU,SACV,WAAY,CACVC,WAAY,UAIVnC,EAAY6B,EAAOC,EAAPD,CAAY,CAC5BE,SAAU,WACVK,IAAK,EACLC,KAAM,EACNd,MAAO,OACPC,OAAQ,OACRc,OAAQ,EACR,UAAW,CACTf,MAAO,OACPC,OAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"player.video-stream.js","sources":["../../src/media-player/player.video-stream.tsx"],"sourcesContent":["import React, { useEffect } from 'react'\r\nimport { Box, Fade, Skeleton, styled } from '@mui/material'\r\nimport { useStreamUrl } from './helpers'\r\nimport
|
|
1
|
+
{"version":3,"file":"player.video-stream.js","sources":["../../src/media-player/player.video-stream.tsx"],"sourcesContent":["import React, { useEffect } from 'react'\r\nimport { Box, Fade, Skeleton, styled } from '@mui/material'\r\nimport { useStreamUrl } from './helpers'\r\nimport VideoPlayerCore, { IVideoPlayerSlots } from './core/videoplayer'\r\nimport { EMediaPlayerStatus } from './types'\r\nimport type { MediaPlayerBaseProps, MediaPlayerBaseSlots } from './types'\r\n\r\nexport interface MediaPlayerSlotsProps extends MediaPlayerBaseSlots {\r\n disabledBackground?: boolean\r\n keepTabActive?: boolean\r\n}\r\n\r\ninterface IProps extends MediaPlayerBaseProps {\r\n slots?: MediaPlayerSlotsProps\r\n slotMedia?: IVideoPlayerSlots\r\n mediaMetadata?: MediaMetadata\r\n}\r\n\r\nconst mediaPlayerClasses = {\r\n disabledLoading: 'disabled-loading',\r\n disabledBackground: 'disabled-background'\r\n}\r\n\r\nconst MediaPlayerVideo = React.forwardRef<HTMLVideoElement, IProps>((props, ref) => {\r\n const { status, streamUrl } = useStreamUrl(props.resourceId, props.fetchDataStream)\r\n\r\n useEffect(() => {\r\n const keepActive = () => requestAnimationFrame(keepActive)\r\n const rafId = requestAnimationFrame(keepActive)\r\n return () => cancelAnimationFrame(rafId)\r\n }, [])\r\n\r\n const renderLoading = () => {\r\n if (props.slots?.loading) return props.slots.loading\r\n const duration = props.slots?.loadingProps?.animationDuration ?? '1s'\r\n return <Skeleton animation='wave' variant='rounded' sx={{ width: '100%', height: '100%', '&::after': { animationDuration: duration } }} />\r\n }\r\n\r\n const getClasses = (): string | undefined => {\r\n const classes: string[] = []\r\n if (props.slots?.loadingProps?.disabled) classes.push(mediaPlayerClasses.disabledLoading)\r\n if (props.slots?.disabledBackground) classes.push(mediaPlayerClasses.disabledBackground)\r\n if (status !== EMediaPlayerStatus.Loading && !props.loading && streamUrl) {\r\n classes.push('loaded')\r\n }\r\n return classes.length > 0 ? classes.join(' ') : undefined\r\n }\r\n\r\n return (\r\n <WrapPlayer className={getClasses()}>\r\n <WrapVideo sx={{ zIndex: 3 }}>\r\n {streamUrl && (\r\n <VideoPlayerCore\r\n ref={ref}\r\n className='player'\r\n src={streamUrl}\r\n mediaMetadata={props.mediaMetadata}\r\n {...props.slotMedia}\r\n controls={props.slotMedia?.controls}\r\n />\r\n )}\r\n </WrapVideo>\r\n <Fade in={(status === EMediaPlayerStatus.Loading || props.loading) && props.slots?.loadingProps?.disabled !== true}>\r\n <WrapVideo>{renderLoading()}</WrapVideo>\r\n </Fade>\r\n <Fade in={status === EMediaPlayerStatus.Error && !props.loading} unmountOnExit>\r\n <WrapVideo>\r\n <img src='images/video-error.webp' alt='video-error' style={{ width: '100%', height: '100%' }} />\r\n </WrapVideo>\r\n </Fade>\r\n </WrapPlayer>\r\n )\r\n})\r\n\r\nexport default React.memo(MediaPlayerVideo)\r\n\r\nconst WrapPlayer = styled(Box)({\r\n '--mp-core1-color-main': '#ed4229',\r\n '--mp-core1-color-text': '#fff',\r\n '--mp-core1-icon-size': '34px',\r\n position: 'relative',\r\n aspectRatio: '16/9',\r\n borderRadius: '6px',\r\n overflow: 'hidden',\r\n '&.loaded': {\r\n background: '#000',\r\n boxShadow: 'rgba(0, 0, 0, 0.24) 0px 3px 8px'\r\n },\r\n [`&.${mediaPlayerClasses.disabledBackground}`]: {\r\n background: 'unset'\r\n }\r\n})\r\n\r\nconst WrapVideo = styled(Box)({\r\n '--plyr-color-main': '#ed4229',\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n zIndex: 2,\r\n '.MPCore1-root': {\r\n width: '100%',\r\n height: '100%'\r\n }\r\n})\r\n"],"names":["styled","Box","_defineProperty","position","aspectRatio","borderRadius","overflow","background","boxShadow","concat","top","left","width","height","zIndex"],"mappings":"mNA4EmBA,EAAOC,EAAPD,CAAWE,EAAA,CAC5B,wBAAyB,UACzB,wBAAyB,OACzB,uBAAwB,OACxBC,SAAU,WACVC,YAAa,OACbC,aAAc,MACdC,SAAU,SACV,WAAY,CACVC,WAAY,OACZC,UAAW,oCACZ,KAAAC,OAnEmB,uBAoE4B,CAC9CF,WAAY,WAIEP,EAAOC,EAAPD,CAAY,CAC5B,oBAAqB,UACrBG,SAAU,WACVO,IAAK,EACLC,KAAM,EACNC,MAAO,OACPC,OAAQ,OACRC,OAAQ,EACR,gBAAiB,CACfF,MAAO,OACPC,OAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../src/media-right/hooks.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react'\r\nimport { mediaRightService, MediaRightService } from './service'\r\nimport { IMediaRightChannel, IMediaRightGroup, IMediaRightItem } from './types'\r\n\r\nexport interface IMediaRightStoreOptions {\r\n localStorageKey?: string\r\n}\r\n\r\nexport function useMediaRightStore<O = any>(params?: IMediaRightStoreOptions) {\r\n const initializedRef = useRef(false)\r\n\r\n // Set custom localStorage key BEFORE getting initial data\r\n if (params?.localStorageKey && !initializedRef.current) {\r\n MediaRightService.setOptions({ localStorageKey: params.localStorageKey })\r\n }\r\n\r\n const [groups, setGroups] = useState<Record<string, IMediaRightGroup<O>>>(\r\n () => mediaRightService.getGroupsMap() as Record<string, IMediaRightGroup<O>>\r\n )\r\n\r\n useEffect(() => {\r\n // Initialize and subscribe to changes\r\n if (!initializedRef.current) {\r\n mediaRightService.initialize()\r\n initializedRef.current = true\r\n }\r\n\r\n const unsubscribe = mediaRightService.subscribe('stateChange', ({ groups }) => {\r\n setGroups(groups as Record<string, IMediaRightGroup<O>>)\r\n })\r\n\r\n return () => {\r\n if (unsubscribe) unsubscribe()\r\n }\r\n }, [])\r\n\r\n return { groups: Object.values(groups), groupsMap: groups }\r\n}\r\n\r\nexport function useMediaRightActions<O = any>(params?: IMediaRightStoreOptions) {\r\n const initializedRef = useRef(false)\r\n\r\n // Set custom localStorage key ONCE on mount\r\n if (params?.localStorageKey && !initializedRef.current) {\r\n MediaRightService.setOptions({ localStorageKey: params.localStorageKey })\r\n initializedRef.current = true\r\n }\r\n\r\n const addGroup = (group: Omit<IMediaRightGroup<O>, 'createdAt' | 'items' | 'channels'>) => {\r\n mediaRightService.addGroup(group)\r\n }\r\n\r\n const updateGroup = (groupId: string, updates: Partial<Pick<IMediaRightGroup<O>, 'name'>>) => {\r\n mediaRightService.updateGroup(groupId, updates)\r\n }\r\n\r\n const removeGroup = (groupId: string) => {\r\n mediaRightService.removeGroup(groupId)\r\n }\r\n\r\n const addItem = (item: IMediaRightItem<O>) => {\r\n mediaRightService.addItem(item)\r\n }\r\n\r\n const updateItem = (groupId: string, productId: string, updates: Partial<IMediaRightItem<O>>) => {\r\n mediaRightService.updateItem(groupId, productId, updates)\r\n }\r\n\r\n const removeItem = (groupId: string, productId: string) => {\r\n mediaRightService.removeItem(groupId, productId)\r\n }\r\n\r\n const clearCart = () => {\r\n mediaRightService.clearAll()\r\n }\r\n\r\n const addChannel = (groupId: string, channel:
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../src/media-right/hooks.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react'\r\nimport { mediaRightService, MediaRightService } from './service'\r\nimport { IMediaRightChannel, IMediaRightChannelCreate, IMediaRightGroup, IMediaRightItem } from './types'\r\n\r\nexport interface IMediaRightStoreOptions {\r\n localStorageKey?: string\r\n}\r\n\r\nexport function useMediaRightStore<O = any>(params?: IMediaRightStoreOptions) {\r\n const initializedRef = useRef(false)\r\n\r\n // Set custom localStorage key BEFORE getting initial data\r\n if (params?.localStorageKey && !initializedRef.current) {\r\n MediaRightService.setOptions({ localStorageKey: params.localStorageKey })\r\n }\r\n\r\n const [groups, setGroups] = useState<Record<string, IMediaRightGroup<O>>>(\r\n () => mediaRightService.getGroupsMap() as Record<string, IMediaRightGroup<O>>\r\n )\r\n\r\n useEffect(() => {\r\n // Initialize and subscribe to changes\r\n if (!initializedRef.current) {\r\n mediaRightService.initialize()\r\n initializedRef.current = true\r\n }\r\n\r\n const unsubscribe = mediaRightService.subscribe('stateChange', ({ groups }) => {\r\n setGroups(groups as Record<string, IMediaRightGroup<O>>)\r\n })\r\n\r\n return () => {\r\n if (unsubscribe) unsubscribe()\r\n }\r\n }, [])\r\n\r\n return { groups: Object.values(groups), groupsMap: groups }\r\n}\r\n\r\nexport function useMediaRightActions<O = any>(params?: IMediaRightStoreOptions) {\r\n const initializedRef = useRef(false)\r\n\r\n // Set custom localStorage key ONCE on mount\r\n if (params?.localStorageKey && !initializedRef.current) {\r\n MediaRightService.setOptions({ localStorageKey: params.localStorageKey })\r\n initializedRef.current = true\r\n }\r\n\r\n const addGroup = (group: Omit<IMediaRightGroup<O>, 'id' | 'createdAt' | 'items' | 'channels'>) => {\r\n mediaRightService.addGroup(group)\r\n }\r\n\r\n const updateGroup = (groupId: string, updates: Partial<Pick<IMediaRightGroup<O>, 'name'>>) => {\r\n mediaRightService.updateGroup(groupId, updates)\r\n }\r\n\r\n const removeGroup = (groupId: string) => {\r\n mediaRightService.removeGroup(groupId)\r\n }\r\n\r\n const addItem = (item: IMediaRightItem<O>) => {\r\n mediaRightService.addItem(item)\r\n }\r\n\r\n const updateItem = (groupId: string, productId: string, updates: Partial<IMediaRightItem<O>>) => {\r\n mediaRightService.updateItem(groupId, productId, updates)\r\n }\r\n\r\n const removeItem = (groupId: string, productId: string) => {\r\n mediaRightService.removeItem(groupId, productId)\r\n }\r\n\r\n const clearCart = () => {\r\n mediaRightService.clearAll()\r\n }\r\n\r\n const addChannel = (groupId: string, channel: IMediaRightChannelCreate) => {\r\n mediaRightService.addChannel(groupId, channel)\r\n }\r\n\r\n const updateChannel = (groupId: string, channelId: string, updates: Partial<IMediaRightChannel>) => {\r\n mediaRightService.updateChannel(groupId, channelId, updates)\r\n }\r\n\r\n const removeChannel = (groupId: string, channelId: string) => {\r\n mediaRightService.removeChannel(groupId, channelId)\r\n }\r\n\r\n const clearChannels = (groupId: string) => {\r\n mediaRightService.clearChannels(groupId)\r\n }\r\n\r\n return {\r\n addGroup,\r\n updateGroup,\r\n removeGroup,\r\n addItem,\r\n updateItem,\r\n removeItem,\r\n addChannel,\r\n updateChannel,\r\n removeChannel,\r\n clearChannels,\r\n clearCart\r\n }\r\n}\r\n"],"names":["useMediaRightStore","params","initializedRef","useRef","localStorageKey","current","MediaRightService","setOptions","_useState","useState","mediaRightService","getGroupsMap","_useState2","_slicedToArray","groups","setGroups","useEffect","initialize","unsubscribe","subscribe","_ref","Object","values","groupsMap","useMediaRightActions","addGroup","group","updateGroup","groupId","updates","removeGroup","addItem","item","updateItem","productId","removeItem","addChannel","channel","updateChannel","channelId","removeChannel","clearChannels","clearCart","clearAll"],"mappings":"6MAQM,SAAUA,EAA4BC,GAC1C,IAAMC,EAAiBC,GAAO,GAG1BF,SAAAA,EAAQG,kBAAoBF,EAAeG,SAC7CC,EAAkBC,WAAW,CAAEH,gBAAiBH,EAAOG,kBAGzD,IAAAI,EAA4BC,EAC1B,WAAA,OAAMC,EAAkBC,iBACzBC,EAAAC,EAAAL,EAAA,GAFMM,EAAMF,EAAA,GAAEG,EAASH,EAAA,GAoBxB,OAhBAI,EAAU,WAEHd,EAAeG,UAClBK,EAAkBO,aAClBf,EAAeG,SAAU,GAG3B,IAAMa,EAAcR,EAAkBS,UAAU,cAAe,SAAAC,GAAe,IAAZN,EAAMM,EAANN,OAChEC,EAAUD,EACZ,GAEA,OAAO,WACDI,GAAaA,GAClB,CACF,EAAE,IAEI,CAAEJ,OAAQO,OAAOC,OAAOR,GAASS,UAAWT,EACrD,CAEM,SAAUU,EAA8BvB,GAC5C,IAAMC,EAAiBC,GAAO,GAG1BF,SAAAA,EAAQG,kBAAoBF,EAAeG,UAC7CC,EAAkBC,WAAW,CAAEH,gBAAiBH,EAAOG,kBACvDF,EAAeG,SAAU,GA+C3B,MAAO,CACLoB,SA7Ce,SAACC,GAChBhB,EAAkBe,SAASC,EAC5B,EA4CCC,YA1CkB,SAACC,EAAiBC,GACpCnB,EAAkBiB,YAAYC,EAASC,EACxC,EAyCCC,YAvCkB,SAACF,GACnBlB,EAAkBoB,YAAYF,EAC/B,EAsCCG,QApCc,SAACC,GACftB,EAAkBqB,QAAQC,EAC3B,EAmCCC,WAjCiB,SAACL,EAAiBM,EAAmBL,GACtDnB,EAAkBuB,WAAWL,EAASM,EAAWL,EAClD,EAgCCM,WA9BiB,SAACP,EAAiBM,GACnCxB,EAAkByB,WAAWP,EAASM,EACvC,EA6BCE,WAvBiB,SAACR,EAAiBS,GACnC3B,EAAkB0B,WAAWR,EAASS,EACvC,EAsBCC,cApBoB,SAACV,EAAiBW,EAAmBV,GACzDnB,EAAkB4B,cAAcV,EAASW,EAAWV,EACrD,EAmBCW,cAjBoB,SAACZ,EAAiBW,GACtC7B,EAAkB8B,cAAcZ,EAASW,EAC1C,EAgBCE,cAdoB,SAACb,GACrBlB,EAAkB+B,cAAcb,EACjC,EAaCc,UA/BgB,WAChBhC,EAAkBiC,UACnB,EA+BH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{slicedToArray as o,objectSpread2 as r}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as t,jsxs as e,Fragment as n}from"react/jsx-runtime";import{useState as i,useCallback as l}from"react";import{useTheme as a,useMediaQuery as c,Badge as u,Drawer as s}from"@mui/material";import p from"@mui/icons-material/PlaylistPlay";import{canAddGroup as m
|
|
1
|
+
import{slicedToArray as o,objectSpread2 as r}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as t,jsxs as e,Fragment as n}from"react/jsx-runtime";import{useState as i,useCallback as l}from"react";import{useTheme as a,useMediaQuery as c,Badge as u,Drawer as s}from"@mui/material";import p from"@mui/icons-material/PlaylistPlay";import{canAddGroup as m}from"../helpers.js";import{Root as d,MenuStyled as f}from"./styled.js";import{IconButtonDark as h}from"../../components/buttons.js";import{MediaGroupAccordion as g}from"./media-group-accordion.js";import{useMediaRightStore as y,useMediaRightActions as P}from"../hooks.js";import{createCartContent as b}from"../../factory/cart-content/create.cart-content.js";import{createCartItem as v}from"../../factory/cart-item/create.cart-item.js";import{NewGroupArea as x}from"./new-group-area.js";var C=b({labels:{title:"Your Playlist",buttonCheckout:"Show in playlist",itemsSuffixMany:"playlists",itemsSuffixSingle:"playlist"},empty:{title:"Your playlist is empty",subTitle:"Try adding some playlist"}}),j=v({}),S=function(r){var b=r.localStorageKey,v=y({localStorageKey:b}).groups,S=P({localStorageKey:b}),T=a(),G=c(T.breakpoints.down("sm")),M=i(null),k=o(M,2),w=k[0],D=k[1],I=i(!1),L=o(I,2),B=L[0],K=L[1],z=function(o){S.addGroup({name:o})},A=function(o){S.updateGroup(o.id,o)},E=function(o){S.removeGroup(o)},N=function(o,r){S.removeItem(o,r)},O=l(function(){return t(C,{isMobile:G,carts:v,onClose:function(){return D(null)},onCheckout:function(){return D(null)},buttonMoveToCartProps:r.buttonMoveToCartProps,slots:{headerLeftProps:{flexDirection:"row",alignItems:"flex-end",justifyContent:"space-between",gap:1,flex:1},headerRight:function(o){return m(v)&&t(x,{onSaveGroup:z})},item:function(o){return t(g,{group:o,onEditGroup:A,onDeleteGroup:E,onDeleteMedia:N,accordionProps:{expanded:B===o.id,onChange:function(r,t){return K(!!t&&o.id)}},accordionDetailsProps:{sx:{display:"flex",flexDirection:"column",position:"relative",gap:1,p:1,"& .MuiAccordionDetails-root":{p:0}}},renderItem:function(e){return t(j,{item:e,name:e.ProductName,imageUrl:e.PictureUrl,onRemoveCart:function(){return N(o.id,e.ProductId)},itemTitleProps:r.itemTitleProps,itemTitlePropsGetter:r.itemTitlePropsGetter,onClose:function(){return D(null)}},e.ProductId)}},o.id)}}})},[v,G,r,B]);return e(n,{children:[t(h,{onClick:function(o){return D(o.currentTarget)},children:t(u,{badgeContent:v.length||0,color:"error",children:t(p,{})})}),G?t(s,{anchor:"right",open:Boolean(w),onClose:function(){return D(null)},disableScrollLock:!0,PaperProps:{sx:{width:"calc(100% - 100px)",maxWidth:360}},children:t(d,{children:O()})}):t(f,{disableScrollLock:!0,anchorEl:w,open:Boolean(w),onClose:function(){return D(null)},anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},MenuListProps:{component:"div"},children:t(d,{children:O()})})]})},T=function(o){var e=function(e){return t(S,r(r({},o),e))};return e.displayName="MediaGroupWidget",e};export{S as MediaGroupWidget,T as createMediaGroupWidget};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/media-right/media-widget/index.tsx"],"sourcesContent":["import { useCallback, useState } from 'react'\r\nimport { Badge, ButtonProps, Drawer, TypographyProps, useMediaQuery, useTheme } from '@mui/material'\r\nimport PlaylistPlayIcon from '@mui/icons-material/PlaylistPlay'\r\nimport { canAddGroup, generateGroupId } from '../helpers'\r\nimport { MenuStyled, Root } from './styled'\r\nimport { IconButtonDark } from '../../components/buttons'\r\nimport { MediaGroupAccordion } from './media-group-accordion'\r\nimport { useMediaRightStore, useMediaRightActions } from '../hooks'\r\nimport type { IMediaRightGroup, IMediaRightItem } from '../types'\r\nimport createCartContent from '../../factory/cart-content/create.cart-content'\r\nimport createCartItem from '../../factory/cart-item/create.cart-item'\r\nimport { NewGroupArea } from './new-group-area'\r\n\r\nexport interface IMediaGroupWidgetProps {\r\n itemTitleProps?: TypographyProps & { [key: string]: any }\r\n itemTitlePropsGetter?: (item: IMediaRightItem, onClose?: () => void) => TypographyProps & { [key: string]: any }\r\n onClose?: () => void\r\n localStorageKey?: string\r\n hrefCart?: string\r\n buttonMoveToCartProps?: ButtonProps & { [key: string]: any }\r\n onDetailClick?: ButtonProps['onClick']\r\n}\r\n\r\nconst CartContent = createCartContent<IMediaRightGroup>({\r\n labels: {\r\n title: 'Your Playlist',\r\n buttonCheckout: 'Show in playlist',\r\n itemsSuffixMany: 'playlists',\r\n itemsSuffixSingle: 'playlist'\r\n },\r\n empty: {\r\n title: 'Your playlist is empty',\r\n subTitle: 'Try adding some playlist'\r\n }\r\n})\r\n\r\nconst CartItem = createCartItem<IMediaRightItem>({})\r\n\r\nexport const MediaGroupWidget: React.FC<IMediaGroupWidgetProps> = (props) => {\r\n const { localStorageKey } = props\r\n const { groups } = useMediaRightStore({ localStorageKey })\r\n const actions = useMediaRightActions({ localStorageKey })\r\n const theme = useTheme()\r\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'))\r\n\r\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\r\n const [expandedGroupId, setExpandedGroupId] = useState<string | false>(false)\r\n\r\n const handleSaveNewGroup = (groupName: string) => {\r\n actions.addGroup({\r\n name: groupName,\r\n id: generateGroupId()\r\n })\r\n }\r\n\r\n const handleEditGroup = (group: IMediaRightGroup) => {\r\n actions.updateGroup(group.id, group)\r\n }\r\n\r\n const handleDeleteGroup = (groupId: string) => {\r\n actions.removeGroup(groupId)\r\n }\r\n\r\n const handleDeleteMedia = (groupId: string, productId: string) => {\r\n actions.removeItem(groupId, productId)\r\n }\r\n\r\n const renderContent = useCallback(\r\n () => (\r\n <CartContent\r\n isMobile={isMobile}\r\n carts={groups}\r\n onClose={() => setAnchorEl(null)}\r\n onCheckout={() => setAnchorEl(null)}\r\n buttonMoveToCartProps={props.buttonMoveToCartProps}\r\n slots={{\r\n headerLeftProps: {\r\n flexDirection: 'row',\r\n alignItems: 'flex-end',\r\n justifyContent: 'space-between',\r\n gap: 1,\r\n flex: 1\r\n },\r\n headerRight: (ctx) => canAddGroup(groups) && <NewGroupArea onSaveGroup={handleSaveNewGroup} />,\r\n item: (group) => (\r\n <MediaGroupAccordion\r\n key={group.id}\r\n group={group}\r\n onEditGroup={handleEditGroup}\r\n onDeleteGroup={handleDeleteGroup}\r\n onDeleteMedia={handleDeleteMedia}\r\n accordionProps={{\r\n expanded: expandedGroupId === group.id,\r\n onChange: (_, isExpanded) => setExpandedGroupId(isExpanded ? group.id : false)\r\n }}\r\n accordionDetailsProps={{\r\n sx: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n position: 'relative',\r\n gap: 1,\r\n p: 1,\r\n '& .MuiAccordionDetails-root': { p: 0 }\r\n }\r\n }}\r\n renderItem={(item) => (\r\n <CartItem\r\n item={item}\r\n key={item.ProductId}\r\n name={item.ProductName}\r\n imageUrl={item.PictureUrl}\r\n onRemoveCart={() => handleDeleteMedia(group.id, item.ProductId)}\r\n itemTitleProps={props.itemTitleProps}\r\n itemTitlePropsGetter={props.itemTitlePropsGetter}\r\n onClose={() => setAnchorEl(null)}\r\n />\r\n )}\r\n />\r\n )\r\n }}\r\n />\r\n ),\r\n [groups, isMobile, props, expandedGroupId]\r\n )\r\n\r\n return (\r\n <>\r\n <IconButtonDark onClick={(e) => setAnchorEl(e.currentTarget)}>\r\n <Badge badgeContent={groups.length || 0} color='error'>\r\n <PlaylistPlayIcon />\r\n </Badge>\r\n </IconButtonDark>\r\n {isMobile ? (\r\n <Drawer\r\n anchor='right'\r\n open={Boolean(anchorEl)}\r\n onClose={() => setAnchorEl(null)}\r\n disableScrollLock\r\n PaperProps={{ sx: { width: 'calc(100% - 100px)', maxWidth: 360 } }}\r\n >\r\n <Root>{renderContent()}</Root>\r\n </Drawer>\r\n ) : (\r\n <MenuStyled\r\n disableScrollLock\r\n anchorEl={anchorEl}\r\n open={Boolean(anchorEl)}\r\n onClose={() => setAnchorEl(null)}\r\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n MenuListProps={{ component: 'div' }}\r\n >\r\n <Root>{renderContent()}</Root>\r\n </MenuStyled>\r\n )}\r\n </>\r\n )\r\n}\r\n\r\nexport const createMediaGroupWidget = (params: IMediaGroupWidgetProps) => {\r\n const _MediaGroupWidget: React.FC<Partial<IMediaGroupWidgetProps>> = (props) => <MediaGroupWidget {...params} {...props} />\r\n _MediaGroupWidget.displayName = 'MediaGroupWidget'\r\n return _MediaGroupWidget\r\n}\r\n"],"names":["CartContent","createCartContent","labels","title","buttonCheckout","itemsSuffixMany","itemsSuffixSingle","empty","subTitle","CartItem","createCartItem","MediaGroupWidget","props","localStorageKey","groups","useMediaRightStore","actions","useMediaRightActions","theme","useTheme","isMobile","useMediaQuery","breakpoints","down","_useState","useState","_useState2","_slicedToArray","anchorEl","setAnchorEl","_useState3","_useState4","expandedGroupId","setExpandedGroupId","handleSaveNewGroup","groupName","addGroup","name","id","generateGroupId","handleEditGroup","group","updateGroup","handleDeleteGroup","groupId","removeGroup","handleDeleteMedia","productId","removeItem","renderContent","useCallback","_jsx","carts","onClose","onCheckout","buttonMoveToCartProps","slots","headerLeftProps","flexDirection","alignItems","justifyContent","gap","flex","headerRight","ctx","canAddGroup","NewGroupArea","onSaveGroup","item","MediaGroupAccordion","onEditGroup","onDeleteGroup","onDeleteMedia","accordionProps","expanded","onChange","_","isExpanded","accordionDetailsProps","sx","display","position","p","renderItem","ProductName","imageUrl","PictureUrl","onRemoveCart","ProductId","itemTitleProps","itemTitlePropsGetter","_jsxs","_Fragment","children","IconButtonDark","onClick","e","currentTarget","Badge","badgeContent","length","color","PlaylistPlayIcon","Drawer","anchor","open","Boolean","disableScrollLock","PaperProps","width","maxWidth","Root","MenuStyled","anchorOrigin","vertical","horizontal","transformOrigin","MenuListProps","component","createMediaGroupWidget","params","_MediaGroupWidget","_objectSpread","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/media-right/media-widget/index.tsx"],"sourcesContent":["import { useCallback, useState } from 'react'\r\nimport { Badge, ButtonProps, Drawer, TypographyProps, useMediaQuery, useTheme } from '@mui/material'\r\nimport PlaylistPlayIcon from '@mui/icons-material/PlaylistPlay'\r\nimport { canAddGroup, generateGroupId } from '../helpers'\r\nimport { MenuStyled, Root } from './styled'\r\nimport { IconButtonDark } from '../../components/buttons'\r\nimport { MediaGroupAccordion } from './media-group-accordion'\r\nimport { useMediaRightStore, useMediaRightActions } from '../hooks'\r\nimport type { IMediaRightGroup, IMediaRightItem } from '../types'\r\nimport createCartContent from '../../factory/cart-content/create.cart-content'\r\nimport createCartItem from '../../factory/cart-item/create.cart-item'\r\nimport { NewGroupArea } from './new-group-area'\r\n\r\nexport interface IMediaGroupWidgetProps {\r\n itemTitleProps?: TypographyProps & { [key: string]: any }\r\n itemTitlePropsGetter?: (item: IMediaRightItem, onClose?: () => void) => TypographyProps & { [key: string]: any }\r\n onClose?: () => void\r\n localStorageKey?: string\r\n hrefCart?: string\r\n buttonMoveToCartProps?: ButtonProps & { [key: string]: any }\r\n onDetailClick?: ButtonProps['onClick']\r\n}\r\n\r\nconst CartContent = createCartContent<IMediaRightGroup>({\r\n labels: {\r\n title: 'Your Playlist',\r\n buttonCheckout: 'Show in playlist',\r\n itemsSuffixMany: 'playlists',\r\n itemsSuffixSingle: 'playlist'\r\n },\r\n empty: {\r\n title: 'Your playlist is empty',\r\n subTitle: 'Try adding some playlist'\r\n }\r\n})\r\n\r\nconst CartItem = createCartItem<IMediaRightItem>({})\r\n\r\nexport const MediaGroupWidget: React.FC<IMediaGroupWidgetProps> = (props) => {\r\n const { localStorageKey } = props\r\n const { groups } = useMediaRightStore({ localStorageKey })\r\n const actions = useMediaRightActions({ localStorageKey })\r\n const theme = useTheme()\r\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'))\r\n\r\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\r\n const [expandedGroupId, setExpandedGroupId] = useState<string | false>(false)\r\n\r\n const handleSaveNewGroup = (groupName: string) => {\r\n actions.addGroup({\r\n name: groupName\r\n })\r\n }\r\n\r\n const handleEditGroup = (group: IMediaRightGroup) => {\r\n actions.updateGroup(group.id, group)\r\n }\r\n\r\n const handleDeleteGroup = (groupId: string) => {\r\n actions.removeGroup(groupId)\r\n }\r\n\r\n const handleDeleteMedia = (groupId: string, productId: string) => {\r\n actions.removeItem(groupId, productId)\r\n }\r\n\r\n const renderContent = useCallback(\r\n () => (\r\n <CartContent\r\n isMobile={isMobile}\r\n carts={groups}\r\n onClose={() => setAnchorEl(null)}\r\n onCheckout={() => setAnchorEl(null)}\r\n buttonMoveToCartProps={props.buttonMoveToCartProps}\r\n slots={{\r\n headerLeftProps: {\r\n flexDirection: 'row',\r\n alignItems: 'flex-end',\r\n justifyContent: 'space-between',\r\n gap: 1,\r\n flex: 1\r\n },\r\n headerRight: (ctx) => canAddGroup(groups) && <NewGroupArea onSaveGroup={handleSaveNewGroup} />,\r\n item: (group) => (\r\n <MediaGroupAccordion\r\n key={group.id}\r\n group={group}\r\n onEditGroup={handleEditGroup}\r\n onDeleteGroup={handleDeleteGroup}\r\n onDeleteMedia={handleDeleteMedia}\r\n accordionProps={{\r\n expanded: expandedGroupId === group.id,\r\n onChange: (_, isExpanded) => setExpandedGroupId(isExpanded ? group.id : false)\r\n }}\r\n accordionDetailsProps={{\r\n sx: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n position: 'relative',\r\n gap: 1,\r\n p: 1,\r\n '& .MuiAccordionDetails-root': { p: 0 }\r\n }\r\n }}\r\n renderItem={(item) => (\r\n <CartItem\r\n item={item}\r\n key={item.ProductId}\r\n name={item.ProductName}\r\n imageUrl={item.PictureUrl}\r\n onRemoveCart={() => handleDeleteMedia(group.id, item.ProductId)}\r\n itemTitleProps={props.itemTitleProps}\r\n itemTitlePropsGetter={props.itemTitlePropsGetter}\r\n onClose={() => setAnchorEl(null)}\r\n />\r\n )}\r\n />\r\n )\r\n }}\r\n />\r\n ),\r\n [groups, isMobile, props, expandedGroupId]\r\n )\r\n\r\n return (\r\n <>\r\n <IconButtonDark onClick={(e) => setAnchorEl(e.currentTarget)}>\r\n <Badge badgeContent={groups.length || 0} color='error'>\r\n <PlaylistPlayIcon />\r\n </Badge>\r\n </IconButtonDark>\r\n {isMobile ? (\r\n <Drawer\r\n anchor='right'\r\n open={Boolean(anchorEl)}\r\n onClose={() => setAnchorEl(null)}\r\n disableScrollLock\r\n PaperProps={{ sx: { width: 'calc(100% - 100px)', maxWidth: 360 } }}\r\n >\r\n <Root>{renderContent()}</Root>\r\n </Drawer>\r\n ) : (\r\n <MenuStyled\r\n disableScrollLock\r\n anchorEl={anchorEl}\r\n open={Boolean(anchorEl)}\r\n onClose={() => setAnchorEl(null)}\r\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n MenuListProps={{ component: 'div' }}\r\n >\r\n <Root>{renderContent()}</Root>\r\n </MenuStyled>\r\n )}\r\n </>\r\n )\r\n}\r\n\r\nexport const createMediaGroupWidget = (params: IMediaGroupWidgetProps) => {\r\n const _MediaGroupWidget: React.FC<Partial<IMediaGroupWidgetProps>> = (props) => <MediaGroupWidget {...params} {...props} />\r\n _MediaGroupWidget.displayName = 'MediaGroupWidget'\r\n return _MediaGroupWidget\r\n}\r\n"],"names":["CartContent","createCartContent","labels","title","buttonCheckout","itemsSuffixMany","itemsSuffixSingle","empty","subTitle","CartItem","createCartItem","MediaGroupWidget","props","localStorageKey","groups","useMediaRightStore","actions","useMediaRightActions","theme","useTheme","isMobile","useMediaQuery","breakpoints","down","_useState","useState","_useState2","_slicedToArray","anchorEl","setAnchorEl","_useState3","_useState4","expandedGroupId","setExpandedGroupId","handleSaveNewGroup","groupName","addGroup","name","handleEditGroup","group","updateGroup","id","handleDeleteGroup","groupId","removeGroup","handleDeleteMedia","productId","removeItem","renderContent","useCallback","_jsx","carts","onClose","onCheckout","buttonMoveToCartProps","slots","headerLeftProps","flexDirection","alignItems","justifyContent","gap","flex","headerRight","ctx","canAddGroup","NewGroupArea","onSaveGroup","item","MediaGroupAccordion","onEditGroup","onDeleteGroup","onDeleteMedia","accordionProps","expanded","onChange","_","isExpanded","accordionDetailsProps","sx","display","position","p","renderItem","ProductName","imageUrl","PictureUrl","onRemoveCart","ProductId","itemTitleProps","itemTitlePropsGetter","_jsxs","_Fragment","children","IconButtonDark","onClick","e","currentTarget","Badge","badgeContent","length","color","PlaylistPlayIcon","Drawer","anchor","open","Boolean","disableScrollLock","PaperProps","width","maxWidth","Root","MenuStyled","anchorOrigin","vertical","horizontal","transformOrigin","MenuListProps","component","createMediaGroupWidget","params","_MediaGroupWidget","_objectSpread","displayName"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as o,slicedToArray as r,objectSpread2 as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as i,jsx as n}from"react/jsx-runtime";import{useState as t}from"react";import{styled as a,Accordion as m,accordionSummaryClasses as l,Box as p,Typography as
|
|
1
|
+
import{defineProperty as o,slicedToArray as r,objectSpread2 as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as i,jsx as n}from"react/jsx-runtime";import{useState as t}from"react";import{styled as a,Accordion as m,accordionSummaryClasses as l,Box as p,Typography as d,AccordionSummary as c,Badge as s,IconButton as u,AccordionDetails as g}from"@mui/material";import f from"@mui/icons-material/Edit";import x from"@mui/icons-material/ExpandMore";import h from"@mui/icons-material/FolderOutlined";import{DeleteButton as b}from"./button.delete.js";import{InlineEditing as y}from"./inline-editing.js";import{mediaRightStoreOptions as v}from"../configs.js";import{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};
|
|
2
2
|
//# sourceMappingURL=media-group-accordion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-group-accordion.js","sources":["../../../src/media-right/media-widget/media-group-accordion.tsx"],"sourcesContent":["// imports\r\nimport { useState } from 'react'\r\nimport { Accordion, AccordionSummary, AccordionDetails, Box, Typography,
|
|
1
|
+
{"version":3,"file":"media-group-accordion.js","sources":["../../../src/media-right/media-widget/media-group-accordion.tsx"],"sourcesContent":["// imports\r\nimport { useState } from 'react'\r\nimport { Accordion, AccordionSummary, AccordionDetails, Box, Typography, IconButton, styled, accordionSummaryClasses, Badge } from '@mui/material'\r\nimport EditIcon from '@mui/icons-material/Edit'\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore'\r\nimport FolderOutlinedIcon from '@mui/icons-material/FolderOutlined'\r\nimport { DeleteButton } from './button.delete'\r\nimport { InlineEditing } from './inline-editing'\r\nimport { mediaRightStoreOptions } from '../configs'\r\nimport { NoDataPanel } from '../../components'\r\n// types\r\nimport type { ComponentType, FC, MouseEvent } from 'react'\r\nimport type { AccordionProps, AccordionDetailsProps, AccordionSummaryProps, BoxProps, TypographyProps } from '@mui/material'\r\nimport type { IMediaRightGroup, IMediaRightItem } from '../types'\r\n\r\nexport interface IMediaGroupAccordionProps {\r\n group: IMediaRightGroup\r\n accordionProps?: Partial<AccordionProps>\r\n accordionSummaryProps?: Partial<AccordionSummaryProps>\r\n accordionDetailsProps?: Partial<AccordionDetailsProps>\r\n renderItem?: (item: IMediaRightItem) => React.ReactNode\r\n onEditGroup: (group: IMediaRightGroup) => void\r\n onDeleteGroup: (groupId: string) => void\r\n onDeleteMedia: (groupId: string, mediaId: string) => void\r\n}\r\n\r\nexport const MediaGroupAccordion: FC<IMediaGroupAccordionProps> = (props) => {\r\n const [isEditing, setIsEditing] = useState(false)\r\n\r\n const handleSaveEdit = (value: string) => {\r\n props.onEditGroup({ ...props.group, name: value })\r\n setIsEditing(false)\r\n }\r\n\r\n const handleEditClick = (e: MouseEvent) => {\r\n e.stopPropagation()\r\n setIsEditing(true)\r\n }\r\n\r\n return (\r\n <PlaylistAccordion component='div' {...props.accordionProps} sx={{ my: '0 !important', ...props.accordionProps?.sx }}>\r\n <AccordionSummary component='div' expandIcon={<ExpandMoreIcon />} {...props.accordionSummaryProps}>\r\n <ItemBox>\r\n <Badge badgeContent={props.group.items.length} color='primary'>\r\n <FolderOutlinedIcon fontSize='small' />\r\n </Badge>\r\n <InlineEditing\r\n key={props.group.id + props.group.name + isEditing}\r\n isEdit={isEditing}\r\n setShowEdit={setIsEditing}\r\n onSubmit={handleSaveEdit}\r\n defaultValue={props.group.name}\r\n textField={{\r\n inputProps: { maxLength: mediaRightStoreOptions.MAX_NAME_GROUP },\r\n sx: { flex: 1, minWidth: 0, '& .MuiOutlinedInput-root': { height: '32px' } }\r\n }}\r\n sxForm={{ flex: 1 }}\r\n >\r\n <ItemTitle variant='body2' noWrap title={props.group.name}>\r\n {props.group.name}\r\n </ItemTitle>\r\n {/* <Chip sx={{ fontSize: '12px' }} label={`${props.group.items.length} items`} size='small' /> */}\r\n <IconButton size='small' onClick={handleEditClick} color='success'>\r\n <EditIcon fontSize='small' />\r\n </IconButton>\r\n <DeleteButton onDelete={() => props.onDeleteGroup(props.group.id)} size='small' />\r\n </InlineEditing>\r\n </ItemBox>\r\n </AccordionSummary>\r\n <AccordionDetails {...props.accordionDetailsProps}>\r\n {props.group.items.length > 0 ? (\r\n props.group.items.map((item) => (props.renderItem ? props.renderItem(item) : null))\r\n ) : (\r\n <NoDataPanel title={'No media in this playlist'} sx={{ flex: 1 }} />\r\n )}\r\n </AccordionDetails>\r\n </PlaylistAccordion>\r\n )\r\n}\r\n\r\nexport const PlaylistAccordion: ComponentType<AccordionProps> = styled(Accordion)({\r\n backgroundColor: 'transparent',\r\n boxShadow: 'none',\r\n backgroundImage: 'none',\r\n '&:before': { display: 'none' },\r\n '&.Mui-expanded': { margin: 0 },\r\n [`.${accordionSummaryClasses.root}`]: {\r\n position: 'sticky',\r\n top: 0,\r\n zIndex: 1,\r\n background: 'rgba(var(--color-bg-rba),0.7)',\r\n backdropFilter: 'blur(500px)',\r\n WebkitBackdropFilter: 'blur(500px)',\r\n borderRadius: '12px',\r\n minWidth: 0,\r\n [`& .${accordionSummaryClasses.content}`]: {\r\n minWidth: 0,\r\n margin: 0\r\n }\r\n }\r\n})\r\n\r\nexport const ItemBox: ComponentType<BoxProps> = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n flex: 1,\r\n gap: theme.spacing(1),\r\n minWidth: 0\r\n}))\r\n\r\nexport const ItemTitle: ComponentType<TypographyProps> = styled(Typography)(({ theme }) => ({\r\n fontWeight: 600,\r\n flex: 1,\r\n minWidth: 0,\r\n color: theme.palette.text.primary,\r\n marginLeft: theme.spacing(1)\r\n}))\r\n"],"names":["MediaGroupAccordion","props","_props$accordionProps","_useState","useState","_useState2","_slicedToArray","isEditing","setIsEditing","_jsxs","PlaylistAccordion","_objectSpread","component","accordionProps","sx","my","_jsx","AccordionSummary","expandIcon","ExpandMoreIcon","accordionSummaryProps","children","ItemBox","Badge","badgeContent","group","items","length","color","FolderOutlinedIcon","fontSize","InlineEditing","isEdit","setShowEdit","onSubmit","value","onEditGroup","name","defaultValue","textField","inputProps","maxLength","mediaRightStoreOptions","MAX_NAME_GROUP","flex","minWidth","height","sxForm","ItemTitle","variant","noWrap","title","IconButton","size","onClick","e","stopPropagation","EditIcon","DeleteButton","onDelete","onDeleteGroup","id","AccordionDetails","accordionDetailsProps","map","item","renderItem","NoDataPanel","styled","Accordion","_defineProperty","backgroundColor","boxShadow","backgroundImage","display","margin","concat","accordionSummaryClasses","root","position","top","zIndex","background","backdropFilter","WebkitBackdropFilter","borderRadius","content","Box","_ref","alignItems","gap","theme","spacing","Typography","_ref2","fontWeight","palette","text","primary","marginLeft"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as
|
|
1
|
+
import{defineProperty as o,createClass as r,objectSpread2 as e,toConsumableArray as a,classCallCheck as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{createObjectSingleton as n}from"dinocollab-core/utils";import{mediaRightStoreOptions as l}from"./configs.js";import{MediaRightEventStore as i}from"./event-store.js";import{v4 as s}from"uuid";var u=r(function r(){t(this,r),o(this,"localStorageKey","__media_right_default__"),o(this,"store",new i),o(this,"maxItemsPerGroup",l.MAX_ITEMS_PER_GROUP),o(this,"maxGroup",l.MAX_GROUP),o(this,"maxNameGroup",l.MAX_NAME_GROUP),o(this,"maxChannels",l.MAX_CHANNELS)}),c=function(){function l(){t(this,l)}return r(l,[{key:"initialize",value:function(){l.provider.store.emit("requestState",{})}},{key:"subscribe",value:function(o,r){return l.provider.store.subscribe(o,r)}},{key:"getGroups",value:function(){var o,r=this.loadFromLocalStorage();return Object.values(null!==(o=r.groups)&&void 0!==o?o:{})}},{key:"getGroupsMap",value:function(){var o;return null!==(o=this.loadFromLocalStorage().groups)&&void 0!==o?o:{}}},{key:"getGroup",value:function(o){var r;return null===(r=this.loadFromLocalStorage().groups)||void 0===r?void 0:r[o]}},{key:"addGroup",value:function(r){var a=this.loadFromLocalStorage(),t=Object.keys(a.groups).length,n=l.provider.maxGroup;if(t>=n)throw new Error("Maximum playlist limit reached (".concat(n,")"));var i=l.provider.maxNameGroup;if(r.name&&r.name.length>i)throw new Error("Playlist name exceeds maximum length (".concat(i,")"));var u=e(e({},r),{},{id:s(),createdAt:Date.now(),items:[],channels:[]}),c=e(e({},a.groups),{},o({},u.id,u));this.saveToLocalStorage(c)}},{key:"updateGroup",value:function(r,a){var t=this.loadFromLocalStorage();if(t.groups[r]){var n=l.provider.maxNameGroup;if(a.name&&a.name.length>n)throw new Error("Playlist name exceeds maximum length (".concat(n,")"));var i=e(e({},t.groups),{},o({},r,e(e({},t.groups[r]),a)));this.saveToLocalStorage(i)}}},{key:"removeGroup",value:function(o){var r=this.loadFromLocalStorage(),a=e({},r.groups);delete a[o],this.saveToLocalStorage(a)}},{key:"addChannel",value:function(r,t){var n=this.loadFromLocalStorage(),i=n.groups[r];if(!i)throw new Error("Playlist ".concat(r," not found"));var u=l.provider.maxChannels;if(i.channels.length>=u)throw new Error("Playlist ".concat(r," has reached maximum channels limit (").concat(u,")"));var c=e(e({},t),{},{Id:s()}),v=e(e({},i),{},{channels:[].concat(a(i.channels),[c])}),d=e(e({},n.groups),{},o({},r,v));this.saveToLocalStorage(d)}},{key:"updateChannel",value:function(r,t,n){var l=this.loadFromLocalStorage(),i=l.groups[r];if(!i)throw new Error("Playlist ".concat(r," not found"));var s=i.channels.findIndex(function(o){return o.Id===t});if(-1===s)throw new Error("Channel ".concat(t," not found in playlist ").concat(r));var u=a(i.channels);u[s]=e(e({},u[s]),n);var c=e(e({},l.groups),{},o({},r,e(e({},i),{},{channels:u})));this.saveToLocalStorage(c)}},{key:"removeChannel",value:function(r,t){var n=this.loadFromLocalStorage(),l=n.groups[r];if(!l)throw new Error("Playlist ".concat(r," not found"));var i=l.channels.findIndex(function(o){return o.Id===t});if(-1===i)throw new Error("Channel ".concat(t," not found in playlist ").concat(r));var s=a(l.channels);s.splice(i,1);var u=e(e({},n.groups),{},o({},r,e(e({},l),{},{channels:s})));this.saveToLocalStorage(u)}},{key:"clearChannels",value:function(r){var a=this.loadFromLocalStorage(),t=a.groups[r];if(t){var n=e(e({},a.groups),{},o({},r,e(e({},t),{},{channels:[]})));this.saveToLocalStorage(n)}}},{key:"addItem",value:function(r){var t=this.loadFromLocalStorage(),n=t.groups[r.GroupId];if(!n)throw new Error("Playlist ".concat(r.GroupId," not found"));var i,s=n.items.findIndex(function(o){return o.ProductId===r.ProductId}),u=l.provider.maxItemsPerGroup;if(-1===s&&n.items.length>=u)throw new Error("Playlist ".concat(r.GroupId," has reached maximum items limit (").concat(u,")"));s>=0?(i=a(n.items))[s]=r:i=[].concat(a(n.items),[r]);var c=e(e({},t.groups),{},o({},r.GroupId,e(e({},n),{},{items:i})));this.saveToLocalStorage(c)}},{key:"updateItem",value:function(r,t,n){var l=this.loadFromLocalStorage(),i=l.groups[r];if(!i)throw new Error("Playlist ".concat(r," not found"));var s=i.items.findIndex(function(o){return o.ProductId===t});if(-1===s)throw new Error("Item ".concat(t," not found in playlist ").concat(r));var u=a(i.items);u[s]=e(e({},u[s]),n);var c=e(e({},l.groups),{},o({},r,e(e({},i),{},{items:u})));this.saveToLocalStorage(c)}},{key:"removeItem",value:function(r,a){var t=this.loadFromLocalStorage(),n=t.groups[r];if(!n)throw new Error("Playlist ".concat(r," not found"));var l=n.items.filter(function(o){return o.ProductId!==a}),i=e(e({},t.groups),{},o({},r,e(e({},n),{},{items:l})));this.saveToLocalStorage(i)}},{key:"clearAll",value:function(){this.saveToLocalStorage({})}},{key:"loadFromLocalStorage",value:function(){var o={version:"1.0",groups:{}};try{if("undefined"!=typeof globalThis&&globalThis.localStorage){var r=localStorage.getItem(l.provider.localStorageKey),e=r?JSON.parse(r):null;null!=e&&e.groups&&Object.keys(e.groups).length>0&&(o=e)}}catch(o){console.error("Error loading playlist from localStorage:",o)}return o}},{key:"saveToLocalStorage",value:function(o){if("undefined"!=typeof globalThis&&globalThis.localStorage)if(l.provider.localStorageKey){var r={version:"1.0",groups:o};localStorage.setItem(l.provider.localStorageKey,JSON.stringify(r)),l.provider.store.emit("stateChange",{groups:o})}else console.warn("No localStorageKey provided, skipping storage")}}],[{key:"provider",get:function(){var o;return null!==(o=n(l.key_provider).get())&&void 0!==o?o:new u}},{key:"setProvider",value:function(o){n(l.key_provider).set(null!=o?o:new u)}},{key:"setOptions",value:function(o){var r=l.provider;void 0!==o.localStorageKey&&(r.localStorageKey=o.localStorageKey),void 0!==o.maxItemsPerGroup&&(r.maxItemsPerGroup=o.maxItemsPerGroup),void 0!==o.maxGroup&&(r.maxGroup=o.maxGroup),void 0!==o.maxNameGroup&&(r.maxNameGroup=o.maxNameGroup),void 0!==o.maxChannels&&(r.maxChannels=o.maxChannels),l.setProvider(r)}}])}();o(c,"key_provider","__media_right_key_provider__");var v=new c;export{c as MediaRightService,v as mediaRightService};
|
|
2
2
|
//# sourceMappingURL=service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sources":["../../src/media-right/service.ts"],"sourcesContent":["import { createObjectSingleton } from 'dinocollab-core/utils'\r\nimport { mediaRightStoreOptions } from './configs'\r\nimport { MediaRightEventStore } from './event-store'\r\nimport { IMediaRightGroup, IMediaRightItem, IMediaRightChannel, IMediaRightOptions } from './types'\r\n\r\nexport interface IMediaRightMetadata<O = any> {\r\n version: string\r\n groups: Record<string, IMediaRightGroup<O>>\r\n}\r\n\r\nexport interface IMediaRightProvider extends IMediaRightOptions {\r\n localStorageKey: string\r\n store: MediaRightEventStore\r\n}\r\n\r\nclass MediaRightProviderDefault implements IMediaRightProvider {\r\n localStorageKey = '__media_right_default__'\r\n store = new MediaRightEventStore()\r\n maxItemsPerGroup = mediaRightStoreOptions.MAX_ITEMS_PER_GROUP\r\n maxGroup = mediaRightStoreOptions.MAX_GROUP\r\n maxNameGroup = mediaRightStoreOptions.MAX_NAME_GROUP\r\n maxChannels = mediaRightStoreOptions.MAX_CHANNELS\r\n}\r\n\r\nexport class MediaRightService<O = any> {\r\n static key_provider = '__media_right_key_provider__'\r\n\r\n static get provider(): IMediaRightProvider {\r\n const ObjectProvider = createObjectSingleton<IMediaRightProvider>(MediaRightService.key_provider)\r\n return ObjectProvider.get() ?? new MediaRightProviderDefault()\r\n }\r\n\r\n static setProvider(provider: IMediaRightProvider) {\r\n const ObjectProvider = createObjectSingleton<IMediaRightProvider>(MediaRightService.key_provider)\r\n ObjectProvider.set(provider ?? new MediaRightProviderDefault())\r\n }\r\n\r\n static setOptions(options: IMediaRightOptions) {\r\n const provider = MediaRightService.provider\r\n if (options.localStorageKey !== undefined) provider.localStorageKey = options.localStorageKey\r\n if (options.maxItemsPerGroup !== undefined) provider.maxItemsPerGroup = options.maxItemsPerGroup\r\n if (options.maxGroup !== undefined) provider.maxGroup = options.maxGroup\r\n if (options.maxNameGroup !== undefined) provider.maxNameGroup = options.maxNameGroup\r\n if (options.maxChannels !== undefined) provider.maxChannels = options.maxChannels\r\n MediaRightService.setProvider(provider)\r\n }\r\n\r\n initialize() {\r\n MediaRightService.provider.store.emit('requestState', {})\r\n }\r\n\r\n subscribe(event: string, callback: (...args: any[]) => void) {\r\n return MediaRightService.provider.store.subscribe(event as any, callback as any)\r\n }\r\n\r\n // Group operations\r\n getGroups(): IMediaRightGroup<O>[] {\r\n const storedData = this.loadFromLocalStorage()\r\n return Object.values(storedData.groups ?? {})\r\n }\r\n\r\n getGroupsMap(): Record<string, IMediaRightGroup<O>> {\r\n const storedData = this.loadFromLocalStorage()\r\n return storedData.groups ?? {}\r\n }\r\n\r\n getGroup(groupId: string): IMediaRightGroup<O> | undefined {\r\n const storedData = this.loadFromLocalStorage()\r\n return storedData.groups?.[groupId]\r\n }\r\n\r\n addGroup(group: Omit<IMediaRightGroup<O>, 'createdAt' | 'items' | 'channels'>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n\r\n // Validate max groups limit\r\n const currentGroupCount = Object.keys(storedData.groups).length\r\n const maxGroup = MediaRightService.provider.maxGroup!\r\n if (currentGroupCount >= maxGroup) {\r\n throw new Error(`Maximum playlist limit reached (${maxGroup})`)\r\n }\r\n\r\n // Validate group name length\r\n const maxNameGroup = MediaRightService.provider.maxNameGroup!\r\n if (group.name && group.name.length > maxNameGroup) {\r\n throw new Error(`Playlist name exceeds maximum length (${maxNameGroup})`)\r\n }\r\n\r\n const newGroup: IMediaRightGroup<O> = { ...group, createdAt: Date.now(), items: [], channels: [] }\r\n const updatedGroups = { ...storedData.groups, [group.id]: newGroup }\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n updateGroup(groupId: string, updates: Partial<Pick<IMediaRightGroup<O>, 'name'>>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n if (storedData.groups[groupId]) {\r\n // Validate group name length if updating name\r\n const maxNameGroup = MediaRightService.provider.maxNameGroup!\r\n if (updates.name && updates.name.length > maxNameGroup) {\r\n throw new Error(`Playlist name exceeds maximum length (${maxNameGroup})`)\r\n }\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: { ...storedData.groups[groupId], ...updates } }\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n }\r\n\r\n removeGroup(groupId: string): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const updatedGroups = { ...storedData.groups }\r\n delete updatedGroups[groupId]\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n // Channel operations\r\n addChannel(groupId: string, channel: IMediaRightChannel): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n // Validate group existence\r\n if (!group) throw new Error(`Playlist ${groupId} not found`)\r\n\r\n // Validate max channels limit\r\n const maxChannels = MediaRightService.provider.maxChannels!\r\n if (group.channels.length >= maxChannels) {\r\n throw new Error(`Playlist ${groupId} has reached maximum channels limit (${maxChannels})`)\r\n }\r\n\r\n const updatedGroup = { ...group, channels: [...group.channels, channel] }\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: updatedGroup }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n updateChannel(groupId: string, channelIndex: number, updates: Partial<IMediaRightChannel>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group || !group.channels[channelIndex]) return\r\n\r\n const updatedChannels = [...group.channels]\r\n updatedChannels[channelIndex] = { ...updatedChannels[channelIndex], ...updates }\r\n\r\n const updatedGroups = {\r\n ...storedData.groups,\r\n [groupId]: { ...group, channels: updatedChannels }\r\n }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n removeChannel(groupId: string, channelIndex: number): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) return\r\n\r\n const updatedChannels = [...group.channels]\r\n updatedChannels.splice(channelIndex, 1)\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: { ...group, channels: updatedChannels } }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n clearChannels(groupId: string): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) return\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: { ...group, channels: [] } }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n // Item operations\r\n addItem(item: IMediaRightItem<O>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[item.GroupId]\r\n\r\n if (!group) {\r\n throw new Error(`Playlist ${item.GroupId} not found`)\r\n }\r\n\r\n // Validate max items limit (only for new items, not updates)\r\n const existingItemIndex = group.items.findIndex((i) => i.ProductId === item.ProductId)\r\n const maxItemsPerGroup = MediaRightService.provider.maxItemsPerGroup!\r\n if (existingItemIndex === -1 && group.items.length >= maxItemsPerGroup) {\r\n throw new Error(`Playlist ${item.GroupId} has reached maximum items limit (${maxItemsPerGroup})`)\r\n }\r\n\r\n let updatedItems: IMediaRightItem<O>[]\r\n\r\n if (existingItemIndex >= 0) {\r\n updatedItems = [...group.items]\r\n updatedItems[existingItemIndex] = item\r\n } else {\r\n updatedItems = [...group.items, item]\r\n }\r\n\r\n const updatedGroups = { ...storedData.groups, [item.GroupId]: { ...group, items: updatedItems } }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n updateItem(groupId: string, productId: string, updates: Partial<IMediaRightItem<O>>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) return\r\n\r\n const itemIndex = group.items.findIndex((i) => i.ProductId === productId)\r\n if (itemIndex >= 0) {\r\n const updatedItems = [...group.items]\r\n updatedItems[itemIndex] = { ...updatedItems[itemIndex], ...updates }\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: { ...group, items: updatedItems } }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n }\r\n\r\n removeItem(groupId: string, productId: string): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) return\r\n\r\n const updatedItems = group.items.filter((i) => i.ProductId !== productId)\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: { ...group, items: updatedItems } }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n clearAll(): void {\r\n this.saveToLocalStorage({})\r\n }\r\n\r\n private loadFromLocalStorage(): IMediaRightMetadata<O> {\r\n const defaultValue: IMediaRightMetadata<O> = { version: '1.0', groups: {} }\r\n let data = defaultValue\r\n\r\n try {\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n const temp = localStorage.getItem(MediaRightService.provider.localStorageKey)\r\n const tempParsed = temp ? JSON.parse(temp) : null\r\n if (tempParsed?.groups && Object.keys(tempParsed.groups).length > 0) {\r\n data = tempParsed\r\n }\r\n }\r\n } catch (error) {\r\n console.error('Error loading playlist from localStorage:', error)\r\n }\r\n\r\n return data\r\n }\r\n\r\n private saveToLocalStorage(groups: Record<string, IMediaRightGroup<O>>) {\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n if (MediaRightService.provider.localStorageKey) {\r\n const value: IMediaRightMetadata<O> = { version: '1.0', groups }\r\n localStorage.setItem(MediaRightService.provider.localStorageKey, JSON.stringify(value))\r\n MediaRightService.provider.store.emit('stateChange', { groups })\r\n } else {\r\n console.warn('No localStorageKey provided, skipping storage')\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport const mediaRightService = new MediaRightService()\r\n"],"names":["MediaRightProviderDefault","_createClass","_classCallCheck","_defineProperty","this","MediaRightEventStore","mediaRightStoreOptions","MAX_ITEMS_PER_GROUP","MAX_GROUP","MAX_NAME_GROUP","MAX_CHANNELS","MediaRightService","key","value","provider","store","emit","event","callback","subscribe","_storedData$groups","storedData","loadFromLocalStorage","Object","values","groups","_storedData$groups2","groupId","_storedData$groups3","group","currentGroupCount","keys","length","maxGroup","Error","concat","maxNameGroup","name","newGroup","_objectSpread","createdAt","Date","now","items","channels","updatedGroups","id","saveToLocalStorage","updates","channel","maxChannels","updatedGroup","_toConsumableArray","channelIndex","updatedChannels","splice","item","GroupId","updatedItems","existingItemIndex","findIndex","i","ProductId","maxItemsPerGroup","productId","itemIndex","filter","data","version","globalThis","localStorage","temp","getItem","localStorageKey","tempParsed","JSON","parse","error","console","setItem","stringify","warn","get","_ObjectProvider$get","createObjectSingleton","key_provider","set","options","undefined","setProvider","mediaRightService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.js","sources":["../../src/media-right/service.ts"],"sourcesContent":["import { createObjectSingleton } from 'dinocollab-core/utils'\r\nimport { mediaRightStoreOptions } from './configs'\r\nimport { MediaRightEventStore } from './event-store'\r\nimport { IMediaRightGroup, IMediaRightItem, IMediaRightChannel, IMediaRightOptions } from './types'\r\nimport { v4 as uuidv4 } from 'uuid'\r\n\r\nexport interface IMediaRightMetadata<O = any> {\r\n version: string\r\n groups: Record<string, IMediaRightGroup<O>>\r\n}\r\n\r\nexport interface IMediaRightProvider extends IMediaRightOptions {\r\n localStorageKey: string\r\n store: MediaRightEventStore\r\n}\r\n\r\nclass MediaRightProviderDefault implements IMediaRightProvider {\r\n localStorageKey = '__media_right_default__'\r\n store = new MediaRightEventStore()\r\n maxItemsPerGroup = mediaRightStoreOptions.MAX_ITEMS_PER_GROUP\r\n maxGroup = mediaRightStoreOptions.MAX_GROUP\r\n maxNameGroup = mediaRightStoreOptions.MAX_NAME_GROUP\r\n maxChannels = mediaRightStoreOptions.MAX_CHANNELS\r\n}\r\n\r\nexport class MediaRightService<O = any> {\r\n static key_provider = '__media_right_key_provider__'\r\n\r\n static get provider(): IMediaRightProvider {\r\n const ObjectProvider = createObjectSingleton<IMediaRightProvider>(MediaRightService.key_provider)\r\n return ObjectProvider.get() ?? new MediaRightProviderDefault()\r\n }\r\n\r\n static setProvider(provider: IMediaRightProvider) {\r\n const ObjectProvider = createObjectSingleton<IMediaRightProvider>(MediaRightService.key_provider)\r\n ObjectProvider.set(provider ?? new MediaRightProviderDefault())\r\n }\r\n\r\n static setOptions(options: IMediaRightOptions) {\r\n const provider = MediaRightService.provider\r\n if (options.localStorageKey !== undefined) provider.localStorageKey = options.localStorageKey\r\n if (options.maxItemsPerGroup !== undefined) provider.maxItemsPerGroup = options.maxItemsPerGroup\r\n if (options.maxGroup !== undefined) provider.maxGroup = options.maxGroup\r\n if (options.maxNameGroup !== undefined) provider.maxNameGroup = options.maxNameGroup\r\n if (options.maxChannels !== undefined) provider.maxChannels = options.maxChannels\r\n MediaRightService.setProvider(provider)\r\n }\r\n\r\n initialize() {\r\n MediaRightService.provider.store.emit('requestState', {})\r\n }\r\n\r\n subscribe(event: string, callback: (...args: any[]) => void) {\r\n return MediaRightService.provider.store.subscribe(event as any, callback as any)\r\n }\r\n\r\n // Group operations\r\n getGroups(): IMediaRightGroup<O>[] {\r\n const storedData = this.loadFromLocalStorage()\r\n return Object.values(storedData.groups ?? {})\r\n }\r\n\r\n getGroupsMap(): Record<string, IMediaRightGroup<O>> {\r\n const storedData = this.loadFromLocalStorage()\r\n return storedData.groups ?? {}\r\n }\r\n\r\n getGroup(groupId: string): IMediaRightGroup<O> | undefined {\r\n const storedData = this.loadFromLocalStorage()\r\n return storedData.groups?.[groupId]\r\n }\r\n\r\n addGroup(group: Omit<IMediaRightGroup<O>, 'id' | 'createdAt' | 'items' | 'channels'>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n\r\n // Validate max groups limit\r\n const currentGroupCount = Object.keys(storedData.groups).length\r\n const maxGroup = MediaRightService.provider.maxGroup!\r\n if (currentGroupCount >= maxGroup) {\r\n throw new Error(`Maximum playlist limit reached (${maxGroup})`)\r\n }\r\n\r\n // Validate group name length\r\n const maxNameGroup = MediaRightService.provider.maxNameGroup!\r\n if (group.name && group.name.length > maxNameGroup) {\r\n throw new Error(`Playlist name exceeds maximum length (${maxNameGroup})`)\r\n }\r\n\r\n const newGroup: IMediaRightGroup<O> = { ...group, id: uuidv4(), createdAt: Date.now(), items: [], channels: [] }\r\n const updatedGroups = { ...storedData.groups, [newGroup.id]: newGroup }\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n updateGroup(groupId: string, updates: Partial<Pick<IMediaRightGroup<O>, 'name'>>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n if (storedData.groups[groupId]) {\r\n // Validate group name length if updating name\r\n const maxNameGroup = MediaRightService.provider.maxNameGroup!\r\n if (updates.name && updates.name.length > maxNameGroup) {\r\n throw new Error(`Playlist name exceeds maximum length (${maxNameGroup})`)\r\n }\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: { ...storedData.groups[groupId], ...updates } }\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n }\r\n\r\n removeGroup(groupId: string): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const updatedGroups = { ...storedData.groups }\r\n delete updatedGroups[groupId]\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n // Channel operations\r\n addChannel(groupId: string, channel: Omit<IMediaRightChannel, 'Id'>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n // Validate group existence\r\n if (!group) throw new Error(`Playlist ${groupId} not found`)\r\n\r\n // Validate max channels limit\r\n const maxChannels = MediaRightService.provider.maxChannels!\r\n if (group.channels.length >= maxChannels) {\r\n throw new Error(`Playlist ${groupId} has reached maximum channels limit (${maxChannels})`)\r\n }\r\n\r\n const newChannel: IMediaRightChannel = { ...channel, Id: uuidv4() }\r\n const updatedGroup = { ...group, channels: [...group.channels, newChannel] }\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: updatedGroup }\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n updateChannel(groupId: string, channelId: string, updates: Partial<IMediaRightChannel>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) throw new Error(`Playlist ${groupId} not found`)\r\n\r\n const channelIndex = group.channels.findIndex((c) => c.Id === channelId)\r\n if (channelIndex === -1) throw new Error(`Channel ${channelId} not found in playlist ${groupId}`)\r\n\r\n const updatedChannels = [...group.channels]\r\n updatedChannels[channelIndex] = { ...updatedChannels[channelIndex], ...updates }\r\n\r\n const updatedGroups = {\r\n ...storedData.groups,\r\n [groupId]: { ...group, channels: updatedChannels }\r\n }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n removeChannel(groupId: string, channelId: string): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) throw new Error(`Playlist ${groupId} not found`)\r\n\r\n const channelIndex = group.channels.findIndex((c) => c.Id === channelId)\r\n if (channelIndex === -1) throw new Error(`Channel ${channelId} not found in playlist ${groupId}`)\r\n\r\n const updatedChannels = [...group.channels]\r\n updatedChannels.splice(channelIndex, 1)\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: { ...group, channels: updatedChannels } }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n clearChannels(groupId: string): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) return\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: { ...group, channels: [] } }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n // Item operations\r\n addItem(item: IMediaRightItem<O>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[item.GroupId]\r\n\r\n if (!group) {\r\n throw new Error(`Playlist ${item.GroupId} not found`)\r\n }\r\n\r\n // Validate max items limit (only for new items, not updates)\r\n const existingItemIndex = group.items.findIndex((i) => i.ProductId === item.ProductId)\r\n const maxItemsPerGroup = MediaRightService.provider.maxItemsPerGroup!\r\n if (existingItemIndex === -1 && group.items.length >= maxItemsPerGroup) {\r\n throw new Error(`Playlist ${item.GroupId} has reached maximum items limit (${maxItemsPerGroup})`)\r\n }\r\n\r\n let updatedItems: IMediaRightItem<O>[]\r\n\r\n if (existingItemIndex >= 0) {\r\n updatedItems = [...group.items]\r\n updatedItems[existingItemIndex] = item\r\n } else {\r\n updatedItems = [...group.items, item]\r\n }\r\n\r\n const updatedGroups = { ...storedData.groups, [item.GroupId]: { ...group, items: updatedItems } }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n updateItem(groupId: string, productId: string, updates: Partial<IMediaRightItem<O>>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) throw new Error(`Playlist ${groupId} not found`)\r\n\r\n const itemIndex = group.items.findIndex((i) => i.ProductId === productId)\r\n if (itemIndex === -1) throw new Error(`Item ${productId} not found in playlist ${groupId}`)\r\n\r\n const updatedItems = [...group.items]\r\n updatedItems[itemIndex] = { ...updatedItems[itemIndex], ...updates }\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: { ...group, items: updatedItems } }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n removeItem(groupId: string, productId: string): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) throw new Error(`Playlist ${groupId} not found`)\r\n\r\n const updatedItems = group.items.filter((i) => i.ProductId !== productId)\r\n\r\n const updatedGroups = { ...storedData.groups, [groupId]: { ...group, items: updatedItems } }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n clearAll(): void {\r\n this.saveToLocalStorage({})\r\n }\r\n\r\n private loadFromLocalStorage(): IMediaRightMetadata<O> {\r\n const defaultValue: IMediaRightMetadata<O> = { version: '1.0', groups: {} }\r\n let data = defaultValue\r\n\r\n try {\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n const temp = localStorage.getItem(MediaRightService.provider.localStorageKey)\r\n const tempParsed = temp ? JSON.parse(temp) : null\r\n if (tempParsed?.groups && Object.keys(tempParsed.groups).length > 0) {\r\n data = tempParsed\r\n }\r\n }\r\n } catch (error) {\r\n console.error('Error loading playlist from localStorage:', error)\r\n }\r\n\r\n return data\r\n }\r\n\r\n private saveToLocalStorage(groups: Record<string, IMediaRightGroup<O>>) {\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n if (MediaRightService.provider.localStorageKey) {\r\n const value: IMediaRightMetadata<O> = { version: '1.0', groups }\r\n localStorage.setItem(MediaRightService.provider.localStorageKey, JSON.stringify(value))\r\n MediaRightService.provider.store.emit('stateChange', { groups })\r\n } else {\r\n console.warn('No localStorageKey provided, skipping storage')\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport const mediaRightService = new MediaRightService()\r\n"],"names":["MediaRightProviderDefault","_createClass","_classCallCheck","_defineProperty","this","MediaRightEventStore","mediaRightStoreOptions","MAX_ITEMS_PER_GROUP","MAX_GROUP","MAX_NAME_GROUP","MAX_CHANNELS","MediaRightService","key","value","provider","store","emit","event","callback","subscribe","_storedData$groups","storedData","loadFromLocalStorage","Object","values","groups","_storedData$groups2","groupId","_storedData$groups3","group","currentGroupCount","keys","length","maxGroup","Error","concat","maxNameGroup","name","newGroup","_objectSpread","id","uuidv4","createdAt","Date","now","items","channels","updatedGroups","saveToLocalStorage","updates","channel","maxChannels","newChannel","Id","updatedGroup","_toConsumableArray","channelId","channelIndex","findIndex","c","updatedChannels","splice","item","GroupId","updatedItems","existingItemIndex","i","ProductId","maxItemsPerGroup","productId","itemIndex","filter","data","version","globalThis","localStorage","temp","getItem","localStorageKey","tempParsed","JSON","parse","error","console","setItem","stringify","warn","get","_ObjectProvider$get","createObjectSingleton","key_provider","set","options","undefined","setProvider","mediaRightService"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../src/media-right/types.ts"],"sourcesContent":["/**\r\n * Channel information for media rights groups\r\n */\r\nexport enum EChannelType {\r\n Youtube = 'Youtube',\r\n Other = 'Other'\r\n}\r\n\r\nexport interface
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../src/media-right/types.ts"],"sourcesContent":["/**\r\n * Channel information for media rights groups\r\n */\r\nexport enum EChannelType {\r\n Youtube = 'Youtube',\r\n Other = 'Other'\r\n}\r\n\r\nexport interface IMediaRightChannelCreate {\r\n /** URL of the channel */\r\n ChannelUrl: string\r\n /** Name of the channel */\r\n Name: string\r\n /** Type of the channel */\r\n ChannelType: EChannelType\r\n /** Additional custom information */\r\n CustomInfo: string\r\n}\r\n\r\nexport interface IMediaRightChannel extends IMediaRightChannelCreate {\r\n Id: string\r\n}\r\n\r\n/**\r\n * Cart group structure\r\n */\r\nexport interface IMediaRightGroup<O = any> {\r\n /** Unique identifier for the group */\r\n id: string\r\n /** Group name */\r\n name: string\r\n /** Creation timestamp */\r\n createdAt: number\r\n /** Items in this group */\r\n items: IMediaRightItem<O>[]\r\n /** Channels associated with this group */\r\n channels: IMediaRightChannel[]\r\n}\r\n\r\n/**\r\n * Shopping cart item structure\r\n */\r\nexport interface IMediaRightItem<O = any> {\r\n /** Unique identifier for the cart item */\r\n ProductId: string\r\n /** Group ID this item belongs to */\r\n GroupId: string\r\n /** The social URL associated with the product */\r\n // SocialUrl?: string\r\n /** The type of the product, e.g., Media or Audio */\r\n Type?: string\r\n /** The name of the product */\r\n ProductName?: string\r\n /** The picture URL associated with the product */\r\n PictureUrl: string\r\n /** This will be the ID used to stream video or retrieve audio. */\r\n MediaId: string\r\n /** Additional options for the media item */\r\n Options?: O\r\n}\r\n\r\n/**\r\n * Cart summary data\r\n */\r\nexport interface ICartSummary {\r\n totalGroups: number\r\n totalItems: number\r\n totalPrice: number\r\n}\r\n\r\nexport interface IMediaRightOptions {\r\n localStorageKey?: string\r\n maxItemsPerGroup?: number\r\n maxGroup?: number\r\n maxNameGroup?: number\r\n maxChannels?: number\r\n}\r\n"],"names":["EChannelType"],"mappings":"IAGYA,GAAZ,SAAYA,GACVA,EAAA,QAAA,UACAA,EAAA,MAAA,OACD,CAHD,CAAYA,IAAAA,EAGX,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createClass as t,classCallCheck as e}from"../_virtual/_rollupPluginBabelHelpers.js";import{tryParseObject as n}from"dinocollab-core/utils";import{ETypeContent as r}from"./types.js";var o="1.0.0",s={type:r.Template,version:o,html:""},i=function(){return t(function t(n){e(this,t),this.rawContent=n},[{key:"parseContent",value:function(){var t=n(this.rawContent,s);return"version"in t&&t.version===o?t:s}},{key:"getContentByVersion",value:function(){return this.parseContent()}}])}();export{i as NotifyContentConverter,s as defaultContentMetaData};
|
|
2
|
+
//# sourceMappingURL=content-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-converter.js","sources":["../../src/notification/content-converter.tsx"],"sourcesContent":["import { tryParseObject } from 'dinocollab-core/utils'\r\nimport { ETypeContent } from './types'\r\n\r\nconst CURRENT_VERSION = '1.0.0'\r\n\r\nexport interface IContentMetaData {\r\n type: ETypeContent\r\n version?: string\r\n html?: string\r\n}\r\n\r\nexport const defaultContentMetaData: IContentMetaData = {\r\n type: ETypeContent.Template,\r\n version: CURRENT_VERSION,\r\n html: ''\r\n}\r\n\r\nexport class NotifyContentConverter {\r\n private rawContent: string\r\n\r\n constructor(content: string) {\r\n this.rawContent = content\r\n }\r\n\r\n private parseContent(): IContentMetaData {\r\n const obj = tryParseObject<IContentMetaData>(this.rawContent, defaultContentMetaData)\r\n if ('version' in obj && obj.version === CURRENT_VERSION) return obj\r\n return defaultContentMetaData\r\n }\r\n\r\n getContentByVersion() {\r\n const obj = this.parseContent()\r\n return obj\r\n }\r\n}\r\n"],"names":["CURRENT_VERSION","defaultContentMetaData","type","ETypeContent","Template","version","html","NotifyContentConverter","_createClass","content","_classCallCheck","this","rawContent","key","value","obj","tryParseObject","parseContent"],"mappings":"4LAGA,IAAMA,EAAkB,QAQXC,EAA2C,CACtDC,KAAMC,EAAaC,SACnBC,QAASL,EACTM,KAAM,IAGKC,EAAsB,WAKhC,OAAAC,EAFD,SAAAD,EAAYE,GAAeC,OAAAH,GACzBI,KAAKC,WAAaH,CACpB,EAAC,CAAA,CAAAI,IAAA,eAAAC,MAEO,WACN,IAAMC,EAAMC,EAAiCL,KAAKC,WAAYX,GAC9D,MAAI,YAAac,GAAOA,EAAIV,UAAYL,EAAwBe,EACzDd,CACT,GAAC,CAAAY,IAAA,sBAAAC,MAED,WAEE,OADYH,KAAKM,cAEnB,IAAC,CAhBgC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{NotificationWidget,createNotificationWidget}from"./widget.js";export{EBtnPopupId,ETypeContent}from"./types.js";export{NotifyDetail}from"./notify-detail.js";
|
|
1
|
+
export{NotificationWidget,createNotificationWidget}from"./widget.js";export{EBtnPopupId,ETypeContent}from"./types.js";export{NotifyDetail}from"./notify-detail.js";export{NotifyContentConverter,defaultContentMetaData}from"./content-converter.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as
|
|
1
|
+
import{inherits as t,createClass as e,objectSpread2 as r,classCallCheck as n,callSuper as o,defineProperty as a,asyncToGenerator as i,regenerator as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as s,jsxs as c}from"react/jsx-runtime";import{Component as d}from"react";import{styled as u,Box as p,CircularProgress as f}from"@mui/material";import{errorMessageHandler as m}from"./hook.js";import{NotifyContentConverter as h}from"./content-converter.js";import{ETypeContent as g}from"./types.js";import C from"./notify-detail.custom.js";import y from"./notify-detail.default.js";import"react-quill/dist/quill.snow.css";var v=function(){function u(t){var e;return n(this,u),e=o(this,u,[t]),a(e,"abortController",null),a(e,"fetchDetailIfNeeded",i(l().m(function t(){var r,n,o,a,i;return l().w(function(t){for(;;)switch(t.p=t.n){case 0:if(r=e.props.data,e.props.fetchDetail){t.n=1;break}return t.a(2);case 1:if(!(e.state.detailData||e.state.loading||e.state.error)){t.n=2;break}return t.a(2);case 2:return e.setState({loading:!0}),t.p=3,t.n=4,e.props.fetchDetail(r.Id,null===(n=e.abortController)||void 0===n?void 0:n.signal);case 4:(o=t.v)?e.setState({detailData:o,loading:!1,error:!1}):e.setState({loading:!1,error:!0}),t.n=6;break;case 5:t.p=5,i=t.v,a=m(i,{message:"Error fetching notification detail"}),a.isAbortError||e.setState({loading:!1,error:!0});case 6:return t.a(2)}},t,null,[[3,5]])}))),a(e,"handleRetry",function(){e.setState({error:!1},function(){e.fetchDetailIfNeeded()})}),e.state={detailData:null,loading:!1,error:!1},e}return t(u,d),e(u,[{key:"componentDidMount",value:function(){this.abortController=new AbortController,this.fetchDetailIfNeeded()}},{key:"componentWillUnmount",value:function(){var t;null===(t=this.abortController)||void 0===t||t.abort()}},{key:"render",value:function(){var t=this.props,e=t.data,n=t.onRead,o=t.onClose,a=t.getterId,i=this.state,l=i.loading,d=i.error;if(i.detailData,l)return s(b,{children:s(f,{})});if(d&&!e.Content)return c(x,{children:[s(D,{children:"Unable to load notification content. Please try again later."}),this.props.onClose&&s(j,{onClick:this.handleRetry,children:"Close"})]});var u=new h(e.Content).getContentByVersion();switch(u.type){case g.Custom:return s(C,r(r({},{data:e,onRead:n,onClose:o,getterId:a}),{},{html:u.html||""}));case g.Template:default:return s(y,r(r({},{data:e,onRead:n,onClose:o,getterId:a}),{},{html:u.html||""}))}}}])}(),b=u(p)({display:"flex",justifyContent:"center",alignItems:"center",minHeight:"350px",width:"100%"}),x=u(p)(function(t){var e=t.theme;return{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",minHeight:"350px",width:"100%",padding:e.spacing(3),gap:e.spacing(2)}}),D=u(p)(function(t){return{color:t.theme.palette.error.main,textAlign:"center",fontSize:"14px"}}),j=u("button")(function(t){var e=t.theme;return{padding:"8px 16px",backgroundColor:e.palette.primary.main,color:e.palette.primary.contrastText,border:"none",borderRadius:e.shape.borderRadius,cursor:"pointer",fontSize:"14px","&:hover":{opacity:.9}}});export{v as NotifyDetail,v as default};
|
|
2
2
|
//# sourceMappingURL=notify-detail.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notify-detail.js","sources":["../../src/notification/notify-detail.tsx"],"sourcesContent":["import { Component } from 'react'\r\nimport { Box, CircularProgress, styled } from '@mui/material'\r\nimport { errorMessageHandler } from './hook'\r\nimport { NotifyContentConverter } from './
|
|
1
|
+
{"version":3,"file":"notify-detail.js","sources":["../../src/notification/notify-detail.tsx"],"sourcesContent":["import { Component } from 'react'\r\nimport { Box, CircularProgress, styled } from '@mui/material'\r\nimport { errorMessageHandler } from './hook'\r\nimport { NotifyContentConverter } from './content-converter'\r\nimport { INotification, FetchDetailFunction, INotificationPropsDef, ETypeContent } from './types'\r\nimport NotifyDetailCustom from './notify-detail.custom'\r\nimport NotifyDetailDefault from './notify-detail.default'\r\n// Styles\r\nimport 'react-quill/dist/quill.snow.css'\r\n\r\nexport interface INotifyDetailProps extends INotificationPropsDef {\r\n data: INotification\r\n fetchDetail?: FetchDetailFunction\r\n}\r\n\r\ninterface IState {\r\n detailData: INotification | null\r\n loading: boolean\r\n error: boolean\r\n}\r\n\r\nexport class NotifyDetail extends Component<INotifyDetailProps, IState> {\r\n private abortController: AbortController | null = null\r\n\r\n constructor(props: INotifyDetailProps) {\r\n super(props)\r\n this.state = { detailData: null, loading: false, error: false }\r\n }\r\n\r\n componentDidMount() {\r\n this.abortController = new AbortController()\r\n this.fetchDetailIfNeeded()\r\n }\r\n\r\n componentWillUnmount() {\r\n this.abortController?.abort()\r\n }\r\n\r\n fetchDetailIfNeeded = async () => {\r\n const item = this.props.data\r\n\r\n // Skip if no fetchDetail function\r\n if (!this.props.fetchDetail) {\r\n return\r\n }\r\n\r\n // Skip if already fetched, loading, or has error\r\n if (this.state.detailData || this.state.loading || this.state.error) {\r\n return\r\n }\r\n\r\n // Start loading\r\n this.setState({ loading: true })\r\n\r\n try {\r\n const detail = await this.props.fetchDetail(item.Id, this.abortController?.signal)\r\n\r\n if (detail) {\r\n // Fetch successful\r\n this.setState({ detailData: detail, loading: false, error: false })\r\n } else {\r\n // Fetch returned null\r\n this.setState({ loading: false, error: true })\r\n }\r\n } catch (error) {\r\n const { isAbortError } = errorMessageHandler(error, { message: 'Error fetching notification detail' })\r\n if (!isAbortError) {\r\n // Error while fetching\r\n this.setState({ loading: false, error: true })\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const { data, onRead, onClose, getterId } = this.props\r\n const { loading, error, detailData } = this.state\r\n\r\n if (loading) {\r\n return (\r\n <LoadingWrapper>\r\n <CircularProgress />\r\n </LoadingWrapper>\r\n )\r\n }\r\n\r\n // If error and no content from original data, show fallback\r\n if (error && !data.Content) {\r\n return (\r\n <ErrorWrapper>\r\n <ErrorMessage>Unable to load notification content. Please try again later.</ErrorMessage>\r\n {this.props.onClose && <RetryButton onClick={this.handleRetry}>Close</RetryButton>}\r\n </ErrorWrapper>\r\n )\r\n }\r\n\r\n // // Debug logging\r\n // if (process.env.NODE_ENV === 'development') {\r\n // // Use detail data if available, otherwise use original data\r\n // const detailItem = detailData || data\r\n // const notifyContent = new NotifyContentConverter(detailItem.Content)\r\n // const parsedConfig = notifyContent.getContentByVersion()\r\n // console.log('[NotifyDetail] Content:', detailItem.Content?.substring(0, 100))\r\n // console.log('[NotifyDetail] Parsed type:', parsedConfig.type)\r\n // }\r\n\r\n const obj = new NotifyContentConverter(data.Content).getContentByVersion()\r\n switch (obj.type) {\r\n case ETypeContent.Custom:\r\n return <NotifyDetailCustom {...{ data, onRead, onClose, getterId }} html={obj.html || ''} />\r\n case ETypeContent.Template:\r\n default:\r\n return <NotifyDetailDefault {...{ data, onRead, onClose, getterId }} html={obj.html || ''} />\r\n }\r\n }\r\n\r\n handleRetry = () => {\r\n // Clear error state and retry\r\n this.setState({ error: false }, () => {\r\n this.fetchDetailIfNeeded()\r\n })\r\n }\r\n}\r\n\r\nexport default NotifyDetail\r\n\r\nconst LoadingWrapper = styled(Box)({\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n minHeight: '350px',\r\n width: '100%'\r\n})\r\n\r\nconst ErrorWrapper = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n minHeight: '350px',\r\n width: '100%',\r\n padding: theme.spacing(3),\r\n gap: theme.spacing(2)\r\n}))\r\n\r\nconst ErrorMessage = styled(Box)(({ theme }) => ({\r\n color: theme.palette.error.main,\r\n textAlign: 'center',\r\n fontSize: '14px'\r\n}))\r\n\r\nconst RetryButton = styled('button')(({ theme }) => ({\r\n padding: '8px 16px',\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText,\r\n border: 'none',\r\n borderRadius: theme.shape.borderRadius,\r\n cursor: 'pointer',\r\n fontSize: '14px',\r\n '&:hover': {\r\n opacity: 0.9\r\n }\r\n}))\r\n"],"names":["NotifyDetail","props","_this","_classCallCheck","_callSuper","_defineProperty","_asyncToGenerator","_regenerator","m","_callee","item","_this$abortController","detail","_errorMessageHandler","_t","w","_context","p","n","data","fetchDetail","a","state","detailData","loading","error","setState","Id","abortController","signal","v","errorMessageHandler","message","isAbortError","fetchDetailIfNeeded","_inherits","Component","_createClass","key","value","this","AbortController","_this$abortController2","abort","_this$props","onRead","onClose","getterId","_this$state","_jsx","LoadingWrapper","children","CircularProgress","Content","_jsxs","ErrorWrapper","ErrorMessage","RetryButton","onClick","handleRetry","obj","NotifyContentConverter","getContentByVersion","type","ETypeContent","Custom","NotifyDetailCustom","_objectSpread","html","Template","NotifyDetailDefault","styled","Box","display","justifyContent","alignItems","minHeight","width","_ref2","theme","flexDirection","padding","spacing","gap","_ref3","color","palette","main","textAlign","fontSize","_ref4","backgroundColor","primary","contrastText","border","borderRadius","shape","cursor","opacity"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"btn.volume.d.ts","sourceRoot":"","sources":["../../../../src/media-player/core/btn.volume.tsx"],"names":[],"mappings":";AAKA,KAAK,iBAAiB,GAAG;IACvB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;IAC5C,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB,CAAA;AAED,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"btn.volume.d.ts","sourceRoot":"","sources":["../../../../src/media-player/core/btn.volume.tsx"],"names":[],"mappings":";AAKA,KAAK,iBAAiB,GAAG;IACvB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;IAC5C,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB,CAAA;AAED,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAwF1C,CAAA;AAED,eAAe,SAAS,CAAA"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
interface
|
|
2
|
+
interface IProgressBarProps {
|
|
3
3
|
bufferedSegments: {
|
|
4
4
|
left: number;
|
|
5
5
|
width: number;
|
|
6
6
|
}[];
|
|
7
7
|
progress: number;
|
|
8
8
|
isLoading: boolean;
|
|
9
|
+
hidden?: boolean;
|
|
9
10
|
onChange?: (value: number) => void;
|
|
10
11
|
}
|
|
11
|
-
declare const ProgressBar: React.FC<
|
|
12
|
+
declare const ProgressBar: React.FC<IProgressBarProps>;
|
|
12
13
|
export default ProgressBar;
|
|
13
14
|
//# sourceMappingURL=progressBar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progressBar.d.ts","sourceRoot":"","sources":["../../../../src/media-player/core/progressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,UAAU,
|
|
1
|
+
{"version":3,"file":"progressBar.d.ts","sourceRoot":"","sources":["../../../../src/media-player/core/progressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,UAAU,iBAAiB;IACzB,gBAAgB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACnD,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAED,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAuF5C,CAAA;AAED,eAAe,WAAW,CAAA"}
|
|
@@ -9,16 +9,17 @@ export interface IControlsConfig {
|
|
|
9
9
|
preload?: 'auto' | 'metadata' | 'none';
|
|
10
10
|
}
|
|
11
11
|
export declare const defaultControlsConfig: IControlsConfig;
|
|
12
|
-
export interface
|
|
12
|
+
export interface IVideoPlayerSlots {
|
|
13
13
|
controls?: IControlsConfig;
|
|
14
14
|
anotherControls?: React.ReactNode;
|
|
15
15
|
mediaMetadata?: MediaMetadata;
|
|
16
16
|
}
|
|
17
|
-
interface
|
|
17
|
+
export interface IVideoPlayerProps extends IVideoPlayerSlots {
|
|
18
18
|
src?: string;
|
|
19
19
|
sx?: SxProps<Theme>;
|
|
20
20
|
className?: string;
|
|
21
|
+
readonly?: boolean;
|
|
21
22
|
}
|
|
22
|
-
declare const
|
|
23
|
-
export default
|
|
23
|
+
declare const VideoPlayerCore: import("react").ForwardRefExoticComponent<IVideoPlayerProps & import("react").RefAttributes<HTMLVideoElement>>;
|
|
24
|
+
export default VideoPlayerCore;
|
|
24
25
|
//# sourceMappingURL=videoplayer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"videoplayer.d.ts","sourceRoot":"","sources":["../../../../src/media-player/core/videoplayer.tsx"],"names":[],"mappings":";AACA,OAAO,EAAsB,OAAO,EAAE,KAAK,EAA2B,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"videoplayer.d.ts","sourceRoot":"","sources":["../../../../src/media-player/core/videoplayer.tsx"],"names":[],"mappings":";AACA,OAAO,EAAsB,OAAO,EAAE,KAAK,EAA2B,MAAM,eAAe,CAAA;AAS3F,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAA;CACvC;AAGD,eAAO,MAAM,qBAAqB,EAAE,eAOnC,CAAA;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACjC,aAAa,CAAC,EAAE,aAAa,CAAA;CAC9B;AAED,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,QAAA,MAAM,eAAe,gHAqGnB,CAAA;AAEF,eAAe,eAAe,CAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { FC } from 'react';
|
|
2
|
+
import type { IVideoPlayerProps } from './core/videoplayer';
|
|
2
3
|
import type { MediaPlayerBaseProps, MediaPlayerBaseSlots } from './types';
|
|
3
|
-
import { MediaPlayerSlot } from './core/videoplayer';
|
|
4
4
|
export interface SlotMediaPlayerMutedProps extends MediaPlayerBaseSlots {
|
|
5
|
-
coreProps?:
|
|
5
|
+
coreProps?: IVideoPlayerProps;
|
|
6
6
|
}
|
|
7
7
|
export interface IMediaPlayerMutedProps extends MediaPlayerBaseProps {
|
|
8
8
|
slots?: SlotMediaPlayerMutedProps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muted.d.ts","sourceRoot":"","sources":["../../../src/media-player/muted.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"muted.d.ts","sourceRoot":"","sources":["../../../src/media-player/muted.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAEzE,MAAM,WAAW,yBAA0B,SAAQ,oBAAoB;IACrE,SAAS,CAAC,EAAE,iBAAiB,CAAA;CAC9B;AAED,MAAM,WAAW,sBAAuB,SAAQ,oBAAoB;IAClE,KAAK,CAAC,EAAE,yBAAyB,CAAA;CAClC;AAED,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,sBAAsB,CAiCvD,CAAA;AAED,eAAe,gBAAgB,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { IVideoPlayerSlots } from './core/videoplayer';
|
|
3
3
|
import type { MediaPlayerBaseProps, MediaPlayerBaseSlots } from './types';
|
|
4
4
|
export interface MediaPlayerSlotsProps extends MediaPlayerBaseSlots {
|
|
5
5
|
disabledBackground?: boolean;
|
|
@@ -7,7 +7,7 @@ export interface MediaPlayerSlotsProps extends MediaPlayerBaseSlots {
|
|
|
7
7
|
}
|
|
8
8
|
interface IProps extends MediaPlayerBaseProps {
|
|
9
9
|
slots?: MediaPlayerSlotsProps;
|
|
10
|
-
slotMedia?:
|
|
10
|
+
slotMedia?: IVideoPlayerSlots;
|
|
11
11
|
mediaMetadata?: MediaMetadata;
|
|
12
12
|
}
|
|
13
13
|
declare const _default: React.MemoExoticComponent<React.ForwardRefExoticComponent<IProps & React.RefAttributes<HTMLVideoElement>>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"player.video-stream.d.ts","sourceRoot":"","sources":["../../../src/media-player/player.video-stream.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAA;AAGxC,OAAwB,EAAE,
|
|
1
|
+
{"version":3,"file":"player.video-stream.d.ts","sourceRoot":"","sources":["../../../src/media-player/player.video-stream.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAA;AAGxC,OAAwB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAEzE,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,UAAU,MAAO,SAAQ,oBAAoB;IAC3C,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,SAAS,CAAC,EAAE,iBAAiB,CAAA;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAA;CAC9B;;AA0DD,wBAA2C"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IMediaRightChannel, IMediaRightGroup, IMediaRightItem } from './types';
|
|
1
|
+
import { IMediaRightChannel, IMediaRightChannelCreate, IMediaRightGroup, IMediaRightItem } from './types';
|
|
2
2
|
export interface IMediaRightStoreOptions {
|
|
3
3
|
localStorageKey?: string;
|
|
4
4
|
}
|
|
@@ -7,15 +7,15 @@ export declare function useMediaRightStore<O = any>(params?: IMediaRightStoreOpt
|
|
|
7
7
|
groupsMap: Record<string, IMediaRightGroup<O>>;
|
|
8
8
|
};
|
|
9
9
|
export declare function useMediaRightActions<O = any>(params?: IMediaRightStoreOptions): {
|
|
10
|
-
addGroup: (group: Omit<IMediaRightGroup<O>, 'createdAt' | 'items' | 'channels'>) => void;
|
|
10
|
+
addGroup: (group: Omit<IMediaRightGroup<O>, 'id' | 'createdAt' | 'items' | 'channels'>) => void;
|
|
11
11
|
updateGroup: (groupId: string, updates: Partial<Pick<IMediaRightGroup<O>, 'name'>>) => void;
|
|
12
12
|
removeGroup: (groupId: string) => void;
|
|
13
13
|
addItem: (item: IMediaRightItem<O>) => void;
|
|
14
14
|
updateItem: (groupId: string, productId: string, updates: Partial<IMediaRightItem<O>>) => void;
|
|
15
15
|
removeItem: (groupId: string, productId: string) => void;
|
|
16
|
-
addChannel: (groupId: string, channel:
|
|
17
|
-
updateChannel: (groupId: string,
|
|
18
|
-
removeChannel: (groupId: string,
|
|
16
|
+
addChannel: (groupId: string, channel: IMediaRightChannelCreate) => void;
|
|
17
|
+
updateChannel: (groupId: string, channelId: string, updates: Partial<IMediaRightChannel>) => void;
|
|
18
|
+
removeChannel: (groupId: string, channelId: string) => void;
|
|
19
19
|
clearChannels: (groupId: string) => void;
|
|
20
20
|
clearCart: () => void;
|
|
21
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/media-right/hooks.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/media-right/hooks.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzG,MAAM,WAAW,uBAAuB;IACtC,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,wBAAgB,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,EAAE,uBAAuB;;;EA6B3E;AAED,wBAAgB,oBAAoB,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,EAAE,uBAAuB;sBASnD,KAAK,iBAAiB,CAAC,CAAC,EAAE,IAAI,GAAG,WAAW,GAAG,OAAO,GAAG,UAAU,CAAC;2BAI/D,MAAM,WAAW,QAAQ,KAAK,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;2BAI3D,MAAM;oBAIb,gBAAgB,CAAC,CAAC;0BAIZ,MAAM,aAAa,MAAM,WAAW,QAAQ,gBAAgB,CAAC,CAAC,CAAC;0BAI/D,MAAM,aAAa,MAAM;0BAQzB,MAAM,WAAW,wBAAwB;6BAItC,MAAM,aAAa,MAAM,WAAW,QAAQ,kBAAkB,CAAC;6BAI/D,MAAM,aAAa,MAAM;6BAIzB,MAAM;;EAiBvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/media-right/media-widget/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAS,WAAW,EAAU,eAAe,EAA2B,MAAM,eAAe,CAAA;AAOpG,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,UAAU,CAAA;AAKjE,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,eAAe,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;IACzD,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,MAAM,IAAI,KAAK,eAAe,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;IAChH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qBAAqB,CAAC,EAAE,WAAW,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;IAC5D,aAAa,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;CACvC;AAiBD,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/media-right/media-widget/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAS,WAAW,EAAU,eAAe,EAA2B,MAAM,eAAe,CAAA;AAOpG,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,UAAU,CAAA;AAKjE,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,eAAe,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;IACzD,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,MAAM,IAAI,KAAK,eAAe,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;IAChH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qBAAqB,CAAC,EAAE,WAAW,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;IAC5D,aAAa,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;CACvC;AAiBD,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAsH7D,CAAA;AAED,eAAO,MAAM,sBAAsB,WAAY,sBAAsB,wDAIpE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-group-accordion.d.ts","sourceRoot":"","sources":["../../../../src/media-right/media-widget/media-group-accordion.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,EAAE,EAAc,MAAM,OAAO,CAAA;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC5H,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAEjE,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,gBAAgB,CAAA;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IACxC,qBAAqB,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAA;IACtD,qBAAqB,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAA;IACtD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,KAAK,CAAC,SAAS,CAAA;IACvD,WAAW,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAA;IAC9C,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAC1D;AAED,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,yBAAyB,
|
|
1
|
+
{"version":3,"file":"media-group-accordion.d.ts","sourceRoot":"","sources":["../../../../src/media-right/media-widget/media-group-accordion.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,EAAE,EAAc,MAAM,OAAO,CAAA;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC5H,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAEjE,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,gBAAgB,CAAA;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IACxC,qBAAqB,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAA;IACtD,qBAAqB,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAA;IACtD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,KAAK,CAAC,SAAS,CAAA;IACvD,WAAW,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAA;IAC9C,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAC1D;AAED,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,yBAAyB,CAoD7D,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,cAAc,CAoB1D,CAAA;AAEF,eAAO,MAAM,OAAO,EAAE,aAAa,CAAC,QAAQ,CAMzC,CAAA;AAEH,eAAO,MAAM,SAAS,EAAE,aAAa,CAAC,eAAe,CAMlD,CAAA"}
|
|
@@ -18,12 +18,12 @@ export declare class MediaRightService<O = any> {
|
|
|
18
18
|
getGroups(): IMediaRightGroup<O>[];
|
|
19
19
|
getGroupsMap(): Record<string, IMediaRightGroup<O>>;
|
|
20
20
|
getGroup(groupId: string): IMediaRightGroup<O> | undefined;
|
|
21
|
-
addGroup(group: Omit<IMediaRightGroup<O>, 'createdAt' | 'items' | 'channels'>): void;
|
|
21
|
+
addGroup(group: Omit<IMediaRightGroup<O>, 'id' | 'createdAt' | 'items' | 'channels'>): void;
|
|
22
22
|
updateGroup(groupId: string, updates: Partial<Pick<IMediaRightGroup<O>, 'name'>>): void;
|
|
23
23
|
removeGroup(groupId: string): void;
|
|
24
|
-
addChannel(groupId: string, channel: IMediaRightChannel): void;
|
|
25
|
-
updateChannel(groupId: string,
|
|
26
|
-
removeChannel(groupId: string,
|
|
24
|
+
addChannel(groupId: string, channel: Omit<IMediaRightChannel, 'Id'>): void;
|
|
25
|
+
updateChannel(groupId: string, channelId: string, updates: Partial<IMediaRightChannel>): void;
|
|
26
|
+
removeChannel(groupId: string, channelId: string): void;
|
|
27
27
|
clearChannels(groupId: string): void;
|
|
28
28
|
addItem(item: IMediaRightItem<O>): void;
|
|
29
29
|
updateItem(groupId: string, productId: string, updates: Partial<IMediaRightItem<O>>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/media-right/service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/media-right/service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAGnG,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,GAAG;IAC1C,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;CAC5C;AAED,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,eAAe,EAAE,MAAM,CAAA;IACvB,KAAK,EAAE,oBAAoB,CAAA;CAC5B;AAWD,qBAAa,iBAAiB,CAAC,CAAC,GAAG,GAAG;IACpC,MAAM,CAAC,YAAY,SAAiC;IAEpD,MAAM,KAAK,QAAQ,IAAI,mBAAmB,CAGzC;IAED,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,mBAAmB;IAKhD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,kBAAkB;IAU7C,UAAU;IAIV,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI;IAK3D,SAAS,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE;IAKlC,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAKnD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,SAAS;IAK1D,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,WAAW,GAAG,OAAO,GAAG,UAAU,CAAC,GAAG,IAAI;IAqB3F,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI;IAcvF,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQlC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,GAAG,IAAI;IAoB1E,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAoB7F,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAiBvD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAYpC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI;IA6BvC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAiB1F,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAapD,QAAQ,IAAI,IAAI;IAIhB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,kBAAkB;CAW3B;AAED,eAAO,MAAM,iBAAiB,wBAA0B,CAAA"}
|
|
@@ -5,7 +5,7 @@ export declare enum EChannelType {
|
|
|
5
5
|
Youtube = "Youtube",
|
|
6
6
|
Other = "Other"
|
|
7
7
|
}
|
|
8
|
-
export interface
|
|
8
|
+
export interface IMediaRightChannelCreate {
|
|
9
9
|
/** URL of the channel */
|
|
10
10
|
ChannelUrl: string;
|
|
11
11
|
/** Name of the channel */
|
|
@@ -15,6 +15,9 @@ export interface IMediaRightChannel {
|
|
|
15
15
|
/** Additional custom information */
|
|
16
16
|
CustomInfo: string;
|
|
17
17
|
}
|
|
18
|
+
export interface IMediaRightChannel extends IMediaRightChannelCreate {
|
|
19
|
+
Id: string;
|
|
20
|
+
}
|
|
18
21
|
/**
|
|
19
22
|
* Cart group structure
|
|
20
23
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/media-right/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/media-right/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,yBAAyB;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,0BAA0B;IAC1B,WAAW,EAAE,YAAY,CAAA;IACzB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,kBAAmB,SAAQ,wBAAwB;IAClE,EAAE,EAAE,MAAM,CAAA;CACX;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,GAAG;IACvC,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAA;IACV,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,0BAA0B;IAC1B,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAA;IAC3B,0CAA0C;IAC1C,QAAQ,EAAE,kBAAkB,EAAE,CAAA;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,GAAG;IACtC,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAA;IACjB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAA;IACf,iDAAiD;IAEjD,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAA;IAClB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAA;IACf,4CAA4C;IAC5C,OAAO,CAAC,EAAE,CAAC,CAAA;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ETypeContent } from './types';
|
|
2
|
+
export interface IContentMetaData {
|
|
3
|
+
type: ETypeContent;
|
|
4
|
+
version?: string;
|
|
5
|
+
html?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const defaultContentMetaData: IContentMetaData;
|
|
8
|
+
export declare class NotifyContentConverter {
|
|
9
|
+
private rawContent;
|
|
10
|
+
constructor(content: string);
|
|
11
|
+
private parseContent;
|
|
12
|
+
getContentByVersion(): IContentMetaData;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=content-converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-converter.d.ts","sourceRoot":"","sources":["../../../src/notification/content-converter.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAItC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,eAAO,MAAM,sBAAsB,EAAE,gBAIpC,CAAA;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,UAAU,CAAQ;gBAEd,OAAO,EAAE,MAAM;IAI3B,OAAO,CAAC,YAAY;IAMpB,mBAAmB;CAIpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/notification/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AAExB,cAAc,SAAS,CAAA;AAEvB,YAAY,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AAE/C,cAAc,iBAAiB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/notification/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AAExB,cAAc,SAAS,CAAA;AAEvB,YAAY,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AAE/C,cAAc,iBAAiB,CAAA;AAE/B,cAAc,qBAAqB,CAAA"}
|
|
@@ -16,7 +16,7 @@ export declare class NotifyDetail extends Component<INotifyDetailProps, IState>
|
|
|
16
16
|
componentDidMount(): void;
|
|
17
17
|
componentWillUnmount(): void;
|
|
18
18
|
fetchDetailIfNeeded: () => Promise<void>;
|
|
19
|
-
render():
|
|
19
|
+
render(): import("react/jsx-runtime").JSX.Element;
|
|
20
20
|
handleRetry: () => void;
|
|
21
21
|
}
|
|
22
22
|
export default NotifyDetail;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notify-detail.d.ts","sourceRoot":"","sources":["../../../src/notification/notify-detail.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAIjC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"notify-detail.d.ts","sourceRoot":"","sources":["../../../src/notification/notify-detail.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAIjC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,qBAAqB,EAAgB,MAAM,SAAS,CAAA;AAIjG,OAAO,iCAAiC,CAAA;AAExC,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,IAAI,EAAE,aAAa,CAAA;IACnB,WAAW,CAAC,EAAE,mBAAmB,CAAA;CAClC;AAED,UAAU,MAAM;IACd,UAAU,EAAE,aAAa,GAAG,IAAI,CAAA;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;CACf;AAED,qBAAa,YAAa,SAAQ,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACrE,OAAO,CAAC,eAAe,CAA+B;gBAE1C,KAAK,EAAE,kBAAkB;IAKrC,iBAAiB;IAKjB,oBAAoB;IAIpB,mBAAmB,sBAiClB;IAED,MAAM;IA0CN,WAAW,aAKV;CACF;AAED,eAAe,YAAY,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dinocollab-shared",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.46",
|
|
4
4
|
"description": "DinoCollab shared utilities and components",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -100,7 +100,8 @@
|
|
|
100
100
|
"react-dom": "18.3.1",
|
|
101
101
|
"react-quill": "2.0.0",
|
|
102
102
|
"react-router-dom": "6.30.0",
|
|
103
|
-
"reflect-metadata": "0.2.2"
|
|
103
|
+
"reflect-metadata": "0.2.2",
|
|
104
|
+
"uuid": "13.0.0"
|
|
104
105
|
},
|
|
105
106
|
"devDependencies": {
|
|
106
107
|
"@babel/core": "7.27.1",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createClass as t,typeof as e,objectSpread2 as r,classCallCheck as n,defineProperty as s}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i}from"react/jsx-runtime";import o from"./notify-detail.custom.js";import a from"./notify-detail.default.js";import{ETypeContent as l}from"./types.js";var h=function(){return t(function t(e){n(this,t),s(this,"firtVersion","htmlContent"),s(this,"defaultVersion","1.0.0"),this.rawContent=e,this.parsedObj=this.parseContent()},[{key:"parseContent",value:function(){var t,r=void 0;if(!this.rawContent||""===this.rawContent.trim())return{type:l.Template,version:this.defaultVersion,html:""};try{if((t=JSON.parse(this.rawContent))&&"object"===e(t))return r=t.version||this.defaultVersion,{type:t.type||l.Template,version:r,html:t.html||""}}catch(t){if("string"==typeof this.rawContent&&/<[^>]+>/.test(this.rawContent))return{type:l.Template,version:this.firtVersion,html:this.rawContent}}return{type:l.Template,version:this.defaultVersion,html:this.rawContent}}},{key:"getContentByVersion",value:function(){return this.parseContent()}},{key:"renderComponent",value:function(t){var e=this.parseContent();switch(e.type){case l.Custom:return i(o,r(r({},t),{},{html:e.html||""}));case l.Template:default:return i(a,r(r({},t),{},{html:e.html||""}))}}}])}();export{h as NotifyContentConverter};
|
|
2
|
-
//# sourceMappingURL=class.config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"class.config.js","sources":["../../src/notification/class.config.tsx"],"sourcesContent":["import NotifyDetailCustom from './notify-detail.custom'\r\nimport NotifyDetailDefault from './notify-detail.default'\r\nimport { ETypeContent, INotification, INotificationPropsDef } from './types'\r\n\r\nexport interface IRenderComponentProps extends INotificationPropsDef {\r\n data: INotification\r\n}\r\n\r\nexport interface ConfigType {\r\n type: ETypeContent\r\n version?: string\r\n html?: string\r\n}\r\n\r\nexport class NotifyContentConverter {\r\n private rawContent: string\r\n private parsedObj: any\r\n private firtVersion = 'htmlContent'\r\n private defaultVersion = '1.0.0'\r\n\r\n constructor(content: string) {\r\n this.rawContent = content\r\n this.parsedObj = this.parseContent()\r\n }\r\n\r\n private parseContent(): ConfigType {\r\n let parsed: any\r\n let detectedVersion: string | undefined = undefined\r\n\r\n // If content is empty\r\n if (!this.rawContent || this.rawContent.trim() === '') {\r\n return { type: ETypeContent.Template, version: this.defaultVersion, html: '' }\r\n }\r\n\r\n try {\r\n // Try to parse JSON\r\n parsed = JSON.parse(this.rawContent)\r\n\r\n // If parse successful and is object\r\n if (parsed && typeof parsed === 'object') {\r\n detectedVersion = parsed.version || this.defaultVersion\r\n return { type: parsed.type || ETypeContent.Template, version: detectedVersion, html: parsed.html || '' }\r\n }\r\n } catch {\r\n // If not JSON, check if it's HTML\r\n if (typeof this.rawContent === 'string' && /<[^>]+>/.test(this.rawContent)) {\r\n // First version html content\r\n return { type: ETypeContent.Template, version: this.firtVersion, html: this.rawContent }\r\n }\r\n }\r\n\r\n // Fallback: treat as plain text\r\n return { type: ETypeContent.Template, version: this.defaultVersion, html: this.rawContent }\r\n }\r\n\r\n getContentByVersion() {\r\n const obj = this.parseContent()\r\n return obj\r\n }\r\n\r\n renderComponent(props: IRenderComponentProps): React.ReactNode {\r\n const obj = this.parseContent()\r\n switch (obj.type) {\r\n case ETypeContent.Custom:\r\n return <NotifyDetailCustom {...props} html={obj.html || ''} />\r\n case ETypeContent.Template:\r\n default:\r\n return <NotifyDetailDefault {...props} html={obj.html || ''} />\r\n }\r\n }\r\n}\r\n"],"names":["NotifyContentConverter","_createClass","content","_classCallCheck","_defineProperty","this","rawContent","parsedObj","parseContent","key","value","parsed","detectedVersion","undefined","trim","type","ETypeContent","Template","version","defaultVersion","html","JSON","parse","_typeof","_unused","test","firtVersion","props","obj","Custom","_jsx","NotifyDetailCustom","_objectSpread","NotifyDetailDefault"],"mappings":"mTAcA,IAAaA,EAAsB,WAShC,OAAAC,EAHD,SAAAD,EAAYE,GAAeC,OAAAH,GAAAI,qBAHL,eAAaA,wBACV,SAGvBC,KAAKC,WAAaJ,EAClBG,KAAKE,UAAYF,KAAKG,cACxB,EAAC,CAAA,CAAAC,IAAA,eAAAC,MAEO,WACN,IAAIC,EACAC,OAAsCC,EAG1C,IAAKR,KAAKC,YAAyC,KAA3BD,KAAKC,WAAWQ,OACtC,MAAO,CAAEC,KAAMC,EAAaC,SAAUC,QAASb,KAAKc,eAAgBC,KAAM,IAG5E,IAKE,IAHAT,EAASU,KAAKC,MAAMjB,KAAKC,cAGO,WAAlBiB,EAAOZ,GAEnB,OADAC,EAAkBD,EAAOO,SAAWb,KAAKc,eAClC,CAAEJ,KAAMJ,EAAOI,MAAQC,EAAaC,SAAUC,QAASN,EAAiBQ,KAAMT,EAAOS,MAAQ,GAEvG,CAAC,MAAAI,GAEA,GAA+B,iBAApBnB,KAAKC,YAA2B,UAAUmB,KAAKpB,KAAKC,YAE7D,MAAO,CAAES,KAAMC,EAAaC,SAAUC,QAASb,KAAKqB,YAAaN,KAAMf,KAAKC,WAE/E,CAGD,MAAO,CAAES,KAAMC,EAAaC,SAAUC,QAASb,KAAKc,eAAgBC,KAAMf,KAAKC,WACjF,GAAC,CAAAG,IAAA,sBAAAC,MAED,WAEE,OADYL,KAAKG,cAEnB,GAAC,CAAAC,IAAA,kBAAAC,MAED,SAAgBiB,GACd,IAAMC,EAAMvB,KAAKG,eACjB,OAAQoB,EAAIb,MACV,KAAKC,EAAaa,OAChB,OAAOC,EAACC,EAAkBC,EAAAA,KAAKL,GAAK,GAAA,CAAEP,KAAMQ,EAAIR,MAAQ,MAC1D,KAAKJ,EAAaC,SAClB,QACE,OAAOa,EAACG,EAAmBD,EAAAA,KAAKL,GAAK,GAAA,CAAEP,KAAMQ,EAAIR,MAAQ,MAE/D,IAAC,CAvDgC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { ETypeContent, INotification, INotificationPropsDef } from './types';
|
|
3
|
-
export interface IRenderComponentProps extends INotificationPropsDef {
|
|
4
|
-
data: INotification;
|
|
5
|
-
}
|
|
6
|
-
export interface ConfigType {
|
|
7
|
-
type: ETypeContent;
|
|
8
|
-
version?: string;
|
|
9
|
-
html?: string;
|
|
10
|
-
}
|
|
11
|
-
export declare class NotifyContentConverter {
|
|
12
|
-
private rawContent;
|
|
13
|
-
private parsedObj;
|
|
14
|
-
private firtVersion;
|
|
15
|
-
private defaultVersion;
|
|
16
|
-
constructor(content: string);
|
|
17
|
-
private parseContent;
|
|
18
|
-
getContentByVersion(): ConfigType;
|
|
19
|
-
renderComponent(props: IRenderComponentProps): React.ReactNode;
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=class.config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"class.config.d.ts","sourceRoot":"","sources":["../../../src/notification/class.config.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAE5E,MAAM,WAAW,qBAAsB,SAAQ,qBAAqB;IAClE,IAAI,EAAE,aAAa,CAAA;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,cAAc,CAAU;gBAEpB,OAAO,EAAE,MAAM;IAK3B,OAAO,CAAC,YAAY;IA8BpB,mBAAmB;IAKnB,eAAe,CAAC,KAAK,EAAE,qBAAqB,GAAG,KAAK,CAAC,SAAS;CAU/D"}
|