@consta/uikit 5.8.0 → 5.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { useIMask } from 'react-imask';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { TextFieldPropForm } from "../TextField";
|
|
4
|
+
import { DateRange } from "../../utils/types/Date";
|
|
5
5
|
import { DatePickerPropType } from './types';
|
|
6
6
|
export declare const datePickerPropSeparatorDefault = ".";
|
|
7
7
|
export declare const datePickerPropFormatTypeDate: string;
|
|
@@ -17,8 +17,8 @@ export declare const datePickerPropPlaceholderTypeMonth: string;
|
|
|
17
17
|
export declare const normalizeRangeValue: (dateRange: DateRange) => DateRange;
|
|
18
18
|
export declare const getMultiplicityTime: (format: string, multiplicityHours: number | undefined, multiplicityMinutes: number | undefined, multiplicitySeconds: number | undefined) => (number | undefined)[];
|
|
19
19
|
export declare const getTimeEnum: (length: number, multiplicity: number | undefined, startOfUnits: (date: Date) => Date, addUnits: (date: Date, amount: number) => Date, getItemLabel: (date: Date) => string) => string[];
|
|
20
|
-
export declare const getFormForStart: (form: TextFieldPropForm) => import("../FieldGroup
|
|
21
|
-
export declare const getFormForEnd: (form: TextFieldPropForm) => import("../FieldGroup
|
|
20
|
+
export declare const getFormForStart: (form: TextFieldPropForm) => import("../FieldGroup").FieldGroupPropForm;
|
|
21
|
+
export declare const getFormForEnd: (form: TextFieldPropForm) => import("../FieldGroup").FieldGroupPropForm;
|
|
22
22
|
export declare const getPartDate: (formatArray: string[], stringArray: string[], marker: string) => string | undefined;
|
|
23
23
|
export declare const getParts: (format: string, separator: string, withTime?: boolean) => string[];
|
|
24
24
|
export declare const getPartsDate: (value: string, format: string, separator: string, withTime: boolean, markers: string[]) => (string | undefined)[];
|
|
@@ -28,5 +28,5 @@ export declare const getDropdownZIndex: (style?: React.CSSProperties) => number
|
|
|
28
28
|
declare type DatePickerFieldTypeDatePropOnChange = (value: Date | null, props: {
|
|
29
29
|
e: Event;
|
|
30
30
|
}) => void;
|
|
31
|
-
export declare const useStringValue: (value: Date | undefined | null, formatProp: string, separator: string, onChangeRef: React.MutableRefObject<DatePickerFieldTypeDatePropOnChange | undefined>, imaskProps: ReturnType<typeof useIMask
|
|
31
|
+
export declare const useStringValue: (value: Date | undefined | null, formatProp: string, separator: string, onChangeRef: React.MutableRefObject<DatePickerFieldTypeDatePropOnChange | undefined>, imaskProps: ReturnType<typeof useIMask<HTMLInputElement>>) => import("react").MouseEventHandler<HTMLButtonElement>;
|
|
32
32
|
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{format,isValid,parse,startOfToday}from"date-fns";import{useCallback,useEffect}from"react";import{useMutableRef}from"../../hooks/useMutableRef";import{range}from"../../utils/array";
|
|
1
|
+
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{format,isValid,parse,startOfToday}from"date-fns";import{useCallback,useEffect}from"react";import{getForm}from"../FieldGroup";import{useMutableRef}from"../../hooks/useMutableRef";import{range}from"../../utils/array";export var datePickerPropSeparatorDefault=".";export var datePickerPropFormatTypeDate="dd".concat(".","MM").concat(".","yyyy");export var datePickerPropPlaceholderTypeDate="\u0414\u0414".concat(".","\u041C\u041C").concat(".","\u0413\u0413\u0413\u0413");export var datePickerPropFormatTypeTime="HH:mm:ss";export var datePickerPropPlaceholderTypeTime="\u0427\u0427:\u041C\u041C:\u0421\u0421";export var datePickerPropFormatTypeDateTime="".concat(datePickerPropFormatTypeDate," ").concat("HH:mm:ss");export var datePickerPropPlaceholderTypeDateTime="".concat(datePickerPropPlaceholderTypeDate," ").concat("\u0427\u0427:\u041C\u041C:\u0421\u0421");export var datePickerPropFormatTypeYear="yyyy";export var datePickerPropPlaceholderTypeYear="\u0413\u0413\u0413\u0413";export var datePickerPropFormatTypeMonth="MM".concat(".","yyyy");export var datePickerPropPlaceholderTypeMonth="MM".concat(".","\u0413\u0413\u0413\u0413");export var normalizeRangeValue=function(a){var b,c;return a[0]&&a[1]&&(null===(b=a[0])||void 0===b?void 0:b.getTime())>(null===(c=a[1])||void 0===c?void 0:c.getTime())?[a[1],a[0]]:a};export var getMultiplicityTime=function(a,b,c,d){var e,f=null===(e=a.split(" ")[1])||void 0===e?void 0:e.split(":"),g={HH:b,mm:c,ss:d};return["HH","mm","ss"].map(function(a){return 0>(null===f||void 0===f?void 0:f.indexOf(a))?0:g[a]})};export var getTimeEnum=function(a){var b=1<arguments.length&&arguments[1]!==void 0?arguments[1]:1,c=2<arguments.length?arguments[2]:void 0,d=3<arguments.length?arguments[3]:void 0,e=4<arguments.length?arguments[4]:void 0,f=range(b?Math.floor(a/b):0);if(0===f.length)return[];var g=c(startOfToday());return f.map(function(a){return e(d(g,a*b))})};export var getFormForStart=function(a){return getForm(a,0,2)};export var getFormForEnd=function(a){return getForm(a,1,2)};export var getPartDate=function(a,b,c){var d=a.indexOf(c);return 0<=d&&b[d]&&b[d].length===c.length?b[d]:void 0};export var getParts=function(a,b,c){if(c){var d=a.split(" "),e=_slicedToArray(d,2),f=e[0],g=e[1];return[].concat(_toConsumableArray(f?f.split(b):[]),_toConsumableArray(g?g.split(":"):[]))}return a.split(b)};export var getPartsDate=function(a,b,c,d,e){var f=getParts(b,c,d),g=getParts(a,c,d);return e.map(function(a){return getPartDate(f,g,a)})};export var isTypeWithTime=function(a){return-1!==a.indexOf("time")};var fieldPrefixs=["start","end"];export var getFieldName=function(a,b){return a?Array.isArray(a)?a[b]:"".concat(a,"_").concat(fieldPrefixs[b]):void 0};export var getDropdownZIndex=function(a){return"number"==typeof(null===a||void 0===a?void 0:a.zIndex)?a.zIndex+1:void 0};export var useStringValue=function(a,b,c,d,e){var f=e.value,g=useMutableRef([e.setValue,a]),h=useCallback(function(){var a;null!==(a=e.ref)&&void 0!==a&&a.current&&e.maskRef.current&&(g.current[0](""),e.ref.current.value="",e.maskRef.current.updateValue())},[]),i=useCallback(function(a){if(h(),g.current[1]){var b;null===(b=d.current)||void 0===b?void 0:b.call(d,null,{e:a})}},[]);return useEffect(function(){if(a&&isValid(a)&&g.current[0](format(a,b)),!a&&f){var d=getParts(b,c,!1),e=getParts(f,c,!1),i=d.map(function(a){return getPartDate(d,e,a)}).filter(function(a){return!!a}),j=d.length===i.length?parse(e.join(datePickerPropSeparatorDefault),d.join(datePickerPropSeparatorDefault),new Date):void 0;isValid(j)&&h()}},[null===a||void 0===a?void 0:a.getTime()]),i};
|
|
2
2
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["format","isValid","parse","startOfToday","useCallback","useEffect","useMutableRef","range","getForm","datePickerPropSeparatorDefault","datePickerPropFormatTypeDate","datePickerPropPlaceholderTypeDate","datePickerPropFormatTypeTime","datePickerPropPlaceholderTypeTime","datePickerPropFormatTypeDateTime","datePickerPropPlaceholderTypeDateTime","datePickerPropFormatTypeYear","datePickerPropPlaceholderTypeYear","datePickerPropFormatTypeMonth","datePickerPropPlaceholderTypeMonth","normalizeRangeValue","dateRange","getTime","getMultiplicityTime","multiplicityHours","multiplicityMinutes","multiplicitySeconds","formatArray","split","map","HH","mm","ss","marker","indexOf","getTimeEnum","length","multiplicity","startOfUnits","addUnits","getItemLabel","numbers","Math","floor","startDate","number","getFormForStart","form","getFormForEnd","getPartDate","stringArray","index","getParts","separator","withTime","date","time","getPartsDate","value","markers","isTypeWithTime","type","fieldPrefixs","getFieldName","name","rangeIndex","Array","isArray","getDropdownZIndex","style","zIndex","useStringValue","formatProp","onChangeRef","imaskProps","stringValue","refs","setValue","handleClear","e","current","valueArray","validArray","filter","item","join","Date"],"sources":["../../../../../src/components/DatePicker/helpers.ts"],"sourcesContent":["import { format, isValid, parse, startOfToday } from 'date-fns';\nimport { useCallback, useEffect } from 'react';\nimport { useIMask } from 'react-imask';\n\nimport { useMutableRef } from '##/hooks/useMutableRef';\n\nimport { range } from '../../utils/array';\nimport { DateRange } from '../../utils/types/Date';\nimport { getForm } from '../FieldGroup/FieldGroup';\nimport { TextFieldPropForm } from '../TextField/TextField';\nimport { DatePickerPropType } from './types';\n\nexport const datePickerPropSeparatorDefault = '.';\nexport const datePickerPropFormatTypeDate = `dd${datePickerPropSeparatorDefault}MM${datePickerPropSeparatorDefault}yyyy`;\nexport const datePickerPropPlaceholderTypeDate = `ДД${datePickerPropSeparatorDefault}ММ${datePickerPropSeparatorDefault}ГГГГ`;\n\nexport const datePickerPropFormatTypeTime = `HH:mm:ss`;\nexport const datePickerPropPlaceholderTypeTime = `ЧЧ:ММ:СС`;\n\nexport const datePickerPropFormatTypeDateTime = `${datePickerPropFormatTypeDate} ${datePickerPropFormatTypeTime}`;\nexport const datePickerPropPlaceholderTypeDateTime = `${datePickerPropPlaceholderTypeDate} ${datePickerPropPlaceholderTypeTime}`;\n\nexport const datePickerPropFormatTypeYear = `yyyy`;\nexport const datePickerPropPlaceholderTypeYear = `ГГГГ`;\n\nexport const datePickerPropFormatTypeMonth = `MM${datePickerPropSeparatorDefault}yyyy`;\nexport const datePickerPropPlaceholderTypeMonth = `MM${datePickerPropSeparatorDefault}ГГГГ`;\n\nexport const normalizeRangeValue = (dateRange: DateRange): DateRange => {\n if (\n dateRange[0] &&\n dateRange[1] &&\n dateRange[0]?.getTime() > dateRange[1]?.getTime()\n ) {\n return [dateRange[1], dateRange[0]];\n }\n return dateRange;\n};\n\nexport const getMultiplicityTime = (\n format: string,\n multiplicityHours: number | undefined,\n multiplicityMinutes: number | undefined,\n multiplicitySeconds: number | undefined,\n) => {\n const markers = ['HH', 'mm', 'ss'] as const;\n const formatArray = format.split(' ')[1]?.split(':');\n const map = {\n HH: multiplicityHours,\n mm: multiplicityMinutes,\n ss: multiplicitySeconds,\n } as const;\n\n return markers.map((marker) =>\n formatArray?.indexOf(marker) < 0 ? 0 : map[marker],\n );\n};\n\nexport const getTimeEnum = (\n length: number,\n multiplicity = 1,\n startOfUnits: (date: Date) => Date,\n addUnits: (date: Date, amount: number) => Date,\n getItemLabel: (date: Date) => string,\n) => {\n const numbers = range(multiplicity ? Math.floor(length / multiplicity) : 0);\n\n if (numbers.length === 0) {\n return [];\n }\n\n const startDate = startOfUnits(startOfToday());\n\n return numbers.map((number) => {\n return getItemLabel(addUnits(startDate, number * multiplicity));\n });\n};\n\nexport const getFormForStart = (form: TextFieldPropForm) => getForm(form, 0, 2);\nexport const getFormForEnd = (form: TextFieldPropForm) => getForm(form, 1, 2);\n\nexport const getPartDate = (\n formatArray: string[],\n stringArray: string[],\n marker: string,\n) => {\n const index = formatArray.indexOf(marker);\n\n if (\n index >= 0 &&\n stringArray[index] &&\n stringArray[index].length === marker.length\n ) {\n return stringArray[index];\n }\n\n return undefined;\n};\n\nexport const getParts = (\n format: string,\n separator: string,\n withTime?: boolean,\n) => {\n if (withTime) {\n const [date, time] = format.split(' ');\n\n return [\n ...(date ? date.split(separator) : []),\n ...(time ? time.split(':') : []),\n ];\n }\n\n return format.split(separator);\n};\n\nexport const getPartsDate = (\n value: string,\n format: string,\n separator: string,\n withTime: boolean,\n markers: string[],\n) => {\n const formatArray = getParts(format, separator, withTime);\n const stringArray = getParts(value, separator, withTime);\n\n return markers.map((marker) => getPartDate(formatArray, stringArray, marker));\n};\n\nexport const isTypeWithTime = (type: DatePickerPropType) =>\n type.indexOf('time') !== -1;\n\nconst fieldPrefixs = ['start', 'end'] as const;\n\nexport const getFieldName = (\n name: [string?, string?] | string | undefined,\n rangeIndex: 0 | 1,\n) => {\n if (!name) {\n return undefined;\n }\n\n if (Array.isArray(name)) {\n return name[rangeIndex];\n }\n\n return `${name}_${fieldPrefixs[rangeIndex]}`;\n};\n\nexport const getDropdownZIndex = (style?: React.CSSProperties) =>\n typeof style?.zIndex === 'number' ? style.zIndex + 1 : undefined;\n\ntype DatePickerFieldTypeDatePropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\n) => void;\n\nexport const useStringValue = (\n value: Date | undefined | null,\n formatProp: string,\n separator: string,\n onChangeRef: React.MutableRefObject<\n DatePickerFieldTypeDatePropOnChange | undefined\n >,\n imaskProps: ReturnType<typeof useIMask>,\n) => {\n const stringValue = imaskProps.value;\n\n const refs = useMutableRef([imaskProps.setValue, value] as const);\n\n const handleClear: React.MouseEventHandler<HTMLButtonElement> = useCallback(\n (e) => {\n refs.current[0]('');\n if (refs.current[1]) {\n onChangeRef.current?.(null, { e: e as unknown as Event });\n }\n },\n [],\n );\n\n useEffect(() => {\n if (value && isValid(value)) {\n refs.current[0](format(value, formatProp));\n }\n\n if (!value && stringValue) {\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n const date =\n formatArray.length === validArray.length\n ? parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n )\n : undefined;\n\n if (isValid(date)) {\n refs.current[0]('');\n }\n }\n }, [value?.getTime()]);\n\n return handleClear;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["format","isValid","parse","startOfToday","useCallback","useEffect","getForm","useMutableRef","range","datePickerPropSeparatorDefault","datePickerPropFormatTypeDate","datePickerPropPlaceholderTypeDate","datePickerPropFormatTypeTime","datePickerPropPlaceholderTypeTime","datePickerPropFormatTypeDateTime","datePickerPropPlaceholderTypeDateTime","datePickerPropFormatTypeYear","datePickerPropPlaceholderTypeYear","datePickerPropFormatTypeMonth","datePickerPropPlaceholderTypeMonth","normalizeRangeValue","dateRange","getTime","getMultiplicityTime","multiplicityHours","multiplicityMinutes","multiplicitySeconds","formatArray","split","map","HH","mm","ss","marker","indexOf","getTimeEnum","length","multiplicity","startOfUnits","addUnits","getItemLabel","numbers","Math","floor","startDate","number","getFormForStart","form","getFormForEnd","getPartDate","stringArray","index","getParts","separator","withTime","date","time","getPartsDate","value","markers","isTypeWithTime","type","fieldPrefixs","getFieldName","name","rangeIndex","Array","isArray","getDropdownZIndex","style","zIndex","useStringValue","formatProp","onChangeRef","imaskProps","stringValue","refs","setValue","setStringValueToNull","ref","current","maskRef","updateValue","handleClear","e","valueArray","validArray","filter","item","join","Date"],"sources":["../../../../../src/components/DatePicker/helpers.ts"],"sourcesContent":["import { format, isValid, parse, startOfToday } from 'date-fns';\nimport { useCallback, useEffect } from 'react';\nimport { useIMask } from 'react-imask';\n\nimport { getForm } from '##/components/FieldGroup';\nimport { TextFieldPropForm } from '##/components/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { range } from '##/utils/array';\nimport { DateRange } from '##/utils/types/Date';\n\nimport { DatePickerPropType } from './types';\n\nexport const datePickerPropSeparatorDefault = '.';\nexport const datePickerPropFormatTypeDate = `dd${datePickerPropSeparatorDefault}MM${datePickerPropSeparatorDefault}yyyy`;\nexport const datePickerPropPlaceholderTypeDate = `ДД${datePickerPropSeparatorDefault}ММ${datePickerPropSeparatorDefault}ГГГГ`;\n\nexport const datePickerPropFormatTypeTime = `HH:mm:ss`;\nexport const datePickerPropPlaceholderTypeTime = `ЧЧ:ММ:СС`;\n\nexport const datePickerPropFormatTypeDateTime = `${datePickerPropFormatTypeDate} ${datePickerPropFormatTypeTime}`;\nexport const datePickerPropPlaceholderTypeDateTime = `${datePickerPropPlaceholderTypeDate} ${datePickerPropPlaceholderTypeTime}`;\n\nexport const datePickerPropFormatTypeYear = `yyyy`;\nexport const datePickerPropPlaceholderTypeYear = `ГГГГ`;\n\nexport const datePickerPropFormatTypeMonth = `MM${datePickerPropSeparatorDefault}yyyy`;\nexport const datePickerPropPlaceholderTypeMonth = `MM${datePickerPropSeparatorDefault}ГГГГ`;\n\nexport const normalizeRangeValue = (dateRange: DateRange): DateRange => {\n if (\n dateRange[0] &&\n dateRange[1] &&\n dateRange[0]?.getTime() > dateRange[1]?.getTime()\n ) {\n return [dateRange[1], dateRange[0]];\n }\n return dateRange;\n};\n\nexport const getMultiplicityTime = (\n format: string,\n multiplicityHours: number | undefined,\n multiplicityMinutes: number | undefined,\n multiplicitySeconds: number | undefined,\n) => {\n const markers = ['HH', 'mm', 'ss'] as const;\n const formatArray = format.split(' ')[1]?.split(':');\n const map = {\n HH: multiplicityHours,\n mm: multiplicityMinutes,\n ss: multiplicitySeconds,\n } as const;\n\n return markers.map((marker) =>\n formatArray?.indexOf(marker) < 0 ? 0 : map[marker],\n );\n};\n\nexport const getTimeEnum = (\n length: number,\n multiplicity = 1,\n startOfUnits: (date: Date) => Date,\n addUnits: (date: Date, amount: number) => Date,\n getItemLabel: (date: Date) => string,\n) => {\n const numbers = range(multiplicity ? Math.floor(length / multiplicity) : 0);\n\n if (numbers.length === 0) {\n return [];\n }\n\n const startDate = startOfUnits(startOfToday());\n\n return numbers.map((number) => {\n return getItemLabel(addUnits(startDate, number * multiplicity));\n });\n};\n\nexport const getFormForStart = (form: TextFieldPropForm) => getForm(form, 0, 2);\nexport const getFormForEnd = (form: TextFieldPropForm) => getForm(form, 1, 2);\n\nexport const getPartDate = (\n formatArray: string[],\n stringArray: string[],\n marker: string,\n) => {\n const index = formatArray.indexOf(marker);\n\n if (\n index >= 0 &&\n stringArray[index] &&\n stringArray[index].length === marker.length\n ) {\n return stringArray[index];\n }\n\n return undefined;\n};\n\nexport const getParts = (\n format: string,\n separator: string,\n withTime?: boolean,\n) => {\n if (withTime) {\n const [date, time] = format.split(' ');\n\n return [\n ...(date ? date.split(separator) : []),\n ...(time ? time.split(':') : []),\n ];\n }\n\n return format.split(separator);\n};\n\nexport const getPartsDate = (\n value: string,\n format: string,\n separator: string,\n withTime: boolean,\n markers: string[],\n) => {\n const formatArray = getParts(format, separator, withTime);\n const stringArray = getParts(value, separator, withTime);\n\n return markers.map((marker) => getPartDate(formatArray, stringArray, marker));\n};\n\nexport const isTypeWithTime = (type: DatePickerPropType) =>\n type.indexOf('time') !== -1;\n\nconst fieldPrefixs = ['start', 'end'] as const;\n\nexport const getFieldName = (\n name: [string?, string?] | string | undefined,\n rangeIndex: 0 | 1,\n) => {\n if (!name) {\n return undefined;\n }\n\n if (Array.isArray(name)) {\n return name[rangeIndex];\n }\n\n return `${name}_${fieldPrefixs[rangeIndex]}`;\n};\n\nexport const getDropdownZIndex = (style?: React.CSSProperties) =>\n typeof style?.zIndex === 'number' ? style.zIndex + 1 : undefined;\n\ntype DatePickerFieldTypeDatePropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\n) => void;\n\nexport const useStringValue = (\n value: Date | undefined | null,\n formatProp: string,\n separator: string,\n onChangeRef: React.MutableRefObject<\n DatePickerFieldTypeDatePropOnChange | undefined\n >,\n imaskProps: ReturnType<typeof useIMask<HTMLInputElement>>,\n) => {\n const stringValue = imaskProps.value;\n\n const refs = useMutableRef([imaskProps.setValue, value] as const);\n\n const setStringValueToNull = useCallback(() => {\n if (imaskProps.ref?.current && imaskProps.maskRef.current) {\n refs.current[0]('');\n imaskProps.ref.current.value = '';\n imaskProps.maskRef.current.updateValue();\n }\n }, []);\n\n const handleClear: React.MouseEventHandler<HTMLButtonElement> = useCallback(\n (e) => {\n setStringValueToNull();\n\n if (refs.current[1]) {\n onChangeRef.current?.(null, { e: e as unknown as Event });\n }\n },\n [],\n );\n\n useEffect(() => {\n if (value && isValid(value)) {\n refs.current[0](format(value, formatProp));\n }\n\n if (!value && stringValue) {\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n const date =\n formatArray.length === validArray.length\n ? parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n )\n : undefined;\n\n if (isValid(date)) {\n setStringValueToNull();\n }\n }\n }, [value?.getTime()]);\n\n return handleClear;\n};\n"],"mappings":"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"}
|