1 line
29 KiB
JSON
1 line
29 KiB
JSON
{"ast":null,"code":"import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport { useEvent, useMergedState } from 'rc-util';\nimport * as React from 'react';\nimport useSyncState from \"../../hooks/useSyncState\";\nimport { formatValue, isSame, isSameTimestamp } from \"../../utils/dateUtil\";\nimport { fillIndex } from \"../../utils/miscUtil\";\nimport useLockEffect from \"./useLockEffect\";\nvar EMPTY_VALUE = [];\n\n// Submit Logic:\n// * ✅ Value:\n// * merged value using controlled value, if not, use stateValue\n// * When merged value change, [1] resync calendar value and submit value\n// * ✅ Calender Value:\n// * 💻 When user typing is validate, change the calendar value\n// * 🌅 When user click on the panel, change the calendar value\n// * Submit Value:\n// * 💻 When user blur the input, flush calendar value to submit value\n// * 🌅 When user click on the panel is no needConfirm, flush calendar value to submit value\n// * 🌅 When user click on the panel is needConfirm and click OK, flush calendar value to submit value\n// * Blur logic & close logic:\n// * ✅ For value, always try flush submit\n// * ✅ If `needConfirm`, reset as [1]\n// * Else (`!needConfirm`)\n// * If has another index field, active another index\n// * ✅ Flush submit:\n// * If all the start & end field is confirmed or all blur or panel closed\n// * Update `needSubmit` mark to true\n// * trigger onChange by `needSubmit` and update stateValue\n\nfunction useUtil(generateConfig, locale, formatList) {\n var getDateTexts = function getDateTexts(dates) {\n return dates.map(function (date) {\n return formatValue(date, {\n generateConfig: generateConfig,\n locale: locale,\n format: formatList[0]\n });\n });\n };\n var isSameDates = function isSameDates(source, target) {\n var maxLen = Math.max(source.length, target.length);\n var diffIndex = -1;\n for (var i = 0; i < maxLen; i += 1) {\n var prev = source[i] || null;\n var next = target[i] || null;\n if (prev !== next && !isSameTimestamp(generateConfig, prev, next)) {\n diffIndex = i;\n break;\n }\n }\n return [diffIndex < 0, diffIndex !== 0];\n };\n return [getDateTexts, isSameDates];\n}\nfunction orderDates(dates, generateConfig) {\n return _toConsumableArray(dates).sort(function (a, b) {\n return generateConfig.isAfter(a, b) ? 1 : -1;\n });\n}\n\n/**\n * Used for internal value management.\n * It should always use `mergedValue` in render logic\n */\nexport function useCalendarValue(mergedValue) {\n var _useSyncState = useSyncState(mergedValue),\n _useSyncState2 = _slicedToArray(_useSyncState, 2),\n calendarValue = _useSyncState2[0],\n setCalendarValue = _useSyncState2[1];\n\n /** Sync calendarValue & submitValue back with value */\n var syncWithValue = useEvent(function () {\n setCalendarValue(mergedValue);\n });\n React.useEffect(function () {\n syncWithValue();\n }, [mergedValue]);\n return [calendarValue, setCalendarValue];\n}\n\n/**\n * Control the internal `value` align with prop `value` and provide a temp `calendarValue` for ui.\n * `calendarValue` will be reset when blur & focus & open.\n */\nexport function useInnerValue(generateConfig, locale, formatList, /** Used for RangePicker. `true` means [DateType, DateType] or will be DateType[] */\nrangeValue,\n/**\n * Trigger order when trigger calendar value change.\n * This should only used in SinglePicker with `multiple` mode.\n * So when `rangeValue` is `true`, order will be ignored.\n */\norder, defaultValue, value, onCalendarChange, onOk) {\n // This is the root value which will sync with controlled or uncontrolled value\n var _useMergedState = useMergedState(defaultValue, {\n value: value\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n innerValue = _useMergedState2[0],\n setInnerValue = _useMergedState2[1];\n var mergedValue = innerValue || EMPTY_VALUE;\n\n // ========================= Inner Values =========================\n var _useCalendarValue = useCalendarValue(mergedValue),\n _useCalendarValue2 = _slicedToArray(_useCalendarValue, 2),\n calendarValue = _useCalendarValue2[0],\n setCalendarValue = _useCalendarValue2[1];\n\n // ============================ Change ============================\n var _useUtil = useUtil(generateConfig, locale, formatList),\n _useUtil2 = _slicedToArray(_useUtil, 2),\n getDateTexts = _useUtil2[0],\n isSameDates = _useUtil2[1];\n var triggerCalendarChange = useEvent(function (nextCalendarValues) {\n var clone = _toConsumableArray(nextCalendarValues);\n if (rangeValue) {\n for (var i = 0; i < 2; i += 1) {\n clone[i] = clone[i] || null;\n }\n } else if (order) {\n clone = orderDates(clone.filter(function (date) {\n return date;\n }), generateConfig);\n }\n\n // Update merged value\n var _isSameDates = isSameDates(calendarValue(), clone),\n _isSameDates2 = _slicedToArray(_isSameDates, 2),\n isSameMergedDates = _isSameDates2[0],\n isSameStart = _isSameDates2[1];\n if (!isSameMergedDates) {\n setCalendarValue(clone);\n\n // Trigger calendar change event\n if (onCalendarChange) {\n var cellTexts = getDateTexts(clone);\n onCalendarChange(clone, cellTexts, {\n range: isSameStart ? 'end' : 'start'\n });\n }\n }\n });\n var triggerOk = function triggerOk() {\n if (onOk) {\n onOk(calendarValue());\n }\n };\n return [mergedValue, setInnerValue, calendarValue, triggerCalendarChange, triggerOk];\n}\nexport default function useRangeValue(info, mergedValue, setInnerValue, getCalendarValue, triggerCalendarChange, disabled, formatList, focused, open, isInvalidateDate) {\n var generateConfig = info.generateConfig,\n locale = info.locale,\n picker = info.picker,\n onChange = info.onChange,\n allowEmpty = info.allowEmpty,\n order = info.order;\n var orderOnChange = disabled.some(function (d) {\n return d;\n }) ? false : order;\n\n // ============================= Util =============================\n var _useUtil3 = useUtil(generateConfig, locale, formatList),\n _useUtil4 = _slicedToArray(_useUtil3, 2),\n getDateTexts = _useUtil4[0],\n isSameDates = _useUtil4[1];\n\n // ============================ Values ============================\n // Used for trigger `onChange` event.\n // Record current value which is wait for submit.\n var _useSyncState3 = useSyncState(mergedValue),\n _useSyncState4 = _slicedToArray(_useSyncState3, 2),\n submitValue = _useSyncState4[0],\n setSubmitValue = _useSyncState4[1];\n\n /** Sync calendarValue & submitValue back with value */\n var syncWithValue = useEvent(function () {\n setSubmitValue(mergedValue);\n });\n React.useEffect(function () {\n syncWithValue();\n }, [mergedValue]);\n\n // ============================ Submit ============================\n var triggerSubmit = useEvent(function (nextValue) {\n var isNullValue = nextValue === null;\n var clone = _toConsumableArray(nextValue || submitValue());\n\n // Fill null value\n if (isNullValue) {\n var maxLen = Math.max(disabled.length, clone.length);\n for (var i = 0; i < maxLen; i += 1) {\n if (!disabled[i]) {\n clone[i] = null;\n }\n }\n }\n\n // Only when exist value to sort\n if (orderOnChange && clone[0] && clone[1]) {\n clone = orderDates(clone, generateConfig);\n }\n\n // Sync `calendarValue`\n triggerCalendarChange(clone);\n\n // ========= Validate check =========\n var _clone = clone,\n _clone2 = _slicedToArray(_clone, 2),\n start = _clone2[0],\n end = _clone2[1];\n\n // >>> Empty\n var startEmpty = !start;\n var endEmpty = !end;\n var validateEmptyDateRange = allowEmpty ?\n // Validate empty start\n (!startEmpty || allowEmpty[0]) && (\n // Validate empty end\n !endEmpty || allowEmpty[1]) : true;\n\n // >>> Order\n var validateOrder = !order || startEmpty || endEmpty || isSame(generateConfig, locale, start, end, picker) || generateConfig.isAfter(end, start);\n\n // >>> Invalid\n var validateDates =\n // Validate start\n (!start || !isInvalidateDate(start, {\n activeIndex: 0\n })) && (\n // Validate end\n !end || !isInvalidateDate(end, {\n from: start,\n activeIndex: 1\n }));\n\n // >>> Result\n var allPassed =\n // Null value is from clear button\n isNullValue ||\n // Normal check\n validateEmptyDateRange && validateOrder && validateDates;\n if (allPassed) {\n // Sync value with submit value\n setInnerValue(clone);\n var _isSameDates3 = isSameDates(clone, mergedValue),\n _isSameDates4 = _slicedToArray(_isSameDates3, 1),\n isSameMergedDates = _isSameDates4[0];\n\n // Trigger `onChange` if needed\n if (onChange && !isSameMergedDates) {\n onChange(\n // Return null directly if all date are empty\n isNullValue && clone.every(function (val) {\n return !val;\n }) ? null : clone, getDateTexts(clone));\n }\n }\n return allPassed;\n });\n\n // ========================= Flush Submit =========================\n var flushSubmit = useEvent(function (index, needTriggerChange) {\n var nextSubmitValue = fillIndex(submitValue(), index, getCalendarValue()[index]);\n setSubmitValue(nextSubmitValue);\n if (needTriggerChange) {\n triggerSubmit();\n }\n });\n\n // ============================ Effect ============================\n // All finished action trigger after 2 frames\n var interactiveFinished = !focused && !open;\n useLockEffect(!interactiveFinished, function () {\n if (interactiveFinished) {\n // Always try to trigger submit first\n triggerSubmit();\n\n // Trigger calendar change since this is a effect reset\n // https://github.com/ant-design/ant-design/issues/22351\n triggerCalendarChange(mergedValue);\n\n // Sync with value anyway\n syncWithValue();\n }\n }, 2);\n\n // ============================ Return ============================\n return [flushSubmit, triggerSubmit];\n}","map":{"version":3,"names":["_slicedToArray","_toConsumableArray","useEvent","useMergedState","React","useSyncState","formatValue","isSame","isSameTimestamp","fillIndex","useLockEffect","EMPTY_VALUE","useUtil","generateConfig","locale","formatList","getDateTexts","dates","map","date","format","isSameDates","source","target","maxLen","Math","max","length","diffIndex","i","prev","next","orderDates","sort","a","b","isAfter","useCalendarValue","mergedValue","_useSyncState","_useSyncState2","calendarValue","setCalendarValue","syncWithValue","useEffect","useInnerValue","rangeValue","order","defaultValue","value","onCalendarChange","onOk","_useMergedState","_useMergedState2","innerValue","setInnerValue","_useCalendarValue","_useCalendarValue2","_useUtil","_useUtil2","triggerCalendarChange","nextCalendarValues","clone","filter","_isSameDates","_isSameDates2","isSameMergedDates","isSameStart","cellTexts","range","triggerOk","useRangeValue","info","getCalendarValue","disabled","focused","open","isInvalidateDate","picker","onChange","allowEmpty","orderOnChange","some","d","_useUtil3","_useUtil4","_useSyncState3","_useSyncState4","submitValue","setSubmitValue","triggerSubmit","nextValue","isNullValue","_clone","_clone2","start","end","startEmpty","endEmpty","validateEmptyDateRange","validateOrder","validateDates","activeIndex","from","allPassed","_isSameDates3","_isSameDates4","every","val","flushSubmit","index","needTriggerChange","nextSubmitValue","interactiveFinished"],"sources":["C:/Users/Аришина)/Desktop/promo/node_modules/rc-picker/es/PickerInput/hooks/useRangeValue.js"],"sourcesContent":["import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport { useEvent, useMergedState } from 'rc-util';\nimport * as React from 'react';\nimport useSyncState from \"../../hooks/useSyncState\";\nimport { formatValue, isSame, isSameTimestamp } from \"../../utils/dateUtil\";\nimport { fillIndex } from \"../../utils/miscUtil\";\nimport useLockEffect from \"./useLockEffect\";\nvar EMPTY_VALUE = [];\n\n// Submit Logic:\n// * ✅ Value:\n// * merged value using controlled value, if not, use stateValue\n// * When merged value change, [1] resync calendar value and submit value\n// * ✅ Calender Value:\n// * 💻 When user typing is validate, change the calendar value\n// * 🌅 When user click on the panel, change the calendar value\n// * Submit Value:\n// * 💻 When user blur the input, flush calendar value to submit value\n// * 🌅 When user click on the panel is no needConfirm, flush calendar value to submit value\n// * 🌅 When user click on the panel is needConfirm and click OK, flush calendar value to submit value\n// * Blur logic & close logic:\n// * ✅ For value, always try flush submit\n// * ✅ If `needConfirm`, reset as [1]\n// * Else (`!needConfirm`)\n// * If has another index field, active another index\n// * ✅ Flush submit:\n// * If all the start & end field is confirmed or all blur or panel closed\n// * Update `needSubmit` mark to true\n// * trigger onChange by `needSubmit` and update stateValue\n\nfunction useUtil(generateConfig, locale, formatList) {\n var getDateTexts = function getDateTexts(dates) {\n return dates.map(function (date) {\n return formatValue(date, {\n generateConfig: generateConfig,\n locale: locale,\n format: formatList[0]\n });\n });\n };\n var isSameDates = function isSameDates(source, target) {\n var maxLen = Math.max(source.length, target.length);\n var diffIndex = -1;\n for (var i = 0; i < maxLen; i += 1) {\n var prev = source[i] || null;\n var next = target[i] || null;\n if (prev !== next && !isSameTimestamp(generateConfig, prev, next)) {\n diffIndex = i;\n break;\n }\n }\n return [diffIndex < 0, diffIndex !== 0];\n };\n return [getDateTexts, isSameDates];\n}\nfunction orderDates(dates, generateConfig) {\n return _toConsumableArray(dates).sort(function (a, b) {\n return generateConfig.isAfter(a, b) ? 1 : -1;\n });\n}\n\n/**\n * Used for internal value management.\n * It should always use `mergedValue` in render logic\n */\nexport function useCalendarValue(mergedValue) {\n var _useSyncState = useSyncState(mergedValue),\n _useSyncState2 = _slicedToArray(_useSyncState, 2),\n calendarValue = _useSyncState2[0],\n setCalendarValue = _useSyncState2[1];\n\n /** Sync calendarValue & submitValue back with value */\n var syncWithValue = useEvent(function () {\n setCalendarValue(mergedValue);\n });\n React.useEffect(function () {\n syncWithValue();\n }, [mergedValue]);\n return [calendarValue, setCalendarValue];\n}\n\n/**\n * Control the internal `value` align with prop `value` and provide a temp `calendarValue` for ui.\n * `calendarValue` will be reset when blur & focus & open.\n */\nexport function useInnerValue(generateConfig, locale, formatList, /** Used for RangePicker. `true` means [DateType, DateType] or will be DateType[] */\nrangeValue,\n/**\n * Trigger order when trigger calendar value change.\n * This should only used in SinglePicker with `multiple` mode.\n * So when `rangeValue` is `true`, order will be ignored.\n */\norder, defaultValue, value, onCalendarChange, onOk) {\n // This is the root value which will sync with controlled or uncontrolled value\n var _useMergedState = useMergedState(defaultValue, {\n value: value\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n innerValue = _useMergedState2[0],\n setInnerValue = _useMergedState2[1];\n var mergedValue = innerValue || EMPTY_VALUE;\n\n // ========================= Inner Values =========================\n var _useCalendarValue = useCalendarValue(mergedValue),\n _useCalendarValue2 = _slicedToArray(_useCalendarValue, 2),\n calendarValue = _useCalendarValue2[0],\n setCalendarValue = _useCalendarValue2[1];\n\n // ============================ Change ============================\n var _useUtil = useUtil(generateConfig, locale, formatList),\n _useUtil2 = _slicedToArray(_useUtil, 2),\n getDateTexts = _useUtil2[0],\n isSameDates = _useUtil2[1];\n var triggerCalendarChange = useEvent(function (nextCalendarValues) {\n var clone = _toConsumableArray(nextCalendarValues);\n if (rangeValue) {\n for (var i = 0; i < 2; i += 1) {\n clone[i] = clone[i] || null;\n }\n } else if (order) {\n clone = orderDates(clone.filter(function (date) {\n return date;\n }), generateConfig);\n }\n\n // Update merged value\n var _isSameDates = isSameDates(calendarValue(), clone),\n _isSameDates2 = _slicedToArray(_isSameDates, 2),\n isSameMergedDates = _isSameDates2[0],\n isSameStart = _isSameDates2[1];\n if (!isSameMergedDates) {\n setCalendarValue(clone);\n\n // Trigger calendar change event\n if (onCalendarChange) {\n var cellTexts = getDateTexts(clone);\n onCalendarChange(clone, cellTexts, {\n range: isSameStart ? 'end' : 'start'\n });\n }\n }\n });\n var triggerOk = function triggerOk() {\n if (onOk) {\n onOk(calendarValue());\n }\n };\n return [mergedValue, setInnerValue, calendarValue, triggerCalendarChange, triggerOk];\n}\nexport default function useRangeValue(info, mergedValue, setInnerValue, getCalendarValue, triggerCalendarChange, disabled, formatList, focused, open, isInvalidateDate) {\n var generateConfig = info.generateConfig,\n locale = info.locale,\n picker = info.picker,\n onChange = info.onChange,\n allowEmpty = info.allowEmpty,\n order = info.order;\n var orderOnChange = disabled.some(function (d) {\n return d;\n }) ? false : order;\n\n // ============================= Util =============================\n var _useUtil3 = useUtil(generateConfig, locale, formatList),\n _useUtil4 = _slicedToArray(_useUtil3, 2),\n getDateTexts = _useUtil4[0],\n isSameDates = _useUtil4[1];\n\n // ============================ Values ============================\n // Used for trigger `onChange` event.\n // Record current value which is wait for submit.\n var _useSyncState3 = useSyncState(mergedValue),\n _useSyncState4 = _slicedToArray(_useSyncState3, 2),\n submitValue = _useSyncState4[0],\n setSubmitValue = _useSyncState4[1];\n\n /** Sync calendarValue & submitValue back with value */\n var syncWithValue = useEvent(function () {\n setSubmitValue(mergedValue);\n });\n React.useEffect(function () {\n syncWithValue();\n }, [mergedValue]);\n\n // ============================ Submit ============================\n var triggerSubmit = useEvent(function (nextValue) {\n var isNullValue = nextValue === null;\n var clone = _toConsumableArray(nextValue || submitValue());\n\n // Fill null value\n if (isNullValue) {\n var maxLen = Math.max(disabled.length, clone.length);\n for (var i = 0; i < maxLen; i += 1) {\n if (!disabled[i]) {\n clone[i] = null;\n }\n }\n }\n\n // Only when exist value to sort\n if (orderOnChange && clone[0] && clone[1]) {\n clone = orderDates(clone, generateConfig);\n }\n\n // Sync `calendarValue`\n triggerCalendarChange(clone);\n\n // ========= Validate check =========\n var _clone = clone,\n _clone2 = _slicedToArray(_clone, 2),\n start = _clone2[0],\n end = _clone2[1];\n\n // >>> Empty\n var startEmpty = !start;\n var endEmpty = !end;\n var validateEmptyDateRange = allowEmpty ?\n // Validate empty start\n (!startEmpty || allowEmpty[0]) && (\n // Validate empty end\n !endEmpty || allowEmpty[1]) : true;\n\n // >>> Order\n var validateOrder = !order || startEmpty || endEmpty || isSame(generateConfig, locale, start, end, picker) || generateConfig.isAfter(end, start);\n\n // >>> Invalid\n var validateDates =\n // Validate start\n (!start || !isInvalidateDate(start, {\n activeIndex: 0\n })) && (\n // Validate end\n !end || !isInvalidateDate(end, {\n from: start,\n activeIndex: 1\n }));\n\n // >>> Result\n var allPassed =\n // Null value is from clear button\n isNullValue ||\n // Normal check\n validateEmptyDateRange && validateOrder && validateDates;\n if (allPassed) {\n // Sync value with submit value\n setInnerValue(clone);\n var _isSameDates3 = isSameDates(clone, mergedValue),\n _isSameDates4 = _slicedToArray(_isSameDates3, 1),\n isSameMergedDates = _isSameDates4[0];\n\n // Trigger `onChange` if needed\n if (onChange && !isSameMergedDates) {\n onChange(\n // Return null directly if all date are empty\n isNullValue && clone.every(function (val) {\n return !val;\n }) ? null : clone, getDateTexts(clone));\n }\n }\n return allPassed;\n });\n\n // ========================= Flush Submit =========================\n var flushSubmit = useEvent(function (index, needTriggerChange) {\n var nextSubmitValue = fillIndex(submitValue(), index, getCalendarValue()[index]);\n setSubmitValue(nextSubmitValue);\n if (needTriggerChange) {\n triggerSubmit();\n }\n });\n\n // ============================ Effect ============================\n // All finished action trigger after 2 frames\n var interactiveFinished = !focused && !open;\n useLockEffect(!interactiveFinished, function () {\n if (interactiveFinished) {\n // Always try to trigger submit first\n triggerSubmit();\n\n // Trigger calendar change since this is a effect reset\n // https://github.com/ant-design/ant-design/issues/22351\n triggerCalendarChange(mergedValue);\n\n // Sync with value anyway\n syncWithValue();\n }\n }, 2);\n\n // ============================ Return ============================\n return [flushSubmit, triggerSubmit];\n}"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} |