dinocollab-shared 1.2.16 → 1.2.18

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.
@@ -0,0 +1,2 @@
1
+ var r=-1,a=10;export{r as MAX_ITEMS,a as MAX_LINKS};
2
+ //# sourceMappingURL=configs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configs.js","sources":["../../src/cart/configs.ts"],"sourcesContent":["/**\r\n * Maximum number of distinct items allowed in the cart.\r\n * A value of -1 indicates no limit.\r\n */\r\nexport const MAX_ITEMS: number = -1\r\n\r\n/**\r\n * Maximum number of links allowed per cart item.\r\n * A value of -1 indicates no limit.\r\n */\r\nexport const MAX_LINKS: number = 10\r\n"],"names":["MAX_ITEMS","MAX_LINKS"],"mappings":"AAIaA,IAAAA,GAAoB,EAMpBC,EAAoB"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as e,createClass as o,toConsumableArray as r,objectSpread2 as t,classCallCheck as a}from"../_virtual/_rollupPluginBabelHelpers.js";import{createObjectSingleton as l}from"dinocollab-core/utils";import{CartEventStore as i}from"./event-store.js";var n=o(function o(){a(this,o),e(this,"localStorageKey","__cart_default__"),e(this,"store",new i)}),s=function(){function e(){a(this,e)}return o(e,[{key:"initialize",value:function(){e.provider.store.emit("requestState",{})}},{key:"subscribe",value:function(o,r){return e.provider.store.subscribe(o,r)}},{key:"getCarts",value:function(){var e;return null!==(e=this.loadFromLocalStorage().items)&&void 0!==e?e:[]}},{key:"addToCart",value:function(e){var o,t=this.loadFromLocalStorage(),a=Array.isArray(e)?e:[e],l=[].concat(r(null!==(o=t.items)&&void 0!==o?o:[]),r(a));this.saveToLocalStorage(l)}},{key:"removeFromCart",value:function(e){var o,r=this.loadFromLocalStorage(),t=Array.isArray(e)?e:[e],a=(null!==(o=r.items)&&void 0!==o?o:[]).filter(function(e){return!t.some(function(o){return o.ProductId===e.ProductId})});this.saveToLocalStorage(a)}},{key:"updateCart",value:function(e,o){var r,a=(null!==(r=this.loadFromLocalStorage().items)&&void 0!==r?r:[]).map(function(r){return r.ProductId===e?t(t({},r),o):r});this.saveToLocalStorage(a)}},{key:"updateOrAddCart",value:function(e,o){var a,l=this.loadFromLocalStorage(),i=(null!==(a=l.items)&&void 0!==a?a:[]).findIndex(function(o){return o.ProductId===e});if(-1!==i){var n,s=r(null!==(n=l.items)&&void 0!==n?n:[]);s[i]=t(t({},s[i]),o),this.saveToLocalStorage(s)}else this.addToCart(t({ProductId:e},o))}},{key:"clearCart",value:function(){this.saveToLocalStorage([])}},{key:"loadFromLocalStorage",value:function(){var o={version:"1.0",items:[]};try{if("undefined"!=typeof globalThis&&globalThis.localStorage){var r,t=localStorage.getItem(e.provider.localStorageKey),a=t?JSON.parse(t):null;Boolean(null==a||null===(r=a.items)||void 0===r?void 0:r.length)&&(o=a)}}catch(e){console.error("Error loading carts from localStorage:",e)}return o}},{key:"saveToLocalStorage",value:function(o){if("undefined"!=typeof globalThis&&globalThis.localStorage)if(e.provider.localStorageKey){var r={version:"1.0",items:o};localStorage.setItem(e.provider.localStorageKey,JSON.stringify(r)),e.provider.store.emit("stateChange",{items:o})}else console.warn("No localStorageKey provided, skipping storage")}}],[{key:"provider",get:function(){var o;return null!==(o=l(e.key_provider).get())&&void 0!==o?o:new n}},{key:"setProvider",value:function(o){l(e.key_provider).set(null!=o?o:new n)}},{key:"setLocalStorageKey",value:function(o){var r=e.provider;r.localStorageKey=o,e.setProvider(r)}}])}();e(s,"key_provider","__cart_key_provider__");var u=new s;export{s as CartService,u as cartService};
1
+ import{defineProperty as e,createClass as o,toConsumableArray as r,objectSpread2 as t,classCallCheck as a}from"../_virtual/_rollupPluginBabelHelpers.js";import{ApiAlertContext as i}from"dinocollab-core/api-context";import{createObjectSingleton as l,tryParseArray as n}from"dinocollab-core/utils";import{CartEventStore as s}from"./event-store.js";import{MAX_LINKS as c,MAX_ITEMS as u}from"./configs.js";var d=o(function o(){a(this,o),e(this,"localStorageKey","__cart_default__"),e(this,"maxLinks",c),e(this,"maxItems",u),e(this,"store",new s)}),v=function(){function s(){a(this,s),e(this,"isValidCart",function(e){var o=s.provider.maxItems,r=s.provider.maxLinks,t=!0;o>-1&&(t=e.items.length<=o);var a=!0;return r>-1&&(a=e.items.every(function(e){return n(e.SocialUrl,[]).length<=r})),t&&a})}return o(s,[{key:"initialize",value:function(){var e;null===(e=s.provider.store)||void 0===e||e.emit("requestState",{})}},{key:"subscribe",value:function(e,o){var r;return null===(r=s.provider.store)||void 0===r?void 0:r.subscribe(e,o)}},{key:"getCarts",value:function(){var e;return null!==(e=this.loadFromLocalStorage().items)&&void 0!==e?e:[]}},{key:"addToCart",value:function(e){var o,t=this.loadFromLocalStorage(),a=Array.isArray(e)?e:[e],i=[].concat(r(null!==(o=t.items)&&void 0!==o?o:[]),r(a));this.saveToLocalStorage(i)}},{key:"removeFromCart",value:function(e){var o,r=this.loadFromLocalStorage(),t=Array.isArray(e)?e:[e],a=(null!==(o=r.items)&&void 0!==o?o:[]).filter(function(e){return!t.some(function(o){return o.ProductId===e.ProductId})});this.saveToLocalStorage(a)}},{key:"updateCart",value:function(e,o){var r,a=(null!==(r=this.loadFromLocalStorage().items)&&void 0!==r?r:[]).map(function(r){return r.ProductId===e?t(t({},r),o):r});this.saveToLocalStorage(a)}},{key:"updateOrAddCart",value:function(e,o){var a,i=this.loadFromLocalStorage(),l=(null!==(a=i.items)&&void 0!==a?a:[]).findIndex(function(o){return o.ProductId===e});if(-1!==l){var n,s=r(null!==(n=i.items)&&void 0!==n?n:[]);s[l]=t(t({},s[l]),o),this.saveToLocalStorage(s)}else this.addToCart(t({ProductId:e},o))}},{key:"clearCart",value:function(){this.saveToLocalStorage([])}},{key:"loadFromLocalStorage",value:function(){var e={version:"1.0",items:[]};try{if("undefined"!=typeof globalThis&&globalThis.localStorage){var o,r=localStorage.getItem(s.provider.localStorageKey),t=r?JSON.parse(r):null;Boolean(null==t||null===(o=t.items)||void 0===o?void 0:o.length)&&(e=t)}}catch(e){console.error("Error loading carts from localStorage:",e)}return e}},{key:"saveToLocalStorage",value:function(e){if(this.isValidCart({version:"1.0",items:e})){if("undefined"!=typeof globalThis&&globalThis.localStorage)if(s.provider.localStorageKey){var o,r={version:"1.0",items:e};localStorage.setItem(s.provider.localStorageKey,JSON.stringify(r)),null===(o=s.provider.store)||void 0===o||o.emit("stateChange",{items:e})}else console.warn("No localStorageKey provided, skipping storage")}else this.notifyValidationError()}},{key:"notifyValidationError",value:function(){var e,o=s.provider.maxItems,r=s.provider.maxLinks,t=["Max items: ".concat(o>-1?o:"unlimited"),"Max links per item: ".concat(r>-1?r:"unlimited")];null===(e=i.ApiAlert)||void 0===e||e.PushInfo("Cart limit exceeded. ".concat(t.join(", "),". Please review your cart."))}}],[{key:"provider",get:function(){var e;return null!==(e=l(s.key_provider).get())&&void 0!==e?e:new d}},{key:"setProvider",value:function(e){l(s.key_provider).set(null!=e?e:new d)}},{key:"setOptions",value:function(e){var o=s.provider;void 0!==e.localStorageKey&&(o.localStorageKey=e.localStorageKey),void 0!==e.maxItems&&(o.maxItems=e.maxItems),void 0!==e.maxLinks&&(o.maxLinks=e.maxLinks),s.setProvider(o)}}])}();e(v,"key_provider","__cart_key_provider__");var m=new v;export{v as CartService,m as cartService};
2
2
  //# sourceMappingURL=service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sources":["../../src/cart/service.ts"],"sourcesContent":["import { createObjectSingleton } from 'dinocollab-core/utils'\r\nimport { ICartItem } from './types'\r\nimport { CartEventStore } from './event-store'\r\n\r\nexport interface ICartMetadata<T extends ICartItem = ICartItem> {\r\n version: string\r\n items: T[]\r\n}\r\n\r\nexport interface ICartProvider {\r\n localStorageKey: string\r\n store: CartEventStore\r\n}\r\n\r\nclass CartProviderDefault implements ICartProvider {\r\n localStorageKey = '__cart_default__'\r\n store = new CartEventStore()\r\n}\r\n\r\nexport class CartService<T extends ICartItem = ICartItem> {\r\n static key_provider = '__cart_key_provider__'\r\n static get provider(): ICartProvider {\r\n const ObjectProvider = createObjectSingleton<ICartProvider>(CartService.key_provider)\r\n return ObjectProvider.get() ?? new CartProviderDefault()\r\n }\r\n static setProvider(provider: ICartProvider) {\r\n const ObjectProvider = createObjectSingleton<ICartProvider>(CartService.key_provider)\r\n ObjectProvider.set(provider ?? new CartProviderDefault())\r\n }\r\n static setLocalStorageKey(key: string) {\r\n const provider = CartService.provider\r\n provider.localStorageKey = key\r\n CartService.setProvider(provider)\r\n }\r\n\r\n initialize() {\r\n CartService.provider.store.emit('requestState', {})\r\n }\r\n\r\n subscribe(event: string, callback: (...args: any[]) => void) {\r\n return CartService.provider.store.subscribe(event as any, callback as any)\r\n }\r\n\r\n getCarts(): T[] {\r\n const storedItems = this.loadFromLocalStorage()\r\n return storedItems.items ?? []\r\n }\r\n\r\n addToCart(cartItem: T | T[]): void {\r\n const storedItems = this.loadFromLocalStorage()\r\n const itemsToAdd = Array.isArray(cartItem) ? cartItem : [cartItem]\r\n const updatedItems = [...(storedItems.items ?? []), ...itemsToAdd]\r\n this.saveToLocalStorage(updatedItems)\r\n }\r\n\r\n removeFromCart(cartItem: T | T[]): void {\r\n const storedItems = this.loadFromLocalStorage()\r\n const itemsToRemove = Array.isArray(cartItem) ? cartItem : [cartItem]\r\n const updatedItems = (storedItems.items ?? []).filter((x) => !itemsToRemove.some((y) => y.ProductId === x.ProductId))\r\n this.saveToLocalStorage(updatedItems)\r\n }\r\n\r\n updateCart(productId: string, updates: Partial<T>): void {\r\n const storedItems = this.loadFromLocalStorage()\r\n const updatedItems = (storedItems.items ?? []).map((item) => (item.ProductId === productId ? { ...item, ...updates } : item))\r\n this.saveToLocalStorage(updatedItems)\r\n }\r\n\r\n updateOrAddCart(productId: string, updates: Partial<T>): void {\r\n const storedItems = this.loadFromLocalStorage()\r\n const existingIndex = (storedItems.items ?? []).findIndex((item) => item.ProductId === productId)\r\n\r\n if (existingIndex !== -1) {\r\n const updatedItems = [...(storedItems.items ?? [])]\r\n updatedItems[existingIndex] = { ...updatedItems[existingIndex], ...updates }\r\n this.saveToLocalStorage(updatedItems)\r\n } else {\r\n this.addToCart({ ProductId: productId, ...updates } as T)\r\n }\r\n }\r\n\r\n clearCart(): void {\r\n this.saveToLocalStorage([])\r\n }\r\n\r\n private loadFromLocalStorage(): ICartMetadata<T> {\r\n const defaultValue: ICartMetadata<T> = { version: '1.0', items: [] }\r\n let data = defaultValue\r\n try {\r\n // Check if running in client environment with localStorage available\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n const temp = localStorage.getItem(CartService.provider.localStorageKey)\r\n const tempParsed = temp ? JSON.parse(temp) : null\r\n if (Boolean(tempParsed?.items?.length)) data = tempParsed\r\n }\r\n } catch (error) {\r\n console.error('Error loading carts from localStorage:', error)\r\n }\r\n return data\r\n }\r\n\r\n private saveToLocalStorage(items: T[]) {\r\n // Check if running in client environment with localStorage available\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n if (CartService.provider.localStorageKey) {\r\n const value: ICartMetadata<T> = { version: '1.0', items }\r\n localStorage.setItem(CartService.provider.localStorageKey, JSON.stringify(value))\r\n CartService.provider.store.emit('stateChange', { items })\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 cartService = new CartService<ICartItem>()\r\n"],"names":["CartProviderDefault","_createClass","_classCallCheck","_defineProperty","this","CartEventStore","CartService","key","value","provider","store","emit","event","callback","subscribe","_storedItems$items","loadFromLocalStorage","items","cartItem","_storedItems$items2","storedItems","itemsToAdd","Array","isArray","updatedItems","concat","_toConsumableArray","saveToLocalStorage","_storedItems$items3","itemsToRemove","filter","x","some","y","ProductId","productId","updates","_storedItems$items4","map","item","_objectSpread","_storedItems$items5","existingIndex","findIndex","_storedItems$items6","addToCart","data","version","globalThis","localStorage","_tempParsed$items","temp","getItem","localStorageKey","tempParsed","JSON","parse","Boolean","length","error","console","setItem","stringify","warn","get","_ObjectProvider$get","createObjectSingleton","key_provider","set","setProvider","cartService"],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sources":["../../src/cart/service.ts"],"sourcesContent":["import { ApiAlertContext } from 'dinocollab-core/api-context'\r\nimport { createObjectSingleton, tryParseArray } from 'dinocollab-core/utils'\r\nimport { ICartItem, ICartOptions } from './types'\r\nimport { CartEventStore } from './event-store'\r\nimport { MAX_ITEMS, MAX_LINKS } from './configs'\r\n\r\nexport interface ICartMetadata<T extends ICartItem = ICartItem> {\r\n version: string\r\n items: T[]\r\n}\r\n\r\nexport interface ICartProvider extends ICartOptions {\r\n store?: CartEventStore\r\n}\r\n\r\nclass CartProviderDefault implements ICartProvider {\r\n localStorageKey = '__cart_default__'\r\n maxLinks = MAX_LINKS\r\n maxItems = MAX_ITEMS\r\n store = new CartEventStore()\r\n}\r\n\r\nexport class CartService<T extends ICartItem = ICartItem> {\r\n static key_provider = '__cart_key_provider__'\r\n static get provider(): ICartProvider {\r\n const ObjectProvider = createObjectSingleton<ICartProvider>(CartService.key_provider)\r\n return ObjectProvider.get() ?? new CartProviderDefault()\r\n }\r\n static setProvider(provider: ICartProvider) {\r\n const ObjectProvider = createObjectSingleton<ICartProvider>(CartService.key_provider)\r\n ObjectProvider.set(provider ?? new CartProviderDefault())\r\n }\r\n static setOptions(options: { localStorageKey?: string; maxItems?: number; maxLinks?: number }) {\r\n const provider = CartService.provider\r\n if (options.localStorageKey !== undefined) provider.localStorageKey = options.localStorageKey\r\n if (options.maxItems !== undefined) provider.maxItems = options.maxItems\r\n if (options.maxLinks !== undefined) provider.maxLinks = options.maxLinks\r\n CartService.setProvider(provider)\r\n }\r\n\r\n initialize() {\r\n CartService.provider.store?.emit('requestState', {})\r\n }\r\n\r\n subscribe(event: string, callback: (...args: any[]) => void) {\r\n return CartService.provider.store?.subscribe(event as any, callback as any)\r\n }\r\n\r\n getCarts(): T[] {\r\n const storedItems = this.loadFromLocalStorage()\r\n return storedItems.items ?? []\r\n }\r\n\r\n addToCart(cartItem: T | T[]): void {\r\n const storedItems = this.loadFromLocalStorage()\r\n const itemsToAdd = Array.isArray(cartItem) ? cartItem : [cartItem]\r\n const updatedItems = [...(storedItems.items ?? []), ...itemsToAdd]\r\n this.saveToLocalStorage(updatedItems)\r\n }\r\n\r\n removeFromCart(cartItem: T | T[]): void {\r\n const storedItems = this.loadFromLocalStorage()\r\n const itemsToRemove = Array.isArray(cartItem) ? cartItem : [cartItem]\r\n const updatedItems = (storedItems.items ?? []).filter((x) => !itemsToRemove.some((y) => y.ProductId === x.ProductId))\r\n this.saveToLocalStorage(updatedItems)\r\n }\r\n\r\n updateCart(productId: string, updates: Partial<T>): void {\r\n const storedItems = this.loadFromLocalStorage()\r\n const updatedItems = (storedItems.items ?? []).map((item) => (item.ProductId === productId ? { ...item, ...updates } : item))\r\n this.saveToLocalStorage(updatedItems)\r\n }\r\n\r\n updateOrAddCart(productId: string, updates: Partial<T>): void {\r\n const storedItems = this.loadFromLocalStorage()\r\n const existingIndex = (storedItems.items ?? []).findIndex((item) => item.ProductId === productId)\r\n\r\n if (existingIndex !== -1) {\r\n const updatedItems = [...(storedItems.items ?? [])]\r\n updatedItems[existingIndex] = { ...updatedItems[existingIndex], ...updates }\r\n this.saveToLocalStorage(updatedItems)\r\n } else {\r\n this.addToCart({ ProductId: productId, ...updates } as T)\r\n }\r\n }\r\n\r\n clearCart(): void {\r\n this.saveToLocalStorage([])\r\n }\r\n\r\n private loadFromLocalStorage(): ICartMetadata<T> {\r\n const defaultValue: ICartMetadata<T> = { version: '1.0', items: [] }\r\n let data = defaultValue\r\n try {\r\n // Check if running in client environment with localStorage available\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n const temp = localStorage.getItem(CartService.provider.localStorageKey!)\r\n const tempParsed = temp ? JSON.parse(temp) : null\r\n if (Boolean(tempParsed?.items?.length)) data = tempParsed\r\n }\r\n } catch (error) {\r\n console.error('Error loading carts from localStorage:', error)\r\n }\r\n return data\r\n }\r\n\r\n private saveToLocalStorage(items: T[]) {\r\n const isValid = this.isValidCart({ version: '1.0', items })\r\n if (!isValid) {\r\n this.notifyValidationError()\r\n return\r\n }\r\n // Check if running in client environment with localStorage available\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n if (CartService.provider.localStorageKey) {\r\n const value: ICartMetadata<T> = { version: '1.0', items }\r\n localStorage.setItem(CartService.provider.localStorageKey, JSON.stringify(value))\r\n CartService.provider.store?.emit('stateChange', { items })\r\n } else {\r\n console.warn('No localStorageKey provided, skipping storage')\r\n }\r\n }\r\n }\r\n\r\n private isValidCart = (data: ICartMetadata<T>): boolean => {\r\n const maxItems = CartService.provider.maxItems!\r\n const maxLinks = CartService.provider.maxLinks!\r\n\r\n let isMaxItemsValid = true\r\n if (maxItems > -1) isMaxItemsValid = data.items.length <= maxItems\r\n\r\n let isMaxLinksValid = true\r\n if (maxLinks > -1) {\r\n isMaxLinksValid = data.items.every((item) => {\r\n const links = tryParseArray(item.SocialUrl, [])\r\n return links.length <= maxLinks\r\n })\r\n }\r\n return isMaxItemsValid && isMaxLinksValid\r\n }\r\n\r\n private notifyValidationError() {\r\n const maxItems = CartService.provider.maxItems!\r\n const maxLinks = CartService.provider.maxLinks!\r\n const texts = [`Max items: ${maxItems > -1 ? maxItems : 'unlimited'}`, `Max links per item: ${maxLinks > -1 ? maxLinks : 'unlimited'}`]\r\n ApiAlertContext.ApiAlert?.PushInfo(`Cart limit exceeded. ${texts.join(', ')}. Please review your cart.`)\r\n }\r\n}\r\n\r\nexport const cartService = new CartService<ICartItem>()\r\n"],"names":["CartProviderDefault","_createClass","_classCallCheck","_defineProperty","MAX_LINKS","MAX_ITEMS","this","CartEventStore","CartService","data","maxItems","provider","maxLinks","isMaxItemsValid","items","length","isMaxLinksValid","every","item","tryParseArray","SocialUrl","key","value","_CartService$provider","store","emit","event","callback","_CartService$provider2","subscribe","_storedItems$items","loadFromLocalStorage","cartItem","_storedItems$items2","storedItems","itemsToAdd","Array","isArray","updatedItems","concat","_toConsumableArray","saveToLocalStorage","_storedItems$items3","itemsToRemove","filter","x","some","y","ProductId","productId","updates","_storedItems$items4","map","_objectSpread","_storedItems$items5","existingIndex","findIndex","_storedItems$items6","addToCart","version","globalThis","localStorage","_tempParsed$items","temp","getItem","localStorageKey","tempParsed","JSON","parse","Boolean","error","console","isValidCart","_CartService$provider3","setItem","stringify","warn","notifyValidationError","_ApiAlertContext$ApiA","texts","ApiAlertContext","ApiAlert","PushInfo","join","get","_ObjectProvider$get","createObjectSingleton","key_provider","set","options","undefined","setProvider","cartService"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{styled as e,Menu as o,Box as r,alpha as i}from"@mui/material";var a=e(o)(function(t){var e=t.theme;return{"--color-bg":"dark"===e.palette.mode?"#323234":e.palette.background.paper,"--color-text":e.palette.text.primary,marginTop:"45px",".MuiPaper-root":{position:"relative",overflow:"visible",display:"flex",flexDirection:"column",backgroundColor:"var(--color-bg, #000000)",borderRadius:e.shape.borderRadius,minWidth:"280px",maxWidth:"550px",boxShadow:"0 1px 1px rgba(0, 0, 0, 0.05), 0 2px 2px rgba(0, 0, 0, 0.2), 0 4px 4px rgba(0, 0, 0, 0.15), 0 8px 8px rgba(0, 0, 0, 0.05)",animation:"fadeInDown 0.3s ease-out",marginTop:"8px",color:"var(--color-text, #000000)","@keyframes fadeInDown":{"0%":{opacity:0,transform:"translateY(-10px)"},"100%":{opacity:1,transform:"translateY(0)"}},"&::before":{content:'""',position:"absolute",backgroundColor:"var(--color-bg, #ffffff)",width:"10px",height:"10px",top:"-4px",right:e.spacing(1),transform:"translateX(-50%) rotate(45deg)",zIndex:0}},".MuiBackdrop-root":{backgroundColor:"transparent"},".MuiList-root":{padding:0,height:"100%",overflowY:"auto","&::-webkit-scrollbar":{width:"6px",background:"transparent"},"&::-webkit-scrollbar-thumb":{background:"#e0e0e0",borderRadius:"8px"},"&::-webkit-scrollbar-thumb:hover":{background:"#bdbdbd"},"&":{scrollbarWidth:"thin",scrollbarColor:"#e0e0e0 transparent"}}}}),n={root:"CartContent-root",header:"CartContent-header",footer:"CartContent-footer",items:"CartContent-items",item:"CartContent-item",itemContent:"CartContent-itemContent",itemImg:"CartContent-itemImg",itemTitle:"CartContent-itemTitle",itemPrice:"CartContent-itemPrice",itemTag:"CartContent-itemTag"},p=function(t,e){return"".concat((null==e?void 0:e.prefix)||"",".").concat(n[t]).concat((null==e?void 0:e.suffix)||"")},l=e(r)(function(e){var o=e.theme;return t(t(t(t(t(t(t(t(t(t({"--height-item":"80px"},p("root",{prefix:"&"}),{height:"100%"}),p("header"),{padding:"12px 16px",display:"flex",justifyContent:"space-between",alignItems:"center",gap:o.spacing(5),position:"sticky",top:0,background:"var(--color-bg, #323234)",zIndex:2,boxShadow:"0px 0.5px 5px 0px rgba(0, 0, 0, 0.15)"}),p("footer"),{padding:"6px 12px",display:"flex",justifyContent:"flex-end",position:"sticky",bottom:0,background:"var(--color-bg, #323234)",zIndex:1,boxShadow:"0px 0.5px 5px 0px rgba(0, 0, 0, 0.15)"}),p("items"),{overflowY:"auto",height:"100%"}),p("item"),{display:"flex",alignItems:"center",padding:"8px 12px",transition:"0.3s",height:"var(--height-item)","& a":{textDecoration:"none"},"&:hover":{background:o.palette.action.hover},"&:hover a":{textDecoration:"underline"}}),p("itemImg"),{width:"60px",height:"60px",borderRadius:"6px",objectFit:"cover",marginRight:"12px",flex:"0 0 auto",backgroundColor:i(o.palette.grey[400],.2)}),p("itemContent"),{flex:1,display:"flex",alignItems:"center",minWidth:0,position:"relative"}),p("itemTitle"),{color:"var(--color-text, #fff)",fontWeight:600,flex:1,width:"100%",margin:"0 12px",padding:"15px 0",minWidth:0,maxWidth:"300px"}),p("itemTitle",{prefix:"a"}),{textDecoration:"none","&:hover":{textDecoration:"underline"}}),p("itemTag"),{position:"absolute",top:0,left:"12px",fontWeight:600})});export{l as CartContentStyled,a as MenuStyled,n as cartContentClasses};
