{"version":3,"sources":["webpack://@lemon8/web-sharing/./node_modules/.pnpm/@sharee+article-transcode@1.0.3-beta.7_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@sharee/article-transcode/component/web-image/index.tsx","webpack://@lemon8/web-sharing/./node_modules/.pnpm/@sharee+article-transcode@1.0.3-beta.7_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@sharee/article-transcode/tools/ui.ts","webpack://@lemon8/web-sharing/./node_modules/.pnpm/@sharee+article-transcode@1.0.3-beta.7_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@sharee/article-transcode/tools/image-utils.ts","webpack://@lemon8/web-sharing/./node_modules/.pnpm/@sharee+article-transcode@1.0.3-beta.7_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@sharee/article-transcode/tools/process/process-detail.ts","webpack://@lemon8/web-sharing/./node_modules/.pnpm/@sharee+article-transcode@1.0.3-beta.7_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@sharee/article-transcode/tools/process/index.ts","webpack://@lemon8/web-sharing/./node_modules/.pnpm/@sharee+article-transcode@1.0.3-beta.7_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@sharee/article-transcode/component/poi-card/index.tsx","webpack://@lemon8/web-sharing/./node_modules/.pnpm/@sharee+article-transcode@1.0.3-beta.7_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@sharee/article-transcode/component/ins-card/index.tsx","webpack://@lemon8/web-sharing/./node_modules/.pnpm/@sharee+article-transcode@1.0.3-beta.7_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@sharee/article-transcode/component/archor/index.tsx","webpack://@lemon8/web-sharing/./node_modules/.pnpm/@sharee+article-transcode@1.0.3-beta.7_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@sharee/article-transcode/component/hashtag-item/index.tsx","webpack://@lemon8/web-sharing/./node_modules/.pnpm/@sharee+article-transcode@1.0.3-beta.7_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@sharee/article-transcode/component/poi-archor/poi-icon/index.tsx","webpack://@lemon8/web-sharing/./node_modules/.pnpm/@sharee+article-transcode@1.0.3-beta.7_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@sharee/article-transcode/component/poi-archor/index.tsx","webpack://@lemon8/web-sharing/./node_modules/.pnpm/@sharee+article-transcode@1.0.3-beta.7_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@sharee/article-transcode/component/search-word-anchor/search-icon/index.tsx","webpack://@lemon8/web-sharing/./node_modules/.pnpm/@sharee+article-transcode@1.0.3-beta.7_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@sharee/article-transcode/component/search-word-anchor/index.tsx","webpack://@lemon8/web-sharing/./node_modules/.pnpm/@sharee+article-transcode@1.0.3-beta.7_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@sharee/article-transcode/component/mentioned-user-anchor/index.tsx","webpack://@lemon8/web-sharing/./node_modules/.pnpm/@sharee+article-transcode@1.0.3-beta.7_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@sharee/article-transcode/component/goods-card/index.tsx","webpack://@lemon8/web-sharing/./node_modules/.pnpm/@sharee+article-transcode@1.0.3-beta.7_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@sharee/article-transcode/component/article-menu/index.tsx","webpack://@lemon8/web-sharing/./node_modules/.pnpm/@sharee+article-transcode@1.0.3-beta.7_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@sharee/article-transcode/tools/process/process-instructions.tsx","webpack://@lemon8/web-sharing/./node_modules/.pnpm/@sharee+article-transcode@1.0.3-beta.7_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@sharee/article-transcode/container/article.tsx","webpack://@lemon8/web-sharing/./node_modules/.pnpm/@sharee+article-transcode@1.0.3-beta.7_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@sharee/article-transcode/tools/zepto_1.2.0.js"],"names":["ImageStatus","NONE","LOADING","SUCCESS","FAIL","ImageSrcType","LOCAL","CDN","CDN_THUMB","FirstScreenImageCounts","defaultProps","style","config","urlPrefix","imgType","groupId","onClick","src","index","altProp","WebImage","React","constructor","props","state","srcType","status","reloadImage","setCdnSrc","resetImgLoad","_img","onload","onerror","asyncLoadImage","Image","origin_src","setState","handleImageError","thumb_src","handleImageClick","e","stopPropagation","preventDefault","handleImageLoad","thumbSrc","componentDidMount","setTimeoutLoadImage","setTimeout","anchor","href","componentWillUnmount","clearTimeout","render","className","width","height","paddingBottom","concat","Number","jsx","ref","__spreadProps","__spreadValues","children","alt","el","onLoad","onError","opacity","getOffset","Node","offset","top","left","document","body","offsetTop","offsetLeft","offsetParent","hashNumber","str","hash","i","chr","length","charCodeAt","Math","floor","random","webpReg","RegExp","processWebp","arguments","undefined","replace","forceJPGReg","forceJPG","url","getImageUrl","uri","type","useWebp","_uri","test","includes","processWeirdImage","html","pattern","target","match","forEach","jsonStr","exec","data","JSON","parse","img","stringify","description","web_uri","err","TEMPLATE","ProcessDetail","processSpecialTags","htmlString","dom","$","inses","find","each","ins","$ins","insUnresizeHeight","ratio","div","createElement","dataset","iframe","removeAttribute","innerHTML","parentElement","replaceChild","processPoiAnchorTags","countryRegion","poiAnchors","poi","$poi","poiId","region","poiPath","attr","processHashtagTags","hashtagAnchors","hashtag","$hashtag","hashtagId","hashtagPath","originalText","text","filterdText","replaceAll","trim","processSearchTags","searchAnchors","word","$searchWord","name","discoverPath","filterArticleTag","traverse","node","nodeType","tagName","remove","removeAttr","isBeauty","template","attributes","nodeValue","$article","content","beauty","insertAfter","newString","draftToDetail","images","image","textContent","webUri","content_url","contentUrl","aspectRatio","originSrc","startsWith","adaptiveImageSize","$image","$elementAfterImage","nextElementSibling","imageCaption","innerText","setAttribute","i2","span","replaceWith","i3","menuDecorator","headerNames","headerName","header","outerHTML","processTitle","isShow","menuList","menuTopLevel","headerList","value","localName","push","id","pid","level","filter","menu","processDetail","detail","processTitleTag","onPoiClick","PoiCard","handlePoiClick","address","lat","lng","jsxs","onInsClick","InsCard","iframeHeight","iframeProps","iframeRef","handleInsClick","current","dataWidth","dataHeight","iframeWidth","clientWidth","overflow","allowTransparency","allowFullScreen","Archor","_a","onLinkClick","archorProps","__objRest","schema","textHref","reduce","pre","cur","setTarget","useState","handleClick","useEffect","rel","HashtagItem","dataType","dataName","dataRegion","dataId","onHashtagClick","onLogEvent","topicPath","topicHref","handleItemClick","POIIcon","PoiArchorItem","onPoiArchorClick","poiHref","SearchIcon","SearchAnchorItem","dataWord","onSearchAnchorClick","discoverHref","eventName","eventParams","current_position","MentionedUserAnchor","onMentionedClick","PLATFROM_TYPE_WEB","GoodsCard","divRef","observer","imgURL","imgUrl","observeElement","onGoodsImpression","external_id","IntersectionObserver","entries","isIntersecting","root","observe","unobserveElement","unobserve","handleGoodsClick","onGoodsClick","handleImgError","defaultImg","origin","parseTreeJson","treeNodes","menuExpand","len","treeNode","childs","childMenu","ArticleMenu","_this","this","h0","handleClickExpand","onUpdateMenu","renderMenu","noshowBorder","onMenuClick","maxIndex","map","array","cls","noShow","noshowBorderBottom","showBorderTop","event","isExpand","folderImg","noExpand","menuImg","genArchorProcessingInstruction","shouldProcessNode","isImage","attribs","class","isHashtag","isPoiAnchor","isMentionedAnchor","isSearchAnchor","processNode","genHashtagProcessingInstruction","_b","genMentionedAnchorInstruction","mentionedName","genSearchAnchorInstruction","searchWord","genPoiArchorProcessingInstruction","genPoiProcessingInstruction","genInsProcessingInstruction","genGoodsProcessingInstruction","genMenuProcessingInstruction","treeMenu","HtmlToReactParser","HtmlToReact","htmlToReactParser","isValidNode","ONLINE_DOMAIN","processNodeDefinitions","isiOS","isInApp","isSSR","onMenuUpdate","menulist","onImpression","pathName","mentionedId","onSearchWordAnchorClick","onImageClick","altPropValue","Article","computeMenuTopMap","querySelectorAll","toTree","item","maxLength","val","formatTree","parentId","nextindex","maxChildren","child","updateMenuList","menuTopMap","handleImpression","cardType","handleLogEvent","handleHashtagClick","topicId","window","open","handleMentionedClick","mentionedHref","handleLinkClick","params","handleSearchWordAnchorClick","renderImage","imgConfig","_index","hydrate","isNative","articleTitle","imageIndex","console","timeEnd","time","processingInstructions","replaceChildren","caption","processDefaultNode","reactComponent","parseWithInstructions","articleComponent","handleArticleClick","createRoot","getDerivedStateFromProps","getSnapshotBeforeUpdate","prevProps","needUpdate","componentDidUpdate","prevState","snapshot","dangerouslySetInnerHTML","__html","global","factory","define","Zepto","key","classList","emptyArray","slice","elementDisplay","classCache","cssNumber","columns","zoom","fragmentRE","singleTagRE","tagExpanderRE","rootNodeRE","capitalRE","methodAttributes","adjacencyOperators","table","tableRow","containers","tr","tbody","thead","tfoot","td","th","readyRE","simpleSelectorRE","class2type","toString","zepto","camelize","uniq","tempParent","propMap","tabindex","readonly","for","maxlength","cellspacing","cellpadding","rowspan","colspan","usemap","frameborder","contenteditable","isArray","Array","object","matches","element","selector","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","call","parent","parentNode","temp","appendChild","qsa","indexOf","removeChild","obj","String","isFunction","isWindow","isDocument","DOCUMENT_NODE","isObject","isPlainObject","Object","getPrototypeOf","prototype","likeArray","compact","flatten","fn","apply","toUpperCase","dasherize","toLowerCase","idx","classRE","maybeAddPx","defaultDisplay","nodeName","display","getComputedStyle","getPropertyValue","childNodes","Z","fragment","properties","nodes","container","$1","isZ","init","context","ready","extend","source","deep","args","shift","arg","found","maybeID","maybeClass","nameOnly","isSimple","getElementById","getElementsByClassName","getElementsByTagName","filtered","contains","documentElement","funcArg","payload","klass","svg","baseVal","deserializeValue","parseJSON","isEmptyObject","isNumeric","num","isNaN","isFinite","inArray","elem","camelCase","uuid","support","expr","noop","elements","callback","values","grep","split","sort","splice","toArray","readyState","addEventListener","get","size","every","not","add","is","excludes","has","eq","first","last","result","$this","some","closest","collection","_","parents","ancestors","pluck","contents","contentDocument","siblings","empty","property","show","newContent","before","wrap","structure","func","clone","wrapAll","cloneNode","append","wrapInner","self","unwrap","hide","css","toggle","setting","prev","next","originHtml","newText","join","getAttribute","attribute","prop","removeProp","attrName","multiple","selected","coordinates","coords","parentOffset","getBoundingClientRect","pageXOffset","pageYOffset","round","computedStyle","removeProperty","cssText","hasClass","addClass","newName","removeClass","toggleClass","when","names","scrollTop","hasScrollTop","scrollTo","scrollX","scrollLeft","hasScrollLeft","scrollY","position","parseFloat","detach","dimension","dimensionProperty","m","traverseNode","fun","operator","operatorIndex","inside","argType","arr","copyByClone","nextSibling","firstChild","parentInDocument","insertBefore","ownerDocument","defaultView","_zid","isString","handlers","specialEvents","focusinSupported","focus","blur","hover","mouseenter","mouseleave","click","mousedown","mouseup","mousemove","zid","findHandlers","ns","matcher","matcherFor","handler","sel","parts","eventCapture","captureSetting","del","realEvent","events","delegator","capture","set","related","relatedTarget","proxy","compatible","isImmediatePropagationStopped","_args","removeEventListener","proxyFn","unshift","TypeError","bind","on","unbind","off","one","returnTrue","returnFalse","ignoreProperties","eventMethods","stopImmediatePropagation","isDefaultPrevented","predicate","sourceMethod","timeStamp","Date","now","ignored","defaultPrevented","returnValue","getPreventDefault","createProxy","originalEvent","delegate","undelegate","live","die","autoRemove","evt","currentTarget","liveFired","trigger","Event","dispatchEvent","triggerHandler","createEvent","bubbles","initEvent","jsonpID","rscript","scriptTypeRE","xmlTypeRE","jsonType","htmlType","blankRE","originAnchor","location","triggerAndReturn","triggerGlobal","settings","active","ajaxStart","ajaxStop","ajaxBeforeSend","xhr","beforeSend","ajaxSuccess","deferred","success","resolveWith","ajaxComplete","ajaxError","error","rejectWith","complete","ajaxDataFilter","dataFilter","ajaxJSONP","options","ajax","_callbackName","jsonpCallback","callbackName","script","originalCallback","responseData","abort","errorType","abortTimeout","promise","head","timeout","ajaxSettings","XMLHttpRequest","accepts","json","xml","crossDomain","processData","cache","mimeToDataType","mime","appendQuery","query","serializeData","param","traditional","Deferred","urlAnchor","hashIndex","protocol","host","hasPlaceholder","jsonp","headers","setHeader","nativeSetHeader","setRequestHeader","mimeType","overrideMimeType","contentType","onreadystatechange","getResponseHeader","responseType","response","responseText","eval","responseXML","statusText","async","username","password","xhrFields","send","parseArguments","post","getJSON","load","escape","encodeURIComponent","serialize","scope","serializeArray","field","disabled","checked","elm","submit","nativeGetComputedStyle","pseudoElement"],"mappings":"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","file":"757-28d2deb828a95464f67a.js","sourcesContent":["// 这里是去掉了JSB的在线图片加载逻辑,理论上来说如果由服务端转码好再水合,会处理的更快一些\n\nimport React from 'react';\n// import { processWebp } from '../../tools/image-utils';\n\ntype WebImagePropType = {\n altProp: string;\n className: string;\n href: string;\n origin_src: string;\n thumb_src: string;\n width: string | number;\n height: string | number;\n // 这个index用来计算当前图片是第几张,在uselocal的时候需要传递\n index: number;\n groupId: string;\n} & Partial;\n\nconst ImageStatus = {\n NONE: 0,\n LOADING: 1,\n SUCCESS: 2,\n FAIL: 3,\n};\n\nconst ImageSrcType = {\n LOCAL: 0,\n CDN: 1,\n CDN_THUMB: 2,\n};\n\n// 假设用户看到的第一屏图片,按照800px的高也是顶多5张张图\n// 常规来说 5张图已经覆盖第一屏和第二屏的信息\nconst FirstScreenImageCounts = 3;\n\ninterface WebImageStateType {\n src: string;\n srcType: number;\n status: number;\n}\n\ntype DefaultProps = Readonly;\n\nconst defaultProps = {\n style: {},\n config: {\n urlPrefix: '',\n imgType: '',\n groupId: '',\n },\n onClick: (src: string, index: number, altProp: string) => {\n //\n },\n};\n\nexport default class WebImage extends React.Component<\n WebImagePropType,\n WebImageStateType\n> {\n static defaultProps: DefaultProps = defaultProps;\n\n state: WebImageStateType = {\n src: '',\n srcType: ImageSrcType.LOCAL,\n status: ImageStatus.NONE,\n };\n\n private el: any;\n\n private _img: HTMLImageElement | any;\n\n private anchor: any;\n\n private setTimeoutLoadImage: any;\n\n constructor(props: WebImagePropType) {\n super(props);\n\n // 如果是懒加载,那么首次渲染数据源为空,起占位符作用\n\n // 非懒加载,那么直接计算并调用当前的加载方式,这里数值可以直接写state上\n const { thumb_src: thumbSrc } = props;\n\n // 端外的兜底逻辑,只先渲染假设的第一屏图片\n // 优先渲染三张,后续延迟渲染\n this.state.status = ImageStatus.LOADING;\n\n // 由于本组件应用于服务端渲染,所以封图是默认全渲染的(封图特别小)\n this.state.src = thumbSrc;\n this.state.srcType = ImageSrcType.CDN_THUMB;\n }\n\n componentDidMount() {\n // 页面did之后会立刻开始异步拉取大图,这里放在didMount是因为拉取大图的Image对象,需要浏览器环境\n const { index } = this.props;\n if (index < FirstScreenImageCounts) {\n this.asyncLoadImage();\n } else {\n this.setTimeoutLoadImage = setTimeout(() => {\n this.setCdnSrc();\n // 因为平均渲染时间200-300ms,就算后续有40张图,也会在1000ms内渲染完成\n }, index * 20 + 300);\n }\n\n if (this.anchor) {\n // 清除锚点上的信息,因为hydrate以原dom结构为主,这里需要清理掉,比较tick,后续看有没有更优雅的清洗方式\n this.anchor.href = '';\n }\n }\n\n componentWillUnmount() {\n // 防止内存泄漏\n clearTimeout(this.setTimeoutLoadImage);\n this.resetImgLoad();\n }\n\n reloadImage: () => void = () => {\n const { status } = this.state;\n // 如果未加载,或者加载失败,可以手动触发二次加载\n if (status !== ImageStatus.NONE && status !== ImageStatus.FAIL) {\n return;\n }\n\n this.setCdnSrc();\n };\n\n resetImgLoad: () => void = () => {\n if (this._img) {\n this._img.onload = null;\n this._img.onerror = null;\n this._img = null;\n }\n };\n\n // 加载远端原始图片\n asyncLoadImage: () => void = () => {\n this._img = new Image();\n this._img.src = this.props.origin_src;\n this._img.onload = () => {\n // 图片后台加载成功后,替换当前展现的内容\n this.setState({\n src: this.props.origin_src,\n srcType: ImageSrcType.CDN,\n status: ImageStatus.SUCCESS,\n });\n this.resetImgLoad();\n };\n this._img.onerror = () => {\n // 只要远端大图失败,就认为是彻底失败\n this.setState(\n {\n srcType: ImageSrcType.CDN,\n },\n this.handleImageError,\n );\n this.resetImgLoad();\n };\n };\n\n setCdnSrc: () => void = () => {\n this.setState({\n // 这里只是强制纠正状态\n status: ImageStatus.LOADING,\n src: this.props.thumb_src,\n srcType: ImageSrcType.CDN_THUMB,\n });\n this.asyncLoadImage();\n };\n\n handleImageClick: (e: any) => void = e => {\n if (e) {\n e.stopPropagation();\n e.preventDefault();\n }\n const { status, srcType, src } = this.state;\n const { onClick, index, altProp = '' } = this.props;\n\n switch (status) {\n case ImageStatus.SUCCESS:\n // 图片加载后,点击是访问图片查看器\n if (onClick) {\n onClick(src, index, altProp);\n }\n // 如果大图没有加载出来,会同时重试\n if (srcType === ImageSrcType.CDN_THUMB) {\n this.asyncLoadImage();\n }\n break;\n case ImageStatus.NONE:\n case ImageStatus.FAIL:\n // 如果图片点击时还没加载出来,那么优先走加载逻辑\n // 如果图片加载失败,那么显示重试逻辑\n this.reloadImage();\n break;\n default:\n // 如果加载中或者加载失败,就不做响应\n break;\n }\n };\n\n handleImageLoad: () => void = () => {\n const { srcType } = this.state;\n // 只有远端大图加载成功,才认为是完全成功;缩略图加载成功不做修改\n if (srcType === ImageSrcType.CDN) {\n // 如果图片加载结束,那么应该去掉图片加载状态\n this.setState({\n status: ImageStatus.SUCCESS,\n });\n }\n };\n\n handleImageError: () => void = () => {\n const { srcType } = this.state;\n // 只要大图加载失败,那么就彻底失败\n if (srcType === ImageSrcType.CDN) {\n this.setState({\n src: '',\n status: ImageStatus.FAIL,\n });\n }\n };\n\n render() {\n const {\n className,\n style,\n width = 1,\n height = 0,\n altProp = '',\n } = this.props;\n const { src, status } = this.state;\n\n // 加载失败有失败的样式,加载中有加载中的样式\n const paddingBottom = `${(Number(height) / Number(width)) * 100}%`;\n // 为了兼容iOS,这里将所有webp格式的图片都给拍成jpg\n // const noWebpSrc = processWebp(src);\n return (\n (this.anchor = e)}\n className={className}\n style={{\n ...style,\n paddingBottom,\n }}\n onClick={this.handleImageClick}>\n (this.el = e)}\n src={src}\n onLoad={this.handleImageLoad}\n onError={this.handleImageError}\n style={{\n opacity: status === ImageStatus.FAIL ? 0 : 1,\n // pointerEvents: 'auto',\n }}>\n \n );\n }\n}\n","/* eslint-disable eslint-comments/disable-enable-pair */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-bitwise */\n\nexport function getOffset(Node: any, offset?: any) {\n if (!offset) {\n offset = {};\n offset.top = 0;\n offset.left = 0;\n }\n if (Node === document.body || !Node) {\n // 当该节点为body节点时,结束递归\n return offset;\n }\n offset.top += Node.offsetTop;\n offset.left += Node.offsetLeft;\n return getOffset(Node.offsetParent, offset); // 向上累加offset里的值\n}\n\n/**\n * 构建给定字符串的 hash 值\n *\n * @example\n * hashNumber('天气');\n * // returns 1234;\n */\nexport const hashNumber = (str: string): number => {\n let hash = 0;\n let i;\n let chr;\n if (str.length === 0) {\n return hash;\n }\n for (i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i) + Math.floor(Math.random() * 50);\n hash = (hash << 5) - hash + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return hash;\n};\n","const webpReg = new RegExp(/\\.webp$/);\nexport const processWebp = (url = '') => url.replace(webpReg, '.jpg');\nconst forceJPGReg = new RegExp(/\\.\\w+$/);\nexport const forceJPG = (url: string) => `${url.replace(forceJPGReg, '')}.jpg`;\n\nexport function getImageUrl(uri: string, type = 'large', useWebp = true) {\n let _uri = uri;\n if (!_uri) {\n return _uri;\n }\n\n if (/^(http:|https:){0,1}\\/\\//.test(_uri)) {\n return _uri;\n }\n\n if (!_uri.includes('tos') && !_uri.includes('pgc')) {\n _uri = `tos-maliva-p-0000/${_uri}`;\n }\n\n _uri = `//p16-va.topbuzzcdn.com/${type}/${_uri}`;\n\n if (!useWebp) {\n _uri = processWebp(_uri);\n }\n // va cdn没有跨域头,先用sg的地址,记得改回来\n return _uri;\n}\n\nexport const processWeirdImage = (html: string) => {\n const pattern = new RegExp(/]*)\">/g);\n let target = html || '';\n if (target.includes('{{image_domain}}')) {\n const targetArr = target.match(pattern) || [];\n targetArr.forEach((str: string) => {\n const innerPattern = new RegExp(/]*)\">/g);\n const result = innerPattern.exec(str) || [];\n const jsonStr = result[1] || '{}';\n try {\n const data = JSON.parse(jsonStr);\n // {\n // \"fingerprint\": 10653165191152446867,\n // \"hash_id\": 6048379742954926182,\n // \"height\": 1067,\n // \"id\": 7834353516823268220,\n // \"image_type\": 1,\n // \"md5\": \"53f029549d7f306628a2e5a118989c52\",\n // \"mimetype\": \"image/jpeg\",\n // \"near_dup_id\": \"4372146559732556345\",\n // \"neardup_id\": 4372146559732556345,\n // \"uri\": \"pgc-image-va/RqIhXtWDUwaoSu\",\n // \"url_id\": 17079595278950936231,\n // \"web_uri\": \"pgc-image-va/RqIhXtWDUwaoSu\",\n // \"width\": 800\n // }\n const img = ``;\n target = target.replace(str, img);\n } catch (err) {}\n });\n }\n\n return target;\n};\n","import $ from '../zepto_1.2.0';\nimport { getImageUrl } from '../image-utils';\nimport { MenuType } from '../../types/global';\n\nenum TEMPLATE {\n BEAUTY = 'beauty',\n}\nconst filterArticleTag = (htmlString: string) => {\n const dom = $(`
${htmlString}
`);\n // filter invalid tag\n function traverse(node) {\n node.children().each(function() {\n if (this.nodeType === 1 && !/^[a-zA-Z][a-zA-Z0-9-_]*$/.test(this.tagName)) {\n $(this).remove();\n } else if (this.nodeType === 1) {\n traverse($(this));\n }\n });\n }\n traverse(dom);\n // filter all style tag\n dom.find('*').removeAttr('style');\n // 移除模板类文章的数据标签\n let isBeauty = false;\n const template = dom.find('script[type=\"text/x.sharee.template\"]');\n if (template[0]) {\n const tempType = template[0].attributes['data-type'].nodeValue;\n if (tempType === TEMPLATE.BEAUTY) {\n isBeauty = true;\n }\n }\n dom.find('script[type=\"text/x.sharee.template\"]').remove();\n const $article = dom.find('article');\n let content = ``;\n if (isBeauty) {\n const beauty = dom.find('div[class=\"template-info beauty\"]');\n $(`
`).insertAfter(beauty[0]);\n }\n if ($article[0]) {\n let newString = $article[0].innerHTML;\n if (!isBeauty && newString) {\n newString = `
${newString}`;\n }\n content = `
${newString || ''}
`;\n } else {\n let newString = dom.html();\n if (!isBeauty && newString) {\n newString = `
${newString}`;\n }\n content = `
${newString || ''}
`;\n }\n\n return content;\n};\n\nconst draftToDetail = (htmlString: string) => {\n const dom = $(`
${htmlString}
`);\n // 将draft中的文本结构 bytedance.image 转成 a 标签\n // 因为draft中才会存在这种script 标签 type 为 bytedance.image,所以可以直接过滤\n const images = dom.find('script[type=\"text/x.bytedance.image\"]');\n images.each((index: number, image: any) => {\n const config = JSON.parse(image.textContent);\n const {\n height,\n web_uri: webUri,\n description,\n width,\n content_url: contentUrl = '',\n } = config;\n // 如果有图片描述文案,先增加描述文案,这里的模板和服务端full接口下发对齐\n if (description) {\n $(`
${description}
`).insertAfter(image);\n }\n const aspectRatio = height / width || 0.5625;\n const div = document.createElement('div');\n div.className = 'image-container';\n\n let originSrc = `http:${getImageUrl(webUri, 'large')}`;\n let thumbSrc = `http:${getImageUrl(webUri, 'thumb')}`;\n // 兜底bad case,客户端编辑器,如果用户强行复制进来的图片不会解析为站内地址\n // 这里做兜底逻辑处理;以后会修复编辑器,该类型不复存在;以后写业务不用做这种兜底 2020.06.22 likun.liyuk\n if (!webUri && contentUrl.startsWith('http')) {\n originSrc = contentUrl;\n thumbSrc = contentUrl;\n }\n div.innerHTML = `
[Click to view the picture]
`;\n\n image.parentElement.replaceChild(div, image);\n });\n return dom.html();\n};\n\n// 对搜图片的缩放问题进行统一处理\nconst adaptiveImageSize = (htmlString: string) => {\n const dom = $(`
${htmlString}
`);\n const images = dom.find('.image-container');\n images.each((index: number, image: any) => {\n const $image = $(image);\n const $elementAfterImage = $($image[0].nextElementSibling) || [];\n const imageCaption =\n $elementAfterImage[0] && $elementAfterImage[0].className === 'figcaption'\n ? $elementAfterImage[0].innerText\n : '';\n const $innerImage = $image.find('.image');\n const width = $innerImage.attr('width');\n\n const div = document.createElement('div');\n div.className = 'image-container';\n div.setAttribute('data-caption', imageCaption);\n\n // 如果图片宽小于屏幕一半,375/2(这里是移动端宽)\n if (width) {\n if (width && Number(width) <= 187.5) {\n // 这里的+32是因为盒模型原因\n div.style.width = `${Number(width) + 32}px`;\n } else {\n div.style.width = `100%`;\n }\n }\n\n // 这里为了CSR和SSR同构,需要把 a class=\"image\" 里面的内容清空,便于react生成内部结构\n $image.find('span').each((i2: number, span: any) => {\n $(span).replaceWith('');\n });\n $image.find('.image-share-btn').each((i3: number, span: any) => {\n $(span).replaceWith('');\n });\n\n div.innerHTML = $image.html();\n image.parentElement.replaceChild(div, image);\n });\n return dom.html();\n};\n\nconst menuDecorator = (htmlString: string) => {\n const dom = $(`
${htmlString}
`);\n const headerNames = ['h1', 'h2', 'h3'];\n headerNames.forEach(headerName => {\n const headerList = dom.find(headerName);\n headerList.forEach((header, index) => {\n const span = document.createElement('span');\n span.innerText = header.innerText;\n span.setAttribute('id', `${headerName}-${index}`);\n // header.setAttribute('id', `${headerName}-${index}`);\n header.setAttribute('data-text', header.innerText);\n header.innerHTML = `${span.outerHTML}`;\n });\n });\n return dom.html();\n};\n\nconst processPoiAnchorTags = (htmlString: string, countryRegion: string) => {\n const dom = $(`
${htmlString}
`);\n const poiAnchors = dom.find('.l8editor-poi');\n poiAnchors.each((index: number, poi: HTMLAnchorElement) => {\n const $poi = $(poi);\n const poiId = $poi.data('id');\n const region = countryRegion || $poi.data('region');\n const poiPath = `/poi/${poiId}?region=${region}`;\n $poi.attr('href', poiPath);\n });\n\n return dom.html();\n}\n\nconst processHashtagTags = (htmlString: string, countryRegion: string) => {\n const dom = $(`
${htmlString}
`);\n const hashtagAnchors = dom.find('.l8editor-forum');\n hashtagAnchors.each((index: number, hashtag: HTMLAnchorElement) => {\n const $hashtag = $(hashtag);\n const hashtagId = $hashtag.data('id');\n const region = countryRegion || $hashtag.data('region');\n const hashtagPath = `/topic/${hashtagId}?region=${region}`;\n $hashtag.attr('href', hashtagPath);\n // 处理英文火山翻译时bug问题\n const originalText = $hashtag.text();\n const filterdText = `#${originalText.replaceAll('#', '').trim()}`;\n $hashtag.text(filterdText);\n });\n\n return dom.html();\n}\n\nconst processSearchTags = (htmlString: string, countryRegion: string) => {\n const dom = $(`
${htmlString}
`);\n const searchAnchors = dom.find('.l8-entity-word');\n searchAnchors.each((index: number, word: HTMLAnchorElement) => {\n const $searchWord = $(word);\n const name = $searchWord.data('name');\n const region = countryRegion;\n const discoverPath = `/discover/${name}?region=${region}`;\n $searchWord.attr('href', discoverPath);\n });\n\n return dom.html();\n}\n\nconst processSpecialTags = (htmlString: string) => {\n // const result = htmlString;\n // result = htmlString.replace(/


<\\/p>/g, '

');\n // 处理ins卡片相关的内容\n const dom = $(`
${htmlString}
`);\n const inses = dom.find('.ins-container');\n inses.each((index: number, ins: any) => {\n const $ins = $(ins);\n\n const width = $ins.data('width') || 1;\n const height = $ins.data('height') || 1;\n // ins的iframe缩放时header 54px和footer 44px不变\n const insUnresizeHeight = 54 + 44;\n // 如果没有宽高,那么默认1:1\n const ratio = (height - insUnresizeHeight) / width;\n const div = document.createElement('div');\n div.className = 'ins-container';\n // 透传结构数据,以便落地业务侧有调整\n div.dataset.width = width;\n div.dataset.height = height;\n\n $ins.find('iframe').each((i: number, iframe: any) => {\n iframe.removeAttribute('style');\n iframe.height = `${Math.floor(345 * ratio) + insUnresizeHeight}`;\n });\n\n div.innerHTML = $ins.html().replace('style=\"\"', '');\n\n ins.parentElement.replaceChild(div, ins);\n });\n\n // 处理poi卡片相关内容\n\n return dom.html();\n};\nconst processTitle = (htmlString: string, isShow: boolean) => {\n const dom = $(`
${htmlString}
`);\n let menuList: MenuType[] = [];\n let menuTopLevel = 'h3';\n const headerList = dom.find('h1,h2,h3');\n headerList.forEach(header => {\n const text = header.attributes['data-text'].value;\n if (\n // wap在正文展示目录(isShow)目录要求删除标题为空的标题,条件为当前node的type(h1,h2,h3)比menuTopLevel小,以及text不为空\n // app端保持原逻辑,没有此要求,条件为当前node的type(h1,h2,h3)比menuTopLevel小\n (header.localName < menuTopLevel && !isShow) ||\n (isShow && header.localName < menuTopLevel && text.trim())\n ) {\n menuTopLevel = header.localName;\n if (isShow) {\n menuList = [];\n }\n }\n // 兼容APP旧逻辑,等统一修改完成后去除isShow\n if ((isShow && text.trim()) || !isShow) {\n menuList.push({\n id: header.children[0].attributes.id.value,\n // 暂时标题里只有文字可以这么拼接,之后估计得调整\n text,\n type: header.localName,\n top: 0,\n pid: 'h0',\n level: 1,\n });\n }\n });\n if (!isShow) {\n menuList = menuList.filter(menu => menu.type === menuTopLevel && menu.text);\n }\n return menuList;\n};\n\nexport const ProcessDetail = {\n processSpecialTags,\n processPoiAnchorTags,\n processHashtagTags,\n processSearchTags,\n filterArticleTag,\n draftToDetail,\n adaptiveImageSize,\n menuDecorator,\n processTitle,\n};\n","import { processWeirdImage } from '../image-utils';\nimport { MenuType } from '../../types/global';\nimport { ProcessDetail } from './process-detail';\n\nexport const processDetail: (detail: string, countryRegion: string) => string = (detail, countryRegion) => {\n let target = detail;\n target = processWeirdImage(target);\n target = ProcessDetail.filterArticleTag(target);\n target = ProcessDetail.processSearchTags(target, countryRegion);\n target = ProcessDetail.processPoiAnchorTags(target, countryRegion);\n target = ProcessDetail.processHashtagTags(target, countryRegion);\n target = ProcessDetail.processSpecialTags(target);\n target = ProcessDetail.draftToDetail(target);\n target = ProcessDetail.adaptiveImageSize(target);\n target = ProcessDetail.menuDecorator(target);\n return target;\n};\nexport const processTitleTag: (\n detail: string,\n isShow: boolean,\n) => MenuType[] = (detail, isShow) => {\n const target = ProcessDetail.processTitle(detail, isShow);\n return target;\n};\n","import React from 'react';\n\ntype PoiCardPropType = {\n name: string;\n img: string;\n address: string;\n lat: string;\n lng: string;\n id: string;\n href: string;\n onPoiClick: (data: any) => void;\n} & Partial;\n\ninterface PoiCardStateType {}\n\ntype DefaultProps = Readonly;\n\nconst defaultProps = {\n onPoiClick: (data: any) => {\n // empty\n },\n};\n\nexport class PoiCard extends React.Component<\n PoiCardPropType,\n PoiCardStateType\n> {\n static defaultProps: DefaultProps = defaultProps;\n\n state: PoiCardStateType = {};\n\n handlePoiClick: () => void = () => {\n const { onPoiClick, name, address, lat, lng, img, id, href } = this.props;\n // window.open(href);\n if (onPoiClick && typeof onPoiClick === 'function') {\n onPoiClick({\n name,\n address,\n lat,\n lng,\n img,\n id,\n href,\n });\n }\n };\n\n render() {\n const { name, address, lat, lng, img, id, href } = this.props;\n return (\n \n
\n \n
\n
\n
{name}
\n
{address}
\n
\n \n );\n }\n}\n","/* eslint-disable eslint-comments/disable-enable-pair */\n/* eslint-disable react/no-did-mount-set-state */\nimport * as React from 'react';\n\ntype InsCardPropType = {\n dataWidth: string;\n dataHeight: string;\n iframeProps: any;\n onInsClick: (data: any) => void;\n} & Partial;\n\ninterface InsCardStateType {\n iframeHeight: number;\n}\n\ntype DefaultProps = Readonly;\n\nconst defaultProps = {\n onInsClick: (data: any) => {\n // empty\n },\n};\n\nexport class InsCard extends React.Component<\n InsCardPropType,\n InsCardStateType\n> {\n static defaultProps: DefaultProps = defaultProps;\n\n state: InsCardStateType = {\n iframeHeight: Number(this.props.iframeProps.height) || 0,\n };\n\n private readonly iframeRef: any = React.createRef();\n\n componentDidMount() {\n const { dataWidth, dataHeight } = this.props;\n const width = Number(dataWidth) || 1;\n const height = Number(dataHeight) || 1;\n // ins的iframe缩放时header 54px和footer 44px不变\n const insUnresizeHeight = 54 + 44;\n // 如果没有宽高,那么默认1:1\n const ratio = (height - insUnresizeHeight) / width;\n const iframe = this.iframeRef && this.iframeRef.current;\n if (iframe) {\n const iframeWidth = iframe.clientWidth;\n this.setState({\n iframeHeight: Math.floor(iframeWidth * ratio) + insUnresizeHeight,\n });\n }\n }\n\n handleInsClick: () => void = () => {\n const { onInsClick } = this.props;\n if (this.iframeRef && this.iframeRef.current) {\n let { src: href } = this.iframeRef.current;\n href = href.replace(/embed.*/, '');\n // window.open(href);\n if (onInsClick && typeof onInsClick === 'function') {\n onInsClick({\n href,\n });\n }\n }\n };\n\n render() {\n const { dataWidth, dataHeight, iframeProps } = this.props;\n const { iframeHeight } = this.state;\n return (\n \n \n \n );\n }\n}\n","import React, { useState, useEffect } from 'react';\n\nexport const Archor: React.FC<{\n children: any;\n href: string;\n onLinkClick: (data: any) => void;\n [key: string]: any;\n}> = props => {\n const { href, children, onLinkClick, ...archorProps } = props;\n\n // 生成一下端内的schema,如果符合规则的话,否则为空\n const schema = archorProps['data-schema'] || '';\n // 生成文本对应的超链接地址,如果有的话\n // 如果没有href字段,那么看文本本身是否存在超链接字段\n const pattern = /^(http|https):\\/\\//;\n // 约定找所有子节点的文本是否有http|https开头的,有的话取最后一个\n const textHref = (children || []).reduce(\n (pre, cur) =>\n typeof cur === 'string' && pattern.test(cur.trim()) ? cur : pre,\n '',\n );\n\n const [target, setTarget] = useState(href);\n\n const handleClick = (e: any) => {\n // 阻止默认事件,因为端内hydrate的逻辑里href的内容并不会被清除\n e.preventDefault();\n if (!target && !schema) {\n return;\n }\n if (onLinkClick) {\n onLinkClick({\n href: target,\n schema,\n });\n }\n // window.open(href);\n };\n\n useEffect(() => {\n if (textHref && !href) {\n // 这里是为了增加渲染逻辑,setState可以修改SSR模板的结构\n setTarget(textHref);\n }\n }, []);\n\n return (\n \n {children}\n \n );\n};\n","import React, { useEffect } from 'react';\n\nexport interface LogEventType {\n eventName: string;\n eventParams: Record\n}\n\ninterface HashtagPropType {\n dataType: string;\n dataName: string;\n dataRegion: string;\n dataId: string;\n onHashtagClick: (topicHref: string, dataId: string) => void;\n onLogEvent: (data: LogEventType) => void;\n};\n\nexport const HashtagItem: React.FC = props => {\n\n const { dataType, dataName, dataRegion, dataId, onHashtagClick, onLogEvent } = props;\n const topicPath = `/topic/${dataId}`;\n const topicHref = `${topicPath}?region=${dataRegion}`;\n\n const handleItemClick = (e: any) => {\n e.preventDefault();\n onHashtagClick(topicHref, dataId);\n };\n\n return (\n \n {dataName.replaceAll('#', '').trim() ? dataName : `#${dataName}`}\n \n );\n};\n","import React from 'react';\nimport './style.scss';\n\n/**\n * POI Icon\n *\n * 目前只实现了通用样式,对其端内应该是按照种类展示不同的样式\n */\nexport default function POIIcon() {\n return ;\n}\n","import React, { useEffect } from 'react';\nimport POIIcon from './poi-icon';\n\nexport interface LogEventType {\n eventName: string;\n eventParams: Record\n}\n\ninterface PoiArchorPropType {\n dataType: string;\n dataName: string;\n dataRegion: string;\n dataId: string;\n onPoiArchorClick: (topicHref: string, dataId: string) => void;\n onLogEvent: (data: LogEventType) => void;\n};\n\nexport const PoiArchorItem: React.FC = props => {\n\n const { dataType, dataName, dataRegion, dataId, onPoiArchorClick, onLogEvent } = props;\n const poiPath = `/poi/${dataId}`;\n const poiHref = `${poiPath}?region=${dataRegion}`;\n\n const handleItemClick = (e: any) => {\n e.preventDefault();\n onPoiArchorClick(poiHref, dataId);\n };\n\n return (\n \n \n {dataName} \n \n );\n};\n","import React from 'react';\nimport './style.scss';\n\n/**\n * Search Icon\n *\n * 目前只实现了通用样式,对其端内应该是按照种类展示不同的样式\n */\nexport default function SearchIcon() {\n return ;\n}\n","import React, { useEffect } from 'react';\nimport SearchIcon from './search-icon';\n\nexport interface LogEventType {\n eventName: string;\n eventParams: Record\n}\n\ninterface SearchAnchorPropType {\n dataType: string;\n dataWord: string;\n dataRegion: string;\n dataId: string;\n onSearchAnchorClick: (word: string) => void;\n onLogEvent: (data: LogEventType) => void;\n};\n\nexport const SearchAnchorItem: React.FC = props => {\n\n const { dataType, dataWord, dataRegion, dataId, onLogEvent, onSearchAnchorClick } = props;\n const discoverPath = `/discover/${dataWord}`;\n const discoverHref = `${discoverPath}?region=${dataRegion}`;\n\n const handleItemClick = (e: any) => {\n e.preventDefault();\n onSearchAnchorClick(dataWord);\n onLogEvent({eventName: 'wap_click', eventParams:{current_position: 'main_search_word'}});\n };\n\n return (\n \n {dataWord}\n \n \n );\n};\n","import React, { useEffect } from 'react';\n\nexport interface LogEventType {\n eventName: string;\n eventParams: Record\n}\n\ninterface MentionedUserPropType {\n dataType: string;\n dataName: string;\n dataId: string;\n href: string; // user_unique_name href\n onMentionedClick: (topicHref: string, dataId: string) => void;\n onLogEvent: (data: LogEventType) => void;\n};\n\nexport const MentionedUserAnchor: React.FC = props => {\n\n const { dataName, dataId, href, onMentionedClick, onLogEvent } = props;\n\n const handleItemClick = (e: any) => {\n e.preventDefault();\n onMentionedClick(href, dataId);\n };\n\n return (\n \n {dataName}\n \n );\n};\n","/* eslint-disable eslint-comments/disable-enable-pair */\n/* eslint-disable @typescript-eslint/camelcase */\n/* eslint-disable jsdoc/require-example */\nimport React from 'react';\nimport defaultImg from '../../assets/img-error.svg';\n\nexport const PLATFROM_TYPE_WEB: { [key: number]: string } = {\n 1: 'amazon.com',\n 2: 'yahoo.com',\n 3: 'rakuten.com',\n 4: 'internal.com',\n};\n\nexport interface GoodsCardData {\n /**\n * 商品外部 id\n */\n external_id: string;\n /**\n * 商品 url, 注意不是 图像url\n */\n href: string;\n}\n\ninterface GoodsCardPropType {\n external_id: string;\n href: string;\n name: string;\n origin: string;\n imgUrl: string;\n description: string;\n onGoodsClick: (data: GoodsCardData) => void;\n onGoodsImpression: (data: GoodsCardData) => void;\n}\n\n/**\n * 传出去的信息,用于上报埋点\n */\ninterface GoodsCardStateType {\n /**\n * img 中 src 的地址,写成变量的原因是考虑到请求失败后兜底\n */\n imgURL: string;\n}\n\nexport class GoodsCard extends React.Component<\n GoodsCardPropType,\n GoodsCardStateType\n> {\n /**\n * 外层 div 的 ref\n */\n divRef: React.RefObject = React.createRef();\n\n /**\n * 用于观察是否进入视窗\n */\n observer: IntersectionObserver | null = null;\n\n state: GoodsCardStateType = {\n imgURL: this.props.imgUrl,\n };\n\n componentDidMount() {\n this.observeElement(this.divRef.current);\n }\n\n componentWillUnmount() {\n this.unobserveElement(this.divRef.current);\n }\n\n /**\n * 观察当前卡片\n * 如果进入视窗,则触发一次 onGoodsImpression\n */\n observeElement = (ref: HTMLDivElement | null) => {\n if (!ref) {\n return;\n }\n\n const { onGoodsImpression, external_id, href } = this.props;\n\n this.observer = new IntersectionObserver(\n entries => {\n const { isIntersecting } = entries[0];\n // 进入视窗\n if (isIntersecting && onGoodsImpression) {\n onGoodsImpression({ external_id, href });\n }\n },\n { root: null },\n );\n this.observer.observe(ref);\n };\n\n /**\n * 不再观察当前卡片\n */\n unobserveElement = (ref: HTMLDivElement | null) => {\n if (!ref || !this.observer) {\n return;\n }\n this.observer.unobserve(ref);\n };\n\n /**\n * 点击卡片的情况\n *\n * @param e - 点击事件\n */\n handleGoodsClick: (e: React.MouseEvent) => void = e => {\n // 拦截 a 标签的点击操作\n // 从而转化为 onGoodsClick 中的事件\n e.preventDefault();\n const { onGoodsClick, external_id, href } = this.props;\n if (onGoodsClick && typeof onGoodsClick === 'function') {\n onGoodsClick({ external_id, href });\n }\n };\n\n /**\n * 如果图像请求失败\n */\n handleImgError: () => void = () => {\n this.setState({\n imgURL: defaultImg,\n });\n };\n\n render() {\n const { external_id, href, name, imgUrl, description, origin } = this.props;\n const { imgURL } = this.state;\n return (\n \n \n
\n \n
\n
\n
{name}
\n
\n \n \n {PLATFROM_TYPE_WEB[origin]}\n \n
\n
\n \n );\n }\n}\n","import React from 'react';\nimport cls from 'classnames';\nimport { MenuType } from '../../types/global';\nimport menuImg from '../../assets/menu-title.svg';\nimport folderImg from '../../assets/icon-folder.svg';\n\nexport interface MenuData {\n /**\n * 存储menu是否展开\n */\n [key: string]: boolean;\n}\n\ninterface ArticleMenuPropType {\n menuList: MenuType[];\n onMenuClick: (data: string) => void;\n onUpdateMenu: () => void;\n}\n\n/**\n * 传出去的信息,用于上报埋点\n */\ninterface ArticleMenuStateType {\n menuExpand: MenuData;\n /**\n * img 中 src 的地址,写成变量的原因是考虑到请求失败后兜底\n */\n // imgURL: string;\n}\nconst parseTreeJson: (treeNodes: MenuType[]) => MenuData = treeNodes => {\n if (!treeNodes || !treeNodes.length) {\n return {};\n }\n let menuExpand: MenuData = {};\n for (let i = 0, len = treeNodes.length; i < len; i++) {\n const treeNode = treeNodes[i];\n if (treeNode) {\n const childs = treeNode.children;\n if (childs) {\n menuExpand[treeNodes[i].id] = false;\n }\n\n if (childs && childs.length > 0) {\n const childMenu = parseTreeJson(childs);\n menuExpand = { ...menuExpand, ...childMenu };\n }\n }\n }\n return menuExpand;\n};\nexport class ArticleMenu extends React.Component<\n ArticleMenuPropType,\n ArticleMenuStateType\n> {\n state: ArticleMenuStateType = {\n menuExpand: { ...parseTreeJson(this.props.menuList), h0: true },\n };\n\n componentDidMount() {\n const { onUpdateMenu } = this.props;\n onUpdateMenu();\n }\n\n handleClickExpand: (id: string) => void = id => {\n const { menuExpand } = this.state;\n const { onUpdateMenu } = this.props;\n menuExpand[id] = !menuExpand[id];\n\n this.setState({ menuExpand }, () => {\n // css transition 有延迟动画,所以采用setTimeout确保更新菜单时已经重新渲染完成\n setTimeout(() => {\n onUpdateMenu();\n }, 400);\n });\n };\n\n renderMenu: (\n treeNode: MenuType[],\n isShow: boolean,\n // 主要用于border展示的判断\n noshowBorder?: boolean,\n ) => JSX.Element = (treeNode, isShow, noshowBorder = true) => {\n const { menuExpand } = this.state;\n const { onMenuClick } = this.props;\n const maxIndex = treeNode.length - 1;\n return (\n
    \n {treeNode.map((menu, index, array) => {\n return (\n \n array[index + 1].type &&\n !menuExpand[menu.id]),\n // 情况1:h1-(h2-h1)\n // 情况2:h1-(h3-h2)-h1\n showBorderTop:\n (index > 0 &&\n array[index - 1].children &&\n menuExpand[array[index - 1].id]) ||\n (index > 0 && array[index - 1].type > array[index].type),\n })}>\n {\n event.preventDefault();\n if (isShow) {\n onMenuClick(menu.id);\n }\n }}>\n {menu.text}\n \n {menu.children && (\n {\n if (isShow) {\n this.handleClickExpand(menu.id);\n }\n }}>\n \n \n )}\n \n {menu.children &&\n this.renderMenu(\n menu.children,\n menuExpand[menu.id],\n noshowBorder && index === maxIndex && menuExpand[menu.id],\n )}\n \n );\n })}\n
\n );\n };\n\n render() {\n const { menuList } = this.props;\n const { menuExpand } = this.state;\n if (menuList.length > 1) {\n return (\n
\n \n \n
\n \n 目次\n
\n {\n this.handleClickExpand('h0');\n }}>\n \n
\n \n {this.renderMenu(menuList, menuExpand.h0)}\n \n \n );\n } else {\n return
;\n }\n }\n}\n","import * as React from 'react';\nimport { PoiCard } from '../../component/poi-card';\nimport { InsCard } from '../../component/ins-card';\nimport { Archor } from '../../component/archor';\nimport { HashtagItem, LogEventType } from '../../component/hashtag-item';\nimport { PoiArchorItem } from '../../component/poi-archor';\nimport {SearchAnchorItem} from '../../component/search-word-anchor';\nimport { MentionedUserAnchor } from '../../component/mentioned-user-anchor';\nimport { GoodsCard, GoodsCardData } from '../../component/goods-card';\nimport { MenuType } from '../../types/global';\nimport { ArticleMenu } from '../../component/article-menu';\n\nexport const genArchorProcessingInstruction = (onLinkClick?: any) => ({\n shouldProcessNode(node: any) {\n const isImage =\n node.attribs &&\n node.attribs.class &&\n node.attribs.class.includes('image');\n const isHashtag =\n node.attribs &&\n node.attribs.class &&\n node.attribs.class.includes('l8editor-forum');\n const isPoiAnchor =\n node.attribs &&\n node.attribs.class &&\n node.attribs.class.includes('l8editor-poi');\n const isMentionedAnchor =\n node.attribs &&\n node.attribs.class &&\n node.attribs.class.includes('l8editor-mention');\n const isSearchAnchor =\n node.attribs &&\n node.attribs.class &&\n node.attribs.class.includes('l8-entity-word');\n return !isImage && !isHashtag && !isPoiAnchor && !isMentionedAnchor && !isSearchAnchor && node.type === 'tag' && node.name === 'a';\n },\n processNode(node: any, children: any) {\n // 因为a标签可能被拦截掉了,所以这里需要用click来触发页面内跳转\n return (\n \n {children}\n \n );\n },\n});\n\nexport const genHashtagProcessingInstruction = (\n onHashtagClick: (href: string, dataId:string) => void,\n onLogEvent: (data: LogEventType) => void,\n countryRegion: string\n) => ({\n shouldProcessNode(node: any) {\n const isHashtag =\n node.attribs &&\n node.attribs.class &&\n node.attribs.class.includes('l8editor-forum');\n return isHashtag && node.type === 'tag' && node.name === 'a';\n },\n processNode(node: any) {\n const attr = node.attribs || {};\n const props = {\n dataType: attr['data-type'] || '',\n dataName: node.children?.[0]?.data || '',\n dataId: attr['data-id'] || '',\n dataRegion: countryRegion || attr['data-region']\n };\n return (\n \n );\n },\n});\n\nexport const genMentionedAnchorInstruction = (\n onMentionedClick: (href: string, dataId:string) => void,\n onLogEvent: (data: LogEventType) => void,\n) => ({\n shouldProcessNode(node: any) {\n const isMetionedAnchor =\n node.attribs &&\n node.attribs.class &&\n node.attribs.class.includes('l8editor-mention');\n return isMetionedAnchor && node.type === 'tag' && node.name === 'a';\n },\n processNode(node: any) {\n const attr = node.attribs || {};\n const mentionedName = attr['data-name'] || '';\n const mentionedType = attr['data-type'] || '';\n const props = {\n dataType: mentionedType,\n // User Nickname\n dataName: mentionedName,\n dataId: attr['data-id'] || '',\n href: attr['href'],\n };\n return (\n \n );\n },\n});\n\nexport const genSearchAnchorInstruction = (\n onSearchAnchorClick: (word: string) => void,\n onLogEvent: (data: LogEventType) => void,\n countryRegion\n) => ({\n shouldProcessNode(node: any) {\n const isSearchAnchor =\n node.attribs &&\n node.attribs.class &&\n node.attribs.class.includes('l8-entity-word');\n return isSearchAnchor && node.type === 'tag' && node.name === 'a';\n },\n processNode(node: any) {\n const attr = node.attribs || {};\n const searchWord = attr['data-name'] || node.children?.[0]?.data || '';\n const type = attr['data-type'] || '';\n const props = {\n dataType: type,\n dataWord: searchWord,\n dataId: attr['data-id'] || '',\n dataRegion: countryRegion\n };\n return (\n \n );\n },\n});\n\nexport const genPoiArchorProcessingInstruction = (\n onPoiArchorClick: (href: string, dataId:string) => void,\n onLogEvent: (data: LogEventType) => void,\n countryRegion\n) => ({\n shouldProcessNode(node: any) {\n const isPoiArchor =\n node.attribs &&\n node.attribs.class &&\n node.attribs.class.includes('l8editor-poi');\n return isPoiArchor && node.name === 'a';\n },\n processNode(node: any) {\n const attr = node.attribs || {};\n const props = {\n dataType: attr['data-type'] || '',\n dataName: attr['data-name'] || '',\n dataId: attr['data-id'] || '',\n dataRegion: countryRegion || attr['data-region']\n };\n return (\n \n );\n },\n});\n\nexport const genPoiProcessingInstruction = (onPoiClick: any) => ({\n shouldProcessNode(node: any) {\n if (\n node.type === 'tag' &&\n node.name === 'div' &&\n node.attribs &&\n node.attribs.class &&\n node.attribs.class.includes('poi-card')\n ) {\n return true;\n }\n return false;\n },\n processNode(node: any) {\n const attr = node.attribs || {};\n const props = {\n name: attr['data-name'] || '',\n img: attr['data-img'] || '',\n address: attr['data-address'] || '',\n lat: attr['data-lat'] || '',\n lng: attr['data-lng'] || '',\n id: attr['data-id'] || '',\n href: attr['data-href'] || '',\n };\n return ;\n },\n});\n\nexport const genInsProcessingInstruction = onInsClick => ({\n shouldProcessNode(node: any) {\n if (\n node.type === 'tag' &&\n node.name === 'div' &&\n node.attribs &&\n node.attribs.class &&\n node.attribs.class.includes('ins-container')\n ) {\n return true;\n }\n return false;\n },\n processNode(node: any, children: any) {\n const attr = node.attribs || {};\n const props = {\n dataWidth: attr['data-width'] || '',\n dataHeight: attr['data-height'] || '',\n iframeProps: (children[0] || {}).props || {},\n };\n return ;\n },\n});\n\nexport const genGoodsProcessingInstruction = (\n onGoodsClick: (data: GoodsCardData) => void,\n onGoodsImpression: (data: GoodsCardData) => void,\n) => ({\n shouldProcessNode(node: any) {\n if (\n node.type === 'tag' &&\n node.name === 'div' &&\n node.attribs &&\n node.attribs.class &&\n node.attribs.class.includes('goods-card')\n ) {\n return true;\n }\n return false;\n },\n processNode(node: any) {\n const attr = node.attribs || {};\n const props = {\n href: attr['data-url'] || '',\n name: attr['data-name'] || '',\n origin: attr['data-origin'] || '',\n description: attr['data-description'] || '',\n imgUrl: attr['data-image-url'] || '',\n external_id: attr['data-external-id'] || '',\n };\n return (\n \n );\n },\n});\n\nexport const genMenuProcessingInstruction = (\n isShow: boolean,\n treeMenu: MenuType[],\n onMenuClick: (data: string) => void,\n onUpdateMenu: () => void,\n) => ({\n shouldProcessNode(node: any) {\n if (\n node.type === 'tag' &&\n node.name === 'div' &&\n node.attribs &&\n node.attribs.class &&\n node.attribs?.class?.includes('menu-list') &&\n isShow\n ) {\n return true;\n }\n return false;\n },\n processNode() {\n // node.attribs.class = 'sharee-menu';\n return (\n \n );\n },\n});\n","/* eslint-disable eslint-comments/disable-enable-pair */\n/* eslint-disable jsdoc/require-example */\n/* eslint-disable react/no-danger */\n\n// 针对SSR实现的详情页渲染逻辑,这里去掉了CSR的转码逻辑,需要单独引入\n// 纯SSR的转码和渲染逻辑与CSR有较大的差异,注意以后调整的时候不要对着抄\n\nimport React from 'react';\nimport HtmlToReact from 'html-to-react';\nimport { createRoot } from 'react-dom/client';\nimport WebImage from '../component/web-image';\nimport { MenuType } from '../types/global';\nimport { getOffset } from '../tools/ui';\nimport { LogEventType } from '../component/hashtag-item';\nimport { processDetail, processTitleTag } from '../tools/process';\nimport {\n genPoiProcessingInstruction,\n genArchorProcessingInstruction,\n genInsProcessingInstruction,\n genGoodsProcessingInstruction,\n genMenuProcessingInstruction,\n genHashtagProcessingInstruction,\n genPoiArchorProcessingInstruction,\n genMentionedAnchorInstruction,\n genSearchAnchorInstruction\n} from '../tools/process/process-instructions';\n\nconst HtmlToReactParser = HtmlToReact.Parser;\n\nconst htmlToReactParser = new HtmlToReactParser();\nconst isValidNode = function() {\n return true;\n};\nconst ONLINE_DOMAIN = 'https://www.lemon8-app.com';\nconst processNodeDefinitions = new HtmlToReact.ProcessNodeDefinitions(React);\n\nexport type ArticlePropType = {\n ref?: (c: any) => void;\n articleTitle?: string;\n children: string;\n groupId: string;\n isShow: boolean;\n isSSR: boolean;\n countryRegion: string;\n onMenuUpdate: (menulist: MenuType[]) => void;\n onLinkClick?: (data: any, type: string) => void;\n onImpression?: (data: any, type: string) => void;\n onLogEvent?: (eventName: string, eventParams: any) => void;\n onHashtagClick?: (pathName: string) => void;\n onPoiClick?: (pathName: string) => void;\n onMentionedClick?: (pathName: string, mentionedId: string) => void;\n onSearchWordAnchorClick?: (word: string) => void;\n onImageClick?: (\n images: string[],\n index: number,\n altPropValue: string,\n type?: 'single' | 'double',\n ) => void;\n} & Partial;\n\ntype DefaultProps = Readonly;\n\nconst defaultProps = {\n groupId: '',\n isiOS: false,\n isInApp: false,\n isShow: false,\n isSSR: false,\n onMenuUpdate: (menulist: MenuType[]) => {\n // empty\n },\n onLinkClick: (data: any, type: string) => {\n // empty\n },\n onImpression: (data: any, type: string) => {\n // empty\n },\n onHashtagClick: (pathName: string) => {\n // empty\n },\n onPoiClick: (pathName: string) => {\n // empty\n },\n onMentionedClick: (pathName: string, mentionedId: string) => {\n // empty\n },\n onLogEvent: (eventName: string, eventParams: any) => {\n // empty\n },\n onSearchWordAnchorClick:(word: string) => {\n // empty\n },\n\n onImageClick: (\n images: string[],\n index: number,\n altPropValue: string,\n type?: 'single' | 'double',\n ) => {\n // empty\n },\n};\n\nexport type ArticleStateType = {\n htmlString: string; // 因为数据是SSR的,所以这里要求拿到的数据已经是经过了常规转码的\n groupId: string;\n html: string;\n showBtn?: boolean;\n};\n\nexport class Article extends React.Component<\n ArticlePropType & T,\n ArticleStateType\n> {\n static defaultProps: DefaultProps = defaultProps;\n\n static getDerivedStateFromProps(props, state) {\n if (\n props.groupId !== state.groupId ||\n props.children !== state.htmlString\n ) {\n return {\n htmlString: `${props.children}`,\n groupId: props.groupId,\n html: processDetail(`${props.children}`, props.countryRegion),\n };\n }\n return null;\n }\n\n state: ArticleStateType = {\n htmlString: `${this.props.children}`,\n groupId: this.props.groupId,\n html: processDetail(`${this.props.children}`, this.props.countryRegion),\n };\n\n el: any = null;\n\n private images: any[] = [];\n\n private readonly menuList: MenuType[] = [];\n\n private readonly treeMenu: MenuType[] = [];\n\n constructor(props: ArticlePropType) {\n super(props);\n console.time('first');\n const { html } = this.state;\n const { isShow } = this.props;\n this.menuList = processTitleTag(html, isShow);\n this.treeMenu = this.toTree(this.menuList);\n }\n\n componentDidMount() {\n const { groupId, isSSR } = this.props;\n // 如果渲染时就有文章数据,那么直接水合\n if (groupId) {\n if (!isSSR) {\n this.images = [];\n // this.updateMenuList();\n this.hydrate(false);\n }\n this.updateMenuList();\n }\n }\n\n getSnapshotBeforeUpdate(prevProps) {\n const { groupId, children } = this.props;\n // 这里根据状态变换判断是否需要hydrate,groupId发生变化意味内容都会变化,需要水合\n return {\n needUpdate:\n prevProps.groupId !== groupId ||\n `${children}` !== `${prevProps.children}`,\n };\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n // If we have a snapshot value, we've just added new items.\n // Adjust scroll so these new items don't push the old ones out of view.\n // (snapshot here is the value returned from getSnapshotBeforeUpdate)\n if (snapshot.needUpdate && this.el) {\n // this.updateMenuList();\n this.images = [];\n this.hydrate(false);\n this.updateMenuList();\n }\n }\n\n computeMenuTopMap: () => any = () => {\n const map = {};\n ['h1', 'h2', 'h3'].forEach(headerName => {\n const headers = document.querySelectorAll(headerName);\n headers.forEach(header => {\n if (header.children[0]) {\n map[header.children[0].id] = getOffset(header).top;\n }\n });\n });\n return map;\n };\n\n // 形成树状\n toTree: (data: MenuType[]) => any = data => {\n const map = {};\n data.forEach(function(item) {\n map[item.id] = item;\n item.children = undefined;\n });\n const maxLength = data.length;\n const val: any[] = [];\n const formatTree: (\n item: MenuType,\n parentId: string,\n nextindex: number,\n ) => void = (item, parentId, nextindex) => {\n if (nextindex >= maxLength) {\n return;\n }\n if (data[nextindex].type > item.type) {\n data[nextindex].pid = item.id;\n data[nextindex].level = item.level + 1;\n if (\n !item.maxChildren ||\n (item.maxChildren && item.maxChildren > data[nextindex].type)\n ) {\n item.maxChildren = data[nextindex].type;\n if (item.children) {\n item.children = item.children.map(child => {\n if (item.maxChildren && child.type > item.maxChildren) {\n child.level += 1;\n }\n return child;\n });\n }\n }\n (item.children || (item.children = [])).push(data[nextindex]);\n\n formatTree(data[nextindex], item.id, nextindex + 1);\n } else if (parentId !== 'h0') {\n formatTree(map[parentId], map[parentId].pid, nextindex);\n } else {\n val.push(data[nextindex]);\n formatTree(data[nextindex], 'h0', nextindex + 1);\n }\n };\n val.push(data[0]);\n formatTree(data[0], 'h0', 1);\n return val;\n };\n\n updateMenuList: () => void = () => {\n // 通知外部当前文章的目录结构\n const { isShow } = this.props;\n const menuTopMap = this.computeMenuTopMap();\n this.menuList.forEach(menu => {\n menu.top = menuTopMap[menu.id];\n });\n // parseTreeJson(this.treeMenu);\n if (isShow) {\n this.props.onMenuUpdate(this.treeMenu);\n }\n this.props.onMenuUpdate(this.menuList);\n };\n\n /**\n * 当卡片 出现到视窗 时的处理\n *\n * @param data - 内层卡片传出来的数据(目前来看是用于 trackEvent)\n * @param cardType - 卡片类型\n */\n handleImpression: (data: any, cardType: string) => void = (\n data,\n cardType,\n ) => {\n const { onImpression } = this.props;\n if (onImpression) {\n onImpression(data, cardType);\n }\n };\n\n /**\n * 处理文章组件需要埋点情况\n *\n * @param data - 埋点相关信息\n */\n handleLogEvent: (data: LogEventType) => void = (\n data,\n ) => {\n const { onLogEvent } = this.props;\n const { eventName = '', eventParams = {} } = data;\n if (onLogEvent) {\n onLogEvent(eventName, eventParams);\n }\n };\n\n /**\n * 处理正文hashtag SPA跳转\n *\n * @param href hashtag 链接\n */\n handleHashtagClick: (topicHref: string, topicId: string) => void = (topicHref, topicId) => {\n const { onHashtagClick, countryRegion } = this.props;\n const pathName = `/topic/${topicId}`;\n if (onHashtagClick) {\n // 外面传来的SPA跳转方法\n onHashtagClick(pathName);\n } else {\n // 没传SPA跳转,走MPA\n window.open(`${ONLINE_DOMAIN}${topicHref}?region=${countryRegion}`);\n }\n }\n\n /**\n * 处理正文poi SPA跳转\n * @param poiHref\n * @param poiId\n */\n handlePoiClick: (poiHref: string, poiId: string) => void = (poiHref, poiId) => {\n const { onPoiClick, countryRegion } = this.props;\n const pathName = `/poi/${poiId}`;\n if (onPoiClick) {\n // 外面传来的SPA跳转方法\n onPoiClick(pathName);\n } else {\n // 没传SPA跳转,走MPA\n window.open(`${ONLINE_DOMAIN}${poiHref}?region=${countryRegion}`);\n }\n }\n\n /**\n * 处理正文mentioned user跳转\n * mentionedHref为user_unique_name\n * @param mentionedHref\n */\n handleMentionedClick: (mentionedHref: string, mentionedId: string) => void = (mentionedHref, mentionedId) => {\n const { onMentionedClick, countryRegion } = this.props;\n if (onMentionedClick) {\n // 外面传来的SPA跳转方法\n onMentionedClick(mentionedHref, mentionedId);\n } else {\n // 没传SPA跳转,走MPA\n window.open(`${ONLINE_DOMAIN}${mentionedHref}?region=${countryRegion}`);\n }\n }\n\n /**\n * 点击 卡片 时的处理\n *\n * @param data - 内层卡片传出来的数据\n * @param cardType - 卡片类型\n */\n handleLinkClick: (data: any, cardType: string) => void = (data, cardType) => {\n const { isInApp, onLinkClick } = this.props;\n // 端内的逻辑放到更上层的组件里,不在这一层处理,因为依赖版本号\n\n // if (!isInApp) {\n // if (cardType !== 'menuitem') {\n // window.open(data.href);\n // }\n // }\n if (onLinkClick) {\n let params = data;\n if (cardType === 'menuitem') {\n params = { menuList: this.menuList, id: data };\n }\n onLinkClick(params, cardType);\n }\n };\n\n handleImageClick: (\n src: string,\n index: number,\n altPropValue: string,\n ) => void = (src, index, altProp) => {\n // 这里触发外部的图片浏览策略\n const { onImageClick } = this.props;\n if (onImageClick) {\n onImageClick(this.images, index, altProp);\n }\n };\n\n handleSearchWordAnchorClick: (word: string) => void = word => {\n const { onSearchWordAnchorClick } = this.props;\n if (onSearchWordAnchorClick) {\n onSearchWordAnchorClick(word);\n }\n }\n\n renderImage: (imgConfig: any) => any = imgConfig => {\n const { child, _index, altPropValue } = imgConfig;\n this.images.push(child.props.origin_src);\n const { groupId } = this.state;\n return (\n \n );\n };\n\n hydrate: (isSSR: boolean, isNative?: boolean) => any = (\n isSSR,\n isNative = false,\n ) => {\n const { html } = this.state;\n const { articleTitle = '', isShow = false, countryRegion } = this.props;\n // 用于计算图片标签的index\n let imageIndex = 0;\n console.timeEnd('first');\n console.time('second');\n // const originImageList: any[] = [];\n // 当前最高的标题类目\n // const menuTopLevel = 'h3';\n // const menuList: MenuType[] = [];\n // const menuTopMap: any = isSSR && !isNative ? [] : this.computeMenuTopMap();\n // 图片点击监听的事件,因为取不到this,所以这里做桥接\n\n const imageProcessingInstruction = {\n replaceChildren: true,\n shouldProcessNode(node: any) {\n // 替换full接口下发的模板字段中的图片标签\n return node.attribs && node.attribs.class === 'image-container';\n },\n processNode: (node: any, children: any) => {\n const caption = node.attribs['data-caption'];\n const altPropValue = caption\n ? `${articleTitle}|${caption}の画像`\n : `${articleTitle}の画像`;\n const _index = imageIndex;\n imageIndex++;\n // 这里看上去是个map,其实只会有一个img节点\n return children.map((child: any) => {\n if (child && child.props && child.props.className === 'image') {\n const config = { child, _index, altPropValue };\n const imgComponent = this.renderImage(config);\n return imgComponent;\n }\n return null;\n });\n },\n };\n\n // 图片处理完后存一下\n // this.images = originImageList;\n // 处理转码逻辑\n const processingInstructions = [\n imageProcessingInstruction,\n genArchorProcessingInstruction((data: any) =>\n this.handleLinkClick(data, 'link'),\n ),\n genSearchAnchorInstruction(\n (word: string) => this.handleSearchWordAnchorClick(word),\n (data: LogEventType) => this.handleLogEvent(data),\n countryRegion\n ),\n genHashtagProcessingInstruction(\n (topicHref: string, topicId: string) => this.handleHashtagClick(topicHref, topicId),\n (data: LogEventType) => this.handleLogEvent(data),\n countryRegion\n ),\n genMentionedAnchorInstruction(\n (mentionedHref: string, mentionedId: string) => this.handleMentionedClick(mentionedHref, mentionedId),\n (data: LogEventType) => this.handleLogEvent(data),\n ),\n genPoiArchorProcessingInstruction(\n (poiHref: string, poiId: string) => this.handlePoiClick(poiHref, poiId),\n (data: LogEventType) => this.handleLogEvent(data),\n countryRegion\n ),\n genPoiProcessingInstruction((data: any) =>\n this.handleLinkClick(data, 'poi'),\n ),\n genInsProcessingInstruction((data: any) =>\n this.handleLinkClick(data, 'ins'),\n ),\n genGoodsProcessingInstruction(\n (data: any) => this.handleLinkClick(data, 'goods'),\n (data: any) => this.handleImpression(data, 'goods'),\n ),\n genMenuProcessingInstruction(\n isShow,\n this.treeMenu,\n (data: any) => this.handleLinkClick(data, 'menuitem'),\n () => this.updateMenuList(),\n ),\n {\n // Anything else\n shouldProcessNode() {\n return true;\n },\n processNode: (node: any, children: any[]) => {\n return processNodeDefinitions.processDefaultNode(node, children);\n },\n },\n ];\n // 生成React.Component\n const reactComponent = htmlToReactParser.parseWithInstructions(\n html,\n isValidNode,\n processingInstructions,\n );\n // for inner fiber node tree and SyntheticEvent\n const articleComponent = (\n
\n {reactComponent}\n
\n );\n if (isSSR) {\n return articleComponent;\n }\n const root = createRoot(this.el);\n root.render(articleComponent);\n };\n\n handleArticleClick: (e: any) => void = e => {};\n\n render() {\n const { groupId, html } = this.state;\n const { isSSR } = this.props;\n if (isSSR) {\n return (\n
(this.el = e)}>\n {this.hydrate(true)}\n
\n );\n } else {\n return (\n (this.el = e)}\n dangerouslySetInnerHTML={{\n __html: `
${html}
`,\n }}>\n );\n }\n }\n}\n","/* eslint-disable max-lines */\n/* eslint-disable eslint-comments/no-unlimited-disable */\n/* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */\n/* eslint-disable */\n(function(global, factory) {\n if (typeof define === 'function' && define.amd) { define(function() { return factory(global); }); } else { factory(global); }\n}(window, function(window) {\n var Zepto = (function() {\n var undefined, key, $, classList, emptyArray = [],\n concat = emptyArray.concat,\n filter = emptyArray.filter,\n slice = emptyArray.slice,\n document = window.document,\n elementDisplay = {},\n classCache = {},\n cssNumber = { 'column-count': 1, columns: 1, 'font-weight': 1, 'line-height': 1, opacity: 1, 'z-index': 1, zoom: 1 },\n fragmentRE = /^\\s*<(\\w+|!)[^>]*>/,\n singleTagRE = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n rootNodeRE = /^(?:body|html)$/i,\n capitalRE = /([A-Z])/g,\n\n // special attributes that should be get/set via method calls\n methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'],\n\n adjacencyOperators = ['after', 'prepend', 'before', 'append'],\n table = document.createElement('table'),\n tableRow = document.createElement('tr'),\n containers = {\n tr: document.createElement('tbody'),\n tbody: table,\n thead: table,\n tfoot: table,\n td: tableRow,\n th: tableRow,\n '*': document.createElement('div')\n },\n readyRE = /complete|loaded|interactive/,\n simpleSelectorRE = /^[\\w-]*$/,\n class2type = {},\n toString = class2type.toString,\n zepto = {},\n camelize, uniq,\n tempParent = document.createElement('div'),\n propMap = {\n tabindex: 'tabIndex',\n readonly: 'readOnly',\n for: 'htmlFor',\n class: 'className',\n maxlength: 'maxLength',\n cellspacing: 'cellSpacing',\n cellpadding: 'cellPadding',\n rowspan: 'rowSpan',\n colspan: 'colSpan',\n usemap: 'useMap',\n frameborder: 'frameBorder',\n contenteditable: 'contentEditable'\n },\n isArray = Array.isArray ||\n\n function(object) { return object instanceof Array; };\n\n zepto.matches = function(element, selector) {\n if (!selector || !element || element.nodeType !== 1) { return false; }\n var matchesSelector = element.matches || element.webkitMatchesSelector ||\n element.mozMatchesSelector || element.oMatchesSelector ||\n element.matchesSelector;\n if (matchesSelector) { return matchesSelector.call(element, selector); }\n // fall back to performing a selector:\n var match, parent = element.parentNode,\n temp = !parent;\n if (temp) {\n (parent = tempParent).appendChild(element); }\n match = ~zepto.qsa(parent, selector).indexOf(element);\n temp && tempParent.removeChild(element);\n return match;\n };\n\n function type(obj) {\n return obj == null ? String(obj) :\n class2type[toString.call(obj)] || 'object';\n }\n\n function isFunction(value) { return type(value) == 'function'; }\n\n function isWindow(obj) { return obj != null && obj == obj.window; }\n\n function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE; }\n\n function isObject(obj) { return type(obj) == 'object'; }\n\n function isPlainObject(obj) {\n return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype;\n }\n\n function likeArray(obj) {\n var length = !!obj && 'length' in obj && obj.length,\n type = $.type(obj);\n\n return 'function' != type && !isWindow(obj) && (\n 'array' == type || length === 0 ||\n (typeof length == 'number' && length > 0 && (length - 1) in obj)\n );\n }\n\n function compact(array) { return filter.call(array, function(item) { return item != null; }); }\n\n function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array; }\n camelize = function(str) { return str.replace(/-+(.)?/g, function(match, chr) { return chr ? chr.toUpperCase() : ''; }); };\n\n function dasherize(str) {\n return str.replace(/::/g, '/')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\n .replace(/_/g, '-')\n .toLowerCase();\n }\n uniq = function(array) { return filter.call(array, function(item, idx) { return array.indexOf(item) == idx; }); };\n\n function classRE(name) {\n return name in classCache ?\n classCache[name] : (classCache[name] = new RegExp('(^|\\\\s)' + name + '(\\\\s|$)'));\n }\n\n function maybeAddPx(name, value) {\n return (typeof value == 'number' && !cssNumber[dasherize(name)]) ? value + 'px' : value;\n }\n\n function defaultDisplay(nodeName) {\n var element, display;\n if (!elementDisplay[nodeName]) {\n element = document.createElement(nodeName);\n document.body.appendChild(element);\n display = getComputedStyle(element, '').getPropertyValue('display');\n element.parentNode.removeChild(element);\n display == 'none' && (display = 'block');\n elementDisplay[nodeName] = display;\n }\n return elementDisplay[nodeName];\n }\n\n function children(element) {\n return 'children' in element ?\n slice.call(element.children) :\n $.map(element.childNodes, function(node) { if (node.nodeType == 1) { return node; } });\n }\n\n function Z(dom, selector) {\n var i, len = dom ? dom.length : 0;\n for (i = 0; i < len; i++) { this[i] = dom[i]; }\n this.length = len;\n this.selector = selector || '';\n }\n\n // `$.zepto.fragment` takes a html string and an optional tag name\n // to generate DOM nodes from the given html string.\n // The generated DOM nodes are returned as an array.\n // This function can be overridden in plugins for example to make\n // it compatible with browsers that don't support the DOM fully.\n zepto.fragment = function(html, name, properties) {\n var dom, nodes, container;\n\n // A special case optimization for a single tag\n if (singleTagRE.test(html)) { dom = $(document.createElement(RegExp.$1)); }\n\n if (!dom) {\n if (html.replace) { html = html.replace(tagExpanderRE, '<$1>'); }\n if (name === undefined) { name = fragmentRE.test(html) && RegExp.$1; }\n if (!(name in containers)) { name = '*'; }\n\n container = containers[name];\n container.innerHTML = '' + html;\n dom = $.each(slice.call(container.childNodes), function() {\n container.removeChild(this);\n });\n }\n\n if (isPlainObject(properties)) {\n nodes = $(dom);\n $.each(properties, function(key, value) {\n if (methodAttributes.indexOf(key) > -1) { nodes[key](value); } else { nodes.attr(key, value); }\n });\n }\n\n return dom;\n };\n\n // `$.zepto.Z` swaps out the prototype of the given `dom` array\n // of nodes with `$.fn` and thus supplying all the Zepto functions\n // to the array. This method can be overridden in plugins.\n zepto.Z = function(dom, selector) {\n return new Z(dom, selector);\n };\n\n // `$.zepto.isZ` should return `true` if the given object is a Zepto\n // collection. This method can be overridden in plugins.\n zepto.isZ = function(object) {\n return object instanceof zepto.Z;\n };\n\n // `$.zepto.init` is Zepto's counterpart to jQuery's `$.fn.init` and\n // takes a CSS selector and an optional context (and handles various\n // special cases).\n // This method can be overridden in plugins.\n zepto.init = function(selector, context) {\n var dom;\n // If nothing given, return an empty Zepto collection\n if (!selector) { return zepto.Z(); }\n // Optimize for string selectors\n else if (typeof selector == 'string') {\n selector = selector.trim();\n // If it's a html fragment, create nodes from it\n // Note: In both Chrome 21 and Firefox 15, DOM error 12\n // is thrown if the fragment doesn't begin with <\n if (selector[0] == '<' && fragmentRE.test(selector)) { dom = zepto.fragment(selector, RegExp.$1, context), selector = null; }\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) { return $(context).find(selector); }\n // If it's a CSS selector, use it to select nodes.\n else { dom = zepto.qsa(document, selector); }\n }\n // If a function is given, call it when the DOM is ready\n else if (isFunction(selector)) { return $(document).ready(selector); }\n // If a Zepto collection is given, just return it\n else if (zepto.isZ(selector)) { return selector; } else {\n // normalize array if an array of nodes is given\n if (isArray(selector)) { dom = compact(selector); }\n // Wrap DOM nodes.\n else if (isObject(selector)) { dom = [selector], selector = null; }\n // If it's a html fragment, create nodes from it\n else if (fragmentRE.test(selector)) { dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null; }\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) { return $(context).find(selector); }\n // And last but no least, if it's a CSS selector, use it to select nodes.\n else { dom = zepto.qsa(document, selector); }\n }\n // create a new Zepto collection from the nodes found\n return zepto.Z(dom, selector);\n };\n\n // `$` will be the base `Zepto` object. When calling this\n // function just call `$.zepto.init, which makes the implementation\n // details of selecting nodes and creating Zepto collections\n // patchable in plugins.\n $ = function(selector, context) {\n return zepto.init(selector, context);\n };\n\n function extend(target, source, deep) {\n for (key in source) {\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key])) { target[key] = {}; }\n if (isArray(source[key]) && !isArray(target[key])) { target[key] = []; }\n extend(target[key], source[key], deep);\n } else if (source[key] !== undefined) { target[key] = source[key]; }\n }\n }\n\n // Copy all but undefined properties from one or more\n // objects to the `target` object.\n $.extend = function(target) {\n var deep, args = slice.call(arguments, 1);\n if (typeof target == 'boolean') {\n deep = target;\n target = args.shift();\n }\n args.forEach(function(arg) { extend(target, arg, deep); });\n return target;\n };\n\n // `$.zepto.qsa` is Zepto's CSS selector implementation which\n // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`.\n // This method can be overridden in plugins.\n zepto.qsa = function(element, selector) {\n var found,\n maybeID = selector[0] == '#',\n maybeClass = !maybeID && selector[0] == '.',\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked\n isSimple = simpleSelectorRE.test(nameOnly);\n return (element.getElementById && isSimple && maybeID) // Safari DocumentFragment doesn't have getElementById\n ?\n ((found = element.getElementById(nameOnly)) ? [found] : []) :\n (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] :\n slice.call(\n isSimple && !maybeID && element.getElementsByClassName // DocumentFragment doesn't have getElementsByClassName/TagName\n ?\n maybeClass ? element.getElementsByClassName(nameOnly) // If it's simple, it could be a class\n :\n element.getElementsByTagName(selector) // Or a tag\n :\n element.querySelectorAll(selector) // Or it's not simple, and we need to query all\n );\n };\n\n function filtered(nodes, selector) {\n return selector == null ? $(nodes) : $(nodes).filter(selector);\n }\n\n $.contains = document.documentElement.contains ?\n\n function(parent, node) {\n return parent !== node && parent.contains(node);\n } :\n function(parent, node) {\n while (node && (node = node.parentNode)) { if (node === parent) { return true; } }\n return false;\n };\n\n function funcArg(context, arg, idx, payload) {\n return isFunction(arg) ? arg.call(context, idx, payload) : arg;\n }\n\n function setAttribute(node, name, value) {\n value == null ? node.removeAttribute(name) : node.setAttribute(name, value);\n }\n\n // access className property while respecting SVGAnimatedString\n function className(node, value) {\n var klass = node.className || '',\n svg = klass && klass.baseVal !== undefined;\n\n if (value === undefined) { return svg ? klass.baseVal : klass; }\n svg ? (klass.baseVal = value) : (node.className = value);\n }\n\n // \"true\" => true\n // \"false\" => false\n // \"null\" => null\n // \"42\" => 42\n // \"42.5\" => 42.5\n // \"08\" => \"08\"\n // JSON => parse if valid\n // String => self\n function deserializeValue(value) {\n try {\n return value ?\n value == 'true' ||\n (value == 'false' ? false :\n value == 'null' ? null :\n +value + '' == value ? +value :\n /^[\\[\\{]/.test(value) ? $.parseJSON(value) :\n value) :\n value;\n } catch (e) {\n return value;\n }\n }\n\n $.type = type;\n $.isFunction = isFunction;\n $.isWindow = isWindow;\n $.isArray = isArray;\n $.isPlainObject = isPlainObject;\n\n $.isEmptyObject = function(obj) {\n var name;\n for (name in obj) { return false; }\n return true;\n };\n\n $.isNumeric = function(val) {\n var num = Number(val),\n type = typeof val;\n return val != null && type != 'boolean' &&\n (type != 'string' || val.length) &&\n !isNaN(num) && isFinite(num) || false;\n };\n\n $.inArray = function(elem, array, i) {\n return emptyArray.indexOf.call(array, elem, i);\n };\n\n $.camelCase = camelize;\n $.trim = function(str) {\n return str == null ? '' : String.prototype.trim.call(str);\n };\n\n // plugin compatibility\n $.uuid = 0;\n $.support = {};\n $.expr = {};\n $.noop = function() {};\n\n $.map = function(elements, callback) {\n var value, values = [],\n i, key;\n if (likeArray(elements)) {\n for (i = 0; i < elements.length; i++) {\n value = callback(elements[i], i);\n if (value != null) { values.push(value); }\n }\n } else {\n for (key in elements) {\n value = callback(elements[key], key);\n if (value != null) { values.push(value); }\n }\n }\n return flatten(values);\n };\n\n $.each = function(elements, callback) {\n var i, key;\n if (likeArray(elements)) {\n for (i = 0; i < elements.length; i++) { if (callback.call(elements[i], i, elements[i]) === false) { return elements; } }\n } else {\n for (key in elements) { if (callback.call(elements[key], key, elements[key]) === false) { return elements; } }\n }\n\n return elements;\n };\n\n $.grep = function(elements, callback) {\n return filter.call(elements, callback);\n };\n\n if (window.JSON) { $.parseJSON = JSON.parse; }\n\n // Populate the class2type map\n $.each('Boolean Number String Function Array Date RegExp Object Error'.split(' '), function(i, name) {\n class2type['[object ' + name + ']'] = name.toLowerCase();\n });\n\n // Define methods that will be available on all\n // Zepto collections\n $.fn = {\n constructor: zepto.Z,\n length: 0,\n\n // Because a collection acts like an array\n // copy over these useful array functions.\n forEach: emptyArray.forEach,\n reduce: emptyArray.reduce,\n push: emptyArray.push,\n sort: emptyArray.sort,\n splice: emptyArray.splice,\n indexOf: emptyArray.indexOf,\n concat: function() {\n var i, value, args = [];\n for (i = 0; i < arguments.length; i++) {\n value = arguments[i];\n args[i] = zepto.isZ(value) ? value.toArray() : value;\n }\n return concat.apply(zepto.isZ(this) ? this.toArray() : this, args);\n },\n\n // `map` and `slice` in the jQuery API work differently\n // from their array counterparts\n map: function(fn) {\n return $($.map(this, function(el, i) { return fn.call(el, i, el); }));\n },\n slice: function() {\n return $(slice.apply(this, arguments));\n },\n\n ready: function(callback) {\n // need to check if document.body exists for IE as that browser reports\n // document ready when it hasn't yet created the body element\n if (readyRE.test(document.readyState) && document.body) { callback($); } else { document.addEventListener('DOMContentLoaded', function() { callback($); }, false); }\n return this;\n },\n get: function(idx) {\n return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length];\n },\n toArray: function() { return this.get(); },\n size: function() {\n return this.length;\n },\n remove: function() {\n return this.each(function() {\n if (this.parentNode != null) { this.parentNode.removeChild(this); }\n });\n },\n each: function(callback) {\n emptyArray.every.call(this, function(el, idx) {\n return callback.call(el, idx, el) !== false;\n });\n return this;\n },\n filter: function(selector) {\n if (isFunction(selector)) { return this.not(this.not(selector)); }\n return $(filter.call(this, function(element) {\n return zepto.matches(element, selector);\n }));\n },\n add: function(selector, context) {\n return $(uniq(this.concat($(selector, context))));\n },\n is: function(selector) {\n return this.length > 0 && zepto.matches(this[0], selector);\n },\n not: function(selector) {\n var nodes = [];\n if (isFunction(selector) && selector.call !== undefined) {\n this.each(function(idx) {\n if (!selector.call(this, idx)) { nodes.push(this); }\n });\n } else {\n var excludes = typeof selector == 'string' ? this.filter(selector) :\n (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector);\n this.forEach(function(el) {\n if (excludes.indexOf(el) < 0) { nodes.push(el); }\n });\n }\n return $(nodes);\n },\n has: function(selector) {\n return this.filter(function() {\n return isObject(selector) ?\n $.contains(this, selector) :\n $(this).find(selector).size();\n });\n },\n eq: function(idx) {\n return idx === -1 ? this.slice(idx) : this.slice(idx, +idx + 1);\n },\n first: function() {\n var el = this[0];\n return el && !isObject(el) ? el : $(el);\n },\n last: function() {\n var el = this[this.length - 1];\n return el && !isObject(el) ? el : $(el);\n },\n find: function(selector) {\n var result, $this = this;\n if (!selector) { result = $(); } else if (typeof selector == 'object') {\n result = $(selector).filter(function() {\n var node = this;\n return emptyArray.some.call($this, function(parent) {\n return $.contains(parent, node);\n });\n });\n } else if (this.length == 1) { result = $(zepto.qsa(this[0], selector)); } else { result = this.map(function() { return zepto.qsa(this, selector); }); }\n return result;\n },\n closest: function(selector, context) {\n var nodes = [],\n collection = typeof selector == 'object' && $(selector);\n this.each(function(_, node) {\n while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector))) { node = node !== context && !isDocument(node) && node.parentNode; }\n if (node && nodes.indexOf(node) < 0) { nodes.push(node); }\n });\n return $(nodes);\n },\n parents: function(selector) {\n var ancestors = [],\n nodes = this;\n while (nodes.length > 0) {\n nodes = $.map(nodes, function(node) {\n if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) {\n ancestors.push(node);\n return node;\n }\n });\n }\n return filtered(ancestors, selector);\n },\n parent: function(selector) {\n return filtered(uniq(this.pluck('parentNode')), selector);\n },\n children: function(selector) {\n return filtered(this.map(function() { return children(this); }), selector);\n },\n contents: function() {\n return this.map(function() { return this.contentDocument || slice.call(this.childNodes); });\n },\n siblings: function(selector) {\n return filtered(this.map(function(i, el) {\n return filter.call(children(el.parentNode), function(child) { return child !== el; });\n }), selector);\n },\n empty: function() {\n return this.each(function() { this.innerHTML = ''; });\n },\n // `pluck` is borrowed from Prototype.js\n pluck: function(property) {\n return $.map(this, function(el) { return el[property]; });\n },\n show: function() {\n return this.each(function() {\n this.style.display == 'none' && (this.style.display = '');\n if (getComputedStyle(this, '').getPropertyValue('display') == 'none') { this.style.display = defaultDisplay(this.nodeName); }\n });\n },\n replaceWith: function(newContent) {\n return this.before(newContent).remove();\n },\n wrap: function(structure) {\n var func = isFunction(structure);\n if (this[0] && !func) {\n var dom = $(structure).get(0),\n clone = dom.parentNode || this.length > 1;\n }\n\n return this.each(function(index) {\n $(this).wrapAll(\n func ? structure.call(this, index) :\n clone ? dom.cloneNode(true) : dom\n );\n });\n },\n wrapAll: function(structure) {\n if (this[0]) {\n $(this[0]).before(structure = $(structure));\n var children;\n // drill down to the inmost element\n while ((children = structure.children()).length) { structure = children.first(); }\n $(structure).append(this);\n }\n return this;\n },\n wrapInner: function(structure) {\n var func = isFunction(structure);\n return this.each(function(index) {\n var self = $(this),\n contents = self.contents(),\n dom = func ? structure.call(this, index) : structure;\n contents.length ? contents.wrapAll(dom) : self.append(dom);\n });\n },\n unwrap: function() {\n this.parent().each(function() {\n $(this).replaceWith($(this).children());\n });\n return this;\n },\n clone: function() {\n return this.map(function() { return this.cloneNode(true); });\n },\n hide: function() {\n return this.css('display', 'none');\n },\n toggle: function(setting) {\n return this.each(function() {\n var el = $(this);\n (setting === undefined ? el.css('display') == 'none' : setting) ? el.show(): el.hide();\n });\n },\n prev: function(selector) { return $(this.pluck('previousElementSibling')).filter(selector || '*'); },\n next: function(selector) { return $(this.pluck('nextElementSibling')).filter(selector || '*'); },\n html: function(html) {\n return 0 in arguments ?\n this.each(function(idx) {\n var originHtml = this.innerHTML;\n $(this).empty().append(funcArg(this, html, idx, originHtml));\n }) :\n (0 in this ? this[0].innerHTML : null);\n },\n text: function(text) {\n return 0 in arguments ?\n this.each(function(idx) {\n var newText = funcArg(this, text, idx, this.textContent);\n this.textContent = newText == null ? '' : '' + newText;\n }) :\n (0 in this ? this.pluck('textContent').join('') : null);\n },\n attr: function(name, value) {\n var result;\n return (typeof name == 'string' && !(1 in arguments)) ?\n (0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined) :\n this.each(function(idx) {\n if (this.nodeType !== 1) { return; }\n if (isObject(name)) { for (key in name) { setAttribute(this, key, name[key]); } } else { setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name))); }\n });\n },\n removeAttr: function(name) {\n return this.each(function() {\n this.nodeType === 1 && name.split(' ').forEach(function(attribute) {\n setAttribute(this, attribute);\n }, this);\n });\n },\n prop: function(name, value) {\n name = propMap[name] || name;\n return (1 in arguments) ?\n this.each(function(idx) {\n this[name] = funcArg(this, value, idx, this[name]);\n }) :\n (this[0] && this[0][name]);\n },\n removeProp: function(name) {\n name = propMap[name] || name;\n return this.each(function() { delete this[name]; });\n },\n data: function(name, value) {\n var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase();\n\n var data = (1 in arguments) ?\n this.attr(attrName, value) :\n this.attr(attrName);\n\n return data !== null ? deserializeValue(data) : undefined;\n },\n val: function(value) {\n if (0 in arguments) {\n if (value == null) { value = ''; }\n return this.each(function(idx) {\n this.value = funcArg(this, value, idx, this.value);\n });\n } else {\n return this[0] && (this[0].multiple ?\n $(this[0]).find('option').filter(function() { return this.selected; }).pluck('value') :\n this[0].value);\n }\n },\n offset: function(coordinates) {\n if (coordinates) {\n return this.each(function(index) {\n var $this = $(this),\n coords = funcArg(this, coordinates, index, $this.offset()),\n parentOffset = $this.offsetParent().offset(),\n props = {\n top: coords.top - parentOffset.top,\n left: coords.left - parentOffset.left\n };\n\n if ($this.css('position') == 'static') { props['position'] = 'relative'; }\n $this.css(props);\n });\n }\n if (!this.length) { return null; }\n if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0])) { return { top: 0, left: 0 }; }\n var obj = this[0].getBoundingClientRect();\n return {\n left: obj.left + window.pageXOffset,\n top: obj.top + window.pageYOffset,\n width: Math.round(obj.width),\n height: Math.round(obj.height)\n };\n },\n css: function(property, value) {\n if (arguments.length < 2) {\n var element = this[0];\n if (typeof property == 'string') {\n if (!element) { return; }\n return element.style[camelize(property)] || getComputedStyle(element, '').getPropertyValue(property);\n } else if (isArray(property)) {\n if (!element) { return; }\n var props = {};\n var computedStyle = getComputedStyle(element, '');\n $.each(property, function(_, prop) {\n props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop));\n });\n return props;\n }\n }\n\n var css = '';\n if (type(property) == 'string') {\n if (!value && value !== 0) { this.each(function() { this.style.removeProperty(dasherize(property)); }); } else { css = dasherize(property) + ':' + maybeAddPx(property, value); }\n } else {\n for (key in property) {\n if (!property[key] && property[key] !== 0) { this.each(function() { this.style.removeProperty(dasherize(key)); }); } else { css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';'; }\n }\n }\n\n return this.each(function() { this.style.cssText += ';' + css; });\n },\n index: function(element) {\n return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0]);\n },\n hasClass: function(name) {\n if (!name) { return false; }\n return emptyArray.some.call(this, function(el) {\n return this.test(className(el));\n }, classRE(name));\n },\n addClass: function(name) {\n if (!name) { return this; }\n return this.each(function(idx) {\n if (!('className' in this)) { return; }\n classList = [];\n var cls = className(this),\n newName = funcArg(this, name, idx, cls);\n newName.split(/\\s+/g).forEach(function(klass) {\n if (!$(this).hasClass(klass)) { classList.push(klass); }\n }, this);\n classList.length && className(this, cls + (cls ? ' ' : '') + classList.join(' '));\n });\n },\n removeClass: function(name) {\n return this.each(function(idx) {\n if (!('className' in this)) { return; }\n if (name === undefined) { return className(this, ''); }\n classList = className(this);\n funcArg(this, name, idx, classList).split(/\\s+/g).forEach(function(klass) {\n classList = classList.replace(classRE(klass), ' ');\n });\n className(this, classList.trim());\n });\n },\n toggleClass: function(name, when) {\n if (!name) { return this; }\n return this.each(function(idx) {\n var $this = $(this),\n names = funcArg(this, name, idx, className(this));\n names.split(/\\s+/g).forEach(function(klass) {\n (when === undefined ? !$this.hasClass(klass) : when) ?\n $this.addClass(klass): $this.removeClass(klass);\n });\n });\n },\n scrollTop: function(value) {\n if (!this.length) { return; }\n var hasScrollTop = 'scrollTop' in this[0];\n if (value === undefined) { return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset; }\n return this.each(hasScrollTop ?\n\n function() { this.scrollTop = value; } :\n function() { this.scrollTo(this.scrollX, value); });\n },\n scrollLeft: function(value) {\n if (!this.length) { return; }\n var hasScrollLeft = 'scrollLeft' in this[0];\n if (value === undefined) { return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset; }\n return this.each(hasScrollLeft ?\n\n function() { this.scrollLeft = value; } :\n function() { this.scrollTo(value, this.scrollY); });\n },\n position: function() {\n if (!this.length) { return; }\n\n var elem = this[0],\n // Get *real* offsetParent\n offsetParent = this.offsetParent(),\n // Get correct offsets\n offset = this.offset(),\n parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n // Subtract element margins\n // note: when an element has margin: auto the offsetLeft and marginLeft\n // are the same in Safari causing offset.left to incorrectly be 0\n offset.top -= parseFloat($(elem).css('margin-top')) || 0;\n offset.left -= parseFloat($(elem).css('margin-left')) || 0;\n\n // Add offsetParent borders\n parentOffset.top += parseFloat($(offsetParent[0]).css('border-top-width')) || 0;\n parentOffset.left += parseFloat($(offsetParent[0]).css('border-left-width')) || 0;\n\n // Subtract the two offsets\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n };\n },\n offsetParent: function() {\n return this.map(function() {\n var parent = this.offsetParent || document.body;\n while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css('position') == 'static') { parent = parent.offsetParent; }\n return parent;\n });\n }\n };\n\n // for now\n $.fn.detach = $.fn.remove\n\n // Generate the `width` and `height` functions\n ;\n ['width', 'height'].forEach(function(dimension) {\n var dimensionProperty = dimension.replace(/./, function(m) { return m[0].toUpperCase(); });\n\n $.fn[dimension] = function(value) {\n var offset, el = this[0];\n if (value === undefined) {\n return isWindow(el) ? el['inner' + dimensionProperty] :\n isDocument(el) ? el.documentElement['scroll' + dimensionProperty] :\n (offset = this.offset()) && offset[dimension];\n } else {\n return this.each(function(idx) {\n el = $(this);\n el.css(dimension, funcArg(this, value, idx, el[dimension]()));\n });\n }\n };\n });\n\n function traverseNode(node, fun) {\n fun(node);\n for (var i = 0, len = node.childNodes.length; i < len; i++) { traverseNode(node.childNodes[i], fun); }\n }\n\n // Generate the `after`, `prepend`, `before`, `append`,\n // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods.\n adjacencyOperators.forEach(function(operator, operatorIndex) {\n var inside = operatorIndex % 2; // => prepend, append\n\n $.fn[operator] = function() {\n // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings\n var argType, nodes = $.map(arguments, function(arg) {\n var arr = [];\n argType = type(arg);\n if (argType == 'array') {\n arg.forEach(function(el) {\n if (el.nodeType !== undefined) { return arr.push(el); } else if ($.zepto.isZ(el)) { return arr = arr.concat(el.get()); }\n arr = arr.concat(zepto.fragment(el));\n });\n return arr;\n }\n return argType == 'object' || arg == null ?\n arg : zepto.fragment(arg);\n }),\n parent, copyByClone = this.length > 1;\n if (nodes.length < 1) { return this; }\n\n return this.each(function(_, target) {\n parent = inside ? target : target.parentNode;\n\n // convert all methods to a \"before\" operation\n target = operatorIndex == 0 ? target.nextSibling :\n operatorIndex == 1 ? target.firstChild :\n operatorIndex == 2 ? target :\n null;\n\n var parentInDocument = $.contains(document.documentElement, parent);\n\n nodes.forEach(function(node) {\n if (copyByClone) { node = node.cloneNode(true); } else if (!parent) { return $(node).remove(); }\n\n parent.insertBefore(node, target);\n if (parentInDocument) {\n traverseNode(node, function(el) {\n if (el.nodeName != null && el.nodeName.toUpperCase() === 'SCRIPT' &&\n (!el.type || el.type === 'text/javascript') && !el.src) {\n var target = el.ownerDocument ? el.ownerDocument.defaultView : window;\n target['eval'].call(target, el.innerHTML);\n }\n });\n }\n });\n });\n };\n\n // after => insertAfter\n // prepend => prependTo\n // before => insertBefore\n // append => appendTo\n $.fn[inside ? operator + 'To' : 'insert' + (operatorIndex ? 'Before' : 'After')] = function(html) {\n $(html)[operator](this);\n return this;\n };\n });\n\n zepto.Z.prototype = Z.prototype = $.fn;\n\n // Export internal API functions in the `$.zepto` namespace\n zepto.uniq = uniq;\n zepto.deserializeValue = deserializeValue;\n $.zepto = zepto;\n\n return $;\n })();\n\n window.Zepto = Zepto;\n window.$ === undefined && (window.$ = Zepto)\n\n ;\n (function($) {\n var _zid = 1,\n undefined,\n slice = Array.prototype.slice,\n isFunction = $.isFunction,\n isString = function(obj) { return typeof obj == 'string'; },\n handlers = {},\n specialEvents = {},\n focusinSupported = 'onfocusin' in window,\n focus = { focus: 'focusin', blur: 'focusout' },\n hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' };\n\n specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = 'MouseEvents';\n\n function zid(element) {\n return element._zid || (element._zid = _zid++);\n }\n\n function findHandlers(element, event, fn, selector) {\n event = parse(event);\n if (event.ns) { var matcher = matcherFor(event.ns); }\n return (handlers[zid(element)] || []).filter(function(handler) {\n return handler &&\n (!event.e || handler.e == event.e) &&\n (!event.ns || matcher.test(handler.ns)) &&\n (!fn || zid(handler.fn) === zid(fn)) &&\n (!selector || handler.sel == selector);\n });\n }\n\n function parse(event) {\n var parts = ('' + event).split('.');\n return { e: parts[0], ns: parts.slice(1).sort().join(' ') };\n }\n\n function matcherFor(ns) {\n return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)');\n }\n\n function eventCapture(handler, captureSetting) {\n return handler.del &&\n (!focusinSupported && (handler.e in focus)) ||\n !!captureSetting;\n }\n\n function realEvent(type) {\n return hover[type] || (focusinSupported && focus[type]) || type;\n }\n\n function add(element, events, fn, data, selector, delegator, capture) {\n var id = zid(element),\n set = (handlers[id] || (handlers[id] = []));\n events.split(/\\s/).forEach(function(event) {\n if (event == 'ready') { return $(document).ready(fn); }\n var handler = parse(event);\n handler.fn = fn;\n handler.sel = selector;\n // emulate mouseenter, mouseleave\n if (handler.e in hover) {\n fn = function(e) {\n var related = e.relatedTarget;\n if (!related || (related !== this && !$.contains(this, related))) { return handler.fn.apply(this, arguments); }\n };\n }\n handler.del = delegator;\n var callback = delegator || fn;\n handler.proxy = function(e) {\n e = compatible(e);\n if (e.isImmediatePropagationStopped()) { return; }\n e.data = data;\n var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args));\n if (result === false) { e.preventDefault(), e.stopPropagation(); }\n return result;\n };\n handler.i = set.length;\n set.push(handler);\n if ('addEventListener' in element) { element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture)); }\n });\n }\n\n function remove(element, events, fn, selector, capture) {\n var id = zid(element);\n (events || '').split(/\\s/).forEach(function(event) {\n findHandlers(element, event, fn, selector).forEach(function(handler) {\n delete handlers[id][handler.i];\n if ('removeEventListener' in element) { element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture)); }\n });\n });\n }\n\n $.event = { add: add, remove: remove };\n\n $.proxy = function(fn, context) {\n var args = (2 in arguments) && slice.call(arguments, 2);\n if (isFunction(fn)) {\n var proxyFn = function() { return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments); };\n proxyFn._zid = zid(fn);\n return proxyFn;\n } else if (isString(context)) {\n if (args) {\n args.unshift(fn[context], fn);\n return $.proxy.apply(null, args);\n } else {\n return $.proxy(fn[context], fn);\n }\n } else {\n throw new TypeError('expected function');\n }\n };\n\n $.fn.bind = function(event, data, callback) {\n return this.on(event, data, callback);\n };\n $.fn.unbind = function(event, callback) {\n return this.off(event, callback);\n };\n $.fn.one = function(event, selector, data, callback) {\n return this.on(event, selector, data, callback, 1);\n };\n\n var returnTrue = function() { return true; },\n returnFalse = function() { return false; },\n ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,\n eventMethods = {\n preventDefault: 'isDefaultPrevented',\n stopImmediatePropagation: 'isImmediatePropagationStopped',\n stopPropagation: 'isPropagationStopped'\n };\n\n function compatible(event, source) {\n if (source || !event.isDefaultPrevented) {\n source || (source = event);\n\n $.each(eventMethods, function(name, predicate) {\n var sourceMethod = source[name];\n event[name] = function() {\n this[predicate] = returnTrue;\n return sourceMethod && sourceMethod.apply(source, arguments);\n };\n event[predicate] = returnFalse;\n });\n\n // https://github.com/madrobby/zepto/pull/1218\n try {\n event.timeStamp || (event.timeStamp = Date.now());\n } catch (ignored) {\n // empty\n }\n\n if (source.defaultPrevented !== undefined ? source.defaultPrevented :\n 'returnValue' in source ? source.returnValue === false :\n source.getPreventDefault && source.getPreventDefault()) { event.isDefaultPrevented = returnTrue; }\n }\n return event;\n }\n\n function createProxy(event) {\n var key, proxy = { originalEvent: event };\n for (key in event) { if (!ignoreProperties.test(key) && event[key] !== undefined) { proxy[key] = event[key]; } }\n\n return compatible(proxy, event);\n }\n\n $.fn.delegate = function(selector, event, callback) {\n return this.on(event, selector, callback);\n };\n $.fn.undelegate = function(selector, event, callback) {\n return this.off(event, selector, callback);\n };\n\n $.fn.live = function(event, callback) {\n $(document.body).delegate(this.selector, event, callback);\n return this;\n };\n $.fn.die = function(event, callback) {\n $(document.body).undelegate(this.selector, event, callback);\n return this;\n };\n\n $.fn.on = function(event, selector, data, callback, one) {\n var autoRemove, delegator, $this = this;\n if (event && !isString(event)) {\n $.each(event, function(type, fn) {\n $this.on(type, selector, data, fn, one);\n });\n return $this;\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false) { callback = data, data = selector, selector = undefined; }\n if (callback === undefined || data === false) { callback = data, data = undefined; }\n\n if (callback === false) { callback = returnFalse; }\n\n return $this.each(function(_, element) {\n if (one) {\n autoRemove = function(e) {\n remove(element, e.type, callback);\n return callback.apply(this, arguments);\n };\n }\n\n if (selector) {\n delegator = function(e) {\n var evt, match = $(e.target).closest(selector, element).get(0);\n if (match && match !== element) {\n evt = $.extend(createProxy(e), { currentTarget: match, liveFired: element });\n return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1)));\n }\n };\n }\n\n add(element, event, callback, data, selector, delegator || autoRemove);\n });\n };\n $.fn.off = function(event, selector, callback) {\n var $this = this;\n if (event && !isString(event)) {\n $.each(event, function(type, fn) {\n $this.off(type, selector, fn);\n });\n return $this;\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false) { callback = selector, selector = undefined; }\n\n if (callback === false) { callback = returnFalse; }\n\n return $this.each(function() {\n remove(this, event, callback, selector);\n });\n };\n\n $.fn.trigger = function(event, args) {\n event = (isString(event) || $.isPlainObject(event)) ? $.Event(event) : compatible(event);\n event._args = args;\n return this.each(function() {\n // handle focus(), blur() by calling them directly\n if (event.type in focus && typeof this[event.type] == 'function') { this[event.type](); }\n // items in the collection might not be DOM elements\n else if ('dispatchEvent' in this) { this.dispatchEvent(event); } else { $(this).triggerHandler(event, args); }\n });\n };\n\n // triggers event handlers on current element just as if an event occurred,\n // doesn't trigger an actual event, doesn't bubble\n $.fn.triggerHandler = function(event, args) {\n var e, result;\n this.each(function(i, element) {\n e = createProxy(isString(event) ? $.Event(event) : event);\n e._args = args;\n e.target = element;\n $.each(findHandlers(element, event.type || event), function(i, handler) {\n result = handler.proxy(e);\n if (e.isImmediatePropagationStopped()) { return false; }\n });\n });\n return result;\n }\n\n // shortcut methods for `.bind(event, fn)` for each event type\n ;\n ('focusin focusout focus blur load resize scroll unload click dblclick ' +\n 'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave ' +\n 'change select keydown keypress keyup error').split(' ').forEach(function(event) {\n $.fn[event] = function(callback) {\n return (0 in arguments) ?\n this.bind(event, callback) :\n this.trigger(event);\n };\n });\n\n $.Event = function(type, props) {\n if (!isString(type)) { props = type, type = props.type; }\n var event = document.createEvent(specialEvents[type] || 'Events'),\n bubbles = true;\n if (props) { for (var name in props) {\n (name == 'bubbles') ? (bubbles = !!props[name]) : (event[name] = props[name]); } }\n event.initEvent(type, bubbles, true);\n return compatible(event);\n };\n\n })(Zepto)\n\n ;\n (function($) {\n var jsonpID = +new Date(),\n document = window.document,\n key,\n name,\n rscript = /)<[^<]*)*<\\/script>/gi,\n scriptTypeRE = /^(?:text|application)\\/javascript/i,\n xmlTypeRE = /^(?:text|application)\\/xml/i,\n jsonType = 'application/json',\n htmlType = 'text/html',\n blankRE = /^\\s*$/,\n originAnchor = document.createElement('a');\n\n originAnchor.href = window.location.href;\n\n // trigger a custom event and return false if it was cancelled\n function triggerAndReturn(context, eventName, data) {\n var event = $.Event(eventName);\n $(context).trigger(event, data);\n return !event.isDefaultPrevented();\n }\n\n // trigger an Ajax \"global\" event\n function triggerGlobal(settings, context, eventName, data) {\n if (settings.global) { return triggerAndReturn(context || document, eventName, data); }\n }\n\n // Number of active Ajax requests\n $.active = 0;\n\n function ajaxStart(settings) {\n if (settings.global && $.active++ === 0) { triggerGlobal(settings, null, 'ajaxStart'); }\n }\n\n function ajaxStop(settings) {\n if (settings.global && !(--$.active)) { triggerGlobal(settings, null, 'ajaxStop'); }\n }\n\n // triggers an extra global event \"ajaxBeforeSend\" that's like \"ajaxSend\" but cancelable\n function ajaxBeforeSend(xhr, settings) {\n var context = settings.context;\n if (settings.beforeSend.call(context, xhr, settings) === false ||\n triggerGlobal(settings, context, 'ajaxBeforeSend', [xhr, settings]) === false) { return false; }\n\n triggerGlobal(settings, context, 'ajaxSend', [xhr, settings]);\n }\n\n function ajaxSuccess(data, xhr, settings, deferred) {\n var context = settings.context,\n status = 'success';\n settings.success.call(context, data, status, xhr);\n if (deferred) { deferred.resolveWith(context, [data, status, xhr]); }\n triggerGlobal(settings, context, 'ajaxSuccess', [xhr, settings, data]);\n ajaxComplete(status, xhr, settings);\n }\n // type: \"timeout\", \"error\", \"abort\", \"parsererror\"\n function ajaxError(error, type, xhr, settings, deferred) {\n var context = settings.context;\n settings.error.call(context, xhr, type, error);\n if (deferred) { deferred.rejectWith(context, [xhr, type, error]); }\n triggerGlobal(settings, context, 'ajaxError', [xhr, settings, error || type]);\n ajaxComplete(type, xhr, settings);\n }\n // status: \"success\", \"notmodified\", \"error\", \"timeout\", \"abort\", \"parsererror\"\n function ajaxComplete(status, xhr, settings) {\n var context = settings.context;\n settings.complete.call(context, xhr, status);\n triggerGlobal(settings, context, 'ajaxComplete', [xhr, settings]);\n ajaxStop(settings);\n }\n\n function ajaxDataFilter(data, type, settings) {\n if (settings.dataFilter == empty) { return data; }\n var context = settings.context;\n return settings.dataFilter.call(context, data, type);\n }\n\n // Empty function, used as default callback\n function empty() {}\n\n $.ajaxJSONP = function(options, deferred) {\n if (!('type' in options)) { return $.ajax(options); }\n\n var _callbackName = options.jsonpCallback,\n callbackName = ($.isFunction(_callbackName) ?\n _callbackName() : _callbackName) || ('Zepto' + (jsonpID++)),\n script = document.createElement('script'),\n originalCallback = window[callbackName],\n responseData,\n abort = function(errorType) {\n $(script).triggerHandler('error', errorType || 'abort');\n },\n xhr = { abort: abort },\n abortTimeout;\n\n if (deferred) { deferred.promise(xhr); }\n\n $(script).on('load error', function(e, errorType) {\n clearTimeout(abortTimeout);\n $(script).off().remove();\n\n if (e.type == 'error' || !responseData) {\n ajaxError(null, errorType || 'error', xhr, options, deferred);\n } else {\n ajaxSuccess(responseData[0], xhr, options, deferred);\n }\n\n window[callbackName] = originalCallback;\n if (responseData && $.isFunction(originalCallback)) { originalCallback(responseData[0]); }\n\n originalCallback = responseData = undefined;\n });\n\n if (ajaxBeforeSend(xhr, options) === false) {\n abort('abort');\n return xhr;\n }\n\n window[callbackName] = function() {\n responseData = arguments;\n };\n\n script.src = options.url.replace(/\\?(.+)=\\?/, '?$1=' + callbackName);\n document.head.appendChild(script);\n\n if (options.timeout > 0) {\n abortTimeout = setTimeout(function() {\n abort('timeout');\n }, options.timeout);\n }\n\n return xhr;\n };\n\n $.ajaxSettings = {\n // Default type of request\n type: 'GET',\n // Callback that is executed before request\n beforeSend: empty,\n // Callback that is executed if the request succeeds\n success: empty,\n // Callback that is executed the the server drops error\n error: empty,\n // Callback that is executed on request complete (both: error and success)\n complete: empty,\n // The context for the callbacks\n context: null,\n // Whether to trigger \"global\" Ajax events\n global: true,\n // Transport\n xhr: function() {\n return new window.XMLHttpRequest();\n },\n // MIME types mapping\n // IIS returns Javascript as \"application/x-javascript\"\n accepts: {\n script: 'text/javascript, application/javascript, application/x-javascript',\n json: jsonType,\n xml: 'application/xml, text/xml',\n html: htmlType,\n text: 'text/plain'\n },\n // Whether the request is to another domain\n crossDomain: false,\n // Default timeout\n timeout: 0,\n // Whether data should be serialized to string\n processData: true,\n // Whether the browser should be allowed to cache GET responses\n cache: true,\n // Used to handle the raw response data of XMLHttpRequest.\n // This is a pre-filtering function to sanitize the response.\n // The sanitized response should be returned\n dataFilter: empty\n };\n\n function mimeToDataType(mime) {\n if (mime) { mime = mime.split(';', 2)[0]; }\n return mime && (mime == htmlType ? 'html' :\n mime == jsonType ? 'json' :\n scriptTypeRE.test(mime) ? 'script' :\n xmlTypeRE.test(mime) && 'xml') || 'text';\n }\n\n function appendQuery(url, query) {\n if (query == '') { return url; }\n return (url + '&' + query).replace(/[&?]{1,2}/, '?');\n }\n\n // serialize payload and append it to the URL for GET requests\n function serializeData(options) {\n if (options.processData && options.data && $.type(options.data) != 'string') { options.data = $.param(options.data, options.traditional); }\n if (options.data && (!options.type || options.type.toUpperCase() == 'GET' || 'jsonp' == options.dataType)) { options.url = appendQuery(options.url, options.data), options.data = undefined; }\n }\n\n $.ajax = function(options) {\n var settings = $.extend({}, options || {}),\n deferred = $.Deferred && $.Deferred(),\n urlAnchor, hashIndex;\n for (key in $.ajaxSettings) { if (settings[key] === undefined) { settings[key] = $.ajaxSettings[key]; } }\n\n ajaxStart(settings);\n\n if (!settings.crossDomain) {\n urlAnchor = document.createElement('a');\n urlAnchor.href = settings.url;\n // cleans up URL for .href (IE only), see https://github.com/madrobby/zepto/pull/1049\n urlAnchor.href = urlAnchor.href;\n settings.crossDomain = (originAnchor.protocol + '//' + originAnchor.host) !== (urlAnchor.protocol + '//' + urlAnchor.host);\n }\n\n if (!settings.url) { settings.url = window.location.toString(); }\n if ((hashIndex = settings.url.indexOf('#')) > -1) { settings.url = settings.url.slice(0, hashIndex); }\n serializeData(settings);\n\n var dataType = settings.dataType,\n hasPlaceholder = /\\?.+=\\?/.test(settings.url);\n if (hasPlaceholder) { dataType = 'jsonp'; }\n\n if (settings.cache === false || (\n (!options || options.cache !== true) &&\n ('script' == dataType || 'jsonp' == dataType)\n )) { settings.url = appendQuery(settings.url, '_=' + Date.now()); }\n\n if ('jsonp' == dataType) {\n if (!hasPlaceholder) {\n settings.url = appendQuery(settings.url,\n settings.jsonp ? (settings.jsonp + '=?') : settings.jsonp === false ? '' : 'callback=?');\n }\n return $.ajaxJSONP(settings, deferred);\n }\n\n var mime = settings.accepts[dataType],\n headers = {},\n setHeader = function(name, value) { headers[name.toLowerCase()] = [name, value]; },\n protocol = /^([\\w-]+:)\\/\\//.test(settings.url) ? RegExp.$1 : window.location.protocol,\n xhr = settings.xhr(),\n nativeSetHeader = xhr.setRequestHeader,\n abortTimeout;\n\n if (deferred) { deferred.promise(xhr); }\n\n if (!settings.crossDomain) { setHeader('X-Requested-With', 'XMLHttpRequest'); }\n setHeader('Accept', mime || '*/*');\n if (mime = settings.mimeType || mime) {\n if (mime.indexOf(',') > -1) { mime = mime.split(',', 2)[0]; }\n xhr.overrideMimeType && xhr.overrideMimeType(mime);\n }\n if (settings.contentType || (settings.contentType !== false && settings.data && settings.type.toUpperCase() != 'GET')) { setHeader('Content-Type', settings.contentType || 'application/x-www-form-urlencoded'); }\n\n if (settings.headers) { for (name in settings.headers) { setHeader(name, settings.headers[name]); } }\n xhr.setRequestHeader = setHeader;\n\n xhr.onreadystatechange = function() {\n if (xhr.readyState == 4) {\n xhr.onreadystatechange = empty;\n clearTimeout(abortTimeout);\n var result, error = false;\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 || (xhr.status == 0 && protocol == 'file:')) {\n dataType = dataType || mimeToDataType(settings.mimeType || xhr.getResponseHeader('content-type'));\n\n if (xhr.responseType == 'arraybuffer' || xhr.responseType == 'blob') { result = xhr.response; } else {\n result = xhr.responseText;\n\n try {\n // http://perfectionkills.com/global-eval-what-are-the-options/\n // sanitize response accordingly if data filter callback provided\n result = ajaxDataFilter(result, dataType, settings);\n if (dataType == 'script') {\n (1, eval)(result); } else if (dataType == 'xml') { result = xhr.responseXML; } else if (dataType == 'json') { result = blankRE.test(result) ? null : $.parseJSON(result); }\n } catch (e) { error = e; }\n\n if (error) { return ajaxError(error, 'parsererror', xhr, settings, deferred); }\n }\n\n ajaxSuccess(result, xhr, settings, deferred);\n } else {\n ajaxError(xhr.statusText || null, xhr.status ? 'error' : 'abort', xhr, settings, deferred);\n }\n }\n };\n\n if (ajaxBeforeSend(xhr, settings) === false) {\n xhr.abort();\n ajaxError(null, 'abort', xhr, settings, deferred);\n return xhr;\n }\n\n var async = 'async' in settings ? settings.async : true;\n xhr.open(settings.type, settings.url, async, settings.username, settings.password);\n\n if (settings.xhrFields) { for (name in settings.xhrFields) { xhr[name] = settings.xhrFields[name]; } }\n\n for (name in headers) { nativeSetHeader.apply(xhr, headers[name]); }\n\n if (settings.timeout > 0) {\n abortTimeout = setTimeout(function() {\n xhr.onreadystatechange = empty;\n xhr.abort();\n ajaxError(null, 'timeout', xhr, settings, deferred);\n }, settings.timeout);\n }\n\n // avoid sending empty string (#319)\n xhr.send(settings.data ? settings.data : null);\n return xhr;\n };\n\n // handle optional data/success arguments\n function parseArguments(url, data, success, dataType) {\n if ($.isFunction(data)) { dataType = success, success = data, data = undefined; }\n if (!$.isFunction(success)) { dataType = success, success = undefined; }\n return {\n url: url,\n data: data,\n success: success,\n dataType: dataType\n };\n }\n\n $.get = function( /* url, data, success, dataType */ ) {\n return $.ajax(parseArguments.apply(null, arguments));\n };\n\n $.post = function( /* url, data, success, dataType */ ) {\n var options = parseArguments.apply(null, arguments);\n options.type = 'POST';\n return $.ajax(options);\n };\n\n $.getJSON = function( /* url, data, success */ ) {\n var options = parseArguments.apply(null, arguments);\n options.dataType = 'json';\n return $.ajax(options);\n };\n\n $.fn.load = function(url, data, success) {\n if (!this.length) { return this; }\n var self = this,\n parts = url.split(/\\s/),\n selector,\n options = parseArguments(url, data, success),\n callback = options.success;\n if (parts.length > 1) { options.url = parts[0], selector = parts[1]; }\n options.success = function(response) {\n self.html(selector ?\n $('
').html(response.replace(rscript, '')).find(selector) :\n response);\n callback && callback.apply(self, arguments);\n };\n $.ajax(options);\n return this;\n };\n\n var escape = encodeURIComponent;\n\n function serialize(params, obj, traditional, scope) {\n var type, array = $.isArray(obj),\n hash = $.isPlainObject(obj);\n $.each(obj, function(key, value) {\n type = $.type(value);\n if (scope) {\n key = traditional ? scope :\n scope + '[' + (hash || type == 'object' || type == 'array' ? key : '') + ']';\n }\n // handle data in serializeArray() format\n if (!scope && array) { params.add(value.name, value.value); }\n // recurse into nested objects\n else if (type == 'array' || (!traditional && type == 'object')) { serialize(params, value, traditional, key); } else { params.add(key, value); }\n });\n }\n\n $.param = function(obj, traditional) {\n var params = [];\n params.add = function(key, value) {\n if ($.isFunction(value)) { value = value(); }\n if (value == null) { value = ''; }\n this.push(escape(key) + '=' + escape(value));\n };\n serialize(params, obj, traditional);\n return params.join('&').replace(/%20/g, '+');\n };\n })(Zepto)\n\n ;\n (function($) {\n $.fn.serializeArray = function() {\n var name, type, result = [],\n add = function(value) {\n if (value.forEach) { return value.forEach(add); }\n result.push({ name: name, value: value });\n };\n if (this[0]) {\n $.each(this[0].elements, function(_, field) {\n type = field.type, name = field.name;\n if (name && field.nodeName.toLowerCase() != 'fieldset' &&\n !field.disabled && type != 'submit' && type != 'reset' && type != 'button' && type != 'file' &&\n ((type != 'radio' && type != 'checkbox') || field.checked)) { add($(field).val()); }\n });\n }\n return result;\n };\n\n $.fn.serialize = function() {\n var result = [];\n this.serializeArray().forEach(function(elm) {\n result.push(encodeURIComponent(elm.name) + '=' + encodeURIComponent(elm.value));\n });\n return result.join('&');\n };\n\n $.fn.submit = function(callback) {\n if (0 in arguments) { this.bind('submit', callback); } else if (this.length) {\n var event = $.Event('submit');\n this.eq(0).trigger(event);\n if (!event.isDefaultPrevented()) { this.get(0).submit(); }\n }\n return this;\n };\n\n })(Zepto)\n\n ;\n (function() {\n // getComputedStyle shouldn't freak out when called\n // without a valid element as argument\n try {\n getComputedStyle(undefined);\n } catch (e) {\n var nativeGetComputedStyle = getComputedStyle;\n window.getComputedStyle = function(element, pseudoElement) {\n try {\n return nativeGetComputedStyle(element, pseudoElement);\n } catch (e) {\n return null;\n }\n };\n }\n })();\n return Zepto;\n}));\n/* eslint-enable */\n"],"sourceRoot":""}