neko-ui 1.0.16 → 1.0.17

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 (79) hide show
  1. package/es/avatar/index.js +1 -1
  2. package/es/avatar/index.js.map +1 -1
  3. package/es/back-top/index.js +1 -1
  4. package/es/back-top/index.js.map +1 -1
  5. package/es/button/index.js +1 -1
  6. package/es/button/index.js.map +1 -1
  7. package/es/capture-screen/index.js +1 -1
  8. package/es/capture-screen/index.js.map +1 -1
  9. package/es/cron-editor/index.js +1 -1
  10. package/es/cron-editor/index.js.map +1 -1
  11. package/es/get-prefix-cls/index.d.ts +2 -0
  12. package/es/get-prefix-cls/index.js +2 -0
  13. package/es/get-prefix-cls/index.js.map +1 -0
  14. package/es/{variables.less → get-prefix-cls/index.less} +0 -0
  15. package/es/highlight-text/index.js +1 -1
  16. package/es/highlight-text/index.js.map +1 -1
  17. package/es/index.d.ts +2 -3
  18. package/es/index.js +1 -1
  19. package/es/index.js.map +1 -1
  20. package/es/input/index.js +1 -1
  21. package/es/input/index.js.map +1 -1
  22. package/es/markdown/index.js +1 -1
  23. package/es/markdown/index.js.map +1 -1
  24. package/es/markdown/markdown-util.d.ts +1 -4
  25. package/es/markdown/markdown-util.js +1 -1
  26. package/es/markdown/markdown-util.js.map +1 -1
  27. package/es/tooltip/index.js +1 -1
  28. package/es/tooltip/index.js.map +1 -1
  29. package/es/use-theme/index.js +1 -1
  30. package/es/use-theme/index.js.map +1 -1
  31. package/es/wave-circle/index.js +1 -1
  32. package/es/wave-circle/index.js.map +1 -1
  33. package/lib/avatar/index.js +1 -1
  34. package/lib/avatar/index.js.map +1 -1
  35. package/lib/back-top/index.js +1 -1
  36. package/lib/back-top/index.js.map +1 -1
  37. package/lib/button/index.js +1 -1
  38. package/lib/button/index.js.map +1 -1
  39. package/lib/capture-screen/index.js +1 -1
  40. package/lib/capture-screen/index.js.map +1 -1
  41. package/lib/cron-editor/index.js +1 -1
  42. package/lib/cron-editor/index.js.map +1 -1
  43. package/lib/{variables.css → get-prefix-cls/index.css} +0 -0
  44. package/lib/get-prefix-cls/index.d.ts +2 -0
  45. package/lib/get-prefix-cls/index.js +2 -0
  46. package/lib/get-prefix-cls/index.js.map +1 -0
  47. package/lib/highlight-text/index.js +1 -1
  48. package/lib/highlight-text/index.js.map +1 -1
  49. package/lib/index.d.ts +2 -3
  50. package/lib/index.js +1 -1
  51. package/lib/index.js.map +1 -1
  52. package/lib/input/index.js +1 -1
  53. package/lib/input/index.js.map +1 -1
  54. package/lib/markdown/index.js +1 -1
  55. package/lib/markdown/index.js.map +1 -1
  56. package/lib/markdown/markdown-util.d.ts +1 -4
  57. package/lib/markdown/markdown-util.js +1 -1
  58. package/lib/markdown/markdown-util.js.map +1 -1
  59. package/lib/tooltip/index.js +1 -1
  60. package/lib/tooltip/index.js.map +1 -1
  61. package/lib/use-theme/index.js +1 -1
  62. package/lib/use-theme/index.js.map +1 -1
  63. package/lib/wave-circle/index.js +1 -1
  64. package/lib/wave-circle/index.js.map +1 -1
  65. package/package.json +2 -2
  66. package/es/tag/index.d.ts +0 -7
  67. package/es/tag/index.global.less +0 -25
  68. package/es/tag/index.js +0 -2
  69. package/es/tag/index.js.map +0 -1
  70. package/es/utils/index.d.ts +0 -1
  71. package/es/utils/index.js +0 -2
  72. package/es/utils/index.js.map +0 -1
  73. package/lib/tag/index.d.ts +0 -7
  74. package/lib/tag/index.global.css +0 -27
  75. package/lib/tag/index.js +0 -2
  76. package/lib/tag/index.js.map +0 -1
  77. package/lib/utils/index.d.ts +0 -1
  78. package/lib/utils/index.js +0 -2
  79. package/lib/utils/index.js.map +0 -1
@@ -1,2 +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,{useMemo}from"react";import{getPrefixCls}from"../utils";import{classNames}from"@moneko/common";import"./index.global.less";var Avatar=function(_param){var className=_param.className,_src=_param.src,src=_src===void 0?"https://gw.alipayobjects.com/zos/alicdn/HJtErOC0O/avatar.png":_src,alt=_param.alt,_imgProps=_param.imgProps,imgProps=_imgProps===void 0?{}:_imgProps,props=_objectWithoutProperties(_param,["className","src","alt","imgProps"]);var cls=useMemo(function(){return classNames([getPrefixCls("avatar"),className])},[className]);return React.createElement("div",_extends({className:cls},props),React.createElement("img",_extends({},imgProps,{src:src,alt:alt})))};export default Avatar;
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,{useMemo}from"react";import getPrefixCls from"../get-prefix-cls";import{classNames}from"@moneko/common";import"./index.global.less";var Avatar=function(_param){var className=_param.className,_src=_param.src,src=_src===void 0?"https://gw.alipayobjects.com/zos/alicdn/HJtErOC0O/avatar.png":_src,alt=_param.alt,_imgProps=_param.imgProps,imgProps=_imgProps===void 0?{}:_imgProps,props=_objectWithoutProperties(_param,["className","src","alt","imgProps"]);var cls=useMemo(function(){return classNames([getPrefixCls("avatar"),className])},[className]);return React.createElement("div",_extends({className:cls},props),React.createElement("img",_extends({},imgProps,{src:src,alt:alt})))};export default Avatar;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/avatar/index.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { getPrefixCls } from '../utils';\nimport { classNames } from '@moneko/common';\nimport './index.global.less';\n\nexport interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {\n src?: string;\n alt?: string;\n imgProps?: React.HTMLAttributes<HTMLImageElement>;\n}\n\nconst Avatar: React.FC<AvatarProps> = ({\n className,\n src = 'https://gw.alipayobjects.com/zos/alicdn/HJtErOC0O/avatar.png',\n alt,\n imgProps = {},\n ...props\n}) => {\n const cls = useMemo(() => classNames([getPrefixCls('avatar'), className]), [className]);\n\n return (\n <div className={cls} {...props}>\n <img {...imgProps} src={src} alt={alt} />\n </div>\n );\n};\n\nexport default Avatar;\n"],"names":["React","useMemo","getPrefixCls","classNames","Avatar","className","src","alt","imgProps","props","cls","div","img"],"mappings":"AAAA,w9BAAA,OAAOA,OAASC,OAAO,KAAQ,OAAQ,AACvC,QAASC,YAAY,KAAQ,UAAW,AACxC,QAASC,UAAU,KAAQ,gBAAiB,AAC5C,OAAO,qBAAsB,CAQ7B,IAAMC,OAAgC,gBAMhC,KALJC,iBAAAA,sBACAC,IAAAA,kBAAM,oEACNC,WAAAA,qBACAC,SAAAA,4BAAW,CAAC,YACTC,uCAJHJ,YACAC,MACAC,MACAC,aAGA,IAAME,IAAMT,QAAQ,kBAAME,WAAW,CAACD,aAAa,UAAWG,UAAU,GAAG,CAACA,UAAU,EAEtF,OACE,oBAACM,gBAAIN,UAAWK,KAASD,OACvB,oBAACG,kBAAQJ,UAAUF,IAAKA,IAAKC,IAAKA,OAGxC,CAEA,gBAAeH,MAAO"}
1
+ {"version":3,"sources":["../../components/avatar/index.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport getPrefixCls from '../get-prefix-cls';\nimport { classNames } from '@moneko/common';\nimport './index.global.less';\n\nexport interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {\n src?: string;\n alt?: string;\n imgProps?: React.HTMLAttributes<HTMLImageElement>;\n}\n\nconst Avatar: React.FC<AvatarProps> = ({\n className,\n src = 'https://gw.alipayobjects.com/zos/alicdn/HJtErOC0O/avatar.png',\n alt,\n imgProps = {},\n ...props\n}) => {\n const cls = useMemo(() => classNames([getPrefixCls('avatar'), className]), [className]);\n\n return (\n <div className={cls} {...props}>\n <img {...imgProps} src={src} alt={alt} />\n </div>\n );\n};\n\nexport default Avatar;\n"],"names":["React","useMemo","getPrefixCls","classNames","Avatar","className","src","alt","imgProps","props","cls","div","img"],"mappings":"AAAA,w9BAAA,OAAOA,OAASC,OAAO,KAAQ,OAAQ,AACvC,QAAOC,iBAAkB,mBAAoB,AAC7C,QAASC,UAAU,KAAQ,gBAAiB,AAC5C,OAAO,qBAAsB,CAQ7B,IAAMC,OAAgC,gBAMhC,KALJC,iBAAAA,sBACAC,IAAAA,kBAAM,oEACNC,WAAAA,qBACAC,SAAAA,4BAAW,CAAC,YACTC,uCAJHJ,YACAC,MACAC,MACAC,aAGA,IAAME,IAAMT,QAAQ,kBAAME,WAAW,CAACD,aAAa,UAAWG,UAAU,GAAG,CAACA,UAAU,EAEtF,OACE,oBAACM,gBAAIN,UAAWK,KAASD,OACvB,oBAACG,kBAAQJ,UAAUF,IAAKA,IAAKC,IAAKA,OAGxC,CAEA,gBAAeH,MAAO"}
@@ -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 ReactDOM from"react-dom";import{classNames,getMaxZindex,getPrefixCls,getScrollTop,isEqual,isFunction}from"@moneko/common";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);
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,getScrollTop,isEqual,isFunction}from"@moneko/common";import getPrefixCls from"../get-prefix-cls";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 ReactDOM from 'react-dom';\nimport {\n classNames,\n getMaxZindex,\n getPrefixCls,\n getScrollTop,\n isEqual,\n isFunction,\n} from '@moneko/common';\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,gBAAiB,AACxB,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"}
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 { classNames, getMaxZindex, getScrollTop, isEqual, isFunction } from '@moneko/common';\nimport getPrefixCls from '../get-prefix-cls';\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","getScrollTop","isEqual","isFunction","getPrefixCls","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,QAASC,UAAU,CAAEC,YAAY,CAAEC,YAAY,CAAEC,OAAO,CAAEC,UAAU,KAAQ,gBAAiB,AAC7F,QAAOC,iBAAkB,mBAAoB,AAC7C,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,GAAIb,WAAWG,QAAS,CACtB,IAAMW,IAAmBX,SAEzB,GAAIW,IAAK,CACPF,UAAYd,aAAagB,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,GAAIS,WAAWG,QAAS,KACtBA,GAAAA,EAAAA,IAAAA,kBAAAA,aAAAA,KAAAA,EAAAA,IAAUsB,iBAAiB,SAAUd,cAAe,KAAK,CAC3D,CAAC,AACD,OAAO,UAAM,CACX,GAAIX,WAAWG,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,CAACK,aAAa,YAAaK,UAAW,CAACG,MAAQR,aAAa,gBAAgB,GAC7F,CAACK,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,QAASH,QAAS"}
@@ -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{getPrefixCls}from"../utils";import{classNames,isFunction}from"@moneko/common";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;
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 getPrefixCls from"../get-prefix-cls";import{classNames,isFunction}from"@moneko/common";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 { getPrefixCls } from '../utils';\nimport { classNames, isFunction } from '@moneko/common';\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","getPrefixCls","classNames","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,YAAY,KAAQ,UAAW,AACxC,QAASC,UAAU,CAAEC,UAAU,KAAQ,gBAAiB,AACxD,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,kBACEG,WAAW,CACTD,aAAa,OACbe,MAAQf,aAAa,AAAC,OAAW,OAALe,OAC5BX,UAAYJ,aAAa,gBACzBK,OAASL,aAAa,aACtBM,MAAQN,aAAa,YACrBO,QAAUP,aAAa,cACvBQ,QAAUR,aAAa,cACvBS,OAAST,aAAa,aACtBmB,WAAanB,aAAa,eAC1Ba,UAAYb,aAAa,gBACzBU,MAAQV,aAAa,YACrBW,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,UAAWX,aAAa,aAAcY,UAGlD,CAEA,gBAAeT,MAAO"}
1
+ {"version":3,"sources":["../../components/button/index.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useRef } from 'react';\nimport getPrefixCls from '../get-prefix-cls';\nimport { classNames, isFunction } from '@moneko/common';\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","getPrefixCls","classNames","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,QAAOC,iBAAkB,mBAAoB,AAC7C,QAASC,UAAU,CAAEC,UAAU,KAAQ,gBAAiB,AACxD,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,kBACEG,WAAW,CACTD,aAAa,OACbe,MAAQf,aAAa,AAAC,OAAW,OAALe,OAC5BX,UAAYJ,aAAa,gBACzBK,OAASL,aAAa,aACtBM,MAAQN,aAAa,YACrBO,QAAUP,aAAa,cACvBQ,QAAUR,aAAa,cACvBS,OAAST,aAAa,aACtBmB,WAAanB,aAAa,eAC1Ba,UAAYb,aAAa,gBACzBU,MAAQV,aAAa,YACrBW,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,UAAWX,aAAa,aAAcY,UAGlD,CAEA,gBAAeT,MAAO"}
@@ -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 asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _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 _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_defineProperty(target,key,source[key])})}return target}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)}var __generator=this&&this.__generator||function(thisArg,body){var f,y,t,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}};import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Button}from"..";import{getPrefixCls}from"../utils";import{downloadBlob,isObject,isFunction,classNames}from"@moneko/common";import"./index.global.less";var displayMediaOptions={video:true,audio:{echoCancellation:true,noiseSuppression:true,sampleRate:44100}};var btnStatusDic={inactive:"primary",paused:"warning",recording:"success"};var CaptureScreen=function(_param){var _options=_param.options,options=_options===void 0?displayMediaOptions:_options,preview=_param.preview,controls=_param.controls,recorder=_param.recorder,className=_param.className,_captureScreenText=_param.captureScreenText,captureScreenText=_captureScreenText===void 0?"捕获屏幕":_captureScreenText,_stopCaptureText=_param.stopCaptureText,stopCaptureText=_stopCaptureText===void 0?"停止捕获":_stopCaptureText,_startRecorderText=_param.startRecorderText,startRecorderText=_startRecorderText===void 0?"开始录制":_startRecorderText,_stopRecorderText=_param.stopRecorderText,stopRecorderText=_stopRecorderText===void 0?"停止录制":_stopRecorderText,_pausedRecorderText=_param.pausedRecorderText,pausedRecorderText=_pausedRecorderText===void 0?"暂停录制":_pausedRecorderText,_recorderingText=_param.recorderingText,recorderingText=_recorderingText===void 0?"录制中":_recorderingText,_onRecorderError=_param.onRecorderError,onRecorderError=_onRecorderError===void 0?null:_onRecorderError,onStopRecorder=_param.onStopRecorder,onStartRecorder=_param.onStartRecorder,onStopCapture=_param.onStopCapture,onStartCapture=_param.onStartCapture,onRecorderDataAvailable=_param.onRecorderDataAvailable,onErrorCapture=_param.onErrorCapture,onSaveRecorder=_param.onSaveRecorder,props=_objectWithoutProperties(_param,["options","preview","controls","recorder","className","captureScreenText","stopCaptureText","startRecorderText","stopRecorderText","pausedRecorderText","recorderingText","onRecorderError","onStopRecorder","onStartRecorder","onStopCapture","onStartCapture","onRecorderDataAvailable","onErrorCapture","onSaveRecorder"]);var videoElem=useRef(null);var mediaRecorderRef=useRef(null);var mediaStreamRef=useRef(null);var chunks=useRef([]);var recorderRef=useRef(recorder);var ref=_slicedToArray(useState(null),2),mediaRecorder=ref[0],setMediaRecorder=ref[1];var ref1=_slicedToArray(useState(null),2),mediaStream=ref1[0],setMediaStream=ref1[1];var ref2=_slicedToArray(useState("inactive"),2),recordState=ref2[0],setRecordState=ref2[1];useEffect(function(){Object.assign(recorderRef,{current:recorder})},[recorder]);useEffect(function(){Object.assign(mediaStreamRef,{current:mediaStream})},[mediaStream]);useEffect(function(){Object.assign(mediaRecorderRef,{current:mediaRecorder})},[mediaRecorder]);var handleStartRecorder=useCallback(function(){if(mediaRecorderRef.current){if(isFunction(onStartRecorder)){onStartRecorder(mediaRecorderRef.current.state)}switch(mediaRecorderRef.current.state){case"inactive":mediaRecorderRef.current.start();break;case"paused":mediaRecorderRef.current.resume();break;case"recording":mediaRecorderRef.current.pause();break;default:break}setRecordState(mediaRecorderRef.current.state)}},[onStartRecorder]);var handleRecorderDataAvailable=useCallback(function(e){var ref;(ref=chunks.current)===null||ref===void 0?void 0:ref.push(e.data);if(isFunction(onRecorderDataAvailable)){onRecorderDataAvailable(e)}},[onRecorderDataAvailable]);var stopRecorder=useCallback(function(){if(mediaRecorderRef.current){if(mediaRecorderRef.current.state!=="inactive"){mediaRecorderRef.current.stop()}setRecordState(mediaRecorderRef.current.state)}if(isFunction(onStopRecorder)){onStopRecorder()}},[onStopRecorder]);var handleSaveRecorder=useCallback(function(){var ref,ref1,ref2;if(!((ref=chunks.current)===null||ref===void 0?void 0:ref.length))return;var blob=new Blob(chunks.current,{type:"video/webm"}),name=isObject(recorderRef.current)&&((ref1=recorderRef.current)===null||ref1===void 0?void 0:ref1.filename)||new Date().toISOString(),fileName=name+".webm";(ref2=chunks.current)===null||ref2===void 0?void 0:ref2.splice(0);if(isFunction(onSaveRecorder)){onSaveRecorder(blob,fileName)}else{downloadBlob(blob,fileName)}},[onSaveRecorder]);var stopCapture=useCallback(function(){stopRecorder();if(mediaStreamRef.current){var tracks=mediaStreamRef.current.getTracks();tracks===null||tracks===void 0?void 0:tracks.forEach(function(track){return track.stop()});setMediaStream(null)}if(isFunction(onStopCapture)){onStopCapture()}},[onStopCapture,stopRecorder]);var startCapture=useCallback(_asyncToGenerator(function(){var stream,err;return __generator(this,function(_state){switch(_state.label){case 0:stopCapture();_state.label=1;case 1:_state.trys.push([1,3,,4]);return[4,navigator.mediaDevices.getDisplayMedia(_objectSpread({},displayMediaOptions,options))];case 2:stream=_state.sent();if(stream){stream.addEventListener("inactive",stopCapture,false);setMediaStream(stream)}if(isFunction(onStartCapture)){onStartCapture(stream)}return[3,4];case 3:err=_state.sent();if(isFunction(onErrorCapture)){onErrorCapture(err)}return[3,4];case 4:return[2]}})}),[onErrorCapture,onStartCapture,options,stopCapture]);useEffect(function(){if(preview&&(videoElem===null||videoElem===void 0?void 0:videoElem.current)&&mediaStream){videoElem.current.srcObject=mediaStream}},[mediaStream,preview]);useEffect(function(){if((mediaStream===null||mediaStream===void 0?void 0:mediaStream.active)&&recorderRef.current){var recorderInstance=new MediaRecorder(mediaStream);recorderInstance.onstop=handleSaveRecorder;recorderInstance.onerror=onRecorderError;recorderInstance.ondataavailable=handleRecorderDataAvailable;setMediaRecorder(recorderInstance)}else{setMediaRecorder(null)}},[handleRecorderDataAvailable,handleSaveRecorder,mediaStream,onRecorderError]);useEffect(function(){var getMediaRecorderRef=function(){return mediaRecorderRef.current};var getMediaStreamRef=function(){return mediaStreamRef.current};return function(){var _mediaRecorderRef=getMediaRecorderRef();if(_mediaRecorderRef){if(_mediaRecorderRef.state!=="inactive"){_mediaRecorderRef.stop()}}var streamRef=getMediaStreamRef();if(streamRef){var tracks=streamRef.getTracks();tracks===null||tracks===void 0?void 0:tracks.forEach(function(track){return track.stop()})}}},[]);var recorderText=useMemo(function(){return({paused:pausedRecorderText,recording:recorderingText,inactive:startRecorderText})[recordState]},[pausedRecorderText,recordState,recorderingText,startRecorderText]);return React.createElement("div",_extends({className:classNames([getPrefixCls("capture-screen"),className])},props),React.createElement("div",{className:getPrefixCls("capture-screen-controller")},React.createElement(Button,{onClick:startCapture},captureScreenText),mediaStream&&React.createElement(React.Fragment,null,React.createElement(Button,{type:"error",onClick:stopCapture},stopCaptureText),recorder&&React.createElement("div",{className:getPrefixCls("capture-screen-controller-record")},React.createElement(Button,{type:btnStatusDic[recordState],onClick:handleStartRecorder},recorderText),recordState!=="inactive"&&React.createElement(Button,{type:"error",onClick:stopRecorder},stopRecorderText)))),preview&&mediaStream?React.createElement("div",{className:getPrefixCls("capture-screen-video")},React.createElement("span",{className:getPrefixCls("capture-screen-video-".concat(recordState))}),React.createElement("video",{ref:videoElem,autoPlay:true,controls:!!(mediaStream&&controls)})):null)};export default CaptureScreen;
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 asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _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 _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_defineProperty(target,key,source[key])})}return target}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)}var __generator=this&&this.__generator||function(thisArg,body){var f,y,t,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}};import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import Button from"../button";import getPrefixCls from"../get-prefix-cls";import{downloadBlob,isObject,isFunction,classNames}from"@moneko/common";import"./index.global.less";var displayMediaOptions={video:true,audio:{echoCancellation:true,noiseSuppression:true,sampleRate:44100}};var btnStatusDic={inactive:"primary",paused:"warning",recording:"success"};var CaptureScreen=function(_param){var _options=_param.options,options=_options===void 0?displayMediaOptions:_options,preview=_param.preview,controls=_param.controls,recorder=_param.recorder,className=_param.className,_captureScreenText=_param.captureScreenText,captureScreenText=_captureScreenText===void 0?"捕获屏幕":_captureScreenText,_stopCaptureText=_param.stopCaptureText,stopCaptureText=_stopCaptureText===void 0?"停止捕获":_stopCaptureText,_startRecorderText=_param.startRecorderText,startRecorderText=_startRecorderText===void 0?"开始录制":_startRecorderText,_stopRecorderText=_param.stopRecorderText,stopRecorderText=_stopRecorderText===void 0?"停止录制":_stopRecorderText,_pausedRecorderText=_param.pausedRecorderText,pausedRecorderText=_pausedRecorderText===void 0?"暂停录制":_pausedRecorderText,_recorderingText=_param.recorderingText,recorderingText=_recorderingText===void 0?"录制中":_recorderingText,_onRecorderError=_param.onRecorderError,onRecorderError=_onRecorderError===void 0?null:_onRecorderError,onStopRecorder=_param.onStopRecorder,onStartRecorder=_param.onStartRecorder,onStopCapture=_param.onStopCapture,onStartCapture=_param.onStartCapture,onRecorderDataAvailable=_param.onRecorderDataAvailable,onErrorCapture=_param.onErrorCapture,onSaveRecorder=_param.onSaveRecorder,props=_objectWithoutProperties(_param,["options","preview","controls","recorder","className","captureScreenText","stopCaptureText","startRecorderText","stopRecorderText","pausedRecorderText","recorderingText","onRecorderError","onStopRecorder","onStartRecorder","onStopCapture","onStartCapture","onRecorderDataAvailable","onErrorCapture","onSaveRecorder"]);var videoElem=useRef(null);var mediaRecorderRef=useRef(null);var mediaStreamRef=useRef(null);var chunks=useRef([]);var recorderRef=useRef(recorder);var ref=_slicedToArray(useState(null),2),mediaRecorder=ref[0],setMediaRecorder=ref[1];var ref1=_slicedToArray(useState(null),2),mediaStream=ref1[0],setMediaStream=ref1[1];var ref2=_slicedToArray(useState("inactive"),2),recordState=ref2[0],setRecordState=ref2[1];useEffect(function(){Object.assign(recorderRef,{current:recorder})},[recorder]);useEffect(function(){Object.assign(mediaStreamRef,{current:mediaStream})},[mediaStream]);useEffect(function(){Object.assign(mediaRecorderRef,{current:mediaRecorder})},[mediaRecorder]);var handleStartRecorder=useCallback(function(){if(mediaRecorderRef.current){if(isFunction(onStartRecorder)){onStartRecorder(mediaRecorderRef.current.state)}switch(mediaRecorderRef.current.state){case"inactive":mediaRecorderRef.current.start();break;case"paused":mediaRecorderRef.current.resume();break;case"recording":mediaRecorderRef.current.pause();break;default:break}setRecordState(mediaRecorderRef.current.state)}},[onStartRecorder]);var handleRecorderDataAvailable=useCallback(function(e){var ref;(ref=chunks.current)===null||ref===void 0?void 0:ref.push(e.data);if(isFunction(onRecorderDataAvailable)){onRecorderDataAvailable(e)}},[onRecorderDataAvailable]);var stopRecorder=useCallback(function(){if(mediaRecorderRef.current){if(mediaRecorderRef.current.state!=="inactive"){mediaRecorderRef.current.stop()}setRecordState(mediaRecorderRef.current.state)}if(isFunction(onStopRecorder)){onStopRecorder()}},[onStopRecorder]);var handleSaveRecorder=useCallback(function(){var ref,ref1,ref2;if(!((ref=chunks.current)===null||ref===void 0?void 0:ref.length))return;var blob=new Blob(chunks.current,{type:"video/webm"}),name=isObject(recorderRef.current)&&((ref1=recorderRef.current)===null||ref1===void 0?void 0:ref1.filename)||new Date().toISOString(),fileName=name+".webm";(ref2=chunks.current)===null||ref2===void 0?void 0:ref2.splice(0);if(isFunction(onSaveRecorder)){onSaveRecorder(blob,fileName)}else{downloadBlob(blob,fileName)}},[onSaveRecorder]);var stopCapture=useCallback(function(){stopRecorder();if(mediaStreamRef.current){var tracks=mediaStreamRef.current.getTracks();tracks===null||tracks===void 0?void 0:tracks.forEach(function(track){return track.stop()});setMediaStream(null)}if(isFunction(onStopCapture)){onStopCapture()}},[onStopCapture,stopRecorder]);var startCapture=useCallback(_asyncToGenerator(function(){var stream,err;return __generator(this,function(_state){switch(_state.label){case 0:stopCapture();_state.label=1;case 1:_state.trys.push([1,3,,4]);return[4,navigator.mediaDevices.getDisplayMedia(_objectSpread({},displayMediaOptions,options))];case 2:stream=_state.sent();if(stream){stream.addEventListener("inactive",stopCapture,false);setMediaStream(stream)}if(isFunction(onStartCapture)){onStartCapture(stream)}return[3,4];case 3:err=_state.sent();if(isFunction(onErrorCapture)){onErrorCapture(err)}return[3,4];case 4:return[2]}})}),[onErrorCapture,onStartCapture,options,stopCapture]);useEffect(function(){if(preview&&(videoElem===null||videoElem===void 0?void 0:videoElem.current)&&mediaStream){videoElem.current.srcObject=mediaStream}},[mediaStream,preview]);useEffect(function(){if((mediaStream===null||mediaStream===void 0?void 0:mediaStream.active)&&recorderRef.current){var recorderInstance=new MediaRecorder(mediaStream);recorderInstance.onstop=handleSaveRecorder;recorderInstance.onerror=onRecorderError;recorderInstance.ondataavailable=handleRecorderDataAvailable;setMediaRecorder(recorderInstance)}else{setMediaRecorder(null)}},[handleRecorderDataAvailable,handleSaveRecorder,mediaStream,onRecorderError]);useEffect(function(){var getMediaRecorderRef=function(){return mediaRecorderRef.current};var getMediaStreamRef=function(){return mediaStreamRef.current};return function(){var _mediaRecorderRef=getMediaRecorderRef();if(_mediaRecorderRef){if(_mediaRecorderRef.state!=="inactive"){_mediaRecorderRef.stop()}}var streamRef=getMediaStreamRef();if(streamRef){var tracks=streamRef.getTracks();tracks===null||tracks===void 0?void 0:tracks.forEach(function(track){return track.stop()})}}},[]);var recorderText=useMemo(function(){return({paused:pausedRecorderText,recording:recorderingText,inactive:startRecorderText})[recordState]},[pausedRecorderText,recordState,recorderingText,startRecorderText]);return React.createElement("div",_extends({className:classNames([getPrefixCls("capture-screen"),className])},props),React.createElement("div",{className:getPrefixCls("capture-screen-controller")},React.createElement(Button,{onClick:startCapture},captureScreenText),mediaStream&&React.createElement(React.Fragment,null,React.createElement(Button,{type:"error",onClick:stopCapture},stopCaptureText),recorder&&React.createElement("div",{className:getPrefixCls("capture-screen-controller-record")},React.createElement(Button,{type:btnStatusDic[recordState],onClick:handleStartRecorder},recorderText),recordState!=="inactive"&&React.createElement(Button,{type:"error",onClick:stopRecorder},stopRecorderText)))),preview&&mediaStream?React.createElement("div",{className:getPrefixCls("capture-screen-video")},React.createElement("span",{className:getPrefixCls("capture-screen-video-".concat(recordState))}),React.createElement("video",{ref:videoElem,autoPlay:true,controls:!!(mediaStream&&controls)})):null)};export default CaptureScreen;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/capture-screen/index.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Button } from '..';\nimport type { ButtonProps } from '..';\nimport { getPrefixCls } from '../utils';\nimport { downloadBlob, isObject, isFunction, classNames } from '@moneko/common';\nimport './index.global.less';\n\nexport interface RecorderOptions {\n /** 录制文件名称 */\n filename?: string;\n}\nexport interface CaptureScreenProp extends React.HTMLAttributes<HTMLDivElement> {\n options?: MediaStreamConstraints;\n /** 是否预览 */\n preview?: boolean;\n /** 预览时是否显示控制器 */\n controls?: boolean;\n /** 录制时配置项 */\n recorder?: boolean | RecorderOptions;\n /** 捕获屏幕按钮文字 */\n captureScreenText?: string;\n /** 停止捕获按钮文字 */\n stopCaptureText?: string;\n /** 开始录制按钮文字 */\n startRecorderText?: string;\n /** 停止录制按钮文字 */\n stopRecorderText?: string;\n /** 暂停录制按钮文字 */\n pausedRecorderText?: string;\n /** 录制中按钮文字 */\n recorderingText?: string;\n /** 录制错误回调方法 */\n onRecorderError?: MediaRecorder['onerror'];\n /** 停止录制回调方法 */\n onStopRecorder?: () => void;\n /** 开始录制回调方法 */\n // eslint-disable-next-line no-unused-vars\n onStartRecorder?: (state: MediaRecorder['state']) => void;\n /** 记录媒体时触发 */\n // eslint-disable-next-line no-unused-vars\n onRecorderDataAvailable?: (e: MediaRecorderDataAvailableEvent) => void;\n /** 捕获屏幕错误回调方法 */\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-explicit-any\n onErrorCapture?: (err: any) => void;\n /** 停止捕获屏幕回调方法 */\n onStopCapture?: () => void;\n /** 开始捕获屏幕回调方法 */\n // eslint-disable-next-line no-unused-vars\n onStartCapture?: (stream?: MediaStream) => void;\n /** 自定义保存录制文件方法 */\n // eslint-disable-next-line no-unused-vars\n onSaveRecorder?: (blob: Blob, fileName: string) => void;\n}\n\nconst displayMediaOptions: MediaStreamConstraints = {\n video: true,\n audio: {\n echoCancellation: true,\n noiseSuppression: true,\n sampleRate: 44100,\n },\n};\n\nconst btnStatusDic: Record<MediaRecorder['state'], ButtonProps['type']> = {\n inactive: 'primary',\n paused: 'warning',\n recording: 'success',\n};\nconst CaptureScreen: React.FC<CaptureScreenProp> = ({\n options = displayMediaOptions,\n preview,\n controls,\n recorder,\n className,\n captureScreenText = '捕获屏幕',\n stopCaptureText = '停止捕获',\n startRecorderText = '开始录制',\n stopRecorderText = '停止录制',\n pausedRecorderText = '暂停录制',\n recorderingText = '录制中',\n onRecorderError = null,\n onStopRecorder,\n onStartRecorder,\n onStopCapture,\n onStartCapture,\n onRecorderDataAvailable,\n onErrorCapture,\n onSaveRecorder,\n ...props\n}) => {\n const videoElem = useRef<HTMLVideoElement>(null);\n const mediaRecorderRef = useRef<MediaRecorder>(null);\n const mediaStreamRef = useRef<MediaStream>(null);\n const chunks = useRef<Blob[]>([]);\n const recorderRef = useRef<CaptureScreenProp['recorder']>(recorder);\n const [mediaRecorder, setMediaRecorder] = useState<MediaRecorder | null>(null);\n const [mediaStream, setMediaStream] = useState<MediaStream | null>(null);\n const [recordState, setRecordState] = useState<MediaRecorder['state']>('inactive');\n\n useEffect(() => {\n Object.assign(recorderRef, {\n current: recorder,\n });\n }, [recorder]);\n useEffect(() => {\n Object.assign(mediaStreamRef, {\n current: mediaStream,\n });\n }, [mediaStream]);\n useEffect(() => {\n Object.assign(mediaRecorderRef, {\n current: mediaRecorder,\n });\n }, [mediaRecorder]);\n\n // 开始录制\n const handleStartRecorder = useCallback(() => {\n if (mediaRecorderRef.current) {\n if (isFunction(onStartRecorder)) {\n onStartRecorder(mediaRecorderRef.current.state);\n }\n switch (mediaRecorderRef.current.state) {\n case 'inactive': // 不活跃\n mediaRecorderRef.current.start();\n break;\n case 'paused': // 暂停\n mediaRecorderRef.current.resume();\n break;\n case 'recording': // 录制中\n mediaRecorderRef.current.pause();\n break;\n default:\n break;\n }\n setRecordState(mediaRecorderRef.current.state);\n }\n }, [onStartRecorder]);\n const handleRecorderDataAvailable = useCallback(\n (e: MediaRecorderDataAvailableEvent) => {\n chunks.current?.push(e.data as Blob);\n if (isFunction(onRecorderDataAvailable)) {\n onRecorderDataAvailable(e);\n }\n },\n [onRecorderDataAvailable]\n );\n // 停止录制\n const stopRecorder = useCallback(() => {\n // 未录制时不需要停止\n if (mediaRecorderRef.current) {\n if (mediaRecorderRef.current.state !== 'inactive') {\n mediaRecorderRef.current.stop();\n }\n setRecordState(mediaRecorderRef.current.state);\n }\n if (isFunction(onStopRecorder)) {\n onStopRecorder();\n }\n }, [onStopRecorder]);\n const handleSaveRecorder = useCallback(() => {\n if (!chunks.current?.length) return;\n // 将录制内容保存到本地\n const blob: Blob = new Blob(chunks.current, {\n type: 'video/webm',\n }),\n name: string =\n (isObject(recorderRef.current) && recorderRef.current?.filename) ||\n new Date().toISOString(),\n fileName: string = name + '.webm';\n\n chunks.current?.splice(0);\n if (isFunction(onSaveRecorder)) {\n onSaveRecorder(blob, fileName);\n } else {\n // 保存文件\n downloadBlob(blob, fileName);\n }\n }, [onSaveRecorder]);\n\n // 停止捕获屏幕\n const stopCapture = useCallback(() => {\n // 如果在录制则先停止\n stopRecorder();\n if (mediaStreamRef.current) {\n const tracks = mediaStreamRef.current.getTracks();\n\n tracks?.forEach((track: MediaStreamTrack) => track.stop());\n setMediaStream(null);\n }\n if (isFunction(onStopCapture)) {\n onStopCapture();\n }\n }, [onStopCapture, stopRecorder]);\n\n // 开始捕获屏幕\n const startCapture = useCallback(async () => {\n stopCapture();\n try {\n const stream = await navigator.mediaDevices.getDisplayMedia({\n ...displayMediaOptions,\n ...options,\n });\n\n if (stream) {\n // 监听停止捕获屏幕\n stream.addEventListener('inactive', stopCapture, false);\n setMediaStream(stream);\n }\n if (isFunction(onStartCapture)) {\n onStartCapture(stream);\n }\n } catch (err) {\n if (isFunction(onErrorCapture)) {\n onErrorCapture(err);\n }\n }\n }, [onErrorCapture, onStartCapture, options, stopCapture]);\n\n useEffect(() => {\n if (preview && videoElem?.current && mediaStream) {\n videoElem.current.srcObject = mediaStream;\n }\n }, [mediaStream, preview]);\n\n useEffect(() => {\n if (mediaStream?.active && recorderRef.current) {\n const recorderInstance = new MediaRecorder(mediaStream);\n\n recorderInstance.onstop = handleSaveRecorder;\n recorderInstance.onerror = onRecorderError;\n // 每次timeslice记录毫秒级媒体时(或未记录整个媒体时,如果timeslice未指定)定期触发\n recorderInstance.ondataavailable = handleRecorderDataAvailable;\n setMediaRecorder(recorderInstance);\n } else {\n setMediaRecorder(null);\n }\n }, [handleRecorderDataAvailable, handleSaveRecorder, mediaStream, onRecorderError]);\n\n useEffect(() => {\n const getMediaRecorderRef = () => mediaRecorderRef.current;\n const getMediaStreamRef = () => mediaStreamRef.current;\n\n return () => {\n const _mediaRecorderRef = getMediaRecorderRef();\n\n if (_mediaRecorderRef) {\n // 未录制时不需要停止\n if (_mediaRecorderRef.state !== 'inactive') {\n _mediaRecorderRef.stop();\n }\n }\n const streamRef = getMediaStreamRef();\n\n if (streamRef) {\n const tracks = streamRef.getTracks();\n\n tracks?.forEach((track: MediaStreamTrack) => track.stop());\n }\n };\n }, []);\n const recorderText = useMemo(\n () =>\n ({\n paused: pausedRecorderText,\n recording: recorderingText,\n inactive: startRecorderText,\n }[recordState]),\n [pausedRecorderText, recordState, recorderingText, startRecorderText]\n );\n\n return (\n <div className={classNames([getPrefixCls('capture-screen'), className])} {...props}>\n <div className={getPrefixCls('capture-screen-controller')}>\n <Button onClick={startCapture}>{captureScreenText}</Button>\n {mediaStream && (\n <>\n <Button type=\"error\" onClick={stopCapture}>\n {stopCaptureText}\n </Button>\n {recorder && (\n <div className={getPrefixCls('capture-screen-controller-record')}>\n <Button type={btnStatusDic[recordState]} onClick={handleStartRecorder}>\n {recorderText}\n </Button>\n {recordState !== 'inactive' && (\n <Button type=\"error\" onClick={stopRecorder}>\n {stopRecorderText}\n </Button>\n )}\n </div>\n )}\n </>\n )}\n </div>\n {preview && mediaStream ? (\n <div className={getPrefixCls('capture-screen-video')}>\n <span className={getPrefixCls(`capture-screen-video-${recordState}`)} />\n <video ref={videoElem} autoPlay controls={!!(mediaStream && controls)} />\n </div>\n ) : null}\n </div>\n );\n};\n\nexport default CaptureScreen;\n"],"names":["React","useCallback","useEffect","useMemo","useRef","useState","Button","getPrefixCls","downloadBlob","isObject","isFunction","classNames","displayMediaOptions","video","audio","echoCancellation","noiseSuppression","sampleRate","btnStatusDic","inactive","paused","recording","CaptureScreen","options","preview","controls","recorder","className","captureScreenText","stopCaptureText","startRecorderText","stopRecorderText","pausedRecorderText","recorderingText","onRecorderError","onStopRecorder","onStartRecorder","onStopCapture","onStartCapture","onRecorderDataAvailable","onErrorCapture","onSaveRecorder","props","videoElem","mediaRecorderRef","mediaStreamRef","chunks","recorderRef","mediaRecorder","setMediaRecorder","mediaStream","setMediaStream","recordState","setRecordState","Object","assign","current","handleStartRecorder","state","start","resume","pause","handleRecorderDataAvailable","e","push","data","stopRecorder","stop","handleSaveRecorder","length","blob","Blob","type","name","filename","Date","toISOString","fileName","splice","stopCapture","tracks","getTracks","forEach","track","startCapture","stream","err","navigator","mediaDevices","getDisplayMedia","addEventListener","srcObject","active","recorderInstance","MediaRecorder","onstop","onerror","ondataavailable","getMediaRecorderRef","getMediaStreamRef","_mediaRecorderRef","streamRef","recorderText","div","onClick","span","ref","autoPlay"],"mappings":"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"}
1
+ {"version":3,"sources":["../../components/capture-screen/index.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport Button from '../button';\nimport type { ButtonProps } from '../button';\nimport getPrefixCls from '../get-prefix-cls';\nimport { downloadBlob, isObject, isFunction, classNames } from '@moneko/common';\nimport './index.global.less';\n\nexport interface RecorderOptions {\n /** 录制文件名称 */\n filename?: string;\n}\nexport interface CaptureScreenProp extends React.HTMLAttributes<HTMLDivElement> {\n options?: MediaStreamConstraints;\n /** 是否预览 */\n preview?: boolean;\n /** 预览时是否显示控制器 */\n controls?: boolean;\n /** 录制时配置项 */\n recorder?: boolean | RecorderOptions;\n /** 捕获屏幕按钮文字 */\n captureScreenText?: string;\n /** 停止捕获按钮文字 */\n stopCaptureText?: string;\n /** 开始录制按钮文字 */\n startRecorderText?: string;\n /** 停止录制按钮文字 */\n stopRecorderText?: string;\n /** 暂停录制按钮文字 */\n pausedRecorderText?: string;\n /** 录制中按钮文字 */\n recorderingText?: string;\n /** 录制错误回调方法 */\n onRecorderError?: MediaRecorder['onerror'];\n /** 停止录制回调方法 */\n onStopRecorder?: () => void;\n /** 开始录制回调方法 */\n // eslint-disable-next-line no-unused-vars\n onStartRecorder?: (state: MediaRecorder['state']) => void;\n /** 记录媒体时触发 */\n // eslint-disable-next-line no-unused-vars\n onRecorderDataAvailable?: (e: MediaRecorderDataAvailableEvent) => void;\n /** 捕获屏幕错误回调方法 */\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-explicit-any\n onErrorCapture?: (err: any) => void;\n /** 停止捕获屏幕回调方法 */\n onStopCapture?: () => void;\n /** 开始捕获屏幕回调方法 */\n // eslint-disable-next-line no-unused-vars\n onStartCapture?: (stream?: MediaStream) => void;\n /** 自定义保存录制文件方法 */\n // eslint-disable-next-line no-unused-vars\n onSaveRecorder?: (blob: Blob, fileName: string) => void;\n}\n\nconst displayMediaOptions: MediaStreamConstraints = {\n video: true,\n audio: {\n echoCancellation: true,\n noiseSuppression: true,\n sampleRate: 44100,\n },\n};\n\nconst btnStatusDic: Record<MediaRecorder['state'], ButtonProps['type']> = {\n inactive: 'primary',\n paused: 'warning',\n recording: 'success',\n};\nconst CaptureScreen: React.FC<CaptureScreenProp> = ({\n options = displayMediaOptions,\n preview,\n controls,\n recorder,\n className,\n captureScreenText = '捕获屏幕',\n stopCaptureText = '停止捕获',\n startRecorderText = '开始录制',\n stopRecorderText = '停止录制',\n pausedRecorderText = '暂停录制',\n recorderingText = '录制中',\n onRecorderError = null,\n onStopRecorder,\n onStartRecorder,\n onStopCapture,\n onStartCapture,\n onRecorderDataAvailable,\n onErrorCapture,\n onSaveRecorder,\n ...props\n}) => {\n const videoElem = useRef<HTMLVideoElement>(null);\n const mediaRecorderRef = useRef<MediaRecorder>(null);\n const mediaStreamRef = useRef<MediaStream>(null);\n const chunks = useRef<Blob[]>([]);\n const recorderRef = useRef<CaptureScreenProp['recorder']>(recorder);\n const [mediaRecorder, setMediaRecorder] = useState<MediaRecorder | null>(null);\n const [mediaStream, setMediaStream] = useState<MediaStream | null>(null);\n const [recordState, setRecordState] = useState<MediaRecorder['state']>('inactive');\n\n useEffect(() => {\n Object.assign(recorderRef, {\n current: recorder,\n });\n }, [recorder]);\n useEffect(() => {\n Object.assign(mediaStreamRef, {\n current: mediaStream,\n });\n }, [mediaStream]);\n useEffect(() => {\n Object.assign(mediaRecorderRef, {\n current: mediaRecorder,\n });\n }, [mediaRecorder]);\n\n // 开始录制\n const handleStartRecorder = useCallback(() => {\n if (mediaRecorderRef.current) {\n if (isFunction(onStartRecorder)) {\n onStartRecorder(mediaRecorderRef.current.state);\n }\n switch (mediaRecorderRef.current.state) {\n case 'inactive': // 不活跃\n mediaRecorderRef.current.start();\n break;\n case 'paused': // 暂停\n mediaRecorderRef.current.resume();\n break;\n case 'recording': // 录制中\n mediaRecorderRef.current.pause();\n break;\n default:\n break;\n }\n setRecordState(mediaRecorderRef.current.state);\n }\n }, [onStartRecorder]);\n const handleRecorderDataAvailable = useCallback(\n (e: MediaRecorderDataAvailableEvent) => {\n chunks.current?.push(e.data as Blob);\n if (isFunction(onRecorderDataAvailable)) {\n onRecorderDataAvailable(e);\n }\n },\n [onRecorderDataAvailable]\n );\n // 停止录制\n const stopRecorder = useCallback(() => {\n // 未录制时不需要停止\n if (mediaRecorderRef.current) {\n if (mediaRecorderRef.current.state !== 'inactive') {\n mediaRecorderRef.current.stop();\n }\n setRecordState(mediaRecorderRef.current.state);\n }\n if (isFunction(onStopRecorder)) {\n onStopRecorder();\n }\n }, [onStopRecorder]);\n const handleSaveRecorder = useCallback(() => {\n if (!chunks.current?.length) return;\n // 将录制内容保存到本地\n const blob: Blob = new Blob(chunks.current, {\n type: 'video/webm',\n }),\n name: string =\n (isObject(recorderRef.current) && recorderRef.current?.filename) ||\n new Date().toISOString(),\n fileName: string = name + '.webm';\n\n chunks.current?.splice(0);\n if (isFunction(onSaveRecorder)) {\n onSaveRecorder(blob, fileName);\n } else {\n // 保存文件\n downloadBlob(blob, fileName);\n }\n }, [onSaveRecorder]);\n\n // 停止捕获屏幕\n const stopCapture = useCallback(() => {\n // 如果在录制则先停止\n stopRecorder();\n if (mediaStreamRef.current) {\n const tracks = mediaStreamRef.current.getTracks();\n\n tracks?.forEach((track: MediaStreamTrack) => track.stop());\n setMediaStream(null);\n }\n if (isFunction(onStopCapture)) {\n onStopCapture();\n }\n }, [onStopCapture, stopRecorder]);\n\n // 开始捕获屏幕\n const startCapture = useCallback(async () => {\n stopCapture();\n try {\n const stream = await navigator.mediaDevices.getDisplayMedia({\n ...displayMediaOptions,\n ...options,\n });\n\n if (stream) {\n // 监听停止捕获屏幕\n stream.addEventListener('inactive', stopCapture, false);\n setMediaStream(stream);\n }\n if (isFunction(onStartCapture)) {\n onStartCapture(stream);\n }\n } catch (err) {\n if (isFunction(onErrorCapture)) {\n onErrorCapture(err);\n }\n }\n }, [onErrorCapture, onStartCapture, options, stopCapture]);\n\n useEffect(() => {\n if (preview && videoElem?.current && mediaStream) {\n videoElem.current.srcObject = mediaStream;\n }\n }, [mediaStream, preview]);\n\n useEffect(() => {\n if (mediaStream?.active && recorderRef.current) {\n const recorderInstance = new MediaRecorder(mediaStream);\n\n recorderInstance.onstop = handleSaveRecorder;\n recorderInstance.onerror = onRecorderError;\n // 每次timeslice记录毫秒级媒体时(或未记录整个媒体时,如果timeslice未指定)定期触发\n recorderInstance.ondataavailable = handleRecorderDataAvailable;\n setMediaRecorder(recorderInstance);\n } else {\n setMediaRecorder(null);\n }\n }, [handleRecorderDataAvailable, handleSaveRecorder, mediaStream, onRecorderError]);\n\n useEffect(() => {\n const getMediaRecorderRef = () => mediaRecorderRef.current;\n const getMediaStreamRef = () => mediaStreamRef.current;\n\n return () => {\n const _mediaRecorderRef = getMediaRecorderRef();\n\n if (_mediaRecorderRef) {\n // 未录制时不需要停止\n if (_mediaRecorderRef.state !== 'inactive') {\n _mediaRecorderRef.stop();\n }\n }\n const streamRef = getMediaStreamRef();\n\n if (streamRef) {\n const tracks = streamRef.getTracks();\n\n tracks?.forEach((track: MediaStreamTrack) => track.stop());\n }\n };\n }, []);\n const recorderText = useMemo(\n () =>\n ({\n paused: pausedRecorderText,\n recording: recorderingText,\n inactive: startRecorderText,\n }[recordState]),\n [pausedRecorderText, recordState, recorderingText, startRecorderText]\n );\n\n return (\n <div className={classNames([getPrefixCls('capture-screen'), className])} {...props}>\n <div className={getPrefixCls('capture-screen-controller')}>\n <Button onClick={startCapture}>{captureScreenText}</Button>\n {mediaStream && (\n <>\n <Button type=\"error\" onClick={stopCapture}>\n {stopCaptureText}\n </Button>\n {recorder && (\n <div className={getPrefixCls('capture-screen-controller-record')}>\n <Button type={btnStatusDic[recordState]} onClick={handleStartRecorder}>\n {recorderText}\n </Button>\n {recordState !== 'inactive' && (\n <Button type=\"error\" onClick={stopRecorder}>\n {stopRecorderText}\n </Button>\n )}\n </div>\n )}\n </>\n )}\n </div>\n {preview && mediaStream ? (\n <div className={getPrefixCls('capture-screen-video')}>\n <span className={getPrefixCls(`capture-screen-video-${recordState}`)} />\n <video ref={videoElem} autoPlay controls={!!(mediaStream && controls)} />\n </div>\n ) : null}\n </div>\n );\n};\n\nexport default CaptureScreen;\n"],"names":["React","useCallback","useEffect","useMemo","useRef","useState","Button","getPrefixCls","downloadBlob","isObject","isFunction","classNames","displayMediaOptions","video","audio","echoCancellation","noiseSuppression","sampleRate","btnStatusDic","inactive","paused","recording","CaptureScreen","options","preview","controls","recorder","className","captureScreenText","stopCaptureText","startRecorderText","stopRecorderText","pausedRecorderText","recorderingText","onRecorderError","onStopRecorder","onStartRecorder","onStopCapture","onStartCapture","onRecorderDataAvailable","onErrorCapture","onSaveRecorder","props","videoElem","mediaRecorderRef","mediaStreamRef","chunks","recorderRef","mediaRecorder","setMediaRecorder","mediaStream","setMediaStream","recordState","setRecordState","Object","assign","current","handleStartRecorder","state","start","resume","pause","handleRecorderDataAvailable","e","push","data","stopRecorder","stop","handleSaveRecorder","length","blob","Blob","type","name","filename","Date","toISOString","fileName","splice","stopCapture","tracks","getTracks","forEach","track","startCapture","stream","err","navigator","mediaDevices","getDisplayMedia","addEventListener","srcObject","active","recorderInstance","MediaRecorder","onstop","onerror","ondataavailable","getMediaRecorderRef","getMediaStreamRef","_mediaRecorderRef","streamRef","recorderText","div","onClick","span","ref","autoPlay"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{classNames}from"@moneko/common";import React from"react";import{getPrefixCls}from"../utils";var CornEditor=function(param){var className=param.className;return React.createElement("div",{className:classNames([getPrefixCls(""),className])},"CornEditor")};export default CornEditor;
1
+ import{classNames}from"@moneko/common";import React from"react";import getPrefixCls from"../get-prefix-cls";var CornEditor=function(param){var className=param.className;return React.createElement("div",{className:classNames([getPrefixCls(""),className])},"CornEditor")};export default CornEditor;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/cron-editor/index.tsx"],"sourcesContent":["import { classNames } from '@moneko/common';\nimport React from 'react';\nimport { getPrefixCls } from '../utils';\n\nexport interface CornEditorProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n}\nconst CornEditor: React.FC<CornEditorProps> = ({ className }) => {\n return <div className={classNames([getPrefixCls(''), className])}>{'CornEditor'}</div>;\n};\n\nexport default CornEditor;\n"],"names":["classNames","React","getPrefixCls","CornEditor","className","div"],"mappings":"AAAA,OAASA,UAAU,KAAQ,gBAAiB,AAC5C,QAAOC,UAAW,OAAQ,AAC1B,QAASC,YAAY,KAAQ,UAAW,CAKxC,IAAMC,WAAwC,eAAmB,KAAhBC,gBAAAA,UAC/C,OAAO,oBAACC,OAAID,UAAWJ,WAAW,CAACE,aAAa,IAAKE,UAAU,GAAI,aACrE,CAEA,gBAAeD,UAAW"}
1
+ {"version":3,"sources":["../../components/cron-editor/index.tsx"],"sourcesContent":["import { classNames } from '@moneko/common';\nimport React from 'react';\nimport getPrefixCls from '../get-prefix-cls';\n\nexport interface CornEditorProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n}\nconst CornEditor: React.FC<CornEditorProps> = ({ className }) => {\n return <div className={classNames([getPrefixCls(''), className])}>{'CornEditor'}</div>;\n};\n\nexport default CornEditor;\n"],"names":["classNames","React","getPrefixCls","CornEditor","className","div"],"mappings":"AAAA,OAASA,UAAU,KAAQ,gBAAiB,AAC5C,QAAOC,UAAW,OAAQ,AAC1B,QAAOC,iBAAkB,mBAAoB,CAK7C,IAAMC,WAAwC,eAAmB,KAAhBC,gBAAAA,UAC/C,OAAO,oBAACC,OAAID,UAAWJ,WAAW,CAACE,aAAa,IAAKE,UAAU,GAAI,aACrE,CAEA,gBAAeD,UAAW"}
@@ -0,0 +1,2 @@
1
+ declare const getPrefixCls: (className: string, prefix?: any) => string;
2
+ export default getPrefixCls;
@@ -0,0 +1,2 @@
1
+ import css from"./index.less";import{getPrefixCls as prefixCls}from"@moneko/common";var getPrefixCls=function(className){var prefix=arguments.length>1&&arguments[1]!==void 0?arguments[1]:css.prefixCls;return prefixCls(className,prefix)};export default getPrefixCls;
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../components/get-prefix-cls/index.ts"],"sourcesContent":["import css from './index.less';\nimport { getPrefixCls as prefixCls } from '@moneko/common';\n\nconst getPrefixCls = (className: string, prefix = css.prefixCls) => prefixCls(className, prefix);\n\nexport default getPrefixCls;\n"],"names":["css","getPrefixCls","prefixCls","className","prefix"],"mappings":"AAAA,OAAOA,QAAS,cAAe,AAC/B,QAASC,gBAAgBC,SAAS,KAAQ,gBAAiB,CAE3D,IAAMD,aAAe,SAACE,eAAmBC,8DAASJ,IAAIE,SAAS,QAAKA,UAAUC,UAAWC,QAEzF,gBAAeH,YAAa"}
File without changes
@@ -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,{useEffect,useMemo,useState}from"react";import{getPrefixCls}from"../utils";import{classNames}from"@moneko/common";import"./index.global.less";export var RegExp_HighLight=/%c:(.+?):c%/i;export function strToHighlight(text){var str=text,strArr=RegExp_HighLight.exec(str);if(strArr){var textArr=[];for(;strArr!==null;strArr=RegExp_HighLight.exec(str)){var normalText=str.substring(0,strArr.index);if(normalText.trim().length){textArr.push({text:normalText})}textArr.push({hit:true,text:strArr[1]});str=str.substring(strArr[0].length+strArr.index);normalText=null}if(str.trim().length){textArr.push({text:str})}return textArr}return null}var HighlightText=function(param){var className=param.className,style=param.style,hitStyle=param.hitStyle,hitClassName=param.hitClassName,text=param.text,highlight=param.highlight,extra=param.extra,_flag=param.flag,flag=_flag===void 0?"g":_flag;var ref=_slicedToArray(useState(),2),texts=ref[0],setTexts=ref[1];var hitCls=useMemo(function(){return classNames([getPrefixCls("hit"),hitClassName])},[hitClassName]);useEffect(function(){if(typeof text==="string"&&highlight){var str=text;if(Array.isArray(highlight)){for(var i=0,len=highlight.length;i<len;i++){var item=highlight[i];var isOne=typeof item==="string";var hitStr=isOne?item:item.highlight;var iFlag=isOne?flag:item.flag;str=str.replace(new RegExp(hitStr,iFlag),"%c:".concat(hitStr,":c%"))}}else{str=str.replace(new RegExp(highlight,flag),"%c:".concat(highlight,":c%"))}setTexts(strToHighlight(str))}else{setTexts(null)}},[flag,highlight,text]);var hitNode=useMemo(function(){var ref;return(ref=texts===null||texts===void 0?void 0:texts.map(function(item,i){return item.hit?React.createElement("span",{key:item.text+i,className:hitCls,"data-text":item.text,style:hitStyle},item.text):item.text}))!==null&&ref!==void 0?ref:text},[hitCls,hitStyle,text,texts]);return React.createElement("div",{className:classNames([getPrefixCls("highlight-text"),className]),style:style},hitNode,extra&&React.createElement("span",{className:hitCls,style:hitStyle},extra))};export default HighlightText;
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,{useEffect,useMemo,useState}from"react";import getPrefixCls from"../get-prefix-cls";import{classNames}from"@moneko/common";import"./index.global.less";export var RegExp_HighLight=/%c:(.+?):c%/i;export function strToHighlight(text){var str=text,strArr=RegExp_HighLight.exec(str);if(strArr){var textArr=[];for(;strArr!==null;strArr=RegExp_HighLight.exec(str)){var normalText=str.substring(0,strArr.index);if(normalText.trim().length){textArr.push({text:normalText})}textArr.push({hit:true,text:strArr[1]});str=str.substring(strArr[0].length+strArr.index);normalText=null}if(str.trim().length){textArr.push({text:str})}return textArr}return null}var HighlightText=function(param){var className=param.className,style=param.style,hitStyle=param.hitStyle,hitClassName=param.hitClassName,text=param.text,highlight=param.highlight,extra=param.extra,_flag=param.flag,flag=_flag===void 0?"g":_flag;var ref=_slicedToArray(useState(),2),texts=ref[0],setTexts=ref[1];var hitCls=useMemo(function(){return classNames([getPrefixCls("hit"),hitClassName])},[hitClassName]);useEffect(function(){if(typeof text==="string"&&highlight){var str=text;if(Array.isArray(highlight)){for(var i=0,len=highlight.length;i<len;i++){var item=highlight[i];var isOne=typeof item==="string";var hitStr=isOne?item:item.highlight;var iFlag=isOne?flag:item.flag;str=str.replace(new RegExp(hitStr,iFlag),"%c:".concat(hitStr,":c%"))}}else{str=str.replace(new RegExp(highlight,flag),"%c:".concat(highlight,":c%"))}setTexts(strToHighlight(str))}else{setTexts(null)}},[flag,highlight,text]);var hitNode=useMemo(function(){var ref;return(ref=texts===null||texts===void 0?void 0:texts.map(function(item,i){return item.hit?React.createElement("span",{key:item.text+i,className:hitCls,"data-text":item.text,style:hitStyle},item.text):item.text}))!==null&&ref!==void 0?ref:text},[hitCls,hitStyle,text,texts]);return React.createElement("div",{className:classNames([getPrefixCls("highlight-text"),className]),style:style},hitNode,extra&&React.createElement("span",{className:hitCls,style:hitStyle},extra))};export default HighlightText;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/highlight-text/index.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { getPrefixCls } from '../utils';\nimport { classNames } from '@moneko/common';\nimport './index.global.less';\n\n/**\n * 高亮字符串语法\n * @example\n * ```\n * const str = '%c:高亮文字:c%';\n * ```\n */\nexport const RegExp_HighLight = /%c:(.+?):c%/i;\n\nexport type HighlightTextJson =\n | {\n highlight?: boolean;\n text: string;\n }[]\n | null;\nexport interface HighlightTextProps {\n className?: string;\n style?: React.CSSProperties;\n /** 命中高亮部分的样式 */\n hitStyle?: React.CSSProperties;\n /** 命中高亮部分的类名 */\n hitClassName?: string;\n /** 内容 */\n text?: string;\n /** 需要高亮的内容 */\n highlight?: string | ({ highlight: string; flag: HighlightFlag } | string)[];\n flag?: HighlightFlag;\n /** 额外需要高亮的内容 */\n extra?: string;\n}\nexport type HighlightFlag = 'g' | 'i' | 'm' | 'u' | 'y';\nexport type Highlight = {\n /** 命中高亮 */\n hit?: boolean;\n /** 内容 */\n text: string;\n};\n\n/**\n * 字符串转换成高亮字符的Json格式\n * @param {string} text 字符串\n * @returns {HighlightTextJson} 高亮字符的Json\n */\nexport function strToHighlight(text: string): Highlight[] | null {\n let str = text,\n strArr = RegExp_HighLight.exec(str);\n\n if (strArr) {\n const textArr: Highlight[] = [];\n\n for (; strArr !== null; strArr = RegExp_HighLight.exec(str)) {\n // 普通部分\n let normalText: string | null = str.substring(0, strArr.index);\n\n if (normalText.trim().length) {\n textArr.push({\n text: normalText,\n });\n }\n\n // 高亮部分\n textArr.push({\n hit: true,\n text: strArr[1],\n });\n str = str.substring(strArr[0].length + strArr.index);\n normalText = null;\n }\n if (str.trim().length) {\n textArr.push({\n text: str,\n });\n }\n return textArr;\n }\n return null;\n}\n\nconst HighlightText: React.FC<HighlightTextProps> = ({\n className,\n style,\n hitStyle,\n hitClassName,\n text,\n highlight,\n extra,\n flag = 'g',\n}) => {\n const [texts, setTexts] = useState<Highlight[] | null>();\n const hitCls = useMemo(() => classNames([getPrefixCls('hit'), hitClassName]), [hitClassName]);\n\n useEffect(() => {\n if (typeof text === 'string' && highlight) {\n let str = text;\n\n if (Array.isArray(highlight)) {\n for (let i = 0, len = highlight.length; i < len; i++) {\n const item = highlight[i];\n const isOne = typeof item === 'string';\n const hitStr = isOne ? item : item.highlight;\n const iFlag = isOne ? flag : item.flag;\n\n str = str.replace(new RegExp(hitStr, iFlag), `%c:${hitStr}:c%`);\n }\n } else {\n str = str.replace(new RegExp(highlight, flag), `%c:${highlight}:c%`);\n }\n setTexts(strToHighlight(str));\n } else {\n setTexts(null);\n }\n }, [flag, highlight, text]);\n const hitNode = useMemo(() => {\n return (\n texts?.map((item, i) => {\n return item.hit ? (\n <span key={item.text + i} className={hitCls} data-text={item.text} style={hitStyle}>\n {item.text}\n </span>\n ) : (\n item.text\n );\n }) ?? text\n );\n }, [hitCls, hitStyle, text, texts]);\n\n return (\n <div className={classNames([getPrefixCls('highlight-text'), className])} style={style}>\n {hitNode}\n {extra && (\n <span className={hitCls} style={hitStyle}>\n {extra}\n </span>\n )}\n </div>\n );\n};\n\nexport default HighlightText;\n"],"names":["React","useEffect","useMemo","useState","getPrefixCls","classNames","RegExp_HighLight","strToHighlight","text","str","strArr","exec","textArr","normalText","substring","index","trim","length","push","hit","HighlightText","className","style","hitStyle","hitClassName","highlight","extra","flag","texts","setTexts","hitCls","Array","isArray","i","len","item","isOne","hitStr","iFlag","replace","RegExp","hitNode","map","span","key","data-text","div"],"mappings":"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"}
1
+ {"version":3,"sources":["../../components/highlight-text/index.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport getPrefixCls from '../get-prefix-cls';\nimport { classNames } from '@moneko/common';\nimport './index.global.less';\n\n/**\n * 高亮字符串语法\n * @example\n * ```\n * const str = '%c:高亮文字:c%';\n * ```\n */\nexport const RegExp_HighLight = /%c:(.+?):c%/i;\n\nexport type HighlightTextJson =\n | {\n highlight?: boolean;\n text: string;\n }[]\n | null;\nexport interface HighlightTextProps {\n className?: string;\n style?: React.CSSProperties;\n /** 命中高亮部分的样式 */\n hitStyle?: React.CSSProperties;\n /** 命中高亮部分的类名 */\n hitClassName?: string;\n /** 内容 */\n text?: string;\n /** 需要高亮的内容 */\n highlight?: string | ({ highlight: string; flag: HighlightFlag } | string)[];\n flag?: HighlightFlag;\n /** 额外需要高亮的内容 */\n extra?: string;\n}\nexport type HighlightFlag = 'g' | 'i' | 'm' | 'u' | 'y';\nexport type Highlight = {\n /** 命中高亮 */\n hit?: boolean;\n /** 内容 */\n text: string;\n};\n\n/**\n * 字符串转换成高亮字符的Json格式\n * @param {string} text 字符串\n * @returns {HighlightTextJson} 高亮字符的Json\n */\nexport function strToHighlight(text: string): Highlight[] | null {\n let str = text,\n strArr = RegExp_HighLight.exec(str);\n\n if (strArr) {\n const textArr: Highlight[] = [];\n\n for (; strArr !== null; strArr = RegExp_HighLight.exec(str)) {\n // 普通部分\n let normalText: string | null = str.substring(0, strArr.index);\n\n if (normalText.trim().length) {\n textArr.push({\n text: normalText,\n });\n }\n\n // 高亮部分\n textArr.push({\n hit: true,\n text: strArr[1],\n });\n str = str.substring(strArr[0].length + strArr.index);\n normalText = null;\n }\n if (str.trim().length) {\n textArr.push({\n text: str,\n });\n }\n return textArr;\n }\n return null;\n}\n\nconst HighlightText: React.FC<HighlightTextProps> = ({\n className,\n style,\n hitStyle,\n hitClassName,\n text,\n highlight,\n extra,\n flag = 'g',\n}) => {\n const [texts, setTexts] = useState<Highlight[] | null>();\n const hitCls = useMemo(() => classNames([getPrefixCls('hit'), hitClassName]), [hitClassName]);\n\n useEffect(() => {\n if (typeof text === 'string' && highlight) {\n let str = text;\n\n if (Array.isArray(highlight)) {\n for (let i = 0, len = highlight.length; i < len; i++) {\n const item = highlight[i];\n const isOne = typeof item === 'string';\n const hitStr = isOne ? item : item.highlight;\n const iFlag = isOne ? flag : item.flag;\n\n str = str.replace(new RegExp(hitStr, iFlag), `%c:${hitStr}:c%`);\n }\n } else {\n str = str.replace(new RegExp(highlight, flag), `%c:${highlight}:c%`);\n }\n setTexts(strToHighlight(str));\n } else {\n setTexts(null);\n }\n }, [flag, highlight, text]);\n const hitNode = useMemo(() => {\n return (\n texts?.map((item, i) => {\n return item.hit ? (\n <span key={item.text + i} className={hitCls} data-text={item.text} style={hitStyle}>\n {item.text}\n </span>\n ) : (\n item.text\n );\n }) ?? text\n );\n }, [hitCls, hitStyle, text, texts]);\n\n return (\n <div className={classNames([getPrefixCls('highlight-text'), className])} style={style}>\n {hitNode}\n {extra && (\n <span className={hitCls} style={hitStyle}>\n {extra}\n </span>\n )}\n </div>\n );\n};\n\nexport default HighlightText;\n"],"names":["React","useEffect","useMemo","useState","getPrefixCls","classNames","RegExp_HighLight","strToHighlight","text","str","strArr","exec","textArr","normalText","substring","index","trim","length","push","hit","HighlightText","className","style","hitStyle","hitClassName","highlight","extra","flag","texts","setTexts","hitCls","Array","isArray","i","len","item","isOne","hitStr","iFlag","replace","RegExp","hitNode","map","span","key","data-text","div"],"mappings":"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"}
package/es/index.d.ts CHANGED
@@ -2,8 +2,6 @@ export { default as Markdown } from './markdown';
2
2
  export type { MarkdownProps, CodeBlockToolType, AnchorType } from './markdown';
3
3
  export { default as BackTop } from './back-top';
4
4
  export type { BackTopProps } from './back-top';
5
- export { default as Tag } from './tag';
6
- export type { TagProps } from './tag';
7
5
  export { default as HighlightText } from './highlight-text';
8
6
  export type { Highlight, HighlightTextProps, HighlightTextJson } from './highlight-text';
9
7
  export { default as useTheme } from './use-theme';
@@ -22,4 +20,5 @@ export { default as Button } from './button';
22
20
  export type { ButtonProps, ButtonType } from './button';
23
21
  export { default as Input } from './input';
24
22
  export type { InputProps } from './input';
25
- import './variables.less';
23
+ export { default as getPrefixCls } from './get-prefix-cls';
24
+ import './get-prefix-cls/index.less';
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";export{default as Input}from"./input";import"./variables.less";
1
+ export{default as Markdown}from"./markdown";export{default as BackTop}from"./back-top";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";export{default as getPrefixCls}from"./get-prefix-cls";import"./get-prefix-cls/index.less";
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\nexport { default as Input } from './input';\nexport type { InputProps } from './input';\n\nimport './variables.less';\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,AAG3C,OAAO,kBAAmB"}
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 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\nexport { default as getPrefixCls } from './get-prefix-cls';\n\nimport './get-prefix-cls/index.less';\n"],"names":["default","Markdown","BackTop","HighlightText","useTheme","Avatar","Marquee","CaptureScreen","WaveCircle","CronEditor","Button","Input","getPrefixCls"],"mappings":"AAAA,OAASA,WAAWC,QAAQ,KAAQ,YAAa,AAGjD,QAASD,WAAWE,OAAO,KAAQ,YAAa,AAGhD,QAASF,WAAWG,aAAa,KAAQ,kBAAmB,AAG5D,QAASH,WAAWI,QAAQ,KAAQ,aAAc,AAGlD,QAASJ,WAAWK,MAAM,KAAQ,UAAW,AAG7C,QAASL,WAAWM,OAAO,KAAQ,WAAY,AAG/C,QAASN,WAAWO,aAAa,KAAQ,kBAAmB,AAG5D,QAASP,WAAWQ,UAAU,KAAQ,eAAgB,AAGtD,QAASR,WAAWS,UAAU,KAAQ,eAAgB,AAGtD,QAAST,WAAWU,MAAM,KAAQ,UAAW,AAG7C,QAASV,WAAWW,KAAK,KAAQ,SAAU,AAG3C,QAASX,WAAWY,YAAY,KAAQ,kBAAmB,AAE3D,OAAO,6BAA8B"}
package/es/input/index.js CHANGED
@@ -1,2 +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{getPrefixCls}from"../utils";import{classNames}from"@moneko/common";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;
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 getPrefixCls from"../get-prefix-cls";import{classNames}from"@moneko/common";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
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/input/index.tsx"],"sourcesContent":["import React from 'react';\nimport { getPrefixCls } from '../utils';\nimport { classNames } from '@moneko/common';\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","getPrefixCls","classNames","Input","className","type","suffix","prefix","value","prpos","span","input"],"mappings":"AAAA,w9BAAA,OAAOA,UAAW,OAAQ,AAC1B,QAASC,YAAY,KAAQ,UAAW,AACxC,QAASC,UAAU,KAAQ,gBAAiB,AAC5C,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,UAAWF,WAAW,CACpBD,aAAa,iBACbA,aAAa,AAAC,SAAa,OAALI,OACtBD,UACD,GAEAG,QAAU,oBAACG,QAAKN,UAAWH,aAAa,iBAAkBM,QAC3D,oBAACI,kBAAMH,MAAOA,MAAOJ,UAAWH,aAAa,SAAUI,KAAMA,MAAUI,QACtEH,QAAU,oBAACI,QAAKN,UAAWH,aAAa,iBAAkBK,QAGjE,CAEA,gBAAeH,KAAM"}
1
+ {"version":3,"sources":["../../components/input/index.tsx"],"sourcesContent":["import React from 'react';\nimport getPrefixCls from '../get-prefix-cls';\nimport { classNames } from '@moneko/common';\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","getPrefixCls","classNames","Input","className","type","suffix","prefix","value","prpos","span","input"],"mappings":"AAAA,w9BAAA,OAAOA,UAAW,OAAQ,AAC1B,QAAOC,iBAAkB,mBAAoB,AAC7C,QAASC,UAAU,KAAQ,gBAAiB,AAC5C,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,UAAWF,WAAW,CACpBD,aAAa,iBACbA,aAAa,AAAC,SAAa,OAALI,OACtBD,UACD,GAEAG,QAAU,oBAACG,QAAKN,UAAWH,aAAa,iBAAkBM,QAC3D,oBAACI,kBAAMH,MAAOA,MAAOJ,UAAWH,aAAa,SAAUI,KAAMA,MAAUI,QACtEH,QAAU,oBAACI,QAAKN,UAAWH,aAAa,iBAAkBK,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{getPrefixCls}from"../utils";import{getScrollTop,setClipboard,classNames,isEqual,isSvgElement}from"@moneko/common";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);
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 getPrefixCls from"../get-prefix-cls";import{getScrollTop,setClipboard,classNames,isEqual,isSvgElement}from"@moneko/common";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})}else{str=""}if(str!==htmlStrRef.current){Object.assign(htmlStrRef,{current:str});setHtmlString(str)}},[text,langLineNumber,tools]);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]);useEffect(function(){if(tex){var ref1,ref2;require("katex/dist/katex.css");var katex=require("katex");(ref1=ref.current)===null||ref1===void 0?void 0:ref1.querySelectorAll(".m-katex-block").forEach(function(ele){if(ele.textContent){katex.render(ele.textContent,ele,{throwOnError:false,displayMode:true,strict:false})}});(ref2=ref.current)===null||ref2===void 0?void 0:ref2.querySelectorAll(".m-katex-inline").forEach(function(ele){if(ele.textContent){katex.render(ele.textContent,ele,{throwOnError:false,displayMode:false,strict:false})}})}},[tex,htmlString]);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 { getPrefixCls } from '../utils';\nimport { getScrollTop, setClipboard, classNames, isEqual, isSvgElement } from '@moneko/common';\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","getPrefixCls","getScrollTop","setClipboard","classNames","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
+ {"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 getPrefixCls from '../get-prefix-cls';\nimport { getScrollTop, setClipboard, classNames, isEqual, isSvgElement } from '@moneko/common';\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 });\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]);\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 useEffect(() => {\n if (tex) {\n require('katex/dist/katex.css');\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const katex = require('katex');\n\n ref.current?.querySelectorAll('.m-katex-block').forEach(function (ele) {\n if (ele.textContent) {\n katex.render(ele.textContent, ele as HTMLElement, {\n throwOnError: false,\n displayMode: true,\n strict: false,\n });\n }\n });\n ref.current?.querySelectorAll('.m-katex-inline').forEach(function (ele) {\n if (ele.textContent) {\n katex.render(ele.textContent, ele as HTMLElement, {\n throwOnError: false,\n displayMode: false,\n strict: false,\n });\n }\n });\n }\n }, [tex, htmlString]);\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","getPrefixCls","getScrollTop","setClipboard","classNames","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","require","katex","ele","textContent","render","throwOnError","displayMode","strict","div","dangerouslySetInnerHTML","__html","onClick","onWheel","images","onClose","index","onIndexChange","memo"],"mappings":"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"}
@@ -1,15 +1,12 @@
1
1
  import marked from 'marked-completed';
2
2
  import type { DataType as PhotoViewDataType } from 'react-photo-view/dist/types';
3
- import 'katex/dist/katex.css';
4
3
  /**
5
4
  * Markdown to Html
6
5
  * @param {string} text Markdown文本
7
6
  * @param {MarkedOptions} option MarkedOptions
8
7
  * @returns {string} Html文本
9
8
  */
10
- export declare const markdownUtil: (text: string, option?: marked.MarkedOptions & {
11
- tex?: boolean;
12
- }) => string;
9
+ export declare const markdownUtil: (text: string, option: marked.MarkedOptions) => string;
13
10
  /**
14
11
  * 提取md图片src
15
12
  * @param {string} text HTML string