taro-react-uilib 1.4.19-1 → 1.4.19-3
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.
- package/dist/components/BankCardNumberInput/index.js +1 -1
- package/dist/components/BankCardNumberInput/index.js.map +1 -1
- package/dist/components/Echarts/weapp/wx-canvas.js +1 -1
- package/dist/components/Echarts/weapp/wx-canvas.js.map +1 -1
- package/dist/components/Echarts/weapp/wx-touch.js +1 -1
- package/dist/components/Echarts/weapp/wx-touch.js.map +1 -1
- package/dist/components/FormInput/index.js +1 -1
- package/dist/components/FormInput/index.js.map +1 -1
- package/dist/components/LicensePlateInput/Keyboard.js +1 -1
- package/dist/components/LicensePlateInput/Keyboard.js.map +1 -1
- package/dist/components/LicensePlateInput/index.js +1 -1
- package/dist/components/LicensePlateInput/index.js.map +1 -1
- package/dist/components/src/utils/index.js +1 -1
- package/dist/components/src/utils/index.js.map +1 -1
- package/dist/index.esm.js +5 -5
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +5 -5
- package/dist/index.umd.js.map +1 -1
- package/dist/styles/components/forminput.scss +13 -0
- package/lib/components/BankCardNumberInput/index.js +4 -5
- package/lib/components/BankCardNumberInput/index.js.map +1 -1
- package/lib/components/Echarts/weapp/wx-canvas.js +2 -2
- package/lib/components/Echarts/weapp/wx-canvas.js.map +1 -1
- package/lib/components/Echarts/weapp/wx-touch.js +6 -6
- package/lib/components/Echarts/weapp/wx-touch.js.map +1 -1
- package/lib/components/FormInput/index.js +6 -5
- package/lib/components/FormInput/index.js.map +1 -1
- package/lib/components/LicensePlateInput/Keyboard.js +27 -20
- package/lib/components/LicensePlateInput/Keyboard.js.map +1 -1
- package/lib/components/LicensePlateInput/index.js +28 -8
- package/lib/components/LicensePlateInput/index.js.map +1 -1
- package/lib/utils/index.js +21 -0
- package/lib/utils/index.js.map +1 -1
- package/package.json +1 -1
- package/types/components/FormInput/index.d.ts +2 -1
- package/types/components/LicensePlateInput/index.d.ts +21 -2
- package/types/utils/index.d.ts +9 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import n,{forwardRef as e,useImperativeHandle as
|
|
1
|
+
import n,{forwardRef as e,useRef as r,useImperativeHandle as a}from"react";import l from"classnames";import{View as o}from"@tarojs/components";import t from"../FormInput/index.js";import{creditCard as c,checkBankCard as u}from"../src/utils/index.js";var i=e((function(e,i){var m=e.showScan,s=void 0!==m&&m,d=e.label,p=e.value,f=e.bankName,h=e.readOnly,b=e.direction,v=void 0===b?"column":b,x=e.onScan,g=e.placeholder,E=void 0===g?"请输入银行卡号":g,k=e.onError,N=e.onChange,C=e.maxlength,j=void 0===C?23:C,y=e.slot,w=e.className,B=e.border,S=e.onBlur,F=function(n){var e=n.replace(/\s/g,"");return!(e.length<16||e.length>19)&&u(e)},I=r(null);return a(i,(function(){return{isValid:F(p),focus:function(){var n;null===(n=null==I?void 0:I.current)||void 0===n||n.focus()}}}),[p]),n.createElement(o,{className:l("xh-bankcard-number-input",w)},n.createElement(t,{padding:!0,ref:I,RightComponent:s&&n.createElement(o,{onClick:function(){null==x||x()},className:"xh-bankcard-number-input-scan"}),direction:v,label:d,mainExtra:"row"!==v&&n.createElement(o,{className:"xh-bankcard-number-input-name"},f),maxlength:j,placeholder:E,readonly:h,type:"tel",border:B,value:c(p),onBlur:function(n){null==S||S(),F(n)||null==k||k(""===n?"银行卡号不能为空":"银行卡号格式不正确")},onChange:function(n){var e=c(n);null==N||N(e)}}),y&&n.createElement(o,{className:"xh-bankcard-number-input-slot"},y))}));export{i as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/BankCardNumberInput/index.tsx"],"sourcesContent":["import React, {
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/BankCardNumberInput/index.tsx"],"sourcesContent":["import React, {\n ReactNode,\n forwardRef,\n useImperativeHandle,\n useRef,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\n\nimport XHFormInput, { FocusHandler } from \"../FormInput\";\nimport { checkBankCard, creditCard } from \"../../utils\";\nimport \"./index.scss\";\nimport { XHComponentCommonProps } from \"../../types\";\n\nexport type PhoneNumberInputProps = {\n showScan?: boolean;\n label?: string;\n /**\n * 只有在direction为column才生效\n */\n bankName?: ReactNode;\n onChange?: (value: string) => void;\n value: string;\n placeholder?: string;\n readOnly?: boolean;\n disabled?: boolean;\n direction?: \"column\" | \"row\";\n onScan?: () => void;\n onError?: (msg: string) => void;\n maxlength?: number;\n slot?: ReactNode;\n border?: boolean;\n onBlur?: () => void;\n} & XHComponentCommonProps;\n\nexport type BankCardNumberInputRef = { isValid: boolean; focus: () => void };\n\nconst BankCardNumberInput = forwardRef<\n BankCardNumberInputRef,\n PhoneNumberInputProps\n>((props, fromRef) => {\n const {\n showScan = false,\n label,\n value,\n bankName,\n readOnly,\n direction = \"column\",\n onScan,\n placeholder = \"请输入银行卡号\",\n onError,\n onChange,\n maxlength = 23,\n slot,\n className,\n border,\n onBlur,\n } = props;\n\n const validateCardNumber = value => {\n const newVal = value.replace(/\\s/g, \"\");\n if (newVal.length < 16 || newVal.length > 19) return false;\n return checkBankCard(newVal);\n };\n\n const FormInput = useRef<FocusHandler>(null);\n\n const handleBlur = value => {\n console.log(\"blur\");\n onBlur?.();\n if (!validateCardNumber(value))\n onError?.(value === \"\" ? \"银行卡号不能为空\" : \"银行卡号格式不正确\");\n };\n\n const handleChange = value => {\n const formatValue = creditCard(value);\n onChange?.(formatValue);\n };\n\n const handleOnScan = () => {\n console.log(fromRef, \"fromRef...\");\n onScan?.();\n };\n\n useImperativeHandle(\n fromRef,\n () => {\n return {\n isValid: validateCardNumber(value),\n focus: () => {\n FormInput?.current?.focus();\n },\n };\n },\n [value]\n );\n\n return (\n <View className={classNames(\"xh-bankcard-number-input\", className)}>\n <XHFormInput\n padding\n ref={FormInput}\n RightComponent={\n showScan && (\n <View\n onClick={handleOnScan}\n className=\"xh-bankcard-number-input-scan\"\n ></View>\n )\n }\n direction={direction}\n label={label}\n mainExtra={\n direction !== \"row\" && (\n <View className=\"xh-bankcard-number-input-name\">{bankName}</View>\n )\n }\n maxlength={maxlength}\n placeholder={placeholder}\n readonly={readOnly}\n type=\"tel\"\n border={border}\n value={creditCard(value)}\n onBlur={handleBlur}\n onChange={handleChange}\n />\n {slot && <View className=\"xh-bankcard-number-input-slot\">{slot}</View>}\n </View>\n );\n});\n\nexport default BankCardNumberInput;\n"],"names":["BankCardNumberInput","forwardRef","props","fromRef","_a","showScan","label","value","bankName","readOnly","_b","direction","onScan","_c","placeholder","onError","onChange","_d","maxlength","slot","className","border","onBlur","validateCardNumber","newVal","replace","length","checkBankCard","FormInput","useRef","useImperativeHandle","isValid","focus","current","React","createElement","View","classNames","XHFormInput","padding","ref","RightComponent","onClick","mainExtra","readonly","type","creditCard","formatValue"],"mappings":"0PAqCA,IAAMA,EAAsBC,GAG1B,SAACC,EAAOC,GAEN,IAAAC,EAeEF,EAAKG,SAfPA,OAAQ,IAAAD,GAAQA,EAChBE,EAcEJ,QAbFK,EAaEL,EAAKK,MAZPC,EAYEN,EAZMM,SACRC,EAWEP,WAVFQ,EAUER,EAVkBS,UAApBA,OAAY,IAAAD,EAAA,WACZE,EASEV,EAAKU,OARPC,EAQEX,EARqBY,YAAvBA,OAAc,IAAAD,EAAA,YACdE,EAOEb,EAAKa,QANPC,EAMEd,EANMc,SACRC,EAKEf,EAAKgB,UALPA,OAAS,IAAAD,EAAG,GAAEA,EACdE,EAIEjB,OAHFkB,EAGElB,EAAKkB,UAFPC,EAEEnB,EAFImB,OACNC,EACEpB,SAEEqB,EAAqB,SAAAhB,GACzB,IAAMiB,EAASjB,EAAMkB,QAAQ,MAAO,IACpC,QAAID,EAAOE,OAAS,IAAMF,EAAOE,OAAS,KACnCC,EAAcH,EACvB,EAEMI,EAAYC,EAAqB,MAgCvC,OAbAC,EACE3B,GACA,WACE,MAAO,CACL4B,QAASR,EAAmBhB,GAC5ByB,MAAO,iBACa,QAAlB5B,EAAAwB,aAAA,EAAAA,EAAWK,eAAO,IAAA7B,GAAAA,EAAE4B,OACrB,EAEL,GACA,CAACzB,IAID2B,EAACC,cAAAC,EAAK,CAAAhB,UAAWiB,EAAW,2BAA4BjB,IACtDc,EAAAC,cAACG,EACC,CAAAC,WACAC,IAAKZ,EACLa,eACEpC,GACE6B,EAAAC,cAACC,EACC,CAAAM,QA1BS,WAEnB9B,SAAAA,GACF,EAwBYQ,UAAU,kCAIhBT,UAAWA,EACXL,MAAOA,EACPqC,UACgB,QAAdhC,GACEuB,EAACC,cAAAC,EAAK,CAAAhB,UAAU,iCAAiCZ,GAGrDU,UAAWA,EACXJ,YAAaA,EACb8B,SAAUnC,EACVoC,KAAK,MACLxB,OAAQA,EACRd,MAAOuC,EAAWvC,GAClBe,OAxDa,SAAAf,GAEjBe,SAAAA,IACKC,EAAmBhB,IACtBQ,SAAAA,EAAoB,KAAVR,EAAe,WAAa,YAC1C,EAoDMS,SAlDe,SAAAT,GACnB,IAAMwC,EAAcD,EAAWvC,GAC/BS,SAAAA,EAAW+B,EACb,IAiDK5B,GAAQe,EAAAC,cAACC,EAAI,CAAChB,UAAU,iCAAiCD,GAGhE"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var t=function(){function t(t,e,n){this.ctx=t,this.chart=null,e?this.canvasNode=n:this._initStyle(t),this._initEvent()}return t.prototype.getContext=function(t){if("2d"===t)return this.ctx},t.prototype.setChart=function(t){this.chart=t},t.prototype.attachEvent=function(){},t.prototype.addEventListener=function(){},t.prototype.removeEventListener=function(){},t.prototype.detachEvent=function(){},t.prototype._initCanvas=function(t,e){t.util.getContext=function(){return e},t.util.$override("measureText",(function(t,n){return e.font=n||"12px sans-serif",e.measureText(t)}))},t.prototype._initStyle=function(t){["fillStyle","strokeStyle","globalAlpha","textAlign","textBaseAlign","shadow","lineWidth","lineCap","lineJoin","lineDash","miterLimit","fontSize"].forEach((function(e){Object.defineProperty(t,e,{set:function(n){("fillStyle"!==e&&"strokeStyle"!==e||"none"!==n&&null!==n)&&t["set"+e.charAt(0).toUpperCase()+e.slice(1)](n)}})})),t.createRadialGradient=function(){return t.createCircularGradient.apply(t,arguments)}},t.prototype._initEvent=function(){var t=this;this.event={};[{wxName:"touchStart",ecName:"mousedown"},{wxName:"touchMove",ecName:"mousemove"},{wxName:"touchEnd",ecName:"mouseup"},{wxName:"touchEnd",ecName:"click"}].forEach((function(e){t.event[e.wxName]=function(n){var i,o=n.touches[0];t.chart&&(null===(i=t.chart.getZr())||void 0===i
|
|
1
|
+
var t=function(){function t(t,e,n){this.ctx=t,this.chart=null,e?this.canvasNode=n:this._initStyle(t),this._initEvent()}return t.prototype.getContext=function(t){if("2d"===t)return this.ctx},t.prototype.setChart=function(t){this.chart=t},t.prototype.attachEvent=function(){},t.prototype.addEventListener=function(){},t.prototype.removeEventListener=function(){},t.prototype.detachEvent=function(){},t.prototype._initCanvas=function(t,e){t.util.getContext=function(){return e},t.util.$override("measureText",(function(t,n){return e.font=n||"12px sans-serif",e.measureText(t)}))},t.prototype._initStyle=function(t){["fillStyle","strokeStyle","globalAlpha","textAlign","textBaseAlign","shadow","lineWidth","lineCap","lineJoin","lineDash","miterLimit","fontSize"].forEach((function(e){Object.defineProperty(t,e,{set:function(n){("fillStyle"!==e&&"strokeStyle"!==e||"none"!==n&&null!==n)&&t["set"+e.charAt(0).toUpperCase()+e.slice(1)](n)}})})),t.createRadialGradient=function(){return t.createCircularGradient.apply(t,arguments)}},t.prototype._initEvent=function(){var t=this;this.event={};[{wxName:"touchStart",ecName:"mousedown"},{wxName:"touchMove",ecName:"mousemove"},{wxName:"touchEnd",ecName:"mouseup"},{wxName:"touchEnd",ecName:"click"}].forEach((function(e){t.event[e.wxName]=function(n){var i,o,a=n.touches[0];t.chart&&(null===(o=null===(i=t.chart.getZr())||void 0===i?void 0:i.handler)||void 0===o||o.dispatch(e.ecName,{zrX:"tap"===e.wxName?a.clientX:a.x,zrY:"tap"===e.wxName?a.clientY:a.y}))}}))},Object.defineProperty(t.prototype,"width",{get:function(){return this.canvasNode?this.canvasNode.width:0},set:function(t){this.canvasNode&&(this.canvasNode.width=t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"height",{get:function(){return this.canvasNode?this.canvasNode.height:0},set:function(t){this.canvasNode&&(this.canvasNode.height=t)},enumerable:!1,configurable:!0}),t}();export{t as default};
|
|
2
2
|
//# sourceMappingURL=wx-canvas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wx-canvas.js","sources":["../../../../src/components/Echarts/weapp/wx-canvas.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/member-ordering */\n/* eslint-disable accessor-pairs */\n/* eslint-disable @typescript-eslint/explicit-member-accessibility */\nimport { CanvasContext } from \"@tarojs/taro\";\n\nexport default class WxCanvas {\n private ctx: CanvasContext;\n\n private chart: any;\n\n private canvasNode: any;\n\n private event: {};\n\n constructor(ctx: CanvasContext, isNew: boolean, canvasNode?: any) {\n this.ctx = ctx;\n this.chart = null;\n if (isNew) {\n this.canvasNode = canvasNode;\n } else {\n this._initStyle(ctx);\n }\n\n this._initEvent();\n }\n\n getContext(contextType) {\n if (contextType === \"2d\") {\n return this.ctx;\n }\n }\n\n setChart(chart) {\n this.chart = chart;\n }\n\n attachEvent() {\n // noop\n }\n\n addEventListener() {\n // noop\n }\n\n removeEventListener() {\n // noop\n }\n\n detachEvent() {\n // noop\n }\n\n _initCanvas(zrender, ctx) {\n zrender.util.getContext = function () {\n return ctx;\n };\n\n zrender.util.$override(\"measureText\", function (text, font) {\n ctx.font = font || \"12px sans-serif\";\n return ctx.measureText(text);\n });\n }\n\n _initStyle(ctx) {\n let styles = [\n \"fillStyle\",\n \"strokeStyle\",\n \"globalAlpha\",\n \"textAlign\",\n \"textBaseAlign\",\n \"shadow\",\n \"lineWidth\",\n \"lineCap\",\n \"lineJoin\",\n \"lineDash\",\n \"miterLimit\",\n \"fontSize\",\n ];\n\n styles.forEach(style => {\n Object.defineProperty(ctx, style, {\n set: value => {\n if (\n (style !== \"fillStyle\" && style !== \"strokeStyle\") ||\n (value !== \"none\" && value !== null)\n ) {\n ctx[\"set\" + style.charAt(0).toUpperCase() + style.slice(1)](value);\n }\n },\n });\n });\n\n ctx.createRadialGradient = function () {\n return ctx.createCircularGradient.apply(ctx, arguments);\n };\n }\n\n _initEvent() {\n this.event = {};\n const eventNames = [\n {\n wxName: \"touchStart\",\n ecName: \"mousedown\",\n },\n {\n wxName: \"touchMove\",\n ecName: \"mousemove\",\n },\n {\n wxName: \"touchEnd\",\n ecName: \"mouseup\",\n },\n {\n wxName: \"touchEnd\",\n ecName: \"click\",\n },\n ];\n\n eventNames.forEach(name => {\n this.event[name.wxName] = e => {\n const touch = e.touches[0];\n if (this.chart) {\n this.chart.getZr()?.handler
|
|
1
|
+
{"version":3,"file":"wx-canvas.js","sources":["../../../../src/components/Echarts/weapp/wx-canvas.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/member-ordering */\n/* eslint-disable accessor-pairs */\n/* eslint-disable @typescript-eslint/explicit-member-accessibility */\nimport { CanvasContext } from \"@tarojs/taro\";\n\nexport default class WxCanvas {\n private ctx: CanvasContext;\n\n private chart: any;\n\n private canvasNode: any;\n\n private event: {};\n\n constructor(ctx: CanvasContext, isNew: boolean, canvasNode?: any) {\n this.ctx = ctx;\n this.chart = null;\n if (isNew) {\n this.canvasNode = canvasNode;\n } else {\n this._initStyle(ctx);\n }\n\n this._initEvent();\n }\n\n getContext(contextType) {\n if (contextType === \"2d\") {\n return this.ctx;\n }\n }\n\n setChart(chart) {\n this.chart = chart;\n }\n\n attachEvent() {\n // noop\n }\n\n addEventListener() {\n // noop\n }\n\n removeEventListener() {\n // noop\n }\n\n detachEvent() {\n // noop\n }\n\n _initCanvas(zrender, ctx) {\n zrender.util.getContext = function () {\n return ctx;\n };\n\n zrender.util.$override(\"measureText\", function (text, font) {\n ctx.font = font || \"12px sans-serif\";\n return ctx.measureText(text);\n });\n }\n\n _initStyle(ctx) {\n let styles = [\n \"fillStyle\",\n \"strokeStyle\",\n \"globalAlpha\",\n \"textAlign\",\n \"textBaseAlign\",\n \"shadow\",\n \"lineWidth\",\n \"lineCap\",\n \"lineJoin\",\n \"lineDash\",\n \"miterLimit\",\n \"fontSize\",\n ];\n\n styles.forEach(style => {\n Object.defineProperty(ctx, style, {\n set: value => {\n if (\n (style !== \"fillStyle\" && style !== \"strokeStyle\") ||\n (value !== \"none\" && value !== null)\n ) {\n ctx[\"set\" + style.charAt(0).toUpperCase() + style.slice(1)](value);\n }\n },\n });\n });\n\n ctx.createRadialGradient = function () {\n return ctx.createCircularGradient.apply(ctx, arguments);\n };\n }\n\n _initEvent() {\n this.event = {};\n const eventNames = [\n {\n wxName: \"touchStart\",\n ecName: \"mousedown\",\n },\n {\n wxName: \"touchMove\",\n ecName: \"mousemove\",\n },\n {\n wxName: \"touchEnd\",\n ecName: \"mouseup\",\n },\n {\n wxName: \"touchEnd\",\n ecName: \"click\",\n },\n ];\n\n eventNames.forEach(name => {\n this.event[name.wxName] = e => {\n const touch = e.touches[0];\n if (this.chart) {\n this.chart.getZr()?.handler?.dispatch(name.ecName, {\n zrX: name.wxName === \"tap\" ? touch.clientX : touch.x,\n zrY: name.wxName === \"tap\" ? touch.clientY : touch.y,\n });\n }\n };\n });\n }\n\n set width(w) {\n if (this.canvasNode) this.canvasNode.width = w;\n }\n\n set height(h) {\n if (this.canvasNode) this.canvasNode.height = h;\n }\n\n // eslint-disable-next-line @typescript-eslint/adjacent-overload-signatures\n get width() {\n if (this.canvasNode) return this.canvasNode.width;\n return 0;\n }\n\n // eslint-disable-next-line @typescript-eslint/adjacent-overload-signatures\n get height() {\n if (this.canvasNode) return this.canvasNode.height;\n return 0;\n }\n}\n"],"names":["WxCanvas","ctx","isNew","canvasNode","this","chart","_initStyle","_initEvent","prototype","getContext","contextType","setChart","attachEvent","addEventListener","removeEventListener","detachEvent","_initCanvas","zrender","util","$override","text","font","measureText","forEach","style","Object","defineProperty","set","value","charAt","toUpperCase","slice","createRadialGradient","createCircularGradient","apply","arguments","_this","event","wxName","ecName","name","e","touch","touches","_b","_a","getZr","handler","dispatch","zrX","clientX","x","zrY","clientY","y","get","width","w","height","h"],"mappings":"AAKA,IAAAA,EAAA,WASE,SAAAA,EAAYC,EAAoBC,EAAgBC,GAC9CC,KAAKH,IAAMA,EACXG,KAAKC,MAAQ,KACTH,EACFE,KAAKD,WAAaA,EAElBC,KAAKE,WAAWL,GAGlBG,KAAKG,YACN,CA8HH,OA5HEP,EAAUQ,UAAAC,WAAV,SAAWC,GACT,GAAoB,OAAhBA,EACF,OAAON,KAAKH,KAIhBD,EAAQQ,UAAAG,SAAR,SAASN,GACPD,KAAKC,MAAQA,GAGfL,EAAAQ,UAAAI,YAAA,aAIAZ,EAAAQ,UAAAK,iBAAA,aAIAb,EAAAQ,UAAAM,oBAAA,aAIAd,EAAAQ,UAAAO,YAAA,aAIAf,EAAAQ,UAAAQ,YAAA,SAAYC,EAAShB,GACnBgB,EAAQC,KAAKT,WAAa,WACxB,OAAOR,CACT,EAEAgB,EAAQC,KAAKC,UAAU,eAAe,SAAUC,EAAMC,GAEpD,OADApB,EAAIoB,KAAOA,GAAQ,kBACZpB,EAAIqB,YAAYF,EACzB,KAGFpB,EAAUQ,UAAAF,WAAV,SAAWL,GACI,CACX,YACA,cACA,cACA,YACA,gBACA,SACA,YACA,UACA,WACA,WACA,aACA,YAGKsB,SAAQ,SAAAC,GACbC,OAAOC,eAAezB,EAAKuB,EAAO,CAChCG,IAAK,SAAAC,IAEU,cAAVJ,GAAmC,gBAAVA,GACf,SAAVI,GAA8B,OAAVA,IAErB3B,EAAI,MAAQuB,EAAMK,OAAO,GAAGC,cAAgBN,EAAMO,MAAM,IAAIH,EAE/D,GAEL,IAEA3B,EAAI+B,qBAAuB,WACzB,OAAO/B,EAAIgC,uBAAuBC,MAAMjC,EAAKkC,UAC/C,GAGFnC,EAAAQ,UAAAD,WAAA,WAAA,IAgCC6B,EAAAhC,KA/BCA,KAAKiC,MAAQ,GACM,CACjB,CACEC,OAAQ,aACRC,OAAQ,aAEV,CACED,OAAQ,YACRC,OAAQ,aAEV,CACED,OAAQ,WACRC,OAAQ,WAEV,CACED,OAAQ,WACRC,OAAQ,UAIDhB,SAAQ,SAAAiB,GACjBJ,EAAKC,MAAMG,EAAKF,QAAU,SAAAG,WAClBC,EAAQD,EAAEE,QAAQ,GACpBP,EAAK/B,gBACPuC,EAAoB,QAApBC,EAAAT,EAAK/B,MAAMyC,eAAS,IAAAD,OAAA,EAAAA,EAAAE,wBAASC,SAASR,EAAKD,OAAQ,CACjDU,IAAqB,QAAhBT,EAAKF,OAAmBI,EAAMQ,QAAUR,EAAMS,EACnDC,IAAqB,QAAhBZ,EAAKF,OAAmBI,EAAMW,QAAUX,EAAMY,IAGzD,CACF,KAGF7B,OAAAC,eAAI1B,EAAKQ,UAAA,QAAA,CAST+C,IAAA,WACE,OAAInD,KAAKD,WAAmBC,KAAKD,WAAWqD,MACrC,CACR,EAZD7B,IAAA,SAAU8B,GACJrD,KAAKD,aAAYC,KAAKD,WAAWqD,MAAQC,EAC9C,kCAEDhC,OAAAC,eAAI1B,EAAMQ,UAAA,SAAA,CAWV+C,IAAA,WACE,OAAInD,KAAKD,WAAmBC,KAAKD,WAAWuD,OACrC,CACR,EAdD/B,IAAA,SAAWgC,GACLvD,KAAKD,aAAYC,KAAKD,WAAWuD,OAASC,EAC/C,kCAaF3D,CAAD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function t(t){for(var o=0;o<t.touches.length;++o){var n=t.touches[o];n.offsetX=n.x,n.offsetY=n.y}return t}function o(o){var n,e=o.chart,a=o.event;if(e&&a.touches.length>0){var r=a.touches[0],i=null===(n=e.getZr())||void 0===n?void 0:n.handler;i.dispatch("mousedown",{zrX:r.x,zrY:r.y,preventDefault:function(){},stopImmediatePropagation:function(){},stopPropagation:function(){}}),i.dispatch("mousemove",{zrX:r.x,zrY:r.y,preventDefault:function(){},stopImmediatePropagation:function(){},stopPropagation:function(){}}),i.processGesture(t(a),"start")}}function n(o){var n,e=o.chart,a=o.event;if(e&&a.touches.length>0){var r=a.touches[0],i=null===(n=e.getZr())||void 0===n?void 0:n.handler;i.dispatch("mousedown",{zrX:r.x,zrY:r.y,preventDefault:function(){},stopImmediatePropagation:function(){},stopPropagation:function(){}}),i.dispatch("mousemove",{zrX:r.x,zrY:r.y,preventDefault:function(){},stopImmediatePropagation:function(){},stopPropagation:function(){}}),i.processGesture(t(a),"start")}}function e(o){var n,e=o.chart,a=o.event;if(e){var r=a.changedTouches?a.changedTouches[0]:{},i=null===(n=e.getZr())||void 0===n?void 0:n.handler;i.dispatch("mouseup",{zrX:r.x,zrY:r.y,preventDefault:function(){},stopImmediatePropagation:function(){},stopPropagation:function(){}}),i.dispatch("click",{zrX:r.x,zrY:r.y,preventDefault:function(){},stopImmediatePropagation:function(){},stopPropagation:function(){}}),i.processGesture(t(a),"end")}}export{e as touchEnd,n as touchMove,o as touchStart,t as wrapTouch};
|
|
1
|
+
function t(t){for(var o=0;o<t.touches.length;++o){var n=t.touches[o];n.offsetX=n.x,n.offsetY=n.y}return t}function o(o){var n,e=o.chart,a=o.event;if(e&&a.touches.length>0){var r=a.touches[0],i=null===(n=e.getZr())||void 0===n?void 0:n.handler;null==i||i.dispatch("mousedown",{zrX:r.x,zrY:r.y,preventDefault:function(){},stopImmediatePropagation:function(){},stopPropagation:function(){}}),null==i||i.dispatch("mousemove",{zrX:r.x,zrY:r.y,preventDefault:function(){},stopImmediatePropagation:function(){},stopPropagation:function(){}}),i.processGesture(t(a),"start")}}function n(o){var n,e=o.chart,a=o.event;if(e&&a.touches.length>0){var r=a.touches[0],i=null===(n=e.getZr())||void 0===n?void 0:n.handler;null==i||i.dispatch("mousedown",{zrX:r.x,zrY:r.y,preventDefault:function(){},stopImmediatePropagation:function(){},stopPropagation:function(){}}),null==i||i.dispatch("mousemove",{zrX:r.x,zrY:r.y,preventDefault:function(){},stopImmediatePropagation:function(){},stopPropagation:function(){}}),i.processGesture(t(a),"start")}}function e(o){var n,e=o.chart,a=o.event;if(e){var r=a.changedTouches?a.changedTouches[0]:{},i=null===(n=e.getZr())||void 0===n?void 0:n.handler;null==i||i.dispatch("mouseup",{zrX:r.x,zrY:r.y,preventDefault:function(){},stopImmediatePropagation:function(){},stopPropagation:function(){}}),null==i||i.dispatch("click",{zrX:r.x,zrY:r.y,preventDefault:function(){},stopImmediatePropagation:function(){},stopPropagation:function(){}}),i.processGesture(t(a),"end")}}export{e as touchEnd,n as touchMove,o as touchStart,t as wrapTouch};
|
|
2
2
|
//# sourceMappingURL=wx-touch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wx-touch.js","sources":["../../../../src/components/Echarts/weapp/wx-touch.ts"],"sourcesContent":["export function wrapTouch(event) {\n for (let i = 0; i < event.touches.length; ++i) {\n const touch = event.touches[i];\n touch.offsetX = touch.x;\n touch.offsetY = touch.y;\n }\n return event;\n}\n\nexport function touchStart({ chart, event }) {\n if (chart && event.touches.length > 0) {\n const touch = event.touches[0];\n const handler = chart.getZr()?.handler;\n handler
|
|
1
|
+
{"version":3,"file":"wx-touch.js","sources":["../../../../src/components/Echarts/weapp/wx-touch.ts"],"sourcesContent":["export function wrapTouch(event) {\n for (let i = 0; i < event.touches.length; ++i) {\n const touch = event.touches[i];\n touch.offsetX = touch.x;\n touch.offsetY = touch.y;\n }\n return event;\n}\n\nexport function touchStart({ chart, event }) {\n if (chart && event.touches.length > 0) {\n const touch = event.touches[0];\n const handler = chart.getZr()?.handler;\n handler?.dispatch(\"mousedown\", {\n zrX: touch.x,\n zrY: touch.y,\n preventDefault: () => {},\n stopImmediatePropagation: () => {},\n stopPropagation: () => {},\n });\n handler?.dispatch(\"mousemove\", {\n zrX: touch.x,\n zrY: touch.y,\n preventDefault: () => {},\n stopImmediatePropagation: () => {},\n stopPropagation: () => {},\n });\n handler.processGesture(wrapTouch(event), \"start\");\n }\n}\n\nexport function touchMove({ chart, event }) {\n if (chart && event.touches.length > 0) {\n const touch = event.touches[0];\n const handler = chart.getZr()?.handler;\n handler?.dispatch(\"mousedown\", {\n zrX: touch.x,\n zrY: touch.y,\n preventDefault: () => {},\n stopImmediatePropagation: () => {},\n stopPropagation: () => {},\n });\n handler?.dispatch(\"mousemove\", {\n zrX: touch.x,\n zrY: touch.y,\n preventDefault: () => {},\n stopImmediatePropagation: () => {},\n stopPropagation: () => {},\n });\n handler.processGesture(wrapTouch(event), \"start\");\n }\n}\n\nexport function touchEnd({ chart, event }) {\n if (chart) {\n const touch = event.changedTouches ? event.changedTouches[0] : {};\n const handler = chart.getZr()?.handler;\n handler?.dispatch(\"mouseup\", {\n zrX: touch.x,\n zrY: touch.y,\n preventDefault: () => {},\n stopImmediatePropagation: () => {},\n stopPropagation: () => {},\n });\n handler?.dispatch(\"click\", {\n zrX: touch.x,\n zrY: touch.y,\n preventDefault: () => {},\n stopImmediatePropagation: () => {},\n stopPropagation: () => {},\n });\n handler.processGesture(wrapTouch(event), \"end\");\n }\n}\n"],"names":["wrapTouch","event","i","touches","length","touch","offsetX","x","offsetY","y","touchStart","_a","chart","handler","_b","getZr","dispatch","zrX","zrY","preventDefault","stopImmediatePropagation","stopPropagation","processGesture","touchMove","touchEnd","changedTouches"],"mappings":"AAAM,SAAUA,EAAUC,GACxB,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAME,QAAQC,SAAUF,EAAG,CAC7C,IAAMG,EAAQJ,EAAME,QAAQD,GAC5BG,EAAMC,QAAUD,EAAME,EACtBF,EAAMG,QAAUH,EAAMI,CACvB,CACD,OAAOR,CACT,CAEM,SAAUS,EAAWC,SAAEC,EAAKD,EAAAC,MAAEX,EAAKU,EAAAV,MACvC,GAAIW,GAASX,EAAME,QAAQC,OAAS,EAAG,CACrC,IAAMC,EAAQJ,EAAME,QAAQ,GACtBU,EAAyB,QAAfC,EAAAF,EAAMG,eAAS,IAAAD,OAAA,EAAAA,EAAAD,QAC/BA,SAAAA,EAASG,SAAS,YAAa,CAC7BC,IAAKZ,EAAME,EACXW,IAAKb,EAAMI,EACXU,eAAgB,WAAQ,EACxBC,yBAA0B,WAAQ,EAClCC,gBAAiB,WAAQ,IAE3BR,SAAAA,EAASG,SAAS,YAAa,CAC7BC,IAAKZ,EAAME,EACXW,IAAKb,EAAMI,EACXU,eAAgB,WAAQ,EACxBC,yBAA0B,WAAQ,EAClCC,gBAAiB,WAAQ,IAE3BR,EAAQS,eAAetB,EAAUC,GAAQ,QAC1C,CACH,CAEM,SAAUsB,EAAUZ,SAAEC,EAAKD,EAAAC,MAAEX,EAAKU,EAAAV,MACtC,GAAIW,GAASX,EAAME,QAAQC,OAAS,EAAG,CACrC,IAAMC,EAAQJ,EAAME,QAAQ,GACtBU,EAAyB,QAAfC,EAAAF,EAAMG,eAAS,IAAAD,OAAA,EAAAA,EAAAD,QAC/BA,SAAAA,EAASG,SAAS,YAAa,CAC7BC,IAAKZ,EAAME,EACXW,IAAKb,EAAMI,EACXU,eAAgB,WAAQ,EACxBC,yBAA0B,WAAQ,EAClCC,gBAAiB,WAAQ,IAE3BR,SAAAA,EAASG,SAAS,YAAa,CAC7BC,IAAKZ,EAAME,EACXW,IAAKb,EAAMI,EACXU,eAAgB,WAAQ,EACxBC,yBAA0B,WAAQ,EAClCC,gBAAiB,WAAQ,IAE3BR,EAAQS,eAAetB,EAAUC,GAAQ,QAC1C,CACH,CAEM,SAAUuB,EAASb,SAAEC,EAAKD,EAAAC,MAAEX,EAAKU,EAAAV,MACrC,GAAIW,EAAO,CACT,IAAMP,EAAQJ,EAAMwB,eAAiBxB,EAAMwB,eAAe,GAAK,GACzDZ,EAAyB,QAAfC,EAAAF,EAAMG,eAAS,IAAAD,OAAA,EAAAA,EAAAD,QAC/BA,SAAAA,EAASG,SAAS,UAAW,CAC3BC,IAAKZ,EAAME,EACXW,IAAKb,EAAMI,EACXU,eAAgB,WAAQ,EACxBC,yBAA0B,WAAQ,EAClCC,gBAAiB,WAAQ,IAE3BR,SAAAA,EAASG,SAAS,QAAS,CACzBC,IAAKZ,EAAME,EACXW,IAAKb,EAAMI,EACXU,eAAgB,WAAQ,EACxBC,yBAA0B,WAAQ,EAClCC,gBAAiB,WAAQ,IAE3BR,EAAQS,eAAetB,EAAUC,GAAQ,MAC1C,CACH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__rest as e,__assign as a}from"../node_modules/tslib/tslib.es6.js";import t,{forwardRef as n,useRef as l,useImperativeHandle as r}from"react";import{View as m,Text as o,Input as i}from"@tarojs/components";import c from"classnames";import{inputRange as s}from"../src/utils/index.js";var
|
|
1
|
+
import{__rest as e,__assign as a}from"../node_modules/tslib/tslib.es6.js";import t,{forwardRef as n,useRef as l,useImperativeHandle as r}from"react";import{View as m,Text as o,Input as i}from"@tarojs/components";import c from"classnames";import{inputRange as s}from"../src/utils/index.js";var p=n((function(n,p){var u=n.onChange,d=n.maxlength,f=n.value,h=n.type,v=n.placeholder,x=n.label,E=n.labelHtml,N=n.RightComponent,b=n.onBlur,g=n.pattern,y=n.LeftComponent,w=n.LeftIcon,L=n.name,C=n.readonly,I=void 0!==C&&C,_=n.withArrow,B=void 0!==_&&_,H=n.direction,j=void 0===H?"row":H,A=n.border,R=void 0===A||A,T=n.mainExtra,M=n.padding,S=void 0!==M&&M,O=n.className,V=n.disabled,k=void 0!==V&&V,q=n.align,z=void 0===q?"left":q,D=e(n,["onChange","maxlength","value","type","placeholder","label","labelHtml","RightComponent","onBlur","pattern","LeftComponent","LeftIcon","name","readonly","withArrow","direction","border","mainExtra","padding","className","disabled","align"]),F="password"===h;function G(e){var a=s(e.target.value);e.target.value=a,u&&u(a)}function J(e){var a=s(e.target.value);b&&b(a)}var K=l(null);r(p,(function(){return{focus:function(){var e;null===(e=K.current)||void 0===e||e.focus()}}}));var P=c("xh-form-input",{column:"column"===j,border:R,padding:S},O);return"h5"!==process.env.TARO_ENV?t.createElement(m,{className:P},t.createElement(m,{className:"xh-form-input-main"},t.createElement(m,{className:"xh-form-input-main-left"},x&&t.createElement(m,{className:"xh-form-input-main-left-label"},x,w&&t.createElement(m,{className:"xh-form-input-main-left-label-icon"},w)),E&&t.createElement("label",{dangerouslySetInnerHTML:{__html:E},className:"label"}),t.createElement(m,null,y)),t.createElement(m,{className:"xh-form-input-main-center"},I?t.createElement(o,{className:c("xh-form-input-main-center-readonly",{"xh-form-input-main-placeholder":!f},z)},f||v):t.createElement(i,a({},D,{password:F,ref:K,className:c("xh-form-input-main-center-native",z),maxlength:d,name:L,disabled:k,placeholder:v,type:h,value:f,onBlur:J,onInput:G}))),T&&t.createElement(m,{className:"xh-form-input-main-extra"},T)),t.createElement(m,{className:"xh-form-input-right"},N,B&&t.createElement(m,{className:"arrow"}))):t.createElement("div",{className:P},t.createElement("div",{className:"xh-form-input-main"},t.createElement("div",{className:"xh-form-input-main-left"},x&&t.createElement("label",{className:"xh-form-input-main-left-label"},x,w&&t.createElement("div",{className:"xh-form-input-main-left-label-icon"},w)),E&&t.createElement("label",{dangerouslySetInnerHTML:{__html:E},className:"label"}),t.createElement("div",null,y)),t.createElement("div",{className:"xh-form-input-main-center"},I?t.createElement("p",{className:c("xh-form-input-main-center-readonly",{"xh-form-input-main-placeholder":!f},z)},f||v):t.createElement("input",{ref:K,className:c("xh-form-input-main-center-native",z),maxLength:d,name:L,disabled:k,pattern:g,placeholder:v,type:h,value:f,onBlur:J,onInput:G})),T&&t.createElement("div",{className:"xh-form-input-main-extra"},T)),t.createElement("div",{className:"xh-form-input-right"},N,B&&t.createElement("span",{className:"arrow"})))}));export{p as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/FormInput/index.tsx"],"sourcesContent":["import React, {\n ReactNode,\n useRef,\n useImperativeHandle,\n forwardRef,\n} from \"react\";\nimport {\n Input,\n View,\n Text,\n InputProps,\n CommonEventFunction,\n} from \"@tarojs/components\";\nimport classNames from \"classnames\";\nimport { inputRange } from \"../../utils/index\";\n\nimport \"./index.scss\";\n\nexport type HTMLFormType =\n | \"tel\"\n | \"text\"\n | \"number\"\n | \"password\"\n | \"idcard\"\n | \"digit\"\n | \"safe-password\"\n | \"nickname\";\n\nexport type FormInputProps = {\n onChange?: (value: string) => void;\n onBlur?: (value: string) => void;\n /** 当键盘输入时,触发input事件,event.detail = {value, cursor, keyCode},处理函数可以直接 return 一个字符串,将替换输入框的内容。\n * @supported weapp, h5, rn\n */\n onInput?: CommonEventFunction<InputProps.inputEventDetail>;\n\n /** 输入框聚焦时触发,event.detail = { value, height },height 为键盘高度\n * @supported weapp, h5, rn\n */\n onFocus?: CommonEventFunction<InputProps.inputForceEventDetail>;\n\n /** 输入框失去焦点时触发\n *\n * event.detail = {value: value}\n * @supported weapp, h5, rn\n */\n value?: string;\n maxlength?: number;\n placeholder?: string;\n type?: HTMLFormType;\n pattern?: string;\n RightComponent?: ReactNode;\n label?: string;\n labelHtml?: string;\n LeftComponent?: ReactNode;\n LeftIcon?: ReactNode;\n name?: string;\n readonly?: boolean;\n withArrow?: boolean;\n direction?: \"row\" | \"column\";\n border?: boolean;\n mainExtra?: ReactNode;\n padding?: boolean;\n password?: boolean;\n focus?: boolean;\n /** 设置键盘右下角按钮的文字\n * @default done\n * @supported weapp, rn\n */\n confirmType?: \"send\" | \"search\" | \"next\" | \"go\" | \"done\";\n /** 用于透传 `WebComponents` 上的属性到内部 H5 标签上\n * @supported h5\n */\n nativeProps?: Record<string, unknown>;\n className?: string;\n};\n\nexport type FocusHandler = { focus: () => void };\n\nconst FormInput = forwardRef<FocusHandler, FormInputProps>((props, formRef) => {\n const {\n onChange,\n maxlength,\n value,\n type,\n placeholder,\n label,\n labelHtml,\n RightComponent,\n onBlur,\n pattern,\n LeftComponent,\n LeftIcon,\n name,\n readonly = false,\n withArrow = false,\n direction = \"row\",\n border = true,\n mainExtra,\n padding = false,\n className,\n ...rest\n } = props;\n\n function handleChange(e): any {\n let inputValue = inputRange(e.target.value);\n e.target.value = inputValue;\n onChange && onChange(inputValue);\n }\n\n function handleBlur(e): any {\n let inputValue = inputRange(e.target.value);\n onBlur && onBlur(inputValue);\n }\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n useImperativeHandle(formRef, () => ({\n focus() {\n inputRef.current?.focus();\n },\n }));\n\n const wrapperCls = classNames(\n \"xh-form-input\",\n {\n column: direction === \"column\",\n border,\n padding,\n },\n className\n );\n\n if (process.env.TARO_ENV !== \"h5\") {\n return (\n <View className={wrapperCls}>\n <View className=\"xh-form-input-main\">\n <View className=\"xh-form-input-main-left\">\n {label && (\n <View className=\"xh-form-input-main-left-label\">\n {label}\n {LeftIcon && (\n <View className=\"xh-form-input-main-left-label-icon\">\n {LeftIcon}\n </View>\n )}\n </View>\n )}\n {labelHtml && (\n <label\n dangerouslySetInnerHTML={{ __html: labelHtml }}\n className=\"label\"\n />\n )}\n <View>{LeftComponent}</View>\n </View>\n <View className=\"xh-form-input-main-center\">\n {readonly ? (\n <Text\n className={classNames(\"xh-form-input-readonly\", {\n \"xh-form-input-placeholder\": !value,\n })}\n >\n {value || placeholder}\n </Text>\n ) : (\n <Input\n {...rest}\n ref={inputRef}\n className=\"xh-form-input-main-center-native\"\n maxlength={maxlength}\n name={name}\n placeholder={placeholder}\n type={type as InputProps[\"type\"]}\n value={value}\n onBlur={handleBlur}\n onInput={handleChange}\n />\n )}\n </View>\n {mainExtra && (\n <View className=\"xh-form-input-main-extra\">{mainExtra}</View>\n )}\n </View>\n <View className=\"xh-form-input-right\">\n {RightComponent}\n {withArrow && <View className=\"arrow\" />}\n </View>\n </View>\n );\n }\n\n return (\n <div className={wrapperCls}>\n <div className=\"xh-form-input-main\">\n <div className=\"xh-form-input-main-left\">\n {label && (\n <label className=\"xh-form-input-main-left-label\">\n {label}\n {LeftIcon && (\n <div className=\"xh-form-input-main-left-label-icon\">\n {LeftIcon}\n </div>\n )}\n </label>\n )}\n {labelHtml && (\n <label\n dangerouslySetInnerHTML={{ __html: labelHtml }}\n className=\"label\"\n />\n )}\n <div>{LeftComponent}</div>\n </div>\n <div className=\"xh-form-input-main-center\">\n {readonly ? (\n <p\n className={classNames(\"xh-form-input-main-center-readonly\", {\n \"xh-form-input-main-placeholder\": !value,\n })}\n >\n {value || placeholder}\n </p>\n ) : (\n <input\n ref={inputRef}\n className=\"xh-form-input-main-center-native\"\n maxLength={maxlength}\n name={name}\n pattern={pattern}\n placeholder={placeholder}\n type={type}\n value={value}\n onBlur={handleBlur}\n onInput={handleChange}\n />\n )}\n </div>\n {mainExtra && (\n <div className=\"xh-form-input-main-extra\">{mainExtra}</div>\n )}\n </div>\n <div className=\"xh-form-input-right\">\n {RightComponent}\n {withArrow && <span className=\"arrow\" />}\n </div>\n </div>\n );\n});\nexport default FormInput;\n"],"names":["FormInput","forwardRef","props","formRef","onChange","maxlength","value","type","placeholder","label","labelHtml","RightComponent","onBlur","pattern","LeftComponent","LeftIcon","name","_a","readonly","_b","withArrow","_c","direction","_d","border","mainExtra","_e","padding","className","rest","__rest","handleChange","e","inputValue","inputRange","target","handleBlur","inputRef","useRef","useImperativeHandle","focus","current","wrapperCls","classNames","column","process","env","TARO_ENV","React","createElement","View","dangerouslySetInnerHTML","__html","Text","Input","ref","onInput","maxLength"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/FormInput/index.tsx"],"sourcesContent":["import React, {\n ReactNode,\n useRef,\n useImperativeHandle,\n forwardRef,\n} from \"react\";\nimport {\n Input,\n View,\n Text,\n InputProps,\n CommonEventFunction,\n} from \"@tarojs/components\";\nimport classNames from \"classnames\";\nimport { inputRange } from \"../../utils/index\";\n\nimport \"./index.scss\";\n\nexport type HTMLFormType =\n | \"tel\"\n | \"text\"\n | \"number\"\n | \"password\"\n | \"idcard\"\n | \"digit\"\n | \"safe-password\"\n | \"nickname\";\n\nexport type FormInputProps = {\n onChange?: (value: string) => void;\n onBlur?: (value: string) => void;\n /** 当键盘输入时,触发input事件,event.detail = {value, cursor, keyCode},处理函数可以直接 return 一个字符串,将替换输入框的内容。\n * @supported weapp, h5, rn\n */\n onInput?: CommonEventFunction<InputProps.inputEventDetail>;\n\n /** 输入框聚焦时触发,event.detail = { value, height },height 为键盘高度\n * @supported weapp, h5, rn\n */\n onFocus?: CommonEventFunction<InputProps.inputForceEventDetail>;\n\n /** 输入框失去焦点时触发\n *\n * event.detail = {value: value}\n * @supported weapp, h5, rn\n */\n value?: string;\n maxlength?: number;\n placeholder?: string;\n type?: HTMLFormType;\n pattern?: string;\n RightComponent?: ReactNode;\n label?: string;\n labelHtml?: string;\n LeftComponent?: ReactNode;\n LeftIcon?: ReactNode;\n name?: string;\n readonly?: boolean;\n withArrow?: boolean;\n direction?: \"row\" | \"column\";\n border?: boolean;\n mainExtra?: ReactNode;\n padding?: boolean;\n focus?: boolean;\n /** 设置键盘右下角按钮的文字\n * @default done\n * @supported weapp, rn\n */\n confirmType?: \"send\" | \"search\" | \"next\" | \"go\" | \"done\";\n /** 用于透传 `WebComponents` 上的属性到内部 H5 标签上\n * @supported h5\n */\n nativeProps?: Record<string, unknown>;\n className?: string;\n disabled?: boolean;\n align?: \"left\" | \"right\"; // 文本对齐方式\n};\n\nexport type FocusHandler = { focus: () => void };\n\nconst FormInput = forwardRef<FocusHandler, FormInputProps>((props, formRef) => {\n const {\n onChange,\n maxlength,\n value,\n type,\n placeholder,\n label,\n labelHtml,\n RightComponent,\n onBlur,\n pattern,\n LeftComponent,\n LeftIcon,\n name,\n readonly = false,\n withArrow = false,\n direction = \"row\",\n border = true,\n mainExtra,\n padding = false,\n className,\n disabled = false,\n align = \"left\",\n ...rest\n } = props;\n\n const password = type === \"password\";\n\n function handleChange(e): any {\n let inputValue = inputRange(e.target.value);\n e.target.value = inputValue;\n onChange && onChange(inputValue);\n }\n\n function handleBlur(e): any {\n let inputValue = inputRange(e.target.value);\n onBlur && onBlur(inputValue);\n }\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n useImperativeHandle(formRef, () => ({\n focus() {\n inputRef.current?.focus();\n },\n }));\n\n const wrapperCls = classNames(\n \"xh-form-input\",\n {\n column: direction === \"column\",\n border,\n padding,\n },\n className\n );\n\n if (process.env.TARO_ENV !== \"h5\") {\n return (\n <View className={wrapperCls}>\n <View className=\"xh-form-input-main\">\n <View className=\"xh-form-input-main-left\">\n {label && (\n <View className=\"xh-form-input-main-left-label\">\n {label}\n {LeftIcon && (\n <View className=\"xh-form-input-main-left-label-icon\">\n {LeftIcon}\n </View>\n )}\n </View>\n )}\n {labelHtml && (\n <label\n dangerouslySetInnerHTML={{ __html: labelHtml }}\n className=\"label\"\n />\n )}\n <View>{LeftComponent}</View>\n </View>\n <View className=\"xh-form-input-main-center\">\n {readonly ? (\n <Text\n className={classNames(\n \"xh-form-input-main-center-readonly\",\n {\n \"xh-form-input-main-placeholder\": !value,\n },\n align\n )}\n >\n {value || placeholder}\n </Text>\n ) : (\n <Input\n {...rest}\n password={password}\n ref={inputRef}\n className={classNames(\n \"xh-form-input-main-center-native\",\n align\n )}\n maxlength={maxlength}\n name={name}\n disabled={disabled}\n placeholder={placeholder}\n type={type as InputProps[\"type\"]}\n value={value}\n onBlur={handleBlur}\n onInput={handleChange}\n />\n )}\n </View>\n {mainExtra && (\n <View className=\"xh-form-input-main-extra\">{mainExtra}</View>\n )}\n </View>\n <View className=\"xh-form-input-right\">\n {RightComponent}\n {withArrow && <View className=\"arrow\" />}\n </View>\n </View>\n );\n }\n\n return (\n <div className={wrapperCls}>\n <div className=\"xh-form-input-main\">\n <div className=\"xh-form-input-main-left\">\n {label && (\n <label className=\"xh-form-input-main-left-label\">\n {label}\n {LeftIcon && (\n <div className=\"xh-form-input-main-left-label-icon\">\n {LeftIcon}\n </div>\n )}\n </label>\n )}\n {labelHtml && (\n <label\n dangerouslySetInnerHTML={{ __html: labelHtml }}\n className=\"label\"\n />\n )}\n <div>{LeftComponent}</div>\n </div>\n <div className=\"xh-form-input-main-center\">\n {readonly ? (\n <p\n className={classNames(\n \"xh-form-input-main-center-readonly\",\n {\n \"xh-form-input-main-placeholder\": !value,\n },\n align\n )}\n >\n {value || placeholder}\n </p>\n ) : (\n <input\n ref={inputRef}\n className={classNames(\"xh-form-input-main-center-native\", align)}\n maxLength={maxlength}\n name={name}\n disabled={disabled}\n pattern={pattern}\n placeholder={placeholder}\n type={type}\n value={value}\n onBlur={handleBlur}\n onInput={handleChange}\n />\n )}\n </div>\n {mainExtra && (\n <div className=\"xh-form-input-main-extra\">{mainExtra}</div>\n )}\n </div>\n <div className=\"xh-form-input-right\">\n {RightComponent}\n {withArrow && <span className=\"arrow\" />}\n </div>\n </div>\n );\n});\nexport default FormInput;\n"],"names":["FormInput","forwardRef","props","formRef","onChange","maxlength","value","type","placeholder","label","labelHtml","RightComponent","onBlur","pattern","LeftComponent","LeftIcon","name","_a","readonly","_b","withArrow","_c","direction","_d","border","mainExtra","_e","padding","className","_f","disabled","_g","align","rest","__rest","password","handleChange","e","inputValue","inputRange","target","handleBlur","inputRef","useRef","useImperativeHandle","focus","current","wrapperCls","classNames","column","process","env","TARO_ENV","React","createElement","View","dangerouslySetInnerHTML","__html","Text","Input","__assign","ref","onInput","maxLength"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__read as e,__spreadArray as t}from"../node_modules/tslib/tslib.es6.js";import n,{useState as o,useMemo as
|
|
1
|
+
import{__read as e,__spreadArray as t}from"../node_modules/tslib/tslib.es6.js";import n,{useState as o,useMemo as s,useEffect as a}from"react";import r from"classnames";import{View as c,Button as l}from"@tarojs/components";import{replaceCharByIndex as i}from"../src/utils/index.js";import m from"../node_modules/react-transition-group/esm/CSSTransition.js";var d=["京","津","冀","晋","蒙","辽","吉","黑","沪","苏","浙","皖","闽","赣","鲁","豫","鄂","湘","粤","桂","琼","渝","川","贵","云","藏","陕","甘","青","宁","新","港","澳","台","使"],u=["1","2","3","4","5","6","7","8","9","0"],p=["A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z"],b=["港","澳","学","领"],k=["临","澳","学","领"],y=function(y){var E=y.onBlur,f=y.show,h=y.showClose,N=void 0===h||h,v=y.closeOnClickSpace,x=void 0===v||v,C=y.onClose,T=y.onChange,g=y.value,O=y.closeText,_=void 0===O?"完成":O,A=y.onDelete,R=y.className,V=y.activeIndex,P=e(o(g),2),j=P[0],S=P[1],L=s((function(){return 0===V?d:6===V?t(t(t([],e(u),!1),e(p),!1),e(b),!1):7===V?t(t(t([],e(u),!1),e(p),!1),e(k),!1):t(t([],e(u),!1),e(p),!1)}),[V]),w=s((function(){return 0===V?"选择省份":1===V?"选择字母":"选择数字或字母"}),[V]),B=s((function(){return 0===V?"province":1===V?"letter":"mixed"}),[V]);function D(e){e.stopPropagation(),C&&C(e),E&&E(e)}function F(e){if(e!==g[V]){process.env.TARO_ENV;var t=j;t=V<j.length?i(j,V,e):j+e,S(t),T&&T(t)}}a((function(){return x&&document.addEventListener("click",D),function(){document.removeEventListener("click",D)}}),[]),a((function(){S(g)}),[g]);var G=function(){A()},H=r("xh-license-keyboard",R);return n.createElement(m,{classNames:"slide-up",in:f,unmountOnExit:!0,timeout:200},n.createElement(c,{className:H},n.createElement(c,{className:"xh-license-keyboard-header"},n.createElement(c,{className:"xh-license-keyboard-header-title"},w),n.createElement(c,{className:"xh-license-keyboard-header-delete"}),N&&n.createElement(c,{className:"xh-license-keyboard-header-close",onClick:D},_)),n.createElement(c,{className:"xh-license-keyboard-body"},L.map((function(e,t){return n.createElement(c,{key:t,className:r("xh-license-keyboard-body-key")},"h5"===process.env.TARO_ENV?n.createElement("button",{className:r("xh-license-keyboard-body-key-item",process.env.TARO_ENV),disabled:"letter"===B&&t<10,onClick:function(t){t.stopPropagation(),F(e)}},e):n.createElement(l,{className:r("xh-license-keyboard-body-key-item",process.env.TARO_ENV),disabled:"letter"===B&&t<10,onClick:function(n){n.stopPropagation(),"letter"===B&&t<10||F(e)}},e))})),n.createElement(c,{className:r("xh-license-keyboard-body-key","delete")},"h5"===process.env.TARO_ENV?n.createElement("button",{className:r("xh-license-keyboard-body-key-item",process.env.TARO_ENV,"delete"),disabled:0===V,onClick:function(e){e.stopPropagation(),G()}}):n.createElement(l,{className:r("xh-license-keyboard-body-key-item",process.env.TARO_ENV,"delete"),disabled:0===V,onClick:function(e){e.stopPropagation(),0!==g.length&&G()}})))))};export{y as default};
|
|
2
2
|
//# sourceMappingURL=Keyboard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Keyboard.js","sources":["../../../src/components/LicensePlateInput/Keyboard.tsx"],"sourcesContent":["import React, { FC, useState, useEffect, MouseEvent, useMemo } from \"react\";\nimport classNames from \"classnames\";\nimport { CSSTransition } from \"react-transition-group\";\nimport { Button, View } from \"@tarojs/components\";\n\nimport \"./index.scss\";\nimport { XHComponentCommonProps } from \"../../types\";\n\nexport type NumberKeyboardType = \"default\" | \"custom\";\n\nexport type NumberKeyboardProps = {\n show: boolean;\n showClose?: boolean;\n closeOnClickSpace?: boolean;\n maxLength?: number;\n onBlur?: (e: MouseEvent | Event) => void;\n onClose?: (e: MouseEvent | Event) => void;\n onChange?: (value: string) => void;\n onDelete: () => void;\n value: string;\n closeText?: string;\n activeIndex: number;\n} & XHComponentCommonProps;\n\nexport type KeyType = \"number\" | \"delete\" | \"string\" | \"none\";\n\nexport interface IKey {\n text: number | string;\n value: number | string;\n type: KeyType;\n activeIndex: number;\n}\n\nconst LICENSEPLATE_PROVINCES = [\n \"京\",\n \"津\",\n \"冀\",\n \"晋\",\n \"蒙\",\n \"辽\",\n \"吉\",\n \"黑\",\n \"沪\",\n \"苏\",\n \"浙\",\n \"皖\",\n \"闽\",\n \"赣\",\n \"鲁\",\n \"豫\",\n \"鄂\",\n \"湘\",\n \"粤\",\n \"桂\",\n \"琼\",\n \"渝\",\n \"川\",\n \"贵\",\n \"云\",\n \"藏\",\n \"陕\",\n \"甘\",\n \"青\",\n \"宁\",\n \"新\",\n \"港\",\n \"澳\",\n \"台\",\n \"使\",\n];\n\nconst LICENSEPLATE_NUMBERS = [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"0\"];\n\nconst LICENSEPLATE_LETTERS = [\n \"A\",\n \"B\",\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"G\",\n \"H\",\n \"J\",\n \"K\",\n \"L\",\n \"M\",\n \"N\",\n \"P\",\n \"Q\",\n \"R\",\n \"S\",\n \"T\",\n \"U\",\n \"V\",\n \"W\",\n \"X\",\n \"Y\",\n \"Z\",\n];\n\nconst specialArea = [\"港\", \"澳\", \"学\", \"领\"];\nconst finalArea = [\"临\", \"澳\", \"学\", \"领\"];\n\nexport type TYPE_MODE = \"province\" | \"letter\" | \"mixed\";\n\nconst LicensePlateKeyboard: FC<NumberKeyboardProps> = props => {\n const {\n onBlur,\n show,\n maxLength = Number.MAX_SAFE_INTEGER,\n showClose = true,\n closeOnClickSpace = true,\n onClose,\n onChange,\n value,\n closeText = \"完成\",\n onDelete,\n className,\n activeIndex,\n } = props;\n const [input, setInput] = useState(value);\n const keys = getKeys();\n\n const title = useMemo(() => {\n if (activeIndex === 0) return \"选择省份\";\n if (activeIndex === 1) return \"选择字母\";\n return \"选择数字或字母\";\n }, [activeIndex]);\n\n const mode = useMemo<TYPE_MODE>(() => {\n if (activeIndex === 0) return \"province\";\n if (activeIndex === 1) return \"letter\";\n return \"mixed\";\n }, [activeIndex]);\n\n useEffect(() => {\n if (closeOnClickSpace) {\n document.addEventListener(\"click\", handleClose);\n }\n\n return () => {\n document.removeEventListener(\"click\", handleClose);\n };\n }, []);\n\n useEffect(() => {\n setInput(value);\n }, [value]);\n\n function handleClose(e): void {\n e.stopPropagation();\n onClose && onClose(e);\n onBlur && onBlur(e);\n }\n\n function handleKeyPress(key: string): void {\n if (process.env.TARO_ENV === \"h5\") {\n // e.stopImmediatePropagation();\n }\n let newInput = input;\n\n if (newInput.length < maxLength) {\n newInput = input + key;\n }\n\n setInput(newInput);\n\n onChange && onChange(newInput);\n }\n\n function getKeys(): string[] {\n if (activeIndex === 0) return LICENSEPLATE_PROVINCES;\n if (activeIndex === 6)\n return [...LICENSEPLATE_NUMBERS, ...LICENSEPLATE_LETTERS, ...specialArea];\n if (activeIndex === 7)\n return [...LICENSEPLATE_NUMBERS, ...LICENSEPLATE_LETTERS, ...finalArea];\n return [...LICENSEPLATE_NUMBERS, ...LICENSEPLATE_LETTERS];\n }\n\n const handleDelete = () => {\n onDelete();\n };\n\n const keyDisabled = useMemo(() => {\n return value.length >= 8;\n }, [value]);\n const keyboardcls = classNames(\"xh-license-keyboard\", className);\n\n return (\n <CSSTransition classNames=\"slide-up\" in={show} unmountOnExit timeout={200}>\n <View className={keyboardcls}>\n <View className=\"xh-license-keyboard-header\">\n <View className=\"xh-license-keyboard-header-title\">{title}</View>\n <View className=\"xh-license-keyboard-header-delete\"></View>\n {showClose && (\n <View\n className=\"xh-license-keyboard-header-close\"\n onClick={handleClose}\n >\n {closeText}\n </View>\n )}\n </View>\n <View className=\"xh-license-keyboard-body\">\n {keys.map((key, index) => (\n <View\n key={index}\n className={classNames(\"xh-license-keyboard-body-key\")}\n >\n {process.env.TARO_ENV === \"h5\" ? (\n <button\n className={classNames(\n \"xh-license-keyboard-body-key-item\",\n process.env.TARO_ENV\n )}\n disabled={(mode === \"letter\" && index < 10) || keyDisabled}\n onClick={e => {\n e.stopPropagation();\n handleKeyPress(key);\n }}\n >\n {key}\n </button>\n ) : (\n <Button\n className={classNames(\n \"xh-license-keyboard-body-key-item\",\n process.env.TARO_ENV\n )}\n disabled={(mode === \"letter\" && index < 10) || keyDisabled}\n onClick={e => {\n e.stopPropagation();\n if ((mode === \"letter\" && index < 10) || keyDisabled)\n return;\n handleKeyPress(key);\n }}\n >\n {key}\n </Button>\n )}\n </View>\n ))}\n <View\n className={classNames(\"xh-license-keyboard-body-key\", \"delete\")}\n >\n {process.env.TARO_ENV === \"h5\" ? (\n <button\n className={classNames(\n \"xh-license-keyboard-body-key-item\",\n process.env.TARO_ENV,\n \"delete\"\n )}\n disabled={value.length === 0}\n onClick={e => {\n e.stopPropagation();\n handleDelete();\n }}\n ></button>\n ) : (\n <Button\n className={classNames(\n \"xh-license-keyboard-body-key-item\",\n process.env.TARO_ENV,\n \"delete\"\n )}\n disabled={value.length === 0}\n onClick={e => {\n e.stopPropagation();\n if (value.length === 0) return;\n console.log(\"delete\");\n handleDelete();\n }}\n ></Button>\n )}\n </View>\n </View>\n </View>\n </CSSTransition>\n );\n};\n\nexport default LicensePlateKeyboard;\n"],"names":["LICENSEPLATE_PROVINCES","LICENSEPLATE_NUMBERS","LICENSEPLATE_LETTERS","specialArea","finalArea","LicensePlateKeyboard","props","onBlur","show","_a","maxLength","Number","MAX_SAFE_INTEGER","_b","showClose","_c","closeOnClickSpace","onClose","onChange","value","_d","closeText","onDelete","className","activeIndex","_e","__read","useState","input","setInput","keys","__spreadArray","title","useMemo","mode","handleClose","e","stopPropagation","handleKeyPress","key","process","env","TARO_ENV","newInput","length","useEffect","document","addEventListener","removeEventListener","handleDelete","keyDisabled","keyboardcls","classNames","React","createElement","CSSTransition","in","unmountOnExit","timeout","View","onClick","map","index","disabled","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Keyboard.js","sources":["../../../src/components/LicensePlateInput/Keyboard.tsx"],"sourcesContent":["import React, { FC, useState, useEffect, MouseEvent, useMemo } from \"react\";\nimport classNames from \"classnames\";\nimport { CSSTransition } from \"react-transition-group\";\nimport { Button, View } from \"@tarojs/components\";\n\nimport \"./index.scss\";\nimport { XHComponentCommonProps } from \"../../types\";\nimport { replaceCharByIndex } from \"../../utils\";\n\nexport type NumberKeyboardType = \"default\" | \"custom\";\n\nexport type NumberKeyboardProps = {\n show: boolean;\n showClose?: boolean;\n closeOnClickSpace?: boolean;\n maxLength?: number;\n onBlur?: (e: MouseEvent | Event) => void;\n onClose?: (e: MouseEvent | Event) => void;\n onChange?: (value: string) => void;\n onDelete: () => void;\n value: string;\n closeText?: string;\n activeIndex: number;\n} & XHComponentCommonProps;\n\nexport type KeyType = \"number\" | \"delete\" | \"string\" | \"none\";\n\nexport interface IKey {\n text: number | string;\n value: number | string;\n type: KeyType;\n activeIndex: number;\n}\n\nconst LICENSEPLATE_PROVINCES = [\n \"京\",\n \"津\",\n \"冀\",\n \"晋\",\n \"蒙\",\n \"辽\",\n \"吉\",\n \"黑\",\n \"沪\",\n \"苏\",\n \"浙\",\n \"皖\",\n \"闽\",\n \"赣\",\n \"鲁\",\n \"豫\",\n \"鄂\",\n \"湘\",\n \"粤\",\n \"桂\",\n \"琼\",\n \"渝\",\n \"川\",\n \"贵\",\n \"云\",\n \"藏\",\n \"陕\",\n \"甘\",\n \"青\",\n \"宁\",\n \"新\",\n \"港\",\n \"澳\",\n \"台\",\n \"使\",\n];\n\nconst LICENSEPLATE_NUMBERS = [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"0\"];\n\nconst LICENSEPLATE_LETTERS = [\n \"A\",\n \"B\",\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"G\",\n \"H\",\n \"J\",\n \"K\",\n \"L\",\n \"M\",\n \"N\",\n \"P\",\n \"Q\",\n \"R\",\n \"S\",\n \"T\",\n \"U\",\n \"V\",\n \"W\",\n \"X\",\n \"Y\",\n \"Z\",\n];\n\nconst specialArea = [\"港\", \"澳\", \"学\", \"领\"];\nconst finalArea = [\"临\", \"澳\", \"学\", \"领\"];\n\nexport type TYPE_MODE = \"province\" | \"letter\" | \"mixed\";\n\nconst LicensePlateKeyboard: FC<NumberKeyboardProps> = props => {\n const {\n onBlur,\n show,\n showClose = true,\n closeOnClickSpace = true,\n onClose,\n onChange,\n value,\n closeText = \"完成\",\n onDelete,\n className,\n activeIndex,\n } = props;\n const [input, setInput] = useState(value);\n\n // 键盘的key\n const keys = useMemo(() => {\n if (activeIndex === 0) return LICENSEPLATE_PROVINCES;\n if (activeIndex === 6)\n return [...LICENSEPLATE_NUMBERS, ...LICENSEPLATE_LETTERS, ...specialArea];\n if (activeIndex === 7)\n return [...LICENSEPLATE_NUMBERS, ...LICENSEPLATE_LETTERS, ...finalArea];\n return [...LICENSEPLATE_NUMBERS, ...LICENSEPLATE_LETTERS];\n }, [activeIndex]);\n\n const title = useMemo(() => {\n if (activeIndex === 0) return \"选择省份\";\n if (activeIndex === 1) return \"选择字母\";\n return \"选择数字或字母\";\n }, [activeIndex]);\n\n const mode = useMemo<TYPE_MODE>(() => {\n if (activeIndex === 0) return \"province\";\n if (activeIndex === 1) return \"letter\";\n return \"mixed\";\n }, [activeIndex]);\n\n useEffect(() => {\n if (closeOnClickSpace) {\n document.addEventListener(\"click\", handleClose);\n }\n\n return () => {\n document.removeEventListener(\"click\", handleClose);\n };\n }, []);\n\n useEffect(() => {\n setInput(value);\n }, [value]);\n\n function handleClose(e): void {\n e.stopPropagation();\n onClose && onClose(e);\n onBlur && onBlur(e);\n }\n\n /**\n * 根据 activeIndex 拼凑新值,如果activeIndex小于当前的值的长度,就说明后面已经有值,这时候直接替换,否则拼接\n * @param key\n */\n function handleKeyPress(key: string): void {\n if (key === value[activeIndex]) return;\n if (process.env.TARO_ENV === \"h5\") {\n // e.stopImmediatePropagation();\n }\n let newInput = input;\n if (activeIndex < input.length) {\n newInput = replaceCharByIndex(input, activeIndex, key);\n } else {\n newInput = input + key;\n }\n\n setInput(newInput);\n\n onChange && onChange(newInput);\n }\n\n const handleDelete = () => {\n onDelete();\n };\n\n const keyboardcls = classNames(\"xh-license-keyboard\", className);\n\n return (\n <CSSTransition classNames=\"slide-up\" in={show} unmountOnExit timeout={200}>\n <View className={keyboardcls}>\n <View className=\"xh-license-keyboard-header\">\n <View className=\"xh-license-keyboard-header-title\">{title}</View>\n <View className=\"xh-license-keyboard-header-delete\"></View>\n {showClose && (\n <View\n className=\"xh-license-keyboard-header-close\"\n onClick={handleClose}\n >\n {closeText}\n </View>\n )}\n </View>\n <View className=\"xh-license-keyboard-body\">\n {keys.map((key, index) => (\n <View\n key={index}\n className={classNames(\"xh-license-keyboard-body-key\")}\n >\n {process.env.TARO_ENV === \"h5\" ? (\n <button\n className={classNames(\n \"xh-license-keyboard-body-key-item\",\n process.env.TARO_ENV\n )}\n disabled={mode === \"letter\" && index < 10}\n onClick={e => {\n e.stopPropagation();\n handleKeyPress(key);\n }}\n >\n {key}\n </button>\n ) : (\n <Button\n className={classNames(\n \"xh-license-keyboard-body-key-item\",\n process.env.TARO_ENV\n )}\n disabled={mode === \"letter\" && index < 10}\n onClick={e => {\n e.stopPropagation();\n if (mode === \"letter\" && index < 10) return;\n handleKeyPress(key);\n }}\n >\n {key}\n </Button>\n )}\n </View>\n ))}\n <View\n className={classNames(\"xh-license-keyboard-body-key\", \"delete\")}\n >\n {process.env.TARO_ENV === \"h5\" ? (\n <button\n className={classNames(\n \"xh-license-keyboard-body-key-item\",\n process.env.TARO_ENV,\n \"delete\"\n )}\n disabled={activeIndex === 0}\n onClick={e => {\n e.stopPropagation();\n handleDelete();\n }}\n ></button>\n ) : (\n <Button\n className={classNames(\n \"xh-license-keyboard-body-key-item\",\n process.env.TARO_ENV,\n \"delete\"\n )}\n disabled={activeIndex === 0}\n onClick={e => {\n e.stopPropagation();\n if (value.length === 0) return;\n console.log(\"delete\");\n handleDelete();\n }}\n ></Button>\n )}\n </View>\n </View>\n </View>\n </CSSTransition>\n );\n};\n\nexport default LicensePlateKeyboard;\n"],"names":["LICENSEPLATE_PROVINCES","LICENSEPLATE_NUMBERS","LICENSEPLATE_LETTERS","specialArea","finalArea","LicensePlateKeyboard","props","onBlur","show","_a","showClose","_b","closeOnClickSpace","onClose","onChange","value","_c","closeText","onDelete","className","activeIndex","_d","__read","useState","input","setInput","keys","useMemo","__spreadArray","title","mode","handleClose","e","stopPropagation","handleKeyPress","key","process","env","TARO_ENV","newInput","length","replaceCharByIndex","useEffect","document","addEventListener","removeEventListener","handleDelete","keyboardcls","classNames","React","createElement","CSSTransition","in","unmountOnExit","timeout","View","onClick","map","index","disabled","Button"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__rest as e,__read as
|
|
1
|
+
import{__rest as e,__read as n,__assign as o}from"../node_modules/tslib/tslib.es6.js";import t,{forwardRef as r,useState as a,useRef as l,useImperativeHandle as i,useEffect as s}from"react";import c from"classnames";import{View as u}from"@tarojs/components";import m from"./Keyboard.js";import{isLicenseNo as d,replaceCharByIndex as h}from"../src/utils/index.js";var f=r((function(r,f){var v=r.value,p=void 0===v?"":v,b=r.onChange,g=r.className,N=r.showKeyboard,x=void 0!==N&&N,w=r.padding,C=void 0!==w&&w,E=r.border,P=void 0!==E&&E;r.onFinish;var j=r.autoScroll,y=void 0===j||j,O=r.label,k=e(r,["value","onChange","className","showKeyboard","padding","border","onFinish","autoScroll","label"]),K=n(a(p.length),2),V=K[0],F=K[1],I=n(a(x),2),S=I[0],_=I[1],A=l(null);i(f,(function(){return{isValid:d(p)}}),[p]);s((function(){S&&A.current&&y&&"h5"===process.env.TARO_ENV&&A.current.scrollIntoView({behavior:"smooth"})}),[S,y]);var D=c("xh-licensePlate",g,{padding:C},{border:P});return t.createElement(u,{className:D},O&&t.createElement("label",{className:"xh-licensePlate-label"},O),t.createElement(u,{className:"xh-licensePlate-input",onClick:function(e){e.stopPropagation(),_(!0)},ref:A},function(){for(var e=[],n=function(n){var o=p[n];e.push(t.createElement(u,{key:n,className:c("xh-licensePlate-input-item",{active:V===n,showNew:7===n&&8!==p.length}),onClick:function(){var e;(e=n)>p.length-1||F(e)}},"O"===o?"":o))},o=0;o<8;o++)n(o);return e}()),t.createElement(m,o({activeIndex:V,show:S,value:p,onChange:function(e){F((function(n){return e.replace(/O/g,"").length>=8?n:n+1})),b(e)},onDelete:function(){var e=p[V+1],n=h(p,V,e?"O":"");0!==n.length&&F((function(e){return e-1})),b(n)},onClose:function(){_(!1)}},k)))}));export{f as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/LicensePlateInput/index.tsx"],"sourcesContent":["import React, {
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/LicensePlateInput/index.tsx"],"sourcesContent":["import React, {\n useImperativeHandle,\n forwardRef,\n ReactNode,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { ITouchEvent, View } from \"@tarojs/components\";\nimport { XHComponentCommonProps } from \"../../types\";\nimport Keyboard from \"./Keyboard\";\nimport { isLicenseNo, replaceCharByIndex } from \"../../utils\";\n\nimport \"./index.scss\";\n\nexport type LicensePlateProps = {\n value: string;\n onChange: (index: string) => void;\n /**\n * 是否默认展示键盘\n */\n showKeyboard?: boolean;\n closeText?: string;\n label?: ReactNode;\n onFinish?: () => void;\n padding?: boolean;\n border?: boolean;\n autoScroll?: boolean;\n} & XHComponentCommonProps;\n\nconst LENGTH = 8;\n\nexport type LicensePlateInputRef = {\n /**\n * 是否有效,组件会用大写字母(O) 来代替空位,如果要自己校验,那么就得判断有没有“O”来判断有没有空格\n */\n isValid: boolean;\n};\n\nconst LicensePlateInput = forwardRef<LicensePlateInputRef, LicensePlateProps>(\n (props, fromRef) => {\n const {\n value = \"\",\n onChange,\n className,\n showKeyboard = false,\n padding = false,\n border = false,\n onFinish,\n autoScroll = true,\n label,\n ...rest\n } = props;\n\n const [activeIndex, setActiveIndex] = useState(value.length);\n\n const [show, setShowKeyboard] = useState(showKeyboard);\n\n const InputRef = useRef<HTMLDivElement>(null);\n\n /**\n * 空位用“O”代替(大写字母 O)\n * @param neVal 新值\n */\n const handleOnChage = neVal => {\n setActiveIndex(old => {\n if (neVal.replace(/O/g, \"\").length >= LENGTH) return old;\n return old + 1;\n });\n // if (neVal.length === LENGTH) {\n // onFinish?.();\n // setShowKeyboard(false);\n // }\n onChange(neVal);\n };\n\n const handleKeyClick = (index: number) => {\n if (index > value.length - 1) return;\n setActiveIndex(index);\n };\n\n useImperativeHandle(\n fromRef,\n () => ({\n isValid: isLicenseNo(value),\n }),\n [value]\n );\n\n function renderInputs(): ReactNode {\n const Inputs: any = [];\n\n for (let i = 0; i < LENGTH; i++) {\n const char = value[i];\n\n Inputs.push(\n <View\n key={i}\n className={classNames(\"xh-licensePlate-input-item\", {\n active: activeIndex === i,\n showNew: i === LENGTH - 1 && value.length !== LENGTH,\n })}\n onClick={() => handleKeyClick(i)}\n >\n {char === \"O\" ? \"\" : char}\n </View>\n );\n }\n\n return Inputs;\n }\n\n /**\n * 删除其中一位\n * 如果删除那一位后面有值就用“O”代替删除的那一位,否则直接删除\n * 只要当前value有值就把 index-1\n */\n const handleDelete = () => {\n const nextChar = value[activeIndex + 1];\n const replaceChar = nextChar ? \"O\" : \"\";\n const newValue = replaceCharByIndex(value, activeIndex, replaceChar);\n\n if (newValue.length !== 0) setActiveIndex(old => old - 1);\n onChange(newValue);\n };\n\n const handleClose = () => {\n setShowKeyboard(false);\n };\n\n useEffect(() => {\n if (\n show &&\n InputRef.current &&\n autoScroll &&\n process.env.TARO_ENV === \"h5\"\n ) {\n InputRef.current.scrollIntoView({ behavior: \"smooth\" });\n }\n }, [show, autoScroll]);\n\n function handlerClick(e: ITouchEvent): void {\n e.stopPropagation();\n setShowKeyboard(true);\n }\n const xhLicensePlateCls = classNames(\n \"xh-licensePlate\",\n className,\n { padding },\n { border }\n );\n\n return (\n <View className={xhLicensePlateCls}>\n {label && <label className=\"xh-licensePlate-label\">{label}</label>}\n <View\n className=\"xh-licensePlate-input\"\n onClick={handlerClick}\n ref={InputRef}\n >\n {renderInputs()}\n </View>\n <Keyboard\n activeIndex={activeIndex}\n show={show}\n value={value}\n onChange={handleOnChage}\n onDelete={handleDelete}\n onClose={handleClose}\n {...rest}\n />\n </View>\n );\n }\n);\n\nexport default LicensePlateInput;\n"],"names":["LicensePlateInput","forwardRef","props","fromRef","_a","value","onChange","className","_b","showKeyboard","_c","padding","_d","border","onFinish","_e","autoScroll","label","rest","__rest","_f","__read","useState","length","activeIndex","setActiveIndex","_g","show","setShowKeyboard","InputRef","useRef","useImperativeHandle","isValid","isLicenseNo","useEffect","current","process","env","TARO_ENV","scrollIntoView","behavior","xhLicensePlateCls","classNames","React","createElement","View","onClick","e","stopPropagation","ref","Inputs","i","char","push","key","active","showNew","LENGTH","index","renderInputs","Keyboard","__assign","neVal","old","replace","onDelete","nextChar","newValue","replaceCharByIndex","onClose"],"mappings":"2WA+BA,IASMA,EAAoBC,GACxB,SAACC,EAAOC,GAEJ,IAAAC,EAUEF,EAVQG,MAAVA,OAAQ,IAAAD,EAAA,GAAEA,EACVE,EASEJ,EAAKI,SARPC,EAQEL,EAAKK,UAPPC,EAOEN,EAAKO,aAPPA,OAAY,IAAAD,GAAQA,EACpBE,EAMER,EANaS,QAAfA,OAAU,IAAAD,GAAKA,EACfE,EAKEV,EALYW,OAAdA,OAAS,IAAAD,GAAKA,EAKZV,EAJMY,SAAA,IACRC,EAGEb,EAAKc,WAHPA,OAAa,IAAAD,GAAIA,EACjBE,EAEEf,EAFGe,MACFC,EACDC,EAAAjB,EAXE,CAAA,QAAA,WAAA,YAAA,eAAA,UAAA,SAAA,WAAA,aAAA,UAaAkB,EAAAC,EAAgCC,EAASjB,EAAMkB,QAAO,GAArDC,EAAWJ,EAAA,GAAEK,OAEdC,EAAAL,EAA0BC,EAASb,GAAa,GAA/CkB,EAAID,EAAA,GAAEE,OAEPC,EAAWC,EAAuB,MAuBxCC,EACE5B,GACA,WAAM,MAAC,CACL6B,QAASC,EAAY5B,GACrB,GACF,CAACA,IA4CH6B,GAAU,WAENP,GACAE,EAASM,SACTnB,GACyB,OAAzBoB,QAAQC,IAAIC,UAEZT,EAASM,QAAQI,eAAe,CAAEC,SAAU,UAEhD,GAAG,CAACb,EAAMX,IAMV,IAAMyB,EAAoBC,EACxB,kBACAnC,EACA,CAAEI,QAAOA,GACT,CAAEE,OAAMA,IAGV,OACE8B,EAACC,cAAAC,EAAK,CAAAtC,UAAWkC,GACdxB,GAAS0B,EAAOC,cAAA,QAAA,CAAArC,UAAU,yBAAyBU,GACpD0B,EAAAC,cAACC,EACC,CAAAtC,UAAU,wBACVuC,QAhBN,SAAsBC,GACpBA,EAAEC,kBACFpB,GAAgB,EACjB,EAcKqB,IAAKpB,GArEX,WAGE,IAFA,IAAMqB,EAAc,cAEXC,GACP,IAAMC,EAAO/C,EAAM8C,GAEnBD,EAAOG,KACLV,EAAAC,cAACC,EACC,CAAAS,IAAKH,EACL5C,UAAWmC,EAAW,6BAA8B,CAClDa,OAAQ/B,IAAgB2B,EACxBK,QAAeC,IAANN,GAtER,IAsE4B9C,EAAMkB,SAErCuB,QAAS,WA1BM,IAACY,KA0BcP,GAzBxB9C,EAAMkB,OAAS,GAC3BE,EAAeiC,KA0BC,MAATN,EAAe,GAAKA,KAZlBD,EAAI,EAAGA,EA9DP,EA8DmBA,MAAnBA,GAiBT,OAAOD,CACR,CAkDMS,IAEHhB,EAAAC,cAACgB,EAAQC,EAAA,CACPrC,YAAaA,EACbG,KAAMA,EACNtB,MAAOA,EACPC,SAtGgB,SAAAwD,GACpBrC,GAAe,SAAAsC,GACb,OAAID,EAAME,QAAQ,KAAM,IAAIzC,QApCrB,EAoC8CwC,EAC9CA,EAAM,CACf,IAKAzD,EAASwD,EACX,EA6FMG,SAlDe,WACnB,IAAMC,EAAW7D,EAAMmB,EAAc,GAE/B2C,EAAWC,EAAmB/D,EAAOmB,EADvB0C,EAAW,IAAM,IAGb,IAApBC,EAAS5C,QAAcE,GAAe,SAAAsC,GAAO,OAAAA,EAAM,CAAC,IACxDzD,EAAS6D,EACX,EA4CME,QA1Cc,WAClBzC,GAAgB,EAClB,GAyCUV,IAIZ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__values as r}from"../../node_modules/tslib/tslib.es6.js";import t from"react";var e,n=function(r){return r.replace(/[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/gi,"")};function u(r,t){if(void 0===t&&(t=750),!r)return"";return"h5"===process.env.TARO_ENV?Math.ceil(parseInt("".concat(r),10)/40*640/t*1e4)/1e4+"rem":"".concat(r/{640:1.17,750:1,828:.905}[t],"rpx")}var a=function(){if(void 0!==e)return e;var r=document.createElement("div");return r.style.display="flex",r.style.flexDirection="column",r.style.rowGap="1px",r.appendChild(document.createElement("div")),r.appendChild(document.createElement("div")),document.body.appendChild(r),e=1===r.scrollHeight,document.body.removeChild(r),e};function c(r,e){void 0===e&&(e={});var n=[];return t.Children.forEach(r,(function(r){var t;(null!=r||e.keepEmpty)&&(Array.isArray(r)?n=n.concat(c(r)):(t=r).$$typeof===Symbol.for("react.element")&&t.type===Symbol.for("react.fragment")&&r.props?n=n.concat(c(r.props.children,e)):n.push(r))})),n}var o=function(r){if(!r)return!1;for(var t=!0,e=0,n=r.length;n>0;n--){var u=+r.substring(n,n-1);(t=!t)&&(u*=2);var a=u%10;e+=a+(u-a)/10}return e%10==0};function i(r,t){var e=r.replace(/[^\d]/g,"").replace(/(\d{4})(?=\d)/g,"$1 ");return t?e.replace(/\s(\d{4})(?!\d)/g," ****"):e}function s(r){if(!r)return!1;switch(r.length){case 15:if((parseInt(r.substr(6,2))+1900)%4==0||(parseInt(r.substr(6,2))+1900)%100==0&&(parseInt(r.substr(6,2))+1900)%4==0){return!!/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/.test(r)}return!!/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/.test(r);case 18:if(/^[1-9][0-7]\d{4}((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229))\d{3}(\d|X|x)?$/.test(r)){var t=7*(parseInt(r.charAt(0))+parseInt(r.charAt(10)))+9*(parseInt(r.charAt(1))+parseInt(r.charAt(11)))+10*(parseInt(r.charAt(2))+parseInt(r.charAt(12)))+5*(parseInt(r.charAt(3))+parseInt(r.charAt(13)))+8*(parseInt(r.charAt(4))+parseInt(r.charAt(14)))+4*(parseInt(r.charAt(5))+parseInt(r.charAt(15)))+2*(parseInt(r.charAt(6))+parseInt(r.charAt(16)))+1*parseInt(r.charAt(7))+6*parseInt(r.charAt(8))+3*parseInt(r.charAt(9));return"10X98765432".substr(t%11,1)===r.charAt(17).toUpperCase()}break;default:return!1}return!1}function p(r){setTimeout((function(){return setTimeout((function(){return setTimeout((function(){return r()}))}))}))}function f(r){return"string"==typeof r}function l(r){return"function"==typeof r}function h(t,e){var n,u;if(t===e)return!0;if("object"==typeof t&&null!==t&&"object"==typeof e&&null!==e){var a=Object.keys(t),c=Object.keys(e);if(a.length!==c.length)return!1;try{for(var o=r(a),i=o.next();!i.done;i=o.next()){var s=i.value;if(!h(t[s],e[s]))return!1}}catch(r){n={error:r}}finally{try{i&&!i.done&&(u=o.return)&&u.call(o)}finally{if(n)throw n.error}}return!0}return!1}function d(r,t){var e={};return t.forEach((function(t){e[t]=r[t]})),e}var v={};function
|
|
1
|
+
import{__values as r}from"../../node_modules/tslib/tslib.es6.js";import t from"react";var e,n=function(r){return r.replace(/[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/gi,"")};function u(r,t){if(void 0===t&&(t=750),!r)return"";return"h5"===process.env.TARO_ENV?Math.ceil(parseInt("".concat(r),10)/40*640/t*1e4)/1e4+"rem":"".concat(r/{640:1.17,750:1,828:.905}[t],"rpx")}var a=function(){if(void 0!==e)return e;var r=document.createElement("div");return r.style.display="flex",r.style.flexDirection="column",r.style.rowGap="1px",r.appendChild(document.createElement("div")),r.appendChild(document.createElement("div")),document.body.appendChild(r),e=1===r.scrollHeight,document.body.removeChild(r),e};function c(r,e){void 0===e&&(e={});var n=[];return t.Children.forEach(r,(function(r){var t;(null!=r||e.keepEmpty)&&(Array.isArray(r)?n=n.concat(c(r)):(t=r).$$typeof===Symbol.for("react.element")&&t.type===Symbol.for("react.fragment")&&r.props?n=n.concat(c(r.props.children,e)):n.push(r))})),n}var o=function(r){if(!r)return!1;for(var t=!0,e=0,n=r.length;n>0;n--){var u=+r.substring(n,n-1);(t=!t)&&(u*=2);var a=u%10;e+=a+(u-a)/10}return e%10==0};function i(r,t){var e=r.replace(/[^\d]/g,"").replace(/(\d{4})(?=\d)/g,"$1 ");return t?e.replace(/\s(\d{4})(?!\d)/g," ****"):e}function s(r){if(!r)return!1;switch(r.length){case 15:if((parseInt(r.substr(6,2))+1900)%4==0||(parseInt(r.substr(6,2))+1900)%100==0&&(parseInt(r.substr(6,2))+1900)%4==0){return!!/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/.test(r)}return!!/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/.test(r);case 18:if(/^[1-9][0-7]\d{4}((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229))\d{3}(\d|X|x)?$/.test(r)){var t=7*(parseInt(r.charAt(0))+parseInt(r.charAt(10)))+9*(parseInt(r.charAt(1))+parseInt(r.charAt(11)))+10*(parseInt(r.charAt(2))+parseInt(r.charAt(12)))+5*(parseInt(r.charAt(3))+parseInt(r.charAt(13)))+8*(parseInt(r.charAt(4))+parseInt(r.charAt(14)))+4*(parseInt(r.charAt(5))+parseInt(r.charAt(15)))+2*(parseInt(r.charAt(6))+parseInt(r.charAt(16)))+1*parseInt(r.charAt(7))+6*parseInt(r.charAt(8))+3*parseInt(r.charAt(9));return"10X98765432".substr(t%11,1)===r.charAt(17).toUpperCase()}break;default:return!1}return!1}function p(r){setTimeout((function(){return setTimeout((function(){return setTimeout((function(){return r()}))}))}))}function f(r){return"string"==typeof r}function l(r){return"function"==typeof r}function h(t,e){var n,u;if(t===e)return!0;if("object"==typeof t&&null!==t&&"object"==typeof e&&null!==e){var a=Object.keys(t),c=Object.keys(e);if(a.length!==c.length)return!1;try{for(var o=r(a),i=o.next();!i.done;i=o.next()){var s=i.value;if(!h(t[s],e[s]))return!1}}catch(r){n={error:r}}finally{try{i&&!i.done&&(u=o.return)&&u.call(o)}finally{if(n)throw n.error}}return!0}return!1}function d(r,t){var e={};return t.forEach((function(t){e[t]=r[t]})),e}var v={};function A(r){void 0===r&&(r="$unique$"),v[r]||(v[r]=0);var t=++v[r];return"$unique$"===r?"".concat(t):"".concat(r).concat(t)}function m(r,t){for(var e=r.split("."),n=t.split("."),u=Math.max(e.length,n.length);e.length<u;)e.push("0");for(;n.length<u;)n.push("0");for(var a=0;a<u;a++){var c=parseInt(e[a]),o=parseInt(n[a]);if(c>o)return 1;if(c<o)return-1}return 0}var y=function(r,t,e){return r.substring(0,t)+e+r.substring(t+1)},I=function(r){return 7===r.length?/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/.test(r):8===r.length&&/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/.test(r)};export{o as checkBankCard,m as compareVersion,i as creditCard,a as detectFlexGapSupported,n as inputRange,h as isEqual,l as isFunction,I as isLicenseNo,f as isString,d as pick,u as pxTransform,y as replaceCharByIndex,c as toArray,p as tripleDefer,A as uniqueId,s as verifyIdcard};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/utils/index.ts"],"sourcesContent":["/**\n * 禁止输入emoji表情\n * @param {string} val - 输入内容\n * @returns {boolean} - 校验结果 返回 true || false\n */\nimport React from \"react\";\n\nexport const inputRange = (val: string): string => {\n let iconRule1 =\n /[\\uD83C|\\uD83D|\\uD83E][\\uDC00-\\uDFFF][\\u200D|\\uFE0F]|[\\uD83C|\\uD83D|\\uD83E][\\uDC00-\\uDFFF]|[0-9|*|#]\\uFE0F\\u20E3|[0-9|#]\\u20E3|[\\u203C-\\u3299]\\uFE0F\\u200D|[\\u203C-\\u3299]\\uFE0F|[\\u2122-\\u2B55]|\\u303D|[\\A9|\\AE]\\u3030|\\uA9|\\uAE|\\u3030/gi;\n return val.replace(iconRule1, \"\");\n};\n\n// function Handler(fn) {\n// this.handler = fn;\n// this.next = null;\n// }\n\n// Handler.prototype.setNext = function setNext(h) {\n// this.next = h;\n// return h;\n// };\n\n// Handler.prototype.passRequest = function () {\n// const ret = this.handler.apply(this, arguments);\n// // 提前结束\n// if (!ret) {\n// return ret;\n// }\n\n// // 向后传递\n// if (this.next) {\n// return this.next.passRequest.apply(this.next, arguments);\n// }\n// return ret;\n// };\n\n// export class ChainHander {\n// public hander: (s: string) => boolean\n// public next\n// constructor(fn: (str: string) => boolean) {\n// this.hander = fn\n// }\n// public setNext(callback): () => boolean {\n// this.next = callback\n// return callback\n// }\n// public checkPass(...arg) {\n// const result = this.hander.apply(this, arg)\n// if (!result) {\n// return result\n// }\n\n// if (this.next != null) {\n// return this.next.checkPass.apply(this.next, arg)\n// }\n\n// return result\n// }\n// }\n\nexport const throtte = (fn: Function, delay: number = 1500) => {\n let timer: NodeJS.Timer;\n let canCall = true;\n return function (arg) {\n if (canCall) {\n canCall = false;\n fn(arg);\n }\n timer = setTimeout(() => {\n canCall = true;\n clearTimeout(timer);\n }, delay);\n };\n};\n\nexport const debounce = (fn: (...arg: any) => any, delay: number = 1500) => {\n let timer: NodeJS.Timeout | null = null;\n return function () {\n const context = this;\n const arg = arguments;\n if (timer) clearTimeout(timer);\n timer = setTimeout(() => {\n fn.apply(context, arg);\n }, delay);\n };\n};\n\nexport function pxTransform(size: number, designWidth = 750): string {\n if (!size) return \"\";\n const deviceRatio = {\n 640: 2.34 / 2,\n 750: 1,\n 828: 1.81 / 2,\n };\n if (process.env.TARO_ENV === \"h5\")\n return (\n Math.ceil(\n (((parseInt(`${size}`, 10) / 40) * 640) / designWidth) * 10000\n ) /\n 10000 +\n \"rem\"\n );\n return `${size / deviceRatio[designWidth]}rpx`;\n}\n\nlet flexGapSupported: boolean | undefined;\nexport const detectFlexGapSupported = () => {\n if (flexGapSupported !== undefined) {\n return flexGapSupported;\n }\n\n const flex = document.createElement(\"div\");\n flex.style.display = \"flex\";\n flex.style.flexDirection = \"column\";\n flex.style.rowGap = \"1px\";\n\n flex.appendChild(document.createElement(\"div\"));\n flex.appendChild(document.createElement(\"div\"));\n\n document.body.appendChild(flex);\n flexGapSupported = flex.scrollHeight === 1;\n document.body.removeChild(flex);\n\n return flexGapSupported;\n};\n\nexport interface Option {\n keepEmpty?: boolean;\n}\n\nexport function toArray(\n children: React.ReactNode,\n option: Option = {}\n): React.ReactElement[] {\n let ret: React.ReactElement[] = [];\n\n React.Children.forEach(children, (child: any | any[]) => {\n if ((child === undefined || child === null) && !option.keepEmpty) {\n return;\n }\n\n if (Array.isArray(child)) {\n ret = ret.concat(toArray(child));\n } else if (isFragment(child) && child.props) {\n ret = ret.concat(toArray(child.props.children, option));\n } else {\n ret.push(child);\n }\n });\n\n return ret;\n}\n\nfunction isFragment(object) {\n return (\n object.$$typeof === Symbol.for(\"react.element\") &&\n object.type === Symbol.for(\"react.fragment\")\n );\n}\n\n// 获取 校验银行卡\nexport const checkBankCard = (cardNo: string) => {\n if (!cardNo) return false;\n let tmp = true;\n let total = 0;\n for (let i = cardNo.length; i > 0; i--) {\n let num = +cardNo.substring(i, i - 1);\n if (((tmp = !tmp), tmp)) num = num * 2;\n const gw = num % 10;\n total += gw + (num - gw) / 10;\n }\n return total % 10 === 0;\n};\n\n/**\n * 格式化银行卡号\n *\n * @export\n * @param {string} cardNum 6217002712347888987\n * @param {boolean} mask 是否掩码\n * @returns {string} 6217 0027 1234 7888 987\n */\nexport function creditCard(cardNum: string, mask?: boolean): string {\n const newCardNum = cardNum\n .replace(/[^\\d]/g, \"\")\n .replace(/(\\d{4})(?=\\d)/g, \"$1 \");\n\n return mask ? newCardNum.replace(/\\s(\\d{4})(?!\\d)/g, \" ****\") : newCardNum;\n}\n\n/**\n * 校验身份证号是否符合规范\n *\n * @export\n * @param {string} idcard\n * @returns {boolean} true 符合 | false 不符合\n */\nexport function verifyIdcard(idcard: string): boolean {\n if (!idcard) return false;\n let regex1 =\n /^[1-9][0-7]\\d{4}((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229))\\d{3}(\\d|X|x)?$/;\n /* 身份号码位数及格式检验 */\n switch (idcard.length) {\n case 15:\n if (\n (parseInt(idcard.substr(6, 2)) + 1900) % 4 === 0 ||\n ((parseInt(idcard.substr(6, 2)) + 1900) % 100 === 0 &&\n (parseInt(idcard.substr(6, 2)) + 1900) % 4 === 0)\n ) {\n let regex2 =\n /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/; // 测试出生日期的合法性\n if (regex2.test(idcard)) {\n return true;\n }\n return false;\n }\n // eslint-disable-next-line\n let regex2 =\n /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/; // 测试出生日期的合法性\n if (regex2.test(idcard)) {\n return true;\n }\n return false;\n\n case 18:\n if (regex1.test(idcard)) {\n let S =\n (parseInt(idcard.charAt(0)) + parseInt(idcard.charAt(10))) * 7 +\n (parseInt(idcard.charAt(1)) + parseInt(idcard.charAt(11))) * 9 +\n (parseInt(idcard.charAt(2)) + parseInt(idcard.charAt(12))) * 10 +\n (parseInt(idcard.charAt(3)) + parseInt(idcard.charAt(13))) * 5 +\n (parseInt(idcard.charAt(4)) + parseInt(idcard.charAt(14))) * 8 +\n (parseInt(idcard.charAt(5)) + parseInt(idcard.charAt(15))) * 4 +\n (parseInt(idcard.charAt(6)) + parseInt(idcard.charAt(16))) * 2 +\n parseInt(idcard.charAt(7)) * 1 +\n parseInt(idcard.charAt(8)) * 6 +\n parseInt(idcard.charAt(9)) * 3;\n let Y = S % 11;\n let M = \"F\";\n let JYM = \"10X98765432\";\n M = JYM.substr(Y, 1);\n /* 判断校验位 */\n if (M === idcard.charAt(17).toUpperCase()) {\n return true;\n }\n return false;\n }\n break;\n default:\n return false;\n }\n\n return false;\n}\n\nexport function tripleDefer(func: () => void): void {\n setTimeout(() => setTimeout(() => setTimeout(() => func())));\n}\n\nexport function isString(v) {\n return typeof v === \"string\";\n}\n\nexport function isFunction(v) {\n return typeof v === \"function\";\n}\n\nexport function isEqual(x, y) {\n if (x === y) {\n return true;\n } else if (\n typeof x === \"object\" &&\n x !== null &&\n typeof y === \"object\" &&\n y !== null\n ) {\n const keysX = Object.keys(x);\n const keysY = Object.keys(y);\n if (keysX.length !== keysY.length) {\n return false;\n }\n for (const key of keysX) {\n if (!isEqual(x[key], y[key])) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n\nexport function pick(obj: any, keys) {\n const r = {};\n keys.forEach(key => {\n r[key] = obj[key];\n });\n return r;\n}\n\nconst idCounter = {};\nexport function uniqueId(prefix = \"$unique$\") {\n if (!idCounter[prefix]) {\n idCounter[prefix] = 0;\n }\n\n const id = ++idCounter[prefix];\n if (prefix === \"$unique$\") {\n return `${id}`;\n }\n\n return `${prefix}${id}`;\n}\n\n/**\n * 版本号比较进阶版\n * @param {string} ver1 5.19.1 前一个版本\n * @param {string} ver2 5.18.3 后一个版本\n * @returns {number} 1: 前一个版本 大于 后一个版本\n * -1: 前一个版本 小于 后一个版本\n * 0: 前一个版本 等于 后一个版本\n */\nexport function compareVersion(ver1: string, ver2: string): number {\n let v1 = ver1.split(\".\");\n let v2 = ver2.split(\".\");\n const len = Math.max(v1.length, v2.length);\n\n // 调整两个版本号位数相同\n while (v1.length < len) {\n v1.push(\"0\");\n }\n while (v2.length < len) {\n v2.push(\"0\");\n }\n\n // 循环判断每位数的大小\n for (let i = 0; i < len; i++) {\n const num1 = parseInt(v1[i]);\n const num2 = parseInt(v2[i]);\n\n if (num1 > num2) {\n //前一个版本 大于 后一个版本\n return 1;\n } else if (num1 < num2) {\n //前一个版本 小于 后一个版本\n return -1;\n }\n }\n\n return 0;\n}\n"],"names":["flexGapSupported","inputRange","val","replace","pxTransform","size","designWidth","process","env","TARO_ENV","Math","ceil","parseInt","concat","detectFlexGapSupported","undefined","flex","document","createElement","style","display","flexDirection","rowGap","appendChild","body","scrollHeight","removeChild","toArray","children","option","ret","React","Children","forEach","child","object","keepEmpty","Array","isArray","$$typeof","Symbol","for","type","props","push","checkBankCard","cardNo","tmp","total","i","length","num","substring","gw","creditCard","cardNum","mask","newCardNum","verifyIdcard","idcard","substr","test","S","charAt","toUpperCase","tripleDefer","func","setTimeout","isString","v","isFunction","isEqual","x","y","keysX","Object","keys","keysY","keysX_1","__values","keysX_1_1","done","next","key","value","pick","obj","r","idCounter","uniqueId","prefix","id","compareVersion","ver1","ver2","v1","split","v2","len","max","num1","num2"],"mappings":"sFAOO,IAmGHA,EAnGSC,EAAa,SAACC,GAGzB,OAAOA,EAAIC,QADT,6OAC4B,GAChC,EA6EgB,SAAAC,EAAYC,EAAcC,GACxC,QADwC,IAAAA,IAAAA,EAAiB,MACpDD,EAAM,MAAO,GAMlB,MAA6B,OAAzBE,QAAQC,IAAIC,SAEZC,KAAKC,KACAC,SAAS,GAAAC,OAAGR,GAAQ,IAAM,GAAM,IAAOC,EAAe,KAEzD,IACF,MAEG,GAAAO,OAAGR,EAbU,CAClB,IAAK,KACL,IAAK,EACL,IAAK,MAUsBC,SAC/B,CAGa,IAAAQ,EAAyB,WACpC,QAAyBC,IAArBf,EACF,OAAOA,EAGT,IAAMgB,EAAOC,SAASC,cAAc,OAYpC,OAXAF,EAAKG,MAAMC,QAAU,OACrBJ,EAAKG,MAAME,cAAgB,SAC3BL,EAAKG,MAAMG,OAAS,MAEpBN,EAAKO,YAAYN,SAASC,cAAc,QACxCF,EAAKO,YAAYN,SAASC,cAAc,QAExCD,SAASO,KAAKD,YAAYP,GAC1BhB,EAAyC,IAAtBgB,EAAKS,aACxBR,SAASO,KAAKE,YAAYV,GAEnBhB,CACT,EAMgB,SAAA2B,EACdC,EACAC,QAAA,IAAAA,IAAAA,EAAmB,CAAA,GAEnB,IAAIC,EAA4B,GAgBhC,OAdAC,EAAMC,SAASC,QAAQL,GAAU,SAACM,GAiBpC,IAAoBC,GAhBZ,MAACD,GAA2CL,EAAOO,aAInDC,MAAMC,QAAQJ,GAChBJ,EAAMA,EAAIjB,OAAOc,EAAQO,KAWXC,EAVMD,GAYfK,WAAaC,OAAOC,IAAI,kBAC/BN,EAAOO,OAASF,OAAOC,IAAI,mBAbKP,EAAMS,MACpCb,EAAMA,EAAIjB,OAAOc,EAAQO,EAAMS,MAAMf,SAAUC,IAE/CC,EAAIc,KAAKV,GAEb,IAEOJ,CACT,CAUO,IAAMe,EAAgB,SAACC,GAC5B,IAAKA,EAAQ,OAAO,EAGpB,IAFA,IAAIC,GAAM,EACNC,EAAQ,EACHC,EAAIH,EAAOI,OAAQD,EAAI,EAAGA,IAAK,CACtC,IAAIE,GAAOL,EAAOM,UAAUH,EAAGA,EAAI,IAC7BF,GAAOA,KAAYI,GAAY,GACrC,IAAME,EAAKF,EAAM,GACjBH,GAASK,GAAMF,EAAME,GAAM,EAC5B,CACD,OAAOL,EAAQ,IAAO,CACxB,EAUgB,SAAAM,EAAWC,EAAiBC,GAC1C,IAAMC,EAAaF,EAChBpD,QAAQ,SAAU,IAClBA,QAAQ,iBAAkB,OAE7B,OAAOqD,EAAOC,EAAWtD,QAAQ,mBAAoB,SAAWsD,CAClE,CASM,SAAUC,EAAaC,GAC3B,IAAKA,EAAQ,OAAO,EAIpB,OAAQA,EAAOT,QACb,KAAK,GACH,IACGtC,SAAS+C,EAAOC,OAAO,EAAG,IAAM,MAAQ,GAAM,IAC7ChD,SAAS+C,EAAOC,OAAO,EAAG,IAAM,MAAQ,KAAQ,IAC/ChD,SAAS+C,EAAOC,OAAO,EAAG,IAAM,MAAQ,GAAM,EACjD,CAGA,QADE,8IACSC,KAAKF,EAIjB,CAID,QADE,iJACSE,KAAKF,GAKlB,KAAK,GACH,GAzBF,gTAyBaE,KAAKF,GAAS,CACvB,IAAIG,EAC2D,GAA5DlD,SAAS+C,EAAOI,OAAO,IAAMnD,SAAS+C,EAAOI,OAAO,MACQ,GAA5DnD,SAAS+C,EAAOI,OAAO,IAAMnD,SAAS+C,EAAOI,OAAO,MACQ,IAA5DnD,SAAS+C,EAAOI,OAAO,IAAMnD,SAAS+C,EAAOI,OAAO,MACQ,GAA5DnD,SAAS+C,EAAOI,OAAO,IAAMnD,SAAS+C,EAAOI,OAAO,MACQ,GAA5DnD,SAAS+C,EAAOI,OAAO,IAAMnD,SAAS+C,EAAOI,OAAO,MACQ,GAA5DnD,SAAS+C,EAAOI,OAAO,IAAMnD,SAAS+C,EAAOI,OAAO,MACQ,GAA5DnD,SAAS+C,EAAOI,OAAO,IAAMnD,SAAS+C,EAAOI,OAAO,MACxB,EAA7BnD,SAAS+C,EAAOI,OAAO,IACM,EAA7BnD,SAAS+C,EAAOI,OAAO,IACM,EAA7BnD,SAAS+C,EAAOI,OAAO,IAMzB,MAHU,cACFH,OAHAE,EAAI,GAGM,KAERH,EAAOI,OAAO,IAAIC,aAI7B,CACD,MACF,QACE,OAAO,EAGX,OAAO,CACT,CAEM,SAAUC,EAAYC,GAC1BC,YAAW,WAAM,OAAAA,YAAW,WAAM,OAAAA,YAAW,WAAM,OAAAD,GAAM,GAAC,GAAC,GAC7D,CAEM,SAAUE,EAASC,GACvB,MAAoB,iBAANA,CAChB,CAEM,SAAUC,EAAWD,GACzB,MAAoB,mBAANA,CAChB,CAEgB,SAAAE,EAAQC,EAAGC,WACzB,GAAID,IAAMC,EACR,OAAO,EACF,GACQ,iBAAND,GACD,OAANA,GACa,iBAANC,GACD,OAANA,EACA,CACA,IAAMC,EAAQC,OAAOC,KAAKJ,GACpBK,EAAQF,OAAOC,KAAKH,GAC1B,GAAIC,EAAMxB,SAAW2B,EAAM3B,OACzB,OAAO,MAET,IAAkB,IAAA4B,EAAAC,EAAAL,eAAOM,EAAAC,KAAAD,EAAAF,EAAAI,OAAA,CAApB,IAAMC,EAAGH,EAAAI,MACZ,IAAKb,EAAQC,EAAEW,GAAMV,EAAEU,IACrB,OAAO,CAEV,mGACD,OAAO,CACR,CACD,OAAO,CACT,CAEgB,SAAAE,EAAKC,EAAUV,GAC7B,IAAMW,EAAI,CAAA,EAIV,OAHAX,EAAK3C,SAAQ,SAAAkD,GACXI,EAAEJ,GAAOG,EAAIH,EACf,IACOI,CACT,CAEA,IAAMC,EAAY,CAAA,EACZ,SAAUC,EAASC,QAAA,IAAAA,IAAAA,EAAmB,YACrCF,EAAUE,KACbF,EAAUE,GAAU,GAGtB,IAAMC,IAAOH,EAAUE,GACvB,MAAe,aAAXA,EACK,GAAA7E,OAAG8E,GAGL,GAAG9E,OAAA6E,GAAS7E,OAAA8E,EACrB,CAUgB,SAAAC,EAAeC,EAAcC,GAM3C,IALA,IAAIC,EAAKF,EAAKG,MAAM,KAChBC,EAAKH,EAAKE,MAAM,KACdE,EAAMxF,KAAKyF,IAAIJ,EAAG7C,OAAQ+C,EAAG/C,QAG5B6C,EAAG7C,OAASgD,GACjBH,EAAGnD,KAAK,KAEV,KAAOqD,EAAG/C,OAASgD,GACjBD,EAAGrD,KAAK,KAIV,IAAK,IAAIK,EAAI,EAAGA,EAAIiD,EAAKjD,IAAK,CAC5B,IAAMmD,EAAOxF,SAASmF,EAAG9C,IACnBoD,EAAOzF,SAASqF,EAAGhD,IAEzB,GAAImD,EAAOC,EAET,OAAO,EACF,GAAID,EAAOC,EAEhB,OAAQ,CAEX,CAED,OAAO,CACT"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/utils/index.ts"],"sourcesContent":["/**\n * 禁止输入emoji表情\n * @param {string} val - 输入内容\n * @returns {boolean} - 校验结果 返回 true || false\n */\nimport React from \"react\";\n\nexport const inputRange = (val: string): string => {\n let iconRule1 =\n /[\\uD83C|\\uD83D|\\uD83E][\\uDC00-\\uDFFF][\\u200D|\\uFE0F]|[\\uD83C|\\uD83D|\\uD83E][\\uDC00-\\uDFFF]|[0-9|*|#]\\uFE0F\\u20E3|[0-9|#]\\u20E3|[\\u203C-\\u3299]\\uFE0F\\u200D|[\\u203C-\\u3299]\\uFE0F|[\\u2122-\\u2B55]|\\u303D|[\\A9|\\AE]\\u3030|\\uA9|\\uAE|\\u3030/gi;\n return val.replace(iconRule1, \"\");\n};\n\n// function Handler(fn) {\n// this.handler = fn;\n// this.next = null;\n// }\n\n// Handler.prototype.setNext = function setNext(h) {\n// this.next = h;\n// return h;\n// };\n\n// Handler.prototype.passRequest = function () {\n// const ret = this.handler.apply(this, arguments);\n// // 提前结束\n// if (!ret) {\n// return ret;\n// }\n\n// // 向后传递\n// if (this.next) {\n// return this.next.passRequest.apply(this.next, arguments);\n// }\n// return ret;\n// };\n\n// export class ChainHander {\n// public hander: (s: string) => boolean\n// public next\n// constructor(fn: (str: string) => boolean) {\n// this.hander = fn\n// }\n// public setNext(callback): () => boolean {\n// this.next = callback\n// return callback\n// }\n// public checkPass(...arg) {\n// const result = this.hander.apply(this, arg)\n// if (!result) {\n// return result\n// }\n\n// if (this.next != null) {\n// return this.next.checkPass.apply(this.next, arg)\n// }\n\n// return result\n// }\n// }\n\nexport const throtte = (fn: Function, delay: number = 1500) => {\n let timer: NodeJS.Timer;\n let canCall = true;\n return function (arg) {\n if (canCall) {\n canCall = false;\n fn(arg);\n }\n timer = setTimeout(() => {\n canCall = true;\n clearTimeout(timer);\n }, delay);\n };\n};\n\nexport const debounce = (fn: (...arg: any) => any, delay: number = 1500) => {\n let timer: NodeJS.Timeout | null = null;\n return function () {\n const context = this;\n const arg = arguments;\n if (timer) clearTimeout(timer);\n timer = setTimeout(() => {\n fn.apply(context, arg);\n }, delay);\n };\n};\n\nexport function pxTransform(size: number, designWidth = 750): string {\n if (!size) return \"\";\n const deviceRatio = {\n 640: 2.34 / 2,\n 750: 1,\n 828: 1.81 / 2,\n };\n if (process.env.TARO_ENV === \"h5\")\n return (\n Math.ceil(\n (((parseInt(`${size}`, 10) / 40) * 640) / designWidth) * 10000\n ) /\n 10000 +\n \"rem\"\n );\n return `${size / deviceRatio[designWidth]}rpx`;\n}\n\nlet flexGapSupported: boolean | undefined;\nexport const detectFlexGapSupported = () => {\n if (flexGapSupported !== undefined) {\n return flexGapSupported;\n }\n\n const flex = document.createElement(\"div\");\n flex.style.display = \"flex\";\n flex.style.flexDirection = \"column\";\n flex.style.rowGap = \"1px\";\n\n flex.appendChild(document.createElement(\"div\"));\n flex.appendChild(document.createElement(\"div\"));\n\n document.body.appendChild(flex);\n flexGapSupported = flex.scrollHeight === 1;\n document.body.removeChild(flex);\n\n return flexGapSupported;\n};\n\nexport interface Option {\n keepEmpty?: boolean;\n}\n\nexport function toArray(\n children: React.ReactNode,\n option: Option = {}\n): React.ReactElement[] {\n let ret: React.ReactElement[] = [];\n\n React.Children.forEach(children, (child: any | any[]) => {\n if ((child === undefined || child === null) && !option.keepEmpty) {\n return;\n }\n\n if (Array.isArray(child)) {\n ret = ret.concat(toArray(child));\n } else if (isFragment(child) && child.props) {\n ret = ret.concat(toArray(child.props.children, option));\n } else {\n ret.push(child);\n }\n });\n\n return ret;\n}\n\nfunction isFragment(object) {\n return (\n object.$$typeof === Symbol.for(\"react.element\") &&\n object.type === Symbol.for(\"react.fragment\")\n );\n}\n\n// 获取 校验银行卡\nexport const checkBankCard = (cardNo: string) => {\n if (!cardNo) return false;\n let tmp = true;\n let total = 0;\n for (let i = cardNo.length; i > 0; i--) {\n let num = +cardNo.substring(i, i - 1);\n if (((tmp = !tmp), tmp)) num = num * 2;\n const gw = num % 10;\n total += gw + (num - gw) / 10;\n }\n return total % 10 === 0;\n};\n\n/**\n * 格式化银行卡号\n *\n * @export\n * @param {string} cardNum 6217002712347888987\n * @param {boolean} mask 是否掩码\n * @returns {string} 6217 0027 1234 7888 987\n */\nexport function creditCard(cardNum: string, mask?: boolean): string {\n const newCardNum = cardNum\n .replace(/[^\\d]/g, \"\")\n .replace(/(\\d{4})(?=\\d)/g, \"$1 \");\n\n return mask ? newCardNum.replace(/\\s(\\d{4})(?!\\d)/g, \" ****\") : newCardNum;\n}\n\n/**\n * 校验身份证号是否符合规范\n *\n * @export\n * @param {string} idcard\n * @returns {boolean} true 符合 | false 不符合\n */\nexport function verifyIdcard(idcard: string): boolean {\n if (!idcard) return false;\n let regex1 =\n /^[1-9][0-7]\\d{4}((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229))\\d{3}(\\d|X|x)?$/;\n /* 身份号码位数及格式检验 */\n switch (idcard.length) {\n case 15:\n if (\n (parseInt(idcard.substr(6, 2)) + 1900) % 4 === 0 ||\n ((parseInt(idcard.substr(6, 2)) + 1900) % 100 === 0 &&\n (parseInt(idcard.substr(6, 2)) + 1900) % 4 === 0)\n ) {\n let regex2 =\n /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/; // 测试出生日期的合法性\n if (regex2.test(idcard)) {\n return true;\n }\n return false;\n }\n // eslint-disable-next-line\n let regex2 =\n /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/; // 测试出生日期的合法性\n if (regex2.test(idcard)) {\n return true;\n }\n return false;\n\n case 18:\n if (regex1.test(idcard)) {\n let S =\n (parseInt(idcard.charAt(0)) + parseInt(idcard.charAt(10))) * 7 +\n (parseInt(idcard.charAt(1)) + parseInt(idcard.charAt(11))) * 9 +\n (parseInt(idcard.charAt(2)) + parseInt(idcard.charAt(12))) * 10 +\n (parseInt(idcard.charAt(3)) + parseInt(idcard.charAt(13))) * 5 +\n (parseInt(idcard.charAt(4)) + parseInt(idcard.charAt(14))) * 8 +\n (parseInt(idcard.charAt(5)) + parseInt(idcard.charAt(15))) * 4 +\n (parseInt(idcard.charAt(6)) + parseInt(idcard.charAt(16))) * 2 +\n parseInt(idcard.charAt(7)) * 1 +\n parseInt(idcard.charAt(8)) * 6 +\n parseInt(idcard.charAt(9)) * 3;\n let Y = S % 11;\n let M = \"F\";\n let JYM = \"10X98765432\";\n M = JYM.substr(Y, 1);\n /* 判断校验位 */\n if (M === idcard.charAt(17).toUpperCase()) {\n return true;\n }\n return false;\n }\n break;\n default:\n return false;\n }\n\n return false;\n}\n\nexport function tripleDefer(func: () => void): void {\n setTimeout(() => setTimeout(() => setTimeout(() => func())));\n}\n\nexport function isString(v) {\n return typeof v === \"string\";\n}\n\nexport function isFunction(v) {\n return typeof v === \"function\";\n}\n\nexport function isEqual(x, y) {\n if (x === y) {\n return true;\n } else if (\n typeof x === \"object\" &&\n x !== null &&\n typeof y === \"object\" &&\n y !== null\n ) {\n const keysX = Object.keys(x);\n const keysY = Object.keys(y);\n if (keysX.length !== keysY.length) {\n return false;\n }\n for (const key of keysX) {\n if (!isEqual(x[key], y[key])) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n\nexport function pick(obj: any, keys) {\n const r = {};\n keys.forEach(key => {\n r[key] = obj[key];\n });\n return r;\n}\n\nconst idCounter = {};\nexport function uniqueId(prefix = \"$unique$\") {\n if (!idCounter[prefix]) {\n idCounter[prefix] = 0;\n }\n\n const id = ++idCounter[prefix];\n if (prefix === \"$unique$\") {\n return `${id}`;\n }\n\n return `${prefix}${id}`;\n}\n\n/**\n * 版本号比较进阶版\n * @param {string} ver1 5.19.1 前一个版本\n * @param {string} ver2 5.18.3 后一个版本\n * @returns {number} 1: 前一个版本 大于 后一个版本\n * -1: 前一个版本 小于 后一个版本\n * 0: 前一个版本 等于 后一个版本\n */\nexport function compareVersion(ver1: string, ver2: string): number {\n let v1 = ver1.split(\".\");\n let v2 = ver2.split(\".\");\n const len = Math.max(v1.length, v2.length);\n\n // 调整两个版本号位数相同\n while (v1.length < len) {\n v1.push(\"0\");\n }\n while (v2.length < len) {\n v2.push(\"0\");\n }\n\n // 循环判断每位数的大小\n for (let i = 0; i < len; i++) {\n const num1 = parseInt(v1[i]);\n const num2 = parseInt(v2[i]);\n\n if (num1 > num2) {\n //前一个版本 大于 后一个版本\n return 1;\n } else if (num1 < num2) {\n //前一个版本 小于 后一个版本\n return -1;\n }\n }\n\n return 0;\n}\n\nexport const replaceCharByIndex = (\n str: string,\n index: number,\n replace: string\n) => {\n return str.substring(0, index) + replace + str.substring(index + 1);\n};\n\n/**\n * 车牌号正则校验\n *\n * @export\n * @param {string} str 车牌号\n * @returns {boolean} false | true\n */\nexport const isLicenseNo = (str: string): boolean => {\n let xreg =\n /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/;\n let creg =\n /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;\n if (str.length === 7) {\n return creg.test(str);\n } else if (str.length === 8) {\n return xreg.test(str);\n }\n return false;\n};\n"],"names":["flexGapSupported","inputRange","val","replace","pxTransform","size","designWidth","process","env","TARO_ENV","Math","ceil","parseInt","concat","detectFlexGapSupported","undefined","flex","document","createElement","style","display","flexDirection","rowGap","appendChild","body","scrollHeight","removeChild","toArray","children","option","ret","React","Children","forEach","child","object","keepEmpty","Array","isArray","$$typeof","Symbol","for","type","props","push","checkBankCard","cardNo","tmp","total","i","length","num","substring","gw","creditCard","cardNum","mask","newCardNum","verifyIdcard","idcard","substr","test","S","charAt","toUpperCase","tripleDefer","func","setTimeout","isString","v","isFunction","isEqual","x","y","keysX","Object","keys","keysY","keysX_1","__values","keysX_1_1","done","next","key","value","pick","obj","r","idCounter","uniqueId","prefix","id","compareVersion","ver1","ver2","v1","split","v2","len","max","num1","num2","replaceCharByIndex","str","index","isLicenseNo"],"mappings":"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"}
|