@bizhermit/react-sdk
Version:
React SDK
1 lines • 3.18 kB
JavaScript
;var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&__createBinding(t,e,r);return __setModuleDefault(t,e),t},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.useLayout=exports.LayoutContext=exports.ScreenSize=void 0;const string_utils_1=__importDefault(require("@bizhermit/basic-utils/dist/string-utils")),react_1=__importStar(require("react")),mask_1=require("../popups/mask"),core_style_1=__importDefault(require("./core-style"));exports.ScreenSize={exSmall:0,small:1,medium:2,large:3,exLarge:4},exports.LayoutContext=(0,react_1.createContext)({color:"system",_color:void 0,design:void 0,screenSize:void 0,setColor:()=>{},setDesign:()=>{},cache:{}});const useLayout=()=>(0,react_1.useContext)(exports.LayoutContext);exports.useLayout=useLayout;const colorReducer=(e,t)=>"system"===t?"undefined"==typeof window?{$:void 0,_:void 0}:{$:t,_:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}:{$:t,_:t},colorReducerInitializer=e=>"system"===e?{$:void 0,_:void 0}:colorReducer(0,e),judgeSize=(e=0)=>e>1904?exports.ScreenSize.exLarge:e>1264?exports.ScreenSize.large:e>960?exports.ScreenSize.medium:e>600?exports.ScreenSize.small:exports.ScreenSize.exSmall,LayoutProvider=e=>{const[t,r]=(0,react_1.useReducer)(colorReducer,colorReducerInitializer(e.color)),[o,i]=(0,react_1.useState)(e.design),[u,n]=(0,react_1.useState)();return(0,react_1.useEffect)((()=>{string_utils_1.default.isEmpty(t._)?document?.documentElement?.removeAttribute("data-color"):document?.documentElement?.setAttribute("data-color",t._)}),[t._]),(0,react_1.useEffect)((()=>{string_utils_1.default.isEmpty(o)?document?.documentElement?.removeAttribute("data-design"):document?.documentElement?.setAttribute("data-design",o)}),[o]),(0,react_1.useEffect)((()=>{document.querySelectorAll('style[id*="bh-core__"]').length>1&&document.querySelectorAll("head > style").forEach((e=>{document.head.removeChild(e)}));let t=null;const o=()=>{t||(t=setTimeout((()=>{n((e.judgeSize??judgeSize)(window.innerWidth)),t=null}),50))};return window.addEventListener("resize",o),n((e.judgeSize??judgeSize)(window.innerWidth)),"system"===e.color&&r(e.color),()=>{window.removeEventListener("resize",o)}}),[]),react_1.default.createElement(exports.LayoutContext.Provider,{value:{color:t.$,_color:t._,design:o,setColor:r,setDesign:i,screenSize:u,cache:{}}},react_1.default.createElement(mask_1.MaskProvider,null,e.children),core_style_1.default)};exports.default=LayoutProvider;