(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("react"), require("prop-types"), require("classnames")); else if(typeof define === 'function' && define.amd) define(["react", "prop-types", "classnames"], factory); else { var a = typeof exports === 'object' ? factory(require("react"), require("prop-types"), require("classnames")) : factory(root["react"], root["prop-types"], root["classnames"]); for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; } })(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_8__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = "/dest/"; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 379); /******/ }) /************************************************************************/ /******/ ({ /***/ 0: /***/ (function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_0__; /***/ }), /***/ 1: /***/ (function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_1__; /***/ }), /***/ 10: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = getStyleName; function getStyleName(styles, name) { return styles[name] || name; } /***/ }), /***/ 161: /***/ (function(module, exports) { module.exports = "https://sfiles.cnyes.cool/fe-common/862da914/5fbdce716ea9936da801688b9979630e.svg"; /***/ }), /***/ 162: /***/ (function(module, exports) { module.exports = "https://sfiles.cnyes.cool/fe-common/862da914/eb76e4028e56f908b84c418dff18f51b.svg"; /***/ }), /***/ 379: /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__(380); /***/ }), /***/ 380: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _react = __webpack_require__(0); var _react2 = _interopRequireDefault(_react); var _propTypes = __webpack_require__(1); var _propTypes2 = _interopRequireDefault(_propTypes); var _classnames = __webpack_require__(8); var _classnames2 = _interopRequireDefault(_classnames); var _propTypes3 = __webpack_require__(6); var _AccountPanel = __webpack_require__(381); var _AccountPanel2 = _interopRequireDefault(_AccountPanel); var _getStyleName = __webpack_require__(10); var _getStyleName2 = _interopRequireDefault(_getStyleName); var _userDefault = __webpack_require__(161); var _userDefault2 = _interopRequireDefault(_userDefault); var _userLogin = __webpack_require__(162); var _userLogin2 = _interopRequireDefault(_userLogin); var _icon_more = __webpack_require__(382); var _icon_more2 = _interopRequireDefault(_icon_more); var _icon_anue_rainbow = __webpack_require__(383); var _icon_anue_rainbow2 = _interopRequireDefault(_icon_anue_rainbow); var _navs = __webpack_require__(384); var _navs2 = _interopRequireDefault(_navs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable quotes */ var getNavConfig = function getNavConfig(navCofig, cnyesBaseUrl) { var nav = navCofig || _navs2.default.items; var replaceLink = function replaceLink(str) { return str.replace('{cnyesBaseUrl}', cnyesBaseUrl); }; nav.forEach(function (item, i) { // defaultUrl nav[i].defaultUrl = replaceLink(item.defaultUrl); // notify if (item.notify) { item.notify.forEach(function (n, j) { var gotoUrl = nav[i].notify[j].gotoUrl; nav[i].notify[j].gotoUrl = replaceLink(gotoUrl); }); } }); return nav; }; var AccountPanel = function (_PureComponent) { _inherits(AccountPanel, _PureComponent); function AccountPanel(props) { _classCallCheck(this, AccountPanel); var _this = _possibleConstructorReturn(this, (AccountPanel.__proto__ || Object.getPrototypeOf(AccountPanel)).call(this, props)); _this.onClickClose = function () { _this.setState({ isOpenState: false }); _this.props.onClosePanel(); }; _this.onClickNav = function () { _this.setState({ isOpenState: false }); _this.props.onClickNav(); }; _this.handleDocClick = function (e) { if (!_this.accountPanelRef.contains(e.target) && _this.state.isOpenState) { _this.onClickClose(); } }; _this.navConfig = getNavConfig(props.navs, props.cnyesBaseUrl); _this.memberInfoLink = 'https://www.' + props.cnyesBaseUrl + '/member/info'; _this.state = { isOpenState: false }; return _this; } _createClass(AccountPanel, [{ key: 'componentWillReceiveProps', value: function componentWillReceiveProps(nextProps) { var isOpen = nextProps.isOpen; var isOpenState = this.state.isOpenState; if (isOpen !== isOpenState) { this.setState({ isOpenState: isOpen }); } } }, { key: 'componentDidUpdate', value: function componentDidUpdate(prevProps, prevState) { var _this2 = this; var isOpenState = this.state.isOpenState; if (prevState.isOpenState !== isOpenState) { if (window) { if (isOpenState) { // move to next tic to prevent trigger `handleDocClick` when click avatar setTimeout(function () { window.addEventListener('click', _this2.handleDocClick); }, 0); } else { window.removeEventListener('click', this.handleDocClick); } } } } }, { key: 'renderMemberInfo', value: function renderMemberInfo() { var _props = this.props, isLogin = _props.isLogin, profile = _props.profile, login = _props.login; var avatar = profile.avatar; if (isLogin) { var userAvatar = avatar || _userLogin2.default; return _react2.default.createElement( 'a', { href: this.memberInfoLink, className: _AccountPanel2.default.panel__member, 'data-tid': 'account-panel-member' }, _react2.default.createElement('img', { className: _AccountPanel2.default.panel__member__avatar, src: userAvatar, alt: profile.name }), _react2.default.createElement( 'div', { className: (0, _classnames2.default)(_AccountPanel2.default.panel__member__info, _AccountPanel2.default['panel__member__info--login']) }, _react2.default.createElement( 'div', null, profile.name ), _react2.default.createElement( 'span', null, '\u67E5\u770B\u500B\u4EBA\u8CC7\u8A0A' ) ), _react2.default.createElement('img', { className: _AccountPanel2.default.panel__member__more, alt: '\u524D\u5F80\u67E5\u770B\u500B\u4EBA\u8CC7\u8A0A', src: _icon_more2.default }) ); } return _react2.default.createElement( 'div', { className: _AccountPanel2.default.panel__member }, _react2.default.createElement('img', { className: _AccountPanel2.default.panel__member__avatar, src: _userDefault2.default, alt: '\u767B\u5165\u6703\u54E1' }), _react2.default.createElement( 'div', { className: _AccountPanel2.default.panel__member__info }, _react2.default.createElement( 'div', null, 'Hello, \u9245\u4EA8\u6703\u54E1' ) ), _react2.default.createElement( 'button', { className: _AccountPanel2.default.panel__member__login, onClick: login, 'data-tid': 'account-panel-login' }, '\u767B\u5165' ) ); } }, { key: 'render', value: function render() { var _this3 = this; var _props2 = this.props, isLogin = _props2.isLogin, logout = _props2.logout, highlights = _props2.highlights; var isOpenState = this.state.isOpenState; return _react2.default.createElement( 'aside', { className: (0, _classnames2.default)(_AccountPanel2.default.panel__wrapper, 'theme-gradient', _defineProperty({}, (0, _getStyleName2.default)(_AccountPanel2.default, 'panel__wrapper--active'), isOpenState)), ref: function ref(_ref) { _this3.accountPanelRef = _ref; } }, _react2.default.createElement( 'header', null, _react2.default.createElement( 'div', { className: _AccountPanel2.default.header__title }, _react2.default.createElement('img', { className: _AccountPanel2.default.header__icon, alt: 'Anue \u6703\u54E1\u4E2D\u5FC3', src: _icon_anue_rainbow2.default }), _react2.default.createElement( 'span', { className: _AccountPanel2.default.header__txt }, '\u6703\u54E1\u4E2D\u5FC3' ) ), _react2.default.createElement('button', { className: _AccountPanel2.default.header__close, onClick: this.onClickClose, 'data-tid': 'account-panel-close' }) ), _react2.default.createElement( 'main', null, this.renderMemberInfo(), _react2.default.createElement( 'nav', { className: _AccountPanel2.default.panel__nav }, this.navConfig.map(function (item) { var isHighlight = false; var link = item.defaultUrl; if (item.notify) { var notify = item.notify; var filteredNotify = notify.filter(function (n) { return highlights.indexOf(n.id) > -1; }); if (filteredNotify.length > 0) { isHighlight = true; link = filteredNotify[0].gotoUrl; } } return _react2.default.createElement( 'a', { className: (0, _classnames2.default)(_AccountPanel2.default.panel__link, _defineProperty({}, (0, _getStyleName2.default)(_AccountPanel2.default, 'panel__link--highlight'), isHighlight)), key: item.id, href: link, onClick: _this3.onClickNav, 'data-tid': 'account-panel-' + item.id }, item.title, _react2.default.createElement('img', { className: _AccountPanel2.default.panel__link__more, alt: '\u524D\u5F80' + item.title, src: _icon_more2.default }) ); }), _react2.default.createElement('div', { className: _AccountPanel2.default.nav__line }), isLogin && _react2.default.createElement( 'button', { className: _AccountPanel2.default.nav__logout, onClick: logout, 'data-tid': 'account-panel-logout' }, '\u767B\u51FA\u5E33\u865F' ) ) ) ); } }]); return AccountPanel; }(_react.PureComponent); AccountPanel.defaultProps = { isOpen: false, isLogin: false, profile: { identity_id: '', name: '', avatar: '' }, onClosePanel: function onClosePanel() {}, onClickNav: function onClickNav() {}, login: function login() {}, logout: function logout() {}, highlights: [], cnyesBaseUrl: 'cnyes.com', navs: undefined }; exports.default = AccountPanel; /***/ }), /***/ 381: /***/ (function(module, exports) { // removed by extract-text-webpack-plugin module.exports = {"wrapperWidth":"1200px","screenSizeSm":"321px","screenSizeMd":"768px","screenSizeMl":"990px","screenSizeLg":"1024px","screenSizeXl":"1200px","screenSizeXXl":"1360px","panel__member":"_2PQkB","panel__member__info":"_26yuU","panel__wrapper":"_eMBo3","panel__nav":"_3f8r8","panel__link":"_2W1Sq","nav__line":"_3Ck30","nav__logout":"_1YrU6","panel__member__more":"_1slSJ","panel__link__more":"_1I8jH","panel__member__login":"_163df","panel__wrapper--active":"_3eCHy","header__title":"_25UTC","header__icon":"_2s4s0","header__txt":"_DCjd1","header__close":"_2Na7E","panel__member__avatar":"_2IAxu","panel__member__info--login":"_3SglQ","panel__link--highlight":"_2tgOR"}; /***/ }), /***/ 382: /***/ (function(module, exports) { module.exports = "https://sfiles.cnyes.cool/fe-common/862da914/f1cae93a0d0ae20a370d25cd6640f3a3.svg"; /***/ }), /***/ 383: /***/ (function(module, exports) { module.exports = "https://sfiles.cnyes.cool/fe-common/862da914/76bfdbe59e3e432ffe6d5d203a37e64d.svg"; /***/ }), /***/ 384: /***/ (function(module, exports) { module.exports = {"items":[{"id":"myTag","title":"新聞追蹤","defaultUrl":"https://www.{cnyesBaseUrl}/member/mytag/all","notify":[{"id":"inWebTagNewsNotify","gotoUrl":"https://www.{cnyesBaseUrl}/member/mytag/all"}]},{"id":"portfolios","title":"行情自選","defaultUrl":"https://www.{cnyesBaseUrl}/member/portfolios"},{"id":"videoCourse","title":"投資駕訓班","defaultUrl":"https://www.{cnyesBaseUrl}/video/course/my","notify":[{"id":"inWebOrderNotify","gotoUrl":"https://www.{cnyesBaseUrl}/video/course/messages/order"},{"id":"inWebActivityNotify","gotoUrl":"https://www.{cnyesBaseUrl}/video/course/messages/activity"}]}]} /***/ }), /***/ 6: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.newsResultType = exports.tradeResultType = exports.recentSearchType = exports.hotDriversType = exports.hotTradesType = exports.hotTagsType = exports.adProfileType = exports.newsItemType = exports.userProfileType = exports.authType = exports.locationShape = exports.footerNavItem = exports.catNavsType = exports.catNavItemShape = exports.catNavSubItemShape = exports.navsMobileType = exports.navItemMobileShape = exports.navItemMobilShape = exports.accountNavsType = exports.accountNavItemShape = exports.navsType = exports.navItemShape = exports.navUrlShape = exports.navDownloadType = exports.navDownloadShape = exports.requestType = undefined; var _propTypes = __webpack_require__(1); var _propTypes2 = _interopRequireDefault(_propTypes); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var requestType = exports.requestType = _propTypes2.default.func; /* eslint-disable import/prefer-default-export */ var navDownloadShape = exports.navDownloadShape = _propTypes2.default.shape({ title: _propTypes2.default.string.isRequired, url: _propTypes2.default.string.isRequired }); var navDownloadType = exports.navDownloadType = _propTypes2.default.arrayOf(navDownloadShape); var navUrlShape = exports.navUrlShape = _propTypes2.default.shape({ title: _propTypes2.default.string.isRequired, url: _propTypes2.default.string.isRequired }); var navItemShape = exports.navItemShape = _propTypes2.default.shape({ title: _propTypes2.default.string.isRequired, url: _propTypes2.default.string, isNew: _propTypes2.default.bool, leftList: _propTypes2.default.arrayOf(navUrlShape), rightListTitle: _propTypes2.default.string, rightList: _propTypes2.default.arrayOf(navUrlShape) }); var navsType = exports.navsType = _propTypes2.default.arrayOf(navItemShape); var accountNavItemShape = exports.accountNavItemShape = _propTypes2.default.shape({ id: _propTypes2.default.string.isRequired, title: _propTypes2.default.string.isRequired, defaultUrl: _propTypes2.default.string.isRequired, notify: _propTypes2.default.arrayOf(_propTypes2.default.shape({ id: _propTypes2.default.string.isRequired, gotoUrl: _propTypes2.default.string.isRequired })) }); var accountNavsType = exports.accountNavsType = _propTypes2.default.arrayOf(accountNavItemShape); var navItemMobilShape = exports.navItemMobilShape = _propTypes2.default.shape({ name: _propTypes2.default.string.isRequired, title: _propTypes2.default.string.isRequired, url: _propTypes2.default.string.isRequired, external: _propTypes2.default.bool }); var navItemMobileShape = exports.navItemMobileShape = _propTypes2.default.shape({ name: _propTypes2.default.string.isRequired, title: _propTypes2.default.string.isRequired, items: _propTypes2.default.arrayOf(navItemMobilShape), url: _propTypes2.default.string }); var navsMobileType = exports.navsMobileType = _propTypes2.default.arrayOf(navItemMobileShape); var catNavSubItemShape = exports.catNavSubItemShape = _propTypes2.default.shape({ name: _propTypes2.default.string, url: _propTypes2.default.string, title: _propTypes2.default.string, external: _propTypes2.default.bool }); var catNavItemShape = exports.catNavItemShape = _propTypes2.default.shape({ name: _propTypes2.default.string.isRequired, url: _propTypes2.default.string.isRequired, title: _propTypes2.default.string.isRequired, external: _propTypes2.default.bool, subItems: _propTypes2.default.arrayOf(catNavSubItemShape) }); var catNavsType = exports.catNavsType = _propTypes2.default.arrayOf(catNavItemShape); var footerNavItem = exports.footerNavItem = _propTypes2.default.shape({ title: _propTypes2.default.string.isRequired, name: _propTypes2.default.string.isRequired, url: _propTypes2.default.string, onClick: _propTypes2.default.func }); var locationShape = exports.locationShape = _propTypes2.default.shape({ key: _propTypes2.default.string, pathname: _propTypes2.default.string, search: _propTypes2.default.string, hash: _propTypes2.default.string, state: _propTypes2.default.object }); var authType = exports.authType = _propTypes2.default.shape({ init: _propTypes2.default.func.isRequired, loginFB: _propTypes2.default.func.isRequired, loginGoogle: _propTypes2.default.func.isRequired, logout: _propTypes2.default.func.isRequired, showLogin: _propTypes2.default.func.isRequired, hideLogin: _propTypes2.default.func.isRequired, getToken: _propTypes2.default.func.isRequired, refreshToken: _propTypes2.default.func.isRequired, getProfile: _propTypes2.default.func.isRequired }); var userProfileType = exports.userProfileType = _propTypes2.default.shape({ uid: _propTypes2.default.string.isRequired, name: _propTypes2.default.string.isRequired, nickname: _propTypes2.default.string, email: _propTypes2.default.string, avatar: _propTypes2.default.string.isRequired, gender: _propTypes2.default.oneOf(['', 'male', 'female']), vip: _propTypes2.default.oneOf([0, 1]) }); var newsItemType = exports.newsItemType = _propTypes2.default.shape({ newsId: _propTypes2.default.number.isRequired, title: _propTypes2.default.string.isRequired, hasCoverPhoto: _propTypes2.default.oneOf([0, 1]).isRequired, coverSrc: _propTypes2.default.shape({ m: _propTypes2.default.shape({ src: _propTypes2.default.string }), l: _propTypes2.default.shape({ src: _propTypes2.default.string }), xl: _propTypes2.default.shape({ src: _propTypes2.default.string }) }) }); var adProfileType = exports.adProfileType = _propTypes2.default.shape({ name: _propTypes2.default.string.isRequired, path: _propTypes2.default.string.isRequired, hideOnInitial: _propTypes2.default.bool }); var hotTagsType = exports.hotTagsType = _propTypes2.default.shape({ tagName: _propTypes2.default.string, link: _propTypes2.default.string }); var hotTradesType = exports.hotTradesType = _propTypes2.default.shape({ localName: _propTypes2.default.string, link: _propTypes2.default.string }); var hotDriversType = exports.hotDriversType = _propTypes2.default.shape({ avatarPicture: _propTypes2.default.string, driverId: _propTypes2.default.string, driverName: _propTypes2.default.string, return1year: _propTypes2.default.number, link: _propTypes2.default.string }); var recentSearchType = exports.recentSearchType = _propTypes2.default.shape({ keyword: _propTypes2.default.string, link: _propTypes2.default.string }); var tradeResultType = exports.tradeResultType = _propTypes2.default.shape({ market: _propTypes2.default.string, code: _propTypes2.default.string, type: _propTypes2.default.string, mtype: _propTypes2.default.string, symbol: _propTypes2.default.string, chName: _propTypes2.default.string, enName: _propTypes2.default.string, exchange: _propTypes2.default.string, link: _propTypes2.default.string }); var newsResultType = exports.newsResultType = _propTypes2.default.shape({ newsId: _propTypes2.default.string, title: _propTypes2.default.string, summary: _propTypes2.default.string, publishAt: _propTypes2.default.number, link: _propTypes2.default.string }); /***/ }), /***/ 8: /***/ (function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_8__; /***/ }) /******/ }); });