1
+ import{defineProperty as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{styled as e,Menu as o,Box as r,alpha as i}from"@mui/material";var a=e(o)(function(t){var e=t.theme;return{"--color-bg":"dark"===e.palette.mode?"#323234":e.palette.background.paper,"--color-text":e.palette.text.primary,marginTop:"45px",".MuiPaper-root":{position:"relative",overflow:"visible",display:"flex",flexDirection:"column",backgroundColor:"var(--color-bg, #000000)",borderRadius:e.shape.borderRadius,minWidth:"280px",maxWidth:"550px",boxShadow:"0 1px 1px rgba(0, 0, 0, 0.05), 0 2px 2px rgba(0, 0, 0, 0.2), 0 4px 4px rgba(0, 0, 0, 0.15), 0 8px 8px rgba(0, 0, 0, 0.05)",animation:"fadeInDown 0.3s ease-out",marginTop:"8px",color:"var(--color-text, #000000)","@keyframes fadeInDown":{"0%":{opacity:0,transform:"translateY(-10px)"},"100%":{opacity:1,transform:"translateY(0)"}},"&::before":{content:'""',position:"absolute",backgroundColor:"var(--color-bg, #ffffff)",width:"10px",height:"10px",top:"-4px",right:e.spacing(1),transform:"translateX(-50%) rotate(45deg)",zIndex:0}},".MuiBackdrop-root":{backgroundColor:"transparent"},".MuiList-root":{padding:0,height:"100%",overflowY:"auto","&::-webkit-scrollbar":{width:"6px",background:"transparent"},"&::-webkit-scrollbar-thumb":{background:"#e0e0e0",borderRadius:"8px"},"&::-webkit-scrollbar-thumb:hover":{background:"#bdbdbd"},"&":{scrollbarWidth:"thin",scrollbarColor:"#e0e0e0 transparent"}}}}),n={root:"CartContent-root",header:"CartContent-header",footer:"CartContent-footer",items:"CartContent-items",item:"CartContent-item",itemContent:"CartContent-itemContent",itemImg:"CartContent-itemImg",itemTitle:"CartContent-itemTitle",itemPrice:"CartContent-itemPrice",itemTag:"CartContent-itemTag"},p=function(t,e){return"".concat((null==e?void 0:e.prefix)||"",".").concat(n[t]).concat((null==e?void 0:e.suffix)||"")},l=e(r)(function(e){var o=e.theme;return t(t(t(t(t(t(t(t(t(t({"--height-item":"80px"},p("root",{prefix:"&"}),{height:"100%"}),p("header"),{padding:"12px 16px",display:"flex",justifyContent:"space-between",alignItems:"center",gap:o.spacing(5),position:"sticky",top:0,background:"var(--color-bg, #323234)",zIndex:2,boxShadow:"0px 0.5px 5px 0px rgba(0, 0, 0, 0.15)"}),p("footer"),{padding:"6px 12px",display:"flex",justifyContent:"flex-end",position:"sticky",bottom:0,background:"var(--color-bg, #323234)",zIndex:1,boxShadow:"0px 0.5px 5px 0px rgba(0, 0, 0, 0.15)"}),p("items"),{overflowY:"auto",height:"100%"}),p("item"),{display:"flex",alignItems:"center",padding:"8px 12px",transition:"0.3s",height:"var(--height-item)","& a":{textDecoration:"none"},"&:hover":{background:o.palette.action.hover},"&:hover a":{textDecoration:"underline"}}),p("itemImg"),{width:"60px",height:"60px",borderRadius:"6px",objectFit:"cover",marginRight:"12px",flex:"0 0 auto",backgroundColor:i(o.palette.grey[400],.2)}),p("itemContent"),{flex:1,display:"flex",alignItems:"center",minWidth:0,position:"relative",marginRight:o.spacing(1.5)}),p("itemTitle"),{color:"var(--color-text, #fff)",fontWeight:600,flex:1,width:"100%",marginRight:o.spacing(1),padding:o.spacing(2,0),minWidth:0,maxWidth:"300px"}),p("itemTitle",{prefix:"a"}),{textDecoration:"none","&:hover":{textDecoration:"underline"}}),p("itemTag"),{position:"absolute",top:0,left:0,fontWeight:600})});export{l as CartContentStyled,a as MenuStyled,n as cartContentClasses};
2
2
  //# sourceMappingURL=styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styled.js","sources":["../../src/cart/styled.tsx"],"sourcesContent":["import { alpha, Box, Menu, styled } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\nimport type { BoxProps, MenuProps } from '@mui/material'\r\n\r\nexport const MenuStyled: ComponentType<MenuProps> = styled(Menu)(({ theme }) => ({\r\n '--color-bg': theme.palette.mode === 'dark' ? '#323234' : theme.palette.background.paper,\r\n '--color-text': theme.palette.text.primary,\r\n\r\n marginTop: '45px',\r\n '.MuiPaper-root': {\r\n position: 'relative',\r\n overflow: 'visible',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n backgroundColor: 'var(--color-bg, #000000)',\r\n borderRadius: theme.shape.borderRadius,\r\n minWidth: '280px',\r\n maxWidth: '550px',\r\n boxShadow: `0 1px 1px rgba(0, 0, 0, 0.05), 0 2px 2px rgba(0, 0, 0, 0.2), 0 4px 4px rgba(0, 0, 0, 0.15), 0 8px 8px rgba(0, 0, 0, 0.05)`,\r\n animation: 'fadeInDown 0.3s ease-out',\r\n marginTop: '8px',\r\n color: 'var(--color-text, #000000)',\r\n\r\n '@keyframes fadeInDown': {\r\n '0%': { opacity: 0, transform: 'translateY(-10px)' },\r\n '100%': { opacity: 1, transform: 'translateY(0)' }\r\n },\r\n\r\n '&::before': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n backgroundColor: 'var(--color-bg, #ffffff)',\r\n width: '10px',\r\n height: '10px',\r\n top: '-4px',\r\n right: theme.spacing(1),\r\n transform: 'translateX(-50%) rotate(45deg)',\r\n zIndex: 0\r\n }\r\n },\r\n '.MuiBackdrop-root': { backgroundColor: 'transparent' },\r\n '.MuiList-root': {\r\n padding: 0,\r\n height: '100%',\r\n overflowY: 'auto',\r\n '&::-webkit-scrollbar': { width: '6px', background: 'transparent' },\r\n '&::-webkit-scrollbar-thumb': { background: '#e0e0e0', borderRadius: '8px' },\r\n '&::-webkit-scrollbar-thumb:hover': { background: '#bdbdbd' },\r\n '&': { scrollbarWidth: 'thin', scrollbarColor: '#e0e0e0 transparent' }\r\n }\r\n}))\r\n\r\nexport const cartContentClasses = {\r\n root: 'CartContent-root',\r\n header: 'CartContent-header',\r\n footer: 'CartContent-footer',\r\n items: 'CartContent-items',\r\n item: 'CartContent-item',\r\n itemContent: 'CartContent-itemContent',\r\n itemImg: 'CartContent-itemImg',\r\n itemTitle: 'CartContent-itemTitle',\r\n itemPrice: 'CartContent-itemPrice',\r\n itemTag: 'CartContent-itemTag'\r\n}\r\n\r\nconst getCartContentClasses = (key: keyof typeof cartContentClasses, options?: { prefix?: string; suffix?: string }) => {\r\n return `${options?.prefix || ''}.${cartContentClasses[key]}${options?.suffix || ''}`\r\n}\r\n\r\nexport const CartContentStyled: ComponentType<BoxProps> = styled(Box)(({ theme }) => ({\r\n '--height-item': '80px',\r\n [getCartContentClasses('root', { prefix: '&' })]: { height: '100%' },\r\n [getCartContentClasses('header')]: {\r\n padding: '12px 16px',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n gap: theme.spacing(5),\r\n position: 'sticky',\r\n top: 0,\r\n background: 'var(--color-bg, #323234)',\r\n zIndex: 2,\r\n boxShadow: '0px 0.5px 5px 0px rgba(0, 0, 0, 0.15)'\r\n },\r\n [getCartContentClasses('footer')]: {\r\n padding: '6px 12px',\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n position: 'sticky',\r\n bottom: 0,\r\n background: 'var(--color-bg, #323234)',\r\n zIndex: 1,\r\n boxShadow: '0px 0.5px 5px 0px rgba(0, 0, 0, 0.15)'\r\n },\r\n [getCartContentClasses('items')]: { overflowY: 'auto', height: '100%' },\r\n [getCartContentClasses('item')]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '8px 12px',\r\n transition: '0.3s',\r\n height: 'var(--height-item)',\r\n '& a': { textDecoration: 'none' },\r\n '&:hover': { background: theme.palette.action.hover },\r\n '&:hover a': { textDecoration: 'underline' }\r\n },\r\n [getCartContentClasses('itemImg')]: {\r\n width: '60px',\r\n height: '60px',\r\n borderRadius: '6px',\r\n objectFit: 'cover',\r\n marginRight: '12px',\r\n flex: '0 0 auto',\r\n backgroundColor: alpha(theme.palette.grey[400], 0.2)\r\n },\r\n [getCartContentClasses('itemContent')]: {\r\n flex: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n minWidth: 0,\r\n position: 'relative'\r\n },\r\n [getCartContentClasses('itemTitle')]: {\r\n color: 'var(--color-text, #fff)',\r\n fontWeight: 600,\r\n flex: 1,\r\n width: '100%',\r\n margin: '0 12px',\r\n padding: '15px 0',\r\n minWidth: 0,\r\n maxWidth: '300px'\r\n },\r\n [getCartContentClasses('itemTitle', { prefix: 'a' })]: {\r\n textDecoration: 'none',\r\n '&:hover': { textDecoration: 'underline' }\r\n },\r\n [getCartContentClasses('itemTag')]: {\r\n position: 'absolute',\r\n top: 0,\r\n left: '12px',\r\n fontWeight: 600\r\n }\r\n}))\r\n"],"names":["MenuStyled","styled","Menu","_ref","theme","palette","mode","background","paper","text","primary","marginTop","position","overflow","display","flexDirection","backgroundColor","borderRadius","shape","minWidth","maxWidth","boxShadow","animation","color","opacity","transform","content","width","height","top","right","spacing","zIndex","padding","overflowY","scrollbarWidth","scrollbarColor","cartContentClasses","root","header","footer","items","item","itemContent","itemImg","itemTitle","itemPrice","itemTag","getCartContentClasses","key","options","concat","prefix","suffix","CartContentStyled","Box","_ref2","_defineProperty","justifyContent","alignItems","gap","bottom","transition","textDecoration","action","hover","objectFit","marginRight","flex","alpha","grey","fontWeight","margin","left"],"mappings":"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"}
1
+ {"version":3,"file":"styled.js","sources":["../../src/cart/styled.tsx"],"sourcesContent":["import { alpha, Box, Menu, styled } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\nimport type { BoxProps, MenuProps } from '@mui/material'\r\n\r\nexport const MenuStyled: ComponentType<MenuProps> = styled(Menu)(({ theme }) => ({\r\n '--color-bg': theme.palette.mode === 'dark' ? '#323234' : theme.palette.background.paper,\r\n '--color-text': theme.palette.text.primary,\r\n\r\n marginTop: '45px',\r\n '.MuiPaper-root': {\r\n position: 'relative',\r\n overflow: 'visible',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n backgroundColor: 'var(--color-bg, #000000)',\r\n borderRadius: theme.shape.borderRadius,\r\n minWidth: '280px',\r\n maxWidth: '550px',\r\n boxShadow: `0 1px 1px rgba(0, 0, 0, 0.05), 0 2px 2px rgba(0, 0, 0, 0.2), 0 4px 4px rgba(0, 0, 0, 0.15), 0 8px 8px rgba(0, 0, 0, 0.05)`,\r\n animation: 'fadeInDown 0.3s ease-out',\r\n marginTop: '8px',\r\n color: 'var(--color-text, #000000)',\r\n\r\n '@keyframes fadeInDown': {\r\n '0%': { opacity: 0, transform: 'translateY(-10px)' },\r\n '100%': { opacity: 1, transform: 'translateY(0)' }\r\n },\r\n\r\n '&::before': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n backgroundColor: 'var(--color-bg, #ffffff)',\r\n width: '10px',\r\n height: '10px',\r\n top: '-4px',\r\n right: theme.spacing(1),\r\n transform: 'translateX(-50%) rotate(45deg)',\r\n zIndex: 0\r\n }\r\n },\r\n '.MuiBackdrop-root': { backgroundColor: 'transparent' },\r\n '.MuiList-root': {\r\n padding: 0,\r\n height: '100%',\r\n overflowY: 'auto',\r\n '&::-webkit-scrollbar': { width: '6px', background: 'transparent' },\r\n '&::-webkit-scrollbar-thumb': { background: '#e0e0e0', borderRadius: '8px' },\r\n '&::-webkit-scrollbar-thumb:hover': { background: '#bdbdbd' },\r\n '&': { scrollbarWidth: 'thin', scrollbarColor: '#e0e0e0 transparent' }\r\n }\r\n}))\r\n\r\nexport const cartContentClasses = {\r\n root: 'CartContent-root',\r\n header: 'CartContent-header',\r\n footer: 'CartContent-footer',\r\n items: 'CartContent-items',\r\n item: 'CartContent-item',\r\n itemContent: 'CartContent-itemContent',\r\n itemImg: 'CartContent-itemImg',\r\n itemTitle: 'CartContent-itemTitle',\r\n itemPrice: 'CartContent-itemPrice',\r\n itemTag: 'CartContent-itemTag'\r\n}\r\n\r\nconst getCartContentClasses = (key: keyof typeof cartContentClasses, options?: { prefix?: string; suffix?: string }) => {\r\n return `${options?.prefix || ''}.${cartContentClasses[key]}${options?.suffix || ''}`\r\n}\r\n\r\nexport const CartContentStyled: ComponentType<BoxProps> = styled(Box)(({ theme }) => ({\r\n '--height-item': '80px',\r\n [getCartContentClasses('root', { prefix: '&' })]: { height: '100%' },\r\n [getCartContentClasses('header')]: {\r\n padding: '12px 16px',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n gap: theme.spacing(5),\r\n position: 'sticky',\r\n top: 0,\r\n background: 'var(--color-bg, #323234)',\r\n zIndex: 2,\r\n boxShadow: '0px 0.5px 5px 0px rgba(0, 0, 0, 0.15)'\r\n },\r\n [getCartContentClasses('footer')]: {\r\n padding: '6px 12px',\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n position: 'sticky',\r\n bottom: 0,\r\n background: 'var(--color-bg, #323234)',\r\n zIndex: 1,\r\n boxShadow: '0px 0.5px 5px 0px rgba(0, 0, 0, 0.15)'\r\n },\r\n [getCartContentClasses('items')]: { overflowY: 'auto', height: '100%' },\r\n [getCartContentClasses('item')]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '8px 12px',\r\n transition: '0.3s',\r\n height: 'var(--height-item)',\r\n '& a': { textDecoration: 'none' },\r\n '&:hover': { background: theme.palette.action.hover },\r\n '&:hover a': { textDecoration: 'underline' }\r\n },\r\n [getCartContentClasses('itemImg')]: {\r\n width: '60px',\r\n height: '60px',\r\n borderRadius: '6px',\r\n objectFit: 'cover',\r\n marginRight: '12px',\r\n flex: '0 0 auto',\r\n backgroundColor: alpha(theme.palette.grey[400], 0.2)\r\n },\r\n [getCartContentClasses('itemContent')]: {\r\n flex: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n minWidth: 0,\r\n position: 'relative',\r\n marginRight: theme.spacing(1.5)\r\n },\r\n [getCartContentClasses('itemTitle')]: {\r\n color: 'var(--color-text, #fff)',\r\n fontWeight: 600,\r\n flex: 1,\r\n width: '100%',\r\n marginRight: theme.spacing(1),\r\n padding: theme.spacing(2, 0),\r\n minWidth: 0,\r\n maxWidth: '300px'\r\n },\r\n [getCartContentClasses('itemTitle', { prefix: 'a' })]: {\r\n textDecoration: 'none',\r\n '&:hover': { textDecoration: 'underline' }\r\n },\r\n [getCartContentClasses('itemTag')]: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n fontWeight: 600\r\n }\r\n}))\r\n"],"names":["MenuStyled","styled","Menu","_ref","theme","palette","mode","background","paper","text","primary","marginTop","position","overflow","display","flexDirection","backgroundColor","borderRadius","shape","minWidth","maxWidth","boxShadow","animation","color","opacity","transform","content","width","height","top","right","spacing","zIndex","padding","overflowY","scrollbarWidth","scrollbarColor","cartContentClasses","root","header","footer","items","item","itemContent","itemImg","itemTitle","itemPrice","itemTag","getCartContentClasses","key","options","concat","prefix","suffix","CartContentStyled","Box","_ref2","_defineProperty","justifyContent","alignItems","gap","bottom","transition","textDecoration","action","hover","objectFit","marginRight","flex","alpha","grey","fontWeight","left"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{inherits as r,createClass as e,classCallCheck as t,callSuper as n,defineProperty as o,objectSpread2 as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as l,jsx as a}from"react/jsx-runtime";import{Component as c,Fragment as s}from"react";import{ImageWithFallback as d}from"dinocollab-core/components";import{Badge as m,Typography as u,Divider as p,Button as h,Box as f,IconButton as v}from"@mui/material";import C from"@mui/icons-material/Remove";import g from"@mui/icons-material/ShoppingCartOutlined";import x from"@mui/icons-material/ShoppingCartCheckout";import{getTotalData as b}from"./helpers.js";import{IconButtonDark as y}from"../components/buttons.js";import{NoDataPanel as k}from"../components/no-data-panel.js";import{MenuStyled as P,CartContentStyled as T,cartContentClasses as S}from"./styled.js";var N=function(){function N(r){var e;return t(this,N),e=n(this,N,[r]),o(e,"render",function(){var r;return l(s,{children:[a(y,{onClick:function(r){return e.onOpen(r.currentTarget)},children:a(m,{badgeContent:e.state.hydrated&&null!==(r=e.carts.length)&&void 0!==r?r:0,color:"error",children:a(g,{fontSize:"small"})})}),a(P,{disableScrollLock:!0,anchorEl:e.state.anchorEl,open:Boolean(e.state.anchorEl),onClose:e.onClose,anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},MenuListProps:{component:"div"},children:e.renderContent()})]})}),o(e,"renderContent",function(){var r,t=b(e.carts);return l(T,{children:[l("div",{className:S.header,children:[l(u,{variant:"h6",component:"span",sx:{flex:1},children:["Your Cart (",null!==(r=t.quantity)&&void 0!==r?r:0," items)"]}),l(u,{variant:"h6",component:"span",children:["Total: $ ",t.price.toFixed(2)]})]}),a(p,{}),l("div",{className:S.items,children:[e.carts.map(function(r,t){return a(s,{children:e.renderItem(r)},"key"+t)}),e.carts.length<1&&a(k,{title:"Your cart is empty",subTitle:"Try adding some products",sx:{height:"100%",m:1}})]}),a(p,{}),a("div",{className:S.footer,children:a(h,i(i(i({},e.props.hrefCart?{component:"a",href:e.props.hrefCart}:{}),{},{color:"inherit",endIcon:a(x,{}),onClick:function(r){e.onClose(),e.props.onMoveToCartClick&&e.props.onMoveToCartClick(r)},disabled:e.carts.length<1},e.props.buttonMoveToCartProps),{},{children:"Show in cart"}))})]})}),o(e,"renderTitle",function(r){var t,n=e.props,o=n.itemTitleProps,l=n.itemTitlePropsGetter,c=l?l(r,e.onClose):null!=o?o:{};return a(u,i(i({className:S.itemTitle,noWrap:!0,variant:"subtitle1"},c),{},{children:null!==(t=r.ProductName)&&void 0!==t?t:"Unknown Product"}))}),o(e,"renderItem",function(r){var t,n,o,i;return l("div",{className:S.item,children:[a(d,{className:S.itemImg,src:null==r?void 0:r.PictureUrl,title:null==r?void 0:r.PictureUrl,fallbackSrc:"images/default-video.webp",alt:"product-picture"}),l("div",{className:S.itemContent,children:[a(u,{className:S.itemTag,variant:"caption",sx:{color:null!==(t=r.PriceColor)&&void 0!==t?t:"#000"},children:null!==(n=r.PriceName)&&void 0!==n?n:"Unknown Price"}),e.renderTitle(r),l(f,{sx:{display:"flex",alignItems:"flex-end",gap:"2px",justifyContent:"flex-end"},children:[l(u,{variant:"subtitle1",children:["$ ",null!==(o=r.Price)&&void 0!==o?o:0]}),l(u,{variant:"body1",sx:{fontSize:"14px",mb:"3px",color:"#818181"},children:["x",null!==(i=r.Amount)&&void 0!==i?i:0," urls"]})]})]}),a(v,{size:"small",onClick:function(){var t,n;return null===(t=(n=e.props).onRemoveCart)||void 0===t?void 0:t.call(n,r)},sx:{color:"#818181"},children:a(C,{})})]})}),o(e,"onOpen",function(r){e.setState({anchorEl:r})}),o(e,"onClose",function(){e.setState({anchorEl:null})}),e.state={anchorEl:null,hydrated:!1},e}return r(N,c),e(N,[{key:"carts",get:function(){var r;return null!==(r=this.props.carts)&&void 0!==r?r:[]}},{key:"componentDidMount",value:function(){this.setState({hydrated:!0})}}])}(),j=function(r){var e=function(e){return a(N,i(i({},r),e))};return e.displayName="CartWidget",e};export{N as CartWidget,j as createCartWidget};
1
+ import{inherits as r,createClass as e,classCallCheck as t,callSuper as n,defineProperty as o,objectSpread2 as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as l,jsx as a}from"react/jsx-runtime";import{Component as c,Fragment as s}from"react";import{ImageWithFallback as d}from"dinocollab-core/components";import{Badge as p,Typography as u,Divider as m,Button as h,Box as v}from"@mui/material";import f from"@mui/icons-material/ShoppingCartOutlined";import C from"@mui/icons-material/ShoppingCartCheckout";import{getTotalData as g}from"./helpers.js";import{MenuStyled as x,CartContentStyled as b,cartContentClasses as y}from"./styled.js";import{IconButtonDark as P,IconButtonConfirm as k}from"../components/buttons.js";import{NoDataPanel as T}from"../components/no-data-panel.js";var S=function(){function S(r){var e;return t(this,S),e=n(this,S,[r]),o(e,"render",function(){var r;return l(s,{children:[a(P,{onClick:function(r){return e.onOpen(r.currentTarget)},children:a(p,{badgeContent:e.state.hydrated&&null!==(r=e.carts.length)&&void 0!==r?r:0,color:"error",children:a(f,{fontSize:"small"})})}),a(x,{disableScrollLock:!0,anchorEl:e.state.anchorEl,open:Boolean(e.state.anchorEl),onClose:e.onClose,anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},MenuListProps:{component:"div"},children:e.renderContent()})]})}),o(e,"renderContent",function(){var r,t=g(e.carts);return l(b,{children:[l("div",{className:y.header,children:[l(u,{variant:"h6",component:"span",sx:{flex:1},children:["Your Cart (",null!==(r=t.quantity)&&void 0!==r?r:0," items)"]}),l(u,{variant:"h6",component:"span",children:["Total: $ ",t.price.toFixed(2)]})]}),a(m,{}),l("div",{className:y.items,children:[e.carts.map(function(r,t){return a(s,{children:e.renderItem(r)},"key"+t)}),e.carts.length<1&&a(T,{title:"Your cart is empty",subTitle:"Try adding some products",sx:{height:"100%",m:1}})]}),a(m,{}),a("div",{className:y.footer,children:a(h,i(i(i({},e.props.hrefCart?{component:"a",href:e.props.hrefCart}:{}),{},{color:"inherit",endIcon:a(C,{}),onClick:function(r){e.onClose(),e.props.onMoveToCartClick&&e.props.onMoveToCartClick(r)},disabled:e.carts.length<1},e.props.buttonMoveToCartProps),{},{children:"Show in cart"}))})]})}),o(e,"renderTitle",function(r){var t,n=e.props,o=n.itemTitleProps,l=n.itemTitlePropsGetter,c=l?l(r,e.onClose):null!=o?o:{},s=null!==(t=r.ProductName)&&void 0!==t?t:"Unknown Product";return a(u,i(i({className:y.itemTitle,noWrap:!0,variant:"subtitle1",title:s},c),{},{children:s}))}),o(e,"renderItem",function(r){var t,n,o,i;return l("div",{className:y.item,children:[a(d,{className:y.itemImg,src:null==r?void 0:r.PictureUrl,title:null==r?void 0:r.PictureUrl,fallbackSrc:"images/default-video.webp",alt:"product-picture"}),l("div",{className:y.itemContent,children:[a(u,{className:y.itemTag,variant:"caption",sx:{color:null!==(t=r.PriceColor)&&void 0!==t?t:"#000"},children:null!==(n=r.PriceName)&&void 0!==n?n:"Unknown Price"}),e.renderTitle(r),l(v,{sx:{display:"flex",alignItems:"flex-end",gap:"2px",justifyContent:"flex-end"},children:[l(u,{variant:"subtitle1",children:["$ ",null!==(o=r.Price)&&void 0!==o?o:0]}),l(u,{variant:"body1",sx:{fontSize:"14px",mb:"3px",color:"#818181"},children:["x",null!==(i=r.Amount)&&void 0!==i?i:0," urls"]})]})]}),a(k,{onAccept:function(){var t,n;return null===(t=(n=e.props).onRemoveCart)||void 0===t?void 0:t.call(n,r)},slots:{removeProps:{sx:{color:"#818181"}}}})]})}),o(e,"onOpen",function(r){e.setState({anchorEl:r})}),o(e,"onClose",function(){e.setState({anchorEl:null})}),e.state={anchorEl:null,hydrated:!1},e}return r(S,c),e(S,[{key:"carts",get:function(){var r;return null!==(r=this.props.carts)&&void 0!==r?r:[]}},{key:"componentDidMount",value:function(){this.setState({hydrated:!0})}}])}(),N=function(r){var e=function(e){return a(S,i(i({},r),e))};return e.displayName="CartWidget",e};export{S as CartWidget,N as createCartWidget};
2
2
  //# sourceMappingURL=widget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"widget.js","sources":["../../src/cart/widget.tsx"],"sourcesContent":["import { Component, Fragment } from 'react'\r\nimport { ImageWithFallback } from 'dinocollab-core/components'\r\nimport { Badge, Box, Button, ButtonProps, Divider, IconButton, Typography } from '@mui/material'\r\nimport type { FC } from 'react'\r\nimport type { TypographyProps } from '@mui/material'\r\nimport RemoveIcon from '@mui/icons-material/Remove'\r\nimport ShoppingCartOutlinedIcon from '@mui/icons-material/ShoppingCartOutlined'\r\nimport ShoppingCartCheckoutIcon from '@mui/icons-material/ShoppingCartCheckout'\r\nimport { ICartItem } from './types'\r\nimport { getTotalData } from './helpers'\r\nimport { IAppSiteBaseUrl } from '../types'\r\nimport { IconButtonDark, NoDataPanel } from '../components'\r\nimport { cartContentClasses, CartContentStyled, MenuStyled } from './styled'\r\n\r\ntype ITypographyProps = TypographyProps & { [key: string]: any }\r\n\r\ninterface ICartWidgetProps {\r\n baseUrl: IAppSiteBaseUrl\r\n carts?: ICartItem[]\r\n hrefCart?: string\r\n buttonMoveToCartProps?: ButtonProps & { [key: string]: any }\r\n storageKey?: string\r\n onRemoveCart?: (item: ICartItem) => void\r\n onMoveToCartClick?: (e: React.MouseEvent<HTMLAnchorElement | HTMLButtonElement, MouseEvent>) => void\r\n itemTitleProps?: ITypographyProps\r\n itemTitlePropsGetter?: (item: ICartItem, close?: () => void) => ITypographyProps\r\n}\r\n\r\ninterface ICartWidgetState {\r\n anchorEl: HTMLElement | null\r\n hydrated: boolean\r\n}\r\n\r\nexport class CartWidget extends Component<ICartWidgetProps, ICartWidgetState> {\r\n constructor(props: ICartWidgetProps) {\r\n super(props)\r\n this.state = { anchorEl: null, hydrated: false }\r\n }\r\n\r\n get carts() {\r\n return this.props.carts ?? []\r\n }\r\n\r\n componentDidMount() {\r\n // When mounted on the client, set hydrated = true\r\n this.setState({ hydrated: true })\r\n }\r\n\r\n render = () => (\r\n <Fragment>\r\n <IconButtonDark onClick={(e) => this.onOpen(e.currentTarget)}>\r\n <Badge badgeContent={this.state.hydrated ? this.carts.length ?? 0 : 0} color='error'>\r\n <ShoppingCartOutlinedIcon fontSize='small' />\r\n </Badge>\r\n </IconButtonDark>\r\n <MenuStyled\r\n disableScrollLock\r\n anchorEl={this.state.anchorEl}\r\n open={Boolean(this.state.anchorEl)}\r\n onClose={this.onClose}\r\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n MenuListProps={{ component: 'div' }}\r\n >\r\n {this.renderContent()}\r\n </MenuStyled>\r\n </Fragment>\r\n )\r\n\r\n renderContent = () => {\r\n const totalData = getTotalData(this.carts)\r\n return (\r\n <CartContentStyled>\r\n <div className={cartContentClasses.header}>\r\n <Typography variant='h6' component='span' sx={{ flex: 1 }}>\r\n Your Cart ({totalData.quantity ?? 0} items)\r\n </Typography>\r\n <Typography variant='h6' component='span'>\r\n Total: $ {totalData.price.toFixed(2)}\r\n </Typography>\r\n </div>\r\n <Divider />\r\n <div className={cartContentClasses.items}>\r\n {this.carts.map((x, i) => (\r\n <Fragment key={'key' + i}>{this.renderItem(x)}</Fragment>\r\n ))}\r\n {this.carts.length < 1 && <NoDataPanel title='Your cart is empty' subTitle='Try adding some products' sx={{ height: '100%', m: 1 }} />}\r\n </div>\r\n <Divider />\r\n <div className={cartContentClasses.footer}>\r\n <Button\r\n {...(this.props.hrefCart ? { component: 'a', href: this.props.hrefCart } : {})}\r\n color='inherit'\r\n endIcon={<ShoppingCartCheckoutIcon />}\r\n onClick={(event) => {\r\n this.onClose()\r\n if (this.props.onMoveToCartClick) {\r\n this.props.onMoveToCartClick(event as React.MouseEvent<HTMLAnchorElement | HTMLButtonElement, MouseEvent>)\r\n }\r\n }}\r\n disabled={this.carts.length < 1}\r\n {...this.props.buttonMoveToCartProps}\r\n >\r\n Show in cart\r\n </Button>\r\n </div>\r\n </CartContentStyled>\r\n )\r\n }\r\n\r\n renderTitle = (item: ICartItem) => {\r\n const { itemTitleProps, itemTitlePropsGetter } = this.props\r\n const currentProps: ITypographyProps = itemTitlePropsGetter ? itemTitlePropsGetter(item, this.onClose) : itemTitleProps ?? {}\r\n return (\r\n <Typography className={cartContentClasses.itemTitle} noWrap variant='subtitle1' {...currentProps}>\r\n {item.ProductName ?? 'Unknown Product'}\r\n </Typography>\r\n )\r\n }\r\n\r\n renderItem = (item: ICartItem) => (\r\n <div className={cartContentClasses.item}>\r\n <ImageWithFallback\r\n className={cartContentClasses.itemImg}\r\n src={item?.PictureUrl}\r\n title={item?.PictureUrl}\r\n fallbackSrc='images/default-video.webp'\r\n alt='product-picture'\r\n />\r\n <div className={cartContentClasses.itemContent}>\r\n <Typography className={cartContentClasses.itemTag} variant='caption' sx={{ color: item.PriceColor ?? '#000' }}>\r\n {item.PriceName ?? 'Unknown Price'}\r\n </Typography>\r\n {this.renderTitle(item)}\r\n <Box sx={{ display: 'flex', alignItems: 'flex-end', gap: '2px', justifyContent: 'flex-end' }}>\r\n <Typography variant='subtitle1'>$ {item.Price ?? 0}</Typography>\r\n <Typography variant='body1' sx={{ fontSize: '14px', mb: '3px', color: '#818181' }}>\r\n x{item.Amount ?? 0} urls\r\n </Typography>\r\n </Box>\r\n </div>\r\n <IconButton size='small' onClick={() => this.props.onRemoveCart?.(item)} sx={{ color: '#818181' }}>\r\n <RemoveIcon />\r\n </IconButton>\r\n </div>\r\n )\r\n\r\n onOpen = (target: HTMLElement) => {\r\n this.setState({ anchorEl: target })\r\n }\r\n\r\n onClose = () => {\r\n this.setState({ anchorEl: null })\r\n }\r\n}\r\n\r\nexport const createCartWidget = (params: ICartWidgetProps) => {\r\n const _CartWidget: FC<Partial<ICartWidgetProps>> = (props) => <CartWidget {...params} {...props} />\r\n _CartWidget.displayName = 'CartWidget'\r\n return _CartWidget\r\n}\r\n"],"names":["CartWidget","props","_this","_classCallCheck","_callSuper","_defineProperty","_this$carts$length","_jsxs","Fragment","children","_jsx","IconButtonDark","onClick","e","onOpen","currentTarget","Badge","badgeContent","state","hydrated","carts","length","color","ShoppingCartOutlinedIcon","fontSize","MenuStyled","disableScrollLock","anchorEl","open","Boolean","onClose","anchorOrigin","vertical","horizontal","transformOrigin","MenuListProps","component","renderContent","_totalData$quantity","totalData","getTotalData","CartContentStyled","className","cartContentClasses","header","Typography","variant","sx","flex","quantity","price","toFixed","Divider","items","map","x","i","renderItem","NoDataPanel","title","subTitle","height","m","footer","Button","_objectSpread","hrefCart","href","endIcon","ShoppingCartCheckoutIcon","event","onMoveToCartClick","disabled","buttonMoveToCartProps","item","_item$ProductName","_this$props","itemTitleProps","itemTitlePropsGetter","currentProps","itemTitle","noWrap","ProductName","_item$PriceColor","_item$PriceName","_item$Price","_item$Amount","ImageWithFallback","itemImg","src","PictureUrl","fallbackSrc","alt","itemContent","itemTag","PriceColor","PriceName","renderTitle","Box","display","alignItems","gap","justifyContent","Price","mb","Amount","IconButton","size","_this$props$onRemoveC","_this$props2","onRemoveCart","call","RemoveIcon","target","setState","_inherits","Component","_createClass","key","get","_this$props$carts","this","value","createCartWidget","params","_CartWidget","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"widget.js","sources":["../../src/cart/widget.tsx"],"sourcesContent":["import { Component, Fragment } from 'react'\r\nimport { ImageWithFallback } from 'dinocollab-core/components'\r\nimport { Badge, Box, Button, ButtonProps, Divider, IconButton, Typography } from '@mui/material'\r\nimport type { FC } from 'react'\r\nimport type { TypographyProps } from '@mui/material'\r\nimport RemoveIcon from '@mui/icons-material/Remove'\r\nimport ShoppingCartOutlinedIcon from '@mui/icons-material/ShoppingCartOutlined'\r\nimport ShoppingCartCheckoutIcon from '@mui/icons-material/ShoppingCartCheckout'\r\nimport { ICartItem } from './types'\r\nimport { getTotalData } from './helpers'\r\nimport { IAppSiteBaseUrl } from '../types'\r\nimport { IconButtonConfirm, IconButtonDark, NoDataPanel } from '../components'\r\nimport { cartContentClasses, CartContentStyled, MenuStyled } from './styled'\r\n\r\ntype ITypographyProps = TypographyProps & { [key: string]: any }\r\n\r\ninterface ICartWidgetProps {\r\n baseUrl: IAppSiteBaseUrl\r\n carts?: ICartItem[]\r\n hrefCart?: string\r\n buttonMoveToCartProps?: ButtonProps & { [key: string]: any }\r\n storageKey?: string\r\n onRemoveCart?: (item: ICartItem) => void\r\n onMoveToCartClick?: (e: React.MouseEvent<HTMLAnchorElement | HTMLButtonElement, MouseEvent>) => void\r\n itemTitleProps?: ITypographyProps\r\n itemTitlePropsGetter?: (item: ICartItem, close?: () => void) => ITypographyProps\r\n}\r\n\r\ninterface ICartWidgetState {\r\n anchorEl: HTMLElement | null\r\n hydrated: boolean\r\n}\r\n\r\nexport class CartWidget extends Component<ICartWidgetProps, ICartWidgetState> {\r\n constructor(props: ICartWidgetProps) {\r\n super(props)\r\n this.state = { anchorEl: null, hydrated: false }\r\n }\r\n\r\n get carts() {\r\n return this.props.carts ?? []\r\n }\r\n\r\n componentDidMount() {\r\n // When mounted on the client, set hydrated = true\r\n this.setState({ hydrated: true })\r\n }\r\n\r\n render = () => (\r\n <Fragment>\r\n <IconButtonDark onClick={(e) => this.onOpen(e.currentTarget)}>\r\n <Badge badgeContent={this.state.hydrated ? this.carts.length ?? 0 : 0} color='error'>\r\n <ShoppingCartOutlinedIcon fontSize='small' />\r\n </Badge>\r\n </IconButtonDark>\r\n <MenuStyled\r\n disableScrollLock\r\n anchorEl={this.state.anchorEl}\r\n open={Boolean(this.state.anchorEl)}\r\n onClose={this.onClose}\r\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n MenuListProps={{ component: 'div' }}\r\n >\r\n {this.renderContent()}\r\n </MenuStyled>\r\n </Fragment>\r\n )\r\n\r\n renderContent = () => {\r\n const totalData = getTotalData(this.carts)\r\n return (\r\n <CartContentStyled>\r\n <div className={cartContentClasses.header}>\r\n <Typography variant='h6' component='span' sx={{ flex: 1 }}>\r\n Your Cart ({totalData.quantity ?? 0} items)\r\n </Typography>\r\n <Typography variant='h6' component='span'>\r\n Total: $ {totalData.price.toFixed(2)}\r\n </Typography>\r\n </div>\r\n <Divider />\r\n <div className={cartContentClasses.items}>\r\n {this.carts.map((x, i) => (\r\n <Fragment key={'key' + i}>{this.renderItem(x)}</Fragment>\r\n ))}\r\n {this.carts.length < 1 && <NoDataPanel title='Your cart is empty' subTitle='Try adding some products' sx={{ height: '100%', m: 1 }} />}\r\n </div>\r\n <Divider />\r\n <div className={cartContentClasses.footer}>\r\n <Button\r\n {...(this.props.hrefCart ? { component: 'a', href: this.props.hrefCart } : {})}\r\n color='inherit'\r\n endIcon={<ShoppingCartCheckoutIcon />}\r\n onClick={(event) => {\r\n this.onClose()\r\n if (this.props.onMoveToCartClick) {\r\n this.props.onMoveToCartClick(event as React.MouseEvent<HTMLAnchorElement | HTMLButtonElement, MouseEvent>)\r\n }\r\n }}\r\n disabled={this.carts.length < 1}\r\n {...this.props.buttonMoveToCartProps}\r\n >\r\n Show in cart\r\n </Button>\r\n </div>\r\n </CartContentStyled>\r\n )\r\n }\r\n\r\n renderTitle = (item: ICartItem) => {\r\n const { itemTitleProps, itemTitlePropsGetter } = this.props\r\n const currentProps: ITypographyProps = itemTitlePropsGetter ? itemTitlePropsGetter(item, this.onClose) : itemTitleProps ?? {}\r\n const name = item.ProductName ?? 'Unknown Product'\r\n return (\r\n <Typography className={cartContentClasses.itemTitle} noWrap variant='subtitle1' title={name} {...currentProps}>\r\n {name}\r\n </Typography>\r\n )\r\n }\r\n\r\n renderItem = (item: ICartItem) => (\r\n <div className={cartContentClasses.item}>\r\n <ImageWithFallback\r\n className={cartContentClasses.itemImg}\r\n src={item?.PictureUrl}\r\n title={item?.PictureUrl}\r\n fallbackSrc='images/default-video.webp'\r\n alt='product-picture'\r\n />\r\n <div className={cartContentClasses.itemContent}>\r\n <Typography className={cartContentClasses.itemTag} variant='caption' sx={{ color: item.PriceColor ?? '#000' }}>\r\n {item.PriceName ?? 'Unknown Price'}\r\n </Typography>\r\n {this.renderTitle(item)}\r\n <Box sx={{ display: 'flex', alignItems: 'flex-end', gap: '2px', justifyContent: 'flex-end' }}>\r\n <Typography variant='subtitle1'>$ {item.Price ?? 0}</Typography>\r\n <Typography variant='body1' sx={{ fontSize: '14px', mb: '3px', color: '#818181' }}>\r\n x{item.Amount ?? 0} urls\r\n </Typography>\r\n </Box>\r\n </div>\r\n <IconButtonConfirm onAccept={() => this.props.onRemoveCart?.(item)} slots={{ removeProps: { sx: { color: '#818181' } } }} />\r\n {/* <IconButton size='small' onClick={() => this.props.onRemoveCart?.(item)} sx={{ color: '#818181' }}>\r\n <RemoveIcon />\r\n </IconButton> */}\r\n </div>\r\n )\r\n\r\n onOpen = (target: HTMLElement) => {\r\n this.setState({ anchorEl: target })\r\n }\r\n\r\n onClose = () => {\r\n this.setState({ anchorEl: null })\r\n }\r\n}\r\n\r\nexport const createCartWidget = (params: ICartWidgetProps) => {\r\n const _CartWidget: FC<Partial<ICartWidgetProps>> = (props) => <CartWidget {...params} {...props} />\r\n _CartWidget.displayName = 'CartWidget'\r\n return _CartWidget\r\n}\r\n"],"names":["CartWidget","props","_this","_classCallCheck","_callSuper","_defineProperty","_this$carts$length","_jsxs","Fragment","children","_jsx","IconButtonDark","onClick","e","onOpen","currentTarget","Badge","badgeContent","state","hydrated","carts","length","color","ShoppingCartOutlinedIcon","fontSize","MenuStyled","disableScrollLock","anchorEl","open","Boolean","onClose","anchorOrigin","vertical","horizontal","transformOrigin","MenuListProps","component","renderContent","_totalData$quantity","totalData","getTotalData","CartContentStyled","className","cartContentClasses","header","Typography","variant","sx","flex","quantity","price","toFixed","Divider","items","map","x","i","renderItem","NoDataPanel","title","subTitle","height","m","footer","Button","_objectSpread","hrefCart","href","endIcon","ShoppingCartCheckoutIcon","event","onMoveToCartClick","disabled","buttonMoveToCartProps","item","_item$ProductName","_this$props","itemTitleProps","itemTitlePropsGetter","currentProps","name","ProductName","itemTitle","noWrap","_item$PriceColor","_item$PriceName","_item$Price","_item$Amount","ImageWithFallback","itemImg","src","PictureUrl","fallbackSrc","alt","itemContent","itemTag","PriceColor","PriceName","renderTitle","Box","display","alignItems","gap","justifyContent","Price","mb","Amount","IconButtonConfirm","onAccept","_this$props$onRemoveC","_this$props2","onRemoveCart","call","slots","removeProps","target","setState","_inherits","Component","_createClass","key","get","_this$props$carts","this","value","createCartWidget","params","_CartWidget","displayName"],"mappings":"0xBAiCaA,IAAAA,aACX,SAAAA,EAAYC,GAAuB,IAAAC,EAEe,OAFfC,OAAAH,GACjCE,EAAAE,EAAAJ,KAAAA,GAAMC,IAAMI,EAAAH,EAaL,SAAA,WAAA,IAAAI,EAAA,OACPC,EAACC,EAAQ,CAAAC,SAAA,CACPC,EAACC,EAAe,CAAAC,QAAS,SAACC,GAAC,OAAKX,EAAKY,OAAOD,EAAEE,cAAc,EAAAN,SAC1DC,EAACM,GAAMC,aAAcf,EAAKgB,MAAMC,UAA4Bb,QAApBA,EAAGJ,EAAKkB,MAAMC,kBAAMf,EAAAA,EAAQ,EAAGgB,MAAM,iBAC3EZ,EAACa,EAAyB,CAAAC,SAAS,cAGvCd,EAACe,EAAU,CACTC,mBAAiB,EACjBC,SAAUzB,EAAKgB,MAAMS,SACrBC,KAAMC,QAAQ3B,EAAKgB,MAAMS,UACzBG,QAAS5B,EAAK4B,QACdC,aAAc,CAAEC,SAAU,MAAOC,WAAY,SAC7CC,gBAAiB,CAAEF,SAAU,MAAOC,WAAY,SAChDE,cAAe,CAAEC,UAAW,OAAO3B,SAElCP,EAAKmC,uBAGXhC,EAAAH,EAAA,gBAEe,WAAK,IAAAoC,EACbC,EAAYC,EAAatC,EAAKkB,OACpC,OACEb,EAACkC,EAAiB,CAAAhC,SAAA,CAChBF,SAAKmC,UAAWC,EAAmBC,iBACjCrC,EAACsC,GAAWC,QAAQ,KAAKV,UAAU,OAAOW,GAAI,CAAEC,KAAM,GACxCvC,SAAA,CAAA,cAAkB,QAAlB6B,EAAAC,EAAUU,gBAAQX,IAAAA,EAAAA,EAAI,EACvB,aACb/B,EAACsC,EAAU,CAACC,QAAQ,KAAKV,UAAU,OACvB3B,SAAA,CAAA,YAAA8B,EAAUW,MAAMC,QAAQ,SAGtCzC,EAAC0C,MACD7C,EAAA,MAAA,CAAKmC,UAAWC,EAAmBU,MAAK5C,SAAA,CACrCP,EAAKkB,MAAMkC,IAAI,SAACC,EAAGC,GAAC,OACnB9C,EAACF,EAA0B,CAAAC,SAAAP,EAAKuD,WAAWF,IAA5B,MAAQC,EAAkC,GAE1DtD,EAAKkB,MAAMC,OAAS,GAAKX,EAACgD,EAAY,CAAAC,MAAM,qBAAqBC,SAAS,2BAA2Bb,GAAI,CAAEc,OAAQ,OAAQC,EAAG,QAEjIpD,EAAC0C,EAAO,CAAA,GACR1C,EAAK,MAAA,CAAAgC,UAAWC,EAAmBoB,gBACjCrD,EAACsD,EAAMC,EAAAA,EAAAA,KACA/D,EAAKD,MAAMiE,SAAW,CAAE9B,UAAW,IAAK+B,KAAMjE,EAAKD,MAAMiE,UAAa,CAAA,GAAE,GAAA,CAC7E5C,MAAM,UACN8C,QAAS1D,EAAC2D,EAA2B,IACrCzD,QAAS,SAAC0D,GACRpE,EAAK4B,UACD5B,EAAKD,MAAMsE,mBACbrE,EAAKD,MAAMsE,kBAAkBD,EAEhC,EACDE,SAAUtE,EAAKkB,MAAMC,OAAS,GAC1BnB,EAAKD,MAAMwE,uBAAqB,CAAA,EAAA,mCAO7CpE,EAAAH,EAEa,cAAA,SAACwE,GAAmB,IAAAC,EAChCC,EAAiD1E,EAAKD,MAA9C4E,EAAcD,EAAdC,eAAgBC,EAAoBF,EAApBE,qBAClBC,EAAiCD,EAAuBA,EAAqBJ,EAAMxE,EAAK4B,SAAW+C,QAAAA,EAAkB,CAAE,EACvHG,EAAuB,QAAnBL,EAAGD,EAAKO,mBAAW,IAAAN,EAAAA,EAAI,kBACjC,OACEjE,EAACmC,EAAUoB,EAAAA,EAAA,CAACvB,UAAWC,EAAmBuC,UAAWC,QAAM,EAACrC,QAAQ,YAAYa,MAAOqB,GAAUD,GAAY,GAAA,CAC1GtE,SAAAuE,OAGN3E,EAAAH,EAEY,aAAA,SAACwE,GAAe,IAAAU,EAAAC,EAAAC,EAAAC,EAAA,OAC3BhF,SAAKmC,UAAWC,EAAmB+B,eACjChE,EAAC8E,GACC9C,UAAWC,EAAmB8C,QAC9BC,IAAKhB,aAAAA,EAAAA,EAAMiB,WACXhC,MAAOe,aAAAA,EAAAA,EAAMiB,WACbC,YAAY,4BACZC,IAAI,oBAENtF,EAAA,MAAA,CAAKmC,UAAWC,EAAmBmD,sBACjCpF,EAACmC,GAAWH,UAAWC,EAAmBoD,QAASjD,QAAQ,UAAUC,GAAI,CAAEzB,MAAsB8D,QAAjBA,EAAEV,EAAKsB,kBAAUZ,IAAAA,EAAAA,EAAI,iBACpFC,UAAdX,EAAKuB,iBAASZ,IAAAA,EAAAA,EAAI,kBAEpBnF,EAAKgG,YAAYxB,GAClBnE,EAAC4F,EAAG,CAACpD,GAAI,CAAEqD,QAAS,OAAQC,WAAY,WAAYC,IAAK,MAAOC,eAAgB,sBAC9EhG,EAACsC,GAAWC,QAAQ,YAAWrC,SAAA,CAAA,KAAc6E,QAAdA,EAAIZ,EAAK8B,aAAKlB,IAAAA,EAAAA,EAAI,KACjD/E,EAACsC,EAAW,CAAAC,QAAQ,QAAQC,GAAI,CAAEvB,SAAU,OAAQiF,GAAI,MAAOnF,MAAO,WAAWb,SAAA,CAAA,IAClE,QADkE8E,EAC7Eb,EAAKgC,cAAMnB,IAAAA,EAAAA,EAAI,EAAC,iBAIxB7E,EAACiG,EAAiB,CAACC,SAAU,WAAF,IAAAC,EAAAC,EAAA,eAAAD,GAAQC,EAAA5G,EAAKD,OAAM8G,oBAAY,IAAAF,OAAA,EAAvBA,EAAAG,KAAAF,EAA0BpC,EAAK,EAAEuC,MAAO,CAAEC,YAAa,CAAEnE,GAAI,CAAEzB,MAAO,oBAK5GjB,EAAAH,EAEQ,SAAA,SAACiH,GACRjH,EAAKkH,SAAS,CAAEzF,SAAUwF,MAC3B9G,EAAAH,EAAA,UAES,WACRA,EAAKkH,SAAS,CAAEzF,SAAU,SAtH1BzB,EAAKgB,MAAQ,CAAES,SAAU,KAAMR,UAAU,GAAOjB,CAClD,CAAC,OAAAmH,EAAArH,EAJ6BsH,GAI7BC,EAAAvH,EAAA,CAAA,CAAAwH,IAAA,QAAAC,IAED,WAAS,IAAAC,EACP,OAAuB,QAAvBA,EAAOC,KAAK1H,MAAMmB,aAAK,IAAAsG,EAAAA,EAAI,EAC7B,GAAC,CAAAF,IAAA,oBAAAI,MAED,WAEED,KAAKP,SAAS,CAAEjG,UAAU,GAC5B,IAAC,IAgHU0G,EAAmB,SAACC,GAC/B,IAAMC,EAA6C,SAAC9H,GAAK,OAAKS,EAACV,EAAUiE,EAAAA,EAAA,CAAA,EAAK6D,GAAY7H,GAAS,EAEnG,OADA8H,EAAYC,YAAc,aACnBD,CACT"}
@@ -1,2 +1,2 @@
1
- import{styled as o,Button as a,IconButton as r}from"@mui/material";var e=o(a)({color:"#fff",padding:"6px 16px",borderRadius:"6px",border:"none",minWidth:"120px",height:"36px",boxShadow:"0 2px 8px rgba(27, 25, 24, 0.2)",background:"linear-gradient(45deg, #d32f2f 0%, #f9a925 70%, #d32f2f 100%)",backgroundSize:"200% auto",transition:"background-position 0.5s ease, box-shadow 0.3s ease, color 0.25s ease","&, .MuiTypography-root":{lineHeight:1,fontWeight:500,textTransform:"unset",fontSize:"16px"},"&:hover":{backgroundPosition:"100% 0",boxShadow:"0 4px 16px rgba(252, 228, 19, 0.23)"},"@keyframes gentleBounceY":{"0%, 5%":{transform:"translateY(0)"},"20%":{transform:"translateY(-3px)"},"30%":{transform:"translateY(-2px)"},"40%":{transform:"translateY(-3px)"},"50%":{transform:"translateY(-2px)"},"75%, 100%":{transform:"translateY(0)"}},"&:not(:hover).animate-bounce":{animation:"gentleBounceY 3s cubic-bezier(0.4, 0.8, 0.4, 1) infinite"}}),n=o(r)({color:"#fff",border:"none",boxShadow:"0 2px 8px rgba(27, 25, 24, 0.2)",background:"linear-gradient(45deg, #d32f2f 0%, #fbc02d 70%, #d32f2f 100%)",backgroundSize:"165% auto",transition:"background-position 0.5s ease, box-shadow 0.3s ease","&:hover":{backgroundPosition:"100% 0",boxShadow:"0 4px 16px rgba(252, 228, 19, 0.23)"}});n.displayName="IconButtonOrange";var t=o(r)(function(o){var a=o.theme;return{color:a.palette.common.white,borderRadius:"8px",padding:"8px",width:"auto","&:hover":{backgroundColor:"rgba(255, 255, 255, 0.08)",color:a.palette.common.white},"&:focus":{backgroundColor:"rgba(255, 255, 255, 0.12)"}}});export{e as ButtonOrange,t as IconButtonDark,n as IconButtonOrange};
1
+ import{slicedToArray as o,objectSpread2 as r}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as a,jsx as e}from"react/jsx-runtime";import{useState as i}from"react";import{styled as n,Button as t,IconButton as s,Box as d}from"@mui/material";import c from"@mui/icons-material/Close";import l from"@mui/icons-material/Check";import p from"@mui/icons-material/Remove";var m=n(t)({color:"#fff",padding:"6px 16px",borderRadius:"6px",border:"none",minWidth:"120px",height:"36px",boxShadow:"0 2px 8px rgba(27, 25, 24, 0.2)",background:"linear-gradient(45deg, #d32f2f 0%, #f9a925 70%, #d32f2f 100%)",backgroundSize:"200% auto",transition:"background-position 0.5s ease, box-shadow 0.3s ease, color 0.25s ease","&, .MuiTypography-root":{lineHeight:1,fontWeight:500,textTransform:"unset",fontSize:"16px"},"&:hover":{backgroundPosition:"100% 0",boxShadow:"0 4px 16px rgba(252, 228, 19, 0.23)"},"@keyframes gentleBounceY":{"0%, 5%":{transform:"translateY(0)"},"20%":{transform:"translateY(-3px)"},"30%":{transform:"translateY(-2px)"},"40%":{transform:"translateY(-3px)"},"50%":{transform:"translateY(-2px)"},"75%, 100%":{transform:"translateY(0)"}},"&:not(:hover).animate-bounce":{animation:"gentleBounceY 3s cubic-bezier(0.4, 0.8, 0.4, 1) infinite"}}),f=n(s)({color:"#fff",border:"none",boxShadow:"0 2px 8px rgba(27, 25, 24, 0.2)",background:"linear-gradient(45deg, #d32f2f 0%, #fbc02d 70%, #d32f2f 100%)",backgroundSize:"165% auto",transition:"background-position 0.5s ease, box-shadow 0.3s ease","&:hover":{backgroundPosition:"100% 0",boxShadow:"0 4px 16px rgba(252, 228, 19, 0.23)"}});f.displayName="IconButtonOrange";var u=n(s)(function(o){var r=o.theme;return{color:r.palette.common.white,borderRadius:"8px",padding:"8px",width:"auto","&:hover":{backgroundColor:"rgba(255, 255, 255, 0.08)",color:r.palette.common.white},"&:focus":{backgroundColor:"rgba(255, 255, 255, 0.12)"}}}),b=function(n){var t=n.onAccept,m=n.size,f=void 0===m?"small":m,u=n.disabled,b=void 0!==u&&u,g=n.slots,x=void 0===g?{}:g,h=i(!1),k=o(h,2),v=k[0],z=k[1];return v?a(d,{sx:{display:"flex",gap:.5},children:[e(s,r(r({size:f,onClick:function(o){o.stopPropagation(),t(),z(!1)},sx:{color:"success.main"},disabled:b},x.confirmProps),{},{children:e(l,{fontSize:f})})),e(s,r(r({size:f,onClick:function(o){o.stopPropagation(),z(!1)},sx:{color:"error.main"},disabled:b},x.cancelProps),{},{children:e(c,{fontSize:f})}))]}):e(s,r(r({size:f,onClick:function(o){o.stopPropagation(),z(!0)},disabled:b,color:"error"},x.removeProps),{},{children:e(p,{fontSize:f})}))};export{m as ButtonOrange,b as IconButtonConfirm,u as IconButtonDark,f as IconButtonOrange};
2
2
  //# sourceMappingURL=buttons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buttons.js","sources":["../../src/components/buttons.tsx"],"sourcesContent":["import { Button, IconButton, styled } from '@mui/material'\r\nimport type { ButtonProps, IconButtonProps, Theme } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\n\r\nexport const ButtonOrange: ComponentType<ButtonProps & { [key: string]: any }> = styled(Button)({\r\n color: '#fff',\r\n padding: '6px 16px',\r\n borderRadius: '6px',\r\n border: 'none',\r\n minWidth: '120px',\r\n height: '36px',\r\n boxShadow: '0 2px 8px rgba(27, 25, 24, 0.2)',\r\n background: 'linear-gradient(45deg, #d32f2f 0%, #f9a925 70%, #d32f2f 100%)',\r\n backgroundSize: '200% auto',\r\n transition: 'background-position 0.5s ease, box-shadow 0.3s ease, color 0.25s ease',\r\n '&, .MuiTypography-root': {\r\n lineHeight: 1,\r\n fontWeight: 500,\r\n textTransform: 'unset',\r\n fontSize: '16px'\r\n },\r\n '&:hover': {\r\n backgroundPosition: '100% 0',\r\n boxShadow: '0 4px 16px rgba(252, 228, 19, 0.23)'\r\n },\r\n '@keyframes gentleBounceY': {\r\n '0%, 5%': { transform: 'translateY(0)' },\r\n '20%': { transform: 'translateY(-3px)' },\r\n '30%': { transform: 'translateY(-2px)' },\r\n '40%': { transform: 'translateY(-3px)' },\r\n '50%': { transform: 'translateY(-2px)' },\r\n '75%, 100%': { transform: 'translateY(0)' }\r\n },\r\n '&:not(:hover).animate-bounce': {\r\n animation: 'gentleBounceY 3s cubic-bezier(0.4, 0.8, 0.4, 1) infinite'\r\n }\r\n})\r\n\r\nexport const IconButtonOrange: ComponentType<IconButtonProps & { [key: string]: any }> = styled(IconButton)({\r\n color: '#fff',\r\n border: 'none',\r\n boxShadow: '0 2px 8px rgba(27, 25, 24, 0.2)',\r\n background: 'linear-gradient(45deg, #d32f2f 0%, #fbc02d 70%, #d32f2f 100%)',\r\n backgroundSize: '165% auto',\r\n transition: 'background-position 0.5s ease, box-shadow 0.3s ease',\r\n '&:hover': {\r\n backgroundPosition: '100% 0',\r\n boxShadow: '0 4px 16px rgba(252, 228, 19, 0.23)'\r\n }\r\n})\r\nIconButtonOrange.displayName = 'IconButtonOrange'\r\n\r\n// export const IconButtonSquareDark: ComponentType<IconButtonProps & { [key: string]: any }> = styled(IconButton)(({ theme }) => ({\r\n// color: '#fff',\r\n// border: 'none',\r\n// boxShadow: '0 2px 8px rgba(27, 25, 24, 0.2)',\r\n// background: 'linear-gradient(45deg, #333 0%, #555 70%, #333 100%)',\r\n// backgroundSize: '165% auto',\r\n// transition: 'background-position 0.5s ease, box-shadow 0.3s ease',\r\n// '&:hover': {\r\n// backgroundPosition: '100% 0',\r\n// boxShadow: '0 4px 16px rgba(85, 85, 85, 0.23)'\r\n// }\r\n// }))\r\n// IconButtonSquareDark.displayName = 'IconButtonCirDark'\r\n\r\n// Custom IconButton for dark background\r\nexport const IconButtonDark: ComponentType<IconButtonProps> = styled(IconButton)(({ theme }: { theme: Theme }) => ({\r\n color: theme.palette.common.white,\r\n borderRadius: '8px',\r\n padding: '8px',\r\n width: 'auto',\r\n '&:hover': {\r\n backgroundColor: 'rgba(255, 255, 255, 0.08)',\r\n color: theme.palette.common.white\r\n },\r\n '&:focus': {\r\n backgroundColor: 'rgba(255, 255, 255, 0.12)'\r\n }\r\n}))\r\n"],"names":["ButtonOrange","styled","Button","color","padding","borderRadius","border","minWidth","height","boxShadow","background","backgroundSize","transition","lineHeight","fontWeight","textTransform","fontSize","backgroundPosition","transform","animation","IconButtonOrange","IconButton","displayName","IconButtonDark","_ref","theme","palette","common","white","width","backgroundColor"],"mappings":"uEAIaA,EAAoEC,EAAOC,EAAPD,CAAe,CAC9FE,MAAO,OACPC,QAAS,WACTC,aAAc,MACdC,OAAQ,OACRC,SAAU,QACVC,OAAQ,OACRC,UAAW,kCACXC,WAAY,gEACZC,eAAgB,YAChBC,WAAY,wEACZ,yBAA0B,CACxBC,WAAY,EACZC,WAAY,IACZC,cAAe,QACfC,SAAU,QAEZ,UAAW,CACTC,mBAAoB,SACpBR,UAAW,uCAEb,2BAA4B,CAC1B,SAAU,CAAES,UAAW,iBACvB,MAAO,CAAEA,UAAW,oBACpB,MAAO,CAAEA,UAAW,oBACpB,MAAO,CAAEA,UAAW,oBACpB,MAAO,CAAEA,UAAW,oBACpB,YAAa,CAAEA,UAAW,kBAE5B,+BAAgC,CAC9BC,UAAW,8DAIFC,EAA4EnB,EAAOoB,EAAPpB,CAAmB,CAC1GE,MAAO,OACPG,OAAQ,OACRG,UAAW,kCACXC,WAAY,gEACZC,eAAgB,YAChBC,WAAY,sDACZ,UAAW,CACTK,mBAAoB,SACpBR,UAAW,yCAGfW,EAAiBE,YAAc,mBAiBxB,IAAMC,EAAiDtB,EAAOoB,EAAPpB,CAAmB,SAAAuB,GAAA,IAAGC,EAAKD,EAALC,MAAK,MAA0B,CACjHtB,MAAOsB,EAAMC,QAAQC,OAAOC,MAC5BvB,aAAc,MACdD,QAAS,MACTyB,MAAO,OACP,UAAW,CACTC,gBAAiB,4BACjB3B,MAAOsB,EAAMC,QAAQC,OAAOC,OAE9B,UAAW,CACTE,gBAAiB,6BAEpB"}
1
+ {"version":3,"file":"buttons.js","sources":["../../src/components/buttons.tsx"],"sourcesContent":["import { useState } from 'react'\r\nimport { Button, IconButton, styled, Box } from '@mui/material'\r\nimport type { ComponentType, FC } from 'react'\r\nimport type { ButtonProps, IconButtonProps, Theme } from '@mui/material'\r\nimport CloseIcon from '@mui/icons-material/Close'\r\nimport CheckIcon from '@mui/icons-material/Check'\r\nimport RemoveIcon from '@mui/icons-material/Remove'\r\n\r\nexport const ButtonOrange: ComponentType<ButtonProps & { [key: string]: any }> = styled(Button)({\r\n color: '#fff',\r\n padding: '6px 16px',\r\n borderRadius: '6px',\r\n border: 'none',\r\n minWidth: '120px',\r\n height: '36px',\r\n boxShadow: '0 2px 8px rgba(27, 25, 24, 0.2)',\r\n background: 'linear-gradient(45deg, #d32f2f 0%, #f9a925 70%, #d32f2f 100%)',\r\n backgroundSize: '200% auto',\r\n transition: 'background-position 0.5s ease, box-shadow 0.3s ease, color 0.25s ease',\r\n '&, .MuiTypography-root': {\r\n lineHeight: 1,\r\n fontWeight: 500,\r\n textTransform: 'unset',\r\n fontSize: '16px'\r\n },\r\n '&:hover': {\r\n backgroundPosition: '100% 0',\r\n boxShadow: '0 4px 16px rgba(252, 228, 19, 0.23)'\r\n },\r\n '@keyframes gentleBounceY': {\r\n '0%, 5%': { transform: 'translateY(0)' },\r\n '20%': { transform: 'translateY(-3px)' },\r\n '30%': { transform: 'translateY(-2px)' },\r\n '40%': { transform: 'translateY(-3px)' },\r\n '50%': { transform: 'translateY(-2px)' },\r\n '75%, 100%': { transform: 'translateY(0)' }\r\n },\r\n '&:not(:hover).animate-bounce': {\r\n animation: 'gentleBounceY 3s cubic-bezier(0.4, 0.8, 0.4, 1) infinite'\r\n }\r\n})\r\n\r\nexport const IconButtonOrange: ComponentType<IconButtonProps & { [key: string]: any }> = styled(IconButton)({\r\n color: '#fff',\r\n border: 'none',\r\n boxShadow: '0 2px 8px rgba(27, 25, 24, 0.2)',\r\n background: 'linear-gradient(45deg, #d32f2f 0%, #fbc02d 70%, #d32f2f 100%)',\r\n backgroundSize: '165% auto',\r\n transition: 'background-position 0.5s ease, box-shadow 0.3s ease',\r\n '&:hover': {\r\n backgroundPosition: '100% 0',\r\n boxShadow: '0 4px 16px rgba(252, 228, 19, 0.23)'\r\n }\r\n})\r\nIconButtonOrange.displayName = 'IconButtonOrange'\r\n\r\n// export const IconButtonSquareDark: ComponentType<IconButtonProps & { [key: string]: any }> = styled(IconButton)(({ theme }) => ({\r\n// color: '#fff',\r\n// border: 'none',\r\n// boxShadow: '0 2px 8px rgba(27, 25, 24, 0.2)',\r\n// background: 'linear-gradient(45deg, #333 0%, #555 70%, #333 100%)',\r\n// backgroundSize: '165% auto',\r\n// transition: 'background-position 0.5s ease, box-shadow 0.3s ease',\r\n// '&:hover': {\r\n// backgroundPosition: '100% 0',\r\n// boxShadow: '0 4px 16px rgba(85, 85, 85, 0.23)'\r\n// }\r\n// }))\r\n// IconButtonSquareDark.displayName = 'IconButtonCirDark'\r\n\r\n// Custom IconButton for dark background\r\nexport const IconButtonDark: ComponentType<IconButtonProps> = styled(IconButton)(({ theme }: { theme: Theme }) => ({\r\n color: theme.palette.common.white,\r\n borderRadius: '8px',\r\n padding: '8px',\r\n width: 'auto',\r\n '&:hover': {\r\n backgroundColor: 'rgba(255, 255, 255, 0.08)',\r\n color: theme.palette.common.white\r\n },\r\n '&:focus': {\r\n backgroundColor: 'rgba(255, 255, 255, 0.12)'\r\n }\r\n}))\r\n\r\nexport interface IIconButtonConfirmProps {\r\n onAccept: () => void\r\n size?: 'small' | 'medium' | 'large'\r\n disabled?: boolean\r\n slots?: {\r\n removeProps?: IconButtonProps\r\n confirmProps?: IconButtonProps\r\n cancelProps?: IconButtonProps\r\n }\r\n}\r\n\r\nexport const IconButtonConfirm: FC<IIconButtonConfirmProps> = (props) => {\r\n const { onAccept, size = 'small', disabled = false, slots = {} } = props\r\n const [isConfirming, setIsConfirming] = useState(false)\r\n\r\n const handleDeleteClick: IconButtonProps['onClick'] = (e) => {\r\n e.stopPropagation()\r\n setIsConfirming(true)\r\n }\r\n\r\n const handleConfirm: IconButtonProps['onClick'] = (e) => {\r\n e.stopPropagation()\r\n onAccept()\r\n setIsConfirming(false)\r\n }\r\n\r\n const handleCancel: IconButtonProps['onClick'] = (e) => {\r\n e.stopPropagation()\r\n setIsConfirming(false)\r\n }\r\n\r\n if (isConfirming) {\r\n return (\r\n <Box sx={{ display: 'flex', gap: 0.5 }}>\r\n <IconButton size={size} onClick={handleConfirm} sx={{ color: 'success.main' }} disabled={disabled} {...slots.confirmProps}>\r\n <CheckIcon fontSize={size} />\r\n </IconButton>\r\n <IconButton size={size} onClick={handleCancel} sx={{ color: 'error.main' }} disabled={disabled} {...slots.cancelProps}>\r\n <CloseIcon fontSize={size} />\r\n </IconButton>\r\n </Box>\r\n )\r\n }\r\n\r\n return (\r\n <IconButton size={size} onClick={handleDeleteClick} disabled={disabled} color='error' {...slots.removeProps}>\r\n <RemoveIcon fontSize={size} />\r\n </IconButton>\r\n )\r\n}\r\n"],"names":["ButtonOrange","styled","Button","color","padding","borderRadius","border","minWidth","height","boxShadow","background","backgroundSize","transition","lineHeight","fontWeight","textTransform","fontSize","backgroundPosition","transform","animation","IconButtonOrange","IconButton","displayName","IconButtonDark","_ref","theme","palette","common","white","width","backgroundColor","IconButtonConfirm","props","onAccept","_props$size","size","_props$disabled","disabled","_props$slots","slots","_useState","useState","_useState2","_slicedToArray","isConfirming","setIsConfirming","_jsxs","Box","sx","display","gap","_jsx","_objectSpread","onClick","e","stopPropagation","confirmProps","children","CheckIcon","cancelProps","CloseIcon","removeProps","RemoveIcon"],"mappings":"2XAQaA,EAAoEC,EAAOC,EAAPD,CAAe,CAC9FE,MAAO,OACPC,QAAS,WACTC,aAAc,MACdC,OAAQ,OACRC,SAAU,QACVC,OAAQ,OACRC,UAAW,kCACXC,WAAY,gEACZC,eAAgB,YAChBC,WAAY,wEACZ,yBAA0B,CACxBC,WAAY,EACZC,WAAY,IACZC,cAAe,QACfC,SAAU,QAEZ,UAAW,CACTC,mBAAoB,SACpBR,UAAW,uCAEb,2BAA4B,CAC1B,SAAU,CAAES,UAAW,iBACvB,MAAO,CAAEA,UAAW,oBACpB,MAAO,CAAEA,UAAW,oBACpB,MAAO,CAAEA,UAAW,oBACpB,MAAO,CAAEA,UAAW,oBACpB,YAAa,CAAEA,UAAW,kBAE5B,+BAAgC,CAC9BC,UAAW,8DAIFC,EAA4EnB,EAAOoB,EAAPpB,CAAmB,CAC1GE,MAAO,OACPG,OAAQ,OACRG,UAAW,kCACXC,WAAY,gEACZC,eAAgB,YAChBC,WAAY,sDACZ,UAAW,CACTK,mBAAoB,SACpBR,UAAW,yCAGfW,EAAiBE,YAAc,mBAiBxB,IAAMC,EAAiDtB,EAAOoB,EAAPpB,CAAmB,SAAAuB,GAAA,IAAGC,EAAKD,EAALC,MAAK,MAA0B,CACjHtB,MAAOsB,EAAMC,QAAQC,OAAOC,MAC5BvB,aAAc,MACdD,QAAS,MACTyB,MAAO,OACP,UAAW,CACTC,gBAAiB,4BACjB3B,MAAOsB,EAAMC,QAAQC,OAAOC,OAE9B,UAAW,CACTE,gBAAiB,6BAEpB,GAaYC,EAAiD,SAACC,GAC7D,IAAQC,EAA2DD,EAA3DC,SAAQC,EAAmDF,EAAjDG,KAAAA,OAAO,IAAHD,EAAG,QAAOA,EAAAE,EAAmCJ,EAAjCK,SAAAA,OAAW,IAAHD,GAAQA,EAAAE,EAAiBN,EAAfO,MAAAA,OAAK,IAAAD,EAAG,CAAA,EAAEA,EAC9DE,EAAwCC,GAAS,GAAMC,EAAAC,EAAAH,EAAA,GAAhDI,EAAYF,EAAA,GAAEG,EAAeH,EAAA,GAkBpC,OAAIE,EAEAE,EAACC,GAAIC,GAAI,CAAEC,QAAS,OAAQC,IAAK,cAC/BC,EAAC9B,EAAU+B,EAAAA,EAAA,CAACjB,KAAMA,EAAMkB,QAdoB,SAACC,GACjDA,EAAEC,kBACFtB,IACAY,GAAgB,EACjB,EAUqDG,GAAI,CAAE7C,MAAO,gBAAkBkC,SAAUA,GAAcE,EAAMiB,cAAY,GAAA,CACvHC,SAAAN,EAACO,EAAS,CAAC1C,SAAUmB,OAEvBgB,EAAC9B,EAAU+B,EAAAA,EAAA,CAACjB,KAAMA,EAAMkB,QAXmB,SAACC,GAChDA,EAAEC,kBACFV,GAAgB,EACjB,EAQoDG,GAAI,CAAE7C,MAAO,cAAgBkC,SAAUA,GAAcE,EAAMoB,aAAW,GAAA,CAAAF,SACnHN,EAACS,EAAS,CAAC5C,SAAUmB,UAO3BgB,EAAC9B,EAAU+B,EAAAA,EAAA,CAACjB,KAAMA,EAAMkB,QA9B4B,SAACC,GACrDA,EAAEC,kBACFV,GAAgB,EACjB,EA2BqDR,SAAUA,EAAUlC,MAAM,SAAYoC,EAAMsB,aAAW,GAAA,CACzGJ,SAAAN,EAACW,EAAU,CAAC9C,SAAUmB,MAG5B"}
@@ -1,2 +1,2 @@
1
- export{ButtonOrange,IconButtonDark,IconButtonOrange}from"./buttons.js";export{NoDataPanel}from"./no-data-panel.js";
1
+ export{ButtonOrange,IconButtonConfirm,IconButtonDark,IconButtonOrange}from"./buttons.js";export{NoDataPanel}from"./no-data-panel.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"configs.js","sources":["../../src/media-right/configs.ts"],"sourcesContent":["export const mediaRightStoreOptions = {\r\n MAX_ITEMS_PER_GROUP: 100,\r\n MAX_GROUP: 5,\r\n MAX_NAME_GROUP: 50,\r\n MAX_CHANNELS: 20,\r\n // CHANNEL_TYPES: ['Youtube']\r\n}\r\n"],"names":["mediaRightStoreOptions","MAX_ITEMS_PER_GROUP","MAX_GROUP","MAX_NAME_GROUP","MAX_CHANNELS"],"mappings":"AAAO,IAAMA,EAAyB,CACpCC,oBAAqB,IACrBC,UAAW,EACXC,eAAgB,GAChBC,aAAc"}
1
+ {"version":3,"file":"configs.js","sources":["../../src/media-right/configs.ts"],"sourcesContent":["export const mediaRightStoreOptions = {\r\n MAX_ITEMS_PER_GROUP: 100,\r\n MAX_GROUP: 5,\r\n MAX_NAME_GROUP: 50,\r\n MAX_CHANNELS: 20\r\n // CHANNEL_TYPES: ['Youtube']\r\n}\r\n"],"names":["mediaRightStoreOptions","MAX_ITEMS_PER_GROUP","MAX_GROUP","MAX_NAME_GROUP","MAX_CHANNELS"],"mappings":"AAAO,IAAMA,EAAyB,CACpCC,oBAAqB,IACrBC,UAAW,EACXC,eAAgB,GAChBC,aAAc"}
@@ -1,2 +1,2 @@
1
- import{slicedToArray as e}from"../_virtual/_rollupPluginBabelHelpers.js";import{useRef as r,useState as n,useEffect as t}from"react";import{MediaRightService as o,mediaRightService as a}from"./service.js";function u(u){var c=r(!1);null!=u&&u.localStorageKey&&!c.current&&o.setLocalStorageKey(u.localStorageKey);var l=n(function(){return a.getGroupsMap()}),i=e(l,2),p=i[0],f=i[1];return t(function(){c.current||(a.initialize(),c.current=!0);var e=a.subscribe("stateChange",function(e){var r=e.groups;f(r)});return function(){e&&e()}},[]),{groups:Object.values(p),groupsMap:p}}function c(e){var n=r(!1);null!=e&&e.localStorageKey&&!n.current&&(o.setLocalStorageKey(e.localStorageKey),n.current=!0);return{addGroup:function(e){a.addGroup(e)},updateGroup:function(e,r){a.updateGroup(e,r)},removeGroup:function(e){a.removeGroup(e)},addItem:function(e){a.addItem(e)},updateItem:function(e,r,n){a.updateItem(e,r,n)},removeItem:function(e,r){a.removeItem(e,r)},addChannel:function(e,r){a.addChannel(e,r)},updateChannel:function(e,r,n){a.updateChannel(e,r,n)},removeChannel:function(e,r){a.removeChannel(e,r)},clearChannels:function(e){a.clearChannels(e)},clearCart:function(){a.clearAll()}}}export{c as useMediaRightActions,u as useMediaRightStore};
1
+ import{slicedToArray as e}from"../_virtual/_rollupPluginBabelHelpers.js";import{useRef as n,useState as r,useEffect as t}from"react";import{MediaRightService as o,mediaRightService as a}from"./service.js";function u(u){var l=n(!1);null!=u&&u.localStorageKey&&!l.current&&o.setOptions({localStorageKey:u.localStorageKey});var c=r(function(){return a.getGroupsMap()}),i=e(c,2),p=i[0],f=i[1];return t(function(){l.current||(a.initialize(),l.current=!0);var e=a.subscribe("stateChange",function(e){var n=e.groups;f(n)});return function(){e&&e()}},[]),{groups:Object.values(p),groupsMap:p}}function l(e){var r=n(!1);null!=e&&e.localStorageKey&&!r.current&&(o.setOptions({localStorageKey:e.localStorageKey}),r.current=!0);return{addGroup:function(e){a.addGroup(e)},updateGroup:function(e,n){a.updateGroup(e,n)},removeGroup:function(e){a.removeGroup(e)},addItem:function(e){a.addItem(e)},updateItem:function(e,n,r){a.updateItem(e,n,r)},removeItem:function(e,n){a.removeItem(e,n)},addChannel:function(e,n){a.addChannel(e,n)},updateChannel:function(e,n,r){a.updateChannel(e,n,r)},removeChannel:function(e,n){a.removeChannel(e,n)},clearChannels:function(e){a.clearChannels(e)},clearCart:function(){a.clearAll()}}}export{l as useMediaRightActions,u as useMediaRightStore};
2
2
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../src/media-right/hooks.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react'\r\nimport { mediaRightService, MediaRightService } from './service'\r\nimport { IMediaRightChannel, IMediaRightGroup, IMediaRightItem } from './types'\r\n\r\nexport interface IMediaRightStoreOptions {\r\n localStorageKey?: string\r\n}\r\n\r\nexport function useMediaRightStore<O = any>(params?: IMediaRightStoreOptions) {\r\n const initializedRef = useRef(false)\r\n\r\n // Set custom localStorage key BEFORE getting initial data\r\n if (params?.localStorageKey && !initializedRef.current) {\r\n MediaRightService.setLocalStorageKey(params.localStorageKey)\r\n }\r\n\r\n const [groups, setGroups] = useState<Record<string, IMediaRightGroup<O>>>(\r\n () => mediaRightService.getGroupsMap() as Record<string, IMediaRightGroup<O>>\r\n )\r\n\r\n useEffect(() => {\r\n // Initialize and subscribe to changes\r\n if (!initializedRef.current) {\r\n mediaRightService.initialize()\r\n initializedRef.current = true\r\n }\r\n\r\n const unsubscribe = mediaRightService.subscribe('stateChange', ({ groups }) => {\r\n setGroups(groups as Record<string, IMediaRightGroup<O>>)\r\n })\r\n\r\n return () => {\r\n if (unsubscribe) unsubscribe()\r\n }\r\n }, [])\r\n\r\n return { groups: Object.values(groups), groupsMap: groups }\r\n}\r\n\r\nexport function useMediaRightActions<O = any>(params?: IMediaRightStoreOptions) {\r\n const initializedRef = useRef(false)\r\n\r\n // Set custom localStorage key ONCE on mount\r\n if (params?.localStorageKey && !initializedRef.current) {\r\n MediaRightService.setLocalStorageKey(params.localStorageKey)\r\n initializedRef.current = true\r\n }\r\n\r\n const addGroup = (group: Omit<IMediaRightGroup<O>, 'createdAt' | 'items' | 'channels'>) => {\r\n mediaRightService.addGroup(group)\r\n }\r\n\r\n const updateGroup = (groupId: string, updates: Partial<Pick<IMediaRightGroup<O>, 'name'>>) => {\r\n mediaRightService.updateGroup(groupId, updates)\r\n }\r\n\r\n const removeGroup = (groupId: string) => {\r\n mediaRightService.removeGroup(groupId)\r\n }\r\n\r\n const addItem = (item: IMediaRightItem<O>) => {\r\n mediaRightService.addItem(item)\r\n }\r\n\r\n const updateItem = (groupId: string, productId: string, updates: Partial<IMediaRightItem<O>>) => {\r\n mediaRightService.updateItem(groupId, productId, updates)\r\n }\r\n\r\n const removeItem = (groupId: string, productId: string) => {\r\n mediaRightService.removeItem(groupId, productId)\r\n }\r\n\r\n const clearCart = () => {\r\n mediaRightService.clearAll()\r\n }\r\n\r\n const addChannel = (groupId: string, channel: IMediaRightChannel) => {\r\n mediaRightService.addChannel(groupId, channel)\r\n }\r\n\r\n const updateChannel = (groupId: string, channelIndex: number, updates: Partial<IMediaRightChannel>) => {\r\n mediaRightService.updateChannel(groupId, channelIndex, updates)\r\n }\r\n\r\n const removeChannel = (groupId: string, channelIndex: number) => {\r\n mediaRightService.removeChannel(groupId, channelIndex)\r\n }\r\n\r\n const clearChannels = (groupId: string) => {\r\n mediaRightService.clearChannels(groupId)\r\n }\r\n\r\n return {\r\n addGroup,\r\n updateGroup,\r\n removeGroup,\r\n addItem,\r\n updateItem,\r\n removeItem,\r\n addChannel,\r\n updateChannel,\r\n removeChannel,\r\n clearChannels,\r\n clearCart\r\n }\r\n}\r\n"],"names":["useMediaRightStore","params","initializedRef","useRef","localStorageKey","current","MediaRightService","setLocalStorageKey","_useState","useState","mediaRightService","getGroupsMap","_useState2","_slicedToArray","groups","setGroups","useEffect","initialize","unsubscribe","subscribe","_ref","Object","values","groupsMap","useMediaRightActions","addGroup","group","updateGroup","groupId","updates","removeGroup","addItem","item","updateItem","productId","removeItem","addChannel","channel","updateChannel","channelIndex","removeChannel","clearChannels","clearCart","clearAll"],"mappings":"6MAQM,SAAUA,EAA4BC,GAC1C,IAAMC,EAAiBC,GAAO,GAG1BF,SAAAA,EAAQG,kBAAoBF,EAAeG,SAC7CC,EAAkBC,mBAAmBN,EAAOG,iBAG9C,IAAAI,EAA4BC,EAC1B,WAAA,OAAMC,EAAkBC,iBACzBC,EAAAC,EAAAL,EAAA,GAFMM,EAAMF,EAAA,GAAEG,EAASH,EAAA,GAoBxB,OAhBAI,EAAU,WAEHd,EAAeG,UAClBK,EAAkBO,aAClBf,EAAeG,SAAU,GAG3B,IAAMa,EAAcR,EAAkBS,UAAU,cAAe,SAAAC,GAAe,IAAZN,EAAMM,EAANN,OAChEC,EAAUD,EACZ,GAEA,OAAO,WACDI,GAAaA,GAClB,CACF,EAAE,IAEI,CAAEJ,OAAQO,OAAOC,OAAOR,GAASS,UAAWT,EACrD,CAEM,SAAUU,EAA8BvB,GAC5C,IAAMC,EAAiBC,GAAO,GAG1BF,SAAAA,EAAQG,kBAAoBF,EAAeG,UAC7CC,EAAkBC,mBAAmBN,EAAOG,iBAC5CF,EAAeG,SAAU,GA+C3B,MAAO,CACLoB,SA7Ce,SAACC,GAChBhB,EAAkBe,SAASC,EAC5B,EA4CCC,YA1CkB,SAACC,EAAiBC,GACpCnB,EAAkBiB,YAAYC,EAASC,EACxC,EAyCCC,YAvCkB,SAACF,GACnBlB,EAAkBoB,YAAYF,EAC/B,EAsCCG,QApCc,SAACC,GACftB,EAAkBqB,QAAQC,EAC3B,EAmCCC,WAjCiB,SAACL,EAAiBM,EAAmBL,GACtDnB,EAAkBuB,WAAWL,EAASM,EAAWL,EAClD,EAgCCM,WA9BiB,SAACP,EAAiBM,GACnCxB,EAAkByB,WAAWP,EAASM,EACvC,EA6BCE,WAvBiB,SAACR,EAAiBS,GACnC3B,EAAkB0B,WAAWR,EAASS,EACvC,EAsBCC,cApBoB,SAACV,EAAiBW,EAAsBV,GAC5DnB,EAAkB4B,cAAcV,EAASW,EAAcV,EACxD,EAmBCW,cAjBoB,SAACZ,EAAiBW,GACtC7B,EAAkB8B,cAAcZ,EAASW,EAC1C,EAgBCE,cAdoB,SAACb,GACrBlB,EAAkB+B,cAAcb,EACjC,EAaCc,UA/BgB,WAChBhC,EAAkBiC,UACnB,EA+BH"}
1
+ {"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: IMediaRightChannel) => {\r\n mediaRightService.addChannel(groupId, channel)\r\n }\r\n\r\n const updateChannel = (groupId: string, channelIndex: number, updates: Partial<IMediaRightChannel>) => {\r\n mediaRightService.updateChannel(groupId, channelIndex, updates)\r\n }\r\n\r\n const removeChannel = (groupId: string, channelIndex: number) => {\r\n mediaRightService.removeChannel(groupId, channelIndex)\r\n }\r\n\r\n const clearChannels = (groupId: string) => {\r\n mediaRightService.clearChannels(groupId)\r\n }\r\n\r\n return {\r\n addGroup,\r\n updateGroup,\r\n removeGroup,\r\n addItem,\r\n updateItem,\r\n removeItem,\r\n addChannel,\r\n updateChannel,\r\n removeChannel,\r\n clearChannels,\r\n clearCart\r\n }\r\n}\r\n"],"names":["useMediaRightStore","params","initializedRef","useRef","localStorageKey","current","MediaRightService","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","channelIndex","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,EAAsBV,GAC5DnB,EAAkB4B,cAAcV,EAASW,EAAcV,EACxD,EAmBCW,cAjBoB,SAACZ,EAAiBW,GACtC7B,EAAkB8B,cAAcZ,EAASW,EAC1C,EAgBCE,cAdoB,SAACb,GACrBlB,EAAkB+B,cAAcb,EACjC,EAaCc,UA/BgB,WAChBhC,EAAkBiC,UACnB,EA+BH"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as o,createClass as e,objectSpread2 as r,toConsumableArray as a,classCallCheck as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{createObjectSingleton as n}from"dinocollab-core/utils";import{MediaRightEventStore as l}from"./event-store.js";import{mediaRightStoreOptions as i}from"./configs.js";var s=e(function e(){t(this,e),o(this,"localStorageKey","__media_right_default__"),o(this,"store",new l)}),u=function(){function l(){t(this,l)}return e(l,[{key:"initialize",value:function(){l.provider.store.emit("requestState",{})}},{key:"subscribe",value:function(o,e){return l.provider.store.subscribe(o,e)}},{key:"getGroups",value:function(){var o,e=this.loadFromLocalStorage();return Object.values(null!==(o=e.groups)&&void 0!==o?o:{})}},{key:"getGroupsMap",value:function(){var o;return null!==(o=this.loadFromLocalStorage().groups)&&void 0!==o?o:{}}},{key:"getGroup",value:function(o){var e;return null===(e=this.loadFromLocalStorage().groups)||void 0===e?void 0:e[o]}},{key:"addGroup",value:function(e){var a=this.loadFromLocalStorage();if(Object.keys(a.groups).length>=i.MAX_GROUP)throw new Error("Maximum groups limit reached (".concat(i.MAX_GROUP,")"));if(e.name&&e.name.length>i.MAX_NAME_GROUP)throw new Error("Group name exceeds maximum length (".concat(i.MAX_NAME_GROUP,")"));var t=r(r({},e),{},{createdAt:Date.now(),items:[],channels:[]}),n=r(r({},a.groups),{},o({},e.id,t));this.saveToLocalStorage(n)}},{key:"updateGroup",value:function(e,a){var t=this.loadFromLocalStorage();if(t.groups[e]){if(a.name&&a.name.length>i.MAX_NAME_GROUP)throw new Error("Group name exceeds maximum length (".concat(i.MAX_NAME_GROUP,")"));var n=r(r({},t.groups),{},o({},e,r(r({},t.groups[e]),a)));this.saveToLocalStorage(n)}}},{key:"removeGroup",value:function(o){var e=this.loadFromLocalStorage(),a=r({},e.groups);delete a[o],this.saveToLocalStorage(a)}},{key:"addChannel",value:function(e,t){var n=this.loadFromLocalStorage(),l=n.groups[e];if(!l)throw new Error("Group ".concat(e," not found"));if(l.channels.length>=i.MAX_CHANNELS)throw new Error("Group ".concat(e," has reached maximum channels limit (").concat(i.MAX_CHANNELS,")"));var s=r(r({},l),{},{channels:[].concat(a(l.channels),[t])}),u=r(r({},n.groups),{},o({},e,s));this.saveToLocalStorage(u)}},{key:"updateChannel",value:function(e,t,n){var l=this.loadFromLocalStorage(),i=l.groups[e];if(i&&i.channels[t]){var s=a(i.channels);s[t]=r(r({},s[t]),n);var u=r(r({},l.groups),{},o({},e,r(r({},i),{},{channels:s})));this.saveToLocalStorage(u)}}},{key:"removeChannel",value:function(e,t){var n=this.loadFromLocalStorage(),l=n.groups[e];if(l){var i=a(l.channels);i.splice(t,1);var s=r(r({},n.groups),{},o({},e,r(r({},l),{},{channels:i})));this.saveToLocalStorage(s)}}},{key:"clearChannels",value:function(e){var a=this.loadFromLocalStorage(),t=a.groups[e];if(t){var n=r(r({},a.groups),{},o({},e,r(r({},t),{},{channels:[]})));this.saveToLocalStorage(n)}}},{key:"addItem",value:function(e){var t=this.loadFromLocalStorage(),n=t.groups[e.GroupId];if(!n)throw new Error("Group ".concat(e.GroupId," not found"));var l,s=n.items.findIndex(function(o){return o.ProductId===e.ProductId});if(-1===s&&n.items.length>=i.MAX_ITEMS_PER_GROUP)throw new Error("Group ".concat(e.GroupId," has reached maximum items limit (").concat(i.MAX_ITEMS_PER_GROUP,")"));s>=0?(l=a(n.items))[s]=e:l=[].concat(a(n.items),[e]);var u=r(r({},t.groups),{},o({},e.GroupId,r(r({},n),{},{items:l})));this.saveToLocalStorage(u)}},{key:"updateItem",value:function(e,t,n){var l=this.loadFromLocalStorage(),i=l.groups[e];if(i){var s=i.items.findIndex(function(o){return o.ProductId===t});if(s>=0){var u=a(i.items);u[s]=r(r({},u[s]),n);var c=r(r({},l.groups),{},o({},e,r(r({},i),{},{items:u})));this.saveToLocalStorage(c)}}}},{key:"removeItem",value:function(e,a){var t=this.loadFromLocalStorage(),n=t.groups[e];if(n){var l=n.items.filter(function(o){return o.ProductId!==a}),i=r(r({},t.groups),{},o({},e,r(r({},n),{},{items:l})));this.saveToLocalStorage(i)}}},{key:"clearAll",value:function(){this.saveToLocalStorage({})}},{key:"loadFromLocalStorage",value:function(){var o={version:"1.0",groups:{}};try{if("undefined"!=typeof globalThis&&globalThis.localStorage){var e=localStorage.getItem(l.provider.localStorageKey),r=e?JSON.parse(e):null;null!=r&&r.groups&&Object.keys(r.groups).length>0&&(o=r)}}catch(o){console.error("Error loading media rights from localStorage:",o)}return o}},{key:"saveToLocalStorage",value:function(o){if("undefined"!=typeof globalThis&&globalThis.localStorage)if(l.provider.localStorageKey){var e={version:"1.0",groups:o};localStorage.setItem(l.provider.localStorageKey,JSON.stringify(e)),l.provider.store.emit("stateChange",{groups:o})}else console.warn("No localStorageKey provided, skipping storage")}}],[{key:"provider",get:function(){var o;return null!==(o=n(l.key_provider).get())&&void 0!==o?o:new s}},{key:"setProvider",value:function(o){n(l.key_provider).set(null!=o?o:new s)}},{key:"setLocalStorageKey",value:function(o){var e=l.provider;e.localStorageKey=o,l.setProvider(e)}}])}();o(u,"key_provider","__media_right_key_provider__");var c=new u;export{u as MediaRightService,c as mediaRightService};
1
+ import{defineProperty as o,createClass as e,objectSpread2 as r,toConsumableArray as a,classCallCheck as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{createObjectSingleton as n}from"dinocollab-core/utils";import{mediaRightStoreOptions as i}from"./configs.js";import{MediaRightEventStore as l}from"./event-store.js";var s=e(function e(){t(this,e),o(this,"localStorageKey","__media_right_default__"),o(this,"store",new l),o(this,"maxItemsPerGroup",i.MAX_ITEMS_PER_GROUP),o(this,"maxGroup",i.MAX_GROUP),o(this,"maxNameGroup",i.MAX_NAME_GROUP),o(this,"maxChannels",i.MAX_CHANNELS)}),u=function(){function i(){t(this,i)}return e(i,[{key:"initialize",value:function(){i.provider.store.emit("requestState",{})}},{key:"subscribe",value:function(o,e){return i.provider.store.subscribe(o,e)}},{key:"getGroups",value:function(){var o,e=this.loadFromLocalStorage();return Object.values(null!==(o=e.groups)&&void 0!==o?o:{})}},{key:"getGroupsMap",value:function(){var o;return null!==(o=this.loadFromLocalStorage().groups)&&void 0!==o?o:{}}},{key:"getGroup",value:function(o){var e;return null===(e=this.loadFromLocalStorage().groups)||void 0===e?void 0:e[o]}},{key:"addGroup",value:function(e){var a=this.loadFromLocalStorage(),t=Object.keys(a.groups).length,n=i.provider.maxGroup;if(t>=n)throw new Error("Maximum groups limit reached (".concat(n,")"));var l=i.provider.maxNameGroup;if(e.name&&e.name.length>l)throw new Error("Group name exceeds maximum length (".concat(l,")"));var s=r(r({},e),{},{createdAt:Date.now(),items:[],channels:[]}),u=r(r({},a.groups),{},o({},e.id,s));this.saveToLocalStorage(u)}},{key:"updateGroup",value:function(e,a){var t=this.loadFromLocalStorage();if(t.groups[e]){var n=i.provider.maxNameGroup;if(a.name&&a.name.length>n)throw new Error("Group name exceeds maximum length (".concat(n,")"));var l=r(r({},t.groups),{},o({},e,r(r({},t.groups[e]),a)));this.saveToLocalStorage(l)}}},{key:"removeGroup",value:function(o){var e=this.loadFromLocalStorage(),a=r({},e.groups);delete a[o],this.saveToLocalStorage(a)}},{key:"addChannel",value:function(e,t){var n=this.loadFromLocalStorage(),l=n.groups[e];if(!l)throw new Error("Group ".concat(e," not found"));var s=i.provider.maxChannels;if(l.channels.length>=s)throw new Error("Group ".concat(e," has reached maximum channels limit (").concat(s,")"));var u=r(r({},l),{},{channels:[].concat(a(l.channels),[t])}),c=r(r({},n.groups),{},o({},e,u));this.saveToLocalStorage(c)}},{key:"updateChannel",value:function(e,t,n){var i=this.loadFromLocalStorage(),l=i.groups[e];if(l&&l.channels[t]){var s=a(l.channels);s[t]=r(r({},s[t]),n);var u=r(r({},i.groups),{},o({},e,r(r({},l),{},{channels:s})));this.saveToLocalStorage(u)}}},{key:"removeChannel",value:function(e,t){var n=this.loadFromLocalStorage(),i=n.groups[e];if(i){var l=a(i.channels);l.splice(t,1);var s=r(r({},n.groups),{},o({},e,r(r({},i),{},{channels:l})));this.saveToLocalStorage(s)}}},{key:"clearChannels",value:function(e){var a=this.loadFromLocalStorage(),t=a.groups[e];if(t){var n=r(r({},a.groups),{},o({},e,r(r({},t),{},{channels:[]})));this.saveToLocalStorage(n)}}},{key:"addItem",value:function(e){var t=this.loadFromLocalStorage(),n=t.groups[e.GroupId];if(!n)throw new Error("Group ".concat(e.GroupId," not found"));var l,s=n.items.findIndex(function(o){return o.ProductId===e.ProductId}),u=i.provider.maxItemsPerGroup;if(-1===s&&n.items.length>=u)throw new Error("Group ".concat(e.GroupId," has reached maximum items limit (").concat(u,")"));s>=0?(l=a(n.items))[s]=e:l=[].concat(a(n.items),[e]);var c=r(r({},t.groups),{},o({},e.GroupId,r(r({},n),{},{items:l})));this.saveToLocalStorage(c)}},{key:"updateItem",value:function(e,t,n){var i=this.loadFromLocalStorage(),l=i.groups[e];if(l){var s=l.items.findIndex(function(o){return o.ProductId===t});if(s>=0){var u=a(l.items);u[s]=r(r({},u[s]),n);var c=r(r({},i.groups),{},o({},e,r(r({},l),{},{items:u})));this.saveToLocalStorage(c)}}}},{key:"removeItem",value:function(e,a){var t=this.loadFromLocalStorage(),n=t.groups[e];if(n){var i=n.items.filter(function(o){return o.ProductId!==a}),l=r(r({},t.groups),{},o({},e,r(r({},n),{},{items:i})));this.saveToLocalStorage(l)}}},{key:"clearAll",value:function(){this.saveToLocalStorage({})}},{key:"loadFromLocalStorage",value:function(){var o={version:"1.0",groups:{}};try{if("undefined"!=typeof globalThis&&globalThis.localStorage){var e=localStorage.getItem(i.provider.localStorageKey),r=e?JSON.parse(e):null;null!=r&&r.groups&&Object.keys(r.groups).length>0&&(o=r)}}catch(o){console.error("Error loading media rights from localStorage:",o)}return o}},{key:"saveToLocalStorage",value:function(o){if("undefined"!=typeof globalThis&&globalThis.localStorage)if(i.provider.localStorageKey){var e={version:"1.0",groups:o};localStorage.setItem(i.provider.localStorageKey,JSON.stringify(e)),i.provider.store.emit("stateChange",{groups:o})}else console.warn("No localStorageKey provided, skipping storage")}}],[{key:"provider",get:function(){var o;return null!==(o=n(i.key_provider).get())&&void 0!==o?o:new s}},{key:"setProvider",value:function(o){n(i.key_provider).set(null!=o?o:new s)}},{key:"setOptions",value:function(o){var e=i.provider;void 0!==o.localStorageKey&&(e.localStorageKey=o.localStorageKey),void 0!==o.maxItemsPerGroup&&(e.maxItemsPerGroup=o.maxItemsPerGroup),void 0!==o.maxGroup&&(e.maxGroup=o.maxGroup),void 0!==o.maxNameGroup&&(e.maxNameGroup=o.maxNameGroup),void 0!==o.maxChannels&&(e.maxChannels=o.maxChannels),i.setProvider(e)}}])}();o(u,"key_provider","__media_right_key_provider__");var c=new u;export{u as MediaRightService,c 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 { IMediaRightGroup, IMediaRightItem, IMediaRightChannel } from './types'\r\nimport { MediaRightEventStore } from './event-store'\r\nimport { mediaRightStoreOptions } from './configs'\r\n\r\nexport interface IMediaRightMetadata<O = any> {\r\n version: string\r\n groups: Record<string, IMediaRightGroup<O>>\r\n}\r\n\r\nexport interface IMediaRightProvider {\r\n localStorageKey: string\r\n store: MediaRightEventStore\r\n}\r\n\r\nclass MediaRightProviderDefault implements IMediaRightProvider {\r\n localStorageKey = '__media_right_default__'\r\n store = new MediaRightEventStore()\r\n}\r\n\r\nexport class MediaRightService<O = any> {\r\n static key_provider = '__media_right_key_provider__'\r\n\r\n static get provider(): IMediaRightProvider {\r\n const ObjectProvider = createObjectSingleton<IMediaRightProvider>(MediaRightService.key_provider)\r\n return ObjectProvider.get() ?? new MediaRightProviderDefault()\r\n }\r\n\r\n static setProvider(provider: IMediaRightProvider) {\r\n const ObjectProvider = createObjectSingleton<IMediaRightProvider>(MediaRightService.key_provider)\r\n ObjectProvider.set(provider ?? new MediaRightProviderDefault())\r\n }\r\n\r\n static setLocalStorageKey(key: string) {\r\n const provider = MediaRightService.provider\r\n provider.localStorageKey = key\r\n MediaRightService.setProvider(provider)\r\n }\r\n\r\n initialize() {\r\n MediaRightService.provider.store.emit('requestState', {})\r\n }\r\n\r\n subscribe(event: string, callback: (...args: any[]) => void) {\r\n return MediaRightService.provider.store.subscribe(event as any, callback as any)\r\n }\r\n\r\n // Group operations\r\n getGroups(): IMediaRightGroup<O>[] {\r\n const storedData = this.loadFromLocalStorage()\r\n return Object.values(storedData.groups ?? {})\r\n }\r\n\r\n getGroupsMap(): Record<string, IMediaRightGroup<O>> {\r\n const storedData = this.loadFromLocalStorage()\r\n return storedData.groups ?? {}\r\n }\r\n\r\n getGroup(groupId: string): IMediaRightGroup<O> | undefined {\r\n const storedData = this.loadFromLocalStorage()\r\n return storedData.groups?.[groupId]\r\n }\r\n\r\n addGroup(group: Omit<IMediaRightGroup<O>, 'createdAt' | 'items' | 'channels'>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n\r\n // Validate max groups limit\r\n const currentGroupCount = Object.keys(storedData.groups).length\r\n if (currentGroupCount >= mediaRightStoreOptions.MAX_GROUP) {\r\n throw new Error(`Maximum groups limit reached (${mediaRightStoreOptions.MAX_GROUP})`)\r\n }\r\n\r\n // Validate group name length\r\n if (group.name && group.name.length > mediaRightStoreOptions.MAX_NAME_GROUP) {\r\n throw new Error(`Group name exceeds maximum length (${mediaRightStoreOptions.MAX_NAME_GROUP})`)\r\n }\r\n\r\n const newGroup: IMediaRightGroup<O> = {\r\n ...group,\r\n createdAt: Date.now(),\r\n items: [],\r\n channels: []\r\n }\r\n const updatedGroups = { ...storedData.groups, [group.id]: newGroup }\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n updateGroup(groupId: string, updates: Partial<Pick<IMediaRightGroup<O>, 'name'>>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n if (storedData.groups[groupId]) {\r\n // Validate group name length if updating name\r\n if (updates.name && updates.name.length > mediaRightStoreOptions.MAX_NAME_GROUP) {\r\n throw new Error(`Group name exceeds maximum length (${mediaRightStoreOptions.MAX_NAME_GROUP})`)\r\n }\r\n\r\n const updatedGroups = {\r\n ...storedData.groups,\r\n [groupId]: { ...storedData.groups[groupId], ...updates }\r\n }\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n }\r\n\r\n removeGroup(groupId: string): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const updatedGroups = { ...storedData.groups }\r\n delete updatedGroups[groupId]\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n // Channel operations\r\n addChannel(groupId: string, channel: IMediaRightChannel): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) {\r\n throw new Error(`Group ${groupId} not found`)\r\n }\r\n\r\n // Validate max channels limit\r\n if (group.channels.length >= mediaRightStoreOptions.MAX_CHANNELS) {\r\n throw new Error(`Group ${groupId} has reached maximum channels limit (${mediaRightStoreOptions.MAX_CHANNELS})`)\r\n }\r\n\r\n const updatedGroup = {\r\n ...group,\r\n channels: [...group.channels, channel]\r\n }\r\n\r\n const updatedGroups = {\r\n ...storedData.groups,\r\n [groupId]: updatedGroup\r\n }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n updateChannel(groupId: string, channelIndex: number, updates: Partial<IMediaRightChannel>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group || !group.channels[channelIndex]) return\r\n\r\n const updatedChannels = [...group.channels]\r\n updatedChannels[channelIndex] = { ...updatedChannels[channelIndex], ...updates }\r\n\r\n const updatedGroups = {\r\n ...storedData.groups,\r\n [groupId]: { ...group, channels: updatedChannels }\r\n }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n removeChannel(groupId: string, channelIndex: number): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) return\r\n\r\n const updatedChannels = [...group.channels]\r\n updatedChannels.splice(channelIndex, 1)\r\n\r\n const updatedGroups = {\r\n ...storedData.groups,\r\n [groupId]: { ...group, channels: updatedChannels }\r\n }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n clearChannels(groupId: string): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) return\r\n\r\n const updatedGroups = {\r\n ...storedData.groups,\r\n [groupId]: { ...group, channels: [] }\r\n }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n // Item operations\r\n addItem(item: IMediaRightItem<O>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[item.GroupId]\r\n\r\n if (!group) {\r\n throw new Error(`Group ${item.GroupId} not found`)\r\n }\r\n\r\n // Validate max items limit (only for new items, not updates)\r\n const existingItemIndex = group.items.findIndex((i) => i.ProductId === item.ProductId)\r\n if (existingItemIndex === -1 && group.items.length >= mediaRightStoreOptions.MAX_ITEMS_PER_GROUP) {\r\n throw new Error(`Group ${item.GroupId} has reached maximum items limit (${mediaRightStoreOptions.MAX_ITEMS_PER_GROUP})`)\r\n }\r\n\r\n let updatedItems: IMediaRightItem<O>[]\r\n\r\n if (existingItemIndex >= 0) {\r\n updatedItems = [...group.items]\r\n updatedItems[existingItemIndex] = item\r\n } else {\r\n updatedItems = [...group.items, item]\r\n }\r\n\r\n const updatedGroups = {\r\n ...storedData.groups,\r\n [item.GroupId]: { ...group, items: updatedItems }\r\n }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n updateItem(groupId: string, productId: string, updates: Partial<IMediaRightItem<O>>): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) return\r\n\r\n const itemIndex = group.items.findIndex((i) => i.ProductId === productId)\r\n if (itemIndex >= 0) {\r\n const updatedItems = [...group.items]\r\n updatedItems[itemIndex] = { ...updatedItems[itemIndex], ...updates }\r\n\r\n const updatedGroups = {\r\n ...storedData.groups,\r\n [groupId]: { ...group, items: updatedItems }\r\n }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n }\r\n\r\n removeItem(groupId: string, productId: string): void {\r\n const storedData = this.loadFromLocalStorage()\r\n const group = storedData.groups[groupId]\r\n\r\n if (!group) return\r\n\r\n const updatedItems = group.items.filter((i) => i.ProductId !== productId)\r\n\r\n const updatedGroups = {\r\n ...storedData.groups,\r\n [groupId]: { ...group, items: updatedItems }\r\n }\r\n\r\n this.saveToLocalStorage(updatedGroups)\r\n }\r\n\r\n clearAll(): void {\r\n this.saveToLocalStorage({})\r\n }\r\n\r\n private loadFromLocalStorage(): IMediaRightMetadata<O> {\r\n const defaultValue: IMediaRightMetadata<O> = { version: '1.0', groups: {} }\r\n let data = defaultValue\r\n\r\n try {\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n const temp = localStorage.getItem(MediaRightService.provider.localStorageKey)\r\n const tempParsed = temp ? JSON.parse(temp) : null\r\n if (tempParsed?.groups && Object.keys(tempParsed.groups).length > 0) {\r\n data = tempParsed\r\n }\r\n }\r\n } catch (error) {\r\n console.error('Error loading media rights from localStorage:', error)\r\n }\r\n\r\n return data\r\n }\r\n\r\n private saveToLocalStorage(groups: Record<string, IMediaRightGroup<O>>) {\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n if (MediaRightService.provider.localStorageKey) {\r\n const value: IMediaRightMetadata<O> = { version: '1.0', groups }\r\n localStorage.setItem(MediaRightService.provider.localStorageKey, JSON.stringify(value))\r\n MediaRightService.provider.store.emit('stateChange', { groups })\r\n } else {\r\n console.warn('No localStorageKey provided, skipping storage')\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport const mediaRightService = new MediaRightService()\r\n"],"names":["MediaRightProviderDefault","_createClass","_classCallCheck","_defineProperty","this","MediaRightEventStore","MediaRightService","key","value","provider","store","emit","event","callback","subscribe","_storedData$groups","storedData","loadFromLocalStorage","Object","values","groups","_storedData$groups2","groupId","_storedData$groups3","group","keys","length","mediaRightStoreOptions","MAX_GROUP","Error","concat","name","MAX_NAME_GROUP","newGroup","_objectSpread","createdAt","Date","now","items","channels","updatedGroups","id","saveToLocalStorage","updates","channel","MAX_CHANNELS","updatedGroup","_toConsumableArray","channelIndex","updatedChannels","splice","item","GroupId","updatedItems","existingItemIndex","findIndex","i","ProductId","MAX_ITEMS_PER_GROUP","productId","itemIndex","filter","data","version","globalThis","localStorage","temp","getItem","localStorageKey","tempParsed","JSON","parse","error","console","setItem","stringify","warn","get","_ObjectProvider$get","createObjectSingleton","key_provider","set","setProvider","mediaRightService"],"mappings":"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"}
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 groups 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(`Group 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(`Group 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(`Group ${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(`Group ${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(`Group ${item.GroupId} not found`)\r\n }\r\n\r\n // Validate max items limit (only for new items, not updates)\r\n const existingItemIndex = group.items.findIndex((i) => i.ProductId === item.ProductId)\r\n const maxItemsPerGroup = MediaRightService.provider.maxItemsPerGroup!\r\n if (existingItemIndex === -1 && group.items.length >= maxItemsPerGroup) {\r\n throw new Error(`Group ${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 media rights from localStorage:', error)\r\n }\r\n\r\n return data\r\n }\r\n\r\n private saveToLocalStorage(groups: Record<string, IMediaRightGroup<O>>) {\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n if (MediaRightService.provider.localStorageKey) {\r\n const value: IMediaRightMetadata<O> = { version: '1.0', groups }\r\n localStorage.setItem(MediaRightService.provider.localStorageKey, JSON.stringify(value))\r\n MediaRightService.provider.store.emit('stateChange', { groups })\r\n } else {\r\n console.warn('No localStorageKey provided, skipping storage')\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport const mediaRightService = new MediaRightService()\r\n"],"names":["MediaRightProviderDefault","_createClass","_classCallCheck","_defineProperty","this","MediaRightEventStore","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 +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 IMediaRightChannel {\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\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"],"names":["EChannelType"],"mappings":"IAGYA,GAAZ,SAAYA,GACVA,EAAA,QAAA,UACAA,EAAA,MAAA,OACD,CAHD,CAAYA,IAAAA,EAGX,CAAA"}
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 IMediaRightChannel {\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\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,11 @@
1
+ /**
2
+ * Maximum number of distinct items allowed in the cart.
3
+ * A value of -1 indicates no limit.
4
+ */
5
+ export declare const MAX_ITEMS: number;
6
+ /**
7
+ * Maximum number of links allowed per cart item.
8
+ * A value of -1 indicates no limit.
9
+ */
10
+ export declare const MAX_LINKS: number;
11
+ //# sourceMappingURL=configs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configs.d.ts","sourceRoot":"","sources":["../../../src/cart/configs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,MAAW,CAAA;AAEnC;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,MAAW,CAAA"}
@@ -1,20 +1,23 @@
1
- import { ICartItem } from './types';
1
+ import { ICartItem, ICartOptions } from './types';
2
2
  import { CartEventStore } from './event-store';
3
3
  export interface ICartMetadata<T extends ICartItem = ICartItem> {
4
4
  version: string;
5
5
  items: T[];
6
6
  }
7
- export interface ICartProvider {
8
- localStorageKey: string;
9
- store: CartEventStore;
7
+ export interface ICartProvider extends ICartOptions {
8
+ store?: CartEventStore;
10
9
  }
11
10
  export declare class CartService<T extends ICartItem = ICartItem> {
12
11
  static key_provider: string;
13
12
  static get provider(): ICartProvider;
14
13
  static setProvider(provider: ICartProvider): void;
15
- static setLocalStorageKey(key: string): void;
14
+ static setOptions(options: {
15
+ localStorageKey?: string;
16
+ maxItems?: number;
17
+ maxLinks?: number;
18
+ }): void;
16
19
  initialize(): void;
17
- subscribe(event: string, callback: (...args: any[]) => void): () => void;
20
+ subscribe(event: string, callback: (...args: any[]) => void): (() => void) | undefined;
18
21
  getCarts(): T[];
19
22
  addToCart(cartItem: T | T[]): void;
20
23
  removeFromCart(cartItem: T | T[]): void;
@@ -23,6 +26,8 @@ export declare class CartService<T extends ICartItem = ICartItem> {
23
26
  clearCart(): void;
24
27
  private loadFromLocalStorage;
25
28
  private saveToLocalStorage;
29
+ private isValidCart;
30
+ private notifyValidationError;
26
31
  }
27
32
  export declare const cartService: CartService<ICartItem<any>>;
28
33
  //# sourceMappingURL=service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/cart/service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC5D,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,CAAC,EAAE,CAAA;CACX;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,MAAM,CAAA;IACvB,KAAK,EAAE,cAAc,CAAA;CACtB;AAOD,qBAAa,WAAW,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IACtD,MAAM,CAAC,YAAY,SAA0B;IAC7C,MAAM,KAAK,QAAQ,IAAI,aAAa,CAGnC;IACD,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,aAAa;IAI1C,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM;IAMrC,UAAU;IAIV,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI;IAI3D,QAAQ,IAAI,CAAC,EAAE;IAKf,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;IAOlC,cAAc,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;IAOvC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAMxD,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAa7D,SAAS,IAAI,IAAI;IAIjB,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,kBAAkB;CAY3B;AAED,eAAO,MAAM,WAAW,6BAA+B,CAAA"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/cart/service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAG9C,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC5D,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,CAAC,EAAE,CAAA;CACX;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,KAAK,CAAC,EAAE,cAAc,CAAA;CACvB;AASD,qBAAa,WAAW,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IACtD,MAAM,CAAC,YAAY,SAA0B;IAC7C,MAAM,KAAK,QAAQ,IAAI,aAAa,CAGnC;IACD,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,aAAa;IAI1C,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;IAQ7F,UAAU;IAIV,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI;IAI3D,QAAQ,IAAI,CAAC,EAAE;IAKf,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;IAOlC,cAAc,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;IAOvC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAMxD,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAa7D,SAAS,IAAI,IAAI;IAIjB,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,WAAW,CAelB;IAED,OAAO,CAAC,qBAAqB;CAM9B;AAED,eAAO,MAAM,WAAW,6BAA+B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../../../src/cart/styled.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAExD,eAAO,MAAM,UAAU,EAAE,aAAa,CAAC,SAAS,CA8C7C,CAAA;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;CAW9B,CAAA;AAMD,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,QAAQ,CAwEnD,CAAA"}
1
+ {"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../../../src/cart/styled.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAExD,eAAO,MAAM,UAAU,EAAE,aAAa,CAAC,SAAS,CA8C7C,CAAA;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;CAW9B,CAAA;AAMD,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,QAAQ,CAyEnD,CAAA"}
@@ -26,4 +26,9 @@ export interface ICartItem<O = any> {
26
26
  /** This will be the ID used to stream video or retrieve audio. */
27
27
  MediaId: string;
28
28
  }
29
+ export interface ICartOptions {
30
+ localStorageKey?: string;
31
+ maxItems?: number;
32
+ maxLinks?: number;
33
+ }
29
34
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cart/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,GAAG;IAChC,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAA;IACjB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAA;IACtB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAA;IAGpB,OAAO,CAAC,EAAE,CAAC,CAAA;IAGX,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAA;IAClB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAA;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cart/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,GAAG;IAChC,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAA;IACjB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAA;IACtB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAA;IAGpB,OAAO,CAAC,EAAE,CAAC,CAAA;IAGX,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAA;IAClB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB"}
@@ -1 +1 @@
1
- {"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../../../src/cart/widget.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAsB,WAAW,EAAmC,MAAM,eAAe,CAAA;AAChG,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAIpD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEnC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAI1C,KAAK,gBAAgB,GAAG,eAAe,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAA;AAEhE,UAAU,gBAAgB;IACxB,OAAO,EAAE,eAAe,CAAA;IACxB,KAAK,CAAC,EAAE,SAAS,EAAE,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qBAAqB,CAAC,EAAE,WAAW,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACxC,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,GAAG,iBAAiB,EAAE,UAAU,CAAC,KAAK,IAAI,CAAA;IACpG,cAAc,CAAC,EAAE,gBAAgB,CAAA;IACjC,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,IAAI,KAAK,gBAAgB,CAAA;CACjF;AAED,UAAU,gBAAgB;IACxB,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,qBAAa,UAAW,SAAQ,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;gBAC/D,KAAK,EAAE,gBAAgB;IAKnC,IAAI,KAAK,qBAER;IAED,iBAAiB;IAKjB,MAAM,gDAmBL;IAED,aAAa,gDAuCZ;IAED,WAAW,SAAU,SAAS,6CAQ7B;IAED,UAAU,SAAU,SAAS,6CAyB5B;IAED,MAAM,WAAY,WAAW,UAE5B;IAED,OAAO,aAEN;CACF;AAED,eAAO,MAAM,gBAAgB,WAAY,gBAAgB,kCAIxD,CAAA"}
1
+ {"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../../../src/cart/widget.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAsB,WAAW,EAAmC,MAAM,eAAe,CAAA;AAChG,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAIpD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEnC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAI1C,KAAK,gBAAgB,GAAG,eAAe,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAA;AAEhE,UAAU,gBAAgB;IACxB,OAAO,EAAE,eAAe,CAAA;IACxB,KAAK,CAAC,EAAE,SAAS,EAAE,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qBAAqB,CAAC,EAAE,WAAW,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACxC,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,GAAG,iBAAiB,EAAE,UAAU,CAAC,KAAK,IAAI,CAAA;IACpG,cAAc,CAAC,EAAE,gBAAgB,CAAA;IACjC,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,IAAI,KAAK,gBAAgB,CAAA;CACjF;AAED,UAAU,gBAAgB;IACxB,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,qBAAa,UAAW,SAAQ,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;gBAC/D,KAAK,EAAE,gBAAgB;IAKnC,IAAI,KAAK,qBAER;IAED,iBAAiB;IAKjB,MAAM,gDAmBL;IAED,aAAa,gDAuCZ;IAED,WAAW,SAAU,SAAS,6CAS7B;IAED,UAAU,SAAU,SAAS,6CA0B5B;IAED,MAAM,WAAY,WAAW,UAE5B;IAED,OAAO,aAEN;CACF;AAED,eAAO,MAAM,gBAAgB,WAAY,gBAAgB,kCAIxD,CAAA"}
@@ -1,5 +1,5 @@
1
+ import type { ComponentType, FC } from 'react';
1
2
  import type { ButtonProps, IconButtonProps } from '@mui/material';
2
- import type { ComponentType } from 'react';
3
3
  export declare const ButtonOrange: ComponentType<ButtonProps & {
4
4
  [key: string]: any;
5
5
  }>;
@@ -7,4 +7,15 @@ export declare const IconButtonOrange: ComponentType<IconButtonProps & {
7
7
  [key: string]: any;
8
8
  }>;
9
9
  export declare const IconButtonDark: ComponentType<IconButtonProps>;
10
+ export interface IIconButtonConfirmProps {
11
+ onAccept: () => void;
12
+ size?: 'small' | 'medium' | 'large';
13
+ disabled?: boolean;
14
+ slots?: {
15
+ removeProps?: IconButtonProps;
16
+ confirmProps?: IconButtonProps;
17
+ cancelProps?: IconButtonProps;
18
+ };
19
+ }
20
+ export declare const IconButtonConfirm: FC<IIconButtonConfirmProps>;
10
21
  //# sourceMappingURL=buttons.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buttons.d.ts","sourceRoot":"","sources":["../../../src/components/buttons.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAS,MAAM,eAAe,CAAA;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAE1C,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,WAAW,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAgC3E,CAAA;AAEF,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,eAAe,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAWnF,CAAA;AAkBF,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,eAAe,CAYvD,CAAA"}
1
+ {"version":3,"file":"buttons.d.ts","sourceRoot":"","sources":["../../../src/components/buttons.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAS,MAAM,eAAe,CAAA;AAKxE,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,WAAW,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAgC3E,CAAA;AAEF,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,eAAe,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAWnF,CAAA;AAkBF,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,eAAe,CAYvD,CAAA;AAEH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE;QACN,WAAW,CAAC,EAAE,eAAe,CAAA;QAC7B,YAAY,CAAC,EAAE,eAAe,CAAA;QAC9B,WAAW,CAAC,EAAE,eAAe,CAAA;KAC9B,CAAA;CACF;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,uBAAuB,CAsCzD,CAAA"}
@@ -1,10 +1,10 @@
1
- import { IMediaRightGroup, IMediaRightItem, IMediaRightChannel } from './types';
2
1
  import { MediaRightEventStore } from './event-store';
2
+ import { IMediaRightGroup, IMediaRightItem, IMediaRightChannel, IMediaRightOptions } from './types';
3
3
  export interface IMediaRightMetadata<O = any> {
4
4
  version: string;
5
5
  groups: Record<string, IMediaRightGroup<O>>;
6
6
  }
7
- export interface IMediaRightProvider {
7
+ export interface IMediaRightProvider extends IMediaRightOptions {
8
8
  localStorageKey: string;
9
9
  store: MediaRightEventStore;
10
10
  }
@@ -12,7 +12,7 @@ export declare class MediaRightService<O = any> {
12
12
  static key_provider: string;
13
13
  static get provider(): IMediaRightProvider;
14
14
  static setProvider(provider: IMediaRightProvider): void;
15
- static setLocalStorageKey(key: string): void;
15
+ static setOptions(options: IMediaRightOptions): void;
16
16
  initialize(): void;
17
17
  subscribe(event: string, callback: (...args: any[]) => void): () => void;
18
18
  getGroups(): IMediaRightGroup<O>[];
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/media-right/service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAGpD,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,mBAAmB;IAClC,eAAe,EAAE,MAAM,CAAA;IACvB,KAAK,EAAE,oBAAoB,CAAA;CAC5B;AAOD,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,kBAAkB,CAAC,GAAG,EAAE,MAAM;IAMrC,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,WAAW,GAAG,OAAO,GAAG,UAAU,CAAC,GAAG,IAAI;IAwBpF,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI;IAgBvF,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQlC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,IAAI;IA0B9D,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAiBhG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAiB1D,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAepC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI;IA+BvC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAoB1F,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAgBpD,QAAQ,IAAI,IAAI;IAIhB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,kBAAkB;CAW3B;AAED,eAAO,MAAM,iBAAiB,wBAA0B,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;AAEnG,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,WAAW,GAAG,OAAO,GAAG,UAAU,CAAC,GAAG,IAAI;IAqBpF,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,kBAAkB,GAAG,IAAI;IAoB9D,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAiBhG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAc1D,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"}
@@ -58,4 +58,11 @@ export interface ICartSummary {
58
58
  totalItems: number;
59
59
  totalPrice: number;
60
60
  }
61
+ export interface IMediaRightOptions {
62
+ localStorageKey?: string;
63
+ maxItemsPerGroup?: number;
64
+ maxGroup?: number;
65
+ maxNameGroup?: number;
66
+ maxChannels?: number;
67
+ }
61
68
  //# sourceMappingURL=types.d.ts.map
@@ -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,kBAAkB;IACjC,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;;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"}
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,kBAAkB;IACjC,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;;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"}
@@ -1,5 +1,5 @@
1
- import { FC } from 'react';
2
1
  import { IconButtonProps } from '@mui/material';
2
+ import { FC } from 'react';
3
3
  import { IMenuBarBaseProps, IMenuBarConfig, IMenuBarItem, IMenuBarSubItem } from './types';
4
4
  interface IMenuBarHeaderProps {
5
5
  logoURL?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"units.d.ts","sourceRoot":"","sources":["../../../src/menu-bar/units.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAA8D,MAAM,OAAO,CAAA;AACtF,OAAO,EAAc,eAAe,EAAmC,MAAM,eAAe,CAAA;AAQ5F,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAI1F,UAAU,mBAAmB;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IACpC,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,mBAAmB,CAoBjD,CAAA;AAoBD,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,IAAI,EAAE,eAAe,GAAG,eAAe,EAAE,CAAA;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA0CD,eAAO,MAAM,UAAU,kJAAwB,CAAA;AAI/C,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,IAAI,EAAE,YAAY,CAAA;CACnB;AA8LD,eAAO,MAAM,WAAW,yDAAyB,CAAA;AAIjD,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,IAAI,EAAE,cAAc,CAAA;CACrB;AAED,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,kBAAkB,CAyC/C,CAAA"}
1
+ {"version":3,"file":"units.d.ts","sourceRoot":"","sources":["../../../src/menu-bar/units.tsx"],"names":[],"mappings":"AACA,OAAO,EAAc,eAAe,EAAgB,MAAM,eAAe,CAAA;AACzE,OAAO,EAAE,EAAE,EAA8D,MAAM,OAAO,CAAA;AAStF,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAI1F,UAAU,mBAAmB;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IACpC,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,mBAAmB,CAoBjD,CAAA;AAoBD,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,IAAI,EAAE,eAAe,GAAG,eAAe,EAAE,CAAA;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA0CD,eAAO,MAAM,UAAU,kJAAwB,CAAA;AAI/C,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,IAAI,EAAE,YAAY,CAAA;CACnB;AAgMD,eAAO,MAAM,WAAW,yDAAyB,CAAA;AAIjD,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,IAAI,EAAE,cAAc,CAAA;CACrB;AAED,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,kBAAkB,CAyC/C,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dinocollab-shared",
3
- "version": "1.2.16",
3
+ "version": "1.2.18",
4
4
  "description": "DinoCollab shared utilities and components",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",