dinocollab-shared 1.0.4 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_rollupPluginBabelHelpers.js +2 -2
- package/dist/auth/profile.js +1 -1
- package/dist/auth/profile.js.map +1 -1
- package/dist/auth/widget.js +1 -1
- package/dist/auth/widget.js.map +1 -1
- package/dist/cart/cart-store.js +1 -1
- package/dist/cart/cart-store.js.map +1 -1
- package/dist/cart/helpers.js +1 -1
- package/dist/cart/helpers.js.map +1 -1
- package/dist/cart/hook.js +1 -1
- package/dist/cart/hook.js.map +1 -1
- package/dist/cart/index.js +1 -1
- package/dist/cart/widget.js +1 -1
- package/dist/cart/widget.js.map +1 -1
- package/dist/layout-global/animated-tabs.units.js +1 -1
- package/dist/layout-global/animated-tabs.units.js.map +1 -1
- package/dist/layout-global/app-footer.js +1 -1
- package/dist/layout-global/app-footer.js.map +1 -1
- package/dist/layout-global/app-header.js +1 -1
- package/dist/layout-global/app-header.js.map +1 -1
- package/dist/layout-global/app-header.nav.js +1 -1
- package/dist/layout-global/app-header.nav.js.map +1 -1
- package/dist/layout-global/configs.js +1 -1
- package/dist/layout-global/configs.js.map +1 -1
- package/dist/layout-global/mobile-menu.js +1 -1
- package/dist/layout-global/mobile-menu.js.map +1 -1
- package/dist/layout-global/sub-menu.js +1 -1
- package/dist/layout-global/sub-menu.js.map +1 -1
- package/dist/layout-global/sub-menu.styled.js +1 -1
- package/dist/layout-global/sub-menu.styled.js.map +1 -1
- package/dist/layout-global/types.js.map +1 -1
- package/dist/types/auth/hook.d.ts +2 -0
- package/dist/types/auth/hook.d.ts.map +1 -0
- package/dist/types/auth/index.d.ts +1 -0
- package/dist/types/auth/index.d.ts.map +1 -1
- package/dist/types/auth/profile.d.ts +10 -17
- package/dist/types/auth/profile.d.ts.map +1 -1
- package/dist/types/auth/store.d.ts +2 -0
- package/dist/types/auth/store.d.ts.map +1 -0
- package/dist/types/auth/types.d.ts +18 -0
- package/dist/types/auth/types.d.ts.map +1 -0
- package/dist/types/auth/widget.d.ts +13 -3
- package/dist/types/auth/widget.d.ts.map +1 -1
- package/dist/types/cart/cart-store.d.ts +3 -15
- package/dist/types/cart/cart-store.d.ts.map +1 -1
- package/dist/types/cart/helpers.d.ts +10 -2
- package/dist/types/cart/helpers.d.ts.map +1 -1
- package/dist/types/cart/hook.d.ts +5 -2
- package/dist/types/cart/hook.d.ts.map +1 -1
- package/dist/types/cart/index.d.ts +1 -0
- package/dist/types/cart/index.d.ts.map +1 -1
- package/dist/types/cart/types.d.ts +5 -7
- package/dist/types/cart/types.d.ts.map +1 -1
- package/dist/types/cart/widget.d.ts +23 -5
- package/dist/types/cart/widget.d.ts.map +1 -1
- package/dist/types/layout-global/app-footer.d.ts +9 -4
- package/dist/types/layout-global/app-footer.d.ts.map +1 -1
- package/dist/types/layout-global/app-header.d.ts +11 -4
- package/dist/types/layout-global/app-header.d.ts.map +1 -1
- package/dist/types/layout-global/app-header.nav.d.ts +4 -14
- package/dist/types/layout-global/app-header.nav.d.ts.map +1 -1
- package/dist/types/layout-global/sub-menu.d.ts +6 -16
- package/dist/types/layout-global/sub-menu.d.ts.map +1 -1
- package/dist/types/layout-global/sub-menu.styled.d.ts +1 -0
- package/dist/types/layout-global/sub-menu.styled.d.ts.map +1 -1
- package/dist/types/layout-global/types.d.ts +13 -10
- package/dist/types/layout-global/types.d.ts.map +1 -1
- package/dist/types/types.d.ts +0 -3
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function t(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=Array(r);e<r;e++)n[e]=t[e];return n}function r(t){if(Array.isArray(t))return t}function e(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function n(t,r,e,n,o,i,
|
|
1
|
+
function t(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=Array(r);e<r;e++)n[e]=t[e];return n}function r(t){if(Array.isArray(t))return t}function e(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function n(t,r,e,n,o,i,u){try{var a=t[i](u),c=a.value}catch(t){return void e(t)}a.done?r(c):Promise.resolve(c).then(n,o)}function o(t){return function(){var r=this,e=arguments;return new Promise(function(o,i){var u=t.apply(r,e);function a(t){n(u,o,i,a,c,"next",t)}function c(t){n(u,o,i,a,c,"throw",t)}a(void 0)})}}function i(t,r,e){return r=l(r),m(t,p()?Reflect.construct(r,e||[],l(t).constructor):r.apply(t,e))}function u(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}function a(t,r,e){return r&&function(t,r){for(var e=0;e<r.length;e++){var n=r[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,E(n.key),n)}}(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function c(t,r,e){return(r=E(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function f(){return f="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(t,r,e){var n=S(t,r);if(n){var o=Object.getOwnPropertyDescriptor(n,r);return o.get?o.get.call(arguments.length<3?t:e):o.value}},f.apply(null,arguments)}function l(t){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},l(t)}function s(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&P(t,r)}function p(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(p=function(){return!!t})()}function y(t,r){var e=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=e){var n,o,i,u,a=[],c=!0,f=!1;try{if(i=(e=e.call(t)).next,0===r);else for(;!(c=(n=i.call(e)).done)&&(a.push(n.value),a.length!==r);c=!0);}catch(t){f=!0,o=t}finally{try{if(!c&&null!=e.return&&(u=e.return(),Object(u)!==u))return}finally{if(f)throw o}}return a}}function b(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function v(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter(function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable})),e.push.apply(e,n)}return e}function O(t){for(var r=1;r<arguments.length;r++){var e=null!=arguments[r]?arguments[r]:{};r%2?v(Object(e),!0).forEach(function(r){c(t,r,e[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):v(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))})}return t}function h(t,r){if(null==t)return{};var e,n,o=d(t,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)e=i[n],-1===r.indexOf(e)&&{}.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}function d(t,r){if(null==t)return{};var e={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==r.indexOf(n))continue;e[n]=t[n]}return e}function m(t,r){if(r&&("object"==typeof r||"function"==typeof r))return r;if(void 0!==r)throw new TypeError("Derived constructors may only return object or undefined");return e(t)}function g(){
|
|
2
2
|
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
|
|
3
|
-
var t,r,e="function"==typeof Symbol?Symbol:{},n=e.iterator||"@@iterator",o=e.toStringTag||"@@toStringTag";function i(e,n,o,i){var c=n&&n.prototype instanceof
|
|
3
|
+
var t,r,e="function"==typeof Symbol?Symbol:{},n=e.iterator||"@@iterator",o=e.toStringTag||"@@toStringTag";function i(e,n,o,i){var c=n&&n.prototype instanceof a?n:a,f=Object.create(c.prototype);return j(f,"_invoke",function(e,n,o){var i,a,c,f=0,l=o||[],s=!1,p={p:0,n:0,v:t,a:y,f:y.bind(t,4),d:function(r,e){return i=r,a=0,c=t,p.n=e,u}};function y(e,n){for(a=e,c=n,r=0;!s&&f&&!o&&r<l.length;r++){var o,i=l[r],y=p.p,b=i[2];e>3?(o=b===n)&&(c=i[(a=i[4])?5:(a=3,3)],i[4]=i[5]=t):i[0]<=y&&((o=e<2&&y<i[1])?(a=0,p.v=n,p.n=i[1]):y<b&&(o=e<3||i[0]>n||n>b)&&(i[4]=e,i[5]=n,p.n=b,a=0))}if(o||e>1)return u;throw s=!0,n}return function(o,l,b){if(f>1)throw TypeError("Generator is already running");for(s&&1===l&&y(l,b),a=l,c=b;(r=a<2?t:c)||!s;){i||(a?a<3?(a>1&&(p.n=-1),y(a,c)):p.n=c:p.v=c);try{if(f=2,i){if(a||(o="next"),r=i[o]){if(!(r=r.call(i,c)))throw TypeError("iterator result is not an object");if(!r.done)return r;c=r.value,a<2&&(a=0)}else 1===a&&(r=i.return)&&r.call(i),a<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),a=1);i=t}else if((r=(s=p.n<0)?c:e.call(n,p))!==u)break}catch(r){i=t,a=1,c=r}finally{f=1}}return{value:r,done:s}}}(e,o,i),!0),f}var u={};function a(){}function c(){}function f(){}r=Object.getPrototypeOf;var l=[][n]?r(r([][n]())):(j(r={},n,function(){return this}),r),s=f.prototype=a.prototype=Object.create(l);function p(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,f):(t.__proto__=f,j(t,o,"GeneratorFunction")),t.prototype=Object.create(s),t}return c.prototype=f,j(s,"constructor",f),j(f,"constructor",c),c.displayName="GeneratorFunction",j(f,o,"GeneratorFunction"),j(s),j(s,o,"Generator"),j(s,n,function(){return this}),j(s,"toString",function(){return"[object Generator]"}),(g=function(){return{w:i,m:p}})()}function j(t,r,e,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}j=function(t,r,e,n){function i(r,e){j(t,r,function(t){return this._invoke(r,e,t)})}r?o?o(t,r,{value:e,enumerable:!n,configurable:!n,writable:!n}):t[r]=e:(i("next",0),i("throw",1),i("return",2))},j(t,r,e,n)}function P(t,r){return P=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,r){return t.__proto__=r,t},P(t,r)}function w(t,e){return r(t)||y(t,e)||R(t,e)||b()}function S(t,r){for(;!{}.hasOwnProperty.call(t,r)&&null!==(t=l(t)););return t}function T(t,r,e,n){var o=f(l(t.prototype),r,e);return"function"==typeof o?function(t){return o.apply(e,t)}:o}function _(t,r){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,r);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}function E(t){var r=_(t,"string");return"symbol"==typeof r?r:r+""}function A(t){return A="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},A(t)}function R(r,e){if(r){if("string"==typeof r)return t(r,e);var n={}.toString.call(r).slice(8,-1);return"Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n?Array.from(r):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?t(r,e):void 0}}export{t as arrayLikeToArray,r as arrayWithHoles,e as assertThisInitialized,o as asyncToGenerator,i as callSuper,u as classCallCheck,a as createClass,c as defineProperty,f as get,l as getPrototypeOf,s as inherits,p as isNativeReflectConstruct,y as iterableToArrayLimit,b as nonIterableRest,O as objectSpread2,h as objectWithoutProperties,d as objectWithoutPropertiesLoose,m as possibleConstructorReturn,g as regenerator,j as regeneratorDefine,P as setPrototypeOf,w as slicedToArray,S as superPropBase,T as superPropGet,_ as toPrimitive,E as toPropertyKey,A as typeof,R as unsupportedIterableToArray};
|
|
4
4
|
//# sourceMappingURL=_rollupPluginBabelHelpers.js.map
|
package/dist/auth/profile.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as
|
|
1
|
+
import{inherits as t,createClass as o,objectSpread2 as e,defineProperty as r,classCallCheck as n,callSuper as a}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as l,jsx as i}from"react/jsx-runtime";import{Fragment as c,Component as s}from"react";import{Fade as d,Tooltip as u,IconButton as p,Avatar as h,Menu as m,Typography as v,Divider as f,MenuItem as g,Box as x,ListItemIcon as b,colors as C}from"@mui/material";import{getAvatarProps as k}from"../layout-global/helpers.js";var y={root:"AvatarButton-root",title:"AvatarButton-title",content:"AvatarButton-content",item:"AvatarButton-item"},I=function(t,o){return"".concat("",".").concat(y[t]).concat("")},M=function(){function C(t){var o;return n(this,C),o=a(this,C,[t]),r(o,"toggle",function(){return o.setState({isOpen:!o.state.isOpen})}),r(o,"handleClick",function(t){o.setState({element:t.currentTarget})}),r(o,"handleClose",function(){o.setState({element:null})}),o.state={isOpen:!1,element:null},o}return t(C,s),o(C,[{key:"render",value:function(){var t,o=this.props.profile,r=(null==o?void 0:o.UserName)||"Guest";return l(c,{children:[i(d,{in:!0,children:i(u,{title:"Account settings",children:i(p,{onClick:this.handleClick,size:"small","aria-controls":this.state.element?"account-menu":void 0,"aria-haspopup":"true","aria-expanded":this.state.element?"true":void 0,children:i(h,e({src:null!==(t=null==o?void 0:o.AvatarUrl)&&void 0!==t?t:""},k(r)))})})}),l(m,{anchorEl:this.state.element,id:"account-menu",disableScrollLock:!0,open:!!this.state.element,onClose:this.handleClose,onClick:this.handleClose,MenuListProps:{component:"div"},slotProps:{paper:S(this.props.theme)},transformOrigin:{horizontal:"right",vertical:"top"},anchorOrigin:{horizontal:"right",vertical:"bottom"},children:[i("div",{className:y.content,onClick:function(t){return t.stopPropagation()},children:l(v,{variant:"subtitle1",noWrap:!0,className:y.title,children:["Hello, ",r]})}),i(f,{variant:"middle",sx:{my:1}}),this.props.menuConfigs.map(function(t,o){return i(g,{children:l(x,e(e({className:y.item},t.href?{component:"a",href:t.href}:{}),{},{onClick:t.onClick,children:[i(b,{children:t.icon}),t.title]}))},o)})]})]})}}])}(),S=function(){var t="light"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"dark"),o=t?"#fff":"#323234",e=t?"#000":"#fff",n=t?C.blue[600]:"#e78a3f",a=t?C.grey[200]:C.grey[700];return{elevation:0,sx:r(r(r(r(r(r(r(r({"--color-background":o,"--color-text":e,"--color-text-secondary":n,"--color-divider":a,minWidth:"200px",overflow:"visible",filter:"drop-shadow(0px 2px 8px rgba(0,0,0,0.32))",mt:1.5,bgcolor:"var(--color-background)",color:"var(--color-text)"},I("content"),{padding:"16px 24px 8px",display:"flex",alignItems:"center",gap:1}),I("title"),{fontWeight:"600",color:"var(--color-text)"}),I("item"),{padding:"6px 16px",textDecoration:"none",color:"currentColor",display:"flex",alignItems:"center",gap:"8px"}),"& .MuiAvatar-root",{width:32,height:32,ml:-.5,mr:1,bgcolor:"var(--color-avatar-bg)",color:"var(--color-avatar-text)"}),"& .MuiMenuItem-root",{padding:0,transition:"all 0.3s",color:"var(--color-text)",".MuiSvgIcon-root":{transition:"all 0.2s",transform:"translateX(0px) scale(1)"},"&:hover":{color:"var(--color-text-secondary)",backgroundColor:"var(--color-divider)",".MuiSvgIcon-root":{color:"var(--color-text-secondary)",transform:"translateX(4px) scale(1.2)"}}}),"& .MuiListItemIcon-root",{color:"var(--color-text)"}),"& .MuiDivider-root",{borderColor:"var(--color-divider)"}),"&:before",{content:'""',display:"block",position:"absolute",top:0,right:20,width:10,height:10,bgcolor:"var(--color-background)",transform:"translateY(-50%) rotate(45deg)",zIndex:0})}};export{M as Profile,M as default,y as profileClasses};
|
|
2
2
|
//# sourceMappingURL=profile.js.map
|
package/dist/auth/profile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","sources":["../../src/auth/profile.tsx"],"sourcesContent":["import { Component, Fragment } from 'react'\r\nimport type { PropsWithChildren, MouseEvent as RMouseEvent } from 'react'\r\nimport { MfeLink } from 'dinocollab-core/mfe-shared'\r\nimport { Box, MenuItem, Divider, IconButton, Tooltip, colors } from '@mui/material'\r\nimport { Avatar, Fade, ListItemIcon, Menu, PaperProps, Typography } from '@mui/material'\r\nimport Logout from '@mui/icons-material/Logout'\r\nimport ManageAccountsIcon from '@mui/icons-material/ManageAccounts'\r\nimport { getAvatarProps } from '../layout-global/helpers'\r\nimport type { IAppSiteProps } from '../types'\r\n\r\nexport const avatarButtonClasses = {\r\n root: 'AvatarButton-root',\r\n title: 'AvatarButton-title'\r\n}\r\n\r\ninterface IAvatarButtonProps extends PropsWithChildren, IAppSiteProps {\r\n userName?: string\r\n // logoutPath?: any\r\n // profilePath?: string\r\n urlAvatar?: string\r\n /* Optional: theme prop to switch between light and dark themes\r\n * If not provided, defaults to 'dark'.\r\n * This can be used to apply different styles based on the theme.\r\n */\r\n theme?: 'dark' | 'light'\r\n onLogout?: (event: RMouseEvent<HTMLAnchorElement, MouseEvent>) => void\r\n profileHref?: { primary: string; secondary?: string }\r\n logoutHref?: { primary: string; secondary?: string }\r\n}\r\n\r\ninterface IAvatarButtonState {\r\n isOpen: boolean\r\n element: HTMLElement | null\r\n}\r\n\r\nexport class Profile extends Component<IAvatarButtonProps, IAvatarButtonState> {\r\n constructor(props: IAvatarButtonProps) {\r\n super(props)\r\n this.state = {\r\n isOpen: false,\r\n element: null\r\n }\r\n }\r\n\r\n toggle = () => this.setState({ isOpen: !this.state.isOpen })\r\n\r\n handleClick = (event: RMouseEvent<HTMLElement>) => {\r\n this.setState({ element: event.currentTarget })\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ element: null })\r\n }\r\n\r\n render() {\r\n const { logoutHref, profileHref } = this.props\r\n const usename = this.props.userName || 'Guest'\r\n return (\r\n <Fragment>\r\n <Fade in>\r\n <Tooltip title='Account settings'>\r\n <IconButton\r\n onClick={this.handleClick}\r\n size='small'\r\n aria-controls={this.state.element ? 'account-menu' : undefined}\r\n aria-haspopup='true'\r\n aria-expanded={this.state.element ? 'true' : undefined}\r\n >\r\n <Avatar src={this.props.urlAvatar} {...getAvatarProps(usename)} />\r\n </IconButton>\r\n </Tooltip>\r\n </Fade>\r\n <Menu\r\n anchorEl={this.state.element}\r\n id='account-menu'\r\n disableScrollLock\r\n open={!!this.state.element}\r\n onClose={this.handleClose}\r\n onClick={this.handleClose}\r\n MenuListProps={{ component: 'div' }}\r\n slotProps={{ paper: getStylePaper(this.props.theme) }}\r\n transformOrigin={{ horizontal: 'right', vertical: 'top' }}\r\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\r\n >\r\n <Box\r\n sx={{ px: 2, pt: 1, pb: 0.5, display: 'flex', alignItems: 'center', gap: 1 }}\r\n component='div'\r\n onClick={(e: RMouseEvent<HTMLDivElement, MouseEvent>) => e.stopPropagation()}\r\n >\r\n <Typography variant='subtitle1' noWrap className={avatarButtonClasses.title}>\r\n Hello, {usename}\r\n </Typography>\r\n </Box>\r\n <Divider variant='middle' sx={{ my: 1 }} />\r\n <MenuItem>\r\n <MfeLink\r\n internal={this.props?.site === 'client'}\r\n primaryHref={profileHref?.primary ?? '/profile'}\r\n secondaryHref={profileHref?.secondary ?? 'profile'}\r\n >\r\n <ListItemIcon>\r\n <ManageAccountsIcon fontSize='small' />\r\n </ListItemIcon>\r\n Manage Profile\r\n </MfeLink>\r\n </MenuItem>\r\n <MenuItem>\r\n <MfeLink\r\n primaryHref={logoutHref?.primary ?? '/authentication/logout'}\r\n secondaryHref={logoutHref?.secondary ?? 'logout'}\r\n onClick={this.props.onLogout}\r\n >\r\n <ListItemIcon>\r\n <Logout fontSize='small' />\r\n </ListItemIcon>\r\n Logout\r\n </MfeLink>\r\n </MenuItem>\r\n </Menu>\r\n </Fragment>\r\n )\r\n }\r\n}\r\nexport default Profile\r\n\r\nconst getStylePaper = (theme: 'dark' | 'light' = 'dark'): Partial<PaperProps<'div', {}>> => {\r\n const isLightTheme = theme === 'light'\r\n const backgroundColor = isLightTheme ? '#fff' : '#323234'\r\n const textColor = isLightTheme ? '#000' : '#fff'\r\n const textSecondaryColor = isLightTheme ? colors.blue[600] : '#e78a3f'\r\n const dividerColor = isLightTheme ? colors.grey[200] : colors.grey[700]\r\n return {\r\n elevation: 0,\r\n sx: {\r\n '--color-background': backgroundColor,\r\n '--color-text': textColor,\r\n '--color-text-secondary': textSecondaryColor,\r\n '--color-divider': dividerColor,\r\n\r\n minWidth: '200px',\r\n overflow: 'visible',\r\n filter: 'drop-shadow(0px 2px 8px rgba(0,0,0,0.32))',\r\n mt: 1.5,\r\n bgcolor: 'var(--color-background)', // dark background\r\n color: 'var(--color-text)', // white text,\r\n [`& .${avatarButtonClasses.title}`]: {\r\n fontWeight: '600',\r\n color: 'var(--color-text)'\r\n },\r\n '& .MuiAvatar-root': {\r\n width: 32,\r\n height: 32,\r\n ml: -0.5,\r\n mr: 1,\r\n bgcolor: 'var(--color-avatar-bg)',\r\n color: 'var(--color-avatar-text)'\r\n },\r\n '& .MuiMenuItem-root': {\r\n a: {\r\n padding: '6px 16px',\r\n textDecoration: 'none',\r\n color: 'currentColor',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px'\r\n },\r\n padding: 0,\r\n transition: 'all 0.3s',\r\n color: 'var(--color-text)',\r\n '.MuiSvgIcon-root': {\r\n transition: 'all 0.2s',\r\n transform: 'translateX(0px) scale(1)'\r\n },\r\n '&:hover': {\r\n color: 'var(--color-text-secondary)',\r\n backgroundColor: 'var(--color-divider)',\r\n '.MuiSvgIcon-root': {\r\n color: 'var(--color-text-secondary)',\r\n transform: 'translateX(4px) scale(1.2)'\r\n }\r\n }\r\n },\r\n '& .MuiListItemIcon-root': {\r\n color: 'var(--color-text)'\r\n },\r\n '& .MuiDivider-root': {\r\n borderColor: 'var(--color-divider)'\r\n },\r\n '&:before': {\r\n content: '\"\"',\r\n display: 'block',\r\n position: 'absolute',\r\n top: 0,\r\n right: 20,\r\n width: 10,\r\n height: 10,\r\n bgcolor: 'var(--color-background)',\r\n transform: 'translateY(-50%) rotate(45deg)',\r\n zIndex: 0\r\n }\r\n }\r\n }\r\n}\r\n"],"names":["avatarButtonClasses","title","Profile","props","_this","_classCallCheck","_callSuper","_defineProperty","setState","isOpen","state","event","element","currentTarget","_inherits","Component","_createClass","key","value","_this$props2","_profileHref$primary","_profileHref$secondar","_logoutHref$primary","_logoutHref$secondary","_this$props","this","logoutHref","profileHref","usename","userName","_jsxs","Fragment","children","_jsx","Fade","in","Tooltip","IconButton","onClick","handleClick","size","undefined","Avatar","_objectSpread","src","urlAvatar","getAvatarProps","Menu","anchorEl","id","disableScrollLock","open","onClose","handleClose","MenuListProps","component","slotProps","paper","getStylePaper","theme","transformOrigin","horizontal","vertical","anchorOrigin","Box","sx","px","pt","pb","display","alignItems","gap","e","stopPropagation","Typography","variant","noWrap","className","Divider","my","MenuItem","MfeLink","internal","site","primaryHref","primary","secondaryHref","secondary","ListItemIcon","ManageAccountsIcon","fontSize","onLogout","Logout","isLightTheme","arguments","length","backgroundColor","textColor","textSecondaryColor","colors","blue","dividerColor","grey","elevation","minWidth","overflow","filter","mt","bgcolor","color","concat","fontWeight","width","height","ml","mr","a","padding","textDecoration","transition","transform","borderColor","content","position","top","right","zIndex"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"profile.js","sources":["../../src/auth/profile.tsx"],"sourcesContent":["import { Component, Fragment } from 'react'\r\nimport type { PropsWithChildren } from 'react'\r\nimport { Box, MenuItem, Divider, IconButton, Tooltip, colors } from '@mui/material'\r\nimport { Avatar, Fade, ListItemIcon, Menu, PaperProps, Typography } from '@mui/material'\r\nimport { getAvatarProps } from '../layout-global/helpers'\r\nimport type { IIMenuConfigs, IProfile } from './types'\r\n\r\nexport const profileClasses = {\r\n root: 'AvatarButton-root',\r\n title: 'AvatarButton-title',\r\n content: 'AvatarButton-content',\r\n item: 'AvatarButton-item'\r\n}\r\n\r\nconst getClasses = (key: keyof typeof profileClasses, options?: { prefix?: string; suffix?: string }) => {\r\n return `${options?.prefix || ''}.${profileClasses[key]}${options?.suffix || ''}`\r\n}\r\n\r\nexport interface IAvatarButtonProps extends PropsWithChildren {\r\n profile: IProfile | null\r\n menuConfigs: IIMenuConfigs\r\n theme?: 'dark' | 'light'\r\n}\r\n\r\nexport interface IAvatarButtonState {\r\n isOpen: boolean\r\n element: HTMLElement | null\r\n}\r\n\r\nexport class Profile extends Component<IAvatarButtonProps, IAvatarButtonState> {\r\n constructor(props: IAvatarButtonProps) {\r\n super(props)\r\n this.state = {\r\n isOpen: false,\r\n element: null\r\n }\r\n }\r\n\r\n toggle = () => this.setState({ isOpen: !this.state.isOpen })\r\n\r\n handleClick = (event: React.MouseEvent<HTMLElement>) => {\r\n this.setState({ element: event.currentTarget })\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ element: null })\r\n }\r\n\r\n render() {\r\n const { profile } = this.props\r\n const userName = profile?.UserName || 'Guest'\r\n return (\r\n <Fragment>\r\n <Fade in>\r\n <Tooltip title='Account settings'>\r\n <IconButton\r\n onClick={this.handleClick}\r\n size='small'\r\n aria-controls={this.state.element ? 'account-menu' : undefined}\r\n aria-haspopup='true'\r\n aria-expanded={this.state.element ? 'true' : undefined}\r\n >\r\n <Avatar src={profile?.AvatarUrl ?? ''} {...getAvatarProps(userName)} />\r\n </IconButton>\r\n </Tooltip>\r\n </Fade>\r\n <Menu\r\n anchorEl={this.state.element}\r\n id='account-menu'\r\n disableScrollLock\r\n open={!!this.state.element}\r\n onClose={this.handleClose}\r\n onClick={this.handleClose}\r\n MenuListProps={{ component: 'div' }}\r\n slotProps={{ paper: getStylePaper(this.props.theme) }}\r\n transformOrigin={{ horizontal: 'right', vertical: 'top' }}\r\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\r\n >\r\n <div className={profileClasses.content} onClick={(e: React.MouseEvent<HTMLDivElement, MouseEvent>) => e.stopPropagation()}>\r\n <Typography variant='subtitle1' noWrap className={profileClasses.title}>\r\n Hello, {userName}\r\n </Typography>\r\n </div>\r\n <Divider variant='middle' sx={{ my: 1 }} />\r\n {this.props.menuConfigs.map((menuConfig, index) => (\r\n <MenuItem key={index}>\r\n <Box\r\n className={profileClasses.item}\r\n {...(menuConfig.href ? { component: 'a', href: menuConfig.href } : {})}\r\n onClick={menuConfig.onClick}\r\n >\r\n <ListItemIcon>{menuConfig.icon}</ListItemIcon>\r\n {menuConfig.title}\r\n </Box>\r\n </MenuItem>\r\n ))}\r\n </Menu>\r\n </Fragment>\r\n )\r\n }\r\n}\r\nexport default Profile\r\n\r\nconst getStylePaper = (theme: 'dark' | 'light' = 'dark'): Partial<PaperProps<'div', {}>> => {\r\n const isLightTheme = theme === 'light'\r\n const backgroundColor = isLightTheme ? '#fff' : '#323234'\r\n const textColor = isLightTheme ? '#000' : '#fff'\r\n const textSecondaryColor = isLightTheme ? colors.blue[600] : '#e78a3f'\r\n const dividerColor = isLightTheme ? colors.grey[200] : colors.grey[700]\r\n return {\r\n elevation: 0,\r\n sx: {\r\n '--color-background': backgroundColor,\r\n '--color-text': textColor,\r\n '--color-text-secondary': textSecondaryColor,\r\n '--color-divider': dividerColor,\r\n\r\n minWidth: '200px',\r\n overflow: 'visible',\r\n filter: 'drop-shadow(0px 2px 8px rgba(0,0,0,0.32))',\r\n mt: 1.5,\r\n bgcolor: 'var(--color-background)', // dark background\r\n color: 'var(--color-text)', // white text,\r\n [getClasses('content')]: {\r\n padding: '16px 24px 8px', //theme.spacing(1, 2, 0.5),\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: 1\r\n },\r\n [getClasses('title')]: {\r\n fontWeight: '600',\r\n color: 'var(--color-text)'\r\n },\r\n\r\n [getClasses('item')]: {\r\n padding: '6px 16px',\r\n textDecoration: 'none',\r\n color: 'currentColor',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px'\r\n },\r\n '& .MuiAvatar-root': {\r\n width: 32,\r\n height: 32,\r\n ml: -0.5,\r\n mr: 1,\r\n bgcolor: 'var(--color-avatar-bg)',\r\n color: 'var(--color-avatar-text)'\r\n },\r\n '& .MuiMenuItem-root': {\r\n padding: 0,\r\n transition: 'all 0.3s',\r\n color: 'var(--color-text)',\r\n '.MuiSvgIcon-root': {\r\n transition: 'all 0.2s',\r\n transform: 'translateX(0px) scale(1)'\r\n },\r\n '&:hover': {\r\n color: 'var(--color-text-secondary)',\r\n backgroundColor: 'var(--color-divider)',\r\n '.MuiSvgIcon-root': {\r\n color: 'var(--color-text-secondary)',\r\n transform: 'translateX(4px) scale(1.2)'\r\n }\r\n }\r\n },\r\n '& .MuiListItemIcon-root': {\r\n color: 'var(--color-text)'\r\n },\r\n '& .MuiDivider-root': {\r\n borderColor: 'var(--color-divider)'\r\n },\r\n '&:before': {\r\n content: '\"\"',\r\n display: 'block',\r\n position: 'absolute',\r\n top: 0,\r\n right: 20,\r\n width: 10,\r\n height: 10,\r\n bgcolor: 'var(--color-background)',\r\n transform: 'translateY(-50%) rotate(45deg)',\r\n zIndex: 0\r\n }\r\n }\r\n }\r\n}\r\n"],"names":["profileClasses","root","title","content","item","getClasses","key","options","concat","Profile","props","_this","_classCallCheck","_callSuper","_defineProperty","setState","isOpen","state","event","element","currentTarget","_inherits","Component","_createClass","value","_profile$AvatarUrl","profile","this","userName","UserName","_jsxs","Fragment","children","_jsx","Fade","in","Tooltip","IconButton","onClick","handleClick","size","undefined","Avatar","_objectSpread","src","AvatarUrl","getAvatarProps","Menu","anchorEl","id","disableScrollLock","open","onClose","handleClose","MenuListProps","component","slotProps","paper","getStylePaper","theme","transformOrigin","horizontal","vertical","anchorOrigin","className","e","stopPropagation","Typography","variant","noWrap","Divider","sx","my","menuConfigs","map","menuConfig","index","MenuItem","Box","href","ListItemIcon","icon","isLightTheme","arguments","length","backgroundColor","textColor","textSecondaryColor","colors","blue","dividerColor","grey","elevation","minWidth","overflow","filter","mt","bgcolor","color","padding","display","alignItems","gap","fontWeight","textDecoration","width","height","ml","mr","transition","transform","borderColor","position","top","right","zIndex"],"mappings":"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"}
|
package/dist/auth/widget.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{objectSpread2 as
|
|
1
|
+
import{objectSpread2 as o}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i}from"react/jsx-runtime";import{Typography as n}from"@mui/material";import r from"@mui/icons-material/Logout";import e from"@mui/icons-material/Login";import t from"@mui/icons-material/ManageAccounts";import{AppButtonOrange as l,AppIconButtonOrange as a}from"../layout-global/ui.units.js";import{Profile as m}from"./profile.js";import f from"../components/responsive-display.js";var c=function(c){var u,s,p=c.isAuthenticated,g=c.profile;return c.isLoading?null:p?i(m,{profile:g,menuConfigs:[{title:"Manage Profile",icon:i(t,{fontSize:"small"}),href:c.hrefProfile,onClick:c.onProfileClick},{title:"Logout",icon:i(r,{fontSize:"small"}),href:c.hrefLogout,onClick:c.onLogoutClick}]}):i(f,{xs:i(a,o(o({},{component:"a",href:null!==(u=c.hrefLogin)&&void 0!==u?u:"/"}),{},{onClick:c.onLoginClick,children:i(e,{fontSize:"small"})})),md:i(l,o(o({className:"animate-bounce",startIcon:i(e,{fontSize:"small"})},{component:"a",href:null!==(s=c.hrefLogin)&&void 0!==s?s:"/"}),{},{onClick:c.onLoginClick,children:i(n,{variant:"h6",children:"Login"})}))})},u=function(n){var r=function(r){return i(c,o(o({},n),r))};return r.displayName="AuthWidget",r};export{c as AuthWidget,u as createAuthWidget,c as default};
|
|
2
2
|
//# sourceMappingURL=widget.js.map
|
package/dist/auth/widget.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget.js","sources":["../../src/auth/widget.tsx"],"sourcesContent":["import { FC } from 'react'\r\nimport { Typography } from '@mui/material'\r\nimport
|
|
1
|
+
{"version":3,"file":"widget.js","sources":["../../src/auth/widget.tsx"],"sourcesContent":["import { FC } from 'react'\r\nimport { Typography } from '@mui/material'\r\nimport Logout from '@mui/icons-material/Logout'\r\nimport LoginIcon from '@mui/icons-material/Login'\r\nimport ManageAccountsIcon from '@mui/icons-material/ManageAccounts'\r\nimport { AppButtonOrange, AppIconButtonOrange } from '../layout-global/ui.units'\r\nimport type { IAuthState } from './types'\r\nimport type { IAppSiteBaseUrl } from '../types'\r\nimport Profile from './profile'\r\nimport ResponsiveDisplay from '../components/responsive-display'\r\n\r\nexport interface ICreateAuthBase {\r\n baseUrl: IAppSiteBaseUrl\r\n hrefProfile?: string\r\n onProfileClick?: (e: React.MouseEvent<HTMLAnchorElement | HTMLDivElement, MouseEvent>) => void\r\n hrefLogin?: string\r\n onLoginClick?: (e: React.MouseEvent<HTMLAnchorElement | HTMLDivElement, MouseEvent>) => void\r\n hrefLogout?: string\r\n onLogoutClick?: (e: React.MouseEvent<HTMLAnchorElement | HTMLDivElement, MouseEvent>) => void\r\n}\r\n\r\nexport interface IAuthWidgetProps extends IAuthState, ICreateAuthBase {}\r\n\r\n// interface IAuthWidgetBaseProps extends IAuthWidgetProps {}\r\n\r\nexport const AuthWidget: FC<IAuthWidgetProps> = (props) => {\r\n const { isAuthenticated, profile, isLoading } = props\r\n if (isLoading) return null\r\n\r\n if (!isAuthenticated) {\r\n return (\r\n <ResponsiveDisplay\r\n xs={\r\n <AppIconButtonOrange {...{ component: 'a', href: props.hrefLogin ?? '/' }} onClick={props.onLoginClick as any}>\r\n <LoginIcon fontSize='small' />\r\n </AppIconButtonOrange>\r\n }\r\n md={\r\n <AppButtonOrange\r\n className='animate-bounce'\r\n startIcon={<LoginIcon fontSize='small' />}\r\n {...{ component: 'a', href: props.hrefLogin ?? '/' }}\r\n onClick={props.onLoginClick as any}\r\n >\r\n <Typography variant='h6'>Login</Typography>\r\n </AppButtonOrange>\r\n }\r\n />\r\n )\r\n }\r\n\r\n // If the user is authenticated, display the AuthWidget with user details\r\n return (\r\n <Profile\r\n profile={profile}\r\n menuConfigs={[\r\n {\r\n title: 'Manage Profile',\r\n icon: <ManageAccountsIcon fontSize='small' />,\r\n href: props.hrefProfile,\r\n onClick: props.onProfileClick\r\n },\r\n { title: 'Logout', icon: <Logout fontSize='small' />, href: props.hrefLogout, onClick: props.onLogoutClick }\r\n ]}\r\n />\r\n )\r\n}\r\n\r\n// const AuthWidget: FC<IAuthWidgetProps> = (props) => {\r\n// const { profile, isAuthenticated, isLoading, ...otherProps } = props\r\n// const authState: IAuthState = { profile, isAuthenticated, isLoading }\r\n// const currentAuth = useAuth()\r\n// const { setState } = useAuthActions()\r\n\r\n// useEffect(() => {\r\n// setState(authState)\r\n// return () => {}\r\n// }, [JSON.stringify(authState)])\r\n\r\n// return <AuthWidgetBase profile={currentAuth.profile} {...otherProps} />\r\n// }\r\n\r\nexport default AuthWidget\r\n\r\nexport const createAuthWidget = (params: ICreateAuthBase) => {\r\n const _AuthWidget: FC<Omit<IAuthWidgetProps, 'baseUrl'>> = (props) => <AuthWidget {...params} {...props} />\r\n _AuthWidget.displayName = 'AuthWidget'\r\n return _AuthWidget\r\n}\r\n"],"names":["AuthWidget","props","_props$hrefLogin","_props$hrefLogin2","isAuthenticated","profile","isLoading","_jsx","Profile","menuConfigs","title","icon","ManageAccountsIcon","fontSize","href","hrefProfile","onClick","onProfileClick","Logout","hrefLogout","onLogoutClick","ResponsiveDisplay","xs","AppIconButtonOrange","_objectSpread","component","hrefLogin","onLoginClick","LoginIcon","md","AppButtonOrange","className","startIcon","children","Typography","variant","createAuthWidget","params","_AuthWidget","displayName"],"mappings":"udAyBaA,EAAmC,SAACC,GAC/C,IAGsBC,EAAAC,EAHdC,EAAwCH,EAAxCG,gBAAiBC,EAAuBJ,EAAvBI,QACzB,OADgDJ,EAAdK,UACZ,KAEjBF,EAwBHG,EAACC,EAAO,CACNH,QAASA,EACTI,YAAa,CACX,CACEC,MAAO,iBACPC,KAAMJ,EAACK,GAAmBC,SAAS,UACnCC,KAAMb,EAAMc,YACZC,QAASf,EAAMgB,gBAEjB,CAAEP,MAAO,SAAUC,KAAMJ,EAACW,EAAO,CAAAL,SAAS,UAAYC,KAAMb,EAAMkB,WAAYH,QAASf,EAAMmB,kBA/B/Fb,EAACc,GACCC,GACEf,EAACgB,EAAmBC,EAAAA,EAAK,CAAA,EAAA,CAAEC,UAAW,IAAKX,KAAqBZ,QAAjBA,EAAED,EAAMyB,iBAASxB,IAAAA,EAAAA,EAAI,MAAK,CAAA,EAAA,CAAEc,QAASf,EAAM0B,sBACxFpB,EAACqB,GAAUf,SAAS,aAGxBgB,GACEtB,EAACuB,EAAeN,EAAAA,EAAA,CACdO,UAAU,iBACVC,UAAWzB,EAACqB,GAAUf,SAAS,WAC3B,CAAEY,UAAW,IAAKX,KAAqBX,QAAjBA,EAAEF,EAAMyB,iBAASvB,IAAAA,EAAAA,EAAI,MAAK,CAAA,EAAA,CACpDa,QAASf,EAAM0B,aAAmBM,SAElC1B,EAAC2B,EAAU,CAACC,QAAQ,4BAsBhC,EAkBaC,EAAmB,SAACC,GAC/B,IAAMC,EAAqD,SAACrC,GAAK,OAAKM,EAACP,EAAUwB,EAAAA,EAAA,CAAA,EAAKa,GAAYpC,GAAS,EAE3G,OADAqC,EAAYC,YAAc,aACnBD,CACT"}
|
package/dist/cart/cart-store.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createClass as
|
|
1
|
+
import{createClass as e,objectSpread2 as t,typeof as i,classCallCheck as a,defineProperty as r,inherits as n,superPropGet as o,callSuper as s}from"../_virtual/_rollupPluginBabelHelpers.js";import l from"events";var u=function(){function t(){var e;return a(this,t),e=s(this,t),r(e,"_createWrapListener",function(e){return function(){try{e.apply(void 0,arguments)}catch(e){console.error("Error in MfeBridge listener:",e)}}}),e}return n(t,l),e(t,[{key:"subscribe",value:function(e,i){var a=this,r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2]?this._createWrapListener(i):i;return o(t,"addListener",this)([e,r]),function(){o(t,"removeListener",a)([e,r])}}}])}();function c(){return void 0===("undefined"==typeof globalThis?"undefined":i(globalThis))?null:(void 0===globalThis.CartEventStore&&(globalThis.CartEventStore=new u),globalThis.CartEventStore)}var h=function(){return e(function e(t){var i=this;a(this,e),r(this,"initialize",function(){var e=c();null==e||e.subscribe("requestState",function(){null==e||e.emit("stateChange",{items:i.getState()})})}),r(this,"destroy",function(){var e=c();null==e||e.removeAllListeners("requestState")}),this.configs=t,this.configs.localStorageKey||(this.configs.localStorageKey="cartItems"),this.initialize()},[{key:"emitStateChange",value:function(e){var t=c();this.saveToLocalStorage(e),null==t||t.emit("stateChange",{items:e,options:{message:"Cart items updated"}})}},{key:"add",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.getState();return!t&&this.configs.idGetter(e)in i||(i[this.configs.idGetter(e)]=e),this.emitStateChange(i),this}},{key:"addMany",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=this.getState();return e.forEach(function(e){!i&&t.configs.idGetter(e)in a||(a[t.configs.idGetter(e)]=e)}),this.emitStateChange(a),this}},{key:"updateOrAdd",value:function(e,i){var a=this.getState(),r=a[e];return a[e]=r?t(t({},r),i):i,this.emitStateChange(a),this}},{key:"remove",value:function(e){var t=this.getState();return e in t&&(delete t[e],this.emitStateChange(t)),this}},{key:"clear",value:function(){return this.emitStateChange({}),this}},{key:"getState",value:function(){return this.loadFromLocalStorage()||{}}},{key:"getItems",value:function(){var e=this.getState();return Array.isArray(e)?e:Object.values(e)}},{key:"loadFromLocalStorage",value:function(){if("undefined"!=typeof globalThis&&globalThis.localStorage){var e=localStorage.getItem(this.configs.localStorageKey||"cartItems");if(e)return JSON.parse(e)}}},{key:"saveToLocalStorage",value:function(e){"undefined"!=typeof globalThis&&globalThis.localStorage&&(this.configs.localStorageKey?localStorage.setItem(this.configs.localStorageKey,JSON.stringify(e)):console.warn("No localStorageKey provided, skipping storage"))}}])}();export{u as CartEventStore,h as MfeCartStore,c as getCartEventStore};
|
|
2
2
|
//# sourceMappingURL=cart-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cart-store.js","sources":["../../src/cart/cart-store.ts"],"sourcesContent":["import EventEmitter from 'events'\r\n\r\nexport type IIdGetter<T = any> = (item: T) => string\r\n\r\ntype IItem = Record<string, any>\r\n\r\ninterface IEventOptions {\r\n message?: string\r\n}\r\n\r\nexport interface ICartEventConfigs {\r\n stateChange: [{ items: IItem; options?: IEventOptions }]\r\n requestState: [{ options?: IEventOptions }]\r\n
|
|
1
|
+
{"version":3,"file":"cart-store.js","sources":["../../src/cart/cart-store.ts"],"sourcesContent":["import EventEmitter from 'events'\r\n\r\nexport type IIdGetter<T = any> = (item: T) => string\r\n\r\ntype IItem = Record<string, any>\r\n\r\ninterface IEventOptions {\r\n message?: string\r\n}\r\n\r\nexport interface ICartEventConfigs {\r\n stateChange: [{ items: IItem; options?: IEventOptions }]\r\n requestState: [{ options?: IEventOptions }]\r\n}\r\n\r\nexport class CartEventStore extends EventEmitter<ICartEventConfigs> {\r\n constructor() {\r\n super()\r\n }\r\n /**\r\n * Subscribe to a specific channel\r\n * @param channel The channel to subscribe to\r\n * @param callback Function to call when an event occurs on this channel\r\n * @returns Unsubscribe function to remove the event listener\r\n */\r\n _createWrapListener = (callback: (...payload: any[]) => void) => {\r\n return (...payload: any[]) => {\r\n try {\r\n callback(...payload)\r\n } catch (error) {\r\n console.error('Error in MfeBridge listener:', error)\r\n }\r\n }\r\n }\r\n subscribe<K extends keyof ICartEventConfigs>(\r\n eventName: K,\r\n listener: K extends keyof ICartEventConfigs ? (ICartEventConfigs[K] extends unknown[] ? (...args: ICartEventConfigs[K]) => void : never) : never,\r\n isTry: boolean = true\r\n ) {\r\n const action = isTry ? this._createWrapListener(listener) : listener\r\n super.addListener(eventName, action as any)\r\n return () => {\r\n super.removeListener(eventName, action as any)\r\n }\r\n }\r\n}\r\n\r\nexport function getCartEventStore() {\r\n if (typeof globalThis === undefined) return null\r\n\r\n if (typeof (globalThis as any).CartEventStore === 'undefined') {\r\n // If CartEventStore is not defined globally, define it\r\n // This allows it to be used in other parts of the application\r\n // without needing to import it explicitly\r\n ;(globalThis as any).CartEventStore = new CartEventStore()\r\n }\r\n return (globalThis as any).CartEventStore as CartEventStore\r\n}\r\n\r\nexport interface ICartStoreConfigs {\r\n idGetter: IIdGetter\r\n localStorageKey?: string\r\n}\r\n\r\nexport class MfeCartStore {\r\n private configs: ICartStoreConfigs\r\n constructor(config: ICartStoreConfigs) {\r\n this.configs = config\r\n if (!this.configs.localStorageKey) {\r\n this.configs.localStorageKey = 'cartItems'\r\n }\r\n this.initialize()\r\n }\r\n\r\n initialize = () => {\r\n const eventStore = getCartEventStore()\r\n eventStore?.subscribe('requestState', () => {\r\n eventStore?.emit('stateChange', { items: this.getState() })\r\n })\r\n }\r\n\r\n destroy = () => {\r\n const eventStore = getCartEventStore()\r\n eventStore?.removeAllListeners('requestState')\r\n }\r\n\r\n emitStateChange(items: IItem) {\r\n const eventStore = getCartEventStore()\r\n this.saveToLocalStorage(items)\r\n eventStore?.emit('stateChange', { items, options: { message: 'Cart items updated' } })\r\n }\r\n\r\n add(item: any, overwrite: boolean = false) {\r\n const items = this.getState()\r\n if (overwrite || !(this.configs.idGetter(item) in items)) {\r\n items[this.configs.idGetter(item)] = item\r\n }\r\n this.emitStateChange(items)\r\n return this\r\n }\r\n\r\n addMany(items: any[], overwrite: boolean = false) {\r\n const currentItems = this.getState()\r\n items.forEach((item) => {\r\n if (overwrite || !(this.configs.idGetter(item) in currentItems)) {\r\n currentItems[this.configs.idGetter(item)] = item\r\n }\r\n })\r\n this.emitStateChange(currentItems)\r\n return this\r\n }\r\n\r\n updateOrAdd(id: string, updates: Partial<any>) {\r\n const items = this.getState()\r\n const item = items[id]\r\n if (item) {\r\n items[id] = { ...item, ...updates }\r\n } else {\r\n items[id] = updates\r\n }\r\n this.emitStateChange(items)\r\n return this\r\n }\r\n\r\n remove(id: string) {\r\n const items = this.getState()\r\n if (id in items) {\r\n delete items[id]\r\n this.emitStateChange(items)\r\n }\r\n return this\r\n }\r\n\r\n clear() {\r\n this.emitStateChange({})\r\n return this\r\n }\r\n\r\n getState(): IItem {\r\n return this.loadFromLocalStorage() || {}\r\n }\r\n\r\n getItems(): any[] {\r\n const items = this.getState()\r\n const item = Array.isArray(items) ? items : Object.values(items)\r\n return item\r\n }\r\n\r\n private loadFromLocalStorage() {\r\n // Check if running in client environment with localStorage available\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n const storedItems = localStorage.getItem(this.configs.localStorageKey || 'cartItems')\r\n if (storedItems) {\r\n return JSON.parse(storedItems)\r\n }\r\n }\r\n }\r\n\r\n private saveToLocalStorage(items: IItem) {\r\n // Check if running in client environment with localStorage available\r\n if (typeof globalThis !== 'undefined' && globalThis.localStorage) {\r\n if (this.configs.localStorageKey) {\r\n localStorage.setItem(this.configs.localStorageKey, JSON.stringify(items))\r\n } else {\r\n console.warn('No localStorageKey provided, skipping storage')\r\n }\r\n }\r\n }\r\n}\r\n"],"names":["CartEventStore","_this","_classCallCheck","_callSuper","this","_defineProperty","callback","apply","arguments","error","console","_inherits","EventEmitter","_createClass","key","value","eventName","listener","_this2","action","_createWrapListener","_superPropGet","getCartEventStore","undefined","globalThis","_typeof","MfeCartStore","config","_this3","eventStore","subscribe","emit","items","getState","removeAllListeners","configs","localStorageKey","initialize","saveToLocalStorage","options","message","item","overwrite","length","idGetter","emitStateChange","_this4","currentItems","forEach","id","updates","_objectSpread","loadFromLocalStorage","Array","isArray","Object","values","localStorage","storedItems","getItem","JSON","parse","setItem","stringify","warn"],"mappings":"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"}
|
package/dist/cart/helpers.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var
|
|
1
|
+
var t=function(){var t,n;return null!==(n=(null!==(t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").split("http").join(" http").match(/[hH][tT][tT][pP][sS]?:\/\/[^\s]+/g))&&void 0!==t?t:[]).filter(function(t){return t}).map(function(t){return t.trim()}))&&void 0!==n?n:[]},n=function(){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=new Set(t(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"")),r=n.trim();return i.has(r)},i=function(t){return t.reduce(function(t,n){return{quantity:t.quantity+1,quantityLinks:t.quantityLinks+(n.Amount||0),price:t.price+(n.Price||0)*(n.Amount||0)}},{quantity:0,quantityLinks:0,price:0})};export{n as areDuplicatedLink,t as convertStringToLinks,i as getTotalData};
|
|
2
2
|
//# sourceMappingURL=helpers.js.map
|
package/dist/cart/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../src/cart/helpers.ts"],"sourcesContent":["import { ICartItem } from './types'\r\n\r\n/**\r\n * Convert a string to an array of URLs using improved regex\r\n * @param text Input string\r\n * @returns Array of matched URLs\r\n */\r\nexport const convertStringToLinks = (text: string): string[] => {\r\n
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../src/cart/helpers.ts"],"sourcesContent":["import { ICartItem } from './types'\r\n\r\n/**\r\n * Convert a string to an array of URLs using improved regex\r\n * @param text Input string\r\n * @returns Array of matched URLs\r\n */\r\nexport const convertStringToLinks = (text: string = ''): string[] => {\r\n const updatedText = text.split('http').join(' http')\r\n const list = updatedText.match(/[hH][tT][tT][pP][sS]?:\\/\\/[^\\s]+/g) ?? []\r\n return list.filter((x) => x).map((x) => x.trim()) ?? []\r\n}\r\n\r\n/**\r\n * Check if a link is duplicated in a string\r\n * @param linkString Input string containing links\r\n * @param value Link to check\r\n * @returns True if the link is duplicated, false otherwise\r\n */\r\nexport const areDuplicatedLink = (linkString: string = '', value: string = '') => {\r\n const linkSet = new Set(convertStringToLinks(linkString))\r\n const formatString = value.trim()\r\n return linkSet.has(formatString)\r\n}\r\n\r\n/**\r\n * Calculate total amount and price from an array of cart items\r\n * Note: If item.Amount is undefined, it will be treated as 0\r\n * @param data Array of ICartItem\r\n * @returns Object with total amount and total price\r\n */\r\nexport const getTotalData = (data: ICartItem[]) => {\r\n return data.reduce(\r\n (acc, item) => ({\r\n quantity: acc.quantity + 1,\r\n quantityLinks: acc.quantityLinks + (item.Amount || 0),\r\n price: acc.price + (item.Price || 0) * (item.Amount || 0)\r\n }),\r\n { quantity: 0, quantityLinks: 0, price: 0 }\r\n )\r\n}\r\n"],"names":["convertStringToLinks","_updatedText$match","_list$filter$map","arguments","length","undefined","split","join","match","filter","x","map","trim","areDuplicatedLink","value","linkSet","Set","formatString","has","getTotalData","data","reduce","acc","item","quantity","quantityLinks","Amount","price","Price"],"mappings":"IAOaA,EAAuB,WAAgC,IAAAC,EAAAC,EAGlE,OAAiDA,QAAjDA,GADmED,QAAzDA,GAFwCE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,IACzBG,MAAM,QAAQC,KAAK,SACnBC,MAAM,4CAAoCP,IAAAA,EAAAA,EAAI,IAC3DQ,OAAO,SAACC,GAAC,OAAKA,CAAC,GAAEC,IAAI,SAACD,GAAC,OAAKA,EAAEE,MAAM,UAACV,IAAAA,EAAAA,EAAI,EACvD,EAQaW,EAAoB,WAAgD,IAAtBC,EAAAX,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAgB,GACnEY,EAAU,IAAIC,IAAIhB,EAD6BG,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,KAE/Cc,EAAeH,EAAMF,OAC3B,OAAOG,EAAQG,IAAID,EACrB,EAQaE,EAAe,SAACC,GAC3B,OAAOA,EAAKC,OACV,SAACC,EAAKC,GAAI,MAAM,CACdC,SAAUF,EAAIE,SAAW,EACzBC,cAAeH,EAAIG,eAAiBF,EAAKG,QAAU,GACnDC,MAAOL,EAAIK,OAASJ,EAAKK,OAAS,IAAML,EAAKG,QAAU,GACxD,EACD,CAAEF,SAAU,EAAGC,cAAe,EAAGE,MAAO,GAE5C"}
|
package/dist/cart/hook.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{slicedToArray as r}from"../_virtual/_rollupPluginBabelHelpers.js";import{
|
|
1
|
+
import{slicedToArray as r}from"../_virtual/_rollupPluginBabelHelpers.js";import{useRef as t,useState as e,useEffect as n}from"react";import{MfeCartStore as o,getCartEventStore as a}from"./cart-store.js";function u(u){var c=t();c.current||(c.current=new o({localStorageKey:null==u?void 0:u.localStorageKey,idGetter:function(r){return r.ProductId}}));var i=c.current,l=e(i.getItems()),d=r(l,2),s=d[0],f=d[1];return n(function(){var r=a();(!s||s.length<1)&&(null==r||r.emit("requestState",{}));var t=null==r?void 0:r.subscribe("stateChange",function(r){var t=r.items,e=Array.isArray(t)?t:Object.values(t);f(e)});return function(){t&&t(),i.destroy()}},[]),{items:s}}function c(r){var e=function(r){return r.ProductId},n=t();n.current||(n.current=new o({localStorageKey:null==r?void 0:r.localStorageKey,idGetter:e}));var a=n.current;return{addToCart:function(r){a.add(r)},updateOrAddCart:function(r,t){a.updateOrAdd(r,t)},removeFromCart:function(r){a.remove(r)},clearCart:function(){a.clear()},idGetter:e}}export{c as useCartActions,u as useCartStore};
|
|
2
2
|
//# sourceMappingURL=hook.js.map
|
package/dist/cart/hook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sources":["../../src/cart/hook.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\r\nimport { getCartEventStore, MfeCartStore } from './cart-store'\r\nimport { ICartItem } from './types'\r\n\r\nexport function useCartStore<T extends ICartItem = ICartItem>() {\r\n const
|
|
1
|
+
{"version":3,"file":"hook.js","sources":["../../src/cart/hook.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react'\r\nimport { getCartEventStore, MfeCartStore } from './cart-store'\r\nimport { ICartItem } from './types'\r\n\r\nexport interface ICartStoreOptions {\r\n localStorageKey?: string\r\n}\r\n\r\nexport function useCartStore<T extends ICartItem = ICartItem>(params?: ICartStoreOptions) {\r\n const storeRef = useRef<MfeCartStore>()\r\n if (!storeRef.current) {\r\n storeRef.current = new MfeCartStore({ localStorageKey: params?.localStorageKey, idGetter: (item: T) => item.ProductId })\r\n }\r\n const store = storeRef.current\r\n const [items, setItems] = useState<T[]>(store.getItems() as T[])\r\n\r\n useEffect(() => {\r\n const event = getCartEventStore()\r\n if (!items || items.length < 1) event?.emit('requestState', {})\r\n\r\n const unsubscribe = event?.subscribe('stateChange', ({ items }) => {\r\n const item = Array.isArray(items) ? items : Object.values(items)\r\n setItems(item as T[])\r\n })\r\n return () => {\r\n if (unsubscribe) unsubscribe()\r\n store.destroy()\r\n }\r\n }, [])\r\n\r\n return { items }\r\n}\r\n\r\nexport function useCartActions<T extends ICartItem = ICartItem>(params?: ICartStoreOptions) {\r\n const idGetter = (item: T) => item.ProductId\r\n\r\n const storeRef = useRef<MfeCartStore>()\r\n if (!storeRef.current) {\r\n storeRef.current = new MfeCartStore({ localStorageKey: params?.localStorageKey, idGetter })\r\n }\r\n const store = storeRef.current\r\n\r\n const addToCart = (item: T) => {\r\n store.add(item)\r\n }\r\n\r\n const updateOrAddCart = (id: string, updates: Partial<T>) => {\r\n store.updateOrAdd(id, updates)\r\n }\r\n\r\n const removeFromCart = (id: string) => {\r\n store.remove(id)\r\n }\r\n\r\n const clearCart = () => {\r\n store.clear()\r\n }\r\n\r\n return {\r\n addToCart,\r\n updateOrAddCart,\r\n removeFromCart,\r\n clearCart,\r\n idGetter\r\n }\r\n}\r\n"],"names":["useCartStore","params","storeRef","useRef","current","MfeCartStore","localStorageKey","idGetter","item","ProductId","store","_useState","useState","getItems","_useState2","_slicedToArray","items","setItems","useEffect","event","getCartEventStore","length","emit","unsubscribe","subscribe","_ref","Array","isArray","Object","values","destroy","useCartActions","addToCart","add","updateOrAddCart","id","updates","updateOrAdd","removeFromCart","remove","clearCart","clear"],"mappings":"2MAQM,SAAUA,EAA8CC,GAC5D,IAAMC,EAAWC,IACZD,EAASE,UACZF,EAASE,QAAU,IAAIC,EAAa,CAAEC,gBAAiBL,aAAAA,EAAAA,EAAQK,gBAAiBC,SAAU,SAACC,GAAO,OAAKA,EAAKC,SAAS,KAEvH,IAAMC,EAAQR,EAASE,QACvBO,EAA0BC,EAAcF,EAAMG,YAAkBC,EAAAC,EAAAJ,EAAA,GAAzDK,EAAKF,EAAA,GAAEG,EAAQH,EAAA,GAgBtB,OAdAI,EAAU,WACR,IAAMC,EAAQC,MACTJ,GAASA,EAAMK,OAAS,KAAGF,SAAAA,EAAOG,KAAK,eAAgB,CAAA,IAE5D,IAAMC,EAAcJ,aAAAA,EAAAA,EAAOK,UAAU,cAAe,SAAAC,GAAc,IAAXT,EAAKS,EAALT,MAC/CR,EAAOkB,MAAMC,QAAQX,GAASA,EAAQY,OAAOC,OAAOb,GAC1DC,EAAST,EACX,GACA,OAAO,WACDe,GAAaA,IACjBb,EAAMoB,SACP,CACF,EAAE,IAEI,CAAEd,MAAAA,EACX,CAEM,SAAUe,EAAgD9B,GAC9D,IAAMM,EAAW,SAACC,GAAO,OAAKA,EAAKC,SAAS,EAEtCP,EAAWC,IACZD,EAASE,UACZF,EAASE,QAAU,IAAIC,EAAa,CAAEC,gBAAiBL,aAAAA,EAAAA,EAAQK,gBAAiBC,SAAAA,KAElF,IAAMG,EAAQR,EAASE,QAkBvB,MAAO,CACL4B,UAjBgB,SAACxB,GACjBE,EAAMuB,IAAIzB,EACX,EAgBC0B,gBAdsB,SAACC,EAAYC,GACnC1B,EAAM2B,YAAYF,EAAIC,EACvB,EAaCE,eAXqB,SAACH,GACtBzB,EAAM6B,OAAOJ,EACd,EAUCK,UARgB,WAChB9B,EAAM+B,OACP,EAOClC,SAAAA,EAEJ"}
|
package/dist/cart/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{CartWidget,createCartWidget}from"./widget.js";export{useCartActions,useCartStore}from"./hook.js";
|
|
1
|
+
export{CartWidget,createCartWidget}from"./widget.js";export{useCartActions,useCartStore}from"./hook.js";export{areDuplicatedLink,convertStringToLinks,getTotalData}from"./helpers.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/cart/widget.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
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 a,jsx as l}from"react/jsx-runtime";import{Fragment as c,Component 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{MenuStyled as y,CartContentStyled as b,cartContentClasses as k}from"./styled.js";import{getTotalData as N}from"./helpers.js";import{DarkIconButton as P}from"../components/buttons.js";import{NoDataPanel as S}from"../components/no-data-panel.js";var j=function(){function j(r){var e;return t(this,j),e=n(this,j,[r]),o(e,"render",function(){var r;return a(c,{children:[l(P,{onClick:function(r){return e.onOpen(r.currentTarget)},children:l(m,{badgeContent:e.state.hydrated&&null!==(r=e.carts.length)&&void 0!==r?r:0,color:"error",children:l(g,{})})}),l(y,{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=N(e.carts);return a(b,{children:[a("div",{className:k.header,children:[a(u,{variant:"h6",component:"span",sx:{flex:1},children:["Your Cart (",null!==(r=t.quantity)&&void 0!==r?r:0," items)"]}),a(u,{variant:"h6",component:"span",children:["Total: $ ",t.price.toFixed(2)]})]}),l(p,{}),a("div",{className:k.items,children:[e.carts.map(function(r,t){return l(c,{children:e.renderItem(r)},"key"+t)}),e.carts.length<1&&l(S,{title:"Your cart is empty",subTitle:"Try adding some products",sx:{height:"100%"}})]}),l(p,{}),l("div",{className:k.footer,children:l(h,i(i({},e.props.hrefCart?{component:"a",href:e.props.hrefCart}:{}),{},{color:"inherit",endIcon:l(x,{}),onClick:function(r){e.onClose(),e.props.onCartClick&&e.props.onCartClick(r)},disabled:e.carts.length<1,children:"Show in cart"}))})]})}),o(e,"renderItem",function(r){var t,n,o,i,c;return a("div",{className:k.item,children:[l(d,{className:k.itemImg,src:null==r?void 0:r.PictureUrl,title:null==r?void 0:r.PictureUrl,fallbackSrc:"images/default-video.webp",alt:"product-picture"}),a("div",{className:k.itemContent,children:[l(u,{className:k.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"}),l(u,{className:k.itemTitle,noWrap:!0,variant:"subtitle1",children:null!==(o=r.ProductName)&&void 0!==o?o:"Unknown Product"}),a(f,{sx:{display:"flex",alignItems:"flex-end",gap:"2px",justifyContent:"flex-end"},children:[a(u,{variant:"subtitle1",children:["$ ",null!==(i=r.Price)&&void 0!==i?i:0]}),a(u,{variant:"body1",sx:{fontSize:"14px",mb:"3px",color:"#818181"},children:["x",null!==(c=r.Amount)&&void 0!==c?c:0," urls"]})]})]}),l(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:l(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(j,s),e(j,[{key:"carts",get:function(){var r;return null!==(r=this.props.carts)&&void 0!==r?r:[]}},{key:"componentDidMount",value:function(){this.setState({hydrated:!0})}}])}(),E=function(r){var e=function(e){return l(j,i(i({},r),e))};return e.displayName="CartWidget",e};export{j as CartWidget,E as createCartWidget};
|
|
2
2
|
//# sourceMappingURL=widget.js.map
|
package/dist/cart/widget.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget.js","sources":["../../src/cart/widget.tsx"],"sourcesContent":["import { Component, Fragment, useCallback } from 'react'\r\nimport { ImageWithFallback } from 'dinocollab-core/components'\r\nimport { Badge, Box, Button, Divider, IconButton, Typography } from '@mui/material'\r\nimport { MfeLink } from 'dinocollab-core/mfe-shared'\r\nimport type { FC } from 'react'\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 { cartContentClasses, CartContentStyled, MenuStyled } from './styled'\r\nimport { getTotalData } from './helpers'\r\nimport { useCartActions, useCartStore } from './hook'\r\nimport { IAppSiteBaseUrl, IAppSiteProps } from '../types'\r\nimport { DarkIconButton, NoDataPanel } from '../components'\r\n\r\ninterface ICartWidgetBaseProps extends IAppSiteProps {\r\n baseUrl: IAppSiteBaseUrl\r\n /** Optional storage key to differentiate between different cart instances */\r\n storageKey?: string\r\n}\r\n\r\ninterface ICartWidgetProps extends ICartWidgetBaseProps {\r\n data: ICartItem[]\r\n onRemove?: (item: ICartItem) => void\r\n}\r\n\r\ninterface ICartWidgetState {\r\n anchorEl: HTMLElement | null\r\n}\r\n\r\nclass CartWidgetBase extends Component<ICartWidgetProps, ICartWidgetState> {\r\n constructor(props: ICartWidgetProps) {\r\n super(props)\r\n this.state = { anchorEl: null }\r\n }\r\n\r\n render = () => (\r\n <Fragment>\r\n <DarkIconButton onClick={(e) => this.onOpen(e.currentTarget)}>\r\n <Badge badgeContent={this.props.data.length} color='primary'>\r\n <ShoppingCartOutlinedIcon />\r\n </Badge>\r\n </DarkIconButton>\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.props.data)\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.amount} 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.props.data.map((x, i) => (\r\n <Fragment key={'key' + i}>{this.renderItem(x)}</Fragment>\r\n ))}\r\n {this.props.data.length < 1 && <NoDataPanel title='Your cart is empty' subTitle='Try adding some products' sx={{ height: '100%' }} />}\r\n </div>\r\n <Divider />\r\n <div className={cartContentClasses.footer}>\r\n <Button\r\n component={MfeLink}\r\n primaryHref={this.props.baseUrl.client + '/cart'}\r\n secondaryHref='cart'\r\n internal={this.props.site === 'client'}\r\n color='inherit'\r\n endIcon={<ShoppingCartCheckoutIcon />}\r\n onClick={this.onClose}\r\n disabled={this.props.data.length < 1}\r\n >\r\n Show in cart\r\n </Button>\r\n </div>\r\n </CartContentStyled>\r\n )\r\n }\r\n\r\n renderItem = (item: ICartItem) => {\r\n const src = this.props.baseUrl.api + item?.PictureUrl\r\n return (\r\n <div className={cartContentClasses.item}>\r\n <ImageWithFallback\r\n className={cartContentClasses.itemImg}\r\n src={src}\r\n title={src}\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 <Typography className={cartContentClasses.itemTitle} noWrap variant='subtitle1'>\r\n {item.ProductName ?? 'Unknown Product'}\r\n </Typography>\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.onRemove?.(item)} sx={{ color: '#818181' }}>\r\n <RemoveIcon />\r\n </IconButton>\r\n </div>\r\n )\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 CartWidget: FC<ICartWidgetBaseProps> = (props) => {\r\n const { items } = useCartStore()\r\n const { removeFromCart } = useCartActions<ICartItem>()\r\n\r\n return (\r\n <CartWidgetBase\r\n data={items}\r\n onRemove={(x) => {\r\n removeFromCart(x.ProductId)\r\n }}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport const createCartWidget = (params: ICartWidgetBaseProps) => {\r\n const _CartWidget: FC<Partial<ICartWidgetBaseProps>> = (props) => <CartWidget {...params} {...props} />\r\n _CartWidget.displayName = 'CartWidget'\r\n return _CartWidget\r\n}\r\n"],"names":["CartWidgetBase","props","_this","_classCallCheck","_callSuper","_defineProperty","_jsxs","Fragment","children","_jsx","DarkIconButton","onClick","e","onOpen","currentTarget","Badge","badgeContent","data","length","color","ShoppingCartOutlinedIcon","MenuStyled","disableScrollLock","anchorEl","state","open","Boolean","onClose","anchorOrigin","vertical","horizontal","transformOrigin","MenuListProps","component","renderContent","totalData","getTotalData","CartContentStyled","className","cartContentClasses","header","Typography","variant","sx","flex","amount","price","toFixed","Divider","items","map","x","i","renderItem","NoDataPanel","title","subTitle","height","footer","Button","MfeLink","primaryHref","baseUrl","client","secondaryHref","internal","site","endIcon","ShoppingCartCheckoutIcon","disabled","item","_item$PriceColor","_item$PriceName","_item$ProductName","_item$Price","_item$Amount","src","api","PictureUrl","ImageWithFallback","itemImg","fallbackSrc","alt","itemContent","itemTag","PriceColor","PriceName","itemTitle","noWrap","ProductName","Box","display","alignItems","gap","justifyContent","Price","fontSize","mb","Amount","IconButton","size","_this$props$onRemove","_this$props","onRemove","call","RemoveIcon","target","setState","_inherits","Component","_createClass","CartWidget","useCartStore","removeFromCart","useCartActions","_objectSpread","ProductId","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, Divider, IconButton, Typography } from '@mui/material'\r\nimport type { FC } from 'react'\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 { cartContentClasses, CartContentStyled, MenuStyled } from './styled'\r\nimport { getTotalData } from './helpers'\r\nimport { IAppSiteBaseUrl } from '../types'\r\nimport { DarkIconButton, NoDataPanel } from '../components'\r\n\r\ninterface ICartWidgetProps {\r\n baseUrl: IAppSiteBaseUrl\r\n carts?: ICartItem[]\r\n hrefCart?: string\r\n storageKey?: string\r\n onRemoveCart?: (item: ICartItem) => void\r\n onCartClick?: (e: React.MouseEvent<HTMLAnchorElement | HTMLButtonElement, MouseEvent>) => void\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 <DarkIconButton onClick={(e) => this.onOpen(e.currentTarget)}>\r\n <Badge badgeContent={this.state.hydrated ? this.carts.length ?? 0 : 0} color='error'>\r\n <ShoppingCartOutlinedIcon />\r\n </Badge>\r\n </DarkIconButton>\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%' }} />}\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.onCartClick) {\r\n this.props.onCartClick(event as React.MouseEvent<HTMLAnchorElement | HTMLButtonElement, MouseEvent>)\r\n }\r\n }}\r\n disabled={this.carts.length < 1}\r\n >\r\n Show in cart\r\n </Button>\r\n </div>\r\n </CartContentStyled>\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 <Typography className={cartContentClasses.itemTitle} noWrap variant='subtitle1'>\r\n {item.ProductName ?? 'Unknown Product'}\r\n </Typography>\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","DarkIconButton","onClick","e","onOpen","currentTarget","Badge","badgeContent","state","hydrated","carts","length","color","ShoppingCartOutlinedIcon","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","footer","Button","_objectSpread","hrefCart","href","endIcon","ShoppingCartCheckoutIcon","event","onCartClick","disabled","item","_item$PriceColor","_item$PriceName","_item$ProductName","_item$Price","_item$Amount","ImageWithFallback","itemImg","src","PictureUrl","fallbackSrc","alt","itemContent","itemTag","PriceColor","PriceName","itemTitle","noWrap","ProductName","Box","display","alignItems","gap","justifyContent","Price","fontSize","mb","Amount","IconButton","size","_this$props$onRemoveC","_this$props","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,2 +1,2 @@
|
|
|
1
|
-
import{objectWithoutProperties as e,objectSpread2 as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i,jsxs as
|
|
1
|
+
import{objectWithoutProperties as e,objectSpread2 as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i,jsxs as a}from"react/jsx-runtime";import{useCallback as r,useMemo as n}from"react";import{styled as o,Button as s,Box as c,Typography as l}from"@mui/material";var A=["children","startIcon","className","forceTheme"],g="data:image/webp;base64,UklGRkwEAABXRUJQVlA4WAoAAAAQAAAAdwAAdwAAQUxQSM4DAAABoEXb2iFJ+jKzjLZt27Zt27Zt27Zt27Zt24jM+5BfZPzxR/yrn2ZWREwA/Xdy+ctuYHMU9QRp8D4eQTnZwJ8JUU1aHZwMV0waPZwKUhUORFYVjioLJ8JVhT1hqsJhp2o0HewPU8zkAzo44FLLqJA9OtgeppQJFHZMB3sUQ3REB3uDFBNpvw42+AkqtXBFc1ui4BM6aCmmPQBssiUKOaZzSkis914oY0sUeoI7IaT8H6aPPVHocaa2kBoaM9imKMoaQBvtElL1LzPArogylE9NYu1P/D9f9Lp1Yyip7BvgXUWHgj4CwNsg9WQGm1k9NbmqNpavfGwxFbhythX3GPCjiUNEebvbBu/M6gkAO1Y9ibhVEjiiR7KXeNwS8xId+vFxRbjlAoo2TOfg4soS5Q0A7Lda0DkA0ySrq3n9yWGxA/BuI1dXeLvrWivea2a3S6rOXD0uxoQz++tYIPk75liwVJ24OkzgVQBaU/mScYcDrdMM3mfkS2q9xcwnBS1hvitoIfPVUEDqah0GDu3bonQCh0qCKy554gGvXR6V1WlPi5lvvoR0uA+DniMlnXa0nPniQ7kHELkncTJDybmjQdbpyVzXcczTIPbrMEOJ3jIHA6xQl4ny3qs3F+UkzPbB9ZCZRlJ14xoylHrXh2dDgpgYFyAP5XIDuBMgV3O3l1aGIwoNIP489D1XprSsVKpK1yXPxFHGqesHRCa50v/0ekGGXaug+3d5NifxQZVOCPNZGmr2B3ifw1hpt86VXA7y1dX0h3kJuZXmUZIGtSKR8Z/g1wWR0RSPTYvCzZFA7EDw2wLJePJ7ZtFbppI1wl5wN0hoetOKfgM86wOt0RSsllUMdTCLMoyd19ifrLGBm06CI9/kRgrz2UBVrooZr7nsomg0t1C6ElwRM8B+J+EJuHsO2fy4MBNKcWPF0W8G0tF4AJ4pThOGcllMOM8lls5RY/Wa2mTmEi7AhC1cHunM32jeaq6Q7cw1bzmX03b6c8VN2MHFsZ2c3FITfnAO2yEO4rKBvWhDd7iiwhZzo8l+5nFrXIJivmT+VpShhsYMkabSXwblBC0A+zamDGV+Mz2lcdziPocLqQl+BckY8TVTSBqqz+F6dAHFP+s4paDKXlNI4pscricxVPUn+EEkaZpBI0uQzBm/cfjQ0ulTzLka+PORZJF/kA5wuXlsnUzD30E/A9n2cj3gx5HZg3oPXXYFPrork30HrvLoCfS0cdoYuWaJ02qSzbf4KOhmJrL9pFvdAr6OdZECnfk3/jbwdmoCUmXC9pufcH+uL60Vkf6XMVZQOCBYAAAAEAcAnQEqeAB4AD6RSJ9LpaQioaSIALASCWlu4XEgAqWZ93Pu1keUUni2PHdLNfliQEgJASAkBICQEgJASAkBGAAA/v6knwxv//8VGk/xH3//+MPIwAAAAA==",m="data:image/webp;base64,UklGRngCAABXRUJQVlA4WAoAAAAQAAAAdwAAdwAAQUxQSAgCAAABkAXZtmk769nvxbbt5M+2bdvOp23btm3btm0nBzM8r9a5a8WpiogJoP8XB5eZceCMsMfXdkzuxVf4HkS2p4Vz9Tch9e3UPK0APJ/cuVFDURs0H3AEwOUwjtQGcCUTSTzUAKZyDAbexyOZRwMmx1mgLUkNWBwAkok1D+B5GFesLv8AyFyuZHIvheLMBYDpqfTZgW8+ba5NUXx/bXpdtjiA2TlMkztOgItVFbnuDJgeXY1rkcH1elrB2pRKKeBd/yClgGu5tMKH6b5KATfr+SgF7ErlpRTMDr5KASczagVkU+uUWq9zaPWhuFavMmm1h5R6nUSpDclJpRdViFWwWTFJpRuFiVuolz2CSKXD8cmFEj1u5kMaGcvCyZ3i3CxKbvW465GwegaTFrcc2ftykIs9bpOT+x3I1R6X28H0RKQKLfzWtdLkds8L7wngXZ+YpA5R2qoVEpEHSuCpf7nZQGqxVsPmOAH0lCoIsDj6Akgjk9d04CNHHAN4UkyisEU20J+DygOwlg/pLWzfyQ8A7PdnoVbvIfWxuMScb69MrwYGErtv9u5zVsu6ZunI8rHoD8LYBeLpFH4YJ4JUSvwEVoRW0CnRIxjhetRZuvz7Gz8Aa5aLunI8B4TneCabzZGhSdPvd38Nu11TUZvV4HCc6BE+hpPGSZ4CESolfICP4Sr5jn01yVel/+8CVlA4IEoAAACQBgCdASp4AHgAPpFIoUylpCMiIIgAsBIJaW7hdJAAT22IvEgubeI386q8sEbEFRz2xF4gqOe2IvEFRzvAAP7/Uk9vLwAAAAAAAA==",d=function(o){var s=o.children,g=o.startIcon,m=o.className,d=o.forceTheme,b=e(o,A),v=r(function(){if(!g)return null;var e=g;return"string"==typeof g&&(e=i(c,{component:"span",className:"icon-img",sx:{"--mask-url":"url(".concat(g,")")}})),i("span",{className:"icon-static",children:e})},[g]),u=n(function(){var e=["tab-button"];return e.push(m||""),e.join(" ")},[m]);return a(p,t(t({},b),{},{className:u,forceTheme:d,children:[v(),a("div",{className:"text-container",children:[i(l,{variant:"h6",className:"text text-visible",children:s}),i(l,{variant:"h6",className:"text text-hidden",children:s})]})]}))},p=o(s,{shouldForwardProp:function(e){return"forceTheme"!==e}})(function(e){var t=e.theme,i=e.forceTheme,a={dark:{primary:t.palette.common.white,secondary:"rgb(249, 169, 37)",iconActive:"rgb(249, 169, 37)",bgGradient:"linear-gradient(45deg, rgb(211, 47, 47) 0%, rgb(249, 169, 37) 70%, rgb(211, 47, 47) 100%) 0% 0% / 200%",iconImageFilter:"invert(1) brightness(2)"},light:{primary:t.palette.common.black,secondary:"rgb(156, 39, 176)",iconActive:"rgb(156, 39, 176)",bgGradient:"linear-gradient(45deg, rgb(25, 118, 210) 0%, rgb(156, 39, 176) 70%, rgb(25, 118, 210) 100%) 0% 0% / 200%",iconImageFilter:"invert(0) brightness(0.2)"}}[i||t.palette.mode];return{"--color-primary":a.primary,"--color-secondary":a.secondary,"--bg-underline":a.bgGradient,"--bg-icon":a.bgGradient,"--icon-color-active":a.iconActive,"--size-icon":"24px","--spacing-x-size":"12px","--timing-fast":"0.25s","--timing-medium":"0.3s","--easing-smooth":"cubic-bezier(0.25, 0.46, 0.45, 0.94)","--easing-bounce":"cubic-bezier(0.34, 1.56, 0.64, 1)",height:"var(--height-button, 40px)",position:"relative",overflow:"hidden",transition:"transform 0.2s, box-shadow 0.2s",display:"flex",alignItems:"center",gap:"8px",padding:"6px var(--spacing-x-size)",color:"var(--color-primary)",backgroundColor:"transparent !important",a:{display:"flex",alignItems:"center"},"&::after":{content:'""',position:"absolute",bottom:"2px",left:"var(--spacing-x-size)",width:"0",height:"2px",background:"var(--bg-underline)",transition:"width var(--timing-fast) var(--easing-smooth)"},"& .icon-static":{display:"flex",alignItems:"center",flexShrink:0,transition:"transform var(--timing-medium) var(--easing-bounce)",transformOrigin:"left bottom",position:"relative","img, svg, .icon-img":{width:"var(--size-icon)",height:"var(--size-icon)"},".icon-img":{backgroundImage:"var(--mask-url)",backgroundSize:"cover",backgroundPosition:"center",display:"block",borderRadius:4,transition:"filter 0.3s",position:"relative",zIndex:1,filter:a.iconImageFilter}},"& .text-container":{position:"relative",overflow:"hidden",flex:1},".text":{textTransform:"none",fontWeight:600,fontSize:"1.125rem",lineHeight:1.6,transformOrigin:"left bottom"},"& .text-visible, & .text-hidden":{transition:"transform var(--timing-medium) var(--easing-smooth)",display:"block",width:"100%",textAlign:"left",margin:0},"& .text-visible":{transform:"translateY(0) skewY(0)",opacity:1},"& .text-hidden":{position:"absolute",top:"50%",left:"0",transform:"translateY(50%) skewY(15deg)",opacity:1},"&.active-tab":{"& .icon-static":{color:"var(--icon-color-active)",".icon-img":{background:"var(--bg-icon)",WebkitMaskImage:"var(--mask-url)",maskImage:"var(--mask-url)",WebkitMaskRepeat:"no-repeat",maskRepeat:"no-repeat",WebkitMaskSize:"cover",maskSize:"cover",filter:"none"}},"&::after":{width:"var(--size-icon)"}},"&.inactive-tab":{"&::after":{width:"0"}},"&:hover":{"&::after":{width:"calc(100% - (var(--spacing-x-size) * 2))"},"& .icon-static":{transform:"rotate(-10deg)"},"& .text-visible":{transform:"translateY(-100%) skewY(-15deg)",opacity:1},"& .text-hidden":{transform:"translateY(-50%) skewY(0)",opacity:1}}}});export{d as ButtonAnimation,g as IconAudioBase64,m as IconVideoBase64};
|
|
2
2
|
//# sourceMappingURL=animated-tabs.units.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animated-tabs.units.js","sources":["../../src/layout-global/animated-tabs.units.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react'\r\nimport { Box, Button, styled, Typography } from '@mui/material'\r\nimport type { FC, ReactNode } from 'react'\r\nimport type { ButtonProps, Theme } from '@mui/material'\r\n\r\nexport const IconAudioBase64 = `data:image/webp;base64,UklGRkwEAABXRUJQVlA4WAoAAAAQAAAAdwAAdwAAQUxQSM4DAAABoEXb2iFJ+jKzjLZt27Zt27Zt27Zt27Zt24jM+5BfZPzxR/yrn2ZWREwA/Xdy+ctuYHMU9QRp8D4eQTnZwJ8JUU1aHZwMV0waPZwKUhUORFYVjioLJ8JVhT1hqsJhp2o0HewPU8zkAzo44FLLqJA9OtgeppQJFHZMB3sUQ3REB3uDFBNpvw42+AkqtXBFc1ui4BM6aCmmPQBssiUKOaZzSkis914oY0sUeoI7IaT8H6aPPVHocaa2kBoaM9imKMoaQBvtElL1LzPArogylE9NYu1P/D9f9Lp1Yyip7BvgXUWHgj4CwNsg9WQGm1k9NbmqNpavfGwxFbhythX3GPCjiUNEebvbBu/M6gkAO1Y9ibhVEjiiR7KXeNwS8xId+vFxRbjlAoo2TOfg4soS5Q0A7Lda0DkA0ySrq3n9yWGxA/BuI1dXeLvrWivea2a3S6rOXD0uxoQz++tYIPk75liwVJ24OkzgVQBaU/mScYcDrdMM3mfkS2q9xcwnBS1hvitoIfPVUEDqah0GDu3bonQCh0qCKy554gGvXR6V1WlPi5lvvoR0uA+DniMlnXa0nPniQ7kHELkncTJDybmjQdbpyVzXcczTIPbrMEOJ3jIHA6xQl4ny3qs3F+UkzPbB9ZCZRlJ14xoylHrXh2dDgpgYFyAP5XIDuBMgV3O3l1aGIwoNIP489D1XprSsVKpK1yXPxFHGqesHRCa50v/0ekGGXaug+3d5NifxQZVOCPNZGmr2B3ifw1hpt86VXA7y1dX0h3kJuZXmUZIGtSKR8Z/g1wWR0RSPTYvCzZFA7EDw2wLJePJ7ZtFbppI1wl5wN0hoetOKfgM86wOt0RSsllUMdTCLMoyd19ifrLGBm06CI9/kRgrz2UBVrooZr7nsomg0t1C6ElwRM8B+J+EJuHsO2fy4MBNKcWPF0W8G0tF4AJ4pThOGcllMOM8lls5RY/Wa2mTmEi7AhC1cHunM32jeaq6Q7cw1bzmX03b6c8VN2MHFsZ2c3FITfnAO2yEO4rKBvWhDd7iiwhZzo8l+5nFrXIJivmT+VpShhsYMkabSXwblBC0A+zamDGV+Mz2lcdziPocLqQl+BckY8TVTSBqqz+F6dAHFP+s4paDKXlNI4pscricxVPUn+EEkaZpBI0uQzBm/cfjQ0ulTzLka+PORZJF/kA5wuXlsnUzD30E/A9n2cj3gx5HZg3oPXXYFPrork30HrvLoCfS0cdoYuWaJ02qSzbf4KOhmJrL9pFvdAr6OdZECnfk3/jbwdmoCUmXC9pufcH+uL60Vkf6XMVZQOCBYAAAAEAcAnQEqeAB4AD6RSJ9LpaQioaSIALASCWlu4XEgAqWZ93Pu1keUUni2PHdLNfliQEgJASAkBICQEgJASAkBGAAA/v6knwxv//8VGk/xH3//+MPIwAAAAA==`\r\n\r\nexport const IconVideoBase64 = `data:image/webp;base64,UklGRngCAABXRUJQVlA4WAoAAAAQAAAAdwAAdwAAQUxQSAgCAAABkAXZtmk769nvxbbt5M+2bdvOp23btm3btm0nBzM8r9a5a8WpiogJoP8XB5eZceCMsMfXdkzuxVf4HkS2p4Vz9Tch9e3UPK0APJ/cuVFDURs0H3AEwOUwjtQGcCUTSTzUAKZyDAbexyOZRwMmx1mgLUkNWBwAkok1D+B5GFesLv8AyFyuZHIvheLMBYDpqfTZgW8+ba5NUXx/bXpdtjiA2TlMkztOgItVFbnuDJgeXY1rkcH1elrB2pRKKeBd/yClgGu5tMKH6b5KATfr+SgF7ErlpRTMDr5KASczagVkU+uUWq9zaPWhuFavMmm1h5R6nUSpDclJpRdViFWwWTFJpRuFiVuolz2CSKXD8cmFEj1u5kMaGcvCyZ3i3CxKbvW465GwegaTFrcc2ftykIs9bpOT+x3I1R6X28H0RKQKLfzWtdLkds8L7wngXZ+YpA5R2qoVEpEHSuCpf7nZQGqxVsPmOAH0lCoIsDj6Akgjk9d04CNHHAN4UkyisEU20J+DygOwlg/pLWzfyQ8A7PdnoVbvIfWxuMScb69MrwYGErtv9u5zVsu6ZunI8rHoD8LYBeLpFH4YJ4JUSvwEVoRW0CnRIxjhetRZuvz7Gz8Aa5aLunI8B4TneCabzZGhSdPvd38Nu11TUZvV4HCc6BE+hpPGSZ4CESolfICP4Sr5jn01yVel/+8CVlA4IEoAAACQBgCdASp4AHgAPpFIoUylpCMiIIgAsBIJaW7hdJAAT22IvEgubeI386q8sEbEFRz2xF4gqOe2IvEFRzvAAP7/Uk9vLwAAAAAAAA==`\r\n\r\nexport interface IButtonThemeProps {\r\n forceTheme?: 'dark' | 'light'\r\n}\r\n\r\nexport interface IButtonAnimationProps extends ButtonProps, IButtonThemeProps {\r\n children: ReactNode\r\n startIcon?: ReactNode\r\n [key: string]: any // Allow additional props\r\n}\r\n\r\nexport const ButtonAnimation: FC<IButtonAnimationProps> = (props) => {\r\n const { children, startIcon, className, forceTheme, ...otherProps } = props\r\n\r\n const renderIcon = useCallback(() => {\r\n if (!startIcon) return null\r\n let finalIcon = startIcon\r\n if (typeof startIcon === 'string') {\r\n finalIcon = <Box component='span' className='icon-img' sx={{ '--mask-url': `url(${startIcon})` }} />\r\n }\r\n return <span className='icon-static'>{finalIcon}</span>\r\n }, [startIcon])\r\n\r\n const rootClasses = useMemo(() => {\r\n const classes = ['tab-button']\r\n classes.push(className || '')\r\n return classes.join(' ')\r\n }, [className])\r\n\r\n return (\r\n <ButtonAnimationStyled {...otherProps} className={rootClasses} forceTheme={forceTheme}>\r\n {renderIcon()}\r\n <div className='text-container'>\r\n <Typography variant='h6' className='text text-visible'>\r\n {children}\r\n </Typography>\r\n <Typography variant='h6' className='text text-hidden'>\r\n {children}\r\n </Typography>\r\n </div>\r\n </ButtonAnimationStyled>\r\n )\r\n}\r\n\r\nconst ButtonAnimationStyled = styled(Button, {\r\n shouldForwardProp: (prop: PropertyKey) => prop !== 'forceTheme'\r\n})<IButtonThemeProps>(({ theme, forceTheme }: { theme: Theme; forceTheme?: 'dark' | 'light' }) => {\r\n const sxMap = {\r\n dark: {\r\n primary: theme.palette.common.white,\r\n secondary: 'rgb(249, 169, 37)',\r\n iconActive: 'rgb(249, 169, 37)',\r\n bgGradient: 'linear-gradient(45deg, rgb(211, 47, 47) 0%, rgb(249, 169, 37) 70%, rgb(211, 47, 47) 100%) 0% 0% / 200%',\r\n iconImageFilter: 'invert(1) brightness(2)'\r\n },\r\n light: {\r\n primary: theme.palette.common.black,\r\n secondary: 'rgb(156, 39, 176)',\r\n iconActive: 'rgb(156, 39, 176)',\r\n bgGradient: 'linear-gradient(45deg, rgb(25, 118, 210) 0%, rgb(156, 39, 176) 70%, rgb(25, 118, 210) 100%) 0% 0% / 200%',\r\n iconImageFilter: 'invert(0) brightness(0.2)'\r\n }\r\n }\r\n\r\n const mode = forceTheme || theme.palette.mode\r\n const currentSx = sxMap[mode as keyof typeof sxMap]\r\n\r\n return {\r\n '--color-primary': currentSx.primary,\r\n '--color-secondary': currentSx.secondary,\r\n '--bg-underline': currentSx.bgGradient,\r\n '--bg-icon': currentSx.bgGradient,\r\n '--icon-color-active': currentSx.iconActive,\r\n '--size-icon': '24px',\r\n '--spacing-x-size': '12px',\r\n '--timing-fast': '0.25s',\r\n '--timing-medium': '0.3s',\r\n '--easing-smooth': 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n '--easing-bounce': 'cubic-bezier(0.34, 1.56, 0.64, 1)',\r\n height: 'var(--height-button, 40px)',\r\n position: 'relative',\r\n overflow: 'hidden',\r\n transition: 'transform 0.2s, box-shadow 0.2s',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n padding: '6px var(--spacing-x-size)',\r\n color: 'var(--color-primary)',\r\n backgroundColor: 'transparent !important',\r\n\r\n '&::after': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n bottom: '2px',\r\n left: 'var(--spacing-x-size)',\r\n width: '0',\r\n height: '2px',\r\n background: 'var(--bg-underline)',\r\n transition: 'width var(--timing-fast) var(--easing-smooth)'\r\n },\r\n\r\n '& .icon-static': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexShrink: 0,\r\n transition: 'transform var(--timing-medium) var(--easing-bounce)',\r\n transformOrigin: 'left bottom',\r\n position: 'relative',\r\n 'img, svg, .icon-img': { width: 'var(--size-icon)', height: 'var(--size-icon)' },\r\n '.icon-img': {\r\n backgroundImage: `var(--mask-url)`,\r\n backgroundSize: 'cover',\r\n backgroundPosition: 'center',\r\n display: 'block',\r\n borderRadius: 4,\r\n transition: 'filter 0.3s',\r\n position: 'relative',\r\n zIndex: 1,\r\n filter: currentSx.iconImageFilter\r\n }\r\n },\r\n\r\n '& .text-container': { position: 'relative', overflow: 'hidden', flex: 1 },\r\n\r\n '.text': {\r\n textTransform: 'none',\r\n fontWeight: 600,\r\n fontSize: '1.125rem',\r\n lineHeight: 1.6,\r\n transformOrigin: 'left bottom'\r\n },\r\n\r\n '& .text-visible, & .text-hidden': {\r\n transition: 'transform var(--timing-medium) var(--easing-smooth)',\r\n display: 'block',\r\n width: '100%',\r\n textAlign: 'left',\r\n margin: 0\r\n },\r\n\r\n '& .text-visible': { transform: 'translateY(0) skewY(0)', opacity: 1 },\r\n\r\n '& .text-hidden': {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '0',\r\n transform: 'translateY(50%) skewY(15deg)',\r\n opacity: 1\r\n },\r\n\r\n '&.active-tab': {\r\n '& .icon-static': {\r\n color: 'var(--icon-color-active)',\r\n '.icon-img': {\r\n background: 'var(--bg-icon)',\r\n WebkitMaskImage: 'var(--mask-url)',\r\n maskImage: 'var(--mask-url)',\r\n WebkitMaskRepeat: 'no-repeat',\r\n maskRepeat: 'no-repeat',\r\n WebkitMaskSize: 'cover',\r\n maskSize: 'cover',\r\n filter: 'none'\r\n }\r\n },\r\n '&::after': { width: 'var(--size-icon)' }\r\n },\r\n '&.inactive-tab': { '&::after': { width: '0' } },\r\n\r\n '&:hover': {\r\n // transform: 'scale(1.02)',\r\n '&::after': { width: 'calc(100% - (var(--spacing-x-size) * 2))' },\r\n '& .icon-static': { transform: 'rotate(-10deg)' },\r\n '& .text-visible': { transform: 'translateY(-100%) skewY(-15deg)', opacity: 1 },\r\n '& .text-hidden': { transform: 'translateY(-50%) skewY(0)', opacity: 1 }\r\n }\r\n }\r\n})\r\n"],"names":["IconAudioBase64","IconVideoBase64","ButtonAnimation","props","children","startIcon","className","forceTheme","otherProps","_objectWithoutProperties","_excluded","renderIcon","useCallback","finalIcon","_jsx","Box","component","sx","concat","rootClasses","useMemo","classes","push","join","_jsxs","ButtonAnimationStyled","_objectSpread","Typography","variant","styled","Button","shouldForwardProp","prop","_ref","theme","currentSx","dark","primary","palette","common","white","secondary","iconActive","bgGradient","iconImageFilter","light","black","mode","height","position","overflow","transition","display","alignItems","gap","padding","color","backgroundColor","content","bottom","left","width","background","flexShrink","transformOrigin","backgroundImage","backgroundSize","backgroundPosition","borderRadius","zIndex","filter","flex","textTransform","fontWeight","fontSize","lineHeight","textAlign","margin","transform","opacity","top","WebkitMaskImage","maskImage","WebkitMaskRepeat","maskRepeat","WebkitMaskSize","maskSize"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"animated-tabs.units.js","sources":["../../src/layout-global/animated-tabs.units.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react'\r\nimport { Box, Button, styled, Typography } from '@mui/material'\r\nimport type { FC, ReactNode } from 'react'\r\nimport type { ButtonProps, Theme } from '@mui/material'\r\n\r\nexport const IconAudioBase64 = `data:image/webp;base64,UklGRkwEAABXRUJQVlA4WAoAAAAQAAAAdwAAdwAAQUxQSM4DAAABoEXb2iFJ+jKzjLZt27Zt27Zt27Zt27Zt24jM+5BfZPzxR/yrn2ZWREwA/Xdy+ctuYHMU9QRp8D4eQTnZwJ8JUU1aHZwMV0waPZwKUhUORFYVjioLJ8JVhT1hqsJhp2o0HewPU8zkAzo44FLLqJA9OtgeppQJFHZMB3sUQ3REB3uDFBNpvw42+AkqtXBFc1ui4BM6aCmmPQBssiUKOaZzSkis914oY0sUeoI7IaT8H6aPPVHocaa2kBoaM9imKMoaQBvtElL1LzPArogylE9NYu1P/D9f9Lp1Yyip7BvgXUWHgj4CwNsg9WQGm1k9NbmqNpavfGwxFbhythX3GPCjiUNEebvbBu/M6gkAO1Y9ibhVEjiiR7KXeNwS8xId+vFxRbjlAoo2TOfg4soS5Q0A7Lda0DkA0ySrq3n9yWGxA/BuI1dXeLvrWivea2a3S6rOXD0uxoQz++tYIPk75liwVJ24OkzgVQBaU/mScYcDrdMM3mfkS2q9xcwnBS1hvitoIfPVUEDqah0GDu3bonQCh0qCKy554gGvXR6V1WlPi5lvvoR0uA+DniMlnXa0nPniQ7kHELkncTJDybmjQdbpyVzXcczTIPbrMEOJ3jIHA6xQl4ny3qs3F+UkzPbB9ZCZRlJ14xoylHrXh2dDgpgYFyAP5XIDuBMgV3O3l1aGIwoNIP489D1XprSsVKpK1yXPxFHGqesHRCa50v/0ekGGXaug+3d5NifxQZVOCPNZGmr2B3ifw1hpt86VXA7y1dX0h3kJuZXmUZIGtSKR8Z/g1wWR0RSPTYvCzZFA7EDw2wLJePJ7ZtFbppI1wl5wN0hoetOKfgM86wOt0RSsllUMdTCLMoyd19ifrLGBm06CI9/kRgrz2UBVrooZr7nsomg0t1C6ElwRM8B+J+EJuHsO2fy4MBNKcWPF0W8G0tF4AJ4pThOGcllMOM8lls5RY/Wa2mTmEi7AhC1cHunM32jeaq6Q7cw1bzmX03b6c8VN2MHFsZ2c3FITfnAO2yEO4rKBvWhDd7iiwhZzo8l+5nFrXIJivmT+VpShhsYMkabSXwblBC0A+zamDGV+Mz2lcdziPocLqQl+BckY8TVTSBqqz+F6dAHFP+s4paDKXlNI4pscricxVPUn+EEkaZpBI0uQzBm/cfjQ0ulTzLka+PORZJF/kA5wuXlsnUzD30E/A9n2cj3gx5HZg3oPXXYFPrork30HrvLoCfS0cdoYuWaJ02qSzbf4KOhmJrL9pFvdAr6OdZECnfk3/jbwdmoCUmXC9pufcH+uL60Vkf6XMVZQOCBYAAAAEAcAnQEqeAB4AD6RSJ9LpaQioaSIALASCWlu4XEgAqWZ93Pu1keUUni2PHdLNfliQEgJASAkBICQEgJASAkBGAAA/v6knwxv//8VGk/xH3//+MPIwAAAAA==`\r\n\r\nexport const IconVideoBase64 = `data:image/webp;base64,UklGRngCAABXRUJQVlA4WAoAAAAQAAAAdwAAdwAAQUxQSAgCAAABkAXZtmk769nvxbbt5M+2bdvOp23btm3btm0nBzM8r9a5a8WpiogJoP8XB5eZceCMsMfXdkzuxVf4HkS2p4Vz9Tch9e3UPK0APJ/cuVFDURs0H3AEwOUwjtQGcCUTSTzUAKZyDAbexyOZRwMmx1mgLUkNWBwAkok1D+B5GFesLv8AyFyuZHIvheLMBYDpqfTZgW8+ba5NUXx/bXpdtjiA2TlMkztOgItVFbnuDJgeXY1rkcH1elrB2pRKKeBd/yClgGu5tMKH6b5KATfr+SgF7ErlpRTMDr5KASczagVkU+uUWq9zaPWhuFavMmm1h5R6nUSpDclJpRdViFWwWTFJpRuFiVuolz2CSKXD8cmFEj1u5kMaGcvCyZ3i3CxKbvW465GwegaTFrcc2ftykIs9bpOT+x3I1R6X28H0RKQKLfzWtdLkds8L7wngXZ+YpA5R2qoVEpEHSuCpf7nZQGqxVsPmOAH0lCoIsDj6Akgjk9d04CNHHAN4UkyisEU20J+DygOwlg/pLWzfyQ8A7PdnoVbvIfWxuMScb69MrwYGErtv9u5zVsu6ZunI8rHoD8LYBeLpFH4YJ4JUSvwEVoRW0CnRIxjhetRZuvz7Gz8Aa5aLunI8B4TneCabzZGhSdPvd38Nu11TUZvV4HCc6BE+hpPGSZ4CESolfICP4Sr5jn01yVel/+8CVlA4IEoAAACQBgCdASp4AHgAPpFIoUylpCMiIIgAsBIJaW7hdJAAT22IvEgubeI386q8sEbEFRz2xF4gqOe2IvEFRzvAAP7/Uk9vLwAAAAAAAA==`\r\n\r\nexport interface IButtonThemeProps {\r\n forceTheme?: 'dark' | 'light'\r\n}\r\n\r\nexport interface IButtonAnimationProps extends ButtonProps, IButtonThemeProps {\r\n children: ReactNode\r\n startIcon?: ReactNode\r\n [key: string]: any // Allow additional props\r\n}\r\n\r\nexport const ButtonAnimation: FC<IButtonAnimationProps> = (props) => {\r\n const { children, startIcon, className, forceTheme, ...otherProps } = props\r\n\r\n const renderIcon = useCallback(() => {\r\n if (!startIcon) return null\r\n let finalIcon = startIcon\r\n if (typeof startIcon === 'string') {\r\n finalIcon = <Box component='span' className='icon-img' sx={{ '--mask-url': `url(${startIcon})` }} />\r\n }\r\n return <span className='icon-static'>{finalIcon}</span>\r\n }, [startIcon])\r\n\r\n const rootClasses = useMemo(() => {\r\n const classes = ['tab-button']\r\n classes.push(className || '')\r\n return classes.join(' ')\r\n }, [className])\r\n\r\n return (\r\n <ButtonAnimationStyled {...otherProps} className={rootClasses} forceTheme={forceTheme}>\r\n {renderIcon()}\r\n <div className='text-container'>\r\n <Typography variant='h6' className='text text-visible'>\r\n {children}\r\n </Typography>\r\n <Typography variant='h6' className='text text-hidden'>\r\n {children}\r\n </Typography>\r\n </div>\r\n </ButtonAnimationStyled>\r\n )\r\n}\r\n\r\nconst ButtonAnimationStyled = styled(Button, {\r\n shouldForwardProp: (prop: PropertyKey) => prop !== 'forceTheme'\r\n})<IButtonThemeProps>(({ theme, forceTheme }: { theme: Theme; forceTheme?: 'dark' | 'light' }) => {\r\n const sxMap = {\r\n dark: {\r\n primary: theme.palette.common.white,\r\n secondary: 'rgb(249, 169, 37)',\r\n iconActive: 'rgb(249, 169, 37)',\r\n bgGradient: 'linear-gradient(45deg, rgb(211, 47, 47) 0%, rgb(249, 169, 37) 70%, rgb(211, 47, 47) 100%) 0% 0% / 200%',\r\n iconImageFilter: 'invert(1) brightness(2)'\r\n },\r\n light: {\r\n primary: theme.palette.common.black,\r\n secondary: 'rgb(156, 39, 176)',\r\n iconActive: 'rgb(156, 39, 176)',\r\n bgGradient: 'linear-gradient(45deg, rgb(25, 118, 210) 0%, rgb(156, 39, 176) 70%, rgb(25, 118, 210) 100%) 0% 0% / 200%',\r\n iconImageFilter: 'invert(0) brightness(0.2)'\r\n }\r\n }\r\n\r\n const mode = forceTheme || theme.palette.mode\r\n const currentSx = sxMap[mode as keyof typeof sxMap]\r\n\r\n return {\r\n '--color-primary': currentSx.primary,\r\n '--color-secondary': currentSx.secondary,\r\n '--bg-underline': currentSx.bgGradient,\r\n '--bg-icon': currentSx.bgGradient,\r\n '--icon-color-active': currentSx.iconActive,\r\n '--size-icon': '24px',\r\n '--spacing-x-size': '12px',\r\n '--timing-fast': '0.25s',\r\n '--timing-medium': '0.3s',\r\n '--easing-smooth': 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n '--easing-bounce': 'cubic-bezier(0.34, 1.56, 0.64, 1)',\r\n height: 'var(--height-button, 40px)',\r\n position: 'relative',\r\n overflow: 'hidden',\r\n transition: 'transform 0.2s, box-shadow 0.2s',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n padding: '6px var(--spacing-x-size)',\r\n color: 'var(--color-primary)',\r\n backgroundColor: 'transparent !important',\r\n\r\n a: {\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n\r\n '&::after': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n bottom: '2px',\r\n left: 'var(--spacing-x-size)',\r\n width: '0',\r\n height: '2px',\r\n background: 'var(--bg-underline)',\r\n transition: 'width var(--timing-fast) var(--easing-smooth)'\r\n },\r\n\r\n '& .icon-static': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexShrink: 0,\r\n transition: 'transform var(--timing-medium) var(--easing-bounce)',\r\n transformOrigin: 'left bottom',\r\n position: 'relative',\r\n 'img, svg, .icon-img': { width: 'var(--size-icon)', height: 'var(--size-icon)' },\r\n '.icon-img': {\r\n backgroundImage: `var(--mask-url)`,\r\n backgroundSize: 'cover',\r\n backgroundPosition: 'center',\r\n display: 'block',\r\n borderRadius: 4,\r\n transition: 'filter 0.3s',\r\n position: 'relative',\r\n zIndex: 1,\r\n filter: currentSx.iconImageFilter\r\n }\r\n },\r\n\r\n '& .text-container': { position: 'relative', overflow: 'hidden', flex: 1 },\r\n\r\n '.text': {\r\n textTransform: 'none',\r\n fontWeight: 600,\r\n fontSize: '1.125rem',\r\n lineHeight: 1.6,\r\n transformOrigin: 'left bottom'\r\n },\r\n\r\n '& .text-visible, & .text-hidden': {\r\n transition: 'transform var(--timing-medium) var(--easing-smooth)',\r\n display: 'block',\r\n width: '100%',\r\n textAlign: 'left',\r\n margin: 0\r\n },\r\n\r\n '& .text-visible': { transform: 'translateY(0) skewY(0)', opacity: 1 },\r\n\r\n '& .text-hidden': {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '0',\r\n transform: 'translateY(50%) skewY(15deg)',\r\n opacity: 1\r\n },\r\n\r\n '&.active-tab': {\r\n '& .icon-static': {\r\n color: 'var(--icon-color-active)',\r\n '.icon-img': {\r\n background: 'var(--bg-icon)',\r\n WebkitMaskImage: 'var(--mask-url)',\r\n maskImage: 'var(--mask-url)',\r\n WebkitMaskRepeat: 'no-repeat',\r\n maskRepeat: 'no-repeat',\r\n WebkitMaskSize: 'cover',\r\n maskSize: 'cover',\r\n filter: 'none'\r\n }\r\n },\r\n '&::after': { width: 'var(--size-icon)' }\r\n },\r\n '&.inactive-tab': { '&::after': { width: '0' } },\r\n\r\n '&:hover': {\r\n // transform: 'scale(1.02)',\r\n '&::after': { width: 'calc(100% - (var(--spacing-x-size) * 2))' },\r\n '& .icon-static': { transform: 'rotate(-10deg)' },\r\n '& .text-visible': { transform: 'translateY(-100%) skewY(-15deg)', opacity: 1 },\r\n '& .text-hidden': { transform: 'translateY(-50%) skewY(0)', opacity: 1 }\r\n }\r\n }\r\n})\r\n"],"names":["IconAudioBase64","IconVideoBase64","ButtonAnimation","props","children","startIcon","className","forceTheme","otherProps","_objectWithoutProperties","_excluded","renderIcon","useCallback","finalIcon","_jsx","Box","component","sx","concat","rootClasses","useMemo","classes","push","join","_jsxs","ButtonAnimationStyled","_objectSpread","Typography","variant","styled","Button","shouldForwardProp","prop","_ref","theme","currentSx","dark","primary","palette","common","white","secondary","iconActive","bgGradient","iconImageFilter","light","black","mode","height","position","overflow","transition","display","alignItems","gap","padding","color","backgroundColor","a","content","bottom","left","width","background","flexShrink","transformOrigin","backgroundImage","backgroundSize","backgroundPosition","borderRadius","zIndex","filter","flex","textTransform","fontWeight","fontSize","lineHeight","textAlign","margin","transform","opacity","top","WebkitMaskImage","maskImage","WebkitMaskRepeat","maskRepeat","WebkitMaskSize","maskSize"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{objectSpread2 as
|
|
1
|
+
import{inherits as r,createClass as e,objectSpread2 as n,classCallCheck as i,callSuper as a,defineProperty as o}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,jsx as l}from"react/jsx-runtime";import{Component as c}from"react";import{CssBaseline as s,Container as m,Grid as p,Typography as d,Divider as h,Box as u,IconButton as v}from"@mui/material";import{AppLogo as f}from"./app-logo.js";import{TextLineBreak as g}from"./ui.units.js";import{AppThemeProvider as N}from"./app-theme-provider.js";import{FooterStyled as k,appFooterClasses as x,AppFooterNav as b}from"./app-footer.styled.js";import{getFooterNavConfigs as y,bgFooterUrl as C,appLogoUrl as j,footerDescription as F,appSocialConfigs as I,copyrightText as L}from"./configs.js";var E=function(){function E(){var r;i(this,E);for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return r=a(this,E,[].concat(n)),o(r,"handleNavItemClick",function(e,n){r.props.onNavItemClick&&n&&r.props.onNavItemClick(e,n)}),r}return r(E,c),e(E,[{key:"render",value:function(){var r=this,e=y(this.props.baseUrl);return t(N,{children:[l(s,{}),t(k,{className:x.root,children:[l("img",{src:C,alt:"Footer Background",className:x.background,loading:"lazy"}),t(m,{maxWidth:!1,className:x.content,children:[t(p,{container:!0,children:[t(p,{item:!0,xs:12,lg:7,children:[l(f,{src:j,href:this.props.baseUrl.home,className:x.appLogo}),l(d,{variant:"body2",className:x.description,children:l(g,{children:F})})]}),l(p,{item:!0,xs:12,lg:5,children:l(b,{children:l(p,{container:!0,children:e.map(function(e,n){return l(p,{item:!0,xs:12,md:6,children:l("ul",{children:e.map(function(e,n){var i,a,o;return l("li",{className:x.navItem,children:l(d,{variant:"h6",className:x.navItemText,component:"a",href:null!==(i=null===(a=e.navLink)||void 0===a?void 0:a.href)&&void 0!==i?i:"/",target:null===(o=e.navLink)||void 0===o?void 0:o.target,onClick:function(n){return r.handleNavItemClick(n,e.navLink)},children:l("span",{children:e.title})})},n)})})},n)})})})})]}),t("div",{className:x.copyright,children:[l(h,{sx:{borderColor:"#1E1E1E",mt:{xs:"20px",md:"80px"}}}),l("ul",{className:x.socialList,children:I.map(function(r,e){var i=n({"--social-color-hover":r.color||"#FFFFFF"},r.sx);return l(u,{component:"li",sx:i,children:l(v,{component:"a",href:r.link,target:"_blank",rel:"noopener noreferrer",children:r.icon})},e)})}),l("div",{className:x.copyrightText,children:l(d,{variant:"subtitle1",noWrap:!0,children:L})})]})]})]})]})}}])}(),_=function(r){var e=function(e){return l(E,n(n({},r),e))};return e.displayName="AppFooter",e};export{E as AppFooter,_ as createAppFooter,E as default};
|
|
2
2
|
//# sourceMappingURL=app-footer.js.map
|