neko-ui 1.0.5 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/es/back-top/index.global.less +2 -2
  2. package/es/back-top/index.js +1 -1
  3. package/es/back-top/index.js.map +1 -1
  4. package/es/button/index.d.ts +2 -0
  5. package/es/button/index.global.less +20 -15
  6. package/es/button/index.js +1 -1
  7. package/es/button/index.js.map +1 -1
  8. package/es/index.d.ts +2 -0
  9. package/es/index.js +1 -1
  10. package/es/index.js.map +1 -1
  11. package/es/input/index.d.ts +9 -0
  12. package/es/input/index.global.less +58 -0
  13. package/es/input/index.js +2 -0
  14. package/es/input/index.js.map +1 -0
  15. package/es/markdown/index.js +1 -1
  16. package/es/markdown/index.js.map +1 -1
  17. package/es/markdown/markdown-util.js +1 -1
  18. package/es/markdown/markdown-util.js.map +1 -1
  19. package/es/marquee/index.global.less +41 -0
  20. package/es/tooltip/index.d.ts +7 -0
  21. package/es/tooltip/index.global.less +39 -0
  22. package/es/tooltip/index.js +2 -0
  23. package/es/tooltip/index.js.map +1 -0
  24. package/es/use-theme/index.js +1 -1
  25. package/es/use-theme/index.js.map +1 -1
  26. package/es/utils/document.d.ts +0 -10
  27. package/es/utils/document.js +1 -1
  28. package/es/utils/document.js.map +1 -1
  29. package/es/utils/download.d.ts +0 -1
  30. package/es/utils/download.js +1 -1
  31. package/es/utils/download.js.map +1 -1
  32. package/es/utils/index.d.ts +2 -2
  33. package/es/utils/index.js +1 -1
  34. package/es/utils/index.js.map +1 -1
  35. package/es/utils/type.d.ts +2 -0
  36. package/es/utils/type.js +1 -1
  37. package/es/utils/type.js.map +1 -1
  38. package/lib/avatar/index.global.css +0 -0
  39. package/lib/avatar/index.js +1 -1
  40. package/lib/back-top/index.global.css +0 -0
  41. package/lib/back-top/index.global.less +2 -2
  42. package/lib/back-top/index.js +1 -1
  43. package/lib/back-top/index.js.map +1 -1
  44. package/lib/button/index.d.ts +2 -0
  45. package/lib/button/index.global.css +0 -0
  46. package/lib/button/index.global.less +20 -15
  47. package/lib/button/index.js +1 -1
  48. package/lib/button/index.js.map +1 -1
  49. package/lib/capture-screen/index.global.css +0 -0
  50. package/lib/capture-screen/index.js +1 -1
  51. package/lib/cron-editor/index.global.css +0 -0
  52. package/lib/highlight-text/index.global.css +0 -0
  53. package/lib/highlight-text/index.js +1 -1
  54. package/lib/index.d.ts +2 -0
  55. package/lib/index.js +1 -1
  56. package/lib/index.js.map +1 -1
  57. package/lib/input/index.d.ts +9 -0
  58. package/lib/input/index.global.css +0 -0
  59. package/lib/input/index.global.less +58 -0
  60. package/lib/input/index.js +2 -0
  61. package/lib/input/index.js.map +1 -0
  62. package/lib/markdown/copy.css +0 -0
  63. package/lib/markdown/icon.css +0 -0
  64. package/lib/markdown/index.global.css +0 -0
  65. package/lib/markdown/index.js +1 -1
  66. package/lib/markdown/index.js.map +1 -1
  67. package/lib/markdown/markdown-util.js +1 -1
  68. package/lib/markdown/markdown-util.js.map +1 -1
  69. package/lib/markdown/md.css +0 -0
  70. package/lib/markdown/pre-code.css +0 -0
  71. package/lib/markdown/pre-viewer.css +0 -0
  72. package/lib/markdown/prism.js +1 -1
  73. package/lib/markdown/vars.css +0 -0
  74. package/lib/marquee/index.global.css +0 -0
  75. package/lib/marquee/index.global.less +41 -0
  76. package/lib/tag/index.global.css +0 -0
  77. package/lib/tag/index.js +1 -1
  78. package/lib/tooltip/index.d.ts +7 -0
  79. package/lib/tooltip/index.global.css +0 -0
  80. package/lib/tooltip/index.global.less +39 -0
  81. package/lib/tooltip/index.js +2 -0
  82. package/lib/tooltip/index.js.map +1 -0
  83. package/lib/use-theme/index.js +1 -1
  84. package/lib/use-theme/index.js.map +1 -1
  85. package/lib/utils/classname.js +1 -1
  86. package/lib/utils/document.d.ts +0 -10
  87. package/lib/utils/document.js +1 -1
  88. package/lib/utils/document.js.map +1 -1
  89. package/lib/utils/download.d.ts +0 -1
  90. package/lib/utils/download.js +1 -1
  91. package/lib/utils/download.js.map +1 -1
  92. package/lib/utils/index.d.ts +2 -2
  93. package/lib/utils/index.js +1 -1
  94. package/lib/utils/index.js.map +1 -1
  95. package/lib/utils/type.d.ts +2 -0
  96. package/lib/utils/type.js +1 -1
  97. package/lib/utils/type.js.map +1 -1
  98. package/lib/variables.css +0 -0
  99. package/lib/wave-circle/index.global.css +0 -0
  100. package/lib/wave-circle/index.js +1 -1
  101. package/package.json +8 -4
@@ -2,7 +2,7 @@
2
2
 
3
3
  :root {
4
4
  --back-top-color: #fff;
5
- --back-top-bg: var(--text-color-secondary, @text-color-secondary);
5
+ --back-top-bg: var(--text-color-secondary);
6
6
  --back-top-hover-bg: var(--text-color, @text-color);
7
7
  }
8
8
 
@@ -45,7 +45,7 @@
45
45
  }
46
46
  }
47
47
 
48
- .@{prefix-cls}-out {
48
+ .@{prefix-cls}-back-top-out {
49
49
  animation: back-top-fade-out 1s forwards;
50
50
  }
51
51
 
@@ -1,2 +1,2 @@
1
- function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};return _extends.apply(this,arguments)}function _iterableToArrayLimit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key]}}return target}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key]}return target}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}import React,{memo,useCallback,useEffect,useMemo,useRef,useState}from"react";import{classNames,getMaxZindex,getPrefixCls,getScrollTop,isEqual,isFunction}from"../utils";import"./index.global.less";var BackTop=function(_param){var _target=_param.target,target=_target===void 0?function(){return window}:_target,_visibilityHeight=_param.visibilityHeight,visibilityHeight=_visibilityHeight===void 0?400:_visibilityHeight,className=_param.className,props=_objectWithoutProperties(_param,["target","visibilityHeight","className"]);var ref=useRef(null);var ref1=_slicedToArray(useState(null),2),show=ref1[0],setShow=ref1[1];var ref2=_slicedToArray(useState(false),2),init=ref2[0],setInit=ref2[1];var handleScrollY=useCallback(function(){var scrollTop=0;var offsetHeight=0;if(isFunction(target)){var ele=target();if(ele){scrollTop=getScrollTop(ele);offsetHeight=ele.offsetHeight}ele=null}else{scrollTop=getScrollTop();offsetHeight=document.documentElement.offsetHeight||document.body.offsetHeight}var nextShow=scrollTop>offsetHeight/3||scrollTop>visibilityHeight;if(Boolean(show)!==nextShow){setShow(nextShow)}},[show,target,visibilityHeight]);var handleBackTop=useCallback(function(){var ref;(ref=target())===null||ref===void 0?void 0:ref.scrollTo({top:0,behavior:"smooth"})},[target]);React.useEffect(function(){var timer;var outing=show===false;if(show&&ref.current){ref.current.style.zIndex=getMaxZindex().toString()}if(init){if(outing){timer=setTimeout(function(){setShow(null);clearTimeout(timer)},1e3)}}else{if(outing){setShow(null)}setInit(true)}return function(){clearTimeout(timer)}},[init,show]);useEffect(function(){if(isFunction(target)){var ref;(ref=target())===null||ref===void 0?void 0:ref.addEventListener("scroll",handleScrollY,false)}return function(){if(isFunction(target)){var ref;(ref=target())===null||ref===void 0?void 0:ref.removeEventListener("scroll",handleScrollY,false)}}},[handleScrollY,target]);var cls=useMemo(function(){return classNames([getPrefixCls("back-top"),className,!show&&getPrefixCls("out")])},[className,show]);return show===null?null:React.createElement("div",_extends({},props,{ref:ref,className:cls,onClick:handleBackTop}))};export default memo(BackTop,isEqual);
1
+ function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};return _extends.apply(this,arguments)}function _iterableToArrayLimit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key]}}return target}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key]}return target}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}import React,{memo,useCallback,useEffect,useMemo,useRef,useState}from"react";import ReactDOM from"react-dom";import{classNames,getMaxZindex,getPrefixCls,getScrollTop,isEqual,isFunction}from"../utils";import"./index.global.less";var BackTop=function(_param){var _target=_param.target,target=_target===void 0?function(){return window}:_target,_visibilityHeight=_param.visibilityHeight,visibilityHeight=_visibilityHeight===void 0?400:_visibilityHeight,className=_param.className,props=_objectWithoutProperties(_param,["target","visibilityHeight","className"]);var ref=useRef(null);var ref1=_slicedToArray(useState(null),2),show=ref1[0],setShow=ref1[1];var handleScrollY=useCallback(function(){var scrollTop=0;var offsetHeight=0;if(isFunction(target)){var ele=target();if(ele){scrollTop=getScrollTop(ele);offsetHeight=ele.offsetHeight}}var nextShow=scrollTop>offsetHeight/3||scrollTop>visibilityHeight;if(Boolean(show)!==nextShow){setShow(nextShow)}},[show,target,visibilityHeight]);var handleBackTop=useCallback(function(){var ref;(ref=target())===null||ref===void 0?void 0:ref.scrollTo({top:0,behavior:"smooth"})},[target]);useEffect(function(){if(show&&ref.current){ref.current.style.zIndex=getMaxZindex().toString()}},[show]);useEffect(function(){if(isFunction(target)){var ref;(ref=target())===null||ref===void 0?void 0:ref.addEventListener("scroll",handleScrollY,false)}return function(){if(isFunction(target)){var ref;(ref=target())===null||ref===void 0?void 0:ref.removeEventListener("scroll",handleScrollY,false)}}},[handleScrollY,target]);var cls=useMemo(function(){return classNames([getPrefixCls("back-top"),className,!show&&getPrefixCls("back-top-out")])},[className,show]);var exit=useCallback(function(){if(show===false){setShow(null)}},[show]);var el=useMemo(function(){return React.createElement("div",_extends({},props,{ref:ref,onAnimationEnd:exit,className:cls,onClick:handleBackTop}))},[cls,exit,handleBackTop,props]);return show===null?null:ReactDOM.createPortal(el,target())};export default memo(BackTop,isEqual);
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/back-top/index.tsx"],"sourcesContent":["import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n classNames,\n getMaxZindex,\n getPrefixCls,\n getScrollTop,\n isEqual,\n isFunction,\n} from '../utils';\nimport './index.global.less';\n\nexport interface BackTopProps extends React.HTMLAttributes<HTMLDivElement> {\n /** 设置需要监听其滚动事件的元素,值为一个返回对应 DOM 元素的函数 */\n target?: () => HTMLElement;\n /** 滚动高度达到此参数值才出现 BackTop */\n visibilityHeight?: number;\n}\n\nconst BackTop: React.FC<BackTopProps> = ({\n target = () => window as unknown as HTMLElement,\n visibilityHeight = 400,\n className,\n ...props\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n const [show, setShow] = useState<boolean | null>(null);\n const [init, setInit] = useState<boolean>(false);\n const handleScrollY = useCallback(() => {\n let scrollTop: number | null = 0;\n let offsetHeight: number | null = 0;\n\n if (isFunction(target)) {\n let ele: HTMLElement | null = target();\n\n if (ele) {\n scrollTop = getScrollTop(ele);\n offsetHeight = ele.offsetHeight;\n }\n ele = null;\n } else {\n scrollTop = getScrollTop();\n offsetHeight = document.documentElement.offsetHeight || document.body.offsetHeight;\n }\n const nextShow: boolean = scrollTop > offsetHeight / 3 || scrollTop > visibilityHeight;\n\n if (Boolean(show) !== nextShow) {\n setShow(nextShow);\n }\n }, [show, target, visibilityHeight]);\n const handleBackTop = useCallback(() => {\n target()?.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n }, [target]);\n\n React.useEffect(() => {\n let timer: NodeJS.Timeout;\n const outing = show === false;\n\n if (show && ref.current) {\n ref.current.style.zIndex = getMaxZindex().toString();\n }\n if (init) {\n if (outing) {\n timer = setTimeout(() => {\n setShow(null);\n clearTimeout(timer);\n }, 1000);\n }\n } else {\n if (outing) {\n setShow(null);\n }\n setInit(true);\n }\n return () => {\n clearTimeout(timer);\n };\n }, [init, show]);\n useEffect(() => {\n if (isFunction(target)) {\n target()?.addEventListener('scroll', handleScrollY, false);\n }\n return () => {\n if (isFunction(target)) {\n target()?.removeEventListener('scroll', handleScrollY, false);\n }\n };\n }, [handleScrollY, target]);\n\n const cls = useMemo(\n () => classNames([getPrefixCls('back-top'), className, !show && getPrefixCls('out')]),\n [className, show]\n );\n\n return show === null ? null : (\n <div {...props} ref={ref} className={cls} onClick={handleBackTop} />\n );\n};\n\nexport default memo(BackTop, isEqual);\n"],"names":["React","memo","useCallback","useEffect","useMemo","useRef","useState","classNames","getMaxZindex","getPrefixCls","getScrollTop","isEqual","isFunction","BackTop","target","window","visibilityHeight","className","props","ref","show","setShow","init","setInit","handleScrollY","scrollTop","offsetHeight","ele","document","documentElement","body","nextShow","Boolean","handleBackTop","scrollTo","top","behavior","timer","outing","current","style","zIndex","toString","setTimeout","clearTimeout","addEventListener","removeEventListener","cls","div","onClick"],"mappings":"AAAA,mxEAAA,OAAOA,OAASC,IAAI,CAAEC,WAAW,CAAEC,SAAS,CAAEC,OAAO,CAAEC,MAAM,CAAEC,QAAQ,KAAQ,OAAQ,AACvF,QACEC,UAAU,CACVC,YAAY,CACZC,YAAY,CACZC,YAAY,CACZC,OAAO,CACPC,UAAU,KACL,UAAW,AAClB,OAAO,qBAAsB,CAS7B,IAAMC,QAAkC,gBAKlC,oBAJJC,OAAAA,wBAAS,kBAAMC,yCACfC,iBAAAA,4CAAmB,sBACnBC,iBAAAA,UACGC,uCAHHJ,SACAE,mBACAC,cAGA,IAAME,IAAMd,OAAuB,IAAI,EACvC,IAAwBC,oBAAAA,SAAyB,IAAI,KAA9Cc,KAAiBd,QAAXe,QAAWf,QACxB,IAAwBA,oBAAAA,SAAkB,KAAK,KAAxCgB,KAAiBhB,QAAXiB,QAAWjB,QACxB,IAAMkB,cAAgBtB,YAAY,UAAM,CACtC,IAAIuB,UAA2B,EAC/B,IAAIC,aAA8B,EAElC,GAAId,WAAWE,QAAS,CACtB,IAAIa,IAA0Bb,SAE9B,GAAIa,IAAK,CACPF,UAAYf,aAAaiB,KACzBD,aAAeC,IAAID,YAAY,AACjC,CAAC,AACDC,IAAM,IAAI,AACZ,KAAO,CACLF,UAAYf,eACZgB,aAAeE,SAASC,eAAe,CAACH,YAAY,EAAIE,SAASE,IAAI,CAACJ,YAAY,AACpF,CAAC,AACD,IAAMK,SAAoBN,UAAYC,aAAe,GAAKD,UAAYT,iBAEtE,GAAIgB,QAAQZ,QAAUW,SAAU,CAC9BV,QAAQU,SACV,CAAC,AACH,EAAG,CAACX,KAAMN,OAAQE,iBAAiB,EACnC,IAAMiB,cAAgB/B,YAAY,UAAM,KACtCY,GAAAA,EAAAA,IAAAA,kBAAAA,aAAAA,KAAAA,EAAAA,IAAUoB,SAAS,CACjBC,IAAK,EACLC,SAAU,QACZ,EACF,EAAG,CAACtB,OAAO,EAEXd,MAAMG,SAAS,CAAC,UAAM,CACpB,IAAIkC,MACJ,IAAMC,OAASlB,OAAS,KAAK,CAE7B,GAAIA,MAAQD,IAAIoB,OAAO,CAAE,CACvBpB,IAAIoB,OAAO,CAACC,KAAK,CAACC,MAAM,CAAGjC,eAAekC,QAAQ,EACpD,CAAC,AACD,GAAIpB,KAAM,CACR,GAAIgB,OAAQ,CACVD,MAAQM,WAAW,UAAM,CACvBtB,QAAQ,IAAI,EACZuB,aAAaP,MACf,EAAG,IACL,CAAC,AACH,KAAO,CACL,GAAIC,OAAQ,CACVjB,QAAQ,IAAI,CACd,CAAC,AACDE,QAAQ,IAAI,CACd,CAAC,AACD,OAAO,UAAM,CACXqB,aAAaP,MACf,CACF,EAAG,CAACf,KAAMF,KAAK,EACfjB,UAAU,UAAM,CACd,GAAIS,WAAWE,QAAS,KACtBA,GAAAA,EAAAA,IAAAA,kBAAAA,aAAAA,KAAAA,EAAAA,IAAU+B,iBAAiB,SAAUrB,cAAe,KAAK,CAC3D,CAAC,AACD,OAAO,UAAM,CACX,GAAIZ,WAAWE,QAAS,KACtBA,GAAAA,EAAAA,IAAAA,kBAAAA,aAAAA,KAAAA,EAAAA,IAAUgC,oBAAoB,SAAUtB,cAAe,KAAK,CAC9D,CAAC,AACH,CACF,EAAG,CAACA,cAAeV,OAAO,EAE1B,IAAMiC,IAAM3C,QACV,kBAAMG,WAAW,CAACE,aAAa,YAAaQ,UAAW,CAACG,MAAQX,aAAa,OAAO,GACpF,CAACQ,UAAWG,KAAK,EAGnB,OAAOA,OAAS,IAAI,CAAG,IAAI,CACzB,oBAAC4B,kBAAQ9B,OAAOC,IAAKA,IAAKF,UAAW8B,IAAKE,QAAShB,gBACpD,AACH,CAEA,gBAAehC,KAAKY,QAASF,QAAS"}
1
+ {"version":3,"sources":["../../components/back-top/index.tsx"],"sourcesContent":["import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport {\n classNames,\n getMaxZindex,\n getPrefixCls,\n getScrollTop,\n isEqual,\n isFunction,\n} from '../utils';\nimport './index.global.less';\n\nexport interface BackTopProps extends React.HTMLAttributes<HTMLDivElement> {\n /** 设置需要监听其滚动事件的元素,值为一个返回对应 DOM 元素的函数 */\n target?: () => HTMLElement;\n /** 滚动高度达到此参数值才出现 BackTop */\n visibilityHeight?: number;\n}\n\nconst BackTop: React.FC<BackTopProps> = ({\n target = () => window as unknown as HTMLElement,\n visibilityHeight = 400,\n className,\n ...props\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n const [show, setShow] = useState<boolean | null>(null);\n const handleScrollY = useCallback(() => {\n let scrollTop: number | null = 0;\n let offsetHeight: number | null = 0;\n\n if (isFunction(target)) {\n const ele: HTMLElement = target() as HTMLElement;\n\n if (ele) {\n scrollTop = getScrollTop(ele);\n offsetHeight = ele.offsetHeight;\n }\n }\n const nextShow: boolean = scrollTop > offsetHeight / 3 || scrollTop > visibilityHeight;\n\n if (Boolean(show) !== nextShow) {\n setShow(nextShow);\n }\n }, [show, target, visibilityHeight]);\n const handleBackTop = useCallback(() => {\n target()?.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n }, [target]);\n\n useEffect(() => {\n if (show && ref.current) {\n ref.current.style.zIndex = getMaxZindex().toString();\n }\n }, [show]);\n useEffect(() => {\n if (isFunction(target)) {\n target()?.addEventListener('scroll', handleScrollY, false);\n }\n return () => {\n if (isFunction(target)) {\n target()?.removeEventListener('scroll', handleScrollY, false);\n }\n };\n }, [handleScrollY, target]);\n\n const cls = useMemo(\n () => classNames([getPrefixCls('back-top'), className, !show && getPrefixCls('back-top-out')]),\n [className, show]\n );\n const exit = useCallback(() => {\n if (show === false) {\n setShow(null);\n }\n }, [show]);\n const el = useMemo(\n () => (\n <div {...props} ref={ref} onAnimationEnd={exit} className={cls} onClick={handleBackTop} />\n ),\n [cls, exit, handleBackTop, props]\n );\n\n return show === null ? null : ReactDOM.createPortal(el, target());\n};\n\nexport default memo(BackTop, isEqual);\n"],"names":["React","memo","useCallback","useEffect","useMemo","useRef","useState","ReactDOM","classNames","getMaxZindex","getPrefixCls","getScrollTop","isEqual","isFunction","BackTop","target","window","visibilityHeight","className","props","ref","show","setShow","handleScrollY","scrollTop","offsetHeight","ele","nextShow","Boolean","handleBackTop","scrollTo","top","behavior","current","style","zIndex","toString","addEventListener","removeEventListener","cls","exit","el","div","onAnimationEnd","onClick","createPortal"],"mappings":"AAAA,mxEAAA,OAAOA,OAASC,IAAI,CAAEC,WAAW,CAAEC,SAAS,CAAEC,OAAO,CAAEC,MAAM,CAAEC,QAAQ,KAAQ,OAAQ,AACvF,QAAOC,aAAc,WAAY,AACjC,QACEC,UAAU,CACVC,YAAY,CACZC,YAAY,CACZC,YAAY,CACZC,OAAO,CACPC,UAAU,KACL,UAAW,AAClB,OAAO,qBAAsB,CAS7B,IAAMC,QAAkC,gBAKlC,oBAJJC,OAAAA,wBAAS,kBAAMC,yCACfC,iBAAAA,4CAAmB,sBACnBC,iBAAAA,UACGC,uCAHHJ,SACAE,mBACAC,cAGA,IAAME,IAAMf,OAAuB,IAAI,EACvC,IAAwBC,oBAAAA,SAAyB,IAAI,KAA9Ce,KAAiBf,QAAXgB,QAAWhB,QACxB,IAAMiB,cAAgBrB,YAAY,UAAM,CACtC,IAAIsB,UAA2B,EAC/B,IAAIC,aAA8B,EAElC,GAAIZ,WAAWE,QAAS,CACtB,IAAMW,IAAmBX,SAEzB,GAAIW,IAAK,CACPF,UAAYb,aAAae,KACzBD,aAAeC,IAAID,YAAY,AACjC,CAAC,AACH,CAAC,AACD,IAAME,SAAoBH,UAAYC,aAAe,GAAKD,UAAYP,iBAEtE,GAAIW,QAAQP,QAAUM,SAAU,CAC9BL,QAAQK,SACV,CAAC,AACH,EAAG,CAACN,KAAMN,OAAQE,iBAAiB,EACnC,IAAMY,cAAgB3B,YAAY,UAAM,KACtCa,GAAAA,EAAAA,IAAAA,kBAAAA,aAAAA,KAAAA,EAAAA,IAAUe,SAAS,CACjBC,IAAK,EACLC,SAAU,QACZ,EACF,EAAG,CAACjB,OAAO,EAEXZ,UAAU,UAAM,CACd,GAAIkB,MAAQD,IAAIa,OAAO,CAAE,CACvBb,IAAIa,OAAO,CAACC,KAAK,CAACC,MAAM,CAAG1B,eAAe2B,QAAQ,EACpD,CAAC,AACH,EAAG,CAACf,KAAK,EACTlB,UAAU,UAAM,CACd,GAAIU,WAAWE,QAAS,KACtBA,GAAAA,EAAAA,IAAAA,kBAAAA,aAAAA,KAAAA,EAAAA,IAAUsB,iBAAiB,SAAUd,cAAe,KAAK,CAC3D,CAAC,AACD,OAAO,UAAM,CACX,GAAIV,WAAWE,QAAS,KACtBA,GAAAA,EAAAA,IAAAA,kBAAAA,aAAAA,KAAAA,EAAAA,IAAUuB,oBAAoB,SAAUf,cAAe,KAAK,CAC9D,CAAC,AACH,CACF,EAAG,CAACA,cAAeR,OAAO,EAE1B,IAAMwB,IAAMnC,QACV,kBAAMI,WAAW,CAACE,aAAa,YAAaQ,UAAW,CAACG,MAAQX,aAAa,gBAAgB,GAC7F,CAACQ,UAAWG,KAAK,EAEnB,IAAMmB,KAAOtC,YAAY,UAAM,CAC7B,GAAImB,OAAS,KAAK,CAAE,CAClBC,QAAQ,IAAI,CACd,CAAC,AACH,EAAG,CAACD,KAAK,EACT,IAAMoB,GAAKrC,QACT,kBACE,oBAACsC,kBAAQvB,OAAOC,IAAKA,IAAKuB,eAAgBH,KAAMtB,UAAWqB,IAAKK,QAASf,kBAE3E,CAACU,IAAKC,KAAMX,cAAeV,MAAM,EAGnC,OAAOE,OAAS,IAAI,CAAG,IAAI,CAAGd,SAASsC,YAAY,CAACJ,GAAI1B,SAAS,AACnE,CAEA,gBAAed,KAAKa,QAASF,QAAS"}
@@ -18,6 +18,8 @@ export interface ButtonProps extends React.HTMLAttributes<HTMLDivElement> {
18
18
  float?: boolean;
19
19
  /** 禁用按钮 */
20
20
  disabled?: boolean;
21
+ /** 链接按钮 */
22
+ link?: boolean;
21
23
  }
22
24
  declare const Button: React.FC<ButtonProps>;
23
25
  export default Button;
@@ -1,5 +1,5 @@
1
1
  .status-btn(@type) {
2
- --wave-shadow-color: ~'var(--@{type}-color)';
2
+ --wave-shadow-color: ~'var(--@{type}-color-outline)';
3
3
  color: ~'var(--@{type}-color)';
4
4
  background-color: ~'var(--@{type}-color-deprecated-bg)';
5
5
  border-color: ~'var(--@{type}-color-deprecated-border)';
@@ -17,7 +17,7 @@
17
17
  }
18
18
  }
19
19
  .status-fill-btn(@type) {
20
- --wave-shadow-color: ~'var(--@{type}-color)';
20
+ --wave-shadow-color: ~'var(--@{type}-color-outline)';
21
21
  color: #fff;
22
22
  background-color: ~'var(--@{type}-color)';
23
23
  border-color: ~'var(--@{type}-color)';
@@ -35,7 +35,8 @@
35
35
  }
36
36
  }
37
37
  .@{prefix-cls}-btn {
38
- --wave-shadow-color: var(--primary-color);
38
+ --wave-shadow-color: var(--primary-color-outline);
39
+ outline-offset: 4px;
39
40
  display: inline-block;
40
41
  width: fit-content;
41
42
  min-width: 22px;
@@ -64,10 +65,6 @@
64
65
  border-color: var(--primary-color-active);
65
66
  }
66
67
 
67
- &:last-child {
68
- margin-right: 0;
69
- }
70
-
71
68
  &-primary {
72
69
  .status-btn(primary);
73
70
  }
@@ -110,9 +107,9 @@
110
107
  border-style: dashed;
111
108
  }
112
109
 
113
- &-float {
110
+ &-float, &-link {
114
111
  background-color: transparent;
115
- border-color: transparent !important;
112
+ border-color: transparent;
116
113
 
117
114
  &:hover,
118
115
  &:focus {
@@ -124,6 +121,10 @@
124
121
  }
125
122
  }
126
123
 
124
+ &-link {
125
+ background-color: transparent !important;
126
+ }
127
+
127
128
  &-circle {
128
129
  min-width: 32px;
129
130
  min-height: 32px;
@@ -134,7 +135,7 @@
134
135
  border-radius: 50% !important;
135
136
  text-align: center;
136
137
 
137
- span {
138
+ .@{prefix-cls}-btn-text {
138
139
  display: block;
139
140
  white-space: nowrap;
140
141
  text-overflow: ellipsis;
@@ -146,8 +147,8 @@
146
147
  cursor: not-allowed;
147
148
  }
148
149
 
149
- &-without,
150
- &-infinite {
150
+ &-without:not(&-link),
151
+ &-infinite:not(&-link) {
151
152
  position: relative;
152
153
 
153
154
  &::before {
@@ -164,20 +165,24 @@
164
165
  }
165
166
  }
166
167
 
167
- &-infinite::before {
168
+ &-infinite:not(&-link)::before {
168
169
  opacity: 0.2;
169
170
  animation: wave-effect 0.3s cubic-bezier(1, 1, 1, 0.99) infinite;
170
171
  }
172
+
173
+ &:last-child {
174
+ margin-right: 0;
175
+ }
171
176
  }
172
177
 
173
178
  @keyframes wave-effect {
174
179
  0% {
175
- opacity: 0.3;
180
+ opacity: 1;
176
181
  box-shadow: 0 0 0 var(--wave-shadow-color);
177
182
  }
178
183
 
179
184
  25% {
180
- opacity: 0.2;
185
+ opacity: 1;
181
186
  box-shadow: 0 0 0 4px var(--wave-shadow-color);
182
187
  }
183
188
 
@@ -1,2 +1,2 @@
1
- function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};return _extends.apply(this,arguments)}function _iterableToArrayLimit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key]}}return target}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key]}return target}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}import React,{useCallback,useMemo,useRef}from"react";import{classNames,getPrefixCls,isFunction}from"../utils";import"./index.global.less";var Button=function(_param){var infinite=_param.infinite,ghost=_param.ghost,fill=_param.fill,circle=_param.circle,dashed=_param.dashed,float=_param.float,className=_param.className,children=_param.children,disabled=_param.disabled,onClick=_param.onClick,type=_param.type,props=_objectWithoutProperties(_param,["infinite","ghost","fill","circle","dashed","float","className","children","disabled","onClick","type"]);var ref=useRef(null);var ref1=_slicedToArray(React.useState(false),2),animating=ref1[0],setAnimating=ref1[1];var handleClick=useCallback(function(e){if(disabled)return;setAnimating(true);if(isFunction(onClick)){onClick(e)}},[disabled,onClick]);var cls=useMemo(function(){return classNames([getPrefixCls("btn"),type&&getPrefixCls("btn-".concat(type)),infinite&&getPrefixCls("btn-infinite"),ghost&&getPrefixCls("btn-ghost"),fill&&getPrefixCls("btn-fill"),circle&&getPrefixCls("btn-circle"),dashed&&getPrefixCls("btn-dashed"),float&&getPrefixCls("btn-float"),animating&&getPrefixCls("btn-without"),disabled&&getPrefixCls("btn-disabled"),className])},[type,infinite,ghost,fill,circle,dashed,float,animating,disabled,className]);var handleAnimationEnd=useCallback(function(){setAnimating(false)},[]);return React.createElement("div",_extends({},props,{className:cls,onClick:handleClick,onAnimationEnd:handleAnimationEnd,ref:ref}),React.createElement("span",null,children))};export default Button;
1
+ function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};return _extends.apply(this,arguments)}function _iterableToArrayLimit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key]}}return target}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key]}return target}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}import React,{useCallback,useMemo,useRef}from"react";import{classNames,getPrefixCls,isFunction}from"../utils";import"./index.global.less";var Button=function(_param){var infinite=_param.infinite,ghost=_param.ghost,fill=_param.fill,circle=_param.circle,dashed=_param.dashed,float=_param.float,link=_param.link,className=_param.className,children=_param.children,disabled=_param.disabled,onClick=_param.onClick,type=_param.type,props=_objectWithoutProperties(_param,["infinite","ghost","fill","circle","dashed","float","link","className","children","disabled","onClick","type"]);var ref=useRef(null);var ref1=_slicedToArray(React.useState(false),2),animating=ref1[0],setAnimating=ref1[1];var handleClick=useCallback(function(e){if(disabled)return;setAnimating(true);if(isFunction(onClick)){onClick(e)}},[disabled,onClick]);var cls=useMemo(function(){return classNames([getPrefixCls("btn"),type&&getPrefixCls("btn-".concat(type)),infinite&&getPrefixCls("btn-infinite"),ghost&&getPrefixCls("btn-ghost"),fill&&getPrefixCls("btn-fill"),circle&&getPrefixCls("btn-circle"),dashed&&getPrefixCls("btn-dashed"),float&&getPrefixCls("btn-float"),animating&&getPrefixCls("btn-without"),disabled&&getPrefixCls("btn-disabled"),link&&getPrefixCls("btn-link"),className])},[type,infinite,ghost,fill,circle,dashed,float,animating,disabled,link,className]);var handleAnimationEnd=useCallback(function(){setAnimating(false)},[]);return React.createElement("div",_extends({},props,{className:cls,onClick:handleClick,onAnimationEnd:handleAnimationEnd,ref:ref}),React.createElement("span",{className:getPrefixCls("btn-text")},children))};export default Button;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/button/index.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useRef } from 'react';\nimport { classNames, getPrefixCls, isFunction } from '../utils';\nimport './index.global.less';\n\nexport type ButtonType = 'success' | 'error' | 'danger' | 'primary' | 'warning' | 'default';\n\nexport interface ButtonProps extends React.HTMLAttributes<HTMLDivElement> {\n /** 按钮类型 */\n type?: ButtonType;\n /** 无限动画 */\n infinite?: boolean;\n /** 透明背景 */\n ghost?: boolean;\n /** 实色背景 */\n fill?: boolean;\n /** 圆形按钮 */\n circle?: boolean;\n /** 虚线按钮 */\n dashed?: boolean;\n /** 只有文字的按钮 */\n float?: boolean;\n /** 禁用按钮 */\n disabled?: boolean;\n}\n\nconst Button: React.FC<ButtonProps> = ({\n infinite,\n ghost,\n fill,\n circle,\n dashed,\n float,\n className,\n children,\n disabled,\n onClick,\n type,\n ...props\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n const [animating, setAnimating] = React.useState(false);\n\n const handleClick: React.MouseEventHandler<HTMLDivElement> = useCallback(\n (e) => {\n if (disabled) return;\n setAnimating(true);\n if (isFunction(onClick)) {\n onClick(e);\n }\n },\n [disabled, onClick]\n );\n const cls = useMemo(\n () =>\n classNames([\n getPrefixCls('btn'),\n type && getPrefixCls(`btn-${type}`),\n infinite && getPrefixCls('btn-infinite'),\n ghost && getPrefixCls('btn-ghost'),\n fill && getPrefixCls('btn-fill'),\n circle && getPrefixCls('btn-circle'),\n dashed && getPrefixCls('btn-dashed'),\n float && getPrefixCls('btn-float'),\n animating && getPrefixCls('btn-without'),\n disabled && getPrefixCls('btn-disabled'),\n className,\n ]),\n [type, infinite, ghost, fill, circle, dashed, float, animating, disabled, className]\n );\n const handleAnimationEnd = useCallback(() => {\n setAnimating(false);\n }, []);\n\n return (\n <div\n {...props}\n className={cls}\n onClick={handleClick}\n onAnimationEnd={handleAnimationEnd}\n ref={ref}\n >\n <span>{children}</span>\n </div>\n );\n};\n\nexport default Button;\n"],"names":["React","useCallback","useMemo","useRef","classNames","getPrefixCls","isFunction","Button","infinite","ghost","fill","circle","dashed","float","className","children","disabled","onClick","type","props","ref","useState","animating","setAnimating","handleClick","e","cls","handleAnimationEnd","div","onAnimationEnd","span"],"mappings":"AAAA,mxEAAA,OAAOA,OAASC,WAAW,CAAEC,OAAO,CAAEC,MAAM,KAAQ,OAAQ,AAC5D,QAASC,UAAU,CAAEC,YAAY,CAAEC,UAAU,KAAQ,UAAW,AAChE,OAAO,qBAAsB,CAuB7B,IAAMC,OAAgC,gBAahC,KAZJC,gBAAAA,SACAC,aAAAA,MACAC,YAAAA,KACAC,cAAAA,OACAC,cAAAA,OACAC,aAAAA,MACAC,iBAAAA,UACAC,gBAAAA,SACAC,gBAAAA,SACAC,eAAAA,QACAC,YAAAA,KACGC,uCAXHX,WACAC,QACAC,OACAC,SACAC,SACAC,QACAC,YACAC,WACAC,WACAC,UACAC,SAGA,IAAME,IAAMjB,OAAuB,IAAI,EACvC,IAAkCH,oBAAAA,MAAMqB,QAAQ,CAAC,KAAK,KAA/CC,UAA2BtB,QAAhBuB,aAAgBvB,QAElC,IAAMwB,YAAuDvB,YAC3D,SAACwB,EAAM,CACL,GAAIT,SAAU,MAAO,CACrBO,aAAa,IAAI,EACjB,GAAIjB,WAAWW,SAAU,CACvBA,QAAQQ,EACV,CAAC,AACH,EACA,CAACT,SAAUC,QAAQ,EAErB,IAAMS,IAAMxB,QACV,kBACEE,WAAW,CACTC,aAAa,OACba,MAAQb,aAAa,AAAC,OAAW,OAALa,OAC5BV,UAAYH,aAAa,gBACzBI,OAASJ,aAAa,aACtBK,MAAQL,aAAa,YACrBM,QAAUN,aAAa,cACvBO,QAAUP,aAAa,cACvBQ,OAASR,aAAa,aACtBiB,WAAajB,aAAa,eAC1BW,UAAYX,aAAa,gBACzBS,UACD,GACH,CAACI,KAAMV,SAAUC,MAAOC,KAAMC,OAAQC,OAAQC,MAAOS,UAAWN,SAAUF,UAAU,EAEtF,IAAMa,mBAAqB1B,YAAY,UAAM,CAC3CsB,aAAa,KAAK,CACpB,EAAG,EAAE,EAEL,OACE,oBAACK,kBACKT,OACJL,UAAWY,IACXT,QAASO,YACTK,eAAgBF,mBAChBP,IAAKA,MAEL,oBAACU,YAAMf,UAGb,CAEA,gBAAeR,MAAO"}
1
+ {"version":3,"sources":["../../components/button/index.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useRef } from 'react';\nimport { classNames, getPrefixCls, isFunction } from '../utils';\nimport './index.global.less';\n\nexport type ButtonType = 'success' | 'error' | 'danger' | 'primary' | 'warning' | 'default';\n\nexport interface ButtonProps extends React.HTMLAttributes<HTMLDivElement> {\n /** 按钮类型 */\n type?: ButtonType;\n /** 无限动画 */\n infinite?: boolean;\n /** 透明背景 */\n ghost?: boolean;\n /** 实色背景 */\n fill?: boolean;\n /** 圆形按钮 */\n circle?: boolean;\n /** 虚线按钮 */\n dashed?: boolean;\n /** 只有文字的按钮 */\n float?: boolean;\n /** 禁用按钮 */\n disabled?: boolean;\n /** 链接按钮 */\n link?: boolean;\n}\n\nconst Button: React.FC<ButtonProps> = ({\n infinite,\n ghost,\n fill,\n circle,\n dashed,\n float,\n link,\n className,\n children,\n disabled,\n onClick,\n type,\n ...props\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n const [animating, setAnimating] = React.useState(false);\n\n const handleClick: React.MouseEventHandler<HTMLDivElement> = useCallback(\n (e) => {\n if (disabled) return;\n setAnimating(true);\n if (isFunction(onClick)) {\n onClick(e);\n }\n },\n [disabled, onClick]\n );\n const cls = useMemo(\n () =>\n classNames([\n getPrefixCls('btn'),\n type && getPrefixCls(`btn-${type}`),\n infinite && getPrefixCls('btn-infinite'),\n ghost && getPrefixCls('btn-ghost'),\n fill && getPrefixCls('btn-fill'),\n circle && getPrefixCls('btn-circle'),\n dashed && getPrefixCls('btn-dashed'),\n float && getPrefixCls('btn-float'),\n animating && getPrefixCls('btn-without'),\n disabled && getPrefixCls('btn-disabled'),\n link && getPrefixCls('btn-link'),\n className,\n ]),\n [type, infinite, ghost, fill, circle, dashed, float, animating, disabled, link, className]\n );\n const handleAnimationEnd = useCallback(() => {\n setAnimating(false);\n }, []);\n\n return (\n <div\n {...props}\n className={cls}\n onClick={handleClick}\n onAnimationEnd={handleAnimationEnd}\n ref={ref}\n >\n <span className={getPrefixCls('btn-text')}>{children}</span>\n </div>\n );\n};\n\nexport default Button;\n"],"names":["React","useCallback","useMemo","useRef","classNames","getPrefixCls","isFunction","Button","infinite","ghost","fill","circle","dashed","float","link","className","children","disabled","onClick","type","props","ref","useState","animating","setAnimating","handleClick","e","cls","handleAnimationEnd","div","onAnimationEnd","span"],"mappings":"AAAA,mxEAAA,OAAOA,OAASC,WAAW,CAAEC,OAAO,CAAEC,MAAM,KAAQ,OAAQ,AAC5D,QAASC,UAAU,CAAEC,YAAY,CAAEC,UAAU,KAAQ,UAAW,AAChE,OAAO,qBAAsB,CAyB7B,IAAMC,OAAgC,gBAchC,KAbJC,gBAAAA,SACAC,aAAAA,MACAC,YAAAA,KACAC,cAAAA,OACAC,cAAAA,OACAC,aAAAA,MACAC,YAAAA,KACAC,iBAAAA,UACAC,gBAAAA,SACAC,gBAAAA,SACAC,eAAAA,QACAC,YAAAA,KACGC,uCAZHZ,WACAC,QACAC,OACAC,SACAC,SACAC,QACAC,OACAC,YACAC,WACAC,WACAC,UACAC,SAGA,IAAME,IAAMlB,OAAuB,IAAI,EACvC,IAAkCH,oBAAAA,MAAMsB,QAAQ,CAAC,KAAK,KAA/CC,UAA2BvB,QAAhBwB,aAAgBxB,QAElC,IAAMyB,YAAuDxB,YAC3D,SAACyB,EAAM,CACL,GAAIT,SAAU,MAAO,CACrBO,aAAa,IAAI,EACjB,GAAIlB,WAAWY,SAAU,CACvBA,QAAQQ,EACV,CAAC,AACH,EACA,CAACT,SAAUC,QAAQ,EAErB,IAAMS,IAAMzB,QACV,kBACEE,WAAW,CACTC,aAAa,OACbc,MAAQd,aAAa,AAAC,OAAW,OAALc,OAC5BX,UAAYH,aAAa,gBACzBI,OAASJ,aAAa,aACtBK,MAAQL,aAAa,YACrBM,QAAUN,aAAa,cACvBO,QAAUP,aAAa,cACvBQ,OAASR,aAAa,aACtBkB,WAAalB,aAAa,eAC1BY,UAAYZ,aAAa,gBACzBS,MAAQT,aAAa,YACrBU,UACD,GACH,CAACI,KAAMX,SAAUC,MAAOC,KAAMC,OAAQC,OAAQC,MAAOU,UAAWN,SAAUH,KAAMC,UAAU,EAE5F,IAAMa,mBAAqB3B,YAAY,UAAM,CAC3CuB,aAAa,KAAK,CACpB,EAAG,EAAE,EAEL,OACE,oBAACK,kBACKT,OACJL,UAAWY,IACXT,QAASO,YACTK,eAAgBF,mBAChBP,IAAKA,MAEL,oBAACU,QAAKhB,UAAWV,aAAa,aAAcW,UAGlD,CAEA,gBAAeT,MAAO"}
package/es/index.d.ts CHANGED
@@ -20,3 +20,5 @@ export { default as CronEditor } from './cron-editor';
20
20
  export type { CornEditorProps } from './cron-editor';
21
21
  export { default as Button } from './button';
22
22
  export type { ButtonProps, ButtonType } from './button';
23
+ export { default as Input } from './input';
24
+ export type { InputProps } from './input';
package/es/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export{default as Markdown}from"./markdown";export{default as BackTop}from"./back-top";export{default as Tag}from"./tag";export{default as HighlightText}from"./highlight-text";export{default as useTheme}from"./use-theme";export{default as Avatar}from"./avatar";export{default as Marquee}from"./marquee";export{default as CaptureScreen}from"./capture-screen";export{default as WaveCircle}from"./wave-circle";export{default as CronEditor}from"./cron-editor";export{default as Button}from"./button";
1
+ export{default as Markdown}from"./markdown";export{default as BackTop}from"./back-top";export{default as Tag}from"./tag";export{default as HighlightText}from"./highlight-text";export{default as useTheme}from"./use-theme";export{default as Avatar}from"./avatar";export{default as Marquee}from"./marquee";export{default as CaptureScreen}from"./capture-screen";export{default as WaveCircle}from"./wave-circle";export{default as CronEditor}from"./cron-editor";export{default as Button}from"./button";export{default as Input}from"./input";
2
2
  //# sourceMappingURL=index.js.map
package/es/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../components/index.ts"],"sourcesContent":["export { default as Markdown } from './markdown';\nexport type { MarkdownProps, CodeBlockToolType, AnchorType } from './markdown';\n\nexport { default as BackTop } from './back-top';\nexport type { BackTopProps } from './back-top';\n\nexport { default as Tag } from './tag';\nexport type { TagProps } from './tag';\n\nexport { default as HighlightText } from './highlight-text';\nexport type { Highlight, HighlightTextProps, HighlightTextJson } from './highlight-text';\n\nexport { default as useTheme } from './use-theme';\nexport type { ThemeTypes } from './use-theme';\n\nexport { default as Avatar } from './avatar';\nexport type { AvatarProps } from './avatar';\n\nexport { default as Marquee } from './marquee';\nexport type { MarqueeProps } from './marquee';\n\nexport { default as CaptureScreen } from './capture-screen';\nexport type { CaptureScreenProp, RecorderOptions } from './capture-screen';\n\nexport { default as WaveCircle } from './wave-circle';\nexport type { WaveCircleProps } from './wave-circle';\n\nexport { default as CronEditor } from './cron-editor';\nexport type { CornEditorProps } from './cron-editor';\n\nexport { default as Button } from './button';\nexport type { ButtonProps, ButtonType } from './button';\n"],"names":["default","Markdown","BackTop","Tag","HighlightText","useTheme","Avatar","Marquee","CaptureScreen","WaveCircle","CronEditor","Button"],"mappings":"AAAA,OAASA,WAAWC,QAAQ,KAAQ,YAAa,AAGjD,QAASD,WAAWE,OAAO,KAAQ,YAAa,AAGhD,QAASF,WAAWG,GAAG,KAAQ,OAAQ,AAGvC,QAASH,WAAWI,aAAa,KAAQ,kBAAmB,AAG5D,QAASJ,WAAWK,QAAQ,KAAQ,aAAc,AAGlD,QAASL,WAAWM,MAAM,KAAQ,UAAW,AAG7C,QAASN,WAAWO,OAAO,KAAQ,WAAY,AAG/C,QAASP,WAAWQ,aAAa,KAAQ,kBAAmB,AAG5D,QAASR,WAAWS,UAAU,KAAQ,eAAgB,AAGtD,QAAST,WAAWU,UAAU,KAAQ,eAAgB,AAGtD,QAASV,WAAWW,MAAM,KAAQ,UAAW"}
1
+ {"version":3,"sources":["../components/index.ts"],"sourcesContent":["export { default as Markdown } from './markdown';\nexport type { MarkdownProps, CodeBlockToolType, AnchorType } from './markdown';\n\nexport { default as BackTop } from './back-top';\nexport type { BackTopProps } from './back-top';\n\nexport { default as Tag } from './tag';\nexport type { TagProps } from './tag';\n\nexport { default as HighlightText } from './highlight-text';\nexport type { Highlight, HighlightTextProps, HighlightTextJson } from './highlight-text';\n\nexport { default as useTheme } from './use-theme';\nexport type { ThemeTypes } from './use-theme';\n\nexport { default as Avatar } from './avatar';\nexport type { AvatarProps } from './avatar';\n\nexport { default as Marquee } from './marquee';\nexport type { MarqueeProps } from './marquee';\n\nexport { default as CaptureScreen } from './capture-screen';\nexport type { CaptureScreenProp, RecorderOptions } from './capture-screen';\n\nexport { default as WaveCircle } from './wave-circle';\nexport type { WaveCircleProps } from './wave-circle';\n\nexport { default as CronEditor } from './cron-editor';\nexport type { CornEditorProps } from './cron-editor';\n\nexport { default as Button } from './button';\nexport type { ButtonProps, ButtonType } from './button';\n\nexport { default as Input } from './input';\nexport type { InputProps } from './input';\n"],"names":["default","Markdown","BackTop","Tag","HighlightText","useTheme","Avatar","Marquee","CaptureScreen","WaveCircle","CronEditor","Button","Input"],"mappings":"AAAA,OAASA,WAAWC,QAAQ,KAAQ,YAAa,AAGjD,QAASD,WAAWE,OAAO,KAAQ,YAAa,AAGhD,QAASF,WAAWG,GAAG,KAAQ,OAAQ,AAGvC,QAASH,WAAWI,aAAa,KAAQ,kBAAmB,AAG5D,QAASJ,WAAWK,QAAQ,KAAQ,aAAc,AAGlD,QAASL,WAAWM,MAAM,KAAQ,UAAW,AAG7C,QAASN,WAAWO,OAAO,KAAQ,WAAY,AAG/C,QAASP,WAAWQ,aAAa,KAAQ,kBAAmB,AAG5D,QAASR,WAAWS,UAAU,KAAQ,eAAgB,AAGtD,QAAST,WAAWU,UAAU,KAAQ,eAAgB,AAGtD,QAASV,WAAWW,MAAM,KAAQ,UAAW,AAG7C,QAASX,WAAWY,KAAK,KAAQ,SAAU"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import './index.global.less';
3
+ export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'prefix'> {
4
+ className?: string;
5
+ suffix?: React.ReactNode;
6
+ prefix?: React.ReactNode;
7
+ }
8
+ declare const Input: React.FC<InputProps>;
9
+ export default Input;
@@ -0,0 +1,58 @@
1
+ .@{prefix-cls}-input-wrapper {
2
+ color: var(--text-color, rgba(0, 0, 0, 0.85));
3
+ font-size: 14px;
4
+ line-height: 1.5715;
5
+ background-color: #fff;
6
+ background-image: none;
7
+ border: 1px solid var(--border-color-base, #d9d9d9);
8
+ border-radius: 4px;
9
+ transition: all 0.3s;
10
+ box-sizing: border-box;
11
+ width: 100%;
12
+ padding: 4px 10px;
13
+ display: flex;
14
+
15
+ &:hover:not([disabled]) {
16
+ border-color: var(--primary-color-hover, #5794ff);
17
+ border-right-width: 1px;
18
+ }
19
+
20
+ &:focus:not([disabled]) {
21
+ border-color: var(--primary-color-hover, #5794ff);
22
+ box-shadow: 0 0 0 2px rgba(45, 115, 255, 0.2);
23
+ border-right-width: 1px;
24
+ outline: 0;
25
+ }
26
+
27
+ &[disabled] {
28
+ background: var(--disabled-bg, #f5f5f5);
29
+ border-color: var(--border-color-base, #d9d9d9);
30
+ cursor: not-allowed;
31
+ }
32
+ }
33
+ .@{prefix-cls}-input-prefix {
34
+ margin-right: 4px;
35
+ }
36
+ .@{prefix-cls}-input-suffix {
37
+ margin-left: 4px;
38
+ }
39
+ .@{prefix-cls}-input {
40
+ border: none;
41
+ outline: none;
42
+ flex: 1;
43
+ color: inherit;
44
+ white-space: nowrap;
45
+ text-overflow: ellipsis;
46
+ overflow: hidden;
47
+
48
+ &[type="number"] {
49
+ width: 75px;
50
+ padding: 0 0 0 10px;
51
+ }
52
+
53
+ &[type="button"],
54
+ &[type="submit"],
55
+ &[type="reset"] {
56
+ cursor: pointer;
57
+ }
58
+ }
@@ -0,0 +1,2 @@
1
+ function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};return _extends.apply(this,arguments)}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key]}}return target}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key]}return target}import React from"react";import{classNames,getPrefixCls}from"../utils";import"./index.global.less";var Input=function(_param){var className=_param.className,_type=_param.type,type=_type===void 0?"text":_type,suffix=_param.suffix,prefix=_param.prefix,value=_param.value,prpos=_objectWithoutProperties(_param,["className","type","suffix","prefix","value"]);return React.createElement("span",{className:classNames([getPrefixCls("input-wrapper"),getPrefixCls("input-".concat(type)),className])},prefix&&React.createElement("span",{className:getPrefixCls("input-prefix")},prefix),React.createElement("input",_extends({value:value,className:getPrefixCls("input"),type:type},prpos)),suffix&&React.createElement("span",{className:getPrefixCls("input-suffix")},suffix))};export default Input;
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../components/input/index.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, getPrefixCls } from '../utils';\nimport './index.global.less';\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'prefix'> {\n className?: string;\n suffix?: React.ReactNode;\n prefix?: React.ReactNode;\n}\n\nconst Input: React.FC<InputProps> = ({\n className,\n type = 'text',\n suffix,\n prefix,\n value,\n ...prpos\n}) => {\n return (\n <span\n className={classNames([\n getPrefixCls('input-wrapper'),\n getPrefixCls(`input-${type}`),\n className,\n ])}\n >\n {prefix && <span className={getPrefixCls('input-prefix')}>{prefix}</span>}\n <input value={value} className={getPrefixCls('input')} type={type} {...prpos} />\n {suffix && <span className={getPrefixCls('input-suffix')}>{suffix}</span>}\n </span>\n );\n};\n\nexport default Input;\n"],"names":["React","classNames","getPrefixCls","Input","className","type","suffix","prefix","value","prpos","span","input"],"mappings":"AAAA,w9BAAA,OAAOA,UAAW,OAAQ,AAC1B,QAASC,UAAU,CAAEC,YAAY,KAAQ,UAAW,AACpD,OAAO,qBAAsB,CAQ7B,IAAMC,MAA8B,gBAO9B,KANJC,iBAAAA,uBACAC,KAAAA,oBAAO,aACPC,cAAAA,OACAC,cAAAA,OACAC,aAAAA,MACGC,uCALHL,YACAC,OACAC,SACAC,SACAC,UAGA,OACE,oBAACE,QACCN,UAAWH,WAAW,CACpBC,aAAa,iBACbA,aAAa,AAAC,SAAa,OAALG,OACtBD,UACD,GAEAG,QAAU,oBAACG,QAAKN,UAAWF,aAAa,iBAAkBK,QAC3D,oBAACI,kBAAMH,MAAOA,MAAOJ,UAAWF,aAAa,SAAUG,KAAMA,MAAUI,QACtEH,QAAU,oBAACI,QAAKN,UAAWF,aAAa,iBAAkBI,QAGjE,CAEA,gBAAeH,KAAM"}
@@ -1,2 +1,2 @@
1
- function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}function _iterableToArrayLimit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}import React,{Fragment,useCallback,useEffect,useMemo,useRef,useState}from"react";import{getScrollTop,setClipboard,classNames,getPrefixCls,isEqual}from"../utils";import{getMarkedImgList,markdownUtil}from"./markdown-util";import{PhotoSlider}from"react-photo-view";import"react-photo-view/dist/react-photo-view.css";import"./index.global.less";var toggleAnchor=function(anchor){var ref,ref1,ref2;(ref1=(ref=anchor.offsetParent)===null||ref===void 0?void 0:ref.querySelectorAll("li"))===null||ref1===void 0?void 0:ref1.forEach(function(a){a.classList.remove("active")});(ref2=anchor.parentElement)===null||ref2===void 0?void 0:ref2.classList.add("active")};var Markdown=function(param){var className=param.className,style=param.style,text=param.text,_pictureViewer=param.pictureViewer,pictureViewer=_pictureViewer===void 0?true:_pictureViewer,_langLineNumber=param.langLineNumber,langLineNumber=_langLineNumber===void 0?true:_langLineNumber,_tools=param.tools,tools=_tools===void 0?["copy"]:_tools,_getAnchorContainer=param.getAnchorContainer,getAnchorContainer=_getAnchorContainer===void 0?function(){return window}:_getAnchorContainer,tex=param.tex;var ref=useRef(null);var ref1=_slicedToArray(useState(false),2),visible=ref1[0],setVisible=ref1[1];var ref2=_slicedToArray(useState(0),2),photoIndex=ref2[0],setPhotoIndex=ref2[1];var ref3=_slicedToArray(useState(""),2),htmlString=ref3[0],setHtmlString=ref3[1];var ref4=_slicedToArray(useState([]),2),imgList=ref4[0],setImgList=ref4[1];var htmlStrRef=useRef(htmlString);var anchors=useRef([]);useMemo(function(){var str=htmlStrRef.current;if(text){str=markdownUtil(text,{langLineNumber:langLineNumber,langToolbar:tools,tex:tex})}else{str=""}if(str!==htmlStrRef.current){Object.assign(htmlStrRef,{current:str});setHtmlString(str)}},[text,langLineNumber,tools,tex]);useEffect(function(){var timer=setTimeout(function(){window.Prism.highlightAll();if(typeof timer==="number")clearTimeout(timer)},0);if(pictureViewer){setImgList(getMarkedImgList(htmlString))}return function(){if(typeof timer==="number"){clearTimeout(timer)}}},[htmlString,pictureViewer]);var handleAnchor=function(e){var ref1,ref2,ref3;e.preventDefault();e.stopPropagation();toggleAnchor(e.target);(ref3=(ref1=ref.current)===null||ref1===void 0?void 0:ref1.querySelector(decodeURIComponent((ref2=e.target)===null||ref2===void 0?void 0:ref2.hash)))===null||ref3===void 0?void 0:ref3.scrollIntoView({behavior:"smooth",block:"center"})};useEffect(function(){var ref1,ref2;var _anchors=[];(ref2=(ref1=ref.current)===null||ref1===void 0?void 0:ref1.querySelectorAll(".markdown-toc li a"))===null||ref2===void 0?void 0:ref2.forEach(function(e){var ref1;var a=e;var _el=(ref1=ref.current)===null||ref1===void 0?void 0:ref1.querySelector(decodeURIComponent(a===null||a===void 0?void 0:a.hash));_anchors.push({anchor:a,top:_el.offsetTop});e.onclick=handleAnchor});Object.assign(anchors,{current:_anchors})},[htmlString]);var handleClick=useCallback(function(event){var target=event.target;if((target===null||target===void 0?void 0:target.tagName)==="IMG"&&pictureViewer){var ref1;var arr=((ref1=ref.current)===null||ref1===void 0?void 0:ref1.getElementsByTagName("img"))||[];for(var i=0,len=arr.length;i<len;i++){if(arr[i]===target){setPhotoIndex(i);setVisible(true)}}}else if(target.className.includes("toolbar-copy")&&(tools===null||tools===void 0?void 0:tools.includes("copy"))){if(target.offsetParent&&!target.offsetParent.hasAttribute("data-copy")){setClipboard(target.offsetParent.innerText,target.offsetParent)}}},[tools,pictureViewer]);var handleWheel=useCallback(function(event){var offsetParent=event.target.offsetParent;if(!offsetParent||offsetParent.tagName!=="PRE"){return}var rows=offsetParent===null||offsetParent===void 0?void 0:offsetParent.getElementsByClassName("line-numbers-rows");if(rows===null||rows===void 0?void 0:rows.length){var codeTag=offsetParent.getElementsByTagName("code")[0];if(codeTag.scrollHeight-codeTag.offsetHeight&&rows[0].scrollTop!==codeTag.scrollTop){rows[0].scrollTop=codeTag.scrollTop}}},[]);var handleScroll=useCallback(function(e){if(!anchors.current.length)return;var el=e.target;var top=getScrollTop(el);var anchor=null;anchors.current.forEach(function(a){if(top-a.top>-el.offsetHeight/2)anchor=a.anchor});if(anchor){toggleAnchor(anchor)}},[]);useEffect(function(){var ref;(ref=getAnchorContainer())===null||ref===void 0?void 0:ref.addEventListener("scroll",handleScroll);return function(){var ref;(ref=getAnchorContainer())===null||ref===void 0?void 0:ref.removeEventListener("scroll",handleScroll)}},[getAnchorContainer,handleScroll]);var cls=useMemo(function(){return classNames([getPrefixCls("markdown-box"),className])},[className]);return React.createElement(Fragment,null,React.createElement("div",{ref:ref,className:cls,style:style,dangerouslySetInnerHTML:{__html:htmlString},onClick:handleClick,onWheel:handleWheel}),imgList.length?React.createElement(PhotoSlider,{images:imgList,visible:visible,onClose:function(){return setVisible(false)},index:photoIndex,onIndexChange:setPhotoIndex}):null)};export default React.memo(Markdown,isEqual);
1
+ function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}function _iterableToArrayLimit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}import React,{Fragment,useCallback,useEffect,useMemo,useRef,useState}from"react";import{getScrollTop,setClipboard,classNames,getPrefixCls,isEqual,isSvgElement}from"../utils";import{getMarkedImgList,markdownUtil}from"./markdown-util";import{PhotoSlider}from"react-photo-view";import"react-photo-view/dist/react-photo-view.css";import"./index.global.less";var toggleAnchor=function(anchor){var ref,ref1,ref2;(ref1=(ref=anchor.offsetParent)===null||ref===void 0?void 0:ref.querySelectorAll("li"))===null||ref1===void 0?void 0:ref1.forEach(function(a){a.classList.remove("active")});(ref2=anchor.parentElement)===null||ref2===void 0?void 0:ref2.classList.add("active")};var Markdown=function(param){var className=param.className,style=param.style,text=param.text,_pictureViewer=param.pictureViewer,pictureViewer=_pictureViewer===void 0?true:_pictureViewer,_langLineNumber=param.langLineNumber,langLineNumber=_langLineNumber===void 0?true:_langLineNumber,_tools=param.tools,tools=_tools===void 0?["copy"]:_tools,_getAnchorContainer=param.getAnchorContainer,getAnchorContainer=_getAnchorContainer===void 0?function(){return window}:_getAnchorContainer,tex=param.tex;var ref=useRef(null);var ref1=_slicedToArray(useState(false),2),visible=ref1[0],setVisible=ref1[1];var ref2=_slicedToArray(useState(0),2),photoIndex=ref2[0],setPhotoIndex=ref2[1];var ref3=_slicedToArray(useState(""),2),htmlString=ref3[0],setHtmlString=ref3[1];var ref4=_slicedToArray(useState([]),2),imgList=ref4[0],setImgList=ref4[1];var htmlStrRef=useRef(htmlString);var anchors=useRef([]);useMemo(function(){var str=htmlStrRef.current;if(text){str=markdownUtil(text,{langLineNumber:langLineNumber,langToolbar:tools,tex:tex})}else{str=""}if(str!==htmlStrRef.current){Object.assign(htmlStrRef,{current:str});setHtmlString(str)}},[text,langLineNumber,tools,tex]);useEffect(function(){var timer=setTimeout(function(){window.Prism.highlightAll();if(typeof timer==="number")clearTimeout(timer)},0);if(pictureViewer){setImgList(getMarkedImgList(htmlString))}return function(){if(typeof timer==="number"){clearTimeout(timer)}}},[htmlString,pictureViewer]);var handleAnchor=function(e){var ref1,ref2,ref3;e.preventDefault();e.stopPropagation();toggleAnchor(e.target);(ref3=(ref1=ref.current)===null||ref1===void 0?void 0:ref1.querySelector(decodeURIComponent((ref2=e.target)===null||ref2===void 0?void 0:ref2.hash)))===null||ref3===void 0?void 0:ref3.scrollIntoView({behavior:"smooth",block:"center"})};useEffect(function(){var ref1,ref2;var _anchors=[];(ref2=(ref1=ref.current)===null||ref1===void 0?void 0:ref1.querySelectorAll(".markdown-toc li a"))===null||ref2===void 0?void 0:ref2.forEach(function(e){var ref1;var a=e;var _el=(ref1=ref.current)===null||ref1===void 0?void 0:ref1.querySelector(decodeURIComponent(a===null||a===void 0?void 0:a.hash));_anchors.push({anchor:a,top:_el.offsetTop});e.onclick=handleAnchor});Object.assign(anchors,{current:_anchors})},[htmlString]);var handleClick=useCallback(function(event){var target=event.target;if(isSvgElement(target))return;if(target.tagName==="IMG"&&pictureViewer){var ref1;var arr=((ref1=ref.current)===null||ref1===void 0?void 0:ref1.getElementsByTagName("img"))||[];for(var i=0,len=arr.length;i<len;i++){if(arr[i]===target){setPhotoIndex(i);setVisible(true)}}}else if(target.className.includes("toolbar-copy")){var offsetParent=target.offsetParent;if(!(offsetParent===null||offsetParent===void 0?void 0:offsetParent.hasAttribute("data-copy"))){setClipboard(offsetParent===null||offsetParent===void 0?void 0:offsetParent.innerText,offsetParent)}}},[pictureViewer]);var handleWheel=useCallback(function(event){var offsetParent=event.target.offsetParent;if(!offsetParent||offsetParent.tagName!=="PRE"){return}var rows=offsetParent===null||offsetParent===void 0?void 0:offsetParent.getElementsByClassName("line-numbers-rows");if(rows===null||rows===void 0?void 0:rows.length){var codeTag=offsetParent.getElementsByTagName("code")[0];if(codeTag.scrollHeight-codeTag.offsetHeight&&rows[0].scrollTop!==codeTag.scrollTop){rows[0].scrollTop=codeTag.scrollTop}}},[]);var handleScroll=useCallback(function(e){if(!anchors.current.length)return;var el=e.target;var top=getScrollTop(el);var anchor=null;anchors.current.forEach(function(a){if(top-a.top>-el.offsetHeight/2)anchor=a.anchor});if(anchor){toggleAnchor(anchor)}},[]);useEffect(function(){var ref;(ref=getAnchorContainer())===null||ref===void 0?void 0:ref.addEventListener("scroll",handleScroll);return function(){var ref;(ref=getAnchorContainer())===null||ref===void 0?void 0:ref.removeEventListener("scroll",handleScroll)}},[getAnchorContainer,handleScroll]);var cls=useMemo(function(){return classNames([getPrefixCls("markdown-box"),className])},[className]);return React.createElement(Fragment,null,React.createElement("div",{ref:ref,className:cls,style:style,dangerouslySetInnerHTML:{__html:htmlString},onClick:handleClick,onWheel:handleWheel}),imgList.length?React.createElement(PhotoSlider,{images:imgList,visible:visible,onClose:function(){return setVisible(false)},index:photoIndex,onIndexChange:setPhotoIndex}):null)};export default React.memo(Markdown,isEqual);
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/markdown/index.tsx"],"sourcesContent":["import React, { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { FC, MouseEvent, WheelEvent } from 'react';\nimport { getScrollTop, setClipboard, classNames, getPrefixCls, isEqual } from '../utils';\nimport { getMarkedImgList, markdownUtil } from './markdown-util';\nimport { PhotoSlider } from 'react-photo-view';\nimport type { DataType as PhotoViewDataType } from 'react-photo-view/dist/types';\nimport 'react-photo-view/dist/react-photo-view.css';\nimport './index.global.less';\n\nexport type CodeBlockToolType = Array<'copy'>;\n\nexport interface MarkdownProps {\n className?: string;\n style?: React.CSSProperties;\n /** md内容 */\n text?: string;\n /** 开启图片查看器 */\n pictureViewer?: boolean;\n /** 显示代码块行号 */\n langLineNumber?: boolean;\n /** 开启代码块工具条 */\n tools?: CodeBlockToolType;\n /** 指定滚动的容器 */\n getAnchorContainer?: () => HTMLElement;\n /** 渲染KateX数学公式 */\n tex?: boolean;\n}\n\nexport type AnchorType = {\n anchor: HTMLAnchorElement;\n top: number;\n};\n\nconst toggleAnchor = (anchor: HTMLAnchorElement) => {\n anchor.offsetParent?.querySelectorAll('li')?.forEach((a) => {\n a.classList.remove('active');\n });\n anchor.parentElement?.classList.add('active');\n};\n\nconst Markdown: FC<MarkdownProps> = ({\n className,\n style,\n text,\n pictureViewer = true,\n langLineNumber = true,\n tools = ['copy'],\n getAnchorContainer = () => window,\n tex,\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n const [visible, setVisible] = useState(false);\n const [photoIndex, setPhotoIndex] = useState(0);\n const [htmlString, setHtmlString] = useState<string>('');\n const [imgList, setImgList] = useState<PhotoViewDataType[]>([]);\n const htmlStrRef = useRef<string>(htmlString);\n const anchors = useRef<AnchorType[]>([]);\n\n useMemo(() => {\n let str = htmlStrRef.current;\n\n if (text) {\n str = markdownUtil(text, {\n langLineNumber,\n langToolbar: tools,\n tex: tex,\n });\n } else {\n str = '';\n }\n if (str !== htmlStrRef.current) {\n Object.assign(htmlStrRef, {\n current: str,\n });\n setHtmlString(str);\n }\n }, [text, langLineNumber, tools, tex]);\n\n useEffect(() => {\n const timer: NodeJS.Timeout = setTimeout(() => {\n window.Prism.highlightAll();\n if (typeof timer === 'number') clearTimeout(timer);\n }, 0);\n\n if (pictureViewer) {\n setImgList(getMarkedImgList(htmlString));\n }\n return () => {\n if (typeof timer === 'number') {\n clearTimeout(timer);\n }\n };\n }, [htmlString, pictureViewer]);\n\n const handleAnchor = (e: Event) => {\n e.preventDefault();\n e.stopPropagation();\n toggleAnchor(e.target as HTMLAnchorElement);\n ref.current\n ?.querySelector(decodeURIComponent((e.target as HTMLAnchorElement)?.hash))\n ?.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n });\n };\n\n useEffect(() => {\n const _anchors: AnchorType[] = [];\n\n ref.current?.querySelectorAll('.markdown-toc li a')?.forEach((e) => {\n const a = e as HTMLAnchorElement;\n const _el = ref.current?.querySelector(\n decodeURIComponent((a as HTMLAnchorElement)?.hash)\n ) as HTMLElement;\n\n _anchors.push({\n anchor: a,\n top: _el.offsetTop,\n });\n (e as HTMLAnchorElement).onclick = handleAnchor;\n });\n\n Object.assign(anchors, {\n current: _anchors,\n });\n }, [htmlString]);\n\n const handleClick = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n const target = event.target as HTMLElement;\n\n if (target?.tagName === 'IMG' && pictureViewer) {\n const arr = ref.current?.getElementsByTagName('img') || [];\n\n for (let i = 0, len = arr.length; i < len; i++) {\n if (arr[i] === target) {\n setPhotoIndex(i);\n setVisible(true);\n }\n }\n } else if (target.className.includes('toolbar-copy') && tools?.includes('copy')) {\n if (target.offsetParent && !target.offsetParent.hasAttribute('data-copy')) {\n setClipboard((target.offsetParent as HTMLElement).innerText, target.offsetParent);\n }\n }\n },\n [tools, pictureViewer]\n );\n\n const handleWheel = useCallback((event: WheelEvent<HTMLDivElement>) => {\n const offsetParent = (event.target as HTMLElement).offsetParent;\n\n if (!offsetParent || offsetParent.tagName !== 'PRE') {\n return;\n }\n const rows = offsetParent?.getElementsByClassName('line-numbers-rows');\n\n if (rows?.length) {\n const codeTag: HTMLElement = offsetParent.getElementsByTagName('code')[0];\n\n if (codeTag.scrollHeight - codeTag.offsetHeight && rows[0].scrollTop !== codeTag.scrollTop) {\n // 可滚动高度大于0\n rows[0].scrollTop = codeTag.scrollTop;\n }\n }\n }, []);\n const handleScroll = useCallback((e: Event) => {\n if (!anchors.current.length) return;\n const el = e.target as HTMLElement;\n const top = getScrollTop(el);\n\n let anchor: HTMLAnchorElement | null = null;\n\n anchors.current.forEach((a) => {\n if (top - a.top > -el.offsetHeight / 2) anchor = a.anchor;\n });\n\n if (anchor) {\n toggleAnchor(anchor);\n }\n }, []);\n\n useEffect(() => {\n getAnchorContainer()?.addEventListener('scroll', handleScroll);\n return () => {\n getAnchorContainer()?.removeEventListener('scroll', handleScroll);\n };\n }, [getAnchorContainer, handleScroll]);\n\n const cls = useMemo(() => classNames([getPrefixCls('markdown-box'), className]), [className]);\n\n return (\n <Fragment>\n <div\n ref={ref}\n className={cls}\n style={style}\n dangerouslySetInnerHTML={{\n __html: htmlString,\n }}\n onClick={handleClick}\n onWheel={handleWheel}\n />\n {imgList.length ? (\n <PhotoSlider\n images={imgList}\n visible={visible}\n onClose={() => setVisible(false)}\n index={photoIndex}\n onIndexChange={setPhotoIndex}\n />\n ) : null}\n </Fragment>\n );\n};\n\nexport default React.memo(Markdown, isEqual);\n"],"names":["React","Fragment","useCallback","useEffect","useMemo","useRef","useState","getScrollTop","setClipboard","classNames","getPrefixCls","isEqual","getMarkedImgList","markdownUtil","PhotoSlider","toggleAnchor","anchor","offsetParent","querySelectorAll","forEach","a","classList","remove","parentElement","add","Markdown","className","style","text","pictureViewer","langLineNumber","tools","getAnchorContainer","window","tex","ref","visible","setVisible","photoIndex","setPhotoIndex","htmlString","setHtmlString","imgList","setImgList","htmlStrRef","anchors","str","current","langToolbar","Object","assign","timer","setTimeout","Prism","highlightAll","clearTimeout","handleAnchor","e","preventDefault","stopPropagation","target","querySelector","decodeURIComponent","hash","scrollIntoView","behavior","block","_anchors","_el","push","top","offsetTop","onclick","handleClick","event","tagName","arr","getElementsByTagName","i","len","length","includes","hasAttribute","innerText","handleWheel","rows","getElementsByClassName","codeTag","scrollHeight","offsetHeight","scrollTop","handleScroll","el","addEventListener","removeEventListener","cls","div","dangerouslySetInnerHTML","__html","onClick","onWheel","images","onClose","index","onIndexChange","memo"],"mappings":"AAAA,2zCAAA,OAAOA,OAASC,QAAQ,CAAEC,WAAW,CAAEC,SAAS,CAAEC,OAAO,CAAEC,MAAM,CAAEC,QAAQ,KAAQ,OAAQ,AAE3F,QAASC,YAAY,CAAEC,YAAY,CAAEC,UAAU,CAAEC,YAAY,CAAEC,OAAO,KAAQ,UAAW,AACzF,QAASC,gBAAgB,CAAEC,YAAY,KAAQ,iBAAkB,AACjE,QAASC,WAAW,KAAQ,kBAAmB,AAE/C,OAAO,4CAA6C,AACpD,OAAO,qBAAsB,CA0B7B,IAAMC,aAAe,SAACC,OAA8B,KAClDA,SAGAA,IAHAA,OAAAA,CAAAA,IAAAA,OAAOC,YAAY,UAAnBD,aAAAA,KAAAA,EAAAA,IAAqBE,iBAAiB,6BAAtCF,KAAAA,EAAAA,KAA6CG,QAAQ,SAACC,EAAM,CAC1DA,EAAEC,SAAS,CAACC,MAAM,CAAC,SACrB,EACAN,EAAAA,KAAAA,OAAOO,aAAa,UAApBP,cAAAA,KAAAA,EAAAA,KAAsBK,UAAUG,GAAG,CAAC,SAAS,AAC/C,EAEA,IAAMC,SAA8B,eAS9B,KARJC,gBAAAA,UACAC,YAAAA,MACAC,WAAAA,0BACAC,cAAAA,sCAAgB,IAAI,sCACpBC,eAAAA,wCAAiB,IAAI,8BACrBC,MAAAA,sBAAQ,CAAC,OAAO,kCAChBC,mBAAAA,gDAAqB,kBAAMC,4BAC3BC,UAAAA,IAEA,IAAMC,IAAM9B,OAAuB,IAAI,EACvC,IAA8BC,oBAAAA,SAAS,KAAK,KAArC8B,QAAuB9B,QAAd+B,WAAc/B,QAC9B,IAAoCA,oBAAAA,SAAS,MAAtCgC,WAA6BhC,QAAjBiC,cAAiBjC,QACpC,IAAoCA,oBAAAA,SAAiB,OAA9CkC,WAA6BlC,QAAjBmC,cAAiBnC,QACpC,IAA8BA,oBAAAA,SAA8B,EAAE,KAAvDoC,QAAuBpC,QAAdqC,WAAcrC,QAC9B,IAAMsC,WAAavC,OAAemC,YAClC,IAAMK,QAAUxC,OAAqB,EAAE,EAEvCD,QAAQ,UAAM,CACZ,IAAI0C,IAAMF,WAAWG,OAAO,CAE5B,GAAInB,KAAM,CACRkB,IAAMjC,aAAae,KAAM,CACvBE,eAAAA,eACAkB,YAAajB,MACbG,IAAKA,GACP,EACF,KAAO,CACLY,IAAM,EACR,CAAC,AACD,GAAIA,MAAQF,WAAWG,OAAO,CAAE,CAC9BE,OAAOC,MAAM,CAACN,WAAY,CACxBG,QAASD,GACX,GACAL,cAAcK,IAChB,CAAC,AACH,EAAG,CAAClB,KAAME,eAAgBC,MAAOG,IAAI,EAErC/B,UAAU,UAAM,CACd,IAAMgD,MAAwBC,WAAW,UAAM,CAC7CnB,OAAOoB,KAAK,CAACC,YAAY,GACzB,GAAI,OAAOH,QAAU,SAAUI,aAAaJ,MAAO,AACrD,EAAG,GAEH,GAAItB,cAAe,CACjBc,WAAW/B,iBAAiB4B,YAC9B,CAAC,AACD,OAAO,UAAM,CACX,GAAI,OAAOW,QAAU,SAAU,CAC7BI,aAAaJ,MACf,CAAC,AACH,CACF,EAAG,CAACX,WAAYX,cAAc,EAE9B,IAAM2B,aAAe,SAACC,EAAa,KAIjCtB,KACsCsB,UAJtCA,EAAEC,cAAc,GAChBD,EAAEE,eAAe,GACjB5C,aAAa0C,EAAEG,MAAM,CACrBzB,OAAAA,CAAAA,KAAAA,IAAIY,OAAO,UAAXZ,cAAAA,KAAAA,EAAAA,KACI0B,cAAcC,mBAAmB,CAACL,KAAAA,EAAEG,MAAM,UAARH,cAAD,KAAA,EAACA,KAAgCM,IAAI,0BAD1E5B,KAAAA,EAAAA,KAEI6B,eAAe,CACfC,SAAU,SACVC,MAAO,QACT,EACJ,EAEA/D,UAAU,UAAM,KAGdgC,UAFA,IAAMgC,SAAyB,EAAE,AAEjChC,OAAAA,CAAAA,KAAAA,IAAIY,OAAO,UAAXZ,cAAAA,KAAAA,EAAAA,KAAajB,iBAAiB,6CAA9BiB,KAAAA,EAAAA,KAAqDhB,QAAQ,SAACsC,EAAM,KAEtDtB,KADZ,IAAMf,EAAIqC,EACV,IAAMW,IAAMjC,CAAAA,KAAAA,IAAIY,OAAO,UAAXZ,cAAAA,KAAAA,EAAAA,KAAa0B,cACvBC,mBAAmB,AAAC1C,UAAAA,WAAD,KAAA,EAAA,AAACA,EAAyB2C,IAAI,GAGnDI,SAASE,IAAI,CAAC,CACZrD,OAAQI,EACRkD,IAAKF,IAAIG,SAAS,AACpB,EACA,CAACd,EAAwBe,OAAO,CAAGhB,YACrC,GAEAP,OAAOC,MAAM,CAACL,QAAS,CACrBE,QAASoB,QACX,EACF,EAAG,CAAC3B,WAAW,EAEf,IAAMiC,YAAcvE,YAClB,SAACwE,MAAsC,CACrC,IAAMd,OAASc,MAAMd,MAAM,CAE3B,GAAIA,CAAAA,eAAAA,gBAAAA,KAAAA,EAAAA,OAAQe,OAAO,AAAD,IAAM,OAAS9C,cAAe,KAClCM,KAAZ,IAAMyC,IAAMzC,CAAAA,CAAAA,KAAAA,IAAIY,OAAO,UAAXZ,cAAAA,KAAAA,EAAAA,KAAa0C,qBAAqB,SAAU,EAAE,CAE1D,IAAK,IAAIC,EAAI,EAAGC,IAAMH,IAAII,MAAM,CAAEF,EAAIC,IAAKD,IAAK,CAC9C,GAAIF,GAAG,CAACE,EAAE,GAAKlB,OAAQ,CACrBrB,cAAcuC,GACdzC,WAAW,IAAI,CACjB,CAAC,AACH,CACF,MAAO,GAAIuB,OAAOlC,SAAS,CAACuD,QAAQ,CAAC,kBAAmBlD,cAAAA,eAAAA,KAAAA,EAAAA,MAAOkD,QAAQ,CAAC,SAAS,CAC/E,GAAIrB,OAAO3C,YAAY,EAAI,CAAC2C,OAAO3C,YAAY,CAACiE,YAAY,CAAC,aAAc,CACzE1E,aAAa,AAACoD,OAAO3C,YAAY,CAAiBkE,SAAS,CAAEvB,OAAO3C,YAAY,CAClF,CAAC,AACH,CAAC,AACH,EACA,CAACc,MAAOF,cAAc,EAGxB,IAAMuD,YAAclF,YAAY,SAACwE,MAAsC,CACrE,IAAMzD,aAAe,AAACyD,MAAMd,MAAM,CAAiB3C,YAAY,CAE/D,GAAI,CAACA,cAAgBA,aAAa0D,OAAO,GAAK,MAAO,CACnD,MACF,CAAC,AACD,IAAMU,KAAOpE,qBAAAA,sBAAAA,KAAAA,EAAAA,aAAcqE,sBAAsB,CAAC,qBAElD,GAAID,aAAAA,cAAAA,KAAAA,EAAAA,KAAML,MAAM,CAAE,CAChB,IAAMO,QAAuBtE,aAAa4D,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAEzE,GAAIU,QAAQC,YAAY,CAAGD,QAAQE,YAAY,EAAIJ,IAAI,CAAC,EAAE,CAACK,SAAS,GAAKH,QAAQG,SAAS,CAAE,CAE1FL,IAAI,CAAC,EAAE,CAACK,SAAS,CAAGH,QAAQG,SAAS,AACvC,CAAC,AACH,CAAC,AACH,EAAG,EAAE,EACL,IAAMC,aAAezF,YAAY,SAACuD,EAAa,CAC7C,GAAI,CAACZ,QAAQE,OAAO,CAACiC,MAAM,CAAE,MAAO,CACpC,IAAMY,GAAKnC,EAAEG,MAAM,CACnB,IAAMU,IAAM/D,aAAaqF,IAEzB,IAAI5E,OAAmC,IAAI,CAE3C6B,QAAQE,OAAO,CAAC5B,OAAO,CAAC,SAACC,EAAM,CAC7B,GAAIkD,IAAMlD,EAAEkD,GAAG,CAAG,CAACsB,GAAGH,YAAY,CAAG,EAAGzE,OAASI,EAAEJ,MAAM,AAAC,AAC5D,GAEA,GAAIA,OAAQ,CACVD,aAAaC,OACf,CAAC,AACH,EAAG,EAAE,EAELb,UAAU,UAAM,KACd6B,GAAAA,EAAAA,IAAAA,8BAAAA,aAAAA,KAAAA,EAAAA,IAAsB6D,iBAAiB,SAAUF,cACjD,OAAO,UAAM,KACX3D,GAAAA,EAAAA,IAAAA,8BAAAA,aAAAA,KAAAA,EAAAA,IAAsB8D,oBAAoB,SAAUH,aACtD,CACF,EAAG,CAAC3D,mBAAoB2D,aAAa,EAErC,IAAMI,IAAM3F,QAAQ,kBAAMK,WAAW,CAACC,aAAa,gBAAiBgB,UAAU,GAAG,CAACA,UAAU,EAE5F,OACE,oBAACzB,cACC,oBAAC+F,OACC7D,IAAKA,IACLT,UAAWqE,IACXpE,MAAOA,MACPsE,wBAAyB,CACvBC,OAAQ1D,UACV,EACA2D,QAAS1B,YACT2B,QAAShB,cAEV1C,QAAQsC,MAAM,CACb,oBAAClE,aACCuF,OAAQ3D,QACRN,QAASA,QACTkE,QAAS,kBAAMjE,WAAW,KAAK,GAC/BkE,MAAOjE,WACPkE,cAAejE,gBAEf,IAAI,CAGd,CAEA,gBAAevC,MAAMyG,IAAI,CAAChF,SAAUd,QAAS"}
1
+ {"version":3,"sources":["../../components/markdown/index.tsx"],"sourcesContent":["import React, { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { FC, MouseEvent, WheelEvent } from 'react';\nimport {\n getScrollTop,\n setClipboard,\n classNames,\n getPrefixCls,\n isEqual,\n isSvgElement,\n} from '../utils';\nimport { getMarkedImgList, markdownUtil } from './markdown-util';\nimport { PhotoSlider } from 'react-photo-view';\nimport type { DataType as PhotoViewDataType } from 'react-photo-view/dist/types';\nimport 'react-photo-view/dist/react-photo-view.css';\nimport './index.global.less';\n\nexport type CodeBlockToolType = Array<'copy'>;\n\nexport interface MarkdownProps {\n className?: string;\n style?: React.CSSProperties;\n /** md内容 */\n text?: string;\n /** 开启图片查看器 */\n pictureViewer?: boolean;\n /** 显示代码块行号 */\n langLineNumber?: boolean;\n /** 开启代码块工具条 */\n tools?: CodeBlockToolType;\n /** 指定滚动的容器 */\n getAnchorContainer?: () => HTMLElement;\n /** 渲染KateX数学公式 */\n tex?: boolean;\n}\n\nexport type AnchorType = {\n anchor: HTMLAnchorElement;\n top: number;\n};\n\nconst toggleAnchor = (anchor: HTMLAnchorElement) => {\n anchor.offsetParent?.querySelectorAll('li')?.forEach((a) => {\n a.classList.remove('active');\n });\n anchor.parentElement?.classList.add('active');\n};\n\nconst Markdown: FC<MarkdownProps> = ({\n className,\n style,\n text,\n pictureViewer = true,\n langLineNumber = true,\n tools = ['copy'],\n getAnchorContainer = () => window,\n tex,\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n const [visible, setVisible] = useState(false);\n const [photoIndex, setPhotoIndex] = useState(0);\n const [htmlString, setHtmlString] = useState<string>('');\n const [imgList, setImgList] = useState<PhotoViewDataType[]>([]);\n const htmlStrRef = useRef<string>(htmlString);\n const anchors = useRef<AnchorType[]>([]);\n\n useMemo(() => {\n let str = htmlStrRef.current;\n\n if (text) {\n str = markdownUtil(text, {\n langLineNumber,\n langToolbar: tools,\n tex: tex,\n });\n } else {\n str = '';\n }\n if (str !== htmlStrRef.current) {\n Object.assign(htmlStrRef, {\n current: str,\n });\n setHtmlString(str);\n }\n }, [text, langLineNumber, tools, tex]);\n\n useEffect(() => {\n const timer: NodeJS.Timeout = setTimeout(() => {\n window.Prism.highlightAll();\n if (typeof timer === 'number') clearTimeout(timer);\n }, 0);\n\n if (pictureViewer) {\n setImgList(getMarkedImgList(htmlString));\n }\n return () => {\n if (typeof timer === 'number') {\n clearTimeout(timer);\n }\n };\n }, [htmlString, pictureViewer]);\n\n const handleAnchor = (e: Event) => {\n e.preventDefault();\n e.stopPropagation();\n toggleAnchor(e.target as HTMLAnchorElement);\n ref.current\n ?.querySelector(decodeURIComponent((e.target as HTMLAnchorElement)?.hash))\n ?.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n });\n };\n\n useEffect(() => {\n const _anchors: AnchorType[] = [];\n\n ref.current?.querySelectorAll('.markdown-toc li a')?.forEach((e) => {\n const a = e as HTMLAnchorElement;\n const _el = ref.current?.querySelector(\n decodeURIComponent((a as HTMLAnchorElement)?.hash)\n ) as HTMLElement;\n\n _anchors.push({\n anchor: a,\n top: _el.offsetTop,\n });\n (e as HTMLAnchorElement).onclick = handleAnchor;\n });\n\n Object.assign(anchors, {\n current: _anchors,\n });\n }, [htmlString]);\n\n const handleClick = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n const target = event.target as HTMLElement;\n\n if (isSvgElement(target)) return;\n if (target.tagName === 'IMG' && pictureViewer) {\n const arr = ref.current?.getElementsByTagName('img') || [];\n\n for (let i = 0, len = arr.length; i < len; i++) {\n if (arr[i] === target) {\n setPhotoIndex(i);\n setVisible(true);\n }\n }\n } else if (target.className.includes('toolbar-copy')) {\n const offsetParent = target.offsetParent as HTMLElement;\n\n if (!offsetParent?.hasAttribute('data-copy')) {\n setClipboard(offsetParent?.innerText, offsetParent);\n }\n }\n },\n [pictureViewer]\n );\n\n const handleWheel = useCallback((event: WheelEvent<HTMLDivElement>) => {\n const offsetParent = (event.target as HTMLElement).offsetParent;\n\n if (!offsetParent || offsetParent.tagName !== 'PRE') {\n return;\n }\n const rows = offsetParent?.getElementsByClassName('line-numbers-rows');\n\n if (rows?.length) {\n const codeTag: HTMLElement = offsetParent.getElementsByTagName('code')[0];\n\n if (codeTag.scrollHeight - codeTag.offsetHeight && rows[0].scrollTop !== codeTag.scrollTop) {\n // 可滚动高度大于0\n rows[0].scrollTop = codeTag.scrollTop;\n }\n }\n }, []);\n const handleScroll = useCallback((e: Event) => {\n if (!anchors.current.length) return;\n const el = e.target as HTMLElement;\n const top = getScrollTop(el);\n\n let anchor: HTMLAnchorElement | null = null;\n\n anchors.current.forEach((a) => {\n if (top - a.top > -el.offsetHeight / 2) anchor = a.anchor;\n });\n\n if (anchor) {\n toggleAnchor(anchor);\n }\n }, []);\n\n useEffect(() => {\n getAnchorContainer()?.addEventListener('scroll', handleScroll);\n return () => {\n getAnchorContainer()?.removeEventListener('scroll', handleScroll);\n };\n }, [getAnchorContainer, handleScroll]);\n\n const cls = useMemo(() => classNames([getPrefixCls('markdown-box'), className]), [className]);\n\n return (\n <Fragment>\n <div\n ref={ref}\n className={cls}\n style={style}\n dangerouslySetInnerHTML={{\n __html: htmlString,\n }}\n onClick={handleClick}\n onWheel={handleWheel}\n />\n {imgList.length ? (\n <PhotoSlider\n images={imgList}\n visible={visible}\n onClose={() => setVisible(false)}\n index={photoIndex}\n onIndexChange={setPhotoIndex}\n />\n ) : null}\n </Fragment>\n );\n};\n\nexport default React.memo(Markdown, isEqual);\n"],"names":["React","Fragment","useCallback","useEffect","useMemo","useRef","useState","getScrollTop","setClipboard","classNames","getPrefixCls","isEqual","isSvgElement","getMarkedImgList","markdownUtil","PhotoSlider","toggleAnchor","anchor","offsetParent","querySelectorAll","forEach","a","classList","remove","parentElement","add","Markdown","className","style","text","pictureViewer","langLineNumber","tools","getAnchorContainer","window","tex","ref","visible","setVisible","photoIndex","setPhotoIndex","htmlString","setHtmlString","imgList","setImgList","htmlStrRef","anchors","str","current","langToolbar","Object","assign","timer","setTimeout","Prism","highlightAll","clearTimeout","handleAnchor","e","preventDefault","stopPropagation","target","querySelector","decodeURIComponent","hash","scrollIntoView","behavior","block","_anchors","_el","push","top","offsetTop","onclick","handleClick","event","tagName","arr","getElementsByTagName","i","len","length","includes","hasAttribute","innerText","handleWheel","rows","getElementsByClassName","codeTag","scrollHeight","offsetHeight","scrollTop","handleScroll","el","addEventListener","removeEventListener","cls","div","dangerouslySetInnerHTML","__html","onClick","onWheel","images","onClose","index","onIndexChange","memo"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key]}}return target}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key]}return target}import marked from"marked-completed";import{entityToString}from"../utils";import*as Prism from"./prism.js";import katex from"katex";import"katex/dist/katex.css";var renderer=new marked.Renderer;var replacer=function(blockRegex,inlineRegex){return function(text){text=text.replace(blockRegex,function(_,expression){return katex.renderToString(expression,{displayMode:true})});text=text.replace(inlineRegex,function(_,expression){return katex.renderToString(expression,{displayMode:false,output:"html"})});return text}}(/\$\$([\s\S]+?)\$\$/g,/\$([^\n\s]+?)\$/g);["listitem","paragraph","tablecell","text"].forEach(function(type){var original=renderer[type];renderer[type]=function(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}args[0]=replacer(args[0]);return original(args)}});marked.setOptions({highlight:function highlight(code,lang){var LANGUAGE_REGEX=/^diff-([\w-]+)/i;if(Prism.languages[lang]){return Prism.highlight(code,Prism.languages[lang],lang)}else if(LANGUAGE_REGEX.test(lang)){Prism.languages[lang]=Prism.languages.diff;return Prism.highlight(code,Prism.languages[lang],lang)}return Prism.highlight(code,Prism.languages.markup,"markup")},headerPrefix:"# ",langLineNumber:true,langToolbar:["copy"],breaks:true,pedantic:false,smartLists:true,smartypants:true,xhtml:true});export var markdownUtil=function(text){var option=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};var tex=option.tex,opt=_objectWithoutProperties(option,["tex"]);if(tex){opt.renderer=renderer}return marked(text,opt)};export var getMarkedImgList=function(text){if(!text)return[];var imageList=text.match(/role=('|")dialog('|") src=('|")(.*?) alt=('|")(.*?)('|")/g);var imageArr=[];if(imageList){for(var i=0,len=imageList.length;i<len;i++){var params=new URLSearchParams(entityToString(imageList[i].replace(/('|")/g,"").replace(/ src=/,"&src=").replace(/ alt=/,"&alt=")));imageArr.push({intro:params.get("alt")||""+i,src:params.get("src")||"",key:i})}}return imageArr};
1
+ function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key]}}return target}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key]}return target}import marked from"marked-completed";import{entityToString}from"../utils";import*as Prism from"./prism.js";import katex from"katex";import"katex/dist/katex.css";var renderer=new marked.Renderer;var replacer=function(blockRegex,inlineRegex){return function(text){text=text.replace(blockRegex,function(_,expression){return katex.renderToString(expression,{throwOnError:false,displayMode:true})});text=text.replace(inlineRegex,function(_,expression){return katex.renderToString(expression,{displayMode:false,output:"html"})});return text}}(/\$\$([\s\S]+?)\$\$/g,/\$([^\n\s]+?)\$/g);["listitem","paragraph","tablecell","text"].forEach(function(type){var original=renderer[type];renderer[type]=function(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}args[0]=replacer(args[0]);return original(args)}});marked.setOptions({highlight:function highlight(code,lang){var LANGUAGE_REGEX=/^diff-([\w-]+)/i;if(Prism.languages[lang]){return Prism.highlight(code,Prism.languages[lang],lang)}else if(LANGUAGE_REGEX.test(lang)){Prism.languages[lang]=Prism.languages.diff;return Prism.highlight(code,Prism.languages[lang],lang)}return Prism.highlight(code,Prism.languages.markup,"markup")},headerPrefix:"# ",langLineNumber:true,langToolbar:["copy"],breaks:true,pedantic:false,smartLists:true,smartypants:true,xhtml:true});export var markdownUtil=function(text){var option=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};var tex=option.tex,opt=_objectWithoutProperties(option,["tex"]);if(tex){opt.renderer=renderer}return marked(text,opt)};export var getMarkedImgList=function(text){if(!text)return[];var imageList=text.match(/role=('|")dialog('|") src=('|")(.*?) alt=('|")(.*?)('|")/g);var imageArr=[];if(imageList){for(var i=0,len=imageList.length;i<len;i++){var params=new URLSearchParams(entityToString(imageList[i].replace(/('|")/g,"").replace(/ src=/,"&src=").replace(/ alt=/,"&alt=")));imageArr.push({intro:params.get("alt")||""+i,src:params.get("src")||"",key:i})}}return imageArr};
2
2
  //# sourceMappingURL=markdown-util.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/markdown/markdown-util.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport marked from 'marked-completed';\nimport { entityToString } from '../utils';\nimport type { DataType as PhotoViewDataType } from 'react-photo-view/dist/types';\nimport * as Prism from './prism.js';\nimport katex from 'katex';\nimport 'katex/dist/katex.css';\n\nconst renderer = new marked.Renderer();\n\nconst replacer = ((blockRegex, inlineRegex) => (text: string) => {\n text = text.replace(blockRegex, (_, expression) => {\n return katex.renderToString(expression, { displayMode: true });\n });\n\n text = text.replace(inlineRegex, (_, expression) => {\n return katex.renderToString(expression, { displayMode: false, output: 'html' });\n });\n\n return text;\n})(/\\$\\$([\\s\\S]+?)\\$\\$/g, /\\$([^\\n\\s]+?)\\$/g);\n\n['listitem', 'paragraph', 'tablecell', 'text'].forEach((type) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const original = renderer[type as keyof marked.Renderer] as any;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (renderer[type as keyof marked.Renderer] as any) = (...args: string[]) => {\n args[0] = replacer(args[0]);\n return original(args);\n };\n});\n\nmarked.setOptions({\n highlight: function (code: string, lang: string) {\n const LANGUAGE_REGEX = /^diff-([\\w-]+)/i;\n\n if (Prism.languages[lang]) {\n return Prism.highlight(code, Prism.languages[lang], lang);\n } else if (LANGUAGE_REGEX.test(lang)) {\n Prism.languages[lang] = Prism.languages.diff;\n return Prism.highlight(code, Prism.languages[lang], lang);\n }\n\n return Prism.highlight(code, Prism.languages.markup, 'markup');\n },\n headerPrefix: '# ',\n langLineNumber: true,\n langToolbar: ['copy'],\n breaks: true,\n pedantic: false,\n smartLists: true,\n smartypants: true,\n xhtml: true,\n});\n\n/**\n * Markdown to Html\n * @param {string} text Markdown文本\n * @param {MarkedOptions} option MarkedOptions\n * @returns {string} Html文本\n */\nexport const markdownUtil = (\n text: string,\n option: marked.MarkedOptions & { tex?: boolean } = {}\n): string => {\n const { tex, ...opt } = option;\n\n if (tex) {\n opt.renderer = renderer;\n }\n return marked(text, opt);\n};\n\n/**\n * 提取md图片src\n * @param {string} text HTML string\n * @returns {PhotoViewDataType[]} PhotoViewDataType\n */\nexport const getMarkedImgList = (text: string): PhotoViewDataType[] => {\n if (!text) return [];\n const imageList = text.match(/role=('|\")dialog('|\") src=('|\")(.*?) alt=('|\")(.*?)('|\")/g);\n const imageArr = [];\n\n if (imageList) {\n for (let i = 0, len = imageList.length; i < len; i++) {\n const params: URLSearchParams = new URLSearchParams(\n entityToString(\n imageList[i].replace(/('|\")/g, '').replace(/ src=/, '&src=').replace(/ alt=/, '&alt=')\n )\n );\n\n imageArr.push({\n intro: params.get('alt') || '' + i,\n src: params.get('src') || '',\n key: i,\n });\n }\n }\n return imageArr;\n};\n"],"names":["marked","entityToString","Prism","katex","renderer","Renderer","replacer","blockRegex","inlineRegex","text","replace","_","expression","renderToString","displayMode","output","forEach","type","original","args","setOptions","highlight","code","lang","LANGUAGE_REGEX","languages","test","diff","markup","headerPrefix","langLineNumber","langToolbar","breaks","pedantic","smartLists","smartypants","xhtml","markdownUtil","option","tex","opt","getMarkedImgList","imageList","match","imageArr","i","len","length","params","URLSearchParams","push","intro","get","src","key"],"mappings":"AACA,osBAAA,OAAOA,WAAY,kBAAmB,AACtC,QAASC,cAAc,KAAQ,UAAW,AAE1C,WAAYC,UAAW,YAAa,AACpC,QAAOC,UAAW,OAAQ,AAC1B,OAAO,sBAAuB,CAE9B,IAAMC,SAAW,IAAIJ,OAAOK,QAAQ,CAEpC,IAAMC,SAAW,AAAC,SAACC,WAAYC,oBAAgB,SAACC,KAAiB,CAC/DA,KAAOA,KAAKC,OAAO,CAACH,WAAY,SAACI,EAAGC,WAAe,CACjD,OAAOT,MAAMU,cAAc,CAACD,WAAY,CAAEE,YAAa,IAAI,AAAC,EAC9D,GAEAL,KAAOA,KAAKC,OAAO,CAACF,YAAa,SAACG,EAAGC,WAAe,CAClD,OAAOT,MAAMU,cAAc,CAACD,WAAY,CAAEE,YAAa,KAAK,CAAEC,OAAQ,MAAO,EAC/E,GAEA,OAAON,IACT,GAAG,sBAAuB,oBAE1B,CAAC,WAAY,YAAa,YAAa,OAAO,CAACO,OAAO,CAAC,SAACC,KAAS,CAE/D,IAAMC,SAAWd,QAAQ,CAACa,KAA8B,AAGvDb,CAAAA,QAAQ,CAACa,KAA8B,CAAW,UAAuB,+BAAnBE,8CAAAA,2BACrDA,IAAI,CAAC,EAAE,CAAGb,SAASa,IAAI,CAAC,EAAE,EAC1B,OAAOD,SAASC,KAClB,CACF,GAEAnB,OAAOoB,UAAU,CAAC,CAChBC,UAAW,SAAXA,UAAqBC,IAAY,CAAEC,IAAY,CAAE,CAC/C,IAAMC,eAAiB,kBAEvB,GAAItB,MAAMuB,SAAS,CAACF,KAAK,CAAE,CACzB,OAAOrB,MAAMmB,SAAS,CAACC,KAAMpB,MAAMuB,SAAS,CAACF,KAAK,CAAEA,KACtD,MAAO,GAAIC,eAAeE,IAAI,CAACH,MAAO,CACpCrB,MAAMuB,SAAS,CAACF,KAAK,CAAGrB,MAAMuB,SAAS,CAACE,IAAI,CAC5C,OAAOzB,MAAMmB,SAAS,CAACC,KAAMpB,MAAMuB,SAAS,CAACF,KAAK,CAAEA,KACtD,CAAC,AAED,OAAOrB,MAAMmB,SAAS,CAACC,KAAMpB,MAAMuB,SAAS,CAACG,MAAM,CAAE,SACvD,EACAC,aAAc,KACdC,eAAgB,IAAI,CACpBC,YAAa,CAAC,OAAO,CACrBC,OAAQ,IAAI,CACZC,SAAU,KAAK,CACfC,WAAY,IAAI,CAChBC,YAAa,IAAI,CACjBC,MAAO,IAAI,AACb,EAQA,QAAO,IAAMC,aAAe,SAC1B5B,KAEW,KADX6B,8DAAmD,CAAC,EAEpD,IAAM,AAAEC,IAAgBD,OAAhBC,IAAQC,6BAAQF,QAAhBC,QAER,GAAIA,IAAK,CACPC,IAAIpC,QAAQ,CAAGA,QACjB,CAAC,AACD,OAAOJ,OAAOS,KAAM+B,IACtB,CAAE,AAOF,QAAO,IAAMC,iBAAmB,SAAChC,KAAsC,CACrE,GAAI,CAACA,KAAM,MAAO,EAAE,AAAC,CACrB,IAAMiC,UAAYjC,KAAKkC,KAAK,CAAC,6DAC7B,IAAMC,SAAW,EAAE,CAEnB,GAAIF,UAAW,CACb,IAAK,IAAIG,EAAI,EAAGC,IAAMJ,UAAUK,MAAM,CAAEF,EAAIC,IAAKD,IAAK,CACpD,IAAMG,OAA0B,IAAIC,gBAClChD,eACEyC,SAAS,CAACG,EAAE,CAACnC,OAAO,CAAC,SAAU,IAAIA,OAAO,CAAC,QAAS,SAASA,OAAO,CAAC,QAAS,WAIlFkC,SAASM,IAAI,CAAC,CACZC,MAAOH,OAAOI,GAAG,CAAC,QAAU,GAAKP,EACjCQ,IAAKL,OAAOI,GAAG,CAAC,QAAU,GAC1BE,IAAKT,CACP,EACF,CACF,CAAC,AACD,OAAOD,QACT,CAAE"}
1
+ {"version":3,"sources":["../../components/markdown/markdown-util.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport marked from 'marked-completed';\nimport { entityToString } from '../utils';\nimport type { DataType as PhotoViewDataType } from 'react-photo-view/dist/types';\nimport * as Prism from './prism.js';\nimport katex from 'katex';\nimport 'katex/dist/katex.css';\n\nconst renderer = new marked.Renderer();\n\nconst replacer = ((blockRegex, inlineRegex) => (text: string) => {\n text = text.replace(blockRegex, (_, expression) => {\n return katex.renderToString(expression, { throwOnError: false, displayMode: true });\n });\n\n text = text.replace(inlineRegex, (_, expression) => {\n return katex.renderToString(expression, { displayMode: false, output: 'html' });\n });\n\n return text;\n})(/\\$\\$([\\s\\S]+?)\\$\\$/g, /\\$([^\\n\\s]+?)\\$/g);\n\n['listitem', 'paragraph', 'tablecell', 'text'].forEach((type) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const original = renderer[type as keyof marked.Renderer] as any;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (renderer[type as keyof marked.Renderer] as any) = (...args: string[]) => {\n args[0] = replacer(args[0]);\n return original(args);\n };\n});\n\nmarked.setOptions({\n highlight: function (code: string, lang: string) {\n const LANGUAGE_REGEX = /^diff-([\\w-]+)/i;\n\n if (Prism.languages[lang]) {\n return Prism.highlight(code, Prism.languages[lang], lang);\n } else if (LANGUAGE_REGEX.test(lang)) {\n Prism.languages[lang] = Prism.languages.diff;\n return Prism.highlight(code, Prism.languages[lang], lang);\n }\n\n return Prism.highlight(code, Prism.languages.markup, 'markup');\n },\n headerPrefix: '# ',\n langLineNumber: true,\n langToolbar: ['copy'],\n breaks: true,\n pedantic: false,\n smartLists: true,\n smartypants: true,\n xhtml: true,\n});\n\n/**\n * Markdown to Html\n * @param {string} text Markdown文本\n * @param {MarkedOptions} option MarkedOptions\n * @returns {string} Html文本\n */\nexport const markdownUtil = (\n text: string,\n option: marked.MarkedOptions & { tex?: boolean } = {}\n): string => {\n const { tex, ...opt } = option;\n\n if (tex) {\n opt.renderer = renderer;\n }\n return marked(text, opt);\n};\n\n/**\n * 提取md图片src\n * @param {string} text HTML string\n * @returns {PhotoViewDataType[]} PhotoViewDataType\n */\nexport const getMarkedImgList = (text: string): PhotoViewDataType[] => {\n if (!text) return [];\n const imageList = text.match(/role=('|\")dialog('|\") src=('|\")(.*?) alt=('|\")(.*?)('|\")/g);\n const imageArr = [];\n\n if (imageList) {\n for (let i = 0, len = imageList.length; i < len; i++) {\n const params: URLSearchParams = new URLSearchParams(\n entityToString(\n imageList[i].replace(/('|\")/g, '').replace(/ src=/, '&src=').replace(/ alt=/, '&alt=')\n )\n );\n\n imageArr.push({\n intro: params.get('alt') || '' + i,\n src: params.get('src') || '',\n key: i,\n });\n }\n }\n return imageArr;\n};\n"],"names":["marked","entityToString","Prism","katex","renderer","Renderer","replacer","blockRegex","inlineRegex","text","replace","_","expression","renderToString","throwOnError","displayMode","output","forEach","type","original","args","setOptions","highlight","code","lang","LANGUAGE_REGEX","languages","test","diff","markup","headerPrefix","langLineNumber","langToolbar","breaks","pedantic","smartLists","smartypants","xhtml","markdownUtil","option","tex","opt","getMarkedImgList","imageList","match","imageArr","i","len","length","params","URLSearchParams","push","intro","get","src","key"],"mappings":"AACA,osBAAA,OAAOA,WAAY,kBAAmB,AACtC,QAASC,cAAc,KAAQ,UAAW,AAE1C,WAAYC,UAAW,YAAa,AACpC,QAAOC,UAAW,OAAQ,AAC1B,OAAO,sBAAuB,CAE9B,IAAMC,SAAW,IAAIJ,OAAOK,QAAQ,CAEpC,IAAMC,SAAW,AAAC,SAACC,WAAYC,oBAAgB,SAACC,KAAiB,CAC/DA,KAAOA,KAAKC,OAAO,CAACH,WAAY,SAACI,EAAGC,WAAe,CACjD,OAAOT,MAAMU,cAAc,CAACD,WAAY,CAAEE,aAAc,KAAK,CAAEC,YAAa,IAAI,AAAC,EACnF,GAEAN,KAAOA,KAAKC,OAAO,CAACF,YAAa,SAACG,EAAGC,WAAe,CAClD,OAAOT,MAAMU,cAAc,CAACD,WAAY,CAAEG,YAAa,KAAK,CAAEC,OAAQ,MAAO,EAC/E,GAEA,OAAOP,IACT,GAAG,sBAAuB,oBAE1B,CAAC,WAAY,YAAa,YAAa,OAAO,CAACQ,OAAO,CAAC,SAACC,KAAS,CAE/D,IAAMC,SAAWf,QAAQ,CAACc,KAA8B,AAGvDd,CAAAA,QAAQ,CAACc,KAA8B,CAAW,UAAuB,+BAAnBE,8CAAAA,2BACrDA,IAAI,CAAC,EAAE,CAAGd,SAASc,IAAI,CAAC,EAAE,EAC1B,OAAOD,SAASC,KAClB,CACF,GAEApB,OAAOqB,UAAU,CAAC,CAChBC,UAAW,SAAXA,UAAqBC,IAAY,CAAEC,IAAY,CAAE,CAC/C,IAAMC,eAAiB,kBAEvB,GAAIvB,MAAMwB,SAAS,CAACF,KAAK,CAAE,CACzB,OAAOtB,MAAMoB,SAAS,CAACC,KAAMrB,MAAMwB,SAAS,CAACF,KAAK,CAAEA,KACtD,MAAO,GAAIC,eAAeE,IAAI,CAACH,MAAO,CACpCtB,MAAMwB,SAAS,CAACF,KAAK,CAAGtB,MAAMwB,SAAS,CAACE,IAAI,CAC5C,OAAO1B,MAAMoB,SAAS,CAACC,KAAMrB,MAAMwB,SAAS,CAACF,KAAK,CAAEA,KACtD,CAAC,AAED,OAAOtB,MAAMoB,SAAS,CAACC,KAAMrB,MAAMwB,SAAS,CAACG,MAAM,CAAE,SACvD,EACAC,aAAc,KACdC,eAAgB,IAAI,CACpBC,YAAa,CAAC,OAAO,CACrBC,OAAQ,IAAI,CACZC,SAAU,KAAK,CACfC,WAAY,IAAI,CAChBC,YAAa,IAAI,CACjBC,MAAO,IAAI,AACb,EAQA,QAAO,IAAMC,aAAe,SAC1B7B,KAEW,KADX8B,8DAAmD,CAAC,EAEpD,IAAM,AAAEC,IAAgBD,OAAhBC,IAAQC,6BAAQF,QAAhBC,QAER,GAAIA,IAAK,CACPC,IAAIrC,QAAQ,CAAGA,QACjB,CAAC,AACD,OAAOJ,OAAOS,KAAMgC,IACtB,CAAE,AAOF,QAAO,IAAMC,iBAAmB,SAACjC,KAAsC,CACrE,GAAI,CAACA,KAAM,MAAO,EAAE,AAAC,CACrB,IAAMkC,UAAYlC,KAAKmC,KAAK,CAAC,6DAC7B,IAAMC,SAAW,EAAE,CAEnB,GAAIF,UAAW,CACb,IAAK,IAAIG,EAAI,EAAGC,IAAMJ,UAAUK,MAAM,CAAEF,EAAIC,IAAKD,IAAK,CACpD,IAAMG,OAA0B,IAAIC,gBAClCjD,eACE0C,SAAS,CAACG,EAAE,CAACpC,OAAO,CAAC,SAAU,IAAIA,OAAO,CAAC,QAAS,SAASA,OAAO,CAAC,QAAS,WAIlFmC,SAASM,IAAI,CAAC,CACZC,MAAOH,OAAOI,GAAG,CAAC,QAAU,GAAKP,EACjCQ,IAAKL,OAAOI,GAAG,CAAC,QAAU,GAC1BE,IAAKT,CACP,EACF,CACF,CAAC,AACD,OAAOD,QACT,CAAE"}
@@ -0,0 +1,41 @@
1
+ .wrap {
2
+ position: relative;
3
+ width: 100%;
4
+ height: 32px;
5
+ margin: 10% auto;
6
+ font-size: 0;
7
+ overflow: hidden;
8
+ box-sizing: border-box;
9
+
10
+ .cont {
11
+ position: absolute;
12
+ top: 0;
13
+ left: 0;
14
+ width: 200%;
15
+ animation: 5s move infinite linear;
16
+ }
17
+
18
+ .txt {
19
+ display: inline-block;
20
+ width: 50%;
21
+ border-left: 1px solid #fff;
22
+ text-align: center;
23
+ margin-top: 5px;
24
+ }
25
+
26
+ &:hover {
27
+ .cont {
28
+ animation-play-state: paused;
29
+ }
30
+ }
31
+ }
32
+
33
+ @keyframes move {
34
+ 0% {
35
+ left: 0;
36
+ }
37
+
38
+ 100% {
39
+ left: -100%;
40
+ }
41
+ }
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import './index.global.less';
3
+ export interface TooltipProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ className?: string;
5
+ }
6
+ declare const _default: React.NamedExoticComponent<TooltipProps>;
7
+ export default _default;
@@ -0,0 +1,39 @@
1
+ .tooltip {
2
+ position: relative;
3
+ background: #000;
4
+ color: #fff;
5
+ padding: 8px 16px;
6
+ border-radius: 4px;
7
+ font-size: 14px;
8
+ filter:
9
+ drop-shadow(
10
+ 1px 2px 8px hsla(220deg, 0%, 0%, 0.3)
11
+ )
12
+ drop-shadow(
13
+ 2px 4px 16px hsla(220deg, 0%, 0%, 0.3)
14
+ )
15
+ drop-shadow(
16
+ 4px 8px 32px hsla(220deg, 0%, 0%, 0.3)
17
+ );
18
+
19
+ &::before {
20
+ content: '';
21
+ position: absolute;
22
+ bottom: 0;
23
+ left: 0;
24
+ right: 0;
25
+ margin: auto;
26
+ width: 16px;
27
+ height: 10px;
28
+ background: inherit;
29
+ clip-path: polygon(
30
+ 0% 0%,
31
+ 50% 100%,
32
+ 100% 0%
33
+ );
34
+ transform: translateY(
35
+ calc(+100% - 1px)
36
+ );
37
+ }
38
+
39
+ }
@@ -0,0 +1,2 @@
1
+ function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};return _extends.apply(this,arguments)}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key]}}return target}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key]}return target}import React,{memo,useMemo}from"react";import{classNames,getPrefixCls,isEqual}from"../utils";import"./index.global.less";var Tooltip=function(_param){var className=_param.className,children=_param.children,props=_objectWithoutProperties(_param,["className","children"]);var cls=useMemo(function(){return classNames([getPrefixCls("tooltip"),className])},[className]);return React.createElement("div",_extends({className:cls,role:"tooltip"},props),children)};export default memo(Tooltip,isEqual);
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../components/tooltip/index.tsx"],"sourcesContent":["import React, { memo, useMemo } from 'react';\nimport { classNames, getPrefixCls, isEqual } from '../utils';\nimport './index.global.less';\n\nexport interface TooltipProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n}\n\nconst Tooltip: React.FC<TooltipProps> = ({ className, children, ...props }) => {\n const cls = useMemo(() => classNames([getPrefixCls('tooltip'), className]), [className]);\n\n return (\n <div className={cls} role=\"tooltip\" {...props}>\n {children}\n </div>\n );\n};\n\nexport default memo(Tooltip, isEqual);\n"],"names":["React","memo","useMemo","classNames","getPrefixCls","isEqual","Tooltip","className","children","props","cls","div","role"],"mappings":"AAAA,w9BAAA,OAAOA,OAASC,IAAI,CAAEC,OAAO,KAAQ,OAAQ,AAC7C,QAASC,UAAU,CAAEC,YAAY,CAAEC,OAAO,KAAQ,UAAW,AAC7D,OAAO,qBAAsB,CAM7B,IAAMC,QAAkC,gBAAuC,KAApCC,iBAAAA,UAAWC,gBAAAA,SAAaC,uCAAxBF,YAAWC,aACpD,IAAME,IAAMR,QAAQ,kBAAMC,WAAW,CAACC,aAAa,WAAYG,UAAU,GAAG,CAACA,UAAU,EAEvF,OACE,oBAACI,gBAAIJ,UAAWG,IAAKE,KAAK,WAAcH,OACrCD,SAGP,CAEA,gBAAeP,KAAKK,QAASD,QAAS"}