UNPKG

10.2 kBSource Map (JSON)View Raw
1{"version":3,"sources":["responsive/Responsive.js"],"names":["PureComponent","isObject","debounce","isArrayLike","matchMediaPolifill","Breakpoint","enquire","window","matchMedia","require","responsiveMap","xxl","xl","lg","md","sm","xs","responsiveArray","Object","keys","isBreakPointMap","item","length","every","key","hasBreakPointMap","items","some","isOrHasBreakPointMap","Responsive","arguments","state","breakpoints","handlers","Map","fireUpdate","onChange","props","getValues","disabled","isDisabled","register","prevProps","unregister","forEach","breakpoint","query","handler","match","setState","prevState","unmatch","destroy","set","get","value","map","processValue","i","undefined","children","displayName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAASA,aAAT,QAA8B,OAA9B;AACA,OAAOC,QAAP,MAAqB,iBAArB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AACA,SAASC,WAAT,QAA4B,MAA5B;AACA,SAASC,kBAAT,QAAmC,iCAAnC;AACA,SAASC,UAAT,QAA2B,QAA3B;AACA,IAAIC,OAAJ;;AACA,IAAI,OAAOC,MAAP,KAAkB,WAAtB,EAAmC;AAC/BA,EAAAA,MAAM,CAACC,UAAP,GAAoBD,MAAM,CAACC,UAAP,IAAqBJ,kBAAzC,CAD+B,CAE/B;;AACAE,EAAAA,OAAO,GAAGG,OAAO,CAAC,YAAD,CAAjB;AACH;;AACD,IAAMC,aAAa,yDACdL,UAAU,CAACM,GADG,EACG,qBADH,mCAEdN,UAAU,CAACO,EAFG,EAEE,qBAFF,mCAGdP,UAAU,CAACQ,EAHG,EAGE,oBAHF,mCAIdR,UAAU,CAACS,EAJG,EAIE,oBAJF,mCAKdT,UAAU,CAACU,EALG,EAKE,oBALF,mCAMdV,UAAU,CAACW,EANG,EAME,oBANF,kBAAnB;AAQA,IAAMC,eAAe,GAAGC,MAAM,CAACC,IAAP,CAAYT,aAAZ,CAAxB;;AACA,SAASU,eAAT,CAAyBC,IAAzB,EAA+B;AAC3B,MAAIpB,QAAQ,CAACoB,IAAD,CAAZ,EAAoB;AAChB,QAAMF,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYE,IAAZ,CAAb;;AACA,QAAIF,IAAI,CAACG,MAAT,EAAiB;AACb,aAAOH,IAAI,CAACI,KAAL,CAAW,UAAAC,GAAG;AAAA,eAAIA,GAAG,IAAId,aAAX;AAAA,OAAd,CAAP;AACH;AACJ;;AACD,SAAO,KAAP;AACH;;AACD,OAAO,SAASe,gBAAT,CAA0BC,KAA1B,EAAiC;AACpC;AACA,SAAOA,KAAK,CAACC,IAAN,CAAWC,oBAAX,CAAP;AACH;;AACD,SAASA,oBAAT,CAA8BP,IAA9B,EAAoC;AAChC,SAAOlB,WAAW,CAACkB,IAAD,CAAX,GAAoBI,gBAAgB,CAACJ,IAAD,CAApC,GAA6CD,eAAe,CAACC,IAAD,CAAnE;AACH;;IACoBQ,U;;;;;;;AACjB,wBAAc;AAAA;;AAAA;;AACV,+BAASC,SAAT;AACA,UAAKC,KAAL,GAAa;AAAEC,MAAAA,WAAW,EAAE;AAAf,KAAb;AACA,UAAKC,QAAL,GAAgB,IAAIC,GAAJ,EAAhB;AACA,UAAKC,UAAL,GAAkBjC,QAAQ,CAAC,YAAM;AAAA,UACrBkC,QADqB,GACR,MAAKC,KADG,CACrBD,QADqB;;AAE7B,UAAIA,QAAJ,EAAc;AACVA,QAAAA,QAAQ,CAAC,MAAKE,SAAL,EAAD,CAAR;AACH;AACJ,KALyB,EAKvB,EALuB,CAA1B;AAJU;AAUb;;;;+BACUD,K,EAAO;AAAA,UACNE,QADM,GACcF,KADd,CACNE,QADM;AAAA,UACIb,KADJ,GACcW,KADd,CACIX,KADJ;;AAEd,UAAI,CAACa,QAAD,IAAab,KAAjB,EAAwB;AACpB,eAAO,CAACD,gBAAgB,CAACC,KAAD,CAAxB;AACH;;AACD,aAAO,IAAP;AACH;;;wCACmB;AAChB,UAAI,CAAC,KAAKc,UAAL,CAAgB,KAAKH,KAArB,CAAL,EAAkC;AAC9B,aAAKI,QAAL;AACH;AACJ;;;uCACkBC,S,EAAW;AAAA,UAClBL,KADkB,GACR,IADQ,CAClBA,KADkB;;AAE1B,UAAI,CAAC,KAAKG,UAAL,CAAgBE,SAAhB,CAAD,IAA+B,KAAKF,UAAL,CAAgBH,KAAhB,CAAnC,EAA2D;AACvD,aAAKM,UAAL;AACH;;AACD,UAAI,KAAKH,UAAL,CAAgBE,SAAhB,KAA8B,CAAC,KAAKF,UAAL,CAAgBH,KAAhB,CAAnC,EAA2D;AACvD,aAAKI,QAAL;AACH;AACJ;;;2CACsB;AACnB,UAAI,CAAC,KAAKD,UAAL,CAAgB,KAAKH,KAArB,CAAL,EAAkC;AAC9B,aAAKM,UAAL;AACH;AACJ;;;+BACU;AAAA;;AACP,UAAIrC,OAAJ,EAAa;AAAA,YACD2B,QADC,GACY,IADZ,CACDA,QADC;AAEThB,QAAAA,eAAe,CAAC2B,OAAhB,CAAwB,UAACC,UAAD,EAAgB;AACpC,cAAMC,KAAK,GAAGpC,aAAa,CAACmC,UAAD,CAA3B;AACA,cAAME,OAAO,GAAG;AACZC,YAAAA,KAAK,EAAE,iBAAM;AACT,cAAA,MAAI,CAACC,QAAL,CAAc,UAAAC,SAAS;AAAA,uBAAK;AACxBlB,kBAAAA,WAAW,oBACJkB,SAAS,CAAClB,WADN,sBAENa,UAFM,EAEO,IAFP;AADa,iBAAL;AAAA,eAAvB,EAKI,MAAI,CAACV,UALT;AAMH,aARW;AASZgB,YAAAA,OAAO,EAAE,mBAAM;AACX,cAAA,MAAI,CAACF,QAAL,CAAc,UAAAC,SAAS;AAAA,uBAAK;AACxBlB,kBAAAA,WAAW,oBACJkB,SAAS,CAAClB,WADN,sBAENa,UAFM,EAEO,KAFP;AADa,iBAAL;AAAA,eAAvB,EAKI,MAAI,CAACV,UALT;AAMH,aAhBW;AAiBZ;AACAiB,YAAAA,OAlBY,qBAkBF,CACT;AAnBW,WAAhB;AAqBA9C,UAAAA,OAAO,CAACmC,QAAR,CAAiBK,KAAjB,EAAwBC,OAAxB;AACAd,UAAAA,QAAQ,CAACoB,GAAT,CAAaP,KAAb,EAAoBC,OAApB;AACH,SAzBD;AA0BH;AACJ;;;iCACY;AAAA,UACDd,QADC,GACY,IADZ,CACDA,QADC;AAETf,MAAAA,MAAM,CAACC,IAAP,CAAYT,aAAZ,EAA2BkC,OAA3B,CAAmC,UAACC,UAAD,EAAgB;AAC/C,YAAMC,KAAK,GAAGpC,aAAa,CAACmC,UAAD,CAA3B;AACA,YAAME,OAAO,GAAGd,QAAQ,CAACqB,GAAT,CAAaR,KAAb,CAAhB;;AACA,YAAIC,OAAJ,EAAa;AACTzC,UAAAA,OAAO,CAACqC,UAAR,CAAmBG,KAAnB,EAA0BC,OAA1B;AACH;AACJ,OAND;AAOH;;;iCACYQ,K,EAAO;AAAA,UACRvB,WADQ,GACQ,KAAKD,KADb,CACRC,WADQ;;AAEhB,UAAI7B,WAAW,CAACoD,KAAD,CAAX,IAAsB9B,gBAAgB,CAAC8B,KAAD,CAA1C,EAAmD;AAC/C,eAAOA,KAAK,CAACC,GAAN,CAAU,KAAKC,YAAf,EAA6B,IAA7B,CAAP;AACH;;AACD,UAAIrC,eAAe,CAACmC,KAAD,CAAnB,EAA4B;AACxB,aAAK,IAAIG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGzC,eAAe,CAACK,MAApC,EAA4CoC,CAAC,EAA7C,EAAiD;AAC7C,cAAMb,UAAU,GAAG5B,eAAe,CAACyC,CAAD,CAAlC;;AACA,cAAI1B,WAAW,CAACa,UAAD,CAAX,IAA2BU,KAAK,CAACV,UAAD,CAAL,KAAsBc,SAArD,EAAgE;AAC5D,mBAAOJ,KAAK,CAACV,UAAD,CAAZ;AACH;AACJ;;AACD,eAAOc,SAAP;AACH;;AACD,aAAOJ,KAAP;AACH;;;gCACW;AAAA,UACA7B,KADA,GACU,KAAKW,KADf,CACAX,KADA;;AAER,UAAIA,KAAJ,EAAW;AACP,eAAOA,KAAK,CAAC8B,GAAN,CAAU,KAAKC,YAAf,EAA6B,IAA7B,CAAP;AACH;;AACD,aAAO,EAAP;AACH;;;6BACQ;AAAA,UACGpB,KADH,GACa,IADb,CACGA,KADH;AAAA,UAEGuB,QAFH,GAEgBvB,KAFhB,CAEGuB,QAFH;;AAGL,UAAI,OAAOA,QAAP,KAAoB,UAAxB,EAAoC;AAChC,eAAOA,QAAQ,CAAC,KAAKtB,SAAL,EAAD,EAAmB,KAAKE,UAAL,CAAgBH,KAAhB,CAAnB,CAAf;AACH;;AACD,aAAOuB,QAAP;AACH;;;;EA7GmC5D,a;;SAAnB6B,U;AA+GrBA,UAAU,CAACgC,WAAX,GAAyB,YAAzB","sourcesContent":["import { PureComponent } from 'react';\nimport isObject from 'lodash/isObject';\nimport debounce from 'lodash/debounce';\nimport { isArrayLike } from 'mobx';\nimport { matchMediaPolifill } from '../_util/mediaQueryListPolyfill';\nimport { Breakpoint } from './enum';\nlet enquire;\nif (typeof window !== 'undefined') {\n window.matchMedia = window.matchMedia || matchMediaPolifill;\n // eslint-disable-next-line global-require\n enquire = require('enquire.js');\n}\nconst responsiveMap = {\n [Breakpoint.xxl]: '(min-width: 1600px)',\n [Breakpoint.xl]: '(min-width: 1200px)',\n [Breakpoint.lg]: '(min-width: 992px)',\n [Breakpoint.md]: '(min-width: 768px)',\n [Breakpoint.sm]: '(min-width: 576px)',\n [Breakpoint.xs]: '(max-width: 575px)',\n};\nconst responsiveArray = Object.keys(responsiveMap);\nfunction isBreakPointMap(item) {\n if (isObject(item)) {\n const keys = Object.keys(item);\n if (keys.length) {\n return keys.every(key => key in responsiveMap);\n }\n }\n return false;\n}\nexport function hasBreakPointMap(items) {\n // eslint-disable-next-line no-use-before-define\n return items.some(isOrHasBreakPointMap);\n}\nfunction isOrHasBreakPointMap(item) {\n return isArrayLike(item) ? hasBreakPointMap(item) : isBreakPointMap(item);\n}\nexport default class Responsive extends PureComponent {\n constructor() {\n super(...arguments);\n this.state = { breakpoints: {} };\n this.handlers = new Map();\n this.fireUpdate = debounce(() => {\n const { onChange } = this.props;\n if (onChange) {\n onChange(this.getValues());\n }\n }, 10);\n }\n isDisabled(props) {\n const { disabled, items } = props;\n if (!disabled && items) {\n return !hasBreakPointMap(items);\n }\n return true;\n }\n componentDidMount() {\n if (!this.isDisabled(this.props)) {\n this.register();\n }\n }\n componentDidUpdate(prevProps) {\n const { props } = this;\n if (!this.isDisabled(prevProps) && this.isDisabled(props)) {\n this.unregister();\n }\n if (this.isDisabled(prevProps) && !this.isDisabled(props)) {\n this.register();\n }\n }\n componentWillUnmount() {\n if (!this.isDisabled(this.props)) {\n this.unregister();\n }\n }\n register() {\n if (enquire) {\n const { handlers } = this;\n responsiveArray.forEach((breakpoint) => {\n const query = responsiveMap[breakpoint];\n const handler = {\n match: () => {\n this.setState(prevState => ({\n breakpoints: {\n ...prevState.breakpoints,\n [breakpoint]: true,\n },\n }), this.fireUpdate);\n },\n unmatch: () => {\n this.setState(prevState => ({\n breakpoints: {\n ...prevState.breakpoints,\n [breakpoint]: false,\n },\n }), this.fireUpdate);\n },\n // Keep a empty destory to avoid triggering unmatch when unregister\n destroy() {\n },\n };\n enquire.register(query, handler);\n handlers.set(query, handler);\n });\n }\n }\n unregister() {\n const { handlers } = this;\n Object.keys(responsiveMap).forEach((breakpoint) => {\n const query = responsiveMap[breakpoint];\n const handler = handlers.get(query);\n if (handler) {\n enquire.unregister(query, handler);\n }\n });\n }\n processValue(value) {\n const { breakpoints } = this.state;\n if (isArrayLike(value) && hasBreakPointMap(value)) {\n return value.map(this.processValue, this);\n }\n if (isBreakPointMap(value)) {\n for (let i = 0; i < responsiveArray.length; i++) {\n const breakpoint = responsiveArray[i];\n if (breakpoints[breakpoint] && value[breakpoint] !== undefined) {\n return value[breakpoint];\n }\n }\n return undefined;\n }\n return value;\n }\n getValues() {\n const { items } = this.props;\n if (items) {\n return items.map(this.processValue, this);\n }\n return [];\n }\n render() {\n const { props } = this;\n const { children } = props;\n if (typeof children === 'function') {\n return children(this.getValues(), this.isDisabled(props));\n }\n return children;\n }\n}\nResponsive.displayName = 'Responsive';\n"],"file":"Responsive.js"}
\No newline at end of file