UNPKG

10.5 kBSource Map (JSON)View Raw
1{"version":3,"sources":["align/Align.js"],"names":["isWindow","obj","window","isChildrenFunction","fn","Align","arguments","saveSourceRef","node","source","childrenRef","props","hidden","onAlign","noop","target","body","align","ref","result","translate","x","y","points","overflow","adjustX","adjustY","includes","r1","getBoundingClientRect","r2","left","width","top","height","monitorWindowResize","forceAlign","startMonitorWindowResize","prevProps","preHidden","preAlign","preTarget","reAlign","lastTarget","currentTarget","stopMonitorWindowResize","monitorBufferTime","resizeHandler","EventManager","bufferMonitor","TaskRunner","addEventListener","delay","bind","cancel","clear","childrenProps","children","newProps","Object","keys","forEach","prop","hasOwnProperty","call","Component","displayName","propTypes","PropTypes","object","func","isRequired","number","bool","any","defaultProps"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAASA,QAAT,CAAkBC,GAAlB,EAAuB;AACnB,SAAOA,GAAG,IAAI,IAAP,IAAeA,GAAG,KAAKA,GAAG,CAACC,MAAlC;AACH;;AACD,SAASC,kBAAT,CAA4BC,EAA5B,EAAgC;AAC5B,SAAO,OAAOA,EAAP,KAAc,UAArB;AACH;;IACoBC,K;;;;;;;AACjB,mBAAc;AAAA;;AAAA;AACV,+BAASC,SAAT;;AACA,UAAKC,aAAL,GAAqB,UAACC,IAAD,EAAU;AAC3B,YAAKC,MAAL,GAAcD,IAAd;AAD2B,UAEnBE,WAFmB,GAEH,MAAKC,KAFF,CAEnBD,WAFmB;;AAG3B,UAAIA,WAAJ,EAAiB;AACbA,QAAAA,WAAW,CAACF,IAAD,CAAX;AACH;AACJ,KAND;;AAFU;AASb;;;;iCACY;AAAA,wBAC0E,KAAKG,KAD/E;AAAA,UACDC,MADC,eACDA,MADC;AAAA,4CACOC,OADP;AAAA,UACOA,OADP,oCACiBC,gBADjB;AAAA,2CACuBC,MADvB;AAAA,UACuBA,MADvB,mCACgC;AAAA,eAAM,gCAAYb,MAAZ,EAAoBc,IAA1B;AAAA,OADhC;AAAA,UACgEC,KADhE,eACgEA,KADhE;;AAET,UAAI,CAACL,MAAL,EAAa;AAAA,2BAC8B,IAD9B,CACDH,MADC;AAAA,YACDA,MADC,6BACQ,2BAAY,IAAZ,CADR;AAET,YAAMS,GAAG,GAAGH,MAAM,EAAlB;AACA,YAAMI,MAAM,GAAG,0BAASV,MAAT,EAAiBS,GAAjB,EAAsBD,KAAtB,CAAf;AACA,YAAMG,SAAS,GAAG;AACdC,UAAAA,CAAC,EAAE,CADW;AAEdC,UAAAA,CAAC,EAAE;AAFW,SAAlB;AAJS,YAQDC,MARC,GAQ0CJ,MAR1C,CAQDI,MARC;AAAA,+BAQ0CJ,MAR1C,CAQOK,QARP;AAAA,YAQmBC,OARnB,oBAQmBA,OARnB;AAAA,YAQ4BC,OAR5B,oBAQ4BA,OAR5B;;AAST,YAAIjB,MAAM,IAAIS,GAAV,KAAkBO,OAAO,IAAIC,OAA7B,MAA0CH,MAAM,CAACI,QAAP,CAAgB,IAAhB,KAAyBJ,MAAM,CAACI,QAAP,CAAgB,IAAhB,CAAnE,CAAJ,EAA+F;AAC3F,cAAMC,EAAE,GAAGnB,MAAM,CAACoB,qBAAP,EAAX;AACA,cAAMC,EAAE,GAAGZ,GAAG,CAACW,qBAAJ,EAAX;;AACA,cAAIJ,OAAJ,EAAa;AACTL,YAAAA,SAAS,CAACC,CAAV,GAAcO,EAAE,CAACG,IAAH,GAAUH,EAAE,CAACI,KAAH,GAAW,CAArB,GAAyBF,EAAE,CAACC,IAA5B,GAAmCD,EAAE,CAACE,KAAH,GAAW,CAA5D;AACH;;AACD,cAAIN,OAAJ,EAAa;AACTN,YAAAA,SAAS,CAACE,CAAV,GAAcM,EAAE,CAACK,GAAH,GAASL,EAAE,CAACM,MAAH,GAAY,CAArB,GAAyBJ,EAAE,CAACG,GAA5B,GAAkCH,EAAE,CAACI,MAAH,GAAY,CAA5D;AACH;AACJ;;AACDrB,QAAAA,OAAO,CAACJ,MAAD,EAASU,MAAT,EAAiBD,GAAjB,EAAsBE,SAAtB,CAAP;AACH;AACJ;;;wCACmB;AAAA,yBACwB,KAAKT,KAD7B;AAAA,UACRC,MADQ,gBACRA,MADQ;AAAA,UACAuB,mBADA,gBACAA,mBADA;AAEhB,WAAKC,UAAL;;AACA,UAAI,CAACxB,MAAD,IAAWuB,mBAAf,EAAoC;AAChC,aAAKE,wBAAL;AACH;AACJ;;;uCACkBC,S,EAAW;AAAA,yBAC4C,KAAK3B,KADjD;AAAA,UAClBC,MADkB,gBAClBA,MADkB;AAAA,UACVK,KADU,gBACVA,KADU;AAAA,6CACHF,MADG;AAAA,UACHA,MADG,oCACM;AAAA,eAAMb,MAAN;AAAA,OADN;AAAA,UACoBiC,mBADpB,gBACoBA,mBADpB;AAAA,UAEVI,SAFU,GAEwCD,SAFxC,CAElB1B,MAFkB;AAAA,UAEQ4B,QAFR,GAEwCF,SAFxC,CAECrB,KAFD;AAAA,UAE0BwB,SAF1B,GAEwCH,SAFxC,CAEkBvB,MAFlB;AAG1B,UAAI2B,OAAO,GAAG,KAAd;;AACA,UAAI,CAAC9B,MAAL,EAAa;AACT,YAAI2B,SAAS,IAAIC,QAAQ,KAAKvB,KAA9B,EAAqC;AACjCyB,UAAAA,OAAO,GAAG,IAAV;AACH,SAFD,MAGK;AACD,cAAMC,UAAU,GAAGF,SAAS,EAA5B;AACA,cAAMG,aAAa,GAAG7B,MAAM,EAA5B;;AACA,cAAIf,QAAQ,CAAC2C,UAAD,CAAR,IAAwB3C,QAAQ,CAAC4C,aAAD,CAApC,EAAqD;AACjDF,YAAAA,OAAO,GAAG,KAAV;AACH,WAFD,MAGK,IAAIC,UAAU,KAAKC,aAAnB,EAAkC;AACnCF,YAAAA,OAAO,GAAG,IAAV;AACH;AACJ;AACJ;;AACD,UAAIA,OAAJ,EAAa;AACT,aAAKN,UAAL;AACH;;AACD,UAAID,mBAAmB,IAAI,CAACvB,MAA5B,EAAoC;AAChC,aAAKyB,wBAAL;AACH,OAFD,MAGK;AACD,aAAKQ,uBAAL;AACH;AACJ;;;2CACsB;AACnB,WAAKA,uBAAL;AACH;;;+CAC0B;AAAA,UACfC,iBADe,GACO,KAAKnC,KADZ,CACfmC,iBADe;;AAEvB,UAAI,CAAC,KAAKC,aAAV,EAAyB;AACrB,aAAKA,aAAL,GAAqB,IAAIC,wBAAJ,CAAiB9C,MAAjB,CAArB;AACA,aAAK+C,aAAL,GAAqB,IAAIC,sBAAJ,EAArB;AACA,aAAKH,aAAL,CAAmBI,gBAAnB,CAAoC,QAApC,EAA8C,KAAKF,aAAL,CAAmBG,KAAnB,CAAyBC,IAAzB,CAA8B,KAAKJ,aAAnC,EAAkDH,iBAAlD,EAAqE,KAAKV,UAAL,CAAgBiB,IAAhB,CAAqB,IAArB,CAArE,CAA9C;AACH;AACJ;;;8CACyB;AACtB,UAAI,KAAKN,aAAT,EAAwB;AACpB,YAAI,KAAKE,aAAT,EAAwB;AACpB,eAAKA,aAAL,CAAmBK,MAAnB;AACH;;AACD,aAAKP,aAAL,CAAmBQ,KAAnB;AACA,aAAKR,aAAL,GAAqB,IAArB;AACH;AACJ;;;6BACQ;AAAA,UACGpC,KADH,GACa,IADb,CACGA,KADH;AAAA,UAEG6C,aAFH,GAE+B7C,KAF/B,CAEG6C,aAFH;AAAA,UAEkBC,QAFlB,GAE+B9C,KAF/B,CAEkB8C,QAFlB;AAGL,UAAMjD,IAAI,GAAGL,kBAAkB,CAACsD,QAAD,CAAlB,GAA+BA,QAAQ,CAAC,KAAKlD,aAAN,CAAvC,GAA8DkD,QAA3E;;AACA,UAAID,aAAa,IAAI,2BAAehD,IAAf,CAArB,EAA2C;AACvC,YAAMkD,QAAQ,GAAG,EAAjB;AACAC,QAAAA,MAAM,CAACC,IAAP,CAAYJ,aAAZ,EAA2BK,OAA3B,CAAmC,UAAAC,IAAI,EAAI;AACvC,cAAI,GAAGC,cAAH,CAAkBC,IAAlB,CAAuBR,aAAvB,EAAsCM,IAAtC,CAAJ,EAAiD;AAC7CJ,YAAAA,QAAQ,CAACI,IAAD,CAAR,GAAiBnD,KAAK,CAAC6C,aAAa,CAACM,IAAD,CAAd,CAAtB;AACH;AACJ,SAJD;AAKA,eAAO,yBAAatD,IAAb,EAAmBkD,QAAnB,CAAP;AACH;;AACD,aAAOlD,IAAP;AACH;;;EAzG8ByD,gB;;;AA2GnC5D,KAAK,CAAC6D,WAAN,GAAoB,OAApB;AACA7D,KAAK,CAAC8D,SAAN,GAAkB;AACdX,EAAAA,aAAa,EAAEY,sBAAUC,MADX;AAEd3D,EAAAA,WAAW,EAAE0D,sBAAUE,IAFT;AAGdrD,EAAAA,KAAK,EAAEmD,sBAAUC,MAAV,CAAiBE,UAHV;AAIdxD,EAAAA,MAAM,EAAEqD,sBAAUE,IAJJ;AAKdzD,EAAAA,OAAO,EAAEuD,sBAAUE,IALL;AAMdxB,EAAAA,iBAAiB,EAAEsB,sBAAUI,MANf;AAOdrC,EAAAA,mBAAmB,EAAEiC,sBAAUK,IAPjB;AAQd7D,EAAAA,MAAM,EAAEwD,sBAAUK,IARJ;AASdhB,EAAAA,QAAQ,EAAEW,sBAAUM;AATN,CAAlB;AAWArE,KAAK,CAACsE,YAAN,GAAqB;AACjB7B,EAAAA,iBAAiB,EAAE,EADF;AAEjBX,EAAAA,mBAAmB,EAAE,KAFJ;AAGjBvB,EAAAA,MAAM,EAAE;AAHS,CAArB","sourcesContent":["import { cloneElement, Component, isValidElement } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport noop from 'lodash/noop';\nimport { getDocument } from '../../pro/lib/_util/DocumentUtils';\nimport domAlign from './domAlign';\nimport EventManager from '../_util/EventManager';\nimport TaskRunner from '../_util/TaskRunner';\nfunction isWindow(obj) {\n return obj != null && obj === obj.window;\n}\nfunction isChildrenFunction(fn) {\n return typeof fn === 'function';\n}\nexport default class Align extends Component {\n constructor() {\n super(...arguments);\n this.saveSourceRef = (node) => {\n this.source = node;\n const { childrenRef } = this.props;\n if (childrenRef) {\n childrenRef(node);\n }\n };\n }\n forceAlign() {\n const { hidden, onAlign = noop, target = () => getDocument(window).body, align } = this.props;\n if (!hidden) {\n const { source = findDOMNode(this) } = this;\n const ref = target();\n const result = domAlign(source, ref, align);\n const translate = {\n x: 0,\n y: 0,\n };\n const { points, overflow: { adjustX, adjustY } } = result;\n if (source && ref && (adjustX || adjustY) && (points.includes('bc') || points.includes('tc'))) {\n const r1 = source.getBoundingClientRect();\n const r2 = ref.getBoundingClientRect();\n if (adjustX) {\n translate.x = r1.left + r1.width / 2 - r2.left - r2.width / 2;\n }\n if (adjustY) {\n translate.y = r1.top + r1.height / 2 - r2.top - r2.height / 2;\n }\n }\n onAlign(source, result, ref, translate);\n }\n }\n componentDidMount() {\n const { hidden, monitorWindowResize } = this.props;\n this.forceAlign();\n if (!hidden && monitorWindowResize) {\n this.startMonitorWindowResize();\n }\n }\n componentDidUpdate(prevProps) {\n const { hidden, align, target = () => window, monitorWindowResize } = this.props;\n const { hidden: preHidden, align: preAlign, target: preTarget } = prevProps;\n let reAlign = false;\n if (!hidden) {\n if (preHidden || preAlign !== align) {\n reAlign = true;\n }\n else {\n const lastTarget = preTarget();\n const currentTarget = target();\n if (isWindow(lastTarget) && isWindow(currentTarget)) {\n reAlign = false;\n }\n else if (lastTarget !== currentTarget) {\n reAlign = true;\n }\n }\n }\n if (reAlign) {\n this.forceAlign();\n }\n if (monitorWindowResize && !hidden) {\n this.startMonitorWindowResize();\n }\n else {\n this.stopMonitorWindowResize();\n }\n }\n componentWillUnmount() {\n this.stopMonitorWindowResize();\n }\n startMonitorWindowResize() {\n const { monitorBufferTime } = this.props;\n if (!this.resizeHandler) {\n this.resizeHandler = new EventManager(window);\n this.bufferMonitor = new TaskRunner();\n this.resizeHandler.addEventListener('resize', this.bufferMonitor.delay.bind(this.bufferMonitor, monitorBufferTime, this.forceAlign.bind(this)));\n }\n }\n stopMonitorWindowResize() {\n if (this.resizeHandler) {\n if (this.bufferMonitor) {\n this.bufferMonitor.cancel();\n }\n this.resizeHandler.clear();\n this.resizeHandler = null;\n }\n }\n render() {\n const { props } = this;\n const { childrenProps, children } = props;\n const node = isChildrenFunction(children) ? children(this.saveSourceRef) : children;\n if (childrenProps && isValidElement(node)) {\n const newProps = {};\n Object.keys(childrenProps).forEach(prop => {\n if ({}.hasOwnProperty.call(childrenProps, prop)) {\n newProps[prop] = props[childrenProps[prop]];\n }\n });\n return cloneElement(node, newProps);\n }\n return node;\n }\n}\nAlign.displayName = 'Align';\nAlign.propTypes = {\n childrenProps: PropTypes.object,\n childrenRef: PropTypes.func,\n align: PropTypes.object.isRequired,\n target: PropTypes.func,\n onAlign: PropTypes.func,\n monitorBufferTime: PropTypes.number,\n monitorWindowResize: PropTypes.bool,\n hidden: PropTypes.bool,\n children: PropTypes.any,\n};\nAlign.defaultProps = {\n monitorBufferTime: 50,\n monitorWindowResize: false,\n hidden: true,\n};\n"],"file":"Align.js"}
\No newline at end of file