react-native-timer-picker 1.10.2 → 1.10.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +2 -2
  2. package/dist/commonjs/components/DurationScroll/index.js +83 -62
  3. package/dist/commonjs/components/DurationScroll/index.js.map +1 -1
  4. package/dist/commonjs/components/TimerPicker/index.js +19 -10
  5. package/dist/commonjs/components/TimerPicker/index.js.map +1 -1
  6. package/dist/commonjs/utils/generateNumbers.js +3 -3
  7. package/dist/commonjs/utils/generateNumbers.js.map +1 -1
  8. package/dist/commonjs/utils/getAdjustedLimit.js +4 -3
  9. package/dist/commonjs/utils/getAdjustedLimit.js.map +1 -1
  10. package/dist/commonjs/utils/getDurationAndIndexFromScrollOffset.js +23 -0
  11. package/dist/commonjs/utils/getDurationAndIndexFromScrollOffset.js.map +1 -0
  12. package/dist/commonjs/utils/getInitialScrollIndex.js +18 -0
  13. package/dist/commonjs/utils/getInitialScrollIndex.js.map +1 -0
  14. package/dist/module/components/DurationScroll/index.js +83 -62
  15. package/dist/module/components/DurationScroll/index.js.map +1 -1
  16. package/dist/module/components/TimerPicker/index.js +19 -10
  17. package/dist/module/components/TimerPicker/index.js.map +1 -1
  18. package/dist/module/utils/generateNumbers.js +3 -3
  19. package/dist/module/utils/generateNumbers.js.map +1 -1
  20. package/dist/module/utils/getAdjustedLimit.js +4 -3
  21. package/dist/module/utils/getAdjustedLimit.js.map +1 -1
  22. package/dist/module/utils/getDurationAndIndexFromScrollOffset.js +16 -0
  23. package/dist/module/utils/getDurationAndIndexFromScrollOffset.js.map +1 -0
  24. package/dist/module/utils/getInitialScrollIndex.js +11 -0
  25. package/dist/module/utils/getInitialScrollIndex.js.map +1 -0
  26. package/dist/typescript/utils/generateNumbers.d.ts +1 -1
  27. package/dist/typescript/utils/getDurationAndIndexFromScrollOffset.d.ts +10 -0
  28. package/dist/typescript/utils/{getScrollIndex.d.ts → getInitialScrollIndex.d.ts} +2 -1
  29. package/package.json +1 -1
  30. package/dist/commonjs/utils/getScrollIndex.js +0 -17
  31. package/dist/commonjs/utils/getScrollIndex.js.map +0 -1
  32. package/dist/module/utils/getScrollIndex.js +0 -10
  33. package/dist/module/utils/getScrollIndex.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["React","forwardRef","useEffect","useImperativeHandle","useMemo","useRef","useState","View","DurationScroll","generateStyles","TimerPicker","props","ref","aggressivelyGetLatestDuration","allowFontScaling","amLabel","disableInfiniteScroll","hideHours","hideMinutes","hideSeconds","hourLabel","hourLimit","hoursPickerIsDisabled","initialValue","minuteLabel","minuteLimit","minutesPickerIsDisabled","onDurationChange","padHoursWithZero","padMinutesWithZero","padSecondsWithZero","padWithNItems","pickerContainerProps","pmLabel","repeatHourNumbersNTimes","repeatMinuteNumbersNTimes","repeatSecondNumbersNTimes","secondLabel","secondLimit","secondsPickerIsDisabled","styles","customStyles","use12HourPicker","otherProps","checkedPadWithNItems","Math","round","safeInitialValue","hours","minutes","seconds","selectedHours","setSelectedHours","selectedMinutes","setSelectedMinutes","selectedSeconds","setSelectedSeconds","hoursDurationScrollRef","minutesDurationScrollRef","secondsDurationScrollRef","_hoursDurationScrollR3","_minutesDurationScrol3","_secondsDurationScrol3","reset","options","_hoursDurationScrollR","_minutesDurationScrol","_secondsDurationScrol","current","setValue","value","_hoursDurationScrollR2","_minutesDurationScrol2","_secondsDurationScrol2","latestDuration","createElement","_extends","style","pickerContainer","testID","is12HourPicker","isDisabled","label","undefined","limit","numberOfItems","padNumbersWithZero","repeatNumbersNTimes","memo"],"sources":["index.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { View } from \"react-native\";\n\nimport DurationScroll from \"../DurationScroll\";\nimport type { DurationScrollRef } from \"../DurationScroll/types\";\n\nimport { generateStyles } from \"./styles\";\nimport type { TimerPickerProps, TimerPickerRef } from \"./types\";\n\nconst TimerPicker = forwardRef<TimerPickerRef, TimerPickerProps>(\n (props, ref) => {\n const {\n aggressivelyGetLatestDuration = false,\n allowFontScaling = false,\n amLabel = \"am\",\n disableInfiniteScroll = false,\n hideHours = false,\n hideMinutes = false,\n hideSeconds = false,\n hourLabel,\n hourLimit,\n hoursPickerIsDisabled = false,\n initialValue,\n minuteLabel,\n minuteLimit,\n minutesPickerIsDisabled = false,\n onDurationChange,\n padHoursWithZero = false,\n padMinutesWithZero = true,\n padSecondsWithZero = true,\n padWithNItems = 1,\n pickerContainerProps,\n pmLabel = \"pm\",\n repeatHourNumbersNTimes = 6,\n repeatMinuteNumbersNTimes = 3,\n repeatSecondNumbersNTimes = 3,\n secondLabel,\n secondLimit,\n secondsPickerIsDisabled = false,\n styles: customStyles,\n use12HourPicker = false,\n ...otherProps\n } = props;\n\n const checkedPadWithNItems =\n padWithNItems >= 0 ? Math.round(padWithNItems) : 0;\n\n const styles = useMemo(\n () =>\n generateStyles(customStyles, {\n padWithNItems: checkedPadWithNItems,\n }),\n\n [checkedPadWithNItems, customStyles]\n );\n\n const safeInitialValue = useMemo(\n () => ({\n hours: initialValue?.hours ?? 0,\n minutes: initialValue?.minutes ?? 0,\n seconds: initialValue?.seconds ?? 0,\n }),\n [initialValue?.hours, initialValue?.minutes, initialValue?.seconds]\n );\n\n const [selectedHours, setSelectedHours] = useState(\n safeInitialValue.hours\n );\n const [selectedMinutes, setSelectedMinutes] = useState(\n safeInitialValue.minutes\n );\n const [selectedSeconds, setSelectedSeconds] = useState(\n safeInitialValue.seconds\n );\n\n useEffect(() => {\n onDurationChange?.({\n hours: selectedHours,\n minutes: selectedMinutes,\n seconds: selectedSeconds,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedHours, selectedMinutes, selectedSeconds]);\n\n const hoursDurationScrollRef = useRef<DurationScrollRef>(null);\n const minutesDurationScrollRef = useRef<DurationScrollRef>(null);\n const secondsDurationScrollRef = useRef<DurationScrollRef>(null);\n\n useImperativeHandle(ref, () => ({\n reset: (options) => {\n setSelectedHours(safeInitialValue.hours);\n setSelectedMinutes(safeInitialValue.minutes);\n setSelectedSeconds(safeInitialValue.seconds);\n hoursDurationScrollRef.current?.reset(options);\n minutesDurationScrollRef.current?.reset(options);\n secondsDurationScrollRef.current?.reset(options);\n },\n setValue: (value, options) => {\n setSelectedHours(value.hours);\n setSelectedMinutes(value.minutes);\n setSelectedSeconds(value.seconds);\n hoursDurationScrollRef.current?.setValue(value.hours, options);\n minutesDurationScrollRef.current?.setValue(\n value.minutes,\n options\n );\n secondsDurationScrollRef.current?.setValue(\n value.seconds,\n options\n );\n },\n latestDuration: {\n hours: hoursDurationScrollRef.current?.latestDuration,\n minutes: minutesDurationScrollRef.current?.latestDuration,\n seconds: secondsDurationScrollRef.current?.latestDuration,\n },\n }));\n\n return (\n <View\n {...pickerContainerProps}\n style={styles.pickerContainer}\n testID=\"timer-picker\">\n {!hideHours ? (\n <DurationScroll\n ref={hoursDurationScrollRef}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n allowFontScaling={allowFontScaling}\n amLabel={amLabel}\n disableInfiniteScroll={disableInfiniteScroll}\n initialValue={safeInitialValue.hours}\n is12HourPicker={use12HourPicker}\n isDisabled={hoursPickerIsDisabled}\n label={\n hourLabel ?? (!use12HourPicker ? \"h\" : undefined)\n }\n limit={hourLimit}\n numberOfItems={23}\n onDurationChange={setSelectedHours}\n padNumbersWithZero={padHoursWithZero}\n padWithNItems={checkedPadWithNItems}\n pmLabel={pmLabel}\n repeatNumbersNTimes={repeatHourNumbersNTimes}\n styles={styles}\n testID=\"duration-scroll-hour\"\n {...otherProps}\n />\n ) : null}\n {!hideMinutes ? (\n <DurationScroll\n ref={minutesDurationScrollRef}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n allowFontScaling={allowFontScaling}\n disableInfiniteScroll={disableInfiniteScroll}\n initialValue={safeInitialValue.minutes}\n isDisabled={minutesPickerIsDisabled}\n label={minuteLabel ?? \"m\"}\n limit={minuteLimit}\n numberOfItems={59}\n onDurationChange={setSelectedMinutes}\n padNumbersWithZero={padMinutesWithZero}\n padWithNItems={checkedPadWithNItems}\n repeatNumbersNTimes={repeatMinuteNumbersNTimes}\n styles={styles}\n testID=\"duration-scroll-minute\"\n {...otherProps}\n />\n ) : null}\n {!hideSeconds ? (\n <DurationScroll\n ref={secondsDurationScrollRef}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n allowFontScaling={allowFontScaling}\n disableInfiniteScroll={disableInfiniteScroll}\n initialValue={safeInitialValue.seconds}\n isDisabled={secondsPickerIsDisabled}\n label={secondLabel ?? \"s\"}\n limit={secondLimit}\n numberOfItems={59}\n onDurationChange={setSelectedSeconds}\n padNumbersWithZero={padSecondsWithZero}\n padWithNItems={checkedPadWithNItems}\n repeatNumbersNTimes={repeatSecondNumbersNTimes}\n styles={styles}\n testID=\"duration-scroll-second\"\n {...otherProps}\n />\n ) : null}\n </View>\n );\n }\n);\n\nexport default React.memo(TimerPicker);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","forwardRef","useEffect","useImperativeHandle","useMemo","useRef","useState","View","DurationScroll","generateStyles","TimerPicker","props","ref","aggressivelyGetLatestDuration","allowFontScaling","amLabel","disableInfiniteScroll","hideHours","hideMinutes","hideSeconds","hourLabel","hourLimit","hoursPickerIsDisabled","initialValue","minuteLabel","minuteLimit","minutesPickerIsDisabled","onDurationChange","padHoursWithZero","padMinutesWithZero","padSecondsWithZero","padWithNItems","pickerContainerProps","pmLabel","repeatHourNumbersNTimes","repeatMinuteNumbersNTimes","repeatSecondNumbersNTimes","secondLabel","secondLimit","secondsPickerIsDisabled","styles","customStyles","use12HourPicker","otherProps","safePadWithNItems","maxPadWithNItems","Math","round","safeInitialValue","hours","minutes","seconds","selectedHours","setSelectedHours","selectedMinutes","setSelectedMinutes","selectedSeconds","setSelectedSeconds","hoursDurationScrollRef","minutesDurationScrollRef","secondsDurationScrollRef","_hoursDurationScrollR3","_minutesDurationScrol3","_secondsDurationScrol3","reset","options","_hoursDurationScrollR","_minutesDurationScrol","_secondsDurationScrol","current","setValue","value","_hoursDurationScrollR2","_minutesDurationScrol2","_secondsDurationScrol2","latestDuration","createElement","_extends","style","pickerContainer","testID","is12HourPicker","isDisabled","label","undefined","limit","numberOfItems","padNumbersWithZero","repeatNumbersNTimes","memo"],"sources":["index.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { View } from \"react-native\";\n\nimport DurationScroll from \"../DurationScroll\";\nimport type { DurationScrollRef } from \"../DurationScroll/types\";\n\nimport { generateStyles } from \"./styles\";\nimport type { TimerPickerProps, TimerPickerRef } from \"./types\";\n\nconst TimerPicker = forwardRef<TimerPickerRef, TimerPickerProps>(\n (props, ref) => {\n const {\n aggressivelyGetLatestDuration = false,\n allowFontScaling = false,\n amLabel = \"am\",\n disableInfiniteScroll = false,\n hideHours = false,\n hideMinutes = false,\n hideSeconds = false,\n hourLabel,\n hourLimit,\n hoursPickerIsDisabled = false,\n initialValue,\n minuteLabel,\n minuteLimit,\n minutesPickerIsDisabled = false,\n onDurationChange,\n padHoursWithZero = false,\n padMinutesWithZero = true,\n padSecondsWithZero = true,\n padWithNItems = 1,\n pickerContainerProps,\n pmLabel = \"pm\",\n repeatHourNumbersNTimes = 7,\n repeatMinuteNumbersNTimes = 3,\n repeatSecondNumbersNTimes = 3,\n secondLabel,\n secondLimit,\n secondsPickerIsDisabled = false,\n styles: customStyles,\n use12HourPicker = false,\n ...otherProps\n } = props;\n\n const safePadWithNItems = useMemo(() => {\n if (padWithNItems < 0) {\n return 0;\n }\n\n const maxPadWithNItems = hideHours ? 15 : 6;\n\n if (padWithNItems > maxPadWithNItems) {\n return maxPadWithNItems;\n }\n\n return Math.round(padWithNItems);\n }, [hideHours, padWithNItems]);\n\n const styles = useMemo(\n () =>\n generateStyles(customStyles, {\n padWithNItems: safePadWithNItems,\n }),\n\n [safePadWithNItems, customStyles]\n );\n\n const safeInitialValue = useMemo(\n () => ({\n hours: initialValue?.hours ?? 0,\n minutes: initialValue?.minutes ?? 0,\n seconds: initialValue?.seconds ?? 0,\n }),\n [initialValue?.hours, initialValue?.minutes, initialValue?.seconds]\n );\n\n const [selectedHours, setSelectedHours] = useState(\n safeInitialValue.hours\n );\n const [selectedMinutes, setSelectedMinutes] = useState(\n safeInitialValue.minutes\n );\n const [selectedSeconds, setSelectedSeconds] = useState(\n safeInitialValue.seconds\n );\n\n useEffect(() => {\n onDurationChange?.({\n hours: selectedHours,\n minutes: selectedMinutes,\n seconds: selectedSeconds,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedHours, selectedMinutes, selectedSeconds]);\n\n const hoursDurationScrollRef = useRef<DurationScrollRef>(null);\n const minutesDurationScrollRef = useRef<DurationScrollRef>(null);\n const secondsDurationScrollRef = useRef<DurationScrollRef>(null);\n\n useImperativeHandle(ref, () => ({\n reset: (options) => {\n setSelectedHours(safeInitialValue.hours);\n setSelectedMinutes(safeInitialValue.minutes);\n setSelectedSeconds(safeInitialValue.seconds);\n hoursDurationScrollRef.current?.reset(options);\n minutesDurationScrollRef.current?.reset(options);\n secondsDurationScrollRef.current?.reset(options);\n },\n setValue: (value, options) => {\n setSelectedHours(value.hours);\n setSelectedMinutes(value.minutes);\n setSelectedSeconds(value.seconds);\n hoursDurationScrollRef.current?.setValue(value.hours, options);\n minutesDurationScrollRef.current?.setValue(\n value.minutes,\n options\n );\n secondsDurationScrollRef.current?.setValue(\n value.seconds,\n options\n );\n },\n latestDuration: {\n hours: hoursDurationScrollRef.current?.latestDuration,\n minutes: minutesDurationScrollRef.current?.latestDuration,\n seconds: secondsDurationScrollRef.current?.latestDuration,\n },\n }));\n\n return (\n <View\n {...pickerContainerProps}\n style={styles.pickerContainer}\n testID=\"timer-picker\">\n {!hideHours ? (\n <DurationScroll\n ref={hoursDurationScrollRef}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n allowFontScaling={allowFontScaling}\n amLabel={amLabel}\n disableInfiniteScroll={disableInfiniteScroll}\n initialValue={safeInitialValue.hours}\n is12HourPicker={use12HourPicker}\n isDisabled={hoursPickerIsDisabled}\n label={\n hourLabel ?? (!use12HourPicker ? \"h\" : undefined)\n }\n limit={hourLimit}\n numberOfItems={24}\n onDurationChange={setSelectedHours}\n padNumbersWithZero={padHoursWithZero}\n padWithNItems={safePadWithNItems}\n pmLabel={pmLabel}\n repeatNumbersNTimes={repeatHourNumbersNTimes}\n styles={styles}\n testID=\"duration-scroll-hour\"\n {...otherProps}\n />\n ) : null}\n {!hideMinutes ? (\n <DurationScroll\n ref={minutesDurationScrollRef}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n allowFontScaling={allowFontScaling}\n disableInfiniteScroll={disableInfiniteScroll}\n initialValue={safeInitialValue.minutes}\n isDisabled={minutesPickerIsDisabled}\n label={minuteLabel ?? \"m\"}\n limit={minuteLimit}\n numberOfItems={60}\n onDurationChange={setSelectedMinutes}\n padNumbersWithZero={padMinutesWithZero}\n padWithNItems={safePadWithNItems}\n repeatNumbersNTimes={repeatMinuteNumbersNTimes}\n styles={styles}\n testID=\"duration-scroll-minute\"\n {...otherProps}\n />\n ) : null}\n {!hideSeconds ? (\n <DurationScroll\n ref={secondsDurationScrollRef}\n aggressivelyGetLatestDuration={\n aggressivelyGetLatestDuration\n }\n allowFontScaling={allowFontScaling}\n disableInfiniteScroll={disableInfiniteScroll}\n initialValue={safeInitialValue.seconds}\n isDisabled={secondsPickerIsDisabled}\n label={secondLabel ?? \"s\"}\n limit={secondLimit}\n numberOfItems={60}\n onDurationChange={setSelectedSeconds}\n padNumbersWithZero={padSecondsWithZero}\n padWithNItems={safePadWithNItems}\n repeatNumbersNTimes={repeatSecondNumbersNTimes}\n styles={styles}\n testID=\"duration-scroll-second\"\n {...otherProps}\n />\n ) : null}\n </View>\n );\n }\n);\n\nexport default React.memo(TimerPicker);\n"],"mappings":"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","ignoreList":[]}
@@ -4,15 +4,15 @@ export const generateNumbers = (numberOfItems, options) => {
4
4
  return [];
5
5
  }
6
6
  let numbers = [];
7
- for (let i = 0; i <= numberOfItems; i++) {
7
+ for (let i = 0; i < numberOfItems; i++) {
8
8
  numbers.push(padNumber(i, {
9
9
  padWithZero: options.padNumbersWithZero
10
10
  }));
11
11
  }
12
- if ((options.repeatNTimes ?? 1) > 1) {
12
+ if (options.repeatNTimes > 1) {
13
13
  numbers = Array(options.repeatNTimes).fill(numbers).flat();
14
14
  }
15
- if (options.disableInfiniteScroll) {
15
+ if (options.disableInfiniteScroll || options.repeatNTimes === 1) {
16
16
  numbers.push(...Array(options.padWithNItems).fill(""));
17
17
  numbers.unshift(...Array(options.padWithNItems).fill(""));
18
18
  }
@@ -1 +1 @@
1
- {"version":3,"names":["padNumber","generateNumbers","numberOfItems","options","numbers","i","push","padWithZero","padNumbersWithZero","repeatNTimes","Array","fill","flat","disableInfiniteScroll","padWithNItems","unshift","generate12HourNumbers","hour"],"sources":["generateNumbers.ts"],"sourcesContent":["import { padNumber } from \"./padNumber\";\n\nexport const generateNumbers = (\n numberOfItems: number,\n options: {\n disableInfiniteScroll?: boolean;\n padNumbersWithZero?: boolean;\n padWithNItems: number;\n repeatNTimes?: number;\n }\n) => {\n if (numberOfItems <= 0) {\n return [];\n }\n\n let numbers: string[] = [];\n for (let i = 0; i <= numberOfItems; i++) {\n numbers.push(padNumber(i, { padWithZero: options.padNumbersWithZero }));\n }\n\n if ((options.repeatNTimes ?? 1) > 1) {\n numbers = Array(options.repeatNTimes).fill(numbers).flat();\n }\n if (options.disableInfiniteScroll) {\n numbers.push(...Array(options.padWithNItems).fill(\"\"));\n numbers.unshift(...Array(options.padWithNItems).fill(\"\"));\n }\n return numbers;\n};\n\nexport const generate12HourNumbers = (options: {\n disableInfiniteScroll?: boolean;\n padNumbersWithZero?: boolean;\n padWithNItems: number;\n repeatNTimes?: number;\n}) => {\n let numbers: string[] = [];\n\n // Generate numbers from 0 to 11 for AM\n for (let i = 0; i <= 11; i++) {\n numbers.push(\n `${padNumber(i, { padWithZero: options.padNumbersWithZero })} AM`\n );\n }\n\n // Generate numbers from 12 to 11 for PM\n for (let i = 12; i <= 23; i++) {\n const hour = i > 12 ? i - 12 : i;\n numbers.push(\n `${padNumber(hour, { padWithZero: options.padNumbersWithZero })} PM`\n );\n }\n\n if ((options.repeatNTimes ?? 1) > 1) {\n numbers = Array(options.repeatNTimes).fill(numbers).flat();\n }\n\n if (options.disableInfiniteScroll) {\n numbers.push(...Array(options.padWithNItems).fill(\"\"));\n numbers.unshift(...Array(options.padWithNItems).fill(\"\"));\n }\n\n return numbers;\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,aAAa;AAEvC,OAAO,MAAMC,eAAe,GAAGA,CAC3BC,aAAqB,EACrBC,OAKC,KACA;EACD,IAAID,aAAa,IAAI,CAAC,EAAE;IACpB,OAAO,EAAE;EACb;EAEA,IAAIE,OAAiB,GAAG,EAAE;EAC1B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIH,aAAa,EAAEG,CAAC,EAAE,EAAE;IACrCD,OAAO,CAACE,IAAI,CAACN,SAAS,CAACK,CAAC,EAAE;MAAEE,WAAW,EAAEJ,OAAO,CAACK;IAAmB,CAAC,CAAC,CAAC;EAC3E;EAEA,IAAI,CAACL,OAAO,CAACM,YAAY,IAAI,CAAC,IAAI,CAAC,EAAE;IACjCL,OAAO,GAAGM,KAAK,CAACP,OAAO,CAACM,YAAY,CAAC,CAACE,IAAI,CAACP,OAAO,CAAC,CAACQ,IAAI,CAAC,CAAC;EAC9D;EACA,IAAIT,OAAO,CAACU,qBAAqB,EAAE;IAC/BT,OAAO,CAACE,IAAI,CAAC,GAAGI,KAAK,CAACP,OAAO,CAACW,aAAa,CAAC,CAACH,IAAI,CAAC,EAAE,CAAC,CAAC;IACtDP,OAAO,CAACW,OAAO,CAAC,GAAGL,KAAK,CAACP,OAAO,CAACW,aAAa,CAAC,CAACH,IAAI,CAAC,EAAE,CAAC,CAAC;EAC7D;EACA,OAAOP,OAAO;AAClB,CAAC;AAED,OAAO,MAAMY,qBAAqB,GAAIb,OAKrC,IAAK;EACF,IAAIC,OAAiB,GAAG,EAAE;;EAE1B;EACA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,EAAE,EAAEA,CAAC,EAAE,EAAE;IAC1BD,OAAO,CAACE,IAAI,CACR,GAAGN,SAAS,CAACK,CAAC,EAAE;MAAEE,WAAW,EAAEJ,OAAO,CAACK;IAAmB,CAAC,CAAC,KAChE,CAAC;EACL;;EAEA;EACA,KAAK,IAAIH,CAAC,GAAG,EAAE,EAAEA,CAAC,IAAI,EAAE,EAAEA,CAAC,EAAE,EAAE;IAC3B,MAAMY,IAAI,GAAGZ,CAAC,GAAG,EAAE,GAAGA,CAAC,GAAG,EAAE,GAAGA,CAAC;IAChCD,OAAO,CAACE,IAAI,CACR,GAAGN,SAAS,CAACiB,IAAI,EAAE;MAAEV,WAAW,EAAEJ,OAAO,CAACK;IAAmB,CAAC,CAAC,KACnE,CAAC;EACL;EAEA,IAAI,CAACL,OAAO,CAACM,YAAY,IAAI,CAAC,IAAI,CAAC,EAAE;IACjCL,OAAO,GAAGM,KAAK,CAACP,OAAO,CAACM,YAAY,CAAC,CAACE,IAAI,CAACP,OAAO,CAAC,CAACQ,IAAI,CAAC,CAAC;EAC9D;EAEA,IAAIT,OAAO,CAACU,qBAAqB,EAAE;IAC/BT,OAAO,CAACE,IAAI,CAAC,GAAGI,KAAK,CAACP,OAAO,CAACW,aAAa,CAAC,CAACH,IAAI,CAAC,EAAE,CAAC,CAAC;IACtDP,OAAO,CAACW,OAAO,CAAC,GAAGL,KAAK,CAACP,OAAO,CAACW,aAAa,CAAC,CAACH,IAAI,CAAC,EAAE,CAAC,CAAC;EAC7D;EAEA,OAAOP,OAAO;AAClB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["padNumber","generateNumbers","numberOfItems","options","numbers","i","push","padWithZero","padNumbersWithZero","repeatNTimes","Array","fill","flat","disableInfiniteScroll","padWithNItems","unshift","generate12HourNumbers","hour"],"sources":["generateNumbers.ts"],"sourcesContent":["import { padNumber } from \"./padNumber\";\n\nexport const generateNumbers = (\n numberOfItems: number,\n options: {\n disableInfiniteScroll?: boolean;\n padNumbersWithZero?: boolean;\n padWithNItems: number;\n repeatNTimes: number;\n }\n) => {\n if (numberOfItems <= 0) {\n return [];\n }\n\n let numbers: string[] = [];\n for (let i = 0; i < numberOfItems; i++) {\n numbers.push(padNumber(i, { padWithZero: options.padNumbersWithZero }));\n }\n\n if (options.repeatNTimes > 1) {\n numbers = Array(options.repeatNTimes).fill(numbers).flat();\n }\n if (options.disableInfiniteScroll || options.repeatNTimes === 1) {\n numbers.push(...Array(options.padWithNItems).fill(\"\"));\n numbers.unshift(...Array(options.padWithNItems).fill(\"\"));\n }\n return numbers;\n};\n\nexport const generate12HourNumbers = (options: {\n disableInfiniteScroll?: boolean;\n padNumbersWithZero?: boolean;\n padWithNItems: number;\n repeatNTimes?: number;\n}) => {\n let numbers: string[] = [];\n\n // Generate numbers from 0 to 11 for AM\n for (let i = 0; i <= 11; i++) {\n numbers.push(\n `${padNumber(i, { padWithZero: options.padNumbersWithZero })} AM`\n );\n }\n\n // Generate numbers from 12 to 11 for PM\n for (let i = 12; i <= 23; i++) {\n const hour = i > 12 ? i - 12 : i;\n numbers.push(\n `${padNumber(hour, { padWithZero: options.padNumbersWithZero })} PM`\n );\n }\n\n if ((options.repeatNTimes ?? 1) > 1) {\n numbers = Array(options.repeatNTimes).fill(numbers).flat();\n }\n\n if (options.disableInfiniteScroll) {\n numbers.push(...Array(options.padWithNItems).fill(\"\"));\n numbers.unshift(...Array(options.padWithNItems).fill(\"\"));\n }\n\n return numbers;\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,aAAa;AAEvC,OAAO,MAAMC,eAAe,GAAGA,CAC3BC,aAAqB,EACrBC,OAKC,KACA;EACD,IAAID,aAAa,IAAI,CAAC,EAAE;IACpB,OAAO,EAAE;EACb;EAEA,IAAIE,OAAiB,GAAG,EAAE;EAC1B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,aAAa,EAAEG,CAAC,EAAE,EAAE;IACpCD,OAAO,CAACE,IAAI,CAACN,SAAS,CAACK,CAAC,EAAE;MAAEE,WAAW,EAAEJ,OAAO,CAACK;IAAmB,CAAC,CAAC,CAAC;EAC3E;EAEA,IAAIL,OAAO,CAACM,YAAY,GAAG,CAAC,EAAE;IAC1BL,OAAO,GAAGM,KAAK,CAACP,OAAO,CAACM,YAAY,CAAC,CAACE,IAAI,CAACP,OAAO,CAAC,CAACQ,IAAI,CAAC,CAAC;EAC9D;EACA,IAAIT,OAAO,CAACU,qBAAqB,IAAIV,OAAO,CAACM,YAAY,KAAK,CAAC,EAAE;IAC7DL,OAAO,CAACE,IAAI,CAAC,GAAGI,KAAK,CAACP,OAAO,CAACW,aAAa,CAAC,CAACH,IAAI,CAAC,EAAE,CAAC,CAAC;IACtDP,OAAO,CAACW,OAAO,CAAC,GAAGL,KAAK,CAACP,OAAO,CAACW,aAAa,CAAC,CAACH,IAAI,CAAC,EAAE,CAAC,CAAC;EAC7D;EACA,OAAOP,OAAO;AAClB,CAAC;AAED,OAAO,MAAMY,qBAAqB,GAAIb,OAKrC,IAAK;EACF,IAAIC,OAAiB,GAAG,EAAE;;EAE1B;EACA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,EAAE,EAAEA,CAAC,EAAE,EAAE;IAC1BD,OAAO,CAACE,IAAI,CACR,GAAGN,SAAS,CAACK,CAAC,EAAE;MAAEE,WAAW,EAAEJ,OAAO,CAACK;IAAmB,CAAC,CAAC,KAChE,CAAC;EACL;;EAEA;EACA,KAAK,IAAIH,CAAC,GAAG,EAAE,EAAEA,CAAC,IAAI,EAAE,EAAEA,CAAC,EAAE,EAAE;IAC3B,MAAMY,IAAI,GAAGZ,CAAC,GAAG,EAAE,GAAGA,CAAC,GAAG,EAAE,GAAGA,CAAC;IAChCD,OAAO,CAACE,IAAI,CACR,GAAGN,SAAS,CAACiB,IAAI,EAAE;MAAEV,WAAW,EAAEJ,OAAO,CAACK;IAAmB,CAAC,CAAC,KACnE,CAAC;EACL;EAEA,IAAI,CAACL,OAAO,CAACM,YAAY,IAAI,CAAC,IAAI,CAAC,EAAE;IACjCL,OAAO,GAAGM,KAAK,CAACP,OAAO,CAACM,YAAY,CAAC,CAACE,IAAI,CAACP,OAAO,CAAC,CAACQ,IAAI,CAAC,CAAC;EAC9D;EAEA,IAAIT,OAAO,CAACU,qBAAqB,EAAE;IAC/BT,OAAO,CAACE,IAAI,CAAC,GAAGI,KAAK,CAACP,OAAO,CAACW,aAAa,CAAC,CAACH,IAAI,CAAC,EAAE,CAAC,CAAC;IACtDP,OAAO,CAACW,OAAO,CAAC,GAAGL,KAAK,CAACP,OAAO,CAACW,aAAa,CAAC,CAACH,IAAI,CAAC,EAAE,CAAC,CAAC;EAC7D;EAEA,OAAOP,OAAO;AAClB,CAAC","ignoreList":[]}
@@ -1,19 +1,20 @@
1
1
  export const getAdjustedLimit = (limit, numberOfItems) => {
2
+ const maxIndex = numberOfItems - 1;
2
3
  if (!limit || !limit.max && !limit.min) {
3
4
  return {
4
- max: numberOfItems,
5
+ max: maxIndex,
5
6
  min: 0
6
7
  };
7
8
  }
8
9
 
9
10
  // guard against limits that are out of bounds
10
- const adjustedMaxLimit = limit.max ? Math.min(limit.max, numberOfItems) : numberOfItems;
11
+ const adjustedMaxLimit = limit.max ? Math.min(limit.max, maxIndex) : maxIndex;
11
12
  const adjustedMinLimit = limit.min ? Math.max(limit.min, 0) : 0;
12
13
 
13
14
  // guard against invalid limits
14
15
  if (adjustedMaxLimit < adjustedMinLimit) {
15
16
  return {
16
- max: numberOfItems,
17
+ max: maxIndex,
17
18
  min: 0
18
19
  };
19
20
  }
@@ -1 +1 @@
1
- {"version":3,"names":["getAdjustedLimit","limit","numberOfItems","max","min","adjustedMaxLimit","Math","adjustedMinLimit"],"sources":["getAdjustedLimit.ts"],"sourcesContent":["import type { LimitType } from \"../components/DurationScroll/types\";\n\nexport const getAdjustedLimit = (\n limit: LimitType | undefined,\n numberOfItems: number\n): {\n max: number;\n min: number;\n} => {\n if (!limit || (!limit.max && !limit.min)) {\n return {\n max: numberOfItems,\n min: 0,\n };\n }\n\n // guard against limits that are out of bounds\n const adjustedMaxLimit = limit.max\n ? Math.min(limit.max, numberOfItems)\n : numberOfItems;\n const adjustedMinLimit = limit.min ? Math.max(limit.min, 0) : 0;\n\n // guard against invalid limits\n if (adjustedMaxLimit < adjustedMinLimit) {\n return {\n max: numberOfItems,\n min: 0,\n };\n }\n\n return {\n max: adjustedMaxLimit,\n min: adjustedMinLimit,\n };\n};\n"],"mappings":"AAEA,OAAO,MAAMA,gBAAgB,GAAGA,CAC5BC,KAA4B,EAC5BC,aAAqB,KAIpB;EACD,IAAI,CAACD,KAAK,IAAK,CAACA,KAAK,CAACE,GAAG,IAAI,CAACF,KAAK,CAACG,GAAI,EAAE;IACtC,OAAO;MACHD,GAAG,EAAED,aAAa;MAClBE,GAAG,EAAE;IACT,CAAC;EACL;;EAEA;EACA,MAAMC,gBAAgB,GAAGJ,KAAK,CAACE,GAAG,GAC5BG,IAAI,CAACF,GAAG,CAACH,KAAK,CAACE,GAAG,EAAED,aAAa,CAAC,GAClCA,aAAa;EACnB,MAAMK,gBAAgB,GAAGN,KAAK,CAACG,GAAG,GAAGE,IAAI,CAACH,GAAG,CAACF,KAAK,CAACG,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;;EAE/D;EACA,IAAIC,gBAAgB,GAAGE,gBAAgB,EAAE;IACrC,OAAO;MACHJ,GAAG,EAAED,aAAa;MAClBE,GAAG,EAAE;IACT,CAAC;EACL;EAEA,OAAO;IACHD,GAAG,EAAEE,gBAAgB;IACrBD,GAAG,EAAEG;EACT,CAAC;AACL,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["getAdjustedLimit","limit","numberOfItems","maxIndex","max","min","adjustedMaxLimit","Math","adjustedMinLimit"],"sources":["getAdjustedLimit.ts"],"sourcesContent":["import type { LimitType } from \"../components/DurationScroll/types\";\n\nexport const getAdjustedLimit = (\n limit: LimitType | undefined,\n numberOfItems: number\n): {\n max: number;\n min: number;\n} => {\n const maxIndex = numberOfItems - 1;\n\n if (!limit || (!limit.max && !limit.min)) {\n return {\n max: maxIndex,\n min: 0,\n };\n }\n\n // guard against limits that are out of bounds\n const adjustedMaxLimit = limit.max\n ? Math.min(limit.max, maxIndex)\n : maxIndex;\n const adjustedMinLimit = limit.min ? Math.max(limit.min, 0) : 0;\n\n // guard against invalid limits\n if (adjustedMaxLimit < adjustedMinLimit) {\n return {\n max: maxIndex,\n min: 0,\n };\n }\n\n return {\n max: adjustedMaxLimit,\n min: adjustedMinLimit,\n };\n};\n"],"mappings":"AAEA,OAAO,MAAMA,gBAAgB,GAAGA,CAC5BC,KAA4B,EAC5BC,aAAqB,KAIpB;EACD,MAAMC,QAAQ,GAAGD,aAAa,GAAG,CAAC;EAElC,IAAI,CAACD,KAAK,IAAK,CAACA,KAAK,CAACG,GAAG,IAAI,CAACH,KAAK,CAACI,GAAI,EAAE;IACtC,OAAO;MACHD,GAAG,EAAED,QAAQ;MACbE,GAAG,EAAE;IACT,CAAC;EACL;;EAEA;EACA,MAAMC,gBAAgB,GAAGL,KAAK,CAACG,GAAG,GAC5BG,IAAI,CAACF,GAAG,CAACJ,KAAK,CAACG,GAAG,EAAED,QAAQ,CAAC,GAC7BA,QAAQ;EACd,MAAMK,gBAAgB,GAAGP,KAAK,CAACI,GAAG,GAAGE,IAAI,CAACH,GAAG,CAACH,KAAK,CAACI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;;EAE/D;EACA,IAAIC,gBAAgB,GAAGE,gBAAgB,EAAE;IACrC,OAAO;MACHJ,GAAG,EAAED,QAAQ;MACbE,GAAG,EAAE;IACT,CAAC;EACL;EAEA,OAAO;IACHD,GAAG,EAAEE,gBAAgB;IACrBD,GAAG,EAAEG;EACT,CAAC;AACL,CAAC","ignoreList":[]}
@@ -0,0 +1,16 @@
1
+ export const getDurationAndIndexFromScrollOffset = variables => {
2
+ const {
3
+ disableInfiniteScroll,
4
+ itemHeight,
5
+ numberOfItems,
6
+ padWithNItems,
7
+ yContentOffset
8
+ } = variables;
9
+ const index = Math.round(yContentOffset / itemHeight);
10
+ const duration = (disableInfiniteScroll ? index : index + padWithNItems) % numberOfItems;
11
+ return {
12
+ duration,
13
+ index
14
+ };
15
+ };
16
+ //# sourceMappingURL=getDurationAndIndexFromScrollOffset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getDurationAndIndexFromScrollOffset","variables","disableInfiniteScroll","itemHeight","numberOfItems","padWithNItems","yContentOffset","index","Math","round","duration"],"sources":["getDurationAndIndexFromScrollOffset.ts"],"sourcesContent":["export const getDurationAndIndexFromScrollOffset = (variables: {\n disableInfiniteScroll: boolean;\n itemHeight: number;\n numberOfItems: number;\n padWithNItems: number;\n yContentOffset: number;\n}) => {\n const {\n disableInfiniteScroll,\n itemHeight,\n numberOfItems,\n padWithNItems,\n yContentOffset,\n } = variables;\n\n const index = Math.round(yContentOffset / itemHeight);\n\n const duration =\n (disableInfiniteScroll ? index : index + padWithNItems) % numberOfItems;\n\n return {\n duration,\n index,\n };\n};\n"],"mappings":"AAAA,OAAO,MAAMA,mCAAmC,GAAIC,SAMnD,IAAK;EACF,MAAM;IACFC,qBAAqB;IACrBC,UAAU;IACVC,aAAa;IACbC,aAAa;IACbC;EACJ,CAAC,GAAGL,SAAS;EAEb,MAAMM,KAAK,GAAGC,IAAI,CAACC,KAAK,CAACH,cAAc,GAAGH,UAAU,CAAC;EAErD,MAAMO,QAAQ,GACV,CAACR,qBAAqB,GAAGK,KAAK,GAAGA,KAAK,GAAGF,aAAa,IAAID,aAAa;EAE3E,OAAO;IACHM,QAAQ;IACRH;EACJ,CAAC;AACL,CAAC","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ export const getInitialScrollIndex = variables => {
2
+ const {
3
+ disableInfiniteScroll,
4
+ numberOfItems,
5
+ padWithNItems,
6
+ repeatNumbersNTimes,
7
+ value
8
+ } = variables;
9
+ return Math.max(numberOfItems * Math.floor(repeatNumbersNTimes / 2) + (value + numberOfItems) % numberOfItems - (!disableInfiniteScroll ? padWithNItems : 0), 0);
10
+ };
11
+ //# sourceMappingURL=getInitialScrollIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getInitialScrollIndex","variables","disableInfiniteScroll","numberOfItems","padWithNItems","repeatNumbersNTimes","value","Math","max","floor"],"sources":["getInitialScrollIndex.ts"],"sourcesContent":["export const getInitialScrollIndex = (variables: {\n disableInfiniteScroll: boolean;\n numberOfItems: number;\n padWithNItems: number;\n repeatNumbersNTimes: number;\n value: number;\n}) => {\n const {\n disableInfiniteScroll,\n numberOfItems,\n padWithNItems,\n repeatNumbersNTimes,\n value,\n } = variables;\n\n return Math.max(\n numberOfItems * Math.floor(repeatNumbersNTimes / 2) +\n ((value + numberOfItems) % numberOfItems) -\n (!disableInfiniteScroll ? padWithNItems : 0),\n 0\n );\n};\n"],"mappings":"AAAA,OAAO,MAAMA,qBAAqB,GAAIC,SAMrC,IAAK;EACF,MAAM;IACFC,qBAAqB;IACrBC,aAAa;IACbC,aAAa;IACbC,mBAAmB;IACnBC;EACJ,CAAC,GAAGL,SAAS;EAEb,OAAOM,IAAI,CAACC,GAAG,CACXL,aAAa,GAAGI,IAAI,CAACE,KAAK,CAACJ,mBAAmB,GAAG,CAAC,CAAC,GAC9C,CAACC,KAAK,GAAGH,aAAa,IAAIA,aAAc,IACxC,CAACD,qBAAqB,GAAGE,aAAa,GAAG,CAAC,CAAC,EAChD,CACJ,CAAC;AACL,CAAC","ignoreList":[]}
@@ -2,7 +2,7 @@ export declare const generateNumbers: (numberOfItems: number, options: {
2
2
  disableInfiniteScroll?: boolean;
3
3
  padNumbersWithZero?: boolean;
4
4
  padWithNItems: number;
5
- repeatNTimes?: number;
5
+ repeatNTimes: number;
6
6
  }) => string[];
7
7
  export declare const generate12HourNumbers: (options: {
8
8
  disableInfiniteScroll?: boolean;
@@ -0,0 +1,10 @@
1
+ export declare const getDurationAndIndexFromScrollOffset: (variables: {
2
+ disableInfiniteScroll: boolean;
3
+ itemHeight: number;
4
+ numberOfItems: number;
5
+ padWithNItems: number;
6
+ yContentOffset: number;
7
+ }) => {
8
+ duration: number;
9
+ index: number;
10
+ };
@@ -1,4 +1,5 @@
1
- export declare const getScrollIndex: (variables: {
1
+ export declare const getInitialScrollIndex: (variables: {
2
+ disableInfiniteScroll: boolean;
2
3
  numberOfItems: number;
3
4
  padWithNItems: number;
4
5
  repeatNumbersNTimes: number;
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "url": "https://github.com/troberts-28"
7
7
  },
8
8
  "license": "MIT",
9
- "version": "1.10.2",
9
+ "version": "1.10.3",
10
10
  "main": "dist/commonjs/index.js",
11
11
  "module": "dist/module/index.js",
12
12
  "types": "dist/typescript/index.d.ts",
@@ -1,17 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getScrollIndex = void 0;
7
- const getScrollIndex = variables => {
8
- const {
9
- numberOfItems,
10
- padWithNItems,
11
- repeatNumbersNTimes,
12
- value
13
- } = variables;
14
- return (value + numberOfItems) % (numberOfItems * repeatNumbersNTimes) + (padWithNItems - 1);
15
- };
16
- exports.getScrollIndex = getScrollIndex;
17
- //# sourceMappingURL=getScrollIndex.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["getScrollIndex","variables","numberOfItems","padWithNItems","repeatNumbersNTimes","value","exports"],"sources":["getScrollIndex.ts"],"sourcesContent":["export const getScrollIndex = (variables: {\n numberOfItems: number;\n padWithNItems: number;\n repeatNumbersNTimes: number;\n value: number;\n}) => {\n const {\n numberOfItems,\n padWithNItems,\n repeatNumbersNTimes,\n value,\n } = variables;\n\n return (\n ((value + numberOfItems) % (numberOfItems * repeatNumbersNTimes)) +\n (padWithNItems - 1)\n );\n};\n"],"mappings":";;;;;;AAAO,MAAMA,cAAc,GAAIC,SAK9B,IAAK;EACF,MAAM;IACFC,aAAa;IACbC,aAAa;IACbC,mBAAmB;IACnBC;EACJ,CAAC,GAAGJ,SAAS;EAEb,OACK,CAACI,KAAK,GAAGH,aAAa,KAAKA,aAAa,GAAGE,mBAAmB,CAAC,IAC/DD,aAAa,GAAG,CAAC,CAAC;AAE3B,CAAC;AAACG,OAAA,CAAAN,cAAA,GAAAA,cAAA","ignoreList":[]}
@@ -1,10 +0,0 @@
1
- export const getScrollIndex = variables => {
2
- const {
3
- numberOfItems,
4
- padWithNItems,
5
- repeatNumbersNTimes,
6
- value
7
- } = variables;
8
- return (value + numberOfItems) % (numberOfItems * repeatNumbersNTimes) + (padWithNItems - 1);
9
- };
10
- //# sourceMappingURL=getScrollIndex.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["getScrollIndex","variables","numberOfItems","padWithNItems","repeatNumbersNTimes","value"],"sources":["getScrollIndex.ts"],"sourcesContent":["export const getScrollIndex = (variables: {\n numberOfItems: number;\n padWithNItems: number;\n repeatNumbersNTimes: number;\n value: number;\n}) => {\n const {\n numberOfItems,\n padWithNItems,\n repeatNumbersNTimes,\n value,\n } = variables;\n\n return (\n ((value + numberOfItems) % (numberOfItems * repeatNumbersNTimes)) +\n (padWithNItems - 1)\n );\n};\n"],"mappings":"AAAA,OAAO,MAAMA,cAAc,GAAIC,SAK9B,IAAK;EACF,MAAM;IACFC,aAAa;IACbC,aAAa;IACbC,mBAAmB;IACnBC;EACJ,CAAC,GAAGJ,SAAS;EAEb,OACK,CAACI,KAAK,GAAGH,aAAa,KAAKA,aAAa,GAAGE,mBAAmB,CAAC,IAC/DD,aAAa,GAAG,CAAC,CAAC;AAE3B,CAAC","ignoreList":[]}