From 241001f9240122cf2ca6321f21ac8f4267ff1fa6 Mon Sep 17 00:00:00 2001 From: Sudhanshu Date: Wed, 25 Dec 2024 17:44:01 +0530 Subject: [PATCH] Updates --- 404.html | 4 ++-- assets/js/fcff9033.48843454.js | 1 + assets/js/fcff9033.ea341002.js | 1 - .../{runtime~main.2a1192b5.js => runtime~main.939b4533.js} | 2 +- docs/customization/index.html | 6 +++--- docs/intro/index.html | 4 ++-- docs/migration/index.html | 4 ++-- docs/numeric_format/index.html | 4 ++-- docs/pattern_format/index.html | 4 ++-- docs/props/index.html | 4 ++-- docs/quirks/index.html | 4 ++-- index.html | 4 ++-- markdown-page/index.html | 4 ++-- search-index-docs-default-current.json | 2 +- 14 files changed, 24 insertions(+), 24 deletions(-) create mode 100644 assets/js/fcff9033.48843454.js delete mode 100644 assets/js/fcff9033.ea341002.js rename assets/js/{runtime~main.2a1192b5.js => runtime~main.939b4533.js} (98%) diff --git a/404.html b/404.html index d022188..e992b30 100644 --- a/404.html +++ b/404.html @@ -5,13 +5,13 @@ Page Not Found | React Number format - +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- + \ No newline at end of file diff --git a/assets/js/fcff9033.48843454.js b/assets/js/fcff9033.48843454.js new file mode 100644 index 0000000..d324269 --- /dev/null +++ b/assets/js/fcff9033.48843454.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_number_format=self.webpackChunkreact_number_format||[]).push([[497],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),m=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=m(e.components);return a.createElement(s.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=m(n),d=r,f=p["".concat(s,".").concat(d)]||p[d]||c[d]||o;return n?a.createElement(f,i(i({ref:t},u),{},{components:n})):a.createElement(f,i({ref:t},u))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,i[1]=l;for(var m=2;m{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>s,default:()=>d,frontMatter:()=>l,metadata:()=>m,toc:()=>c});var a=n(7462),r=n(3366),o=(n(7294),n(3905)),i=["components"],l={title:"Customization",sidebar_position:5},s=void 0,m={unversionedId:"customization",id:"customization",title:"Customization",description:"Concept",source:"@site/docs/customization.md",sourceDirName:".",slug:"/customization",permalink:"/react-number-format/docs/customization",editUrl:"https://github.com/s-yadav/react-number-format/docs/customization.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{title:"Customization",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Pattern Format",permalink:"/react-number-format/docs/pattern_format"},next:{title:"Migration guide",permalink:"/react-number-format/docs/migration"}},u={},c=[{value:"Concept",id:"concept",level:2},{value:"Examples",id:"examples",level:2},{value:"Intl.NumberFormat based formatting",id:"intlnumberformat-based-formatting",level:3},{value:"Card expiry field",id:"card-expiry-field",level:3},{value:"Card expiry field with usePatternFormat",id:"card-expiry-field-with-usepatternformat",level:3},{value:"Custom numeral example",id:"custom-numeral-example",level:3},{value:"AllowEmptyFormatting on NumericFormat",id:"allowemptyformatting-on-numericformat",level:3},{value:"Using parentheses to express negative numbers",id:"using-parentheses-to-express-negative-numbers",level:3},{value:"IBAN account input field with pattern",id:"iban-account-input-field-with-pattern",level:3}],p={toc:c};function d(e){var t=e.components,n=(0,r.Z)(e,i);return(0,o.kt)("wrapper",(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"concept"},"Concept"),(0,o.kt)("p",null,"React Number Format v5 is a complete rewrite with a goal of keeping it fully customizable to support all the custom case different product can have."),(0,o.kt)("p",null,"The primary thing which react number format controls is apply formatting in place (in the input) while managing correct caret position. It tries to understand what user is trying to do, add number, cut/paste, delete, and manage cursor position accordingly."),(0,o.kt)("p",null,"At the core of React number format lies NumberFormatBase, which works on three main props controlled from parent."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"format")," ",(0,o.kt)("inlineCode",{parentName:"li"},"(numStr: string) => string"),": A format function which can turn any numeric string to a formatted string."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"removeFormatting")," ",(0,o.kt)("inlineCode",{parentName:"li"},"(formattedStr: string) => string"),": A function to removing formatting from a formatted string and return numeric string."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"getCaretBoundary")," ",(0,o.kt)("inlineCode",{parentName:"li"},"(formattedStr: string) => boolean[]"),": A function given a formatted string, returns boundaries of valid cursor position. basically an array of boolean, where index of specify caret position. true at a index signifies user can put their caret at the position, false means the caret position is not allowed and the caret will move to closet allowed position.")),(0,o.kt)("p",null,"Most of the time you don't have to define getCaretBoundary, as the default one is enough, but in case you need to define, it looks something like this."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js"},"function caretUnknownFormatBoundary(formattedValue) {\n const boundaryAry = Array.from({ length: formattedValue.length + 1 }).map(() => true);\n\n for (let i = 0, ln = boundaryAry.length; i < ln; i++) {\n // consider caret to be in boundary if it is before or after numeric value\n boundaryAry[i] = Boolean(\n formattedValue[i].match(/\\d/) || formattedValue[i - 1].match(/\\d/);,\n );\n }\n\n return boundaryAry;\n}\n")),(0,o.kt)("p",null,"There are few more props to handle some corner case."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"isValidInputCharacter")," ",(0,o.kt)("inlineCode",{parentName:"li"},"(char: sting) => boolean"),": A function to tell if a character in the formatted value is a valid typeable character. You don't need to pass it most of the time, as it defaults numeric characters (0-9). But case like additional character is allowed to type, for example decimal separator in currency format."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"isCharacterSame")," ",(0,o.kt)("inlineCode",{parentName:"li"},"(compareProps: CompareProps) => boolean"),": Some time we would like to allow user pressing different key and that being interpreted as different key like custom numerals, or letting user press ",(0,o.kt)("inlineCode",{parentName:"li"},".")," for decimal separator when custom decimalSeparator is provided. In such case we need to inform the library that the two characters are same.")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js"},"type CompareProps = {\n currentValue: string, // current value in the input, before applying any formatting\n lastValue: string, // last formatted value\n formattedValue: string, // current formatted value.\n currentValueIndex: number, // character index in currentValue which we are comparing\n formattedValueIndex: number, // character index in formattedValue which we are comparing\n};\n")),(0,o.kt)("p",null,"Check the usage in ",(0,o.kt)("a",{parentName:"p",href:"#custom-numeral-example"},"custom numeral example"),"."),(0,o.kt)("p",null,"Apart from this prop some key handling are required depending on use case which can be done using native events, onKeyDown/onKeyUp etc."),(0,o.kt)("h2",{id:"examples"},"Examples"),(0,o.kt)("p",null,"To give an example a basic implementation of number formatting if we have simple use case to format number without decimals and negative number support."),(0,o.kt)("h3",{id:"intlnumberformat-based-formatting"},"Intl.NumberFormat based formatting"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js"},"import { NumberFormatBase } from 'react-number-format';\n\nfunction MyCustomNumberFormat(props) {\n const format = (numStr) => {\n if (numStr === '') return '';\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n maximumFractionDigits: 0,\n }).format(numStr);\n };\n\n return ;\n}\n")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Demo"),(0,o.kt)("iframe",{src:"https://codesandbox.io/embed/custom-numeric-format-ovl6km?fontsize=14&hidenavigation=1&theme=dark&view=preview",title:"Custom Numeric Format",className:"csb",allow:"accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking",sandbox:"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"})),(0,o.kt)("p",null,"Another example of card expiry field."),(0,o.kt)("h3",{id:"card-expiry-field"},"Card expiry field"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js"},"import { NumberFormatBase } from 'react-number-format';\n\nfunction CardExpiry(props) {\n const format = (val) => {\n if (val === '') return '';\n let month = val.substring(0, 2);\n const year = val.substring(2, 4);\n\n if (month.length === 1 && month[0] > 1) {\n month = `0${month[0]}`;\n } else if (month.length === 2) {\n // set the lower and upper boundary\n if (Number(month) === 0) {\n month = `01`;\n } else if (Number(month) > 12) {\n month = '12';\n }\n }\n\n return `${month}/${year}`;\n };\n\n const onKeyDown = (e) => {\n const { target } = e;\n const { value, selectionStart } = target;\n console.log(value);\n if (e.key === '/' && value[selectionStart] === '/') {\n // if there is number before slash with just one character add 0 prefix\n if (value.split('/')[0].length === 1) {\n target.value = `0${value}`;\n target.selectionStart++;\n }\n\n target.selectionStart++;\n e.preventDefault();\n }\n };\n\n return ;\n}\n")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Demo"),(0,o.kt)("iframe",{src:"https://codesandbox.io/embed/card-expiry-field-eovgoh?fontsize=14&hidenavigation=1&theme=dark&view=preview",title:"Card Expiry Field",className:"csb",allow:"accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking",sandbox:"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"})),(0,o.kt)("p",null,"A couple of time we want to get all the features of NumericFormat or PatternFormat, and apply some customization on top of it. Well NumberFormat allows to do that as well. It provides\n",(0,o.kt)("inlineCode",{parentName:"p"},"usePatternFormat")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"useNumericFormat")," hook which can be used in conjunction with NumberFormatBase."),(0,o.kt)("p",null,"Let's take the same example of Card Expiry field."),(0,o.kt)("h3",{id:"card-expiry-field-with-usepatternformat"},"Card expiry field with usePatternFormat"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js"},"function CardExpiry(props) {\n /**\n * usePatternFormat, returns all the props required for NumberFormatBase\n * which we can extend in between\n */\n const { format, ...rest } = usePatternFormat({ ...props, format: '##/##' });\n\n const _format = (val) => {\n let month = val.substring(0, 2);\n const year = val.substring(2, 4);\n\n if (month.length === 1 && month[0] > 1) {\n month = `0${month[0]}`;\n } else if (month.length === 2) {\n // set the lower and upper boundary\n if (Number(month) === 0) {\n month = `01`;\n } else if (Number(month) > 12) {\n month = '12';\n }\n }\n\n return format(`${month}${year}`);\n };\n\n return ;\n}\n")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Demo"),(0,o.kt)("iframe",{src:"https://codesandbox.io/embed/card-expiry-field-pattern-format-3yzksf?fontsize=14&hidenavigation=1&theme=dark&view=preview",title:"Card Expiry Field (Pattern Format)",className:"csb",allow:"accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking",sandbox:"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"})),(0,o.kt)("p",null,"Another example for NumericFormat could be support for custom numerals."),(0,o.kt)("h3",{id:"custom-numeral-example"},"Custom numeral example"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js"},"const persianNumeral = ['\u06f0', '\u06f1', '\u06f2', '\u06f3', '\u06f4', '\u06f5', '\u06f6', '\u06f7', '\u06f8', '\u06f9'];\n\nfunction CustomNumeralNumericFormat(props) {\n const { format, removeFormatting, isCharacterSame, ...rest } = useNumericFormat(props);\n\n const _format = (val) => {\n const _val = format(val);\n\n return _val.replace(/\\d/g, ($1) => persianNumeral[Number($1)]);\n };\n\n const _removeFormatting = (val) => {\n const _val = val.replace(new RegExp(persianNumeral.join('|'), 'g'), ($1) =>\n persianNumeral.indexOf($1),\n );\n\n return removeFormatting(_val);\n };\n\n const _isCharacterSame = (compareMeta) => {\n const isCharSame = isCharacterSame(compareMeta);\n const { formattedValue, currentValue, formattedValueIndex, currentValueIndex } = compareMeta;\n const curChar = currentValue[currentValueIndex];\n const newChar = formattedValue[formattedValueIndex];\n const curPersianChar = persianNumeral[Number(curChar)] ?? curChar;\n const newPersianChar = persianNumeral[Number(newChar)] ?? newChar;\n\n return isCharSame || curPersianChar === newPersianChar;\n };\n\n return (\n \n );\n}\n")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Demo"),(0,o.kt)("iframe",{src:"https://codesandbox.io/embed/custom-numeral-numer-format-forked-s8e1s4?fontsize=14&hidenavigation=1&theme=dark&view=preview",title:"Custom numeral example",className:"csb",allow:"accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking",sandbox:"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"})),(0,o.kt)("h3",{id:"allowemptyformatting-on-numericformat"},"AllowEmptyFormatting on NumericFormat"),(0,o.kt)("p",null,"Currently allowEmptyFormatting is only available on the pattern lock, while it isn't a common usecase in NumericFormat, you still might want that behavior, you can achieve it like following."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js"},"function CustomNumberFormat(props) {\n const { prefix = '', suffix = '', allowEmptyFormatting } = props;\n const { format, ...numberFormatBaseProps } = useNumericFormat(props);\n const _format = (numStr, props) => {\n const formattedValue = format(numStr, props);\n return allowEmptyFormatting && formattedValue === '' ? prefix + suffix : formattedValue;\n };\n\n return ;\n}\n")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Demo"),(0,o.kt)("iframe",{src:"https://codesandbox.io/embed/numeric-format-allowemptyformat-zt3mh8?fontsize=14&hidenavigation=1&theme=dark&view=preview",title:"AllowEmptyFormatting on NumericFormat",className:"csb",allow:"accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking",sandbox:"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"})),(0,o.kt)("h3",{id:"using-parentheses-to-express-negative-numbers"},"Using parentheses to express negative numbers"),(0,o.kt)("p",null,"In some financial application we may want to express negative numbers enclosed with parentheses ",(0,o.kt)("inlineCode",{parentName:"p"},"($111,222)")," as opposed to negative sign ahead of the number ",(0,o.kt)("inlineCode",{parentName:"p"},"-$111,222"),". This can be implemented outside of the lib since v5."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js"},"const NEGATION_FORMAT_REGEX = /^\\((.*)\\)$/;\n\nfunction extractNegationAndNumber(value) {\n let hasNegation = false;\n if (typeof value === 'number') {\n hasNegation = value < 0;\n value = hasNegation ? value * -1 : value;\n } else if (value?.[0] === '-') {\n hasNegation = true;\n value = value.substring(1);\n } else if (value?.match(NEGATION_FORMAT_REGEX)) {\n hasNegation = true;\n value = value.replace(NEGATION_FORMAT_REGEX, '$1');\n }\n\n return { hasNegation, value };\n}\n\nfunction CustomNegationNumberFormat({\n prefix = '',\n suffix = '',\n value,\n defaultValue,\n onValueChange,\n ...restProps\n}) {\n const [hasNegation, toggleNegation] = useState(\n extractNegationAndNumber(value ?? defaultValue).hasNegation,\n );\n const [internalValue, setInternalValue] = useState(\n extractNegationAndNumber(value ?? defaultValue).value,\n );\n useEffect(() => {\n const { hasNegation, value: internalValue } = extractNegationAndNumber(value);\n setInternalValue(internalValue);\n toggleNegation(hasNegation);\n }, [value]);\n\n const _onValueChange = (values, sourceInfo) => {\n if (!onValueChange) return;\n\n const { formattedValue, value, floatValue } = values;\n onValueChange(\n {\n formattedValue,\n value: hasNegation ? `-${value}` : value,\n floatValue: hasNegation && !isNaN(floatValue) ? -floatValue : floatValue,\n },\n sourceInfo,\n );\n };\n\n const props = {\n prefix: hasNegation ? '(' + prefix : prefix,\n suffix: hasNegation ? suffix + ')' : suffix,\n // as we are controlling the negation logic outside, we don't want numeric format to handle this\n allowNegative: false,\n value: internalValue,\n onValueChange: _onValueChange,\n ...restProps,\n };\n const { format, onKeyDown, ...numberFormatBaseProps } = useNumericFormat(props);\n\n const _format = (numStr) => {\n const formattedValue = format(numStr, props);\n // if negation is present we need to always show negation with prefix and suffix even if value is empty\n return formattedValue === '' && hasNegation ? props.prefix + props.suffix : formattedValue;\n };\n\n const _onKeyDown = (e) => {\n const el = e.target;\n const { key } = e;\n const { selectionStart, selectionEnd, value = '' } = el;\n\n // if every thing is selected and deleted remove the negation as well\n if (selectionStart !== selectionEnd) {\n // if multiple characters are selected and user hits backspace, no need to handle anything manually\n onKeyDown(e);\n return;\n }\n\n // if user is pressing '-' we want to change it to '()', so mark there is negation in the number\n if (key === '-') {\n toggleNegation((hasNegation) => !hasNegation);\n e.preventDefault();\n return;\n }\n\n if (key === 'Backspace' && value[0] === '(' && selectionStart === props.prefix.length) {\n toggleNegation(false);\n e.preventDefault();\n return;\n }\n\n onKeyDown(e);\n };\n\n return ;\n}\n")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Demo"),(0,o.kt)("iframe",{src:"https://codesandbox.io/embed/parentheses-for-negation-forked-jn42cp?fontsize=14&hidenavigation=1&theme=dark&view=preview",title:"Using parentheses to express negative numbers",className:"csb",allow:"accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking",sandbox:"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"})),(0,o.kt)("h3",{id:"iban-account-input-field-with-pattern"},"IBAN account input field with pattern"),(0,o.kt)("p",null,"In order to enter IBAN (International Bank Account Number) accounts into an input field the field requires specific pattern (quartets of characters/digits) and should allow typing in digits and letters which get converted to uppercase. Each country has a predefined format of the IBAN value which defines which the correct sequence of letters and digits. These formats are beyond this example and can be checked in libraries that validate IBAN accounts."),(0,o.kt)("p",null,"(Example code is written in Typescript)"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts"},"interface IBANInputProps extends NumberFormatBaseProps {\n onChange: ChangeEventHandler;\n}\n\nconst IBANInputDef: FunctionComponent = ({ onChange, ...props }) => (\n \n value\n .replace(/\\s+/g, '')\n .replace(/([a-z0-9]{4})/gi, '$1 ')\n .trim()\n .toLocaleUpperCase()\n }\n removeFormatting={(value) => value.replace(/\\s+/gi, '')}\n isValidInputCharacter={(char) => /^[a-z0-9]$/i.test(char)}\n getCaretBoundary={(value) =>\n Array(value.length + 1)\n .fill(0)\n .map((v) => true)\n }\n onValueChange={(values, { event }) =>\n onChange(\n Object.assign({} as ChangeEvent, event, {\n target: { name: props.name, value: values.value.toLocaleUpperCase() },\n }),\n )\n }\n onKeyDown={(e) =>\n !/^(?:[a-z0-9]|Backspace|Delete|Home|End|ArrowLeft|ArrowRight|Shift|CapsLock|Control|NumLock|Tab|Paste|Redo|Undo)$/i.test(\n e.key,\n ) && e.preventDefault()\n }\n />\n);\n\nconst IBANInput = forwardRef((props, ref) => (\n \n));\n")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Demo"),(0,o.kt)("iframe",{src:"https://codesandbox.io/embed/iban-input-field-czr3fh?fontsize=14&hidenavigation=1&theme=dark&view=preview",title:"IBAN Input Field",className:"csb",allow:"accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking",sandbox:"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"})))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/fcff9033.ea341002.js b/assets/js/fcff9033.ea341002.js deleted file mode 100644 index 9655d32..0000000 --- a/assets/js/fcff9033.ea341002.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkreact_number_format=self.webpackChunkreact_number_format||[]).push([[497],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),m=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=m(e.components);return a.createElement(s.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=m(n),d=r,f=p["".concat(s,".").concat(d)]||p[d]||c[d]||o;return n?a.createElement(f,i(i({ref:t},u),{},{components:n})):a.createElement(f,i({ref:t},u))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,i[1]=l;for(var m=2;m{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>s,default:()=>d,frontMatter:()=>l,metadata:()=>m,toc:()=>c});var a=n(7462),r=n(3366),o=(n(7294),n(3905)),i=["components"],l={title:"Customization",sidebar_position:5},s=void 0,m={unversionedId:"customization",id:"customization",title:"Customization",description:"Concept",source:"@site/docs/customization.md",sourceDirName:".",slug:"/customization",permalink:"/react-number-format/docs/customization",editUrl:"https://github.com/s-yadav/react-number-format/docs/customization.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{title:"Customization",sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Pattern Format",permalink:"/react-number-format/docs/pattern_format"},next:{title:"Migration guide",permalink:"/react-number-format/docs/migration"}},u={},c=[{value:"Concept",id:"concept",level:2},{value:"Examples",id:"examples",level:2},{value:"Intl.NumberFormat based formatting",id:"intlnumberformat-based-formatting",level:3},{value:"Card expiry field",id:"card-expiry-field",level:3},{value:"Card expiry field with usePatternFormat",id:"card-expiry-field-with-usepatternformat",level:3},{value:"Custom numeral example",id:"custom-numeral-example",level:3},{value:"AllowEmptyFormatting on NumericFormat",id:"allowemptyformatting-on-numericformat",level:3},{value:"Using parentheses to express negative numbers",id:"using-parentheses-to-express-negative-numbers",level:3},{value:"IBAN account input field with pattern",id:"iban-account-input-field-with-pattern",level:3}],p={toc:c};function d(e){var t=e.components,n=(0,r.Z)(e,i);return(0,o.kt)("wrapper",(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"concept"},"Concept"),(0,o.kt)("p",null,"React Number Format v5 is a complete rewrite with a goal of keeping it fully customizable to support all the custom case different product can have."),(0,o.kt)("p",null,"The primary thing which react number format controls is apply formatting in place (in the input) while managing correct caret position. It tries to understand what user is trying to do, add number, cut/paste, delete, and manage cursor position accordingly."),(0,o.kt)("p",null,"At the core of React number format lies NumberFormatBase, which works on three main props controlled from parent."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"format")," ",(0,o.kt)("inlineCode",{parentName:"li"},"(numStr: string) => string"),": A format function which can turn any numeric string to a formatted string."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"removeFormatting")," ",(0,o.kt)("inlineCode",{parentName:"li"},"(formattedStr: string) => string"),": A function to removing formatting from a formatted string and return numeric string."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"getCaretBoundary")," ",(0,o.kt)("inlineCode",{parentName:"li"},"(formattedStr: string) => boolean[]"),": A function given a formatted string, returns boundaries of valid cursor position. basically an array of boolean, where index of specify caret position. true at a index signifies user can put their caret at the position, false means the caret position is not allowed and the caret will move to closet allowed position.")),(0,o.kt)("p",null,"Most of the time you don't have to define getCaretBoundary, as the default one is enough, but in case you need to define, it looks something like this."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js"},"function caretUnknownFormatBoundary(formattedValue) {\n const boundaryAry = Array.from({ length: formattedValue.length + 1 }).map(() => true);\n\n for (let i = 0, ln = boundaryAry.length; i < ln; i++) {\n // consider caret to be in boundary if it is before or after numeric value\n boundaryAry[i] = Boolean(\n formattedValue[i].match(/\\d/) || formattedValue[i - 1].match(/\\d/);,\n );\n }\n\n return boundaryAry;\n}\n")),(0,o.kt)("p",null,"There are few more props to handle some corner case."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"isValidInputCharacter")," ",(0,o.kt)("inlineCode",{parentName:"li"},"(char: sting) => boolean"),": A function to tell if a character in the formatted value is a valid typeable character. You don't need to pass it most of the time, as it defaults numeric characters (0-9). But case like additional character is allowed to type, for example decimal separator in currency format."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"isCharacterSame")," ",(0,o.kt)("inlineCode",{parentName:"li"},"(compareProps: CompareProps) => boolean"),": Some time we would like to allow user pressing different key and that being interpreted as different key like custom numerals, or letting user press ",(0,o.kt)("inlineCode",{parentName:"li"},".")," for decimal separator when custom decimalSeparator is provided. In such case we need to inform the library that the two characters are same.")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js"},"type CompareProps = {\n currentValue: string, // current value in the input, before applying any formatting\n lastValue: string, // last formatted value\n formattedValue: string, // current formatted value.\n currentValueIndex: number, // character index in currentValue which we are comparing\n formattedValueIndex: number, // character index in formattedValue which we are comparing\n};\n")),(0,o.kt)("p",null,"Check the usage in ",(0,o.kt)("a",{parentName:"p",href:"#custom-numeral-example"},"custom numeral example"),"."),(0,o.kt)("p",null,"Apart from this prop some key handling are required depending on use case which can be done using native events, onKeyDown/onKeyUp etc."),(0,o.kt)("h2",{id:"examples"},"Examples"),(0,o.kt)("p",null,"To give an example a basic implementation of number formatting if we have simple use case to format number without decimals and negative number support."),(0,o.kt)("h3",{id:"intlnumberformat-based-formatting"},"Intl.NumberFormat based formatting"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js"},"import { NumberFormatBase } from 'react-number-format';\n\nfunction MyCustomNumberFormat(props) {\n const format = (numStr) => {\n if (numStr === '') return '';\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n maximumFractionDigits: 0,\n }).format(numStr);\n };\n\n return ;\n}\n")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Demo"),(0,o.kt)("iframe",{src:"https://codesandbox.io/embed/custom-numeric-format-ovl6km?fontsize=14&hidenavigation=1&theme=dark&view=preview",title:"Custom Numeric Format",className:"csb",allow:"accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking",sandbox:"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"})),(0,o.kt)("p",null,"Another example of card expiry field."),(0,o.kt)("h3",{id:"card-expiry-field"},"Card expiry field"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js"},"import { NumberFormatBase } from 'react-number-format';\n\nfunction CardExpiry(props) {\n const format = (val) => {\n if (val === '') return '';\n let month = val.substring(0, 2);\n const year = val.substring(2, 4);\n\n if (month.length === 1 && month[0] > 1) {\n month = `0${month[0]}`;\n } else if (month.length === 2) {\n // set the lower and upper boundary\n if (Number(month) === 0) {\n month = `01`;\n } else if (Number(month) > 12) {\n month = '12';\n }\n }\n\n return `${month}/${year}`;\n };\n\n const onKeyDown = (e) => {\n const { target } = e;\n const { value, selectionStart } = target;\n console.log(value);\n if (e.key === '/' && value[selectionStart] === '/') {\n // if there is number before slash with just one character add 0 prefix\n if (value.split('/')[0].length === 1) {\n target.value = `0${value}`;\n target.selectionStart++;\n }\n\n target.selectionStart++;\n e.preventDefault();\n }\n };\n\n return ;\n}\n")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Demo"),(0,o.kt)("iframe",{src:"https://codesandbox.io/embed/card-expiry-field-eovgoh?fontsize=14&hidenavigation=1&theme=dark&view=preview",title:"Card Expiry Field",className:"csb",allow:"accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking",sandbox:"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"})),(0,o.kt)("p",null,"A couple of time we want to get all the features of NumericFormat or PatterFormat, and apply some customization on top of it. Well NumberFormat allows to do that as well. It provides\n",(0,o.kt)("inlineCode",{parentName:"p"},"usePatternFormat")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"useNumericFormat")," hook which can be used in conjunction with NumberFormatBase."),(0,o.kt)("p",null,"Let's take the same example of Card Expiry field."),(0,o.kt)("h3",{id:"card-expiry-field-with-usepatternformat"},"Card expiry field with usePatternFormat"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js"},"function CardExpiry(props) {\n /**\n * usePatternFormat, returns all the props required for NumberFormatBase\n * which we can extend in between\n */\n const { format, ...rest } = usePatternFormat({ ...props, format: '##/##' });\n\n const _format = (val) => {\n let month = val.substring(0, 2);\n const year = val.substring(2, 4);\n\n if (month.length === 1 && month[0] > 1) {\n month = `0${month[0]}`;\n } else if (month.length === 2) {\n // set the lower and upper boundary\n if (Number(month) === 0) {\n month = `01`;\n } else if (Number(month) > 12) {\n month = '12';\n }\n }\n\n return format(`${month}${year}`);\n };\n\n return ;\n}\n")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Demo"),(0,o.kt)("iframe",{src:"https://codesandbox.io/embed/card-expiry-field-pattern-format-3yzksf?fontsize=14&hidenavigation=1&theme=dark&view=preview",title:"Card Expiry Field (Pattern Format)",className:"csb",allow:"accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking",sandbox:"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"})),(0,o.kt)("p",null,"Another example for NumericFormat could be support for custom numerals."),(0,o.kt)("h3",{id:"custom-numeral-example"},"Custom numeral example"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js"},"const persianNumeral = ['\u06f0', '\u06f1', '\u06f2', '\u06f3', '\u06f4', '\u06f5', '\u06f6', '\u06f7', '\u06f8', '\u06f9'];\n\nfunction CustomNumeralNumericFormat(props) {\n const { format, removeFormatting, isCharacterSame, ...rest } = useNumericFormat(props);\n\n const _format = (val) => {\n const _val = format(val);\n\n return _val.replace(/\\d/g, ($1) => persianNumeral[Number($1)]);\n };\n\n const _removeFormatting = (val) => {\n const _val = val.replace(new RegExp(persianNumeral.join('|'), 'g'), ($1) =>\n persianNumeral.indexOf($1),\n );\n\n return removeFormatting(_val);\n };\n\n const _isCharacterSame = (compareMeta) => {\n const isCharSame = isCharacterSame(compareMeta);\n const { formattedValue, currentValue, formattedValueIndex, currentValueIndex } = compareMeta;\n const curChar = currentValue[currentValueIndex];\n const newChar = formattedValue[formattedValueIndex];\n const curPersianChar = persianNumeral[Number(curChar)] ?? curChar;\n const newPersianChar = persianNumeral[Number(newChar)] ?? newChar;\n\n return isCharSame || curPersianChar === newPersianChar;\n };\n\n return (\n \n );\n}\n")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Demo"),(0,o.kt)("iframe",{src:"https://codesandbox.io/embed/custom-numeral-numer-format-forked-s8e1s4?fontsize=14&hidenavigation=1&theme=dark&view=preview",title:"Custom numeral example",className:"csb",allow:"accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking",sandbox:"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"})),(0,o.kt)("h3",{id:"allowemptyformatting-on-numericformat"},"AllowEmptyFormatting on NumericFormat"),(0,o.kt)("p",null,"Currently allowEmptyFormatting is only available on the pattern lock, while it isn't a common usecase in NumericFormat, you still might want that behavior, you can achieve it like following."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js"},"function CustomNumberFormat(props) {\n const { prefix = '', suffix = '', allowEmptyFormatting } = props;\n const { format, ...numberFormatBaseProps } = useNumericFormat(props);\n const _format = (numStr, props) => {\n const formattedValue = format(numStr, props);\n return allowEmptyFormatting && formattedValue === '' ? prefix + suffix : formattedValue;\n };\n\n return ;\n}\n")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Demo"),(0,o.kt)("iframe",{src:"https://codesandbox.io/embed/numeric-format-allowemptyformat-zt3mh8?fontsize=14&hidenavigation=1&theme=dark&view=preview",title:"AllowEmptyFormatting on NumericFormat",className:"csb",allow:"accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking",sandbox:"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"})),(0,o.kt)("h3",{id:"using-parentheses-to-express-negative-numbers"},"Using parentheses to express negative numbers"),(0,o.kt)("p",null,"In some financial application we may want to express negative numbers enclosed with parentheses ",(0,o.kt)("inlineCode",{parentName:"p"},"($111,222)")," as opposed to negative sign ahead of the number ",(0,o.kt)("inlineCode",{parentName:"p"},"-$111,222"),". This can be implemented outside of the lib since v5."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js"},"const NEGATION_FORMAT_REGEX = /^\\((.*)\\)$/;\n\nfunction extractNegationAndNumber(value) {\n let hasNegation = false;\n if (typeof value === 'number') {\n hasNegation = value < 0;\n value = hasNegation ? value * -1 : value;\n } else if (value?.[0] === '-') {\n hasNegation = true;\n value = value.substring(1);\n } else if (value?.match(NEGATION_FORMAT_REGEX)) {\n hasNegation = true;\n value = value.replace(NEGATION_FORMAT_REGEX, '$1');\n }\n\n return { hasNegation, value };\n}\n\nfunction CustomNegationNumberFormat({\n prefix = '',\n suffix = '',\n value,\n defaultValue,\n onValueChange,\n ...restProps\n}) {\n const [hasNegation, toggleNegation] = useState(\n extractNegationAndNumber(value ?? defaultValue).hasNegation,\n );\n const [internalValue, setInternalValue] = useState(\n extractNegationAndNumber(value ?? defaultValue).value,\n );\n useEffect(() => {\n const { hasNegation, value: internalValue } = extractNegationAndNumber(value);\n setInternalValue(internalValue);\n toggleNegation(hasNegation);\n }, [value]);\n\n const _onValueChange = (values, sourceInfo) => {\n if (!onValueChange) return;\n\n const { formattedValue, value, floatValue } = values;\n onValueChange(\n {\n formattedValue,\n value: hasNegation ? `-${value}` : value,\n floatValue: hasNegation && !isNaN(floatValue) ? -floatValue : floatValue,\n },\n sourceInfo,\n );\n };\n\n const props = {\n prefix: hasNegation ? '(' + prefix : prefix,\n suffix: hasNegation ? suffix + ')' : suffix,\n // as we are controlling the negation logic outside, we don't want numeric format to handle this\n allowNegative: false,\n value: internalValue,\n onValueChange: _onValueChange,\n ...restProps,\n };\n const { format, onKeyDown, ...numberFormatBaseProps } = useNumericFormat(props);\n\n const _format = (numStr) => {\n const formattedValue = format(numStr, props);\n // if negation is present we need to always show negation with prefix and suffix even if value is empty\n return formattedValue === '' && hasNegation ? props.prefix + props.suffix : formattedValue;\n };\n\n const _onKeyDown = (e) => {\n const el = e.target;\n const { key } = e;\n const { selectionStart, selectionEnd, value = '' } = el;\n\n // if every thing is selected and deleted remove the negation as well\n if (selectionStart !== selectionEnd) {\n // if multiple characters are selected and user hits backspace, no need to handle anything manually\n onKeyDown(e);\n return;\n }\n\n // if user is pressing '-' we want to change it to '()', so mark there is negation in the number\n if (key === '-') {\n toggleNegation((hasNegation) => !hasNegation);\n e.preventDefault();\n return;\n }\n\n if (key === 'Backspace' && value[0] === '(' && selectionStart === props.prefix.length) {\n toggleNegation(false);\n e.preventDefault();\n return;\n }\n\n onKeyDown(e);\n };\n\n return ;\n}\n")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Demo"),(0,o.kt)("iframe",{src:"https://codesandbox.io/embed/parentheses-for-negation-forked-jn42cp?fontsize=14&hidenavigation=1&theme=dark&view=preview",title:"Using parentheses to express negative numbers",className:"csb",allow:"accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking",sandbox:"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"})),(0,o.kt)("h3",{id:"iban-account-input-field-with-pattern"},"IBAN account input field with pattern"),(0,o.kt)("p",null,"In order to enter IBAN (International Bank Account Number) accounts into an input field the field requires specific pattern (quartets of characters/digits) and should allow typing in digits and letters which get converted to uppercase. Each country has a predefined format of the IBAN value which defines which the correct sequence of letters and digits. These formats are beyond this example and can be checked in libraries that validate IBAN accounts."),(0,o.kt)("p",null,"(Example code is written in Typescript)"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-ts"},"interface IBANInputProps extends NumberFormatBaseProps {\n onChange: ChangeEventHandler;\n}\n\nconst IBANInputDef: FunctionComponent = ({ onChange, ...props }) => (\n \n value\n .replace(/\\s+/g, '')\n .replace(/([a-z0-9]{4})/gi, '$1 ')\n .trim()\n .toLocaleUpperCase()\n }\n removeFormatting={(value) => value.replace(/\\s+/gi, '')}\n isValidInputCharacter={(char) => /^[a-z0-9]$/i.test(char)}\n getCaretBoundary={(value) =>\n Array(value.length + 1)\n .fill(0)\n .map((v) => true)\n }\n onValueChange={(values, { event }) =>\n onChange(\n Object.assign({} as ChangeEvent, event, {\n target: { name: props.name, value: values.value.toLocaleUpperCase() },\n }),\n )\n }\n onKeyDown={(e) =>\n !/^(?:[a-z0-9]|Backspace|Delete|Home|End|ArrowLeft|ArrowRight|Shift|CapsLock|Control|NumLock|Tab|Paste|Redo|Undo)$/i.test(\n e.key,\n ) && e.preventDefault()\n }\n />\n);\n\nconst IBANInput = forwardRef((props, ref) => (\n \n));\n")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Demo"),(0,o.kt)("iframe",{src:"https://codesandbox.io/embed/iban-input-field-czr3fh?fontsize=14&hidenavigation=1&theme=dark&view=preview",title:"IBAN Input Field",className:"csb",allow:"accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking",sandbox:"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"})))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.2a1192b5.js b/assets/js/runtime~main.939b4533.js similarity index 98% rename from assets/js/runtime~main.2a1192b5.js rename to assets/js/runtime~main.939b4533.js index 52e42bb..f3818ef 100644 --- a/assets/js/runtime~main.2a1192b5.js +++ b/assets/js/runtime~main.939b4533.js @@ -1 +1 @@ -(()=>{"use strict";var e,r,t,o,a,n={},f={};function i(e){var r=f[e];if(void 0!==r)return r.exports;var t=f[e]={id:e,loaded:!1,exports:{}};return n[e].call(t.exports,t,t.exports,i),t.loaded=!0,t.exports}i.m=n,i.c=f,e=[],i.O=(r,t,o,a)=>{if(!t){var n=1/0;for(d=0;d=a)&&Object.keys(i.O).every((e=>i.O[e](t[c])))?t.splice(c--,1):(f=!1,a0&&e[d-1][2]>a;d--)e[d]=e[d-1];e[d]=[t,o,a]},i.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return i.d(r,{a:r}),r},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(e,o){if(1&o&&(e=this(e)),8&o)return e;if("object"==typeof e&&e){if(4&o&&e.__esModule)return e;if(16&o&&"function"==typeof e.then)return e}var a=Object.create(null);i.r(a);var n={};r=r||[null,t({}),t([]),t(t)];for(var f=2&o&&e;"object"==typeof f&&!~r.indexOf(f);f=t(f))Object.getOwnPropertyNames(f).forEach((r=>n[r]=()=>e[r]));return n.default=()=>e,i.d(a,n),a},i.d=(e,r)=>{for(var t in r)i.o(r,t)&&!i.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((r,t)=>(i.f[t](e,r),r)),[])),i.u=e=>"assets/js/"+({53:"935f2afb",63:"29c141da",68:"661574c4",85:"1f391b9e",120:"ea63631f",154:"295b567d",195:"c4f5d8e4",319:"3871f368",414:"393be207",497:"fcff9033",514:"1be78505",583:"fafcb005",671:"0e384e19",870:"608d5641",918:"17896441"}[e]||e)+"."+{53:"3da0e327",63:"2db64c9d",68:"aa977f16",85:"5ad9d53b",120:"6bc40b69",154:"92a4f825",195:"02db2b7a",319:"cc818fb0",414:"1217c35c",497:"ea341002",514:"aaafd0fa",545:"f99f85d5",583:"1caa17a9",608:"d9b34e30",671:"39aaae4f",870:"137e7899",918:"1b0ec37f"}[e]+".js",i.miniCssF=e=>{},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),o={},a="react-number-format:",i.l=(e,r,t,n)=>{if(o[e])o[e].push(r);else{var f,c;if(void 0!==t)for(var u=document.getElementsByTagName("script"),d=0;d{f.onerror=f.onload=null,clearTimeout(b);var a=o[e];if(delete o[e],f.parentNode&&f.parentNode.removeChild(f),a&&a.forEach((e=>e(t))),r)return r(t)},b=setTimeout(s.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=s.bind(null,f.onerror),f.onload=s.bind(null,f.onload),c&&document.head.appendChild(f)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="/react-number-format/",i.gca=function(e){return e={17896441:"918","935f2afb":"53","29c141da":"63","661574c4":"68","1f391b9e":"85",ea63631f:"120","295b567d":"154",c4f5d8e4:"195","3871f368":"319","393be207":"414",fcff9033:"497","1be78505":"514",fafcb005:"583","0e384e19":"671","608d5641":"870"}[e]||e,i.p+i.u(e)},(()=>{var e={303:0,532:0};i.f.j=(r,t)=>{var o=i.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else if(/^(303|532)$/.test(r))e[r]=0;else{var a=new Promise(((t,a)=>o=e[r]=[t,a]));t.push(o[2]=a);var n=i.p+i.u(r),f=new Error;i.l(n,(t=>{if(i.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var a=t&&("load"===t.type?"missing":t.type),n=t&&t.target&&t.target.src;f.message="Loading chunk "+r+" failed.\n("+a+": "+n+")",f.name="ChunkLoadError",f.type=a,f.request=n,o[1](f)}}),"chunk-"+r,r)}},i.O.j=r=>0===e[r];var r=(r,t)=>{var o,a,[n,f,c]=t,u=0;if(n.some((r=>0!==e[r]))){for(o in f)i.o(f,o)&&(i.m[o]=f[o]);if(c)var d=c(i)}for(r&&r(t);u{"use strict";var e,r,t,o,a,n={},f={};function i(e){var r=f[e];if(void 0!==r)return r.exports;var t=f[e]={id:e,loaded:!1,exports:{}};return n[e].call(t.exports,t,t.exports,i),t.loaded=!0,t.exports}i.m=n,i.c=f,e=[],i.O=(r,t,o,a)=>{if(!t){var n=1/0;for(d=0;d=a)&&Object.keys(i.O).every((e=>i.O[e](t[c])))?t.splice(c--,1):(f=!1,a0&&e[d-1][2]>a;d--)e[d]=e[d-1];e[d]=[t,o,a]},i.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return i.d(r,{a:r}),r},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(e,o){if(1&o&&(e=this(e)),8&o)return e;if("object"==typeof e&&e){if(4&o&&e.__esModule)return e;if(16&o&&"function"==typeof e.then)return e}var a=Object.create(null);i.r(a);var n={};r=r||[null,t({}),t([]),t(t)];for(var f=2&o&&e;"object"==typeof f&&!~r.indexOf(f);f=t(f))Object.getOwnPropertyNames(f).forEach((r=>n[r]=()=>e[r]));return n.default=()=>e,i.d(a,n),a},i.d=(e,r)=>{for(var t in r)i.o(r,t)&&!i.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((r,t)=>(i.f[t](e,r),r)),[])),i.u=e=>"assets/js/"+({53:"935f2afb",63:"29c141da",68:"661574c4",85:"1f391b9e",120:"ea63631f",154:"295b567d",195:"c4f5d8e4",319:"3871f368",414:"393be207",497:"fcff9033",514:"1be78505",583:"fafcb005",671:"0e384e19",870:"608d5641",918:"17896441"}[e]||e)+"."+{53:"3da0e327",63:"2db64c9d",68:"aa977f16",85:"5ad9d53b",120:"6bc40b69",154:"92a4f825",195:"02db2b7a",319:"cc818fb0",414:"1217c35c",497:"48843454",514:"aaafd0fa",545:"f99f85d5",583:"1caa17a9",608:"d9b34e30",671:"39aaae4f",870:"137e7899",918:"1b0ec37f"}[e]+".js",i.miniCssF=e=>{},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),o={},a="react-number-format:",i.l=(e,r,t,n)=>{if(o[e])o[e].push(r);else{var f,c;if(void 0!==t)for(var u=document.getElementsByTagName("script"),d=0;d{f.onerror=f.onload=null,clearTimeout(b);var a=o[e];if(delete o[e],f.parentNode&&f.parentNode.removeChild(f),a&&a.forEach((e=>e(t))),r)return r(t)},b=setTimeout(s.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=s.bind(null,f.onerror),f.onload=s.bind(null,f.onload),c&&document.head.appendChild(f)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="/react-number-format/",i.gca=function(e){return e={17896441:"918","935f2afb":"53","29c141da":"63","661574c4":"68","1f391b9e":"85",ea63631f:"120","295b567d":"154",c4f5d8e4:"195","3871f368":"319","393be207":"414",fcff9033:"497","1be78505":"514",fafcb005:"583","0e384e19":"671","608d5641":"870"}[e]||e,i.p+i.u(e)},(()=>{var e={303:0,532:0};i.f.j=(r,t)=>{var o=i.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else if(/^(303|532)$/.test(r))e[r]=0;else{var a=new Promise(((t,a)=>o=e[r]=[t,a]));t.push(o[2]=a);var n=i.p+i.u(r),f=new Error;i.l(n,(t=>{if(i.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var a=t&&("load"===t.type?"missing":t.type),n=t&&t.target&&t.target.src;f.message="Loading chunk "+r+" failed.\n("+a+": "+n+")",f.name="ChunkLoadError",f.type=a,f.request=n,o[1](f)}}),"chunk-"+r,r)}},i.O.j=r=>0===e[r];var r=(r,t)=>{var o,a,[n,f,c]=t,u=0;if(n.some((r=>0!==e[r]))){for(o in f)i.o(f,o)&&(i.m[o]=f[o]);if(c)var d=c(i)}for(r&&r(t);u Customization | React Number format - +
-

Customization

Concept

React Number Format v5 is a complete rewrite with a goal of keeping it fully customizable to support all the custom case different product can have.

The primary thing which react number format controls is apply formatting in place (in the input) while managing correct caret position. It tries to understand what user is trying to do, add number, cut/paste, delete, and manage cursor position accordingly.

At the core of React number format lies NumberFormatBase, which works on three main props controlled from parent.

  • format (numStr: string) => string: A format function which can turn any numeric string to a formatted string.
  • removeFormatting (formattedStr: string) => string: A function to removing formatting from a formatted string and return numeric string.
  • getCaretBoundary (formattedStr: string) => boolean[]: A function given a formatted string, returns boundaries of valid cursor position. basically an array of boolean, where index of specify caret position. true at a index signifies user can put their caret at the position, false means the caret position is not allowed and the caret will move to closet allowed position.

Most of the time you don't have to define getCaretBoundary, as the default one is enough, but in case you need to define, it looks something like this.

function caretUnknownFormatBoundary(formattedValue) {
const boundaryAry = Array.from({ length: formattedValue.length + 1 }).map(() => true);

for (let i = 0, ln = boundaryAry.length; i < ln; i++) {
// consider caret to be in boundary if it is before or after numeric value
boundaryAry[i] = Boolean(
formattedValue[i].match(/\d/) || formattedValue[i - 1].match(/\d/);,
);
}

return boundaryAry;
}

There are few more props to handle some corner case.

  • isValidInputCharacter (char: sting) => boolean: A function to tell if a character in the formatted value is a valid typeable character. You don't need to pass it most of the time, as it defaults numeric characters (0-9). But case like additional character is allowed to type, for example decimal separator in currency format.
  • isCharacterSame (compareProps: CompareProps) => boolean: Some time we would like to allow user pressing different key and that being interpreted as different key like custom numerals, or letting user press . for decimal separator when custom decimalSeparator is provided. In such case we need to inform the library that the two characters are same.
type CompareProps = {
currentValue: string, // current value in the input, before applying any formatting
lastValue: string, // last formatted value
formattedValue: string, // current formatted value.
currentValueIndex: number, // character index in currentValue which we are comparing
formattedValueIndex: number, // character index in formattedValue which we are comparing
};

Check the usage in custom numeral example.

Apart from this prop some key handling are required depending on use case which can be done using native events, onKeyDown/onKeyUp etc.

Examples

To give an example a basic implementation of number formatting if we have simple use case to format number without decimals and negative number support.

Intl.NumberFormat based formatting

import { NumberFormatBase } from 'react-number-format';

function MyCustomNumberFormat(props) {
const format = (numStr) => {
if (numStr === '') return '';
return new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
maximumFractionDigits: 0,
}).format(numStr);
};

return <NumberFormatBase {...props} format={format} />;
}
Demo

Another example of card expiry field.

Card expiry field

import { NumberFormatBase } from 'react-number-format';

function CardExpiry(props) {
const format = (val) => {
if (val === '') return '';
let month = val.substring(0, 2);
const year = val.substring(2, 4);

if (month.length === 1 && month[0] > 1) {
month = `0${month[0]}`;
} else if (month.length === 2) {
// set the lower and upper boundary
if (Number(month) === 0) {
month = `01`;
} else if (Number(month) > 12) {
month = '12';
}
}

return `${month}/${year}`;
};

const onKeyDown = (e) => {
const { target } = e;
const { value, selectionStart } = target;
console.log(value);
if (e.key === '/' && value[selectionStart] === '/') {
// if there is number before slash with just one character add 0 prefix
if (value.split('/')[0].length === 1) {
target.value = `0${value}`;
target.selectionStart++;
}

target.selectionStart++;
e.preventDefault();
}
};

return <NumberFormatBase {...props} format={format} onKeyDown={onKeyDown} />;
}
Demo

A couple of time we want to get all the features of NumericFormat or PatterFormat, and apply some customization on top of it. Well NumberFormat allows to do that as well. It provides +

Customization

Concept

React Number Format v5 is a complete rewrite with a goal of keeping it fully customizable to support all the custom case different product can have.

The primary thing which react number format controls is apply formatting in place (in the input) while managing correct caret position. It tries to understand what user is trying to do, add number, cut/paste, delete, and manage cursor position accordingly.

At the core of React number format lies NumberFormatBase, which works on three main props controlled from parent.

  • format (numStr: string) => string: A format function which can turn any numeric string to a formatted string.
  • removeFormatting (formattedStr: string) => string: A function to removing formatting from a formatted string and return numeric string.
  • getCaretBoundary (formattedStr: string) => boolean[]: A function given a formatted string, returns boundaries of valid cursor position. basically an array of boolean, where index of specify caret position. true at a index signifies user can put their caret at the position, false means the caret position is not allowed and the caret will move to closet allowed position.

Most of the time you don't have to define getCaretBoundary, as the default one is enough, but in case you need to define, it looks something like this.

function caretUnknownFormatBoundary(formattedValue) {
const boundaryAry = Array.from({ length: formattedValue.length + 1 }).map(() => true);

for (let i = 0, ln = boundaryAry.length; i < ln; i++) {
// consider caret to be in boundary if it is before or after numeric value
boundaryAry[i] = Boolean(
formattedValue[i].match(/\d/) || formattedValue[i - 1].match(/\d/);,
);
}

return boundaryAry;
}

There are few more props to handle some corner case.

  • isValidInputCharacter (char: sting) => boolean: A function to tell if a character in the formatted value is a valid typeable character. You don't need to pass it most of the time, as it defaults numeric characters (0-9). But case like additional character is allowed to type, for example decimal separator in currency format.
  • isCharacterSame (compareProps: CompareProps) => boolean: Some time we would like to allow user pressing different key and that being interpreted as different key like custom numerals, or letting user press . for decimal separator when custom decimalSeparator is provided. In such case we need to inform the library that the two characters are same.
type CompareProps = {
currentValue: string, // current value in the input, before applying any formatting
lastValue: string, // last formatted value
formattedValue: string, // current formatted value.
currentValueIndex: number, // character index in currentValue which we are comparing
formattedValueIndex: number, // character index in formattedValue which we are comparing
};

Check the usage in custom numeral example.

Apart from this prop some key handling are required depending on use case which can be done using native events, onKeyDown/onKeyUp etc.

Examples

To give an example a basic implementation of number formatting if we have simple use case to format number without decimals and negative number support.

Intl.NumberFormat based formatting

import { NumberFormatBase } from 'react-number-format';

function MyCustomNumberFormat(props) {
const format = (numStr) => {
if (numStr === '') return '';
return new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
maximumFractionDigits: 0,
}).format(numStr);
};

return <NumberFormatBase {...props} format={format} />;
}
Demo

Another example of card expiry field.

Card expiry field

import { NumberFormatBase } from 'react-number-format';

function CardExpiry(props) {
const format = (val) => {
if (val === '') return '';
let month = val.substring(0, 2);
const year = val.substring(2, 4);

if (month.length === 1 && month[0] > 1) {
month = `0${month[0]}`;
} else if (month.length === 2) {
// set the lower and upper boundary
if (Number(month) === 0) {
month = `01`;
} else if (Number(month) > 12) {
month = '12';
}
}

return `${month}/${year}`;
};

const onKeyDown = (e) => {
const { target } = e;
const { value, selectionStart } = target;
console.log(value);
if (e.key === '/' && value[selectionStart] === '/') {
// if there is number before slash with just one character add 0 prefix
if (value.split('/')[0].length === 1) {
target.value = `0${value}`;
target.selectionStart++;
}

target.selectionStart++;
e.preventDefault();
}
};

return <NumberFormatBase {...props} format={format} onKeyDown={onKeyDown} />;
}
Demo

A couple of time we want to get all the features of NumericFormat or PatternFormat, and apply some customization on top of it. Well NumberFormat allows to do that as well. It provides usePatternFormat and useNumericFormat hook which can be used in conjunction with NumberFormatBase.

Let's take the same example of Card Expiry field.

Card expiry field with usePatternFormat

function CardExpiry(props) {
/**
* usePatternFormat, returns all the props required for NumberFormatBase
* which we can extend in between
*/
const { format, ...rest } = usePatternFormat({ ...props, format: '##/##' });

const _format = (val) => {
let month = val.substring(0, 2);
const year = val.substring(2, 4);

if (month.length === 1 && month[0] > 1) {
month = `0${month[0]}`;
} else if (month.length === 2) {
// set the lower and upper boundary
if (Number(month) === 0) {
month = `01`;
} else if (Number(month) > 12) {
month = '12';
}
}

return format(`${month}${year}`);
};

return <NumberFormatBase format={_format} {...rest} />;
}
Demo

Another example for NumericFormat could be support for custom numerals.

Custom numeral example

const persianNumeral = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];

function CustomNumeralNumericFormat(props) {
const { format, removeFormatting, isCharacterSame, ...rest } = useNumericFormat(props);

const _format = (val) => {
const _val = format(val);

return _val.replace(/\d/g, ($1) => persianNumeral[Number($1)]);
};

const _removeFormatting = (val) => {
const _val = val.replace(new RegExp(persianNumeral.join('|'), 'g'), ($1) =>
persianNumeral.indexOf($1),
);

return removeFormatting(_val);
};

const _isCharacterSame = (compareMeta) => {
const isCharSame = isCharacterSame(compareMeta);
const { formattedValue, currentValue, formattedValueIndex, currentValueIndex } = compareMeta;
const curChar = currentValue[currentValueIndex];
const newChar = formattedValue[formattedValueIndex];
const curPersianChar = persianNumeral[Number(curChar)] ?? curChar;
const newPersianChar = persianNumeral[Number(newChar)] ?? newChar;

return isCharSame || curPersianChar === newPersianChar;
};

return (
<NumberFormatBase
format={_format}
removeFormatting={_removeFormatting}
isCharacterSame={_isCharacterSame}
{...rest}
/>
);
}
Demo

AllowEmptyFormatting on NumericFormat

Currently allowEmptyFormatting is only available on the pattern lock, while it isn't a common usecase in NumericFormat, you still might want that behavior, you can achieve it like following.

function CustomNumberFormat(props) {
const { prefix = '', suffix = '', allowEmptyFormatting } = props;
const { format, ...numberFormatBaseProps } = useNumericFormat(props);
const _format = (numStr, props) => {
const formattedValue = format(numStr, props);
return allowEmptyFormatting && formattedValue === '' ? prefix + suffix : formattedValue;
};

return <NumberFormatBase {...numberFormatBaseProps} format={_format} />;
}
Demo

Using parentheses to express negative numbers

In some financial application we may want to express negative numbers enclosed with parentheses ($111,222) as opposed to negative sign ahead of the number -$111,222. This can be implemented outside of the lib since v5.

const NEGATION_FORMAT_REGEX = /^\((.*)\)$/;

function extractNegationAndNumber(value) {
let hasNegation = false;
if (typeof value === 'number') {
hasNegation = value < 0;
value = hasNegation ? value * -1 : value;
} else if (value?.[0] === '-') {
hasNegation = true;
value = value.substring(1);
} else if (value?.match(NEGATION_FORMAT_REGEX)) {
hasNegation = true;
value = value.replace(NEGATION_FORMAT_REGEX, '$1');
}

return { hasNegation, value };
}

function CustomNegationNumberFormat({
prefix = '',
suffix = '',
value,
defaultValue,
onValueChange,
...restProps
}) {
const [hasNegation, toggleNegation] = useState(
extractNegationAndNumber(value ?? defaultValue).hasNegation,
);
const [internalValue, setInternalValue] = useState(
extractNegationAndNumber(value ?? defaultValue).value,
);
useEffect(() => {
const { hasNegation, value: internalValue } = extractNegationAndNumber(value);
setInternalValue(internalValue);
toggleNegation(hasNegation);
}, [value]);

const _onValueChange = (values, sourceInfo) => {
if (!onValueChange) return;

const { formattedValue, value, floatValue } = values;
onValueChange(
{
formattedValue,
value: hasNegation ? `-${value}` : value,
floatValue: hasNegation && !isNaN(floatValue) ? -floatValue : floatValue,
},
sourceInfo,
);
};

const props = {
prefix: hasNegation ? '(' + prefix : prefix,
suffix: hasNegation ? suffix + ')' : suffix,
// as we are controlling the negation logic outside, we don't want numeric format to handle this
allowNegative: false,
value: internalValue,
onValueChange: _onValueChange,
...restProps,
};
const { format, onKeyDown, ...numberFormatBaseProps } = useNumericFormat(props);

const _format = (numStr) => {
const formattedValue = format(numStr, props);
// if negation is present we need to always show negation with prefix and suffix even if value is empty
return formattedValue === '' && hasNegation ? props.prefix + props.suffix : formattedValue;
};

const _onKeyDown = (e) => {
const el = e.target;
const { key } = e;
const { selectionStart, selectionEnd, value = '' } = el;

// if every thing is selected and deleted remove the negation as well
if (selectionStart !== selectionEnd) {
// if multiple characters are selected and user hits backspace, no need to handle anything manually
onKeyDown(e);
return;
}

// if user is pressing '-' we want to change it to '()', so mark there is negation in the number
if (key === '-') {
toggleNegation((hasNegation) => !hasNegation);
e.preventDefault();
return;
}

if (key === 'Backspace' && value[0] === '(' && selectionStart === props.prefix.length) {
toggleNegation(false);
e.preventDefault();
return;
}

onKeyDown(e);
};

return <NumberFormatBase {...numberFormatBaseProps} onKeyDown={_onKeyDown} format={_format} />;
}
Demo

IBAN account input field with pattern

In order to enter IBAN (International Bank Account Number) accounts into an input field the field requires specific pattern (quartets of characters/digits) and should allow typing in digits and letters which get converted to uppercase. Each country has a predefined format of the IBAN value which defines which the correct sequence of letters and digits. These formats are beyond this example and can be checked in libraries that validate IBAN accounts.

(Example code is written in Typescript)

interface IBANInputProps extends NumberFormatBaseProps {
onChange: ChangeEventHandler<HTMLInputElement>;
}

const IBANInputDef: FunctionComponent<IBANInputProps> = ({ onChange, ...props }) => (
<NumberFormatBase
{...props}
type="text"
format={(value) =>
value
.replace(/\s+/g, '')
.replace(/([a-z0-9]{4})/gi, '$1 ')
.trim()
.toLocaleUpperCase()
}
removeFormatting={(value) => value.replace(/\s+/gi, '')}
isValidInputCharacter={(char) => /^[a-z0-9]$/i.test(char)}
getCaretBoundary={(value) =>
Array(value.length + 1)
.fill(0)
.map((v) => true)
}
onValueChange={(values, { event }) =>
onChange(
Object.assign({} as ChangeEvent<HTMLInputElement>, event, {
target: { name: props.name, value: values.value.toLocaleUpperCase() },
}),
)
}
onKeyDown={(e) =>
!/^(?:[a-z0-9]|Backspace|Delete|Home|End|ArrowLeft|ArrowRight|Shift|CapsLock|Control|NumLock|Tab|Paste|Redo|Undo)$/i.test(
e.key,
) && e.preventDefault()
}
/>
);

const IBANInput = forwardRef<HTMLInputElement, IBANInputProps>((props, ref) => (
<IBANInputDef {...props} getInputRef={ref} />
));
Demo
- + \ No newline at end of file diff --git a/docs/intro/index.html b/docs/intro/index.html index 16c48ea..6059739 100644 --- a/docs/intro/index.html +++ b/docs/intro/index.html @@ -5,13 +5,13 @@ Getting started | React Number format - +

Getting started

React Number Format is an input-formatter library with a sophisticated and light weight caret engine. It ensures that a user can only enter text that meets specific numeric or string patterns, and formats the input value for display.

Features

  1. Prefix, suffix and thousands separator.
  2. Input Masking.
  3. Format number in an input or format as a simple text.
  4. Custom pattern formatting.
  5. Custom formatting handler.
  6. Fully customizable

Demos

See the many DEMO sections in the documentation.

Install

npm

Using npm

npm install react-number-format

Using yarn

yarn add react-number-format

ES6

Numeric Format

import { NumericFormat } from 'react-number-format';

Pattern Format

import { PatternFormat } from 'react-number-format';
- + \ No newline at end of file diff --git a/docs/migration/index.html b/docs/migration/index.html index 1694b40..622e8dd 100644 --- a/docs/migration/index.html +++ b/docs/migration/index.html @@ -5,14 +5,14 @@ Migration guide | React Number format - +

Migration guide

NumberFormat -> NumericFormat and PatternFormat

The whole NumberFormat module is divided into smaller modules.

This changes from

import NumberFormat from 'react-number-format';

to

import { NumericFormat } from 'react-number-format';

\\ or

import { PatternFormat } from 'react-number-format';
  1. NumericFormat for Number based formatting like currency inputs.
  2. PatternFormat for Pattern based formatting like card numbers, phone number inputs.

It also provide lower level units allowing better customization. See Customization Docs

isNumericString -> valueIsNumericString

Number format modules need to know if the passed value is a formatting string or string representation of number to be able to properly separate format characters and numbers.

isNumericString prop was confusing and wasn't explaining what is numeric string. The prop is now renamed to more verbose name valueIsNumericString.

Function values for format and removeFormatting are handled in NumberFormatBase.

The ability to use a custom formatting function has been extracted to a base customizable module. NumberFormatBase for custom formatter based formatting.

import { NumberFormatBase} from "react-number-format";

customNumerals Array<string>

Removed

This is removed in v5.

See custom numeral implementation with v5 https://s-yadav.github.io/react-number-format/docs/customization#custom-numeral-example


- + \ No newline at end of file diff --git a/docs/numeric_format/index.html b/docs/numeric_format/index.html index 5962365..45e21ab 100644 --- a/docs/numeric_format/index.html +++ b/docs/numeric_format/index.html @@ -5,7 +5,7 @@ Numeric Format | React Number format - + @@ -13,7 +13,7 @@

Props

allowLeadingZeros boolean

default: false

This allows enabling or disabling leading zeros in the input field. By default, on blur of an input, leading zeros are removed. To allow leading 0s in the input field, set allowLeadingZeros to true. This does not, however, control trailing zeros.

import { NumericFormat } from 'react-number-format';

<NumericFormat value="20020220" allowLeadingZeros thousandSeparator="," />;
Demo

allowNegative boolean

default: true

If set to false, negative numbers will not be allowed

import { NumericFormat } from 'react-number-format';

<NumericFormat value="-12" allowNegative />;
Demo

allowedDecimalSeparators Array<string>

default: undefined

Characters which when pressed result in a decimal separator. When missing, decimal separator and '.' are used.

import { NumericFormat } from 'react-number-format';

<NumericFormat value="12" allowedDecimalSeparators={['%']} />;
Demo

customInput React.Component<any>

default: null

This allow supporting custom input components with number format.

import { NumericFormat } from 'react-number-format';
import { TextField } from '@mui/material';

<NumericFormat value={12323} customInput={TextField} thousandSeparator />;
Demo

decimalScale number

default: undefined

If defined, it limits the number of digits after the decimal point.

import { NumericFormat } from 'react-number-format';

<NumericFormat value={12323.3334} decimalScale={3} />;
Demo

decimalSeparator string

default: '.'

Defines the decimal character.

import { NumericFormat } from 'react-number-format';

<NumericFormat value={12323.3333} decimalSeparator="," />;
Demo

fixedDecimalScale boolean

default: false

If set to true, it adds trailing 0s after decimalSeparator to match given decimalScale.

import { NumericFormat } from 'react-number-format';

<NumericFormat value={12323.1} decimalScale={3} fixedDecimalScale />;
Demo

prefix string

default:undefined

Adds the prefix character before the input value.

import { NumericFormat } from 'react-number-format';

<NumericFormat value={1234} prefix={'$'} />;
Demo

suffix string

default: undefined

Adds the suffix after the input value

import { NumericFormat } from 'react-number-format';

<NumericFormat value={123} suffix={'/ -'} />;
Demo

thousandsGroupStyle string

default: ,

Defines the thousand grouping style.

info

Supported types. thousand style (thousand) : 123,456,789, indian style (lakh) : 12,34,56,789, chinese style (wan) : 1,2345,6789.

import { NumericFormat } from 'react-number-format';

<NumericFormat type="text" value={1231231} thousandsGroupStyle="lakh" thousandSeparator="," />;
Demo

Common Props

Other than this it accepts all the props which can be given to a input or span based on displayType you selected.

Other exports

With v5.0 we expose some more utils/hooks which can be used for customization or other utilities

numericFormatter (numString: string, props: NumericFormatProps) => string

In some places we need to just format the number before we pass it down as value, or in general just to render it. In such cases numericFormatter can be used directly.

Parameters

1st. numString(non formatted number string)

2nd. props (the format props applicable on numeric format)

Return formattedString returns the formatted number.

removeNumericFormat (inputValue: string, changeMeta: ChangeMeta, props: NumericFormatProps) => string

Most of the time you might not need this, but in some customization case you might wan't to write a patched version on top of removeNumericFormat.

However for customization case its recommended to use useNumericFormat and patch the methods it returns, as lot of other handling is done in the hook.

Parameters

1st. inputValue: the value after user has typed, this will be formatted value with the additional character typed by user.

2nd. changeMeta: This is the change information rnf sends internally, its basically the change information from the last formatted value and the current typed input value.

The type is following

{
from: {start: number, end: number},
to: {start: number, end: number},
lastValue: string
}

3rd. props: all the numeric format props

Return numString returns the number in string format.

getNumericCaretBoundary (formattedValue: string, props: NumericFormatProps) => Array<boolean>

This method returns information about what all position in formatted value where caret can be places, it returns n+1 length array of booleans(where n is the length of formattedValue).

Most of time you don't need this, but in case if you very specific usecase you can patch the function to handle your case.

See more details on Concept

useNumericFormat: (props: NumericFormatProps) => NumberFormatBaseProps

The whole numeric format logic is inside useNumericFormat hook, this returns all the required props which can be passed to NumberFormatBase. For customization you can use to patch methods returned by useNumericFormat and pass to NumberFormatBase.

See more details in Customization

- + \ No newline at end of file diff --git a/docs/pattern_format/index.html b/docs/pattern_format/index.html index 009dddf..0f8ee96 100644 --- a/docs/pattern_format/index.html +++ b/docs/pattern_format/index.html @@ -5,7 +5,7 @@ Pattern Format | React Number format - + @@ -13,7 +13,7 @@

Props

allowEmptyFormatting boolean

default: false

By default PatternFormat component does not apply formatting when value is empty (null, undefined or ‘’). If you want to apply formatting on empty values set allowEmptyFormatting to true.

import { PatternFormat } from 'react-number-format';

<PatternFormat format="+1 (###) #### ###" allowEmptyFormatting mask="_" />;
Demo

format string

default: undefined

It defines the format pattern using the # (or a patternChar ) character. # is the placeholder character for numbers.

import { PatternFormat } from 'react-number-format';

<PatternFormat value={123123} format="### ###" />;
Demo

mask string | Array<string>

default: undefined

Used as mask character for numeric places, until any numeric character is provided for that position. You can provide different mask characters for every numeric positions by passing array of mask characters. Note: The length of mask characters should match the numbers of # patternChar.

import { PatternFormat } from 'react-number-format';

<PatternFormat value="411111" valueIsNumericString format="#### #### #### ####" mask="_" />;
Demo

patternChar string

default: #

This helps define the format pattern character.

import { PatternFormat } from 'react-number-format';

<PatternFormat format="%% (%%%)" patternChar="%" value={23456} />;
Demo

Common Props

Other than this it accepts all the props which can be given to a input or span based on displayType you selected.

Other exports

With v5.0 we expose some more utils/hooks which can be used for customization or other utilities

patternFormatter (numString: string, props: PatternFormatProps) => string

In some places we need to just format the number before we pass it down as value, or in general just to render it. In such cases patternFormatter can be used directly.

Parameters

1st. numString(non formatted number string)

2nd. props (the format props applicable on numeric format)

Return formattedString returns the formatted number.

removePatternFormat (inputValue: string, changeMeta: ChangeMeta, props: PatternFormatProps) => string

Most of the time you might not need this, but in some customization case you might wan't to write a patched version on top of removePatternFormat.

However for customization case its recommended to use usePatternFormat and patch the methods it returns, as lot of other handling is done in the hook.

Parameters

1st. inputValue: the value after user has typed, this will be formatted value with the additional character typed by user.

2nd. changeMeta: This is the change information rnf sends internally, its basically the change information from the last formatted value and the current typed input value.

The type is following

{
from: {start: number, end: number},
to: {start: number, end: number},
lastValue: string
}

3rd. props: all the numeric format props

Return numString returns the number in string format.

getPatternCaretBoundary (formattedValue: string, props: PatternFormatProps) => Array<boolean>

This method returns information about what all position in formatted value where caret can be places, it returns n+1 length array of booleans(where n is the length of formattedValue).

Most of time you don't need this, but in case if you very specific usecase you can patch the function to handle your case.

See more details on Concept

usePatternFormat: (props: PatternFormatProps) => NumberFormatBaseProps

The whole numeric format logic is inside usePatternFormat hook, this returns all the required props which can be passed to NumberFormatBase. For customization you can use to patch methods returned by usePatternFormat and pass to NumberFormatBase.

See more details in Customization

- + \ No newline at end of file diff --git a/docs/props/index.html b/docs/props/index.html index 623f206..df464e2 100644 --- a/docs/props/index.html +++ b/docs/props/index.html @@ -5,13 +5,13 @@ Props | React Number format - +

Common Props

customInput React.Component<any>

default: null

This allow supporting custom input components with number format.

import { NumericFormat } from 'react-number-format';
import { TextField } from '@mui/material';

<NumericFormat value={12323} customInput={TextField} thousandSeparator/>;

Note: customInput expects reference of component (not a render prop), if you pass an inline component like this <NumericFormat customInput={() => <TextField />} />, it will not work.

Demo

value number | string

default: undefined

This is the value for the input field. It can be a float number or a formatted string.

info

If the value passed is a string representation of the number and any of the format prop has number on it, the valueIsNumericString props should be passed as true. See valueIsNumericString for more details

import { NumericFormat } from 'react-number-format';

<NumericFormat value={123} />;
Demo

defaultValue number | string

default : undefined

Value to be used as default value if value is not provided.

import { NumericFormat } from 'react-number-format';

<NumericFormat defaultValue="12312" />;
Demo

displayType text | input

default: input

If value is input, it renders an input element where formatting happens as you type characters. If value is text, it renders formatted text in a span tag.

import { NumericFormat } from 'react-number-format';

<NumericFormat displayType="input" value={110} />;
<NumericFormat displayType="text" value={110} />;
Demo

getInputRef elm => void

default: null

Method to get reference of input, span (based on displayType prop) or the customInput's reference.

import { NumericFormat } from 'react-number-format';
import { useRef } from 'react';

export default function App() {
let ref = useRef();
return <NumericFormat getInputRef={ref} />;
}

isAllowed (values) => boolean

default: undefined

A checker function to validate the input value. If this function returns false, the onChange method will not get triggered and the input value will not change.

import { NumericFormat } from 'react-number-format';

const MAX_LIMIT = 1000;

<NumericFormat
value={11}
isAllowed={(values) => {
const { floatValue } = values;
return floatValue < MAX_LIMIT;
}}
/>;
Demo

valueIsNumericString boolean

default: false

If value is passed as string representation of numbers (unformatted) and thousandSeparator is . in numeric format or number is used in any format props like in prefix or suffix in numeric format and format prop in pattern format then this should be passed as true.

Note: Prior to 5.2.0 its was always required to be passed as true when value is passed as string representation of numbers (unformatted).

import { PatternFormat } from 'react-number-format';

<PatternFormat format="+1 (###) ###-####" value="123456789" valueIsNumericString={true} />;
Demo

onValueChange (values, sourceInfo) => {}

default: undefined

This handler provides access to any values changes in the input field and is triggered only when a prop changes or the user input changes. It provides two arguments namely the valueObject as the first and the sourceInfo as the second. The valueObject parameter contains the formattedValue, value and the floatValue of the given input field. The sourceInfo contains the event Object and a source key which indicates whether the triggered change is due to an event or a prop change. This is particularly useful in identify whether the change is user driven or is an uncontrolled change due to any prop value being updated.

info

If you are using values.value which is non formatted value as numeric string. Make sure to pass valueIsNumericString to be true if any of the format prop has number on it, or if thousandSeparator is . in NumericFormat . See valueIsNumericString for more details.

import { NumericFormat } from 'react-number-format';

<NumericFormat
value={1234}
prefix="$"
onValueChange={(values, sourceInfo) => {
console.log(values, sourceInfo);
}}
/>;
Demo

renderText (formattedValue, customProps) => React Element

default: undefined

A renderText method useful if you want to render formattedValue in different element other than span. It also returns the custom props that are added to the component which can allow passing down props to the rendered element.

import { NumericFormat } from 'react-number-format';

<NumericFormat
value={1231231}
thousandsGroupStyle="lakh"
thousandSeparator=","
displayType="text"
renderText={(value) => <b>{value}</b>}
/>;
Demo

type string

default: text

This allows passing the input type attribute value, Supported types include text | tel | password

import { NumericFormat } from 'react-number-format';

<NumericFormat value={123} type="text" />;
Demo

Other Props

Other than this it accepts all the props which can be given to a input or span based on displayType you selected.

- + \ No newline at end of file diff --git a/docs/quirks/index.html b/docs/quirks/index.html index fb79341..c991fc3 100644 --- a/docs/quirks/index.html +++ b/docs/quirks/index.html @@ -5,13 +5,13 @@ Notes & Quirks | React Number format - +

Notes & Quirks

Values object

values object is on following format

{
formattedValue: '$23,234,235.56', //value after applying formatting
value: '23234235.56', //non formatted value as numeric string 23234235.56, if you are setting this value to state make sure to pass valueIsNumericString prop to true
floatValue: 23234235.56 //floating point representation. For big numbers it can have exponential syntax
}

Its recommended to use formattedValue / value / floatValue based on the initial state (it should be same as the initial state format) which you are passing as value prop. If you are saving the value key on state and any of the format prop like prefix/suffix contains number make sure to pass valueIsNumericString prop to true.

Notes and quirks

  1. Value can be passed as string or number, but if it is passed as string it should be either formatted value or if it is a numeric string and any of the format prop like prefix/suffix contains number, you have to set valueIsNumericString props to true.

  2. Value as prop will be rounded to given decimal scale if format option is not provided.

  3. If you want to block floating number set decimalScale to 0.

  4. Use type as tel when you are providing format prop. This will change the mobile keyboard layout to have only numbers. In other case use type as text, so user can type decimal separator.

  5. onChange no longer gets values object. You need to use onValueChange instead. onChange/onFocus/onBlur and other input events will be directly passed to the input.

  6. Its recommended to use formattedValue / value / floatValue based on the initial state (it should be same as the initial state format) which you are passing as value prop. If you are saving the value key on state make sure to pass valueIsNumericString prop to true.

  7. onValueChange is not same as onChange. It gets called on whenever there is change in value which can be caused by any event like change or blur event or by a prop change. It also provides a second argument which contains the event object and the reason for this function trigger.

  8. minLength and maxLength prop of native input doesn't work as expected, as the formatting happens post the number is added on the input. You can achieve similar result using isAllowed prop.

Related issue: https://github.com/s-yadav/react-number-format/issues/758

SourceInfo object

The sourceInfo object indicates whether the triggered change is due to an event or a prop change. This is particularly useful in identify whether the change is user driven or is an uncontrolled change due to any prop value being updated.

{
event: SyntheticEvent; // This is the event object of type Synthetic Event
source: 'event' | 'prop'; // Source information indicating whether it is due to an event or a prop change
}
- + \ No newline at end of file diff --git a/index.html b/index.html index 55872fe..d3bc89c 100644 --- a/index.html +++ b/index.html @@ -5,13 +5,13 @@ Hello from React Number format | React Number format - +

React Number format

React component to format numbers in an input or as a text.

Features

Prefix, suffix and thousand separator.

Custom format pattern.

Masking.

Custom formatting handler.

Format number in an input or format as a simple text.

Fully customizable.

- + \ No newline at end of file diff --git a/markdown-page/index.html b/markdown-page/index.html index cedc8f3..50fe24c 100644 --- a/markdown-page/index.html +++ b/markdown-page/index.html @@ -5,13 +5,13 @@ Markdown page example | React Number format - +

Markdown page example

You don't need React to write simple standalone pages.

- + \ No newline at end of file diff --git a/search-index-docs-default-current.json b/search-index-docs-default-current.json index 415f0a1..b05ec8f 100644 --- a/search-index-docs-default-current.json +++ b/search-index-docs-default-current.json @@ -1 +1 @@ -{"documents":[{"id":21,"pageTitle":"Customization","sectionTitle":"Customization","sectionRoute":"/react-number-format/docs/customization","type":"docs"},{"id":22,"pageTitle":"Customization","sectionTitle":"Concept","sectionRoute":"/react-number-format/docs/customization#concept","type":"docs"},{"id":23,"pageTitle":"Customization","sectionTitle":"Examples","sectionRoute":"/react-number-format/docs/customization#examples","type":"docs"},{"id":24,"pageTitle":"Customization","sectionTitle":"Intl.NumberFormat based formatting","sectionRoute":"/react-number-format/docs/customization#intlnumberformat-based-formatting","type":"docs"},{"id":25,"pageTitle":"Customization","sectionTitle":"Card expiry field","sectionRoute":"/react-number-format/docs/customization#card-expiry-field","type":"docs"},{"id":26,"pageTitle":"Customization","sectionTitle":"Card expiry field with usePatternFormat","sectionRoute":"/react-number-format/docs/customization#card-expiry-field-with-usepatternformat","type":"docs"},{"id":27,"pageTitle":"Customization","sectionTitle":"Custom numeral example","sectionRoute":"/react-number-format/docs/customization#custom-numeral-example","type":"docs"},{"id":28,"pageTitle":"Customization","sectionTitle":"AllowEmptyFormatting on NumericFormat","sectionRoute":"/react-number-format/docs/customization#allowemptyformatting-on-numericformat","type":"docs"},{"id":29,"pageTitle":"Customization","sectionTitle":"Using parentheses to express negative numbers","sectionRoute":"/react-number-format/docs/customization#using-parentheses-to-express-negative-numbers","type":"docs"},{"id":30,"pageTitle":"Customization","sectionTitle":"IBAN account input field with pattern","sectionRoute":"/react-number-format/docs/customization#iban-account-input-field-with-pattern","type":"docs"},{"id":13,"pageTitle":"","sectionTitle":"Getting started","sectionRoute":"/react-number-format/docs/intro","type":"docs"},{"id":14,"pageTitle":"","sectionTitle":"Features","sectionRoute":"/react-number-format/docs/intro#features","type":"docs"},{"id":15,"pageTitle":"","sectionTitle":"Demos","sectionRoute":"/react-number-format/docs/intro#demos","type":"docs"},{"id":16,"pageTitle":"","sectionTitle":"Install","sectionRoute":"/react-number-format/docs/intro#install","type":"docs"},{"id":59,"pageTitle":"","sectionTitle":"Migration guide","sectionRoute":"/react-number-format/docs/migration","type":"docs"},{"id":60,"pageTitle":"","sectionTitle":"NumberFormat -> NumericFormat and PatternFormat","sectionRoute":"/react-number-format/docs/migration#numberformat---numericformat-and-patternformat","type":"docs"},{"id":61,"pageTitle":"","sectionTitle":"isNumericString -> valueIsNumericString","sectionRoute":"/react-number-format/docs/migration#isnumericstring---valueisnumericstring","type":"docs"},{"id":62,"pageTitle":"","sectionTitle":"Function values for format and removeFormatting are handled in NumberFormatBase.","sectionRoute":"/react-number-format/docs/migration#function-values-for-format-and-removeformatting-are-handled-in-numberformatbase","type":"docs"},{"id":63,"pageTitle":"","sectionTitle":"customNumerals Array","sectionRoute":"/react-number-format/docs/migration#customnumerals-arraystring","type":"docs"},{"id":31,"pageTitle":"","sectionTitle":"Props","sectionRoute":"/react-number-format/docs/numeric_format","type":"docs"},{"id":32,"pageTitle":"","sectionTitle":"allowLeadingZeros boolean","sectionRoute":"/react-number-format/docs/numeric_format#allowleadingzeros-boolean","type":"docs"},{"id":33,"pageTitle":"","sectionTitle":"allowNegative boolean","sectionRoute":"/react-number-format/docs/numeric_format#allownegative-boolean","type":"docs"},{"id":34,"pageTitle":"","sectionTitle":"allowedDecimalSeparators Array","sectionRoute":"/react-number-format/docs/numeric_format#alloweddecimalseparators-arraystring","type":"docs"},{"id":35,"pageTitle":"","sectionTitle":"customInput React.Component","sectionRoute":"/react-number-format/docs/numeric_format#custominput-reactcomponentany","type":"docs"},{"id":36,"pageTitle":"","sectionTitle":"decimalScale number","sectionRoute":"/react-number-format/docs/numeric_format#decimalscale-number","type":"docs"},{"id":37,"pageTitle":"","sectionTitle":"decimalSeparator string","sectionRoute":"/react-number-format/docs/numeric_format#decimalseparator-string","type":"docs"},{"id":38,"pageTitle":"","sectionTitle":"fixedDecimalScale boolean","sectionRoute":"/react-number-format/docs/numeric_format#fixeddecimalscale-boolean","type":"docs"},{"id":39,"pageTitle":"","sectionTitle":"prefix string","sectionRoute":"/react-number-format/docs/numeric_format#prefix-string","type":"docs"},{"id":40,"pageTitle":"","sectionTitle":"suffix string","sectionRoute":"/react-number-format/docs/numeric_format#suffix-string","type":"docs"},{"id":41,"pageTitle":"","sectionTitle":"thousandsGroupStyle string","sectionRoute":"/react-number-format/docs/numeric_format#thousandsgroupstyle-string","type":"docs"},{"id":42,"pageTitle":"","sectionTitle":"Common Props","sectionRoute":"/react-number-format/docs/numeric_format#common-props","type":"docs"},{"id":43,"pageTitle":"","sectionTitle":"Other exports","sectionRoute":"/react-number-format/docs/numeric_format#other-exports","type":"docs"},{"id":44,"pageTitle":"","sectionTitle":"numericFormatter (numString: string, props: NumericFormatProps) => string","sectionRoute":"/react-number-format/docs/numeric_format#numericformatter-numstring-string-props-numericformatprops--string","type":"docs"},{"id":45,"pageTitle":"","sectionTitle":"removeNumericFormat (inputValue: string, changeMeta: ChangeMeta, props: NumericFormatProps) => string","sectionRoute":"/react-number-format/docs/numeric_format#removenumericformat-inputvalue-string-changemeta-changemeta-props-numericformatprops--string","type":"docs"},{"id":46,"pageTitle":"","sectionTitle":"getNumericCaretBoundary (formattedValue: string, props: NumericFormatProps) => Array","sectionRoute":"/react-number-format/docs/numeric_format#getnumericcaretboundary-formattedvalue-string-props-numericformatprops--arrayboolean","type":"docs"},{"id":47,"pageTitle":"","sectionTitle":"useNumericFormat: (props: NumericFormatProps) => NumberFormatBaseProps","sectionRoute":"/react-number-format/docs/numeric_format#usenumericformat-props-numericformatprops--numberformatbaseprops","type":"docs"},{"id":48,"pageTitle":"","sectionTitle":"Props","sectionRoute":"/react-number-format/docs/pattern_format","type":"docs"},{"id":49,"pageTitle":"","sectionTitle":"allowEmptyFormatting boolean","sectionRoute":"/react-number-format/docs/pattern_format#allowemptyformatting-boolean","type":"docs"},{"id":50,"pageTitle":"","sectionTitle":"format string","sectionRoute":"/react-number-format/docs/pattern_format#format-string","type":"docs"},{"id":51,"pageTitle":"","sectionTitle":"mask string | Array","sectionRoute":"/react-number-format/docs/pattern_format#mask-string--arraystring","type":"docs"},{"id":52,"pageTitle":"","sectionTitle":"patternChar string","sectionRoute":"/react-number-format/docs/pattern_format#patternchar-string","type":"docs"},{"id":53,"pageTitle":"","sectionTitle":"Common Props","sectionRoute":"/react-number-format/docs/pattern_format#common-props","type":"docs"},{"id":54,"pageTitle":"","sectionTitle":"Other exports","sectionRoute":"/react-number-format/docs/pattern_format#other-exports","type":"docs"},{"id":55,"pageTitle":"","sectionTitle":"patternFormatter (numString: string, props: PatternFormatProps) => string","sectionRoute":"/react-number-format/docs/pattern_format#patternformatter-numstring-string-props-patternformatprops--string","type":"docs"},{"id":56,"pageTitle":"","sectionTitle":"removePatternFormat (inputValue: string, changeMeta: ChangeMeta, props: PatternFormatProps) => string","sectionRoute":"/react-number-format/docs/pattern_format#removepatternformat-inputvalue-string-changemeta-changemeta-props-patternformatprops--string","type":"docs"},{"id":57,"pageTitle":"","sectionTitle":"getPatternCaretBoundary (formattedValue: string, props: PatternFormatProps) => Array","sectionRoute":"/react-number-format/docs/pattern_format#getpatterncaretboundary-formattedvalue-string-props-patternformatprops--arrayboolean","type":"docs"},{"id":58,"pageTitle":"","sectionTitle":"usePatternFormat: (props: PatternFormatProps) => NumberFormatBaseProps","sectionRoute":"/react-number-format/docs/pattern_format#usepatternformat-props-patternformatprops--numberformatbaseprops","type":"docs"},{"id":1,"pageTitle":"","sectionTitle":"Common Props","sectionRoute":"/react-number-format/docs/props","type":"docs"},{"id":2,"pageTitle":"","sectionTitle":"customInput React.Component","sectionRoute":"/react-number-format/docs/props#custominput-reactcomponentany","type":"docs"},{"id":3,"pageTitle":"","sectionTitle":"value number | string","sectionRoute":"/react-number-format/docs/props#value-number--string","type":"docs"},{"id":4,"pageTitle":"","sectionTitle":"defaultValue number | string","sectionRoute":"/react-number-format/docs/props#defaultvalue-number--string","type":"docs"},{"id":5,"pageTitle":"","sectionTitle":"displayType text | input","sectionRoute":"/react-number-format/docs/props#displaytype-text--input","type":"docs"},{"id":6,"pageTitle":"","sectionTitle":"getInputRef elm => void","sectionRoute":"/react-number-format/docs/props#getinputref-elm--void","type":"docs"},{"id":7,"pageTitle":"","sectionTitle":"isAllowed (values) => boolean","sectionRoute":"/react-number-format/docs/props#isallowed-values--boolean","type":"docs"},{"id":8,"pageTitle":"","sectionTitle":"valueIsNumericString boolean","sectionRoute":"/react-number-format/docs/props#valueisnumericstring-boolean","type":"docs"},{"id":9,"pageTitle":"","sectionTitle":"onValueChange (values, sourceInfo) => {}","sectionRoute":"/react-number-format/docs/props#onvaluechange-values-sourceinfo--","type":"docs"},{"id":10,"pageTitle":"","sectionTitle":"renderText (formattedValue, customProps) => React Element","sectionRoute":"/react-number-format/docs/props#rendertext-formattedvalue-customprops--react-element","type":"docs"},{"id":11,"pageTitle":"","sectionTitle":"type string","sectionRoute":"/react-number-format/docs/props#type-string","type":"docs"},{"id":12,"pageTitle":"","sectionTitle":"Other Props","sectionRoute":"/react-number-format/docs/props#other-props","type":"docs"},{"id":17,"pageTitle":"","sectionTitle":"Notes & Quirks","sectionRoute":"/react-number-format/docs/quirks","type":"docs"},{"id":18,"pageTitle":"","sectionTitle":"Values object","sectionRoute":"/react-number-format/docs/quirks#values-object","type":"docs"},{"id":19,"pageTitle":"","sectionTitle":"Notes and quirks","sectionRoute":"/react-number-format/docs/quirks#notes-and-quirks","type":"docs"},{"id":20,"pageTitle":"","sectionTitle":"SourceInfo object","sectionRoute":"/react-number-format/docs/quirks#sourceinfo-object","type":"docs"}],"index":{"version":"2.3.9","fields":["title","content","tags"],"fieldVectors":[["title/21",[0,1.713]],["content/21",[]],["tags/21",[]],["title/22",[1,4.012]],["content/22",[0,1.083,2,0.492,3,0.326,4,0.28,5,0.902,6,1.165,7,1.165,8,1.165,9,1.165,10,1.006,11,0.902,12,0.665,13,2.083,14,2.111,15,1.165,16,1.165,17,1.006,18,1.581,19,1.444,20,0.71,21,0.522,22,2.042,23,1.006,24,2.899,25,3.124,26,2.042,27,1.165,28,1.761,29,0.71,30,1.165,31,1.006,32,2.042,33,1.165,34,1.165,35,1.165,36,0.507,37,0.902,38,1.165,39,1.165,40,0.332,41,1.165,42,0.627,43,1.212,44,0.132,45,1.473,46,1.165,47,1.243,48,0.902,49,1.581,50,0.824,51,0.901,52,2.042,53,2.127,54,0.665,55,1.581,56,1.581,57,0.824,58,0.824,59,3.274,60,1.165,61,0.888,62,1.165,63,1.165,64,0.627,65,1.165,66,1.577,67,1.165,68,1.165,69,1.661,70,1.444,71,1.166,72,0.522,73,1.006,74,1.165,75,1.313,76,1.165,77,1.165,78,1.165,79,0.592,80,2.042,81,1.165,82,0.824,83,1.165,84,0.71,85,1.165,86,1.244,87,2.042,88,1.165,89,1.165,90,1.335,91,0.703,92,1.165,93,1.165,94,1.165,95,1.165,96,1.165,97,0.561,98,1.166,99,1.165,100,1.165,101,1.165,102,1.165,103,1.165,104,1.831,105,1.165,106,0.44,107,1.165,108,0.902,109,0.983,110,1.038,111,1.244,112,1.335,113,0.902,114,1.006,115,2.726,116,1.581,117,1.782,118,0.902,119,1.165,120,1.165,121,0.824,122,0.665,123,0.902,124,0.71,125,0.902,126,1.006,127,0.824,128,1.764,129,1.444,130,0.902,131,0.902,132,0.847,133,1.006,134,2.042,135,1.006,136,1.006,137,1.165,138,1.165,139,0.71,140,1.165,141,0.522,142,0.902,143,1.006,144,0.762,145,1.165,146,1.165]],["tags/22",[]],["title/23",[110,2.633]],["content/23",[3,0.545,4,0.302,12,2.932,13,2.609,57,3.631,110,2.609,111,3.128,141,1.313,147,5.133,148,3.974,149,4.435,150,5.133,151,3.631]],["tags/23",[]],["title/24",[4,0.181,152,3.786,153,1.924]],["content/24",[2,0.688,3,0.303,4,0.249,36,2.268,40,0.464,42,2.804,44,0.147,45,1.507,51,1.965,79,1.936,86,2.321,110,1.936,113,4.036,154,0.786,155,3.809,156,3.809,157,3.809,158,3.29,159,3.809,160,3.809,161,2.949,162,3.29,163,0.688,164,3.29,165,2.49,166,2.694,167,1.936]],["tags/24",[]],["title/25",[165,2.475,166,2.678,167,1.924]],["content/25",[0,0.634,2,0.346,3,0.247,4,0.149,19,1.355,29,1.168,36,1.708,40,0.234,44,0.151,45,0.758,51,1.298,55,1.484,66,0.923,69,1.168,73,1.655,79,2.525,84,2.392,86,1.895,90,1.253,91,0.362,104,0.794,110,0.974,122,1.094,127,1.355,141,0.49,154,0.395,162,1.655,163,0.346,165,1.253,166,1.355,167,0.974,168,1.655,169,2.408,170,3.904,171,1.655,172,2.687,173,1.655,174,1.655,175,1.655,176,2.687,177,1.655,178,1.655,179,1.031,180,1.484,181,1.655,182,2.687,183,1.655,184,2.408,185,1.916,186,1.655,187,2.687,188,2.687,189,1.655,190,1.655,191,1.655,192,1.916,193,1.916,194,1.031,195,1.916,196,1.916,197,1.916,198,3.11,199,1.484,200,1.916,201,1.916,202,1.168,203,1.655,204,0.45,205,1.916,206,1.484,207,2.687,208,1.484,209,1.168,210,1.355,211,1.253,212,1.916,213,1.916,214,1.916]],["tags/25",[]],["title/26",[165,2.181,166,2.36,167,1.696,209,2.033]],["content/26",[0,0.877,4,0.192,12,1.515,36,1.747,40,0.489,44,0.152,45,1.049,47,0.804,51,1.602,55,2.053,79,2.462,84,2.446,86,1.616,110,1.348,139,1.616,163,0.479,164,2.291,168,2.291,169,2.053,170,4.668,171,2.291,172,3.468,173,2.291,174,2.291,175,2.291,176,3.468,177,2.291,178,2.291,179,1.427,180,2.053,181,2.291,182,3.468,183,2.291,184,3.109,204,0.623,209,2.446,215,2.291,216,2.652,217,3.468,218,1.876,219,2.652,220,1.876]],["tags/26",[]],["title/27",[0,1.252,47,1.148,110,1.924]],["content/27",[4,0.111,36,1.01,44,0.152,45,0.918,48,1.797,51,1.666,79,3.507,84,2.208,114,2.005,128,2.005,132,0.962,133,2.005,135,2.005,163,0.419,169,2.806,217,3.131,218,1.642,220,1.642,221,2.321,222,2.321,223,1.797,224,3.624,225,2.321,226,2.321,227,2.321,228,2.321,229,2.321,230,2.321,231,2.321,232,2.321,233,2.321,234,2.321,235,3.624,236,3.624,237,2.321,238,3.624,239,2.321,240,3.624,241,2.321,242,3.624,243,2.321,244,3.624,245,2.321,246,2.321,247,2.321]],["tags/27",[]],["title/28",[204,1.028,248,3.094]],["content/28",[4,0.151,36,1.376,40,0.655,42,1.7,44,0.15,45,1.251,51,1.512,79,2.991,129,2.236,132,2.227,161,2.448,163,0.571,194,2.459,202,1.926,204,0.743,218,2.236,220,2.236,223,2.448,248,3.799,249,3.162,250,1.446,251,3.162,252,3.162,253,1.926,254,2.448,255,3.162,256,3.162,257,2.731,258,2.236,259,3.162,260,2.786,261,2.99]],["tags/28",[]],["title/29",[3,0.237,141,0.763,151,2.109,262,2.576,263,2.576]],["content/29",[3,0.24,4,0.088,5,0.806,17,0.899,18,0.806,28,0.994,31,0.899,36,0.453,40,0.225,42,0.56,44,0.152,45,0.731,47,0.316,50,0.736,51,1.371,61,0.804,64,0.994,70,0.736,75,0.89,79,2.806,84,1.126,86,0.634,91,1.158,98,1.056,104,0.431,116,0.806,117,1.63,132,1.434,148,0.806,151,1.307,161,0.806,163,0.188,186,0.899,187,1.597,189,2.154,194,1.86,199,1.431,202,1.519,207,0.899,218,0.736,220,0.736,223,0.806,260,2.108,261,1.208,262,0.899,263,0.899,264,1.04,265,0.806,266,1.04,267,1.848,268,1.04,269,1.04,270,1.04,271,1.848,272,1.04,273,1.04,274,3.02,275,5.522,276,1.04,277,1.04,278,1.04,279,1.04,280,1.04,281,1.04,282,0.899,283,2.338,284,1.848,285,1.04,286,1.848,287,1.04,288,2.493,289,1.04,290,1.04,291,1.04,292,1.04,293,1.04,294,1.848,295,1.208,296,1.975,297,1.04,298,3.459,299,0.806,300,0.806,301,1.04,302,0.899,303,1.04,304,1.04,305,0.899,306,1.04,307,1.04,308,1.04,309,1.848,310,1.04,311,1.848,312,1.307,313,1.04,314,1.04,315,1.848,316,1.04,317,1.04,318,1.848,319,0.56,320,1.04,321,1.04,322,1.04,323,1.04,324,1.04,325,1.04]],["tags/29",[]],["title/30",[21,0.763,167,1.516,250,1.364,326,2.576,327,2.576]],["content/30",[3,0.162,4,0.156,21,0.523,23,1.766,36,0.889,40,0.5,44,0.149,56,1.583,61,0.889,66,0.984,71,1.168,79,1.666,84,1.997,91,0.775,109,0.984,110,1.666,125,1.583,136,1.766,139,1.246,144,2.143,163,0.369,167,1.666,188,1.766,191,1.766,199,1.583,215,1.766,250,0.935,261,1.337,326,3.544,327,3.544,328,2.044,329,1.766,330,1.583,331,2.044,332,1.446,333,2.044,334,2.044,335,2.831,336,3.277,337,2.044,338,2.044,339,2.044,340,2.044,341,2.044,342,2.044,343,2.044,344,2.044,345,2.044,346,2.044,347,2.044,348,2.044,349,3.176,350,2.044,351,3.277,352,2.044,353,1.583,354,2.044,355,2.044,356,2.044,357,4.102,358,2.044,359,2.044,360,2.044,361,2.044,362,2.044,363,2.044,364,2.044,365,2.044,366,2.044,367,2.044,368,2.044,369,1.766,370,2.044,371,2.044,372,1.583,373,2.044,374,2.044,375,2.044,376,2.044,377,2.044,378,2.044,379,2.044,380,1.766,381,1.766]],["tags/30",[]],["title/13",[382,3.779,383,3.387]],["content/13",[2,0.846,3,0.372,4,0.285,21,1.529,24,3.313,28,2.519,43,1.009,47,1.421,91,0.885,125,3.626,250,2.142,329,4.046,332,3.313,384,4.046,385,4.684,386,4.684,387,4.684,388,4.684,389,4.684,390,2.854,391,4.684,392,4.684]],["tags/13",[]],["title/14",[203,4.476]],["content/14",[0,2.033,3,0.389,4,0.337,10,4.232,11,3.792,21,1.573,112,3.203,149,4.232,194,2.635,250,2.24,260,2.985,390,2.985,393,4.232,394,3.792,395,4.232]],["tags/14",[]],["title/15",[163,0.935]],["content/15",[163,1.068,396,2.704,397,5.913,398,5.913,399,5.913]],["tags/15",[]],["title/16",[400,4.476]],["content/16",[2,1.208,3,0.531,4,0.341,29,2.598,44,0.13,47,1.293,141,1.439,154,1.16,204,1.002,250,1.95,400,3.684,401,5.624,402,5.624,403,4.264,404,2.293]],["tags/16",[]],["title/59",[405,4.375,406,4.375]],["content/59",[]],["tags/59",[]],["title/60",[44,0.065,204,0.784,208,2.583,404,1.794]],["content/60",[0,1.653,2,1.039,3,0.539,4,0.313,21,1.279,44,0.127,66,1.727,113,2.776,122,2.048,153,2.541,154,1.188,165,2.344,180,2.776,204,1.175,208,3.871,250,1.64,319,1.928,396,1.64,404,2.689,407,2.776,408,3.871,409,3.585,410,3.585,411,3.585,412,3.585,413,3.585,414,3.585,415,3.585]],["tags/60",[]],["title/61",[44,0.074,416,3.27,417,2.036]],["content/61",[3,0.505,4,0.303,40,0.695,43,1.37,47,1.32,75,2.095,91,0.822,97,2.095,104,1.804,106,1.644,112,2.845,372,3.368,408,3.368,416,3.758,417,2.34,418,4.351,419,3.077,420,4.351,421,4.351,422,4.351,423,4.351,424,4.351,425,4.351,426,4.351]],["tags/61",[]],["title/62",[4,0.129,36,1.173,45,1.067,48,2.088,91,0.509,98,1.54]],["content/62",[0,2.033,2,0.884,3,0.389,4,0.321,11,3.792,36,2.675,44,0.095,45,1.938,141,1.253,153,3.125,154,1.011,384,4.232,408,3.792,427,4.898,428,4.898]],["tags/62",[]],["title/63",[429,4.375,430,3.387]],["content/63",[0,1.739,3,0.418,5,4.975,47,1.949,50,4.545,110,2.673,148,4.072,396,2.405,431,5.259,432,5.259,433,5.259]],["tags/63",[]],["title/31",[40,0.632]],["content/31",[]],["tags/31",[]],["title/32",[53,2.499,434,3.779]],["content/32",[2,0.726,3,0.32,4,0.192,18,3.115,21,1.564,44,0.119,50,2.846,61,1.751,64,2.164,66,2.606,72,1.384,154,0.83,163,0.726,167,2.75,179,2.164,204,1.271,434,4.674,435,4.023,436,4.023,437,6.113,438,6.113,439,3.476,440,3.476,441,3.476,442,4.023,443,2.298]],["tags/32",[]],["title/33",[53,2.499,300,3.387]],["content/33",[2,0.884,3,0.488,4,0.234,44,0.131,61,2.131,64,2.635,66,2.359,72,1.253,91,0.925,151,3.464,154,1.011,163,0.884,179,2.635,184,3.792,204,1.444,300,3.792]],["tags/33",[]],["title/34",[430,3.387,444,3.779]],["content/34",[2,0.846,3,0.372,4,0.224,44,0.135,72,1.198,104,1.942,111,3.642,112,3.908,116,3.626,141,1.198,154,0.966,163,0.846,204,1.404,444,4.046,445,2.142,446,4.046,447,4.684,448,4.684]],["tags/34",[]],["title/35",[449,3.387,450,3.779]],["content/35",[0,1.5,2,0.819,3,0.465,4,0.28,12,2.59,21,1.16,44,0.138,66,2.184,72,1.16,154,1.208,163,0.819,204,1.375,443,2.59,451,3.208,452,3.208,453,3.918,454,3.918,455,3.918,456,3.918]],["tags/35",[]],["title/36",[3,0.348,457,3.387]],["content/36",[2,0.884,3,0.488,4,0.234,44,0.131,71,2.798,72,1.253,111,2.985,154,1.011,163,0.884,204,1.444,335,4.232,445,2.24,458,4.898,459,4.232,460,4.898,461,4.232]],["tags/36",[]],["title/37",[43,0.943,121,3.094]],["content/37",[2,0.916,3,0.403,4,0.242,44,0.139,71,2.897,72,1.298,104,2.103,111,3.091,121,3.588,154,1.047,163,0.916,204,1.476,462,5.072]],["tags/37",[]],["title/38",[53,2.499,463,3.779]],["content/38",[2,0.846,3,0.372,4,0.224,29,2.854,44,0.128,54,2.675,61,2.038,64,2.519,72,1.198,121,3.313,154,0.966,163,0.846,179,2.519,204,1.404,440,4.046,441,4.046,457,3.626,461,4.046,463,4.046,464,4.046,465,4.684]],["tags/38",[]],["title/39",[43,0.943,194,2.353]],["content/39",[2,0.895,3,0.394,4,0.237,21,1.268,29,3.019,44,0.131,90,3.24,91,0.936,104,2.054,154,1.022,163,0.895,194,3.331,204,1.455,466,4.955,467,4.281]],["tags/39",[]],["title/40",[43,0.943,260,2.666]],["content/40",[2,0.895,3,0.394,4,0.237,21,1.268,29,3.019,44,0.137,72,1.268,91,0.936,154,1.022,163,0.895,204,1.455,260,3.774,445,2.266,468,3.836]],["tags/40",[]],["title/41",[43,0.943,469,4.375]],["content/41",[2,0.733,3,0.323,4,0.194,12,2.32,44,0.14,71,2.32,72,1.039,109,1.956,154,0.838,158,5.669,163,0.733,204,1.279,353,3.145,393,5.306,443,2.32,470,4.062,471,3.145,472,4.062,473,4.062,474,4.062,475,4.062,476,4.062,477,4.062,478,4.062,479,3.509,480,3.509]],["tags/41",[]],["title/42",[40,0.533,253,2.666]],["content/42",[21,1.397,40,0.801,54,3.119,153,2.775,253,3.327,312,3.862,396,2.497,481,4.228,482,3.327,483,3.57]],["tags/42",[]],["title/43",[484,4.012]],["content/43",[0,1.903,97,2.771,141,1.472,485,4.971,486,4.971,487,4.971,488,4.971]],["tags/43",[]],["title/44",[40,0.3,42,1.323,43,0.817,44,0.048,489,2.125,490,1.74]],["content/44",[3,0.5,4,0.332,13,2.167,20,2.598,40,0.686,43,0.919,47,1.293,49,3.301,51,1.86,75,2.053,90,2.788,91,0.805,106,1.611,123,3.301,141,1.091,265,3.301,489,3.684,491,3.301,492,3.684,493,2.788,494,3.301,495,2.788,496,3.016,497,3.684,498,3.016]],["tags/44",[]],["title/45",[40,0.255,43,0.72,44,0.041,490,1.481,499,1.809,500,1.481,501,2.363]],["content/45",[0,1.45,3,0.485,4,0.273,13,2.229,21,0.764,28,2.359,40,0.535,42,1.606,43,0.945,44,0.085,47,0.905,51,1.719,57,2.111,69,1.819,75,1.438,91,1.082,98,1.705,104,1.238,108,2.311,109,2.758,124,2.672,129,2.111,130,2.311,131,2.311,141,0.764,142,2.311,206,2.311,210,2.111,211,1.952,258,2.111,319,2.359,330,2.311,383,3.395,495,1.952,496,2.111,498,2.111,499,2.579,500,2.111,501,2.111,502,2.579,503,2.579,504,2.672,505,2.579,506,2.111,507,1.517,508,2.579,509,2.579,510,2.579,511,3.788,512,2.579]],["tags/45",[]],["title/46",[40,0.3,43,0.53,44,0.048,132,1.02,490,1.74,513,2.46,514,2.125]],["content/46",[1,3.368,4,0.208,13,2.896,20,2.651,24,3.077,25,3.077,45,1.721,51,1.884,58,3.077,69,2.651,70,3.077,75,2.095,82,4.031,91,0.822,97,2.095,98,2.485,124,2.651,132,1.804,254,3.368,332,3.077,396,1.99,504,2.651,507,2.211,515,3.758,516,3.758,517,3.758,518,3.758,519,2.651]],["tags/46",[]],["title/47",[40,0.364,44,0.058,210,2.109,261,1.95,490,2.109]],["content/47",[0,1.976,4,0.224,36,2.601,40,0.571,47,1.421,51,1.976,97,2.256,106,2.258,139,2.854,141,1.198,210,4.228,211,3.062,299,3.626,396,2.142,407,3.626,504,2.854,507,2.38,519,2.854,520,4.046]],["tags/47",[]],["title/48",[40,0.632]],["content/48",[]],["tags/48",[]],["title/49",[53,2.499,248,3.094]],["content/49",[2,0.747,3,0.329,4,0.296,19,3.901,44,0.14,61,1.801,64,2.227,72,1.411,91,1.042,154,0.854,163,0.747,179,2.227,202,2.523,248,3.901,305,4.765,404,3.336,445,1.893,451,2.928,452,2.928,521,3.577,522,3.577]],["tags/49",[]],["title/50",[4,0.209,43,0.943]],["content/50",[2,0.819,3,0.465,4,0.31,44,0.144,71,2.59,72,1.16,104,2.427,141,1.16,154,0.936,163,0.819,250,2.074,404,3.149,445,2.074,523,3.208,524,4.535,525,4.535]],["tags/50",[]],["title/51",[43,0.719,44,0.065,394,2.583,430,2.583]],["content/51",[2,0.676,3,0.409,4,0.246,14,2.897,20,2.28,25,3.643,44,0.137,47,1.786,58,2.647,72,0.957,82,2.647,104,2.758,106,1.414,122,2.942,141,0.957,154,0.772,163,0.676,394,4.912,404,2.77,417,2.013,445,1.711,464,3.233,522,3.233,523,2.647,526,3.742,527,2.447,528,3.742]],["tags/51",[]],["title/52",[43,0.943,523,3.094]],["content/52",[2,0.874,3,0.385,4,0.319,44,0.141,71,2.766,72,1.239,104,2.008,154,0.999,163,0.874,250,2.215,404,3.284,523,3.425,529,4.843,530,4.843]],["tags/52",[]],["title/53",[40,0.533,253,2.666]],["content/53",[21,1.397,40,0.801,54,3.119,153,2.775,253,3.327,312,3.862,396,2.497,481,4.228,482,3.327,483,3.57]],["tags/53",[]],["title/54",[484,4.012]],["content/54",[0,1.903,97,2.771,141,1.472,485,4.971,486,4.971,487,4.971,488,4.971]],["tags/54",[]],["title/55",[40,0.3,42,1.323,43,0.817,44,0.048,531,2.125,532,1.74]],["content/55",[3,0.5,4,0.332,13,2.167,20,2.598,40,0.686,43,0.919,47,1.293,49,3.301,51,1.86,75,2.053,90,2.788,91,0.805,106,1.611,123,3.301,141,1.091,265,3.301,491,3.301,492,3.684,493,2.788,494,3.301,495,2.788,496,3.016,497,3.684,498,3.016,531,3.684]],["tags/55",[]],["title/56",[40,0.255,43,0.72,44,0.041,500,1.481,501,2.363,532,1.481,533,1.809]],["content/56",[0,1.45,3,0.485,4,0.273,13,2.229,21,0.764,28,2.359,40,0.535,42,1.606,43,0.945,44,0.085,47,0.905,51,1.719,57,2.111,69,1.819,75,1.438,91,1.082,98,1.705,104,1.238,108,2.311,109,2.758,124,2.672,129,2.111,130,2.311,131,2.311,141,0.764,142,2.311,206,2.311,209,1.819,211,1.952,258,2.111,319,2.359,330,2.311,383,3.395,495,1.952,496,2.111,498,2.111,500,2.111,501,2.111,502,2.579,503,2.579,504,2.672,505,2.579,506,2.111,507,1.517,508,2.579,509,2.579,510,2.579,511,3.788,512,2.579,533,2.579]],["tags/56",[]],["title/57",[40,0.3,43,0.53,44,0.048,132,1.02,514,2.125,532,1.74,534,2.46]],["content/57",[1,3.368,4,0.208,13,2.896,20,2.651,24,3.077,25,3.077,45,1.721,51,1.884,58,3.077,69,2.651,70,3.077,75,2.095,82,4.031,91,0.822,97,2.095,98,2.485,124,2.651,132,1.804,254,3.368,332,3.077,396,1.99,504,2.651,507,2.211,515,3.758,516,3.758,517,3.758,518,3.758,519,2.651]],["tags/57",[]],["title/58",[40,0.364,44,0.058,209,1.817,261,1.95,532,2.109]],["content/58",[0,1.976,4,0.224,36,2.601,40,0.571,47,1.421,51,1.976,97,2.256,106,2.258,139,2.854,141,1.198,209,3.642,211,3.062,299,3.626,396,2.142,407,3.626,504,2.854,507,2.38,519,2.854,520,4.046]],["tags/58",[]],["title/1",[40,0.533,253,2.666]],["content/1",[]],["tags/1",[]],["title/2",[449,3.387,450,3.779]],["content/2",[0,1.282,2,0.7,3,0.419,4,0.252,12,2.215,21,0.992,37,3.002,40,0.473,44,0.138,66,1.867,72,0.992,106,1.465,154,1.089,163,0.7,204,1.409,443,2.215,449,4.086,451,2.743,452,4.243,453,4.559,454,3.35,455,3.35,456,3.35,493,2.535,527,2.535,535,3.35,536,3.35,537,3.878]],["tags/2",[]],["title/3",[3,0.265,43,0.719,44,0.065,91,0.63]],["content/3",[2,0.74,3,0.523,4,0.295,21,1.049,40,0.668,43,1.181,44,0.12,61,1.784,72,1.049,91,1.035,97,1.975,106,2.07,154,0.846,163,0.74,167,2.084,204,1.287,396,1.875,417,2.947,419,2.9,445,1.875,468,3.175,471,3.175,519,2.499,538,3.175]],["tags/3",[]],["title/4",[3,0.265,43,0.719,44,0.065,282,2.882]],["content/4",[2,0.884,3,0.389,4,0.234,44,0.137,72,1.573,91,1.269,122,2.798,141,1.253,154,1.011,163,0.884,204,1.444,445,2.24,539,4.898]],["tags/4",[]],["title/5",[21,0.853,44,0.065,390,2.033,483,2.181]],["content/5",[2,0.762,3,0.335,4,0.299,21,1.602,44,0.129,72,1.08,91,1.055,104,1.75,109,2.033,154,0.871,163,0.762,204,1.471,390,3.404,482,2.572,493,3.653,540,3.269,541,3.647,542,4.222,543,4.222,544,5.587,545,3.647]],["tags/5",[]],["title/6",[44,0.065,546,3.336,547,3.336,548,3.336]],["content/6",[2,0.996,3,0.329,4,0.198,21,1.059,40,0.505,44,0.143,45,1.638,51,1.369,72,1.411,153,2.104,154,1.138,204,1.296,380,3.577,381,3.577,451,2.928,482,2.523,483,2.707,484,3.206,507,2.104,536,4.765,549,4.14,550,5.515,551,4.14]],["tags/6",[]],["title/7",[44,0.065,53,1.906,91,0.63,552,2.882]],["content/7",[2,0.688,3,0.303,4,0.182,21,1.334,44,0.145,45,2.062,51,1.724,56,2.949,64,2.048,72,0.974,79,2.649,91,1.122,154,0.786,163,0.688,204,1.225,296,3.408,319,2.048,349,2.949,445,1.742,507,1.936,553,3.809,554,2.694,555,5.213,556,3.809,557,3.809,558,3.809]],["tags/7",[]],["title/8",[53,2.499,417,2.353]],["content/8",[2,0.631,3,0.489,4,0.321,40,0.599,43,1.059,44,0.134,47,1.49,61,2.138,64,1.881,72,0.895,91,0.928,106,2.328,139,2.131,141,0.895,154,0.722,163,0.631,194,1.881,250,1.599,260,2.131,302,3.021,404,2.643,419,3.475,443,1.998,521,3.021,527,2.287,559,4.914,560,3.497,561,3.497,562,3.497,563,3.497]],["tags/8",[]],["title/9",[44,0.085,91,0.563,283,2.309,295,1.95]],["content/9",[2,0.454,3,0.306,4,0.224,21,1.199,28,2.072,40,0.64,43,0.541,44,0.125,47,0.762,54,1.435,61,1.093,72,0.643,91,0.992,97,1.21,106,0.949,117,1.643,118,1.945,122,2.2,126,2.17,132,1.042,141,0.985,144,2.519,154,0.518,163,0.454,167,1.958,190,2.17,194,1.351,204,1.101,295,3.435,296,1.643,319,3.348,369,2.17,372,1.945,395,2.17,396,1.149,417,2.072,443,1.435,445,1.149,467,2.17,471,1.945,495,1.643,519,1.531,554,2.725,564,2.512,565,2.17,566,3.852,567,2.512,568,2.17,569,2.983,570,1.531,571,2.17,572,2.17,573,3.328,574,3.328,575,2.17,576,2.17,577,2.17,578,2.17,579,2.17,580,2.512,581,2.17,582,1.945,583,1.945]],["tags/9",[]],["title/10",[2,0.487,44,0.052,132,1.118,540,2.088,584,2.329,585,2.696]],["content/10",[0,1.33,2,0.726,3,0.32,4,0.192,14,3.115,40,0.66,44,0.127,51,1.33,66,1.937,72,1.029,106,1.52,132,1.668,141,1.029,154,0.83,163,0.726,202,2.452,204,1.271,443,2.298,445,1.84,452,2.846,479,3.476,480,3.476,482,2.452,491,3.115,493,3.538,507,2.045,540,4.189,545,3.476,584,3.476,586,3.476,587,4.023,588,4.023]],["tags/10",[]],["title/11",[43,0.943,109,2.107]],["content/11",[2,0.81,3,0.356,4,0.214,12,2.563,21,1.148,44,0.137,66,2.161,72,1.148,91,0.848,106,1.695,109,2.8,154,0.926,163,0.81,204,1.366,353,3.474,390,3.543,468,3.474,589,4.487,590,4.487,591,3.877,592,4.487]],["tags/11",[]],["title/12",[40,0.632]],["content/12",[4,0.307,21,1.345,40,0.846,47,1.595,54,3.004,153,2.673,250,2.405,312,3.72,481,4.072,482,3.205,483,3.439]],["tags/12",[]],["title/17",[44,0.074,527,2.475,593,3.27]],["content/17",[]],["tags/17",[]],["title/18",[91,0.826,570,2.666]],["content/18",[3,0.361,4,0.297,19,2.22,40,0.715,43,0.676,44,0.114,47,0.952,61,1.979,91,1.295,106,2.021,117,2.052,127,2.22,132,1.886,141,0.803,153,1.595,179,1.688,258,2.22,296,2.974,417,2.446,419,2.22,459,2.711,506,2.22,538,2.43,569,2.43,570,1.912,581,2.711,582,3.521,583,3.521,594,3.138,595,5.349,596,5.067,597,3.138,598,3.138,599,3.138,600,3.929,601,2.711,602,2.711]],["tags/18",[]],["title/19",[527,2.86,593,3.779]],["content/19",[3,0.432,4,0.259,13,1.019,21,1.187,28,1.079,37,1.553,40,0.748,43,0.873,44,0.063,45,0.793,47,0.608,54,1.146,61,1.404,75,0.966,86,1.222,91,1.122,106,1.922,109,1.95,111,1.967,112,1.312,117,1.312,122,2.313,127,2.283,132,0.832,141,1.301,143,1.733,144,3.035,153,1.019,179,1.736,202,1.222,257,1.733,283,2.499,296,1.312,319,2.496,349,2.499,382,2.788,390,1.222,417,1.736,439,1.733,446,1.733,457,1.553,494,1.553,506,1.419,535,1.733,538,1.553,541,1.733,552,1.733,554,1.419,565,1.733,568,1.733,569,2.499,570,1.967,582,1.553,583,1.553,586,1.733,591,1.733,596,3.499,600,2.788,601,1.733,602,1.733,603,2.006,604,2.006,605,2.006,606,2.006,607,2.006,608,2.006,609,2.006,610,2.006,611,2.006,612,2.006,613,2.006,614,2.006,615,2.006,616,2.006,617,2.006,618,2.006,619,2.006,620,2.006,621,2.006,622,2.006,623,2.006,624,2.006,625,2.006,626,2.006]],["tags/19",[]],["title/20",[295,2.86,570,2.666]],["content/20",[28,2.013,40,0.773,44,0.129,91,0.707,109,1.802,118,2.897,124,2.28,141,0.957,144,4.495,295,2.447,319,3.578,554,2.647,570,3.138,571,4.449,572,4.449,573,5.087,574,5.087,575,3.233,576,3.233,577,3.233,578,3.233,579,3.233,627,3.742,628,3.742]],["tags/20",[]]],"invertedIndex":[["",{"_index":44,"title":{"3":{},"4":{},"5":{},"6":{},"7":{},"9":{},"10":{},"17":{},"44":{},"45":{},"46":{},"47":{},"51":{},"55":{},"56":{},"57":{},"58":{},"60":{},"61":{}},"content":{"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"16":{},"18":{},"19":{},"20":{},"22":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"45":{},"49":{},"50":{},"51":{},"52":{},"56":{},"60":{},"62":{}},"tags":{}}],["0",{"_index":86,"title":{},"content":{"19":{},"22":{},"24":{},"25":{},"26":{},"29":{}},"tags":{}}],["0${month[0",{"_index":178,"title":{},"content":{"25":{},"26":{}},"tags":{}}],["0${valu",{"_index":197,"title":{},"content":{"25":{}},"tags":{}}],["01",{"_index":183,"title":{},"content":{"25":{},"26":{}},"tags":{}}],["0s",{"_index":440,"title":{},"content":{"32":{},"38":{}},"tags":{}}],["1",{"_index":84,"title":{},"content":{"22":{},"25":{},"26":{},"27":{},"29":{},"30":{}},"tags":{}}],["1,2345,6789",{"_index":478,"title":{},"content":{"41":{}},"tags":{}}],["1000",{"_index":556,"title":{},"content":{"7":{}},"tags":{}}],["111,222",{"_index":267,"title":{},"content":{"29":{}},"tags":{}}],["12",{"_index":184,"title":{},"content":{"25":{},"26":{},"33":{}},"tags":{}}],["12,34,56,789",{"_index":475,"title":{},"content":{"41":{}},"tags":{}}],["123,456,789",{"_index":472,"title":{},"content":{"41":{}},"tags":{}}],["1].match(/\\d",{"_index":95,"title":{},"content":{"22":{}},"tags":{}}],["1st",{"_index":496,"title":{},"content":{"44":{},"45":{},"55":{},"56":{}},"tags":{}}],["2",{"_index":172,"title":{},"content":{"25":{},"26":{}},"tags":{}}],["23,234,235.56",{"_index":594,"title":{},"content":{"18":{}},"tags":{}}],["23234235.56",{"_index":595,"title":{},"content":{"18":{}},"tags":{}}],["2nd",{"_index":498,"title":{},"content":{"44":{},"45":{},"55":{},"56":{}},"tags":{}}],["3rd",{"_index":512,"title":{},"content":{"45":{},"56":{}},"tags":{}}],["4",{"_index":175,"title":{},"content":{"25":{},"26":{}},"tags":{}}],["5.2.0",{"_index":561,"title":{},"content":{"8":{}},"tags":{}}],["9",{"_index":107,"title":{},"content":{"22":{}},"tags":{}}],["9]$/i.test(char",{"_index":364,"title":{},"content":{"30":{}},"tags":{}}],["9]{4})/gi",{"_index":358,"title":{},"content":{"30":{}},"tags":{}}],["9]|backspace|delete|home|end|arrowleft|arrowright|shift|capslock|control|numlock|tab|paste|redo|undo)$/i.test",{"_index":376,"title":{},"content":{"30":{}},"tags":{}}],["_format",{"_index":218,"title":{},"content":{"26":{},"27":{},"28":{},"29":{}},"tags":{}}],["_ischaractersam",{"_index":234,"title":{},"content":{"27":{}},"tags":{}}],["_onkeydown",{"_index":308,"title":{},"content":{"29":{}},"tags":{}}],["_onvaluechang",{"_index":294,"title":{},"content":{"29":{}},"tags":{}}],["_removeformat",{"_index":228,"title":{},"content":{"27":{}},"tags":{}}],["_val",{"_index":224,"title":{},"content":{"27":{}},"tags":{}}],["_val.replace(/\\d/g",{"_index":226,"title":{},"content":{"27":{}},"tags":{}}],["abil",{"_index":427,"title":{},"content":{"62":{}},"tags":{}}],["accept",{"_index":481,"title":{},"content":{"12":{},"42":{},"53":{}},"tags":{}}],["access",{"_index":564,"title":{},"content":{"9":{}},"tags":{}}],["accordingli",{"_index":33,"title":{},"content":{"22":{}},"tags":{}}],["account",{"_index":327,"title":{"30":{}},"content":{"30":{}},"tags":{}}],["achiev",{"_index":257,"title":{},"content":{"19":{},"28":{}},"tags":{}}],["ad",{"_index":586,"title":{},"content":{"10":{},"19":{}},"tags":{}}],["add",{"_index":29,"title":{},"content":{"16":{},"22":{},"25":{},"38":{},"39":{},"40":{}},"tags":{}}],["addit",{"_index":108,"title":{},"content":{"22":{},"45":{},"56":{}},"tags":{}}],["ahead",{"_index":270,"title":{},"content":{"29":{}},"tags":{}}],["allow",{"_index":66,"title":{},"content":{"2":{},"10":{},"11":{},"22":{},"25":{},"30":{},"32":{},"33":{},"35":{},"60":{}},"tags":{}}],["alloweddecimalsepar",{"_index":444,"title":{"34":{}},"content":{"34":{}},"tags":{}}],["allowemptyformat",{"_index":248,"title":{"28":{},"49":{}},"content":{"28":{},"49":{}},"tags":{}}],["allowleadingzero",{"_index":434,"title":{"32":{}},"content":{"32":{}},"tags":{}}],["allowneg",{"_index":300,"title":{"33":{}},"content":{"29":{},"33":{}},"tags":{}}],["alway",{"_index":302,"title":{},"content":{"8":{},"29":{}},"tags":{}}],["anoth",{"_index":164,"title":{},"content":{"24":{},"26":{}},"tags":{}}],["anyth",{"_index":316,"title":{},"content":{"29":{}},"tags":{}}],["apart",{"_index":138,"title":{},"content":{"22":{}},"tags":{}}],["app",{"_index":551,"title":{},"content":{"6":{}},"tags":{}}],["appli",{"_index":19,"title":{},"content":{"18":{},"22":{},"25":{},"49":{}},"tags":{}}],["applic",{"_index":265,"title":{},"content":{"29":{},"44":{},"55":{}},"tags":{}}],["argument",{"_index":565,"title":{},"content":{"9":{},"19":{}},"tags":{}}],["array",{"_index":58,"title":{},"content":{"22":{},"46":{},"51":{},"57":{}},"tags":{}}],["array(value.length",{"_index":366,"title":{},"content":{"30":{}},"tags":{}}],["array.from",{"_index":81,"title":{},"content":{"22":{}},"tags":{}}],["array{value}((prop",{"_index":379,"title":{},"content":{"30":{}},"tags":{}}],["identifi",{"_index":576,"title":{},"content":{"9":{},"20":{}},"tags":{}}],["implement",{"_index":148,"title":{},"content":{"23":{},"29":{},"63":{}},"tags":{}}],["import",{"_index":154,"title":{},"content":{"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"16":{},"24":{},"25":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"49":{},"50":{},"51":{},"52":{},"60":{},"62":{}},"tags":{}}],["includ",{"_index":590,"title":{},"content":{"11":{}},"tags":{}}],["index",{"_index":59,"title":{},"content":{"22":{}},"tags":{}}],["indian",{"_index":473,"title":{},"content":{"41":{}},"tags":{}}],["indic",{"_index":572,"title":{},"content":{"9":{},"20":{}},"tags":{}}],["info",{"_index":471,"title":{},"content":{"3":{},"9":{},"41":{}},"tags":{}}],["inform",{"_index":124,"title":{},"content":{"20":{},"22":{},"45":{},"46":{},"56":{},"57":{}},"tags":{}}],["initi",{"_index":600,"title":{},"content":{"18":{},"19":{}},"tags":{}}],["inlin",{"_index":537,"title":{},"content":{"2":{}},"tags":{}}],["input",{"_index":21,"title":{"5":{},"30":{}},"content":{"2":{},"3":{},"5":{},"6":{},"7":{},"9":{},"11":{},"12":{},"13":{},"14":{},"19":{},"22":{},"30":{},"32":{},"35":{},"39":{},"40":{},"42":{},"45":{},"53":{},"56":{},"60":{}},"tags":{}}],["inputvalu",{"_index":500,"title":{"45":{},"56":{}},"content":{"45":{},"56":{}},"tags":{}}],["insid",{"_index":520,"title":{},"content":{"47":{},"58":{}},"tags":{}}],["instal",{"_index":400,"title":{"16":{}},"content":{"16":{}},"tags":{}}],["instead",{"_index":611,"title":{},"content":{"19":{}},"tags":{}}],["interfac",{"_index":347,"title":{},"content":{"30":{}},"tags":{}}],["intern",{"_index":330,"title":{},"content":{"30":{},"45":{},"56":{}},"tags":{}}],["internalvalu",{"_index":288,"title":{},"content":{"29":{}},"tags":{}}],["interpret",{"_index":119,"title":{},"content":{"22":{}},"tags":{}}],["intl.numberformat",{"_index":152,"title":{"24":{}},"content":{},"tags":{}}],["intl.numberformat('en",{"_index":157,"title":{},"content":{"24":{}},"tags":{}}],["isallow",{"_index":552,"title":{"7":{}},"content":{"19":{}},"tags":{}}],["isallowed={(valu",{"_index":558,"title":{},"content":{"7":{}},"tags":{}}],["ischaractersam",{"_index":114,"title":{},"content":{"22":{},"27":{}},"tags":{}}],["ischaractersame(comparemeta",{"_index":237,"title":{},"content":{"27":{}},"tags":{}}],["ischaractersame={_ischaractersam",{"_index":247,"title":{},"content":{"27":{}},"tags":{}}],["ischarsam",{"_index":236,"title":{},"content":{"27":{}},"tags":{}}],["isn't",{"_index":252,"title":{},"content":{"28":{}},"tags":{}}],["isnan(floatvalu",{"_index":297,"title":{},"content":{"29":{}},"tags":{}}],["isnumericstr",{"_index":416,"title":{"61":{}},"content":{"61":{}},"tags":{}}],["issu",{"_index":623,"title":{},"content":{"19":{}},"tags":{}}],["isvalidinputcharact",{"_index":100,"title":{},"content":{"22":{}},"tags":{}}],["isvalidinputcharacter={(char",{"_index":363,"title":{},"content":{"30":{}},"tags":{}}],["keep",{"_index":9,"title":{},"content":{"22":{}},"tags":{}}],["key",{"_index":117,"title":{},"content":{"9":{},"18":{},"19":{},"22":{},"29":{}},"tags":{}}],["keyboard",{"_index":608,"title":{},"content":{"19":{}},"tags":{}}],["know",{"_index":418,"title":{},"content":{"61":{}},"tags":{}}],["lakh",{"_index":474,"title":{},"content":{"41":{}},"tags":{}}],["last",{"_index":131,"title":{},"content":{"22":{},"45":{},"56":{}},"tags":{}}],["lastvalu",{"_index":130,"title":{},"content":{"22":{},"45":{},"56":{}},"tags":{}}],["layout",{"_index":609,"title":{},"content":{"19":{}},"tags":{}}],["lead",{"_index":437,"title":{},"content":{"32":{}},"tags":{}}],["length",{"_index":82,"title":{},"content":{"22":{},"46":{},"51":{},"57":{}},"tags":{}}],["let",{"_index":120,"title":{},"content":{"22":{}},"tags":{}}],["let'",{"_index":213,"title":{},"content":{"25":{}},"tags":{}}],["letter",{"_index":336,"title":{},"content":{"30":{}},"tags":{}}],["level",{"_index":412,"title":{},"content":{"60":{}},"tags":{}}],["li",{"_index":35,"title":{},"content":{"22":{}},"tags":{}}],["lib",{"_index":272,"title":{},"content":{"29":{}},"tags":{}}],["librari",{"_index":125,"title":{},"content":{"13":{},"22":{},"30":{}},"tags":{}}],["light",{"_index":386,"title":{},"content":{"13":{}},"tags":{}}],["limit",{"_index":458,"title":{},"content":{"36":{}},"tags":{}}],["ln",{"_index":87,"title":{},"content":{"22":{}},"tags":{}}],["lock",{"_index":251,"title":{},"content":{"28":{}},"tags":{}}],["logic",{"_index":299,"title":{},"content":{"29":{},"47":{},"58":{}},"tags":{}}],["longer",{"_index":610,"title":{},"content":{"19":{}},"tags":{}}],["look",{"_index":76,"title":{},"content":{"22":{}},"tags":{}}],["lot",{"_index":508,"title":{},"content":{"45":{},"56":{}},"tags":{}}],["lower",{"_index":180,"title":{},"content":{"25":{},"26":{},"60":{}},"tags":{}}],["main",{"_index":39,"title":{},"content":{"22":{}},"tags":{}}],["make",{"_index":582,"title":{},"content":{"9":{},"18":{},"19":{}},"tags":{}}],["manag",{"_index":22,"title":{},"content":{"22":{}},"tags":{}}],["mani",{"_index":397,"title":{},"content":{"15":{}},"tags":{}}],["manual",{"_index":317,"title":{},"content":{"29":{}},"tags":{}}],["map",{"_index":85,"title":{},"content":{"22":{}},"tags":{}}],["map((v",{"_index":368,"title":{},"content":{"30":{}},"tags":{}}],["mark",{"_index":320,"title":{},"content":{"29":{}},"tags":{}}],["mask",{"_index":394,"title":{"51":{}},"content":{"14":{},"51":{}},"tags":{}}],["mask=\"_",{"_index":522,"title":{},"content":{"49":{},"51":{}},"tags":{}}],["match",{"_index":464,"title":{},"content":{"38":{},"51":{}},"tags":{}}],["max_limit",{"_index":555,"title":{},"content":{"7":{}},"tags":{}}],["maximumfractiondigit",{"_index":160,"title":{},"content":{"24":{}},"tags":{}}],["maxlength",{"_index":618,"title":{},"content":{"19":{}},"tags":{}}],["mean",{"_index":65,"title":{},"content":{"22":{}},"tags":{}}],["meet",{"_index":391,"title":{},"content":{"13":{}},"tags":{}}],["method",{"_index":507,"title":{},"content":{"6":{},"7":{},"10":{},"45":{},"46":{},"47":{},"56":{},"57":{},"58":{}},"tags":{}}],["migrat",{"_index":405,"title":{"59":{}},"content":{},"tags":{}}],["minlength",{"_index":617,"title":{},"content":{"19":{}},"tags":{}}],["miss",{"_index":447,"title":{},"content":{"34":{}},"tags":{}}],["mobil",{"_index":607,"title":{},"content":{"19":{}},"tags":{}}],["modul",{"_index":408,"title":{},"content":{"60":{},"61":{},"62":{}},"tags":{}}],["month",{"_index":170,"title":{},"content":{"25":{},"26":{}},"tags":{}}],["month.length",{"_index":176,"title":{},"content":{"25":{},"26":{}},"tags":{}}],["month[0",{"_index":177,"title":{},"content":{"25":{},"26":{}},"tags":{}}],["month}/${year",{"_index":185,"title":{},"content":{"25":{}},"tags":{}}],["more",{"_index":97,"title":{},"content":{"3":{},"9":{},"22":{},"43":{},"46":{},"47":{},"54":{},"57":{},"58":{},"61":{}},"tags":{}}],["move",{"_index":67,"title":{},"content":{"22":{}},"tags":{}}],["mui/materi",{"_index":454,"title":{},"content":{"2":{},"35":{}},"tags":{}}],["multipl",{"_index":313,"title":{},"content":{"29":{}},"tags":{}}],["mycustomnumberformat(prop",{"_index":155,"title":{},"content":{"24":{}},"tags":{}}],["n",{"_index":517,"title":{},"content":{"46":{},"57":{}},"tags":{}}],["n+1",{"_index":515,"title":{},"content":{"46":{},"57":{}},"tags":{}}],["name",{"_index":372,"title":{},"content":{"9":{},"30":{},"61":{}},"tags":{}}],["nativ",{"_index":143,"title":{},"content":{"19":{},"22":{}},"tags":{}}],["need",{"_index":75,"title":{},"content":{"19":{},"22":{},"29":{},"44":{},"45":{},"46":{},"55":{},"56":{},"57":{},"61":{}},"tags":{}}],["neg",{"_index":151,"title":{"29":{}},"content":{"23":{},"29":{},"33":{}},"tags":{}}],["negat",{"_index":298,"title":{},"content":{"29":{}},"tags":{}}],["negation_format_regex",{"_index":273,"title":{},"content":{"29":{}},"tags":{}}],["new",{"_index":156,"title":{},"content":{"24":{}},"tags":{}}],["newchar",{"_index":240,"title":{},"content":{"27":{}},"tags":{}}],["newpersianchar",{"_index":244,"title":{},"content":{"27":{}},"tags":{}}],["non",{"_index":581,"title":{},"content":{"9":{},"18":{}},"tags":{}}],["note",{"_index":527,"title":{"17":{},"19":{}},"content":{"2":{},"8":{},"51":{}},"tags":{}}],["now",{"_index":424,"title":{},"content":{"61":{}},"tags":{}}],["npm",{"_index":401,"title":{},"content":{"16":{}},"tags":{}}],["null",{"_index":451,"title":{},"content":{"2":{},"6":{},"35":{},"49":{}},"tags":{}}],["number",{"_index":3,"title":{"3":{},"4":{},"29":{},"36":{}},"content":{"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"13":{},"14":{},"16":{},"18":{},"19":{},"22":{},"23":{},"24":{},"25":{},"29":{},"30":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"44":{},"45":{},"49":{},"50":{},"51":{},"52":{},"55":{},"56":{},"60":{},"61":{},"62":{},"63":{}},"tags":{}}],["number(month",{"_index":182,"title":{},"content":{"25":{},"26":{}},"tags":{}}],["numberformat",{"_index":208,"title":{"60":{}},"content":{"25":{},"60":{}},"tags":{}}],["numberformatbas",{"_index":36,"title":{"62":{}},"content":{"22":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"47":{},"58":{},"62":{}},"tags":{}}],["numberformatbaseprop",{"_index":261,"title":{"47":{},"58":{}},"content":{"28":{},"29":{},"30":{}},"tags":{}}],["numer",{"_index":47,"title":{"27":{}},"content":{"8":{},"9":{},"12":{},"13":{},"16":{},"18":{},"19":{},"22":{},"26":{},"29":{},"44":{},"45":{},"47":{},"51":{},"55":{},"56":{},"58":{},"61":{},"63":{}},"tags":{}}],["numericformat",{"_index":204,"title":{"28":{},"60":{}},"content":{"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"9":{},"10":{},"11":{},"16":{},"25":{},"26":{},"28":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"60":{}},"tags":{}}],["numericformatprop",{"_index":490,"title":{"44":{},"45":{},"46":{},"47":{}},"content":{},"tags":{}}],["numericformatt",{"_index":489,"title":{"44":{}},"content":{"44":{}},"tags":{}}],["numstr",{"_index":42,"title":{"44":{},"55":{}},"content":{"22":{},"24":{},"28":{},"29":{},"45":{},"56":{}},"tags":{}}],["numstring(non",{"_index":497,"title":{},"content":{"44":{},"55":{}},"tags":{}}],["object",{"_index":570,"title":{"18":{},"20":{}},"content":{"9":{},"18":{},"19":{},"20":{}},"tags":{}}],["object.assign",{"_index":370,"title":{},"content":{"30":{}},"tags":{}}],["on",{"_index":73,"title":{},"content":{"22":{},"25":{}},"tags":{}}],["onchang",{"_index":349,"title":{},"content":{"7":{},"19":{},"30":{}},"tags":{}}],["onchange/onfocus/onblur",{"_index":612,"title":{},"content":{"19":{}},"tags":{}}],["onkeydown",{"_index":186,"title":{},"content":{"25":{},"29":{}},"tags":{}}],["onkeydown(",{"_index":318,"title":{},"content":{"29":{}},"tags":{}}],["onkeydown/onkeyup",{"_index":145,"title":{},"content":{"22":{}},"tags":{}}],["onkeydown={(",{"_index":375,"title":{},"content":{"30":{}},"tags":{}}],["onkeydown={_onkeydown",{"_index":325,"title":{},"content":{"29":{}},"tags":{}}],["onkeydown={onkeydown",{"_index":200,"title":{},"content":{"25":{}},"tags":{}}],["onvaluechang",{"_index":283,"title":{"9":{}},"content":{"19":{},"29":{}},"tags":{}}],["onvaluechange={(valu",{"_index":369,"title":{},"content":{"9":{},"30":{}},"tags":{}}],["oppos",{"_index":268,"title":{},"content":{"29":{}},"tags":{}}],["option",{"_index":605,"title":{},"content":{"19":{}},"tags":{}}],["order",{"_index":328,"title":{},"content":{"30":{}},"tags":{}}],["outsid",{"_index":271,"title":{},"content":{"29":{}},"tags":{}}],["paramet",{"_index":495,"title":{},"content":{"9":{},"44":{},"45":{},"55":{},"56":{}},"tags":{}}],["parent",{"_index":41,"title":{},"content":{"22":{}},"tags":{}}],["parenthes",{"_index":262,"title":{"29":{}},"content":{"29":{}},"tags":{}}],["particularli",{"_index":575,"title":{},"content":{"9":{},"20":{}},"tags":{}}],["pass",{"_index":106,"title":{},"content":{"2":{},"3":{},"8":{},"9":{},"10":{},"11":{},"18":{},"19":{},"22":{},"44":{},"47":{},"51":{},"55":{},"58":{},"61":{}},"tags":{}}],["password",{"_index":592,"title":{},"content":{"11":{}},"tags":{}}],["patch",{"_index":504,"title":{},"content":{"45":{},"46":{},"47":{},"56":{},"57":{},"58":{}},"tags":{}}],["patterformat",{"_index":205,"title":{},"content":{"25":{}},"tags":{}}],["pattern",{"_index":250,"title":{"30":{}},"content":{"8":{},"12":{},"13":{},"14":{},"16":{},"28":{},"30":{},"50":{},"52":{},"60":{}},"tags":{}}],["patternchar",{"_index":523,"title":{"52":{}},"content":{"50":{},"51":{},"52":{}},"tags":{}}],["patternformat",{"_index":404,"title":{"60":{}},"content":{"8":{},"16":{},"49":{},"50":{},"51":{},"52":{},"60":{}},"tags":{}}],["patternformatprop",{"_index":532,"title":{"55":{},"56":{},"57":{},"58":{}},"content":{},"tags":{}}],["patternformatt",{"_index":531,"title":{"55":{}},"content":{"55":{}},"tags":{}}],["persiannumer",{"_index":221,"title":{},"content":{"27":{}},"tags":{}}],["persiannumeral.indexof($1",{"_index":232,"title":{},"content":{"27":{}},"tags":{}}],["persiannumeral[number($1",{"_index":227,"title":{},"content":{"27":{}},"tags":{}}],["persiannumeral[number(curchar",{"_index":243,"title":{},"content":{"27":{}},"tags":{}}],["persiannumeral[number(newchar",{"_index":245,"title":{},"content":{"27":{}},"tags":{}}],["phone",{"_index":411,"title":{},"content":{"60":{}},"tags":{}}],["place",{"_index":20,"title":{},"content":{"22":{},"44":{},"46":{},"51":{},"55":{},"57":{}},"tags":{}}],["placehold",{"_index":524,"title":{},"content":{"50":{}},"tags":{}}],["point",{"_index":459,"title":{},"content":{"18":{},"36":{}},"tags":{}}],["posit",{"_index":25,"title":{},"content":{"22":{},"46":{},"51":{},"57":{}},"tags":{}}],["post",{"_index":620,"title":{},"content":{"19":{}},"tags":{}}],["predefin",{"_index":341,"title":{},"content":{"30":{}},"tags":{}}],["prefix",{"_index":194,"title":{"39":{}},"content":{"8":{},"9":{},"14":{},"25":{},"28":{},"29":{},"39":{}},"tags":{}}],["prefix/suffix",{"_index":602,"title":{},"content":{"18":{},"19":{}},"tags":{}}],["present",{"_index":301,"title":{},"content":{"29":{}},"tags":{}}],["press",{"_index":116,"title":{},"content":{"22":{},"29":{},"34":{}},"tags":{}}],["primari",{"_index":16,"title":{},"content":{"22":{}},"tags":{}}],["prior",{"_index":560,"title":{},"content":{"8":{}},"tags":{}}],["product",{"_index":15,"title":{},"content":{"22":{}},"tags":{}}],["prop",{"_index":40,"title":{"1":{},"12":{},"31":{},"42":{},"44":{},"45":{},"46":{},"47":{},"48":{},"53":{},"55":{},"56":{},"57":{},"58":{}},"content":{"2":{},"3":{},"6":{},"8":{},"9":{},"10":{},"12":{},"18":{},"19":{},"20":{},"22":{},"24":{},"25":{},"26":{},"28":{},"29":{},"30":{},"42":{},"44":{},"45":{},"47":{},"53":{},"55":{},"56":{},"58":{},"61":{}},"tags":{}}],["properli",{"_index":420,"title":{},"content":{"61":{}},"tags":{}}],["props.nam",{"_index":373,"title":{},"content":{"30":{}},"tags":{}}],["props.prefix",{"_index":306,"title":{},"content":{"29":{}},"tags":{}}],["props.prefix.length",{"_index":323,"title":{},"content":{"29":{}},"tags":{}}],["props.suffix",{"_index":307,"title":{},"content":{"29":{}},"tags":{}}],["provid",{"_index":122,"title":{},"content":{"4":{},"9":{},"19":{},"22":{},"25":{},"51":{},"60":{}},"tags":{}}],["put",{"_index":63,"title":{},"content":{"22":{}},"tags":{}}],["quartet",{"_index":333,"title":{},"content":{"30":{}},"tags":{}}],["quirk",{"_index":593,"title":{"17":{},"19":{}},"content":{},"tags":{}}],["react",{"_index":2,"title":{"10":{}},"content":{"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"13":{},"16":{},"22":{},"24":{},"25":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"49":{},"50":{},"51":{},"52":{},"60":{},"62":{}},"tags":{}}],["react.component NumericFormat and PatternFormat","sectionRoute":"/react-number-format/docs/migration#numberformat---numericformat-and-patternformat","type":"docs"},{"id":3,"pageTitle":"","sectionTitle":"isNumericString -> valueIsNumericString","sectionRoute":"/react-number-format/docs/migration#isnumericstring---valueisnumericstring","type":"docs"},{"id":4,"pageTitle":"","sectionTitle":"Function values for format and removeFormatting are handled in NumberFormatBase.","sectionRoute":"/react-number-format/docs/migration#function-values-for-format-and-removeformatting-are-handled-in-numberformatbase","type":"docs"},{"id":5,"pageTitle":"","sectionTitle":"customNumerals Array","sectionRoute":"/react-number-format/docs/migration#customnumerals-arraystring","type":"docs"},{"id":31,"pageTitle":"","sectionTitle":"Props","sectionRoute":"/react-number-format/docs/numeric_format","type":"docs"},{"id":32,"pageTitle":"","sectionTitle":"allowLeadingZeros boolean","sectionRoute":"/react-number-format/docs/numeric_format#allowleadingzeros-boolean","type":"docs"},{"id":33,"pageTitle":"","sectionTitle":"allowNegative boolean","sectionRoute":"/react-number-format/docs/numeric_format#allownegative-boolean","type":"docs"},{"id":34,"pageTitle":"","sectionTitle":"allowedDecimalSeparators Array","sectionRoute":"/react-number-format/docs/numeric_format#alloweddecimalseparators-arraystring","type":"docs"},{"id":35,"pageTitle":"","sectionTitle":"customInput React.Component","sectionRoute":"/react-number-format/docs/numeric_format#custominput-reactcomponentany","type":"docs"},{"id":36,"pageTitle":"","sectionTitle":"decimalScale number","sectionRoute":"/react-number-format/docs/numeric_format#decimalscale-number","type":"docs"},{"id":37,"pageTitle":"","sectionTitle":"decimalSeparator string","sectionRoute":"/react-number-format/docs/numeric_format#decimalseparator-string","type":"docs"},{"id":38,"pageTitle":"","sectionTitle":"fixedDecimalScale boolean","sectionRoute":"/react-number-format/docs/numeric_format#fixeddecimalscale-boolean","type":"docs"},{"id":39,"pageTitle":"","sectionTitle":"prefix string","sectionRoute":"/react-number-format/docs/numeric_format#prefix-string","type":"docs"},{"id":40,"pageTitle":"","sectionTitle":"suffix string","sectionRoute":"/react-number-format/docs/numeric_format#suffix-string","type":"docs"},{"id":41,"pageTitle":"","sectionTitle":"thousandsGroupStyle string","sectionRoute":"/react-number-format/docs/numeric_format#thousandsgroupstyle-string","type":"docs"},{"id":42,"pageTitle":"","sectionTitle":"Common Props","sectionRoute":"/react-number-format/docs/numeric_format#common-props","type":"docs"},{"id":43,"pageTitle":"","sectionTitle":"Other exports","sectionRoute":"/react-number-format/docs/numeric_format#other-exports","type":"docs"},{"id":44,"pageTitle":"","sectionTitle":"numericFormatter (numString: string, props: NumericFormatProps) => string","sectionRoute":"/react-number-format/docs/numeric_format#numericformatter-numstring-string-props-numericformatprops--string","type":"docs"},{"id":45,"pageTitle":"","sectionTitle":"removeNumericFormat (inputValue: string, changeMeta: ChangeMeta, props: NumericFormatProps) => string","sectionRoute":"/react-number-format/docs/numeric_format#removenumericformat-inputvalue-string-changemeta-changemeta-props-numericformatprops--string","type":"docs"},{"id":46,"pageTitle":"","sectionTitle":"getNumericCaretBoundary (formattedValue: string, props: NumericFormatProps) => Array","sectionRoute":"/react-number-format/docs/numeric_format#getnumericcaretboundary-formattedvalue-string-props-numericformatprops--arrayboolean","type":"docs"},{"id":47,"pageTitle":"","sectionTitle":"useNumericFormat: (props: NumericFormatProps) => NumberFormatBaseProps","sectionRoute":"/react-number-format/docs/numeric_format#usenumericformat-props-numericformatprops--numberformatbaseprops","type":"docs"},{"id":10,"pageTitle":"","sectionTitle":"Props","sectionRoute":"/react-number-format/docs/pattern_format","type":"docs"},{"id":11,"pageTitle":"","sectionTitle":"allowEmptyFormatting boolean","sectionRoute":"/react-number-format/docs/pattern_format#allowemptyformatting-boolean","type":"docs"},{"id":12,"pageTitle":"","sectionTitle":"format string","sectionRoute":"/react-number-format/docs/pattern_format#format-string","type":"docs"},{"id":13,"pageTitle":"","sectionTitle":"mask string | Array","sectionRoute":"/react-number-format/docs/pattern_format#mask-string--arraystring","type":"docs"},{"id":14,"pageTitle":"","sectionTitle":"patternChar string","sectionRoute":"/react-number-format/docs/pattern_format#patternchar-string","type":"docs"},{"id":15,"pageTitle":"","sectionTitle":"Common Props","sectionRoute":"/react-number-format/docs/pattern_format#common-props","type":"docs"},{"id":16,"pageTitle":"","sectionTitle":"Other exports","sectionRoute":"/react-number-format/docs/pattern_format#other-exports","type":"docs"},{"id":17,"pageTitle":"","sectionTitle":"patternFormatter (numString: string, props: PatternFormatProps) => string","sectionRoute":"/react-number-format/docs/pattern_format#patternformatter-numstring-string-props-patternformatprops--string","type":"docs"},{"id":18,"pageTitle":"","sectionTitle":"removePatternFormat (inputValue: string, changeMeta: ChangeMeta, props: PatternFormatProps) => string","sectionRoute":"/react-number-format/docs/pattern_format#removepatternformat-inputvalue-string-changemeta-changemeta-props-patternformatprops--string","type":"docs"},{"id":19,"pageTitle":"","sectionTitle":"getPatternCaretBoundary (formattedValue: string, props: PatternFormatProps) => Array","sectionRoute":"/react-number-format/docs/pattern_format#getpatterncaretboundary-formattedvalue-string-props-patternformatprops--arrayboolean","type":"docs"},{"id":20,"pageTitle":"","sectionTitle":"usePatternFormat: (props: PatternFormatProps) => NumberFormatBaseProps","sectionRoute":"/react-number-format/docs/pattern_format#usepatternformat-props-patternformatprops--numberformatbaseprops","type":"docs"},{"id":52,"pageTitle":"","sectionTitle":"Common Props","sectionRoute":"/react-number-format/docs/props","type":"docs"},{"id":53,"pageTitle":"","sectionTitle":"customInput React.Component","sectionRoute":"/react-number-format/docs/props#custominput-reactcomponentany","type":"docs"},{"id":54,"pageTitle":"","sectionTitle":"value number | string","sectionRoute":"/react-number-format/docs/props#value-number--string","type":"docs"},{"id":55,"pageTitle":"","sectionTitle":"defaultValue number | string","sectionRoute":"/react-number-format/docs/props#defaultvalue-number--string","type":"docs"},{"id":56,"pageTitle":"","sectionTitle":"displayType text | input","sectionRoute":"/react-number-format/docs/props#displaytype-text--input","type":"docs"},{"id":57,"pageTitle":"","sectionTitle":"getInputRef elm => void","sectionRoute":"/react-number-format/docs/props#getinputref-elm--void","type":"docs"},{"id":58,"pageTitle":"","sectionTitle":"isAllowed (values) => boolean","sectionRoute":"/react-number-format/docs/props#isallowed-values--boolean","type":"docs"},{"id":59,"pageTitle":"","sectionTitle":"valueIsNumericString boolean","sectionRoute":"/react-number-format/docs/props#valueisnumericstring-boolean","type":"docs"},{"id":60,"pageTitle":"","sectionTitle":"onValueChange (values, sourceInfo) => {}","sectionRoute":"/react-number-format/docs/props#onvaluechange-values-sourceinfo--","type":"docs"},{"id":61,"pageTitle":"","sectionTitle":"renderText (formattedValue, customProps) => React Element","sectionRoute":"/react-number-format/docs/props#rendertext-formattedvalue-customprops--react-element","type":"docs"},{"id":62,"pageTitle":"","sectionTitle":"type string","sectionRoute":"/react-number-format/docs/props#type-string","type":"docs"},{"id":63,"pageTitle":"","sectionTitle":"Other Props","sectionRoute":"/react-number-format/docs/props#other-props","type":"docs"},{"id":48,"pageTitle":"","sectionTitle":"Notes & Quirks","sectionRoute":"/react-number-format/docs/quirks","type":"docs"},{"id":49,"pageTitle":"","sectionTitle":"Values object","sectionRoute":"/react-number-format/docs/quirks#values-object","type":"docs"},{"id":50,"pageTitle":"","sectionTitle":"Notes and quirks","sectionRoute":"/react-number-format/docs/quirks#notes-and-quirks","type":"docs"},{"id":51,"pageTitle":"","sectionTitle":"SourceInfo object","sectionRoute":"/react-number-format/docs/quirks#sourceinfo-object","type":"docs"}],"index":{"version":"2.3.9","fields":["title","content","tags"],"fieldVectors":[["title/21",[0,1.713]],["content/21",[]],["tags/21",[]],["title/22",[1,4.012]],["content/22",[0,1.083,2,0.492,3,0.326,4,0.28,5,0.902,6,1.165,7,1.165,8,1.165,9,1.165,10,1.006,11,0.902,12,0.665,13,2.083,14,2.111,15,1.165,16,1.165,17,1.006,18,1.581,19,1.444,20,0.71,21,0.522,22,2.042,23,1.006,24,2.899,25,3.124,26,2.042,27,1.165,28,1.761,29,0.71,30,1.165,31,1.006,32,2.042,33,1.165,34,1.165,35,1.165,36,0.507,37,0.902,38,1.165,39,1.165,40,0.332,41,1.165,42,0.627,43,1.212,44,0.132,45,1.473,46,1.165,47,1.243,48,0.902,49,1.581,50,0.824,51,0.901,52,2.042,53,2.127,54,0.665,55,1.581,56,1.581,57,0.824,58,0.824,59,3.274,60,1.165,61,0.888,62,1.165,63,1.165,64,0.627,65,1.165,66,1.577,67,1.165,68,1.165,69,1.661,70,1.444,71,1.166,72,0.522,73,1.006,74,1.165,75,1.313,76,1.165,77,1.165,78,1.165,79,0.592,80,2.042,81,1.165,82,0.824,83,1.165,84,0.71,85,1.165,86,1.244,87,2.042,88,1.165,89,1.165,90,1.335,91,0.703,92,1.165,93,1.165,94,1.165,95,1.165,96,1.165,97,0.561,98,1.166,99,1.165,100,1.165,101,1.165,102,1.165,103,1.165,104,1.831,105,1.165,106,0.44,107,1.165,108,0.902,109,0.983,110,1.038,111,1.244,112,1.335,113,0.902,114,1.006,115,2.726,116,1.581,117,1.782,118,0.902,119,1.165,120,1.165,121,0.824,122,0.665,123,0.902,124,0.71,125,0.902,126,1.006,127,0.824,128,1.764,129,1.444,130,0.902,131,0.902,132,0.847,133,1.006,134,2.042,135,1.006,136,1.006,137,1.165,138,1.165,139,0.71,140,1.165,141,0.522,142,0.902,143,1.006,144,0.762,145,1.165,146,1.165]],["tags/22",[]],["title/23",[110,2.633]],["content/23",[3,0.545,4,0.302,12,2.932,13,2.609,57,3.631,110,2.609,111,3.128,141,1.313,147,5.133,148,3.974,149,4.435,150,5.133,151,3.631]],["tags/23",[]],["title/24",[4,0.181,152,3.786,153,1.924]],["content/24",[2,0.688,3,0.303,4,0.249,36,2.268,40,0.464,42,2.804,44,0.147,45,1.507,51,1.965,79,1.936,86,2.321,110,1.936,113,4.036,154,0.786,155,3.809,156,3.809,157,3.809,158,3.29,159,3.809,160,3.809,161,2.949,162,3.29,163,0.688,164,3.29,165,2.49,166,2.694,167,1.936]],["tags/24",[]],["title/25",[165,2.475,166,2.678,167,1.924]],["content/25",[0,0.634,2,0.346,3,0.247,4,0.149,19,1.355,29,1.168,36,1.708,40,0.234,44,0.151,45,0.758,51,1.298,55,1.484,66,0.923,69,1.168,73,1.655,79,2.525,84,2.392,86,1.895,90,1.253,91,0.362,104,0.794,110,0.974,122,1.094,127,1.355,141,0.49,154,0.395,162,1.655,163,0.346,165,1.253,166,1.355,167,0.974,168,1.655,169,2.408,170,3.904,171,1.655,172,2.687,173,1.655,174,1.655,175,1.655,176,2.687,177,1.655,178,1.655,179,1.031,180,1.484,181,1.655,182,2.687,183,1.655,184,2.408,185,1.916,186,1.655,187,2.687,188,2.687,189,1.655,190,1.655,191,1.655,192,1.916,193,1.916,194,1.031,195,1.916,196,1.916,197,1.916,198,3.11,199,1.484,200,1.916,201,1.916,202,1.168,203,1.655,204,0.45,205,0.974,206,1.484,207,2.687,208,1.484,209,1.168,210,1.355,211,1.253,212,1.916,213,1.916,214,1.916]],["tags/25",[]],["title/26",[165,2.181,166,2.36,167,1.696,209,2.033]],["content/26",[0,0.877,4,0.192,12,1.515,36,1.747,40,0.489,44,0.152,45,1.049,47,0.804,51,1.602,55,2.053,79,2.462,84,2.446,86,1.616,110,1.348,139,1.616,163,0.479,164,2.291,168,2.291,169,2.053,170,4.668,171,2.291,172,3.468,173,2.291,174,2.291,175,2.291,176,3.468,177,2.291,178,2.291,179,1.427,180,2.053,181,2.291,182,3.468,183,2.291,184,3.109,204,0.623,209,2.446,215,2.291,216,2.652,217,3.468,218,1.876,219,2.652,220,1.876]],["tags/26",[]],["title/27",[0,1.252,47,1.148,110,1.924]],["content/27",[4,0.111,36,1.01,44,0.152,45,0.918,48,1.797,51,1.666,79,3.507,84,2.208,114,2.005,128,2.005,132,0.962,133,2.005,135,2.005,163,0.419,169,2.806,217,3.131,218,1.642,220,1.642,221,2.321,222,2.321,223,1.797,224,3.624,225,2.321,226,2.321,227,2.321,228,2.321,229,2.321,230,2.321,231,2.321,232,2.321,233,2.321,234,2.321,235,3.624,236,3.624,237,2.321,238,3.624,239,2.321,240,3.624,241,2.321,242,3.624,243,2.321,244,3.624,245,2.321,246,2.321,247,2.321]],["tags/27",[]],["title/28",[204,1.028,248,3.094]],["content/28",[4,0.151,36,1.376,40,0.655,42,1.7,44,0.15,45,1.251,51,1.512,79,2.991,129,2.236,132,2.227,161,2.448,163,0.571,194,2.459,202,1.926,204,0.743,218,2.236,220,2.236,223,2.448,248,3.799,249,3.162,250,1.446,251,3.162,252,3.162,253,1.926,254,2.448,255,3.162,256,3.162,257,2.731,258,2.236,259,3.162,260,2.786,261,2.99]],["tags/28",[]],["title/29",[3,0.237,141,0.763,151,2.109,262,2.576,263,2.576]],["content/29",[3,0.24,4,0.088,5,0.806,17,0.899,18,0.806,28,0.994,31,0.899,36,0.453,40,0.225,42,0.56,44,0.152,45,0.731,47,0.316,50,0.736,51,1.371,61,0.804,64,0.994,70,0.736,75,0.89,79,2.806,84,1.126,86,0.634,91,1.158,98,1.056,104,0.431,116,0.806,117,1.63,132,1.434,148,0.806,151,1.307,161,0.806,163,0.188,186,0.899,187,1.597,189,2.154,194,1.86,199,1.431,202,1.519,207,0.899,218,0.736,220,0.736,223,0.806,260,2.108,261,1.208,262,0.899,263,0.899,264,1.04,265,0.806,266,1.04,267,1.848,268,1.04,269,1.04,270,1.04,271,1.848,272,1.04,273,1.04,274,3.02,275,5.522,276,1.04,277,1.04,278,1.04,279,1.04,280,1.04,281,1.04,282,0.899,283,2.338,284,1.848,285,1.04,286,1.848,287,1.04,288,2.493,289,1.04,290,1.04,291,1.04,292,1.04,293,1.04,294,1.848,295,1.208,296,1.975,297,1.04,298,3.459,299,0.806,300,0.806,301,1.04,302,0.899,303,1.04,304,1.04,305,0.899,306,1.04,307,1.04,308,1.04,309,1.848,310,1.04,311,1.848,312,1.307,313,1.04,314,1.04,315,1.848,316,1.04,317,1.04,318,1.848,319,0.56,320,1.04,321,1.04,322,1.04,323,1.04,324,1.04,325,1.04]],["tags/29",[]],["title/30",[21,0.763,167,1.516,250,1.364,326,2.576,327,2.576]],["content/30",[3,0.162,4,0.156,21,0.523,23,1.766,36,0.889,40,0.5,44,0.149,56,1.583,61,0.889,66,0.984,71,1.168,79,1.666,84,1.997,91,0.775,109,0.984,110,1.666,125,1.583,136,1.766,139,1.246,144,2.143,163,0.369,167,1.666,188,1.766,191,1.766,199,1.583,215,1.766,250,0.935,261,1.337,326,3.544,327,3.544,328,2.044,329,1.766,330,1.583,331,2.044,332,1.446,333,2.044,334,2.044,335,2.831,336,3.277,337,2.044,338,2.044,339,2.044,340,2.044,341,2.044,342,2.044,343,2.044,344,2.044,345,2.044,346,2.044,347,2.044,348,2.044,349,3.176,350,2.044,351,3.277,352,2.044,353,1.583,354,2.044,355,2.044,356,2.044,357,4.102,358,2.044,359,2.044,360,2.044,361,2.044,362,2.044,363,2.044,364,2.044,365,2.044,366,2.044,367,2.044,368,2.044,369,1.766,370,2.044,371,2.044,372,1.583,373,2.044,374,2.044,375,2.044,376,2.044,377,2.044,378,2.044,379,2.044,380,1.766,381,1.766]],["tags/30",[]],["title/6",[382,3.779,383,3.387]],["content/6",[2,0.846,3,0.372,4,0.285,21,1.529,24,3.313,28,2.519,43,1.009,47,1.421,91,0.885,125,3.626,250,2.142,329,4.046,332,3.313,384,4.046,385,4.684,386,4.684,387,4.684,388,4.684,389,4.684,390,2.854,391,4.684,392,4.684]],["tags/6",[]],["title/7",[203,4.476]],["content/7",[0,2.033,3,0.389,4,0.337,10,4.232,11,3.792,21,1.573,112,3.203,149,4.232,194,2.635,250,2.24,260,2.985,390,2.985,393,4.232,394,3.792,395,4.232]],["tags/7",[]],["title/8",[163,0.935]],["content/8",[163,1.068,396,2.704,397,5.913,398,5.913,399,5.913]],["tags/8",[]],["title/9",[400,4.476]],["content/9",[2,1.208,3,0.531,4,0.341,29,2.598,44,0.13,47,1.293,141,1.439,154,1.16,204,1.002,205,2.167,250,1.95,400,3.684,401,5.624,402,5.624,403,4.264]],["tags/9",[]],["title/1",[404,4.375,405,4.375]],["content/1",[]],["tags/1",[]],["title/2",[44,0.065,204,0.784,205,1.696,208,2.583]],["content/2",[0,1.653,2,1.039,3,0.539,4,0.313,21,1.279,44,0.127,66,1.727,113,2.776,122,2.048,153,2.541,154,1.188,165,2.344,180,2.776,204,1.175,205,2.541,208,3.871,250,1.64,319,1.928,396,1.64,406,2.776,407,3.871,408,3.585,409,3.585,410,3.585,411,3.585,412,3.585,413,3.585,414,3.585]],["tags/2",[]],["title/3",[44,0.074,415,3.27,416,2.036]],["content/3",[3,0.505,4,0.303,40,0.695,43,1.37,47,1.32,75,2.095,91,0.822,97,2.095,104,1.804,106,1.644,112,2.845,372,3.368,407,3.368,415,3.758,416,2.34,417,4.351,418,3.077,419,4.351,420,4.351,421,4.351,422,4.351,423,4.351,424,4.351,425,4.351]],["tags/3",[]],["title/4",[4,0.129,36,1.173,45,1.067,48,2.088,91,0.509,98,1.54]],["content/4",[0,2.033,2,0.884,3,0.389,4,0.321,11,3.792,36,2.675,44,0.095,45,1.938,141,1.253,153,3.125,154,1.011,384,4.232,407,3.792,426,4.898,427,4.898]],["tags/4",[]],["title/5",[428,4.375,429,3.387]],["content/5",[0,1.739,3,0.418,5,4.975,47,1.949,50,4.545,110,2.673,148,4.072,396,2.405,430,5.259,431,5.259,432,5.259]],["tags/5",[]],["title/31",[40,0.632]],["content/31",[]],["tags/31",[]],["title/32",[53,2.499,433,3.779]],["content/32",[2,0.726,3,0.32,4,0.192,18,3.115,21,1.564,44,0.119,50,2.846,61,1.751,64,2.164,66,2.606,72,1.384,154,0.83,163,0.726,167,2.75,179,2.164,204,1.271,433,4.674,434,4.023,435,4.023,436,6.113,437,6.113,438,3.476,439,3.476,440,3.476,441,4.023,442,2.298]],["tags/32",[]],["title/33",[53,2.499,300,3.387]],["content/33",[2,0.884,3,0.488,4,0.234,44,0.131,61,2.131,64,2.635,66,2.359,72,1.253,91,0.925,151,3.464,154,1.011,163,0.884,179,2.635,184,3.792,204,1.444,300,3.792]],["tags/33",[]],["title/34",[429,3.387,443,3.779]],["content/34",[2,0.846,3,0.372,4,0.224,44,0.135,72,1.198,104,1.942,111,3.642,112,3.908,116,3.626,141,1.198,154,0.966,163,0.846,204,1.404,443,4.046,444,2.142,445,4.046,446,4.684,447,4.684]],["tags/34",[]],["title/35",[448,3.387,449,3.779]],["content/35",[0,1.5,2,0.819,3,0.465,4,0.28,12,2.59,21,1.16,44,0.138,66,2.184,72,1.16,154,1.208,163,0.819,204,1.375,442,2.59,450,3.208,451,3.208,452,3.918,453,3.918,454,3.918,455,3.918]],["tags/35",[]],["title/36",[3,0.348,456,3.387]],["content/36",[2,0.884,3,0.488,4,0.234,44,0.131,71,2.798,72,1.253,111,2.985,154,1.011,163,0.884,204,1.444,335,4.232,444,2.24,457,4.898,458,4.232,459,4.898,460,4.232]],["tags/36",[]],["title/37",[43,0.943,121,3.094]],["content/37",[2,0.916,3,0.403,4,0.242,44,0.139,71,2.897,72,1.298,104,2.103,111,3.091,121,3.588,154,1.047,163,0.916,204,1.476,461,5.072]],["tags/37",[]],["title/38",[53,2.499,462,3.779]],["content/38",[2,0.846,3,0.372,4,0.224,29,2.854,44,0.128,54,2.675,61,2.038,64,2.519,72,1.198,121,3.313,154,0.966,163,0.846,179,2.519,204,1.404,439,4.046,440,4.046,456,3.626,460,4.046,462,4.046,463,4.046,464,4.684]],["tags/38",[]],["title/39",[43,0.943,194,2.353]],["content/39",[2,0.895,3,0.394,4,0.237,21,1.268,29,3.019,44,0.131,90,3.24,91,0.936,104,2.054,154,1.022,163,0.895,194,3.331,204,1.455,465,4.955,466,4.281]],["tags/39",[]],["title/40",[43,0.943,260,2.666]],["content/40",[2,0.895,3,0.394,4,0.237,21,1.268,29,3.019,44,0.137,72,1.268,91,0.936,154,1.022,163,0.895,204,1.455,260,3.774,444,2.266,467,3.836]],["tags/40",[]],["title/41",[43,0.943,468,4.375]],["content/41",[2,0.733,3,0.323,4,0.194,12,2.32,44,0.14,71,2.32,72,1.039,109,1.956,154,0.838,158,5.669,163,0.733,204,1.279,353,3.145,393,5.306,442,2.32,469,4.062,470,3.145,471,4.062,472,4.062,473,4.062,474,4.062,475,4.062,476,4.062,477,4.062,478,3.509,479,3.509]],["tags/41",[]],["title/42",[40,0.533,253,2.666]],["content/42",[21,1.397,40,0.801,54,3.119,153,2.775,253,3.327,312,3.862,396,2.497,480,4.228,481,3.327,482,3.57]],["tags/42",[]],["title/43",[483,4.012]],["content/43",[0,1.903,97,2.771,141,1.472,484,4.971,485,4.971,486,4.971,487,4.971]],["tags/43",[]],["title/44",[40,0.3,42,1.323,43,0.817,44,0.048,488,2.125,489,1.74]],["content/44",[3,0.5,4,0.332,13,2.167,20,2.598,40,0.686,43,0.919,47,1.293,49,3.301,51,1.86,75,2.053,90,2.788,91,0.805,106,1.611,123,3.301,141,1.091,265,3.301,488,3.684,490,3.301,491,3.684,492,2.788,493,3.301,494,2.788,495,3.016,496,3.684,497,3.016]],["tags/44",[]],["title/45",[40,0.255,43,0.72,44,0.041,489,1.481,498,1.809,499,1.481,500,2.363]],["content/45",[0,1.45,3,0.485,4,0.273,13,2.229,21,0.764,28,2.359,40,0.535,42,1.606,43,0.945,44,0.085,47,0.905,51,1.719,57,2.111,69,1.819,75,1.438,91,1.082,98,1.705,104,1.238,108,2.311,109,2.758,124,2.672,129,2.111,130,2.311,131,2.311,141,0.764,142,2.311,206,2.311,210,2.111,211,1.952,258,2.111,319,2.359,330,2.311,383,3.395,494,1.952,495,2.111,497,2.111,498,2.579,499,2.111,500,2.111,501,2.579,502,2.579,503,2.672,504,2.579,505,2.111,506,1.517,507,2.579,508,2.579,509,2.579,510,3.788,511,2.579]],["tags/45",[]],["title/46",[40,0.3,43,0.53,44,0.048,132,1.02,489,1.74,512,2.46,513,2.125]],["content/46",[1,3.368,4,0.208,13,2.896,20,2.651,24,3.077,25,3.077,45,1.721,51,1.884,58,3.077,69,2.651,70,3.077,75,2.095,82,4.031,91,0.822,97,2.095,98,2.485,124,2.651,132,1.804,254,3.368,332,3.077,396,1.99,503,2.651,506,2.211,514,3.758,515,3.758,516,3.758,517,3.758,518,2.651]],["tags/46",[]],["title/47",[40,0.364,44,0.058,210,2.109,261,1.95,489,2.109]],["content/47",[0,1.976,4,0.224,36,2.601,40,0.571,47,1.421,51,1.976,97,2.256,106,2.258,139,2.854,141,1.198,210,4.228,211,3.062,299,3.626,396,2.142,406,3.626,503,2.854,506,2.38,518,2.854,519,4.046]],["tags/47",[]],["title/10",[40,0.632]],["content/10",[]],["tags/10",[]],["title/11",[53,2.499,248,3.094]],["content/11",[2,0.747,3,0.329,4,0.296,19,3.901,44,0.14,61,1.801,64,2.227,72,1.411,91,1.042,154,0.854,163,0.747,179,2.227,202,2.523,205,3.152,248,3.901,305,4.765,444,1.893,450,2.928,451,2.928,520,3.577,521,3.577]],["tags/11",[]],["title/12",[4,0.209,43,0.943]],["content/12",[2,0.819,3,0.465,4,0.31,44,0.144,71,2.59,72,1.16,104,2.427,141,1.16,154,0.936,163,0.819,205,2.975,250,2.074,444,2.074,522,3.208,523,4.535,524,4.535]],["tags/12",[]],["title/13",[43,0.719,44,0.065,394,2.583,429,2.583]],["content/13",[2,0.676,3,0.409,4,0.246,14,2.897,20,2.28,25,3.643,44,0.137,47,1.786,58,2.647,72,0.957,82,2.647,104,2.758,106,1.414,122,2.942,141,0.957,154,0.772,163,0.676,205,2.617,394,4.912,416,2.013,444,1.711,463,3.233,521,3.233,522,2.647,525,3.742,526,2.447,527,3.742]],["tags/13",[]],["title/14",[43,0.943,522,3.094]],["content/14",[2,0.874,3,0.385,4,0.319,44,0.141,71,2.766,72,1.239,104,2.008,154,0.999,163,0.874,205,3.103,250,2.215,522,3.425,528,4.843,529,4.843]],["tags/14",[]],["title/15",[40,0.533,253,2.666]],["content/15",[21,1.397,40,0.801,54,3.119,153,2.775,253,3.327,312,3.862,396,2.497,480,4.228,481,3.327,482,3.57]],["tags/15",[]],["title/16",[483,4.012]],["content/16",[0,1.903,97,2.771,141,1.472,484,4.971,485,4.971,486,4.971,487,4.971]],["tags/16",[]],["title/17",[40,0.3,42,1.323,43,0.817,44,0.048,530,2.125,531,1.74]],["content/17",[3,0.5,4,0.332,13,2.167,20,2.598,40,0.686,43,0.919,47,1.293,49,3.301,51,1.86,75,2.053,90,2.788,91,0.805,106,1.611,123,3.301,141,1.091,265,3.301,490,3.301,491,3.684,492,2.788,493,3.301,494,2.788,495,3.016,496,3.684,497,3.016,530,3.684]],["tags/17",[]],["title/18",[40,0.255,43,0.72,44,0.041,499,1.481,500,2.363,531,1.481,532,1.809]],["content/18",[0,1.45,3,0.485,4,0.273,13,2.229,21,0.764,28,2.359,40,0.535,42,1.606,43,0.945,44,0.085,47,0.905,51,1.719,57,2.111,69,1.819,75,1.438,91,1.082,98,1.705,104,1.238,108,2.311,109,2.758,124,2.672,129,2.111,130,2.311,131,2.311,141,0.764,142,2.311,206,2.311,209,1.819,211,1.952,258,2.111,319,2.359,330,2.311,383,3.395,494,1.952,495,2.111,497,2.111,499,2.111,500,2.111,501,2.579,502,2.579,503,2.672,504,2.579,505,2.111,506,1.517,507,2.579,508,2.579,509,2.579,510,3.788,511,2.579,532,2.579]],["tags/18",[]],["title/19",[40,0.3,43,0.53,44,0.048,132,1.02,513,2.125,531,1.74,533,2.46]],["content/19",[1,3.368,4,0.208,13,2.896,20,2.651,24,3.077,25,3.077,45,1.721,51,1.884,58,3.077,69,2.651,70,3.077,75,2.095,82,4.031,91,0.822,97,2.095,98,2.485,124,2.651,132,1.804,254,3.368,332,3.077,396,1.99,503,2.651,506,2.211,514,3.758,515,3.758,516,3.758,517,3.758,518,2.651]],["tags/19",[]],["title/20",[40,0.364,44,0.058,209,1.817,261,1.95,531,2.109]],["content/20",[0,1.976,4,0.224,36,2.601,40,0.571,47,1.421,51,1.976,97,2.256,106,2.258,139,2.854,141,1.198,209,3.642,211,3.062,299,3.626,396,2.142,406,3.626,503,2.854,506,2.38,518,2.854,519,4.046]],["tags/20",[]],["title/52",[40,0.533,253,2.666]],["content/52",[]],["tags/52",[]],["title/53",[448,3.387,449,3.779]],["content/53",[0,1.282,2,0.7,3,0.419,4,0.252,12,2.215,21,0.992,37,3.002,40,0.473,44,0.138,66,1.867,72,0.992,106,1.465,154,1.089,163,0.7,204,1.409,442,2.215,448,4.086,450,2.743,451,4.243,452,4.559,453,3.35,454,3.35,455,3.35,492,2.535,526,2.535,534,3.35,535,3.35,536,3.878]],["tags/53",[]],["title/54",[3,0.265,43,0.719,44,0.065,91,0.63]],["content/54",[2,0.74,3,0.523,4,0.295,21,1.049,40,0.668,43,1.181,44,0.12,61,1.784,72,1.049,91,1.035,97,1.975,106,2.07,154,0.846,163,0.74,167,2.084,204,1.287,396,1.875,416,2.947,418,2.9,444,1.875,467,3.175,470,3.175,518,2.499,537,3.175]],["tags/54",[]],["title/55",[3,0.265,43,0.719,44,0.065,282,2.882]],["content/55",[2,0.884,3,0.389,4,0.234,44,0.137,72,1.573,91,1.269,122,2.798,141,1.253,154,1.011,163,0.884,204,1.444,444,2.24,538,4.898]],["tags/55",[]],["title/56",[21,0.853,44,0.065,390,2.033,482,2.181]],["content/56",[2,0.762,3,0.335,4,0.299,21,1.602,44,0.129,72,1.08,91,1.055,104,1.75,109,2.033,154,0.871,163,0.762,204,1.471,390,3.404,481,2.572,492,3.653,539,3.269,540,3.647,541,4.222,542,4.222,543,5.587,544,3.647]],["tags/56",[]],["title/57",[44,0.065,545,3.336,546,3.336,547,3.336]],["content/57",[2,0.996,3,0.329,4,0.198,21,1.059,40,0.505,44,0.143,45,1.638,51,1.369,72,1.411,153,2.104,154,1.138,204,1.296,380,3.577,381,3.577,450,2.928,481,2.523,482,2.707,483,3.206,506,2.104,535,4.765,548,4.14,549,5.515,550,4.14]],["tags/57",[]],["title/58",[44,0.065,53,1.906,91,0.63,551,2.882]],["content/58",[2,0.688,3,0.303,4,0.182,21,1.334,44,0.145,45,2.062,51,1.724,56,2.949,64,2.048,72,0.974,79,2.649,91,1.122,154,0.786,163,0.688,204,1.225,296,3.408,319,2.048,349,2.949,444,1.742,506,1.936,552,3.809,553,2.694,554,5.213,555,3.809,556,3.809,557,3.809]],["tags/58",[]],["title/59",[53,2.499,416,2.353]],["content/59",[2,0.631,3,0.489,4,0.321,40,0.599,43,1.059,44,0.134,47,1.49,61,2.138,64,1.881,72,0.895,91,0.928,106,2.328,139,2.131,141,0.895,154,0.722,163,0.631,194,1.881,205,2.497,250,1.599,260,2.131,302,3.021,418,3.475,442,1.998,520,3.021,526,2.287,558,4.914,559,3.497,560,3.497,561,3.497,562,3.497]],["tags/59",[]],["title/60",[44,0.085,91,0.563,283,2.309,295,1.95]],["content/60",[2,0.454,3,0.306,4,0.224,21,1.199,28,2.072,40,0.64,43,0.541,44,0.125,47,0.762,54,1.435,61,1.093,72,0.643,91,0.992,97,1.21,106,0.949,117,1.643,118,1.945,122,2.2,126,2.17,132,1.042,141,0.985,144,2.519,154,0.518,163,0.454,167,1.958,190,2.17,194,1.351,204,1.101,295,3.435,296,1.643,319,3.348,369,2.17,372,1.945,395,2.17,396,1.149,416,2.072,442,1.435,444,1.149,466,2.17,470,1.945,494,1.643,518,1.531,553,2.725,563,2.512,564,2.17,565,3.852,566,2.512,567,2.17,568,2.983,569,1.531,570,2.17,571,2.17,572,3.328,573,3.328,574,2.17,575,2.17,576,2.17,577,2.17,578,2.17,579,2.512,580,2.17,581,1.945,582,1.945]],["tags/60",[]],["title/61",[2,0.487,44,0.052,132,1.118,539,2.088,583,2.329,584,2.696]],["content/61",[0,1.33,2,0.726,3,0.32,4,0.192,14,3.115,40,0.66,44,0.127,51,1.33,66,1.937,72,1.029,106,1.52,132,1.668,141,1.029,154,0.83,163,0.726,202,2.452,204,1.271,442,2.298,444,1.84,451,2.846,478,3.476,479,3.476,481,2.452,490,3.115,492,3.538,506,2.045,539,4.189,544,3.476,583,3.476,585,3.476,586,4.023,587,4.023]],["tags/61",[]],["title/62",[43,0.943,109,2.107]],["content/62",[2,0.81,3,0.356,4,0.214,12,2.563,21,1.148,44,0.137,66,2.161,72,1.148,91,0.848,106,1.695,109,2.8,154,0.926,163,0.81,204,1.366,353,3.474,390,3.543,467,3.474,588,4.487,589,4.487,590,3.877,591,4.487]],["tags/62",[]],["title/63",[40,0.632]],["content/63",[4,0.307,21,1.345,40,0.846,47,1.595,54,3.004,153,2.673,250,2.405,312,3.72,480,4.072,481,3.205,482,3.439]],["tags/63",[]],["title/48",[44,0.074,526,2.475,592,3.27]],["content/48",[]],["tags/48",[]],["title/49",[91,0.826,569,2.666]],["content/49",[3,0.361,4,0.297,19,2.22,40,0.715,43,0.676,44,0.114,47,0.952,61,1.979,91,1.295,106,2.021,117,2.052,127,2.22,132,1.886,141,0.803,153,1.595,179,1.688,258,2.22,296,2.974,416,2.446,418,2.22,458,2.711,505,2.22,537,2.43,568,2.43,569,1.912,580,2.711,581,3.521,582,3.521,593,3.138,594,5.349,595,5.067,596,3.138,597,3.138,598,3.138,599,3.929,600,2.711,601,2.711]],["tags/49",[]],["title/50",[526,2.86,592,3.779]],["content/50",[3,0.432,4,0.259,13,1.019,21,1.187,28,1.079,37,1.553,40,0.748,43,0.873,44,0.063,45,0.793,47,0.608,54,1.146,61,1.404,75,0.966,86,1.222,91,1.122,106,1.922,109,1.95,111,1.967,112,1.312,117,1.312,122,2.313,127,2.283,132,0.832,141,1.301,143,1.733,144,3.035,153,1.019,179,1.736,202,1.222,257,1.733,283,2.499,296,1.312,319,2.496,349,2.499,382,2.788,390,1.222,416,1.736,438,1.733,445,1.733,456,1.553,493,1.553,505,1.419,534,1.733,537,1.553,540,1.733,551,1.733,553,1.419,564,1.733,567,1.733,568,2.499,569,1.967,581,1.553,582,1.553,585,1.733,590,1.733,595,3.499,599,2.788,600,1.733,601,1.733,602,2.006,603,2.006,604,2.006,605,2.006,606,2.006,607,2.006,608,2.006,609,2.006,610,2.006,611,2.006,612,2.006,613,2.006,614,2.006,615,2.006,616,2.006,617,2.006,618,2.006,619,2.006,620,2.006,621,2.006,622,2.006,623,2.006,624,2.006,625,2.006]],["tags/50",[]],["title/51",[295,2.86,569,2.666]],["content/51",[28,2.013,40,0.773,44,0.129,91,0.707,109,1.802,118,2.897,124,2.28,141,0.957,144,4.495,295,2.447,319,3.578,553,2.647,569,3.138,570,4.449,571,4.449,572,5.087,573,5.087,574,3.233,575,3.233,576,3.233,577,3.233,578,3.233,626,3.742,627,3.742]],["tags/51",[]]],"invertedIndex":[["",{"_index":44,"title":{"2":{},"3":{},"13":{},"17":{},"18":{},"19":{},"20":{},"44":{},"45":{},"46":{},"47":{},"48":{},"54":{},"55":{},"56":{},"57":{},"58":{},"60":{},"61":{}},"content":{"2":{},"4":{},"9":{},"11":{},"12":{},"13":{},"14":{},"18":{},"22":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"45":{},"49":{},"50":{},"51":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{}},"tags":{}}],["0",{"_index":86,"title":{},"content":{"22":{},"24":{},"25":{},"26":{},"29":{},"50":{}},"tags":{}}],["0${month[0",{"_index":178,"title":{},"content":{"25":{},"26":{}},"tags":{}}],["0${valu",{"_index":197,"title":{},"content":{"25":{}},"tags":{}}],["01",{"_index":183,"title":{},"content":{"25":{},"26":{}},"tags":{}}],["0s",{"_index":439,"title":{},"content":{"32":{},"38":{}},"tags":{}}],["1",{"_index":84,"title":{},"content":{"22":{},"25":{},"26":{},"27":{},"29":{},"30":{}},"tags":{}}],["1,2345,6789",{"_index":477,"title":{},"content":{"41":{}},"tags":{}}],["1000",{"_index":555,"title":{},"content":{"58":{}},"tags":{}}],["111,222",{"_index":267,"title":{},"content":{"29":{}},"tags":{}}],["12",{"_index":184,"title":{},"content":{"25":{},"26":{},"33":{}},"tags":{}}],["12,34,56,789",{"_index":474,"title":{},"content":{"41":{}},"tags":{}}],["123,456,789",{"_index":471,"title":{},"content":{"41":{}},"tags":{}}],["1].match(/\\d",{"_index":95,"title":{},"content":{"22":{}},"tags":{}}],["1st",{"_index":495,"title":{},"content":{"17":{},"18":{},"44":{},"45":{}},"tags":{}}],["2",{"_index":172,"title":{},"content":{"25":{},"26":{}},"tags":{}}],["23,234,235.56",{"_index":593,"title":{},"content":{"49":{}},"tags":{}}],["23234235.56",{"_index":594,"title":{},"content":{"49":{}},"tags":{}}],["2nd",{"_index":497,"title":{},"content":{"17":{},"18":{},"44":{},"45":{}},"tags":{}}],["3rd",{"_index":511,"title":{},"content":{"18":{},"45":{}},"tags":{}}],["4",{"_index":175,"title":{},"content":{"25":{},"26":{}},"tags":{}}],["5.2.0",{"_index":560,"title":{},"content":{"59":{}},"tags":{}}],["9",{"_index":107,"title":{},"content":{"22":{}},"tags":{}}],["9]$/i.test(char",{"_index":364,"title":{},"content":{"30":{}},"tags":{}}],["9]{4})/gi",{"_index":358,"title":{},"content":{"30":{}},"tags":{}}],["9]|backspace|delete|home|end|arrowleft|arrowright|shift|capslock|control|numlock|tab|paste|redo|undo)$/i.test",{"_index":376,"title":{},"content":{"30":{}},"tags":{}}],["_format",{"_index":218,"title":{},"content":{"26":{},"27":{},"28":{},"29":{}},"tags":{}}],["_ischaractersam",{"_index":234,"title":{},"content":{"27":{}},"tags":{}}],["_onkeydown",{"_index":308,"title":{},"content":{"29":{}},"tags":{}}],["_onvaluechang",{"_index":294,"title":{},"content":{"29":{}},"tags":{}}],["_removeformat",{"_index":228,"title":{},"content":{"27":{}},"tags":{}}],["_val",{"_index":224,"title":{},"content":{"27":{}},"tags":{}}],["_val.replace(/\\d/g",{"_index":226,"title":{},"content":{"27":{}},"tags":{}}],["abil",{"_index":426,"title":{},"content":{"4":{}},"tags":{}}],["accept",{"_index":480,"title":{},"content":{"15":{},"42":{},"63":{}},"tags":{}}],["access",{"_index":563,"title":{},"content":{"60":{}},"tags":{}}],["accordingli",{"_index":33,"title":{},"content":{"22":{}},"tags":{}}],["account",{"_index":327,"title":{"30":{}},"content":{"30":{}},"tags":{}}],["achiev",{"_index":257,"title":{},"content":{"28":{},"50":{}},"tags":{}}],["ad",{"_index":585,"title":{},"content":{"50":{},"61":{}},"tags":{}}],["add",{"_index":29,"title":{},"content":{"9":{},"22":{},"25":{},"38":{},"39":{},"40":{}},"tags":{}}],["addit",{"_index":108,"title":{},"content":{"18":{},"22":{},"45":{}},"tags":{}}],["ahead",{"_index":270,"title":{},"content":{"29":{}},"tags":{}}],["allow",{"_index":66,"title":{},"content":{"2":{},"22":{},"25":{},"30":{},"32":{},"33":{},"35":{},"53":{},"61":{},"62":{}},"tags":{}}],["alloweddecimalsepar",{"_index":443,"title":{"34":{}},"content":{"34":{}},"tags":{}}],["allowemptyformat",{"_index":248,"title":{"11":{},"28":{}},"content":{"11":{},"28":{}},"tags":{}}],["allowleadingzero",{"_index":433,"title":{"32":{}},"content":{"32":{}},"tags":{}}],["allowneg",{"_index":300,"title":{"33":{}},"content":{"29":{},"33":{}},"tags":{}}],["alway",{"_index":302,"title":{},"content":{"29":{},"59":{}},"tags":{}}],["anoth",{"_index":164,"title":{},"content":{"24":{},"26":{}},"tags":{}}],["anyth",{"_index":316,"title":{},"content":{"29":{}},"tags":{}}],["apart",{"_index":138,"title":{},"content":{"22":{}},"tags":{}}],["app",{"_index":550,"title":{},"content":{"57":{}},"tags":{}}],["appli",{"_index":19,"title":{},"content":{"11":{},"22":{},"25":{},"49":{}},"tags":{}}],["applic",{"_index":265,"title":{},"content":{"17":{},"29":{},"44":{}},"tags":{}}],["argument",{"_index":564,"title":{},"content":{"50":{},"60":{}},"tags":{}}],["array",{"_index":58,"title":{},"content":{"13":{},"19":{},"22":{},"46":{}},"tags":{}}],["array(value.length",{"_index":366,"title":{},"content":{"30":{}},"tags":{}}],["array.from",{"_index":81,"title":{},"content":{"22":{}},"tags":{}}],["array{value}((prop",{"_index":379,"title":{},"content":{"30":{}},"tags":{}}],["identifi",{"_index":575,"title":{},"content":{"51":{},"60":{}},"tags":{}}],["implement",{"_index":148,"title":{},"content":{"5":{},"23":{},"29":{}},"tags":{}}],["import",{"_index":154,"title":{},"content":{"2":{},"4":{},"9":{},"11":{},"12":{},"13":{},"14":{},"24":{},"25":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{}},"tags":{}}],["includ",{"_index":589,"title":{},"content":{"62":{}},"tags":{}}],["index",{"_index":59,"title":{},"content":{"22":{}},"tags":{}}],["indian",{"_index":472,"title":{},"content":{"41":{}},"tags":{}}],["indic",{"_index":571,"title":{},"content":{"51":{},"60":{}},"tags":{}}],["info",{"_index":470,"title":{},"content":{"41":{},"54":{},"60":{}},"tags":{}}],["inform",{"_index":124,"title":{},"content":{"18":{},"19":{},"22":{},"45":{},"46":{},"51":{}},"tags":{}}],["initi",{"_index":599,"title":{},"content":{"49":{},"50":{}},"tags":{}}],["inlin",{"_index":536,"title":{},"content":{"53":{}},"tags":{}}],["input",{"_index":21,"title":{"30":{},"56":{}},"content":{"2":{},"6":{},"7":{},"15":{},"18":{},"22":{},"30":{},"32":{},"35":{},"39":{},"40":{},"42":{},"45":{},"50":{},"53":{},"54":{},"56":{},"57":{},"58":{},"60":{},"62":{},"63":{}},"tags":{}}],["inputvalu",{"_index":499,"title":{"18":{},"45":{}},"content":{"18":{},"45":{}},"tags":{}}],["insid",{"_index":519,"title":{},"content":{"20":{},"47":{}},"tags":{}}],["instal",{"_index":400,"title":{"9":{}},"content":{"9":{}},"tags":{}}],["instead",{"_index":610,"title":{},"content":{"50":{}},"tags":{}}],["interfac",{"_index":347,"title":{},"content":{"30":{}},"tags":{}}],["intern",{"_index":330,"title":{},"content":{"18":{},"30":{},"45":{}},"tags":{}}],["internalvalu",{"_index":288,"title":{},"content":{"29":{}},"tags":{}}],["interpret",{"_index":119,"title":{},"content":{"22":{}},"tags":{}}],["intl.numberformat",{"_index":152,"title":{"24":{}},"content":{},"tags":{}}],["intl.numberformat('en",{"_index":157,"title":{},"content":{"24":{}},"tags":{}}],["isallow",{"_index":551,"title":{"58":{}},"content":{"50":{}},"tags":{}}],["isallowed={(valu",{"_index":557,"title":{},"content":{"58":{}},"tags":{}}],["ischaractersam",{"_index":114,"title":{},"content":{"22":{},"27":{}},"tags":{}}],["ischaractersame(comparemeta",{"_index":237,"title":{},"content":{"27":{}},"tags":{}}],["ischaractersame={_ischaractersam",{"_index":247,"title":{},"content":{"27":{}},"tags":{}}],["ischarsam",{"_index":236,"title":{},"content":{"27":{}},"tags":{}}],["isn't",{"_index":252,"title":{},"content":{"28":{}},"tags":{}}],["isnan(floatvalu",{"_index":297,"title":{},"content":{"29":{}},"tags":{}}],["isnumericstr",{"_index":415,"title":{"3":{}},"content":{"3":{}},"tags":{}}],["issu",{"_index":622,"title":{},"content":{"50":{}},"tags":{}}],["isvalidinputcharact",{"_index":100,"title":{},"content":{"22":{}},"tags":{}}],["isvalidinputcharacter={(char",{"_index":363,"title":{},"content":{"30":{}},"tags":{}}],["keep",{"_index":9,"title":{},"content":{"22":{}},"tags":{}}],["key",{"_index":117,"title":{},"content":{"22":{},"29":{},"49":{},"50":{},"60":{}},"tags":{}}],["keyboard",{"_index":607,"title":{},"content":{"50":{}},"tags":{}}],["know",{"_index":417,"title":{},"content":{"3":{}},"tags":{}}],["lakh",{"_index":473,"title":{},"content":{"41":{}},"tags":{}}],["last",{"_index":131,"title":{},"content":{"18":{},"22":{},"45":{}},"tags":{}}],["lastvalu",{"_index":130,"title":{},"content":{"18":{},"22":{},"45":{}},"tags":{}}],["layout",{"_index":608,"title":{},"content":{"50":{}},"tags":{}}],["lead",{"_index":436,"title":{},"content":{"32":{}},"tags":{}}],["length",{"_index":82,"title":{},"content":{"13":{},"19":{},"22":{},"46":{}},"tags":{}}],["let",{"_index":120,"title":{},"content":{"22":{}},"tags":{}}],["let'",{"_index":213,"title":{},"content":{"25":{}},"tags":{}}],["letter",{"_index":336,"title":{},"content":{"30":{}},"tags":{}}],["level",{"_index":411,"title":{},"content":{"2":{}},"tags":{}}],["li",{"_index":35,"title":{},"content":{"22":{}},"tags":{}}],["lib",{"_index":272,"title":{},"content":{"29":{}},"tags":{}}],["librari",{"_index":125,"title":{},"content":{"6":{},"22":{},"30":{}},"tags":{}}],["light",{"_index":386,"title":{},"content":{"6":{}},"tags":{}}],["limit",{"_index":457,"title":{},"content":{"36":{}},"tags":{}}],["ln",{"_index":87,"title":{},"content":{"22":{}},"tags":{}}],["lock",{"_index":251,"title":{},"content":{"28":{}},"tags":{}}],["logic",{"_index":299,"title":{},"content":{"20":{},"29":{},"47":{}},"tags":{}}],["longer",{"_index":609,"title":{},"content":{"50":{}},"tags":{}}],["look",{"_index":76,"title":{},"content":{"22":{}},"tags":{}}],["lot",{"_index":507,"title":{},"content":{"18":{},"45":{}},"tags":{}}],["lower",{"_index":180,"title":{},"content":{"2":{},"25":{},"26":{}},"tags":{}}],["main",{"_index":39,"title":{},"content":{"22":{}},"tags":{}}],["make",{"_index":581,"title":{},"content":{"49":{},"50":{},"60":{}},"tags":{}}],["manag",{"_index":22,"title":{},"content":{"22":{}},"tags":{}}],["mani",{"_index":397,"title":{},"content":{"8":{}},"tags":{}}],["manual",{"_index":317,"title":{},"content":{"29":{}},"tags":{}}],["map",{"_index":85,"title":{},"content":{"22":{}},"tags":{}}],["map((v",{"_index":368,"title":{},"content":{"30":{}},"tags":{}}],["mark",{"_index":320,"title":{},"content":{"29":{}},"tags":{}}],["mask",{"_index":394,"title":{"13":{}},"content":{"7":{},"13":{}},"tags":{}}],["mask=\"_",{"_index":521,"title":{},"content":{"11":{},"13":{}},"tags":{}}],["match",{"_index":463,"title":{},"content":{"13":{},"38":{}},"tags":{}}],["max_limit",{"_index":554,"title":{},"content":{"58":{}},"tags":{}}],["maximumfractiondigit",{"_index":160,"title":{},"content":{"24":{}},"tags":{}}],["maxlength",{"_index":617,"title":{},"content":{"50":{}},"tags":{}}],["mean",{"_index":65,"title":{},"content":{"22":{}},"tags":{}}],["meet",{"_index":391,"title":{},"content":{"6":{}},"tags":{}}],["method",{"_index":506,"title":{},"content":{"18":{},"19":{},"20":{},"45":{},"46":{},"47":{},"57":{},"58":{},"61":{}},"tags":{}}],["migrat",{"_index":404,"title":{"1":{}},"content":{},"tags":{}}],["minlength",{"_index":616,"title":{},"content":{"50":{}},"tags":{}}],["miss",{"_index":446,"title":{},"content":{"34":{}},"tags":{}}],["mobil",{"_index":606,"title":{},"content":{"50":{}},"tags":{}}],["modul",{"_index":407,"title":{},"content":{"2":{},"3":{},"4":{}},"tags":{}}],["month",{"_index":170,"title":{},"content":{"25":{},"26":{}},"tags":{}}],["month.length",{"_index":176,"title":{},"content":{"25":{},"26":{}},"tags":{}}],["month[0",{"_index":177,"title":{},"content":{"25":{},"26":{}},"tags":{}}],["month}/${year",{"_index":185,"title":{},"content":{"25":{}},"tags":{}}],["more",{"_index":97,"title":{},"content":{"3":{},"16":{},"19":{},"20":{},"22":{},"43":{},"46":{},"47":{},"54":{},"60":{}},"tags":{}}],["move",{"_index":67,"title":{},"content":{"22":{}},"tags":{}}],["mui/materi",{"_index":453,"title":{},"content":{"35":{},"53":{}},"tags":{}}],["multipl",{"_index":313,"title":{},"content":{"29":{}},"tags":{}}],["mycustomnumberformat(prop",{"_index":155,"title":{},"content":{"24":{}},"tags":{}}],["n",{"_index":516,"title":{},"content":{"19":{},"46":{}},"tags":{}}],["n+1",{"_index":514,"title":{},"content":{"19":{},"46":{}},"tags":{}}],["name",{"_index":372,"title":{},"content":{"3":{},"30":{},"60":{}},"tags":{}}],["nativ",{"_index":143,"title":{},"content":{"22":{},"50":{}},"tags":{}}],["need",{"_index":75,"title":{},"content":{"3":{},"17":{},"18":{},"19":{},"22":{},"29":{},"44":{},"45":{},"46":{},"50":{}},"tags":{}}],["neg",{"_index":151,"title":{"29":{}},"content":{"23":{},"29":{},"33":{}},"tags":{}}],["negat",{"_index":298,"title":{},"content":{"29":{}},"tags":{}}],["negation_format_regex",{"_index":273,"title":{},"content":{"29":{}},"tags":{}}],["new",{"_index":156,"title":{},"content":{"24":{}},"tags":{}}],["newchar",{"_index":240,"title":{},"content":{"27":{}},"tags":{}}],["newpersianchar",{"_index":244,"title":{},"content":{"27":{}},"tags":{}}],["non",{"_index":580,"title":{},"content":{"49":{},"60":{}},"tags":{}}],["note",{"_index":526,"title":{"48":{},"50":{}},"content":{"13":{},"53":{},"59":{}},"tags":{}}],["now",{"_index":423,"title":{},"content":{"3":{}},"tags":{}}],["npm",{"_index":401,"title":{},"content":{"9":{}},"tags":{}}],["null",{"_index":450,"title":{},"content":{"11":{},"35":{},"53":{},"57":{}},"tags":{}}],["number",{"_index":3,"title":{"29":{},"36":{},"54":{},"55":{}},"content":{"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"9":{},"11":{},"12":{},"13":{},"14":{},"17":{},"18":{},"22":{},"23":{},"24":{},"25":{},"29":{},"30":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"44":{},"45":{},"49":{},"50":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{}},"tags":{}}],["number(month",{"_index":182,"title":{},"content":{"25":{},"26":{}},"tags":{}}],["numberformat",{"_index":208,"title":{"2":{}},"content":{"2":{},"25":{}},"tags":{}}],["numberformatbas",{"_index":36,"title":{"4":{}},"content":{"4":{},"20":{},"22":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"47":{}},"tags":{}}],["numberformatbaseprop",{"_index":261,"title":{"20":{},"47":{}},"content":{"28":{},"29":{},"30":{}},"tags":{}}],["numer",{"_index":47,"title":{"27":{}},"content":{"3":{},"5":{},"6":{},"9":{},"13":{},"17":{},"18":{},"20":{},"22":{},"26":{},"29":{},"44":{},"45":{},"47":{},"49":{},"50":{},"59":{},"60":{},"63":{}},"tags":{}}],["numericformat",{"_index":204,"title":{"2":{},"28":{}},"content":{"2":{},"9":{},"25":{},"26":{},"28":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"60":{},"61":{},"62":{}},"tags":{}}],["numericformatprop",{"_index":489,"title":{"44":{},"45":{},"46":{},"47":{}},"content":{},"tags":{}}],["numericformatt",{"_index":488,"title":{"44":{}},"content":{"44":{}},"tags":{}}],["numstr",{"_index":42,"title":{"17":{},"44":{}},"content":{"18":{},"22":{},"24":{},"28":{},"29":{},"45":{}},"tags":{}}],["numstring(non",{"_index":496,"title":{},"content":{"17":{},"44":{}},"tags":{}}],["object",{"_index":569,"title":{"49":{},"51":{}},"content":{"49":{},"50":{},"51":{},"60":{}},"tags":{}}],["object.assign",{"_index":370,"title":{},"content":{"30":{}},"tags":{}}],["on",{"_index":73,"title":{},"content":{"22":{},"25":{}},"tags":{}}],["onchang",{"_index":349,"title":{},"content":{"30":{},"50":{},"58":{}},"tags":{}}],["onchange/onfocus/onblur",{"_index":611,"title":{},"content":{"50":{}},"tags":{}}],["onkeydown",{"_index":186,"title":{},"content":{"25":{},"29":{}},"tags":{}}],["onkeydown(",{"_index":318,"title":{},"content":{"29":{}},"tags":{}}],["onkeydown/onkeyup",{"_index":145,"title":{},"content":{"22":{}},"tags":{}}],["onkeydown={(",{"_index":375,"title":{},"content":{"30":{}},"tags":{}}],["onkeydown={_onkeydown",{"_index":325,"title":{},"content":{"29":{}},"tags":{}}],["onkeydown={onkeydown",{"_index":200,"title":{},"content":{"25":{}},"tags":{}}],["onvaluechang",{"_index":283,"title":{"60":{}},"content":{"29":{},"50":{}},"tags":{}}],["onvaluechange={(valu",{"_index":369,"title":{},"content":{"30":{},"60":{}},"tags":{}}],["oppos",{"_index":268,"title":{},"content":{"29":{}},"tags":{}}],["option",{"_index":604,"title":{},"content":{"50":{}},"tags":{}}],["order",{"_index":328,"title":{},"content":{"30":{}},"tags":{}}],["outsid",{"_index":271,"title":{},"content":{"29":{}},"tags":{}}],["paramet",{"_index":494,"title":{},"content":{"17":{},"18":{},"44":{},"45":{},"60":{}},"tags":{}}],["parent",{"_index":41,"title":{},"content":{"22":{}},"tags":{}}],["parenthes",{"_index":262,"title":{"29":{}},"content":{"29":{}},"tags":{}}],["particularli",{"_index":574,"title":{},"content":{"51":{},"60":{}},"tags":{}}],["pass",{"_index":106,"title":{},"content":{"3":{},"13":{},"17":{},"20":{},"22":{},"44":{},"47":{},"49":{},"50":{},"53":{},"54":{},"59":{},"60":{},"61":{},"62":{}},"tags":{}}],["password",{"_index":591,"title":{},"content":{"62":{}},"tags":{}}],["patch",{"_index":503,"title":{},"content":{"18":{},"19":{},"20":{},"45":{},"46":{},"47":{}},"tags":{}}],["pattern",{"_index":250,"title":{"30":{}},"content":{"2":{},"6":{},"7":{},"9":{},"12":{},"14":{},"28":{},"30":{},"59":{},"63":{}},"tags":{}}],["patternchar",{"_index":522,"title":{"14":{}},"content":{"12":{},"13":{},"14":{}},"tags":{}}],["patternformat",{"_index":205,"title":{"2":{}},"content":{"2":{},"9":{},"11":{},"12":{},"13":{},"14":{},"25":{},"59":{}},"tags":{}}],["patternformatprop",{"_index":531,"title":{"17":{},"18":{},"19":{},"20":{}},"content":{},"tags":{}}],["patternformatt",{"_index":530,"title":{"17":{}},"content":{"17":{}},"tags":{}}],["persiannumer",{"_index":221,"title":{},"content":{"27":{}},"tags":{}}],["persiannumeral.indexof($1",{"_index":232,"title":{},"content":{"27":{}},"tags":{}}],["persiannumeral[number($1",{"_index":227,"title":{},"content":{"27":{}},"tags":{}}],["persiannumeral[number(curchar",{"_index":243,"title":{},"content":{"27":{}},"tags":{}}],["persiannumeral[number(newchar",{"_index":245,"title":{},"content":{"27":{}},"tags":{}}],["phone",{"_index":410,"title":{},"content":{"2":{}},"tags":{}}],["place",{"_index":20,"title":{},"content":{"13":{},"17":{},"19":{},"22":{},"44":{},"46":{}},"tags":{}}],["placehold",{"_index":523,"title":{},"content":{"12":{}},"tags":{}}],["point",{"_index":458,"title":{},"content":{"36":{},"49":{}},"tags":{}}],["posit",{"_index":25,"title":{},"content":{"13":{},"19":{},"22":{},"46":{}},"tags":{}}],["post",{"_index":619,"title":{},"content":{"50":{}},"tags":{}}],["predefin",{"_index":341,"title":{},"content":{"30":{}},"tags":{}}],["prefix",{"_index":194,"title":{"39":{}},"content":{"7":{},"25":{},"28":{},"29":{},"39":{},"59":{},"60":{}},"tags":{}}],["prefix/suffix",{"_index":601,"title":{},"content":{"49":{},"50":{}},"tags":{}}],["present",{"_index":301,"title":{},"content":{"29":{}},"tags":{}}],["press",{"_index":116,"title":{},"content":{"22":{},"29":{},"34":{}},"tags":{}}],["primari",{"_index":16,"title":{},"content":{"22":{}},"tags":{}}],["prior",{"_index":559,"title":{},"content":{"59":{}},"tags":{}}],["product",{"_index":15,"title":{},"content":{"22":{}},"tags":{}}],["prop",{"_index":40,"title":{"10":{},"15":{},"17":{},"18":{},"19":{},"20":{},"31":{},"42":{},"44":{},"45":{},"46":{},"47":{},"52":{},"63":{}},"content":{"3":{},"15":{},"17":{},"18":{},"20":{},"22":{},"24":{},"25":{},"26":{},"28":{},"29":{},"30":{},"42":{},"44":{},"45":{},"47":{},"49":{},"50":{},"51":{},"53":{},"54":{},"57":{},"59":{},"60":{},"61":{},"63":{}},"tags":{}}],["properli",{"_index":419,"title":{},"content":{"3":{}},"tags":{}}],["props.nam",{"_index":373,"title":{},"content":{"30":{}},"tags":{}}],["props.prefix",{"_index":306,"title":{},"content":{"29":{}},"tags":{}}],["props.prefix.length",{"_index":323,"title":{},"content":{"29":{}},"tags":{}}],["props.suffix",{"_index":307,"title":{},"content":{"29":{}},"tags":{}}],["provid",{"_index":122,"title":{},"content":{"2":{},"13":{},"22":{},"25":{},"50":{},"55":{},"60":{}},"tags":{}}],["put",{"_index":63,"title":{},"content":{"22":{}},"tags":{}}],["quartet",{"_index":333,"title":{},"content":{"30":{}},"tags":{}}],["quirk",{"_index":592,"title":{"48":{},"50":{}},"content":{},"tags":{}}],["react",{"_index":2,"title":{"61":{}},"content":{"2":{},"4":{},"6":{},"9":{},"11":{},"12":{},"13":{},"14":{},"22":{},"24":{},"25":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{}},"tags":{}}],["react.component