@contentful/field-editor-date 1.1.6 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,10 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [1.1.7](https://github.com/contentful/field-editors/compare/@contentful/field-editor-date@1.1.6...@contentful/field-editor-date@1.1.7) (2022-06-22)
7
+
8
+ **Note:** Version bump only for package @contentful/field-editor-date
9
+
6
10
  ## [1.1.6](https://github.com/contentful/field-editors/compare/@contentful/field-editor-date@1.1.5...@contentful/field-editor-date@1.1.6) (2022-05-27)
7
11
 
8
12
  ### Bug Fixes
@@ -48,7 +48,7 @@ function _setPrototypeOf(o, p) {
48
48
  return _setPrototypeOf(o, p);
49
49
  }
50
50
 
51
- // eslint-disable-next-line no-restricted-imports
51
+ // eslint-disable-next-line -- TODO: describe this disable no-restricted-imports
52
52
  var ZONE_RX = /(Z|[+-]\d{2}[:+]?\d{2})$/;
53
53
 
54
54
  function startOfToday(format) {
@@ -339,7 +339,7 @@ DatepickerInput.defaultProps = {
339
339
  var validInputFormats = ['hh:mm a', 'hh:mm A', 'h:mm a', 'h:mm A', 'hh:mm', 'k:mm', 'kk:mm', 'h a', 'h A', 'h', 'hh', 'HH'];
340
340
 
341
341
  function parseRawInput(raw) {
342
- var time = null; // eslint-disable-next-line @typescript-eslint/prefer-for-of
342
+ var time = null; // eslint-disable-next-line -- TODO: describe this disable @typescript-eslint/prefer-for-of
343
343
 
344
344
  for (var i = 0; i < validInputFormats.length; i++) {
345
345
  var date = moment(raw, validInputFormats[i]);
@@ -456,7 +456,7 @@ function useEffectWithoutFirstRender(callback, deps) {
456
456
  return;
457
457
  }
458
458
 
459
- callback();
459
+ callback(); // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies
460
460
  }, deps);
461
461
  }
462
462
 
@@ -1 +1 @@
1
- {"version":3,"file":"field-editor-date.cjs.development.js","sources":["../src/utils/date.ts","../src/utils/createPikaday.ts","../src/icons/CalendarIcon.tsx","../src/DatepickerInput.tsx","../src/TimepickerInput.tsx","../src/utils/zoneOffsets.ts","../src/TimezonePickerInput.tsx","../src/DateEditor.tsx"],"sourcesContent":["// eslint-disable-next-line no-restricted-imports\nimport moment from 'moment';\nimport { TimeResult } from '../types';\n\nconst ZONE_RX = /(Z|[+-]\\d{2}[:+]?\\d{2})$/;\n\nfunction startOfToday(format: string) {\n return moment().set({ hours: 0, minutes: 0 }).format(format);\n}\n\nfunction fieldValueToMoment(datetimeString: string | null | undefined): moment.Moment | null {\n if (!datetimeString) {\n return null;\n }\n\n const datetime = moment(datetimeString);\n if (ZONE_RX.test(datetimeString)) {\n datetime.utcOffset(datetimeString);\n }\n return datetime;\n}\n\nfunction timeFromUserInput(input: TimeResult) {\n const timeInput = input.time || '00:00';\n return moment.utc(timeInput + '!' + input.ampm, 'HH:mm!A');\n}\n\n/**\n * Convert the user input object into either a 'moment' value or an\n * invalid symbol.\n *\n * Success is indicated by returning '{valid: value}' and failure is\n * indicated by returning '{invalid: true}'. If 'input.date' is\n * 'null' we return '{valid: null}'\n */\nfunction datetimeFromUserInput(input: TimeResult): {\n invalid?: boolean;\n valid: moment.Moment | null;\n} {\n if (!input.date) {\n return { valid: null };\n }\n\n const time = timeFromUserInput(input);\n\n const date = moment\n .parseZone(input.utcOffset, 'Z')\n .set(input.date.toObject())\n .set({ hours: time.hours(), minutes: time.minutes() });\n\n if (date.isValid()) {\n return { valid: date };\n } else {\n return { invalid: true, valid: null };\n }\n}\n\nexport function formatDateDisplay(date?: moment.Moment) {\n if (date) {\n return date.format('dddd, MMMM Do YYYY');\n } else {\n return '';\n }\n}\n\n/**\n * Parse user input into a string that is stored in the API.\n *\n * Returns a sum type with either the string as the `valid` property\n * or the `invalid` property set to `false`.\n */\nexport function buildFieldValue({\n data,\n usesTime,\n usesTimezone,\n}: {\n data: TimeResult;\n usesTime: boolean;\n usesTimezone: boolean;\n}) {\n const date = datetimeFromUserInput(data);\n if (date.invalid) {\n return {\n invalid: true,\n };\n }\n\n let format;\n if (usesTimezone) {\n format = 'YYYY-MM-DDTHH:mmZ';\n } else if (usesTime) {\n format = 'YYYY-MM-DDTHH:mm';\n } else {\n format = 'YYYY-MM-DD';\n }\n return { valid: date?.valid ? date.valid.format(format) : null, invalid: false };\n}\n\nexport function getDefaultAMPM() {\n return 'AM';\n}\n\nexport function getDefaultUtcOffset() {\n return startOfToday('Z');\n}\n\n/**\n * Create the user input object from the field value.\n */\nexport function userInputFromDatetime({\n value,\n uses12hClock,\n}: {\n value: string | undefined | null;\n uses12hClock: boolean;\n}): TimeResult {\n const datetime = fieldValueToMoment(value);\n\n if (datetime) {\n const timeFormat = uses12hClock ? 'hh:mm' : 'HH:mm';\n return {\n date: datetime,\n time: datetime.format(timeFormat),\n ampm: datetime.format('A'),\n utcOffset: datetime.format('Z'),\n };\n } else {\n return {\n ampm: getDefaultAMPM(),\n utcOffset: getDefaultUtcOffset(),\n };\n }\n}\n","import Pikaday from 'pikaday';\n\nconst I18N = {\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n weekdaysShort: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n};\n\nconst DEFAULTS = {\n i18n: I18N,\n yearRange: 100,\n};\n\n// Gets same options as Pikaday and returns a Pikaday instance\nexport const createPikaday = (opts?: Pikaday.PikadayOptions) =>\n new Pikaday(Object.assign({}, DEFAULTS, opts));\n","import React from 'react';\n\nexport function CalendarIcon(props: {\n className?: string;\n onClick?: React.MouseEventHandler<SVGElement>;\n}) {\n return (\n <svg\n width=\"16\"\n height=\"17\"\n viewBox=\"-1 -1 18 19\"\n onClick={props.onClick}\n xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}>\n <g fill=\"none\" fillRule=\"evenodd\">\n <g fill=\"#536171\">\n <path d=\"M2.071 14.929v-2.411h2.411v2.41h-2.41zm2.947 0v-2.411h2.678v2.41H5.018zM2.07 11.982V9.304h2.411v2.678h-2.41zm2.947 0V9.304h2.678v2.678H5.018zM2.07 8.768v-2.41h2.411v2.41h-2.41zm6.161 6.16v-2.41h2.679v2.41H8.232zm-3.214-6.16v-2.41h2.678v2.41H5.018zm6.428 6.16v-2.41h2.411v2.41h-2.41zm-3.214-2.946V9.304h2.679v2.678H8.232zM5.286 4.75a.275.275 0 0 1-.268.268h-.536a.275.275 0 0 1-.268-.268V2.34c0-.143.126-.269.268-.269h.536c.142 0 .268.126.268.268V4.75zm6.16 7.232V9.304h2.411v2.678h-2.41zM8.232 8.768v-2.41h2.679v2.41H8.232zm3.214 0v-2.41h2.411v2.41h-2.41zm.268-4.018a.275.275 0 0 1-.268.268h-.535a.275.275 0 0 1-.268-.268V2.34c0-.143.125-.269.268-.269h.535c.143 0 .268.126.268.268V4.75zm3.215-.536c0-.586-.486-1.071-1.072-1.071h-1.071v-.804c0-.736-.603-1.339-1.34-1.339h-.535c-.737 0-1.34.603-1.34 1.34v.803H6.357v-.804C6.357 1.603 5.754 1 5.017 1h-.535c-.736 0-1.34.603-1.34 1.34v.803h-1.07C1.484 3.143 1 3.628 1 4.214V14.93C1 15.515 1.485 16 2.071 16h11.786c.586 0 1.072-.485 1.072-1.071V4.214z\" />\n </g>\n </g>\n </svg>\n );\n}\n","import React, { Component, FocusEventHandler, FocusEvent } from 'react';\nimport noop from 'lodash/noop';\n// eslint-disable-next-line no-restricted-imports\nimport moment from 'moment';\nimport { css, cx } from 'emotion';\nimport { formatDateDisplay } from './utils/date';\nimport { createPikaday } from './utils/createPikaday';\nimport { CalendarIcon } from './icons/CalendarIcon';\n\nimport { TextInput } from '@contentful/f36-components';\n\nconst styles = {\n datePickerWrapper: css({\n position: 'relative',\n maxHeight: 70,\n }),\n datePicker: css({\n zIndex: 1002,\n display: 'block',\n '.is-hidden': {\n display: 'none',\n },\n }),\n input: css({\n width: '270px',\n cursor: 'pointer',\n paddingRight: '40px',\n '&:disabled': {\n cursor: 'not-allowed',\n },\n }),\n icon: css({\n cursor: 'pointer',\n zIndex: 50,\n position: 'absolute',\n top: '12px',\n right: '12px',\n }),\n};\n\nexport type DatePickerProps = {\n value?: moment.Moment;\n onChange: (val: moment.Moment | undefined) => void;\n onBlur: FocusEventHandler;\n disabled?: boolean;\n};\n\nexport class DatepickerInput extends Component<DatePickerProps> {\n static defaultProps: Partial<DatePickerProps> = {\n onChange: noop,\n onBlur: noop,\n };\n\n pikaday?: Pikaday;\n datePickerNode = React.createRef<HTMLInputElement>();\n\n componentDidMount() {\n const onChange = this.props.onChange;\n const defaultDate = this.props.value ? this.props.value.toDate() : undefined;\n this.pikaday = createPikaday({\n field: this.datePickerNode && this.datePickerNode.current,\n defaultDate,\n setDefaultDate: defaultDate !== undefined,\n position: 'bottom left',\n reposition: false,\n theme: cx(styles.datePicker, 'hide-carret'),\n toString: (date) => {\n return formatDateDisplay(moment(date));\n },\n // we need to keep this function like this\n // so `this` refers to pikaday instance\n onSelect: function onSelect() {\n onChange(this.getMoment() || undefined);\n },\n });\n }\n\n focusInput = () => {\n if (this.datePickerNode && this.datePickerNode.current) {\n this.datePickerNode.current.focus();\n }\n };\n\n componentWillUnmount() {\n if (this.pikaday) {\n this.pikaday.destroy();\n }\n }\n\n handleOpen = () => {\n if (this.pikaday) {\n this.pikaday.show();\n }\n };\n\n handleBlur = (e: FocusEvent) => {\n this.props.onBlur(e);\n if (this.pikaday && !this.pikaday.el.contains(e.relatedTarget as HTMLInputElement)) {\n this.pikaday.hide();\n }\n };\n\n render() {\n return (\n <div className={styles.datePickerWrapper}>\n <TextInput\n aria-label=\"Select date\"\n testId=\"date-input\"\n isReadOnly\n isDisabled={this.props.disabled}\n value={formatDateDisplay(this.props.value)}\n ref={this.datePickerNode}\n onFocus={this.handleOpen}\n onBlur={this.handleBlur}\n className={styles.input}\n />\n <CalendarIcon\n onClick={() => {\n this.focusInput();\n }}\n className={styles.icon}\n />\n </div>\n );\n }\n}\n","import React, { useState, useCallback, useEffect } from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport moment from 'moment';\nimport { css } from 'emotion';\n\nimport { TextInput, Flex } from '@contentful/f36-components';\n\nexport type TimepickerProps = {\n disabled: boolean;\n uses12hClock: boolean;\n onChange: (value: { time: string; ampm: string }) => void;\n time?: string;\n ampm?: string;\n};\n\nconst validInputFormats = [\n 'hh:mm a',\n 'hh:mm A',\n 'h:mm a',\n 'h:mm A',\n 'hh:mm',\n 'k:mm',\n 'kk:mm',\n 'h a',\n 'h A',\n 'h',\n 'hh',\n 'HH',\n];\n\nfunction parseRawInput(raw: string): moment.Moment | null {\n let time: moment.Moment | null = null;\n\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < validInputFormats.length; i++) {\n const date = moment(raw, validInputFormats[i]);\n if (date.isValid()) {\n time = date;\n break;\n }\n }\n\n return time;\n}\n\nconst getDefaultTime = () => {\n return moment(`12:00 AM`, 'hh:mm A');\n};\n\nconst formatToString = (uses12hClock: boolean, value: moment.Moment): string => {\n return uses12hClock ? value.format('hh:mm A') : value.format('HH:mm');\n};\n\nexport const TimepickerInput = ({\n disabled,\n uses12hClock,\n time = '12:00',\n ampm = 'AM',\n onChange,\n}: TimepickerProps) => {\n const [selectedTime, setSelectedTime] = useState<string>(() => {\n return formatToString(uses12hClock, getDefaultTime());\n });\n\n useEffect(() => {\n setSelectedTime(formatToString(uses12hClock, moment(`${time} ${ampm}`, 'hh:mm A')));\n }, [time, ampm, uses12hClock]);\n\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n setSelectedTime(e.currentTarget.value);\n }, []);\n\n const handleFocus = useCallback((e) => {\n e.preventDefault();\n e.target.select();\n }, []);\n\n const handleBlur = () => {\n const parsedTime = parseRawInput(selectedTime);\n const value = parsedTime ?? getDefaultTime();\n setSelectedTime(formatToString(uses12hClock, value));\n onChange({ time: value.format('hh:mm'), ampm: value.format('A') });\n };\n\n return (\n <Flex className={css({ width: '145px' })}>\n <TextInput\n aria-label=\"Select time\"\n placeholder={uses12hClock ? '12:00 AM' : '00:00'}\n date-time-type={uses12hClock ? '12' : '24'}\n testId=\"time-input\"\n value={selectedTime}\n isDisabled={disabled}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleChange}\n />\n </Flex>\n );\n};\n","export const defaultZoneOffset = '+00:00';\n\nexport const zoneOffsets = [\n '-12:00',\n '-11:00',\n '-10:00',\n '-09:30',\n '-09:00',\n '-08:00',\n '-07:00',\n '-06:00',\n '-05:00',\n '-04:30',\n '-04:00',\n '-03:30',\n '-03:00',\n '-02:00',\n '-01:00',\n '+00:00',\n '+01:00',\n '+02:00',\n '+03:00',\n '+03:30',\n '+04:00',\n '+04:30',\n '+05:00',\n '+05:30',\n '+05:45',\n '+06:00',\n '+06:30',\n '+07:00',\n '+08:00',\n '+08:45',\n '+09:00',\n '+09:30',\n '+10:00',\n '+10:30',\n '+11:00',\n '+11:30',\n '+12:00',\n '+12:45',\n '+13:00',\n '+14:00',\n];\n","import React, { ChangeEvent } from 'react';\nimport { zoneOffsets, defaultZoneOffset } from './utils/zoneOffsets';\n\nimport { Select } from '@contentful/f36-components';\n\nexport type TimezonepickerProps = {\n disabled: boolean;\n onChange: (value: string) => void;\n value?: string;\n};\nexport const TimezonepickerInput = ({\n disabled,\n onChange,\n value = defaultZoneOffset,\n}: TimezonepickerProps) => {\n return (\n <Select\n aria-label=\"Select timezone\"\n testId=\"timezone-input\"\n value={value}\n isDisabled={disabled}\n onChange={(e: ChangeEvent<HTMLSelectElement>) => {\n onChange(e.currentTarget.value);\n }}>\n {zoneOffsets.map((offset) => (\n <Select.Option key={offset} value={offset}>\n UTC{offset}\n </Select.Option>\n ))}\n </Select>\n );\n};\n","import * as React from 'react';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { FieldAPI, FieldConnector, ParametersAPI } from '@contentful/field-editor-shared';\nimport { DatepickerInput } from './DatepickerInput';\nimport { TimepickerInput } from './TimepickerInput';\nimport { TimezonepickerInput } from './TimezonePickerInput';\nimport {\n userInputFromDatetime,\n buildFieldValue,\n getDefaultAMPM,\n getDefaultUtcOffset,\n} from './utils/date';\nimport { TimeFormat, DateTimeFormat, TimeResult } from './types';\n\nimport { TextLink } from '@contentful/f36-components';\n\nexport interface DateEditorProps {\n /**\n * is the field disabled initially\n */\n isInitiallyDisabled: boolean;\n\n /**\n * sdk.field\n */\n field: FieldAPI;\n\n /**\n * sdk.parameters\n */\n parameters?: ParametersAPI & {\n instance?: {\n format?: DateTimeFormat;\n ampm?: TimeFormat;\n };\n };\n}\n\nconst styles = {\n root: css({\n display: 'flex',\n alignItems: 'center',\n }),\n separator: css({\n marginLeft: tokens.spacingM,\n }),\n};\n\nfunction useEffectWithoutFirstRender(callback: Function, deps: Array<any>) {\n const isFirstRun = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRun.current) {\n isFirstRun.current = false;\n return;\n }\n callback();\n }, deps);\n}\n\nfunction DateEditorContainer({\n initialValue,\n usesTime,\n usesTimezone,\n uses12hClock,\n disabled,\n hasClear,\n onChange,\n}: {\n initialValue: TimeResult;\n usesTime: boolean;\n usesTimezone: boolean;\n uses12hClock: boolean;\n disabled: boolean;\n hasClear: boolean;\n onChange: (value: TimeResult) => void;\n}) {\n const [value, setValue] = React.useState<TimeResult>(() => initialValue);\n\n useEffectWithoutFirstRender(() => {\n onChange(value);\n }, [value]);\n\n return (\n <div data-test-id=\"date-editor\" className={styles.root}>\n <DatepickerInput\n disabled={disabled}\n value={value.date}\n onChange={(date) => {\n setValue((value) => ({\n ...value,\n date,\n }));\n }}\n />\n {usesTime && (\n <>\n <div className={styles.separator} />\n <TimepickerInput\n disabled={disabled}\n time={value.time}\n ampm={value.ampm}\n onChange={({ time, ampm }) => {\n setValue((value) => ({\n ...value,\n time,\n ampm,\n }));\n }}\n uses12hClock={uses12hClock}\n />\n </>\n )}\n {usesTimezone && (\n <>\n <div className={styles.separator} />\n <TimezonepickerInput\n disabled={disabled}\n value={value.utcOffset}\n onChange={(utcOffset) => {\n setValue((value) => ({\n ...value,\n utcOffset,\n }));\n }}\n />\n </>\n )}\n {hasClear && (\n <>\n <div className={styles.separator} />\n <TextLink\n as=\"button\"\n isDisabled={disabled}\n testId=\"date-clear\"\n onClick={() => {\n setValue({\n date: undefined,\n time: undefined,\n ampm: getDefaultAMPM(),\n utcOffset: getDefaultUtcOffset(),\n });\n }}>\n Clear\n </TextLink>\n </>\n )}\n </div>\n );\n}\n\nexport function DateEditor(props: DateEditorProps) {\n const { field, parameters } = props;\n\n const formatParam = parameters?.instance?.format ?? 'timeZ';\n const ampmParam = parameters?.instance?.ampm ?? '24';\n\n const usesTime = formatParam !== 'dateonly';\n const usesTimezone = formatParam === 'timeZ';\n const uses12hClock = ampmParam === '12';\n\n return (\n <FieldConnector<string>\n field={field}\n isInitiallyDisabled={props.isInitiallyDisabled}\n throttle={0}>\n {({ value, disabled, setValue, externalReset }) => {\n const datetimeValue = userInputFromDatetime({\n value,\n uses12hClock,\n });\n return (\n <DateEditorContainer\n initialValue={datetimeValue}\n uses12hClock={uses12hClock}\n usesTimezone={usesTimezone}\n usesTime={usesTime}\n disabled={disabled}\n hasClear={Boolean(value)}\n onChange={(data) => {\n const fieldValue = buildFieldValue({ data, usesTime, usesTimezone });\n if (fieldValue.invalid) {\n return;\n }\n // if value is present - then override it with a new one\n // if value is not present - then set a new one if it's not nullable only\n if (Boolean(value) || (!value && Boolean(fieldValue.valid))) {\n setValue(fieldValue.valid);\n }\n }}\n key={`date-container-${externalReset}`}\n />\n );\n }}\n </FieldConnector>\n );\n}\n\nDateEditor.defaultProps = {\n isInitiallyDisabled: true,\n};\n"],"names":["ZONE_RX","startOfToday","format","moment","set","hours","minutes","fieldValueToMoment","datetimeString","datetime","test","utcOffset","timeFromUserInput","input","timeInput","time","utc","ampm","datetimeFromUserInput","date","valid","parseZone","toObject","isValid","invalid","formatDateDisplay","buildFieldValue","data","usesTime","usesTimezone","getDefaultAMPM","getDefaultUtcOffset","userInputFromDatetime","value","uses12hClock","timeFormat","I18N","previousMonth","nextMonth","months","weekdaysShort","weekdays","DEFAULTS","i18n","yearRange","createPikaday","opts","Pikaday","Object","assign","CalendarIcon","props","React","width","height","viewBox","onClick","xmlns","className","fill","fillRule","d","styles","datePickerWrapper","css","position","maxHeight","datePicker","zIndex","display","cursor","paddingRight","icon","top","right","DatepickerInput","createRef","datePickerNode","current","focus","pikaday","show","e","onBlur","el","contains","relatedTarget","hide","componentDidMount","onChange","defaultDate","toDate","undefined","field","setDefaultDate","reposition","theme","cx","toString","onSelect","getMoment","componentWillUnmount","destroy","render","TextInput","testId","isReadOnly","isDisabled","disabled","ref","onFocus","handleOpen","handleBlur","focusInput","Component","noop","validInputFormats","parseRawInput","raw","i","length","getDefaultTime","formatToString","TimepickerInput","useState","selectedTime","setSelectedTime","useEffect","handleChange","useCallback","currentTarget","handleFocus","preventDefault","target","select","parsedTime","Flex","placeholder","defaultZoneOffset","zoneOffsets","TimezonepickerInput","Select","map","offset","Option","key","root","alignItems","separator","marginLeft","tokens","spacingM","useEffectWithoutFirstRender","callback","deps","isFirstRun","DateEditorContainer","initialValue","hasClear","setValue","TextLink","as","DateEditor","parameters","formatParam","instance","ampmParam","FieldConnector","isInitiallyDisabled","throttle","externalReset","datetimeValue","Boolean","fieldValue","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"field-editor-date.cjs.development.js","sources":["../src/utils/date.ts","../src/utils/createPikaday.ts","../src/icons/CalendarIcon.tsx","../src/DatepickerInput.tsx","../src/TimepickerInput.tsx","../src/utils/zoneOffsets.ts","../src/TimezonePickerInput.tsx","../src/DateEditor.tsx"],"sourcesContent":["// eslint-disable-next-line -- TODO: describe this disable no-restricted-imports\nimport moment from 'moment';\nimport { TimeResult } from '../types';\n\nconst ZONE_RX = /(Z|[+-]\\d{2}[:+]?\\d{2})$/;\n\nfunction startOfToday(format: string) {\n return moment().set({ hours: 0, minutes: 0 }).format(format);\n}\n\nfunction fieldValueToMoment(datetimeString: string | null | undefined): moment.Moment | null {\n if (!datetimeString) {\n return null;\n }\n\n const datetime = moment(datetimeString);\n if (ZONE_RX.test(datetimeString)) {\n datetime.utcOffset(datetimeString);\n }\n return datetime;\n}\n\nfunction timeFromUserInput(input: TimeResult) {\n const timeInput = input.time || '00:00';\n return moment.utc(timeInput + '!' + input.ampm, 'HH:mm!A');\n}\n\n/**\n * Convert the user input object into either a 'moment' value or an\n * invalid symbol.\n *\n * Success is indicated by returning '{valid: value}' and failure is\n * indicated by returning '{invalid: true}'. If 'input.date' is\n * 'null' we return '{valid: null}'\n */\nfunction datetimeFromUserInput(input: TimeResult): {\n invalid?: boolean;\n valid: moment.Moment | null;\n} {\n if (!input.date) {\n return { valid: null };\n }\n\n const time = timeFromUserInput(input);\n\n const date = moment\n .parseZone(input.utcOffset, 'Z')\n .set(input.date.toObject())\n .set({ hours: time.hours(), minutes: time.minutes() });\n\n if (date.isValid()) {\n return { valid: date };\n } else {\n return { invalid: true, valid: null };\n }\n}\n\nexport function formatDateDisplay(date?: moment.Moment) {\n if (date) {\n return date.format('dddd, MMMM Do YYYY');\n } else {\n return '';\n }\n}\n\n/**\n * Parse user input into a string that is stored in the API.\n *\n * Returns a sum type with either the string as the `valid` property\n * or the `invalid` property set to `false`.\n */\nexport function buildFieldValue({\n data,\n usesTime,\n usesTimezone,\n}: {\n data: TimeResult;\n usesTime: boolean;\n usesTimezone: boolean;\n}) {\n const date = datetimeFromUserInput(data);\n if (date.invalid) {\n return {\n invalid: true,\n };\n }\n\n let format;\n if (usesTimezone) {\n format = 'YYYY-MM-DDTHH:mmZ';\n } else if (usesTime) {\n format = 'YYYY-MM-DDTHH:mm';\n } else {\n format = 'YYYY-MM-DD';\n }\n return { valid: date?.valid ? date.valid.format(format) : null, invalid: false };\n}\n\nexport function getDefaultAMPM() {\n return 'AM';\n}\n\nexport function getDefaultUtcOffset() {\n return startOfToday('Z');\n}\n\n/**\n * Create the user input object from the field value.\n */\nexport function userInputFromDatetime({\n value,\n uses12hClock,\n}: {\n value: string | undefined | null;\n uses12hClock: boolean;\n}): TimeResult {\n const datetime = fieldValueToMoment(value);\n\n if (datetime) {\n const timeFormat = uses12hClock ? 'hh:mm' : 'HH:mm';\n return {\n date: datetime,\n time: datetime.format(timeFormat),\n ampm: datetime.format('A'),\n utcOffset: datetime.format('Z'),\n };\n } else {\n return {\n ampm: getDefaultAMPM(),\n utcOffset: getDefaultUtcOffset(),\n };\n }\n}\n","import Pikaday from 'pikaday';\n\nconst I18N = {\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n weekdaysShort: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n};\n\nconst DEFAULTS = {\n i18n: I18N,\n yearRange: 100,\n};\n\n// Gets same options as Pikaday and returns a Pikaday instance\nexport const createPikaday = (opts?: Pikaday.PikadayOptions) =>\n new Pikaday(Object.assign({}, DEFAULTS, opts));\n","import React from 'react';\n\nexport function CalendarIcon(props: {\n className?: string;\n onClick?: React.MouseEventHandler<SVGElement>;\n}) {\n return (\n <svg\n width=\"16\"\n height=\"17\"\n viewBox=\"-1 -1 18 19\"\n onClick={props.onClick}\n xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}>\n <g fill=\"none\" fillRule=\"evenodd\">\n <g fill=\"#536171\">\n <path d=\"M2.071 14.929v-2.411h2.411v2.41h-2.41zm2.947 0v-2.411h2.678v2.41H5.018zM2.07 11.982V9.304h2.411v2.678h-2.41zm2.947 0V9.304h2.678v2.678H5.018zM2.07 8.768v-2.41h2.411v2.41h-2.41zm6.161 6.16v-2.41h2.679v2.41H8.232zm-3.214-6.16v-2.41h2.678v2.41H5.018zm6.428 6.16v-2.41h2.411v2.41h-2.41zm-3.214-2.946V9.304h2.679v2.678H8.232zM5.286 4.75a.275.275 0 0 1-.268.268h-.536a.275.275 0 0 1-.268-.268V2.34c0-.143.126-.269.268-.269h.536c.142 0 .268.126.268.268V4.75zm6.16 7.232V9.304h2.411v2.678h-2.41zM8.232 8.768v-2.41h2.679v2.41H8.232zm3.214 0v-2.41h2.411v2.41h-2.41zm.268-4.018a.275.275 0 0 1-.268.268h-.535a.275.275 0 0 1-.268-.268V2.34c0-.143.125-.269.268-.269h.535c.143 0 .268.126.268.268V4.75zm3.215-.536c0-.586-.486-1.071-1.072-1.071h-1.071v-.804c0-.736-.603-1.339-1.34-1.339h-.535c-.737 0-1.34.603-1.34 1.34v.803H6.357v-.804C6.357 1.603 5.754 1 5.017 1h-.535c-.736 0-1.34.603-1.34 1.34v.803h-1.07C1.484 3.143 1 3.628 1 4.214V14.93C1 15.515 1.485 16 2.071 16h11.786c.586 0 1.072-.485 1.072-1.071V4.214z\" />\n </g>\n </g>\n </svg>\n );\n}\n","import React, { Component, FocusEventHandler, FocusEvent } from 'react';\nimport noop from 'lodash/noop';\n// eslint-disable-next-line -- TODO: describe this disable no-restricted-imports\nimport moment from 'moment';\nimport { css, cx } from 'emotion';\nimport { formatDateDisplay } from './utils/date';\nimport { createPikaday } from './utils/createPikaday';\nimport { CalendarIcon } from './icons/CalendarIcon';\n\nimport { TextInput } from '@contentful/f36-components';\n\nconst styles = {\n datePickerWrapper: css({\n position: 'relative',\n maxHeight: 70,\n }),\n datePicker: css({\n zIndex: 1002,\n display: 'block',\n '.is-hidden': {\n display: 'none',\n },\n }),\n input: css({\n width: '270px',\n cursor: 'pointer',\n paddingRight: '40px',\n '&:disabled': {\n cursor: 'not-allowed',\n },\n }),\n icon: css({\n cursor: 'pointer',\n zIndex: 50,\n position: 'absolute',\n top: '12px',\n right: '12px',\n }),\n};\n\nexport type DatePickerProps = {\n value?: moment.Moment;\n onChange: (val: moment.Moment | undefined) => void;\n onBlur: FocusEventHandler;\n disabled?: boolean;\n};\n\nexport class DatepickerInput extends Component<DatePickerProps> {\n static defaultProps: Partial<DatePickerProps> = {\n onChange: noop,\n onBlur: noop,\n };\n\n pikaday?: Pikaday;\n datePickerNode = React.createRef<HTMLInputElement>();\n\n componentDidMount() {\n const onChange = this.props.onChange;\n const defaultDate = this.props.value ? this.props.value.toDate() : undefined;\n this.pikaday = createPikaday({\n field: this.datePickerNode && this.datePickerNode.current,\n defaultDate,\n setDefaultDate: defaultDate !== undefined,\n position: 'bottom left',\n reposition: false,\n theme: cx(styles.datePicker, 'hide-carret'),\n toString: (date) => {\n return formatDateDisplay(moment(date));\n },\n // we need to keep this function like this\n // so `this` refers to pikaday instance\n onSelect: function onSelect() {\n onChange(this.getMoment() || undefined);\n },\n });\n }\n\n focusInput = () => {\n if (this.datePickerNode && this.datePickerNode.current) {\n this.datePickerNode.current.focus();\n }\n };\n\n componentWillUnmount() {\n if (this.pikaday) {\n this.pikaday.destroy();\n }\n }\n\n handleOpen = () => {\n if (this.pikaday) {\n this.pikaday.show();\n }\n };\n\n handleBlur = (e: FocusEvent) => {\n this.props.onBlur(e);\n if (this.pikaday && !this.pikaday.el.contains(e.relatedTarget as HTMLInputElement)) {\n this.pikaday.hide();\n }\n };\n\n render() {\n return (\n <div className={styles.datePickerWrapper}>\n <TextInput\n aria-label=\"Select date\"\n testId=\"date-input\"\n isReadOnly\n isDisabled={this.props.disabled}\n value={formatDateDisplay(this.props.value)}\n ref={this.datePickerNode}\n onFocus={this.handleOpen}\n onBlur={this.handleBlur}\n className={styles.input}\n />\n <CalendarIcon\n onClick={() => {\n this.focusInput();\n }}\n className={styles.icon}\n />\n </div>\n );\n }\n}\n","import React, { useState, useCallback, useEffect } from 'react';\n// eslint-disable-next-line -- TODO: describe this disable no-restricted-imports\nimport moment from 'moment';\nimport { css } from 'emotion';\n\nimport { TextInput, Flex } from '@contentful/f36-components';\n\nexport type TimepickerProps = {\n disabled: boolean;\n uses12hClock: boolean;\n onChange: (value: { time: string; ampm: string }) => void;\n time?: string;\n ampm?: string;\n};\n\nconst validInputFormats = [\n 'hh:mm a',\n 'hh:mm A',\n 'h:mm a',\n 'h:mm A',\n 'hh:mm',\n 'k:mm',\n 'kk:mm',\n 'h a',\n 'h A',\n 'h',\n 'hh',\n 'HH',\n];\n\nfunction parseRawInput(raw: string): moment.Moment | null {\n let time: moment.Moment | null = null;\n\n // eslint-disable-next-line -- TODO: describe this disable @typescript-eslint/prefer-for-of\n for (let i = 0; i < validInputFormats.length; i++) {\n const date = moment(raw, validInputFormats[i]);\n if (date.isValid()) {\n time = date;\n break;\n }\n }\n\n return time;\n}\n\nconst getDefaultTime = () => {\n return moment(`12:00 AM`, 'hh:mm A');\n};\n\nconst formatToString = (uses12hClock: boolean, value: moment.Moment): string => {\n return uses12hClock ? value.format('hh:mm A') : value.format('HH:mm');\n};\n\nexport const TimepickerInput = ({\n disabled,\n uses12hClock,\n time = '12:00',\n ampm = 'AM',\n onChange,\n}: TimepickerProps) => {\n const [selectedTime, setSelectedTime] = useState<string>(() => {\n return formatToString(uses12hClock, getDefaultTime());\n });\n\n useEffect(() => {\n setSelectedTime(formatToString(uses12hClock, moment(`${time} ${ampm}`, 'hh:mm A')));\n }, [time, ampm, uses12hClock]);\n\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n setSelectedTime(e.currentTarget.value);\n }, []);\n\n const handleFocus = useCallback((e) => {\n e.preventDefault();\n e.target.select();\n }, []);\n\n const handleBlur = () => {\n const parsedTime = parseRawInput(selectedTime);\n const value = parsedTime ?? getDefaultTime();\n setSelectedTime(formatToString(uses12hClock, value));\n onChange({ time: value.format('hh:mm'), ampm: value.format('A') });\n };\n\n return (\n <Flex className={css({ width: '145px' })}>\n <TextInput\n aria-label=\"Select time\"\n placeholder={uses12hClock ? '12:00 AM' : '00:00'}\n date-time-type={uses12hClock ? '12' : '24'}\n testId=\"time-input\"\n value={selectedTime}\n isDisabled={disabled}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleChange}\n />\n </Flex>\n );\n};\n","export const defaultZoneOffset = '+00:00';\n\nexport const zoneOffsets = [\n '-12:00',\n '-11:00',\n '-10:00',\n '-09:30',\n '-09:00',\n '-08:00',\n '-07:00',\n '-06:00',\n '-05:00',\n '-04:30',\n '-04:00',\n '-03:30',\n '-03:00',\n '-02:00',\n '-01:00',\n '+00:00',\n '+01:00',\n '+02:00',\n '+03:00',\n '+03:30',\n '+04:00',\n '+04:30',\n '+05:00',\n '+05:30',\n '+05:45',\n '+06:00',\n '+06:30',\n '+07:00',\n '+08:00',\n '+08:45',\n '+09:00',\n '+09:30',\n '+10:00',\n '+10:30',\n '+11:00',\n '+11:30',\n '+12:00',\n '+12:45',\n '+13:00',\n '+14:00',\n];\n","import React, { ChangeEvent } from 'react';\nimport { zoneOffsets, defaultZoneOffset } from './utils/zoneOffsets';\n\nimport { Select } from '@contentful/f36-components';\n\nexport type TimezonepickerProps = {\n disabled: boolean;\n onChange: (value: string) => void;\n value?: string;\n};\nexport const TimezonepickerInput = ({\n disabled,\n onChange,\n value = defaultZoneOffset,\n}: TimezonepickerProps) => {\n return (\n <Select\n aria-label=\"Select timezone\"\n testId=\"timezone-input\"\n value={value}\n isDisabled={disabled}\n onChange={(e: ChangeEvent<HTMLSelectElement>) => {\n onChange(e.currentTarget.value);\n }}>\n {zoneOffsets.map((offset) => (\n <Select.Option key={offset} value={offset}>\n UTC{offset}\n </Select.Option>\n ))}\n </Select>\n );\n};\n","import * as React from 'react';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { FieldAPI, FieldConnector, ParametersAPI } from '@contentful/field-editor-shared';\nimport { DatepickerInput } from './DatepickerInput';\nimport { TimepickerInput } from './TimepickerInput';\nimport { TimezonepickerInput } from './TimezonePickerInput';\nimport {\n userInputFromDatetime,\n buildFieldValue,\n getDefaultAMPM,\n getDefaultUtcOffset,\n} from './utils/date';\nimport { TimeFormat, DateTimeFormat, TimeResult } from './types';\n\nimport { TextLink } from '@contentful/f36-components';\n\nexport interface DateEditorProps {\n /**\n * is the field disabled initially\n */\n isInitiallyDisabled: boolean;\n\n /**\n * sdk.field\n */\n field: FieldAPI;\n\n /**\n * sdk.parameters\n */\n parameters?: ParametersAPI & {\n instance?: {\n format?: DateTimeFormat;\n ampm?: TimeFormat;\n };\n };\n}\n\nconst styles = {\n root: css({\n display: 'flex',\n alignItems: 'center',\n }),\n separator: css({\n marginLeft: tokens.spacingM,\n }),\n};\n\nfunction useEffectWithoutFirstRender(callback: Function, deps: Array<any>) {\n const isFirstRun = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRun.current) {\n isFirstRun.current = false;\n return;\n }\n callback();\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n }, deps);\n}\n\nfunction DateEditorContainer({\n initialValue,\n usesTime,\n usesTimezone,\n uses12hClock,\n disabled,\n hasClear,\n onChange,\n}: {\n initialValue: TimeResult;\n usesTime: boolean;\n usesTimezone: boolean;\n uses12hClock: boolean;\n disabled: boolean;\n hasClear: boolean;\n onChange: (value: TimeResult) => void;\n}) {\n const [value, setValue] = React.useState<TimeResult>(() => initialValue);\n\n useEffectWithoutFirstRender(() => {\n onChange(value);\n }, [value]);\n\n return (\n <div data-test-id=\"date-editor\" className={styles.root}>\n <DatepickerInput\n disabled={disabled}\n value={value.date}\n onChange={(date) => {\n setValue((value) => ({\n ...value,\n date,\n }));\n }}\n />\n {usesTime && (\n <>\n <div className={styles.separator} />\n <TimepickerInput\n disabled={disabled}\n time={value.time}\n ampm={value.ampm}\n onChange={({ time, ampm }) => {\n setValue((value) => ({\n ...value,\n time,\n ampm,\n }));\n }}\n uses12hClock={uses12hClock}\n />\n </>\n )}\n {usesTimezone && (\n <>\n <div className={styles.separator} />\n <TimezonepickerInput\n disabled={disabled}\n value={value.utcOffset}\n onChange={(utcOffset) => {\n setValue((value) => ({\n ...value,\n utcOffset,\n }));\n }}\n />\n </>\n )}\n {hasClear && (\n <>\n <div className={styles.separator} />\n <TextLink\n as=\"button\"\n isDisabled={disabled}\n testId=\"date-clear\"\n onClick={() => {\n setValue({\n date: undefined,\n time: undefined,\n ampm: getDefaultAMPM(),\n utcOffset: getDefaultUtcOffset(),\n });\n }}>\n Clear\n </TextLink>\n </>\n )}\n </div>\n );\n}\n\nexport function DateEditor(props: DateEditorProps) {\n const { field, parameters } = props;\n\n const formatParam = parameters?.instance?.format ?? 'timeZ';\n const ampmParam = parameters?.instance?.ampm ?? '24';\n\n const usesTime = formatParam !== 'dateonly';\n const usesTimezone = formatParam === 'timeZ';\n const uses12hClock = ampmParam === '12';\n\n return (\n <FieldConnector<string>\n field={field}\n isInitiallyDisabled={props.isInitiallyDisabled}\n throttle={0}>\n {({ value, disabled, setValue, externalReset }) => {\n const datetimeValue = userInputFromDatetime({\n value,\n uses12hClock,\n });\n return (\n <DateEditorContainer\n initialValue={datetimeValue}\n uses12hClock={uses12hClock}\n usesTimezone={usesTimezone}\n usesTime={usesTime}\n disabled={disabled}\n hasClear={Boolean(value)}\n onChange={(data) => {\n const fieldValue = buildFieldValue({ data, usesTime, usesTimezone });\n if (fieldValue.invalid) {\n return;\n }\n // if value is present - then override it with a new one\n // if value is not present - then set a new one if it's not nullable only\n if (Boolean(value) || (!value && Boolean(fieldValue.valid))) {\n setValue(fieldValue.valid);\n }\n }}\n key={`date-container-${externalReset}`}\n />\n );\n }}\n </FieldConnector>\n );\n}\n\nDateEditor.defaultProps = {\n isInitiallyDisabled: true,\n};\n"],"names":["ZONE_RX","startOfToday","format","moment","set","hours","minutes","fieldValueToMoment","datetimeString","datetime","test","utcOffset","timeFromUserInput","input","timeInput","time","utc","ampm","datetimeFromUserInput","date","valid","parseZone","toObject","isValid","invalid","formatDateDisplay","buildFieldValue","data","usesTime","usesTimezone","getDefaultAMPM","getDefaultUtcOffset","userInputFromDatetime","value","uses12hClock","timeFormat","I18N","previousMonth","nextMonth","months","weekdaysShort","weekdays","DEFAULTS","i18n","yearRange","createPikaday","opts","Pikaday","Object","assign","CalendarIcon","props","React","width","height","viewBox","onClick","xmlns","className","fill","fillRule","d","styles","datePickerWrapper","css","position","maxHeight","datePicker","zIndex","display","cursor","paddingRight","icon","top","right","DatepickerInput","createRef","datePickerNode","current","focus","pikaday","show","e","onBlur","el","contains","relatedTarget","hide","componentDidMount","onChange","defaultDate","toDate","undefined","field","setDefaultDate","reposition","theme","cx","toString","onSelect","getMoment","componentWillUnmount","destroy","render","TextInput","testId","isReadOnly","isDisabled","disabled","ref","onFocus","handleOpen","handleBlur","focusInput","Component","noop","validInputFormats","parseRawInput","raw","i","length","getDefaultTime","formatToString","TimepickerInput","useState","selectedTime","setSelectedTime","useEffect","handleChange","useCallback","currentTarget","handleFocus","preventDefault","target","select","parsedTime","Flex","placeholder","defaultZoneOffset","zoneOffsets","TimezonepickerInput","Select","map","offset","Option","key","root","alignItems","separator","marginLeft","tokens","spacingM","useEffectWithoutFirstRender","callback","deps","isFirstRun","DateEditorContainer","initialValue","hasClear","setValue","TextLink","as","DateEditor","parameters","formatParam","instance","ampmParam","FieldConnector","isInitiallyDisabled","throttle","externalReset","datetimeValue","Boolean","fieldValue","defaultProps"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"field-editor-date.cjs.production.min.js","sources":["../src/utils/date.ts","../src/utils/createPikaday.ts","../src/icons/CalendarIcon.tsx","../src/DatepickerInput.tsx","../src/TimepickerInput.tsx","../src/utils/zoneOffsets.ts","../src/TimezonePickerInput.tsx","../src/DateEditor.tsx"],"sourcesContent":["// eslint-disable-next-line no-restricted-imports\nimport moment from 'moment';\nimport { TimeResult } from '../types';\n\nconst ZONE_RX = /(Z|[+-]\\d{2}[:+]?\\d{2})$/;\n\nfunction startOfToday(format: string) {\n return moment().set({ hours: 0, minutes: 0 }).format(format);\n}\n\nfunction fieldValueToMoment(datetimeString: string | null | undefined): moment.Moment | null {\n if (!datetimeString) {\n return null;\n }\n\n const datetime = moment(datetimeString);\n if (ZONE_RX.test(datetimeString)) {\n datetime.utcOffset(datetimeString);\n }\n return datetime;\n}\n\nfunction timeFromUserInput(input: TimeResult) {\n const timeInput = input.time || '00:00';\n return moment.utc(timeInput + '!' + input.ampm, 'HH:mm!A');\n}\n\n/**\n * Convert the user input object into either a 'moment' value or an\n * invalid symbol.\n *\n * Success is indicated by returning '{valid: value}' and failure is\n * indicated by returning '{invalid: true}'. If 'input.date' is\n * 'null' we return '{valid: null}'\n */\nfunction datetimeFromUserInput(input: TimeResult): {\n invalid?: boolean;\n valid: moment.Moment | null;\n} {\n if (!input.date) {\n return { valid: null };\n }\n\n const time = timeFromUserInput(input);\n\n const date = moment\n .parseZone(input.utcOffset, 'Z')\n .set(input.date.toObject())\n .set({ hours: time.hours(), minutes: time.minutes() });\n\n if (date.isValid()) {\n return { valid: date };\n } else {\n return { invalid: true, valid: null };\n }\n}\n\nexport function formatDateDisplay(date?: moment.Moment) {\n if (date) {\n return date.format('dddd, MMMM Do YYYY');\n } else {\n return '';\n }\n}\n\n/**\n * Parse user input into a string that is stored in the API.\n *\n * Returns a sum type with either the string as the `valid` property\n * or the `invalid` property set to `false`.\n */\nexport function buildFieldValue({\n data,\n usesTime,\n usesTimezone,\n}: {\n data: TimeResult;\n usesTime: boolean;\n usesTimezone: boolean;\n}) {\n const date = datetimeFromUserInput(data);\n if (date.invalid) {\n return {\n invalid: true,\n };\n }\n\n let format;\n if (usesTimezone) {\n format = 'YYYY-MM-DDTHH:mmZ';\n } else if (usesTime) {\n format = 'YYYY-MM-DDTHH:mm';\n } else {\n format = 'YYYY-MM-DD';\n }\n return { valid: date?.valid ? date.valid.format(format) : null, invalid: false };\n}\n\nexport function getDefaultAMPM() {\n return 'AM';\n}\n\nexport function getDefaultUtcOffset() {\n return startOfToday('Z');\n}\n\n/**\n * Create the user input object from the field value.\n */\nexport function userInputFromDatetime({\n value,\n uses12hClock,\n}: {\n value: string | undefined | null;\n uses12hClock: boolean;\n}): TimeResult {\n const datetime = fieldValueToMoment(value);\n\n if (datetime) {\n const timeFormat = uses12hClock ? 'hh:mm' : 'HH:mm';\n return {\n date: datetime,\n time: datetime.format(timeFormat),\n ampm: datetime.format('A'),\n utcOffset: datetime.format('Z'),\n };\n } else {\n return {\n ampm: getDefaultAMPM(),\n utcOffset: getDefaultUtcOffset(),\n };\n }\n}\n","import Pikaday from 'pikaday';\n\nconst I18N = {\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n weekdaysShort: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n};\n\nconst DEFAULTS = {\n i18n: I18N,\n yearRange: 100,\n};\n\n// Gets same options as Pikaday and returns a Pikaday instance\nexport const createPikaday = (opts?: Pikaday.PikadayOptions) =>\n new Pikaday(Object.assign({}, DEFAULTS, opts));\n","import React from 'react';\n\nexport function CalendarIcon(props: {\n className?: string;\n onClick?: React.MouseEventHandler<SVGElement>;\n}) {\n return (\n <svg\n width=\"16\"\n height=\"17\"\n viewBox=\"-1 -1 18 19\"\n onClick={props.onClick}\n xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}>\n <g fill=\"none\" fillRule=\"evenodd\">\n <g fill=\"#536171\">\n <path d=\"M2.071 14.929v-2.411h2.411v2.41h-2.41zm2.947 0v-2.411h2.678v2.41H5.018zM2.07 11.982V9.304h2.411v2.678h-2.41zm2.947 0V9.304h2.678v2.678H5.018zM2.07 8.768v-2.41h2.411v2.41h-2.41zm6.161 6.16v-2.41h2.679v2.41H8.232zm-3.214-6.16v-2.41h2.678v2.41H5.018zm6.428 6.16v-2.41h2.411v2.41h-2.41zm-3.214-2.946V9.304h2.679v2.678H8.232zM5.286 4.75a.275.275 0 0 1-.268.268h-.536a.275.275 0 0 1-.268-.268V2.34c0-.143.126-.269.268-.269h.536c.142 0 .268.126.268.268V4.75zm6.16 7.232V9.304h2.411v2.678h-2.41zM8.232 8.768v-2.41h2.679v2.41H8.232zm3.214 0v-2.41h2.411v2.41h-2.41zm.268-4.018a.275.275 0 0 1-.268.268h-.535a.275.275 0 0 1-.268-.268V2.34c0-.143.125-.269.268-.269h.535c.143 0 .268.126.268.268V4.75zm3.215-.536c0-.586-.486-1.071-1.072-1.071h-1.071v-.804c0-.736-.603-1.339-1.34-1.339h-.535c-.737 0-1.34.603-1.34 1.34v.803H6.357v-.804C6.357 1.603 5.754 1 5.017 1h-.535c-.736 0-1.34.603-1.34 1.34v.803h-1.07C1.484 3.143 1 3.628 1 4.214V14.93C1 15.515 1.485 16 2.071 16h11.786c.586 0 1.072-.485 1.072-1.071V4.214z\" />\n </g>\n </g>\n </svg>\n );\n}\n","import React, { Component, FocusEventHandler, FocusEvent } from 'react';\nimport noop from 'lodash/noop';\n// eslint-disable-next-line no-restricted-imports\nimport moment from 'moment';\nimport { css, cx } from 'emotion';\nimport { formatDateDisplay } from './utils/date';\nimport { createPikaday } from './utils/createPikaday';\nimport { CalendarIcon } from './icons/CalendarIcon';\n\nimport { TextInput } from '@contentful/f36-components';\n\nconst styles = {\n datePickerWrapper: css({\n position: 'relative',\n maxHeight: 70,\n }),\n datePicker: css({\n zIndex: 1002,\n display: 'block',\n '.is-hidden': {\n display: 'none',\n },\n }),\n input: css({\n width: '270px',\n cursor: 'pointer',\n paddingRight: '40px',\n '&:disabled': {\n cursor: 'not-allowed',\n },\n }),\n icon: css({\n cursor: 'pointer',\n zIndex: 50,\n position: 'absolute',\n top: '12px',\n right: '12px',\n }),\n};\n\nexport type DatePickerProps = {\n value?: moment.Moment;\n onChange: (val: moment.Moment | undefined) => void;\n onBlur: FocusEventHandler;\n disabled?: boolean;\n};\n\nexport class DatepickerInput extends Component<DatePickerProps> {\n static defaultProps: Partial<DatePickerProps> = {\n onChange: noop,\n onBlur: noop,\n };\n\n pikaday?: Pikaday;\n datePickerNode = React.createRef<HTMLInputElement>();\n\n componentDidMount() {\n const onChange = this.props.onChange;\n const defaultDate = this.props.value ? this.props.value.toDate() : undefined;\n this.pikaday = createPikaday({\n field: this.datePickerNode && this.datePickerNode.current,\n defaultDate,\n setDefaultDate: defaultDate !== undefined,\n position: 'bottom left',\n reposition: false,\n theme: cx(styles.datePicker, 'hide-carret'),\n toString: (date) => {\n return formatDateDisplay(moment(date));\n },\n // we need to keep this function like this\n // so `this` refers to pikaday instance\n onSelect: function onSelect() {\n onChange(this.getMoment() || undefined);\n },\n });\n }\n\n focusInput = () => {\n if (this.datePickerNode && this.datePickerNode.current) {\n this.datePickerNode.current.focus();\n }\n };\n\n componentWillUnmount() {\n if (this.pikaday) {\n this.pikaday.destroy();\n }\n }\n\n handleOpen = () => {\n if (this.pikaday) {\n this.pikaday.show();\n }\n };\n\n handleBlur = (e: FocusEvent) => {\n this.props.onBlur(e);\n if (this.pikaday && !this.pikaday.el.contains(e.relatedTarget as HTMLInputElement)) {\n this.pikaday.hide();\n }\n };\n\n render() {\n return (\n <div className={styles.datePickerWrapper}>\n <TextInput\n aria-label=\"Select date\"\n testId=\"date-input\"\n isReadOnly\n isDisabled={this.props.disabled}\n value={formatDateDisplay(this.props.value)}\n ref={this.datePickerNode}\n onFocus={this.handleOpen}\n onBlur={this.handleBlur}\n className={styles.input}\n />\n <CalendarIcon\n onClick={() => {\n this.focusInput();\n }}\n className={styles.icon}\n />\n </div>\n );\n }\n}\n","import React, { useState, useCallback, useEffect } from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport moment from 'moment';\nimport { css } from 'emotion';\n\nimport { TextInput, Flex } from '@contentful/f36-components';\n\nexport type TimepickerProps = {\n disabled: boolean;\n uses12hClock: boolean;\n onChange: (value: { time: string; ampm: string }) => void;\n time?: string;\n ampm?: string;\n};\n\nconst validInputFormats = [\n 'hh:mm a',\n 'hh:mm A',\n 'h:mm a',\n 'h:mm A',\n 'hh:mm',\n 'k:mm',\n 'kk:mm',\n 'h a',\n 'h A',\n 'h',\n 'hh',\n 'HH',\n];\n\nfunction parseRawInput(raw: string): moment.Moment | null {\n let time: moment.Moment | null = null;\n\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < validInputFormats.length; i++) {\n const date = moment(raw, validInputFormats[i]);\n if (date.isValid()) {\n time = date;\n break;\n }\n }\n\n return time;\n}\n\nconst getDefaultTime = () => {\n return moment(`12:00 AM`, 'hh:mm A');\n};\n\nconst formatToString = (uses12hClock: boolean, value: moment.Moment): string => {\n return uses12hClock ? value.format('hh:mm A') : value.format('HH:mm');\n};\n\nexport const TimepickerInput = ({\n disabled,\n uses12hClock,\n time = '12:00',\n ampm = 'AM',\n onChange,\n}: TimepickerProps) => {\n const [selectedTime, setSelectedTime] = useState<string>(() => {\n return formatToString(uses12hClock, getDefaultTime());\n });\n\n useEffect(() => {\n setSelectedTime(formatToString(uses12hClock, moment(`${time} ${ampm}`, 'hh:mm A')));\n }, [time, ampm, uses12hClock]);\n\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n setSelectedTime(e.currentTarget.value);\n }, []);\n\n const handleFocus = useCallback((e) => {\n e.preventDefault();\n e.target.select();\n }, []);\n\n const handleBlur = () => {\n const parsedTime = parseRawInput(selectedTime);\n const value = parsedTime ?? getDefaultTime();\n setSelectedTime(formatToString(uses12hClock, value));\n onChange({ time: value.format('hh:mm'), ampm: value.format('A') });\n };\n\n return (\n <Flex className={css({ width: '145px' })}>\n <TextInput\n aria-label=\"Select time\"\n placeholder={uses12hClock ? '12:00 AM' : '00:00'}\n date-time-type={uses12hClock ? '12' : '24'}\n testId=\"time-input\"\n value={selectedTime}\n isDisabled={disabled}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleChange}\n />\n </Flex>\n );\n};\n","export const defaultZoneOffset = '+00:00';\n\nexport const zoneOffsets = [\n '-12:00',\n '-11:00',\n '-10:00',\n '-09:30',\n '-09:00',\n '-08:00',\n '-07:00',\n '-06:00',\n '-05:00',\n '-04:30',\n '-04:00',\n '-03:30',\n '-03:00',\n '-02:00',\n '-01:00',\n '+00:00',\n '+01:00',\n '+02:00',\n '+03:00',\n '+03:30',\n '+04:00',\n '+04:30',\n '+05:00',\n '+05:30',\n '+05:45',\n '+06:00',\n '+06:30',\n '+07:00',\n '+08:00',\n '+08:45',\n '+09:00',\n '+09:30',\n '+10:00',\n '+10:30',\n '+11:00',\n '+11:30',\n '+12:00',\n '+12:45',\n '+13:00',\n '+14:00',\n];\n","import React, { ChangeEvent } from 'react';\nimport { zoneOffsets, defaultZoneOffset } from './utils/zoneOffsets';\n\nimport { Select } from '@contentful/f36-components';\n\nexport type TimezonepickerProps = {\n disabled: boolean;\n onChange: (value: string) => void;\n value?: string;\n};\nexport const TimezonepickerInput = ({\n disabled,\n onChange,\n value = defaultZoneOffset,\n}: TimezonepickerProps) => {\n return (\n <Select\n aria-label=\"Select timezone\"\n testId=\"timezone-input\"\n value={value}\n isDisabled={disabled}\n onChange={(e: ChangeEvent<HTMLSelectElement>) => {\n onChange(e.currentTarget.value);\n }}>\n {zoneOffsets.map((offset) => (\n <Select.Option key={offset} value={offset}>\n UTC{offset}\n </Select.Option>\n ))}\n </Select>\n );\n};\n","import * as React from 'react';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { FieldAPI, FieldConnector, ParametersAPI } from '@contentful/field-editor-shared';\nimport { DatepickerInput } from './DatepickerInput';\nimport { TimepickerInput } from './TimepickerInput';\nimport { TimezonepickerInput } from './TimezonePickerInput';\nimport {\n userInputFromDatetime,\n buildFieldValue,\n getDefaultAMPM,\n getDefaultUtcOffset,\n} from './utils/date';\nimport { TimeFormat, DateTimeFormat, TimeResult } from './types';\n\nimport { TextLink } from '@contentful/f36-components';\n\nexport interface DateEditorProps {\n /**\n * is the field disabled initially\n */\n isInitiallyDisabled: boolean;\n\n /**\n * sdk.field\n */\n field: FieldAPI;\n\n /**\n * sdk.parameters\n */\n parameters?: ParametersAPI & {\n instance?: {\n format?: DateTimeFormat;\n ampm?: TimeFormat;\n };\n };\n}\n\nconst styles = {\n root: css({\n display: 'flex',\n alignItems: 'center',\n }),\n separator: css({\n marginLeft: tokens.spacingM,\n }),\n};\n\nfunction useEffectWithoutFirstRender(callback: Function, deps: Array<any>) {\n const isFirstRun = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRun.current) {\n isFirstRun.current = false;\n return;\n }\n callback();\n }, deps);\n}\n\nfunction DateEditorContainer({\n initialValue,\n usesTime,\n usesTimezone,\n uses12hClock,\n disabled,\n hasClear,\n onChange,\n}: {\n initialValue: TimeResult;\n usesTime: boolean;\n usesTimezone: boolean;\n uses12hClock: boolean;\n disabled: boolean;\n hasClear: boolean;\n onChange: (value: TimeResult) => void;\n}) {\n const [value, setValue] = React.useState<TimeResult>(() => initialValue);\n\n useEffectWithoutFirstRender(() => {\n onChange(value);\n }, [value]);\n\n return (\n <div data-test-id=\"date-editor\" className={styles.root}>\n <DatepickerInput\n disabled={disabled}\n value={value.date}\n onChange={(date) => {\n setValue((value) => ({\n ...value,\n date,\n }));\n }}\n />\n {usesTime && (\n <>\n <div className={styles.separator} />\n <TimepickerInput\n disabled={disabled}\n time={value.time}\n ampm={value.ampm}\n onChange={({ time, ampm }) => {\n setValue((value) => ({\n ...value,\n time,\n ampm,\n }));\n }}\n uses12hClock={uses12hClock}\n />\n </>\n )}\n {usesTimezone && (\n <>\n <div className={styles.separator} />\n <TimezonepickerInput\n disabled={disabled}\n value={value.utcOffset}\n onChange={(utcOffset) => {\n setValue((value) => ({\n ...value,\n utcOffset,\n }));\n }}\n />\n </>\n )}\n {hasClear && (\n <>\n <div className={styles.separator} />\n <TextLink\n as=\"button\"\n isDisabled={disabled}\n testId=\"date-clear\"\n onClick={() => {\n setValue({\n date: undefined,\n time: undefined,\n ampm: getDefaultAMPM(),\n utcOffset: getDefaultUtcOffset(),\n });\n }}>\n Clear\n </TextLink>\n </>\n )}\n </div>\n );\n}\n\nexport function DateEditor(props: DateEditorProps) {\n const { field, parameters } = props;\n\n const formatParam = parameters?.instance?.format ?? 'timeZ';\n const ampmParam = parameters?.instance?.ampm ?? '24';\n\n const usesTime = formatParam !== 'dateonly';\n const usesTimezone = formatParam === 'timeZ';\n const uses12hClock = ampmParam === '12';\n\n return (\n <FieldConnector<string>\n field={field}\n isInitiallyDisabled={props.isInitiallyDisabled}\n throttle={0}>\n {({ value, disabled, setValue, externalReset }) => {\n const datetimeValue = userInputFromDatetime({\n value,\n uses12hClock,\n });\n return (\n <DateEditorContainer\n initialValue={datetimeValue}\n uses12hClock={uses12hClock}\n usesTimezone={usesTimezone}\n usesTime={usesTime}\n disabled={disabled}\n hasClear={Boolean(value)}\n onChange={(data) => {\n const fieldValue = buildFieldValue({ data, usesTime, usesTimezone });\n if (fieldValue.invalid) {\n return;\n }\n // if value is present - then override it with a new one\n // if value is not present - then set a new one if it's not nullable only\n if (Boolean(value) || (!value && Boolean(fieldValue.valid))) {\n setValue(fieldValue.valid);\n }\n }}\n key={`date-container-${externalReset}`}\n />\n );\n }}\n </FieldConnector>\n );\n}\n\nDateEditor.defaultProps = {\n isInitiallyDisabled: true,\n};\n"],"names":["ZONE_RX","formatDateDisplay","date","format","getDefaultUtcOffset","moment","set","hours","minutes","DEFAULTS","i18n","previousMonth","nextMonth","months","weekdaysShort","weekdays","yearRange","createPikaday","opts","Pikaday","Object","assign","CalendarIcon","props","React","width","height","viewBox","onClick","xmlns","className","fill","fillRule","d","styles","datePickerWrapper","css","position","maxHeight","datePicker","zIndex","display","input","cursor","paddingRight","icon","top","right","DatepickerInput","createRef","_this","datePickerNode","current","focus","pikaday","show","e","onBlur","el","contains","relatedTarget","hide","componentDidMount","onChange","this","defaultDate","value","toDate","undefined","field","setDefaultDate","reposition","theme","cx","toString","onSelect","getMoment","componentWillUnmount","destroy","render","TextInput","testId","isReadOnly","isDisabled","disabled","ref","onFocus","handleOpen","handleBlur","_this2","focusInput","Component","noop","validInputFormats","getDefaultTime","formatToString","uses12hClock","TimepickerInput","time","ampm","useState","selectedTime","setSelectedTime","useEffect","handleChange","useCallback","currentTarget","handleFocus","preventDefault","target","select","Flex","placeholder","parsedTime","raw","i","length","isValid","parseRawInput","zoneOffsets","TimezonepickerInput","Select","map","offset","Option","key","root","alignItems","separator","marginLeft","tokens","spacingM","DateEditorContainer","callback","deps","isFirstRun","initialValue","usesTime","usesTimezone","hasClear","setValue","utcOffset","TextLink","as","DateEditor","parameters","formatParam","instance","_parameters$instance","ampmParam","_parameters$instance2","FieldConnector","isInitiallyDisabled","throttle","externalReset","datetimeValue","datetime","datetimeString","test","fieldValueToMoment","userInputFromDatetime","Boolean","data","fieldValue","valid","utc","timeFromUserInput","parseZone","toObject","invalid","datetimeFromUserInput","buildFieldValue","defaultProps"],"mappings":"+qBAIA,IAAMA,EAAU,oCAqDAC,EAAkBC,UAC5BA,EACKA,EAAKC,OAAO,sBAEZ,YAyCKC,WA/FPC,IAASC,IAAI,CAAEC,MAAO,EAAGC,QAAS,IAAKL,OAgG1B,KCrGtB,IAqBMM,EAAW,CACfC,KAtBW,CACXC,cAAe,iBACfC,UAAW,aACXC,OAAQ,CACN,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,YAEFC,cAAe,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC9CC,SAAU,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,aAK7EC,UAAW,KAIAC,EAAgB,SAACC,UAC5B,IAAIC,EAAQC,OAAOC,OAAO,GAAIZ,EAAUS,cC5B1BI,EAAaC,UAKzBC,uBACEC,MAAM,KACNC,OAAO,KACPC,QAAQ,cACRC,QAASL,EAAMK,QACfC,MAAM,6BACNC,UAAWP,EAAMO,WACjBN,qBAAGO,KAAK,OAAOC,SAAS,WACtBR,qBAAGO,KAAK,WACNP,wBAAMS,EAAE,g/BCLZC,EAAS,CACbC,kBAAmBC,MAAI,CACrBC,SAAU,WACVC,UAAW,KAEbC,WAAYH,MAAI,CACdI,OAAQ,KACRC,QAAS,qBACK,CACZA,QAAS,UAGbC,MAAON,MAAI,CACTX,MAAO,QACPkB,OAAQ,UACRC,aAAc,oBACA,CACZD,OAAQ,iBAGZE,KAAMT,MAAI,CACRO,OAAQ,UACRH,OAAQ,GACRH,SAAU,WACVS,IAAK,OACLC,MAAO,UAWEC,gGAOMxB,EAAMyB,yBAuBV,WACPC,EAAKC,gBAAkBD,EAAKC,eAAeC,WACxCD,eAAeC,QAAQC,sBAUnB,WACPH,EAAKI,WACFA,QAAQC,qBAIJ,SAACC,KACPjC,MAAMkC,OAAOD,GACdN,EAAKI,UAAYJ,EAAKI,QAAQI,GAAGC,SAASH,EAAEI,kBACzCN,QAAQO,qHA1CjBC,kBAAA,eACQC,EAAWC,KAAKzC,MAAMwC,SACtBE,EAAcD,KAAKzC,MAAM2C,MAAQF,KAAKzC,MAAM2C,MAAMC,cAAWC,OAC9Dd,QAAUrC,EAAc,CAC3BoD,MAAOL,KAAKb,gBAAkBa,KAAKb,eAAeC,QAClDa,YAAAA,EACAK,oBAAgCF,IAAhBH,EAChB5B,SAAU,cACVkC,YAAY,EACZC,MAAOC,KAAGvC,EAAOK,WAAY,eAC7BmC,SAAU,SAACxE,UACFD,EAAkBI,EAAOH,KAIlCyE,SAAU,WACRZ,EAASC,KAAKY,kBAAeR,SAWnCS,qBAAA,WACMb,KAAKV,cACFA,QAAQwB,aAiBjBC,OAAA,6BAEIvD,uBAAKM,UAAWI,EAAOC,mBACrBX,gBAACwD,0BACY,cACXC,OAAO,aACPC,cACAC,WAAYnB,KAAKzC,MAAM6D,SACvBlB,MAAOjE,EAAkB+D,KAAKzC,MAAM2C,OACpCmB,IAAKrB,KAAKb,eACVmC,QAAStB,KAAKuB,WACd9B,OAAQO,KAAKwB,WACb1D,UAAWI,EAAOQ,QAEpBlB,gBAACF,GACCM,QAAS,WACP6D,EAAKC,cAEP5D,UAAWI,EAAOW,YAzES8C,aAC5B3C,eAAyC,CAC9Ce,SAAU6B,EACVnC,OAAQmC,GCnCZ,IAAMC,EAAoB,CACxB,UACA,UACA,SACA,SACA,QACA,OACA,QACA,MACA,MACA,IACA,KACA,MAkBIC,EAAiB,kBACdzF,aAAmB,YAGtB0F,EAAiB,SAACC,EAAuB9B,UACvBA,EAAM/D,OAArB6F,EAA4B,UAA0B,UAGlDC,EAAkB,gBAC7Bb,IAAAA,SACAY,IAAAA,iBACAE,KAAAA,aAAO,cACPC,KAAAA,aAAO,OACPpC,IAAAA,WAEwCqC,YAAiB,kBAChDL,EAAeC,EAAcF,QAD/BO,OAAcC,OAIrBC,aAAU,WACRD,EAAgBP,EAAeC,EAAc3F,EAAU6F,MAAQC,EAAQ,eACtE,CAACD,EAAMC,EAAMH,QAEVQ,EAAeC,eAAY,SAACjD,GAChC8C,EAAgB9C,EAAEkD,cAAcxC,SAC/B,IAEGyC,EAAcF,eAAY,SAACjD,GAC/BA,EAAEoD,iBACFpD,EAAEqD,OAAOC,WACR,WAUDtF,gBAACuF,QAAKjF,UAAWM,MAAI,CAAEX,MAAO,WAC5BD,gBAACwD,0BACY,cACXgC,YAAahB,EAAe,WAAa,yBACzBA,EAAe,KAAO,KACtCf,OAAO,aACPf,MAAOmC,EACPlB,WAAYC,EACZE,QAASqB,EACTlD,OAjBa,eACXwD,EAhDV,SAAuBC,WACjBhB,EAA6B,KAGxBiB,EAAI,EAAGA,EAAItB,EAAkBuB,OAAQD,IAAK,KAC3CjH,EAAOG,EAAO6G,EAAKrB,EAAkBsB,OACvCjH,EAAKmH,UAAW,CAClBnB,EAAOhG,gBAKJgG,EAoCcoB,CAAcjB,GAC3BnC,QAAQ+C,EAAAA,EAAcnB,IAC5BQ,EAAgBP,EAAeC,EAAc9B,IAC7CH,EAAS,CAAEmC,KAAMhC,EAAM/D,OAAO,SAAUgG,KAAMjC,EAAM/D,OAAO,QAcvD4D,SAAUyC,MC7FLe,EAAc,CACzB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UChCWC,EAAsB,gBAEjCzD,IAAAA,aACAG,aAGE1C,gBAACiG,uBACY,kBACXxC,OAAO,iBACPf,iBDnB2B,WCoB3BiB,aATJC,SAUIrB,SAAU,SAACP,GACTO,EAASP,EAAEkD,cAAcxC,SAE1BqD,EAAYG,KAAI,SAACC,UAChBnG,gBAACiG,SAAOG,QAAOC,IAAKF,EAAQzD,MAAOyD,SAC7BA,QCaRzF,EAAS,CACb4F,KAAM1F,MAAI,CACRK,QAAS,OACTsF,WAAY,WAEdC,UAAW5F,MAAI,CACb6F,WAAYC,EAAOC,YAevB,SAASC,SAX4BC,EAAoBC,EACjDC,EAWNC,IAAAA,aACAC,IAAAA,SACAC,IAAAA,aACA1C,IAAAA,aACAZ,IAAAA,SACAuD,IAAAA,SACA5E,IAAAA,WAU0BvC,YAA2B,kBAAMgH,KAApDtE,OAAO0E,cA5BqBP,EA8BP,WAC1BtE,EAASG,IA/B4CoE,EAgCpD,CAACpE,GA/BEqE,EAAa/G,UAAa,GAChCA,aAAgB,WACV+G,EAAWnF,QACbmF,EAAWnF,SAAU,EAGvBiF,MACCC,GA2BD9G,sCAAkB,cAAcM,UAAWI,EAAO4F,MAChDtG,gBAACwB,GACCoC,SAAUA,EACVlB,MAAOA,EAAMhE,KACb6D,SAAU,SAAC7D,GACT0I,GAAS,SAAC1E,eACLA,GACHhE,KAAAA,UAILuI,GACCjH,gCACEA,uBAAKM,UAAWI,EAAO8F,YACvBxG,gBAACyE,GACCb,SAAUA,EACVc,KAAMhC,EAAMgC,KACZC,KAAMjC,EAAMiC,KACZpC,SAAU,gBAAGmC,IAAAA,KAAMC,IAAAA,KACjByC,GAAS,SAAC1E,eACLA,GACHgC,KAAAA,EACAC,KAAAA,QAGJH,aAAcA,KAInB0C,GACClH,gCACEA,uBAAKM,UAAWI,EAAO8F,YACvBxG,gBAACgG,GACCpC,SAAUA,EACVlB,MAAOA,EAAM2E,UACb9E,SAAU,SAAC8E,GACTD,GAAS,SAAC1E,eACLA,GACH2E,UAAAA,WAMTF,GACCnH,gCACEA,uBAAKM,UAAWI,EAAO8F,YACvBxG,gBAACsH,YACCC,GAAG,SACH5D,WAAYC,EACZH,OAAO,aACPrD,QAAS,WACPgH,EAAS,CACP1I,UAAMkE,EACN8B,UAAM9B,EACN+B,KPxCP,KOyCO0C,UAAWzI,4BAWX4I,EAAWzH,eACV0H,EAAe1H,EAAf0H,WAETC,iBAAcD,YAAAA,EAAYE,iBAAZC,EAAsBjJ,UAAU,QAC9CkJ,iBAAYJ,YAAAA,EAAYE,iBAAZG,EAAsBnD,QAAQ,KAE1CsC,EAA2B,aAAhBS,EACXR,EAA+B,UAAhBQ,EACflD,EAA6B,OAAdqD,SAGnB7H,gBAAC+H,kBACClF,MAX0B9C,EAAtB8C,MAYJmF,oBAAqBjI,EAAMiI,oBAC3BC,SAAU,IACT,gBAAGvF,IAAAA,MAAOkB,IAAAA,SAAUwD,IAAAA,SAAUc,IAAAA,cACvBC,kBPxDZ3D,IAAAA,aAKM4D,EA1GR,SAA4BC,OACrBA,SACI,SAGHD,EAAWvJ,EAAOwJ,UACpB7J,EAAQ8J,KAAKD,IACfD,EAASf,UAAUgB,GAEdD,EAiGUG,GANjB7F,cAQI0F,EAEK,CACL1J,KAAM0J,EACN1D,KAAM0D,EAASzJ,OAHE6F,EAAe,QAAU,SAI1CG,KAAMyD,EAASzJ,OAAO,KACtB0I,UAAWe,EAASzJ,OAAO,MAGtB,CACLgG,KA7BG,KA8BH0C,UAAWzI,KOsCa4J,CAAsB,CAC1C9F,MAAAA,EACA8B,aAAAA,WAGAxE,gBAAC4G,GACCI,aAAcmB,EACd3D,aAAcA,EACd0C,aAAcA,EACdD,SAAUA,EACVrD,SAAUA,EACVuD,SAAUsB,QAAQ/F,GAClBH,SAAU,SAACmG,OACHC,kBP3GlB1B,IAAAA,SACAC,IAAAA,aAMMxI,EA7CR,SAA+BwC,OAIxBA,EAAMxC,WACF,CAAEkK,MAAO,UAGZlE,EArBR,SAA2BxD,UAElBrC,EAAOgK,KADI3H,EAAMwD,MAAQ,SACF,IAAMxD,EAAMyD,KAAM,WAmBnCmE,CAAkB5H,GAEzBxC,EAAOG,EACVkK,UAAU7H,EAAMmG,UAAW,KAC3BvI,IAAIoC,EAAMxC,KAAKsK,YACflK,IAAI,CAAEC,MAAO2F,EAAK3F,QAASC,QAAS0F,EAAK1F,mBAExCN,EAAKmH,UACA,CAAE+C,MAAOlK,GAET,CAAEuK,SAAS,EAAML,MAAO,MA2BpBM,GARbR,aASIhK,EAAKuK,QACA,CACLA,SAAS,GAYN,CAAEL,YAAOlK,GAAAA,EAAMkK,MAAQlK,EAAKkK,MAAMjK,OAPrCuI,EACO,oBACAD,EACA,mBAEA,cAE+C,KAAMgC,SAAS,GOqF1CE,CAAgB,CAAET,KAAAA,EAAMzB,SAAAA,EAAUC,aAAAA,IACjDyB,EAAWM,UAKXR,QAAQ/F,KAAYA,GAAS+F,QAAQE,EAAWC,SAClDxB,EAASuB,EAAWC,QAGxBvC,sBAAuB6B,OAQnCV,EAAW4B,aAAe,CACxBpB,qBAAqB"}
1
+ {"version":3,"file":"field-editor-date.cjs.production.min.js","sources":["../src/utils/date.ts","../src/utils/createPikaday.ts","../src/icons/CalendarIcon.tsx","../src/DatepickerInput.tsx","../src/TimepickerInput.tsx","../src/utils/zoneOffsets.ts","../src/TimezonePickerInput.tsx","../src/DateEditor.tsx"],"sourcesContent":["// eslint-disable-next-line -- TODO: describe this disable no-restricted-imports\nimport moment from 'moment';\nimport { TimeResult } from '../types';\n\nconst ZONE_RX = /(Z|[+-]\\d{2}[:+]?\\d{2})$/;\n\nfunction startOfToday(format: string) {\n return moment().set({ hours: 0, minutes: 0 }).format(format);\n}\n\nfunction fieldValueToMoment(datetimeString: string | null | undefined): moment.Moment | null {\n if (!datetimeString) {\n return null;\n }\n\n const datetime = moment(datetimeString);\n if (ZONE_RX.test(datetimeString)) {\n datetime.utcOffset(datetimeString);\n }\n return datetime;\n}\n\nfunction timeFromUserInput(input: TimeResult) {\n const timeInput = input.time || '00:00';\n return moment.utc(timeInput + '!' + input.ampm, 'HH:mm!A');\n}\n\n/**\n * Convert the user input object into either a 'moment' value or an\n * invalid symbol.\n *\n * Success is indicated by returning '{valid: value}' and failure is\n * indicated by returning '{invalid: true}'. If 'input.date' is\n * 'null' we return '{valid: null}'\n */\nfunction datetimeFromUserInput(input: TimeResult): {\n invalid?: boolean;\n valid: moment.Moment | null;\n} {\n if (!input.date) {\n return { valid: null };\n }\n\n const time = timeFromUserInput(input);\n\n const date = moment\n .parseZone(input.utcOffset, 'Z')\n .set(input.date.toObject())\n .set({ hours: time.hours(), minutes: time.minutes() });\n\n if (date.isValid()) {\n return { valid: date };\n } else {\n return { invalid: true, valid: null };\n }\n}\n\nexport function formatDateDisplay(date?: moment.Moment) {\n if (date) {\n return date.format('dddd, MMMM Do YYYY');\n } else {\n return '';\n }\n}\n\n/**\n * Parse user input into a string that is stored in the API.\n *\n * Returns a sum type with either the string as the `valid` property\n * or the `invalid` property set to `false`.\n */\nexport function buildFieldValue({\n data,\n usesTime,\n usesTimezone,\n}: {\n data: TimeResult;\n usesTime: boolean;\n usesTimezone: boolean;\n}) {\n const date = datetimeFromUserInput(data);\n if (date.invalid) {\n return {\n invalid: true,\n };\n }\n\n let format;\n if (usesTimezone) {\n format = 'YYYY-MM-DDTHH:mmZ';\n } else if (usesTime) {\n format = 'YYYY-MM-DDTHH:mm';\n } else {\n format = 'YYYY-MM-DD';\n }\n return { valid: date?.valid ? date.valid.format(format) : null, invalid: false };\n}\n\nexport function getDefaultAMPM() {\n return 'AM';\n}\n\nexport function getDefaultUtcOffset() {\n return startOfToday('Z');\n}\n\n/**\n * Create the user input object from the field value.\n */\nexport function userInputFromDatetime({\n value,\n uses12hClock,\n}: {\n value: string | undefined | null;\n uses12hClock: boolean;\n}): TimeResult {\n const datetime = fieldValueToMoment(value);\n\n if (datetime) {\n const timeFormat = uses12hClock ? 'hh:mm' : 'HH:mm';\n return {\n date: datetime,\n time: datetime.format(timeFormat),\n ampm: datetime.format('A'),\n utcOffset: datetime.format('Z'),\n };\n } else {\n return {\n ampm: getDefaultAMPM(),\n utcOffset: getDefaultUtcOffset(),\n };\n }\n}\n","import Pikaday from 'pikaday';\n\nconst I18N = {\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n weekdaysShort: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n};\n\nconst DEFAULTS = {\n i18n: I18N,\n yearRange: 100,\n};\n\n// Gets same options as Pikaday and returns a Pikaday instance\nexport const createPikaday = (opts?: Pikaday.PikadayOptions) =>\n new Pikaday(Object.assign({}, DEFAULTS, opts));\n","import React from 'react';\n\nexport function CalendarIcon(props: {\n className?: string;\n onClick?: React.MouseEventHandler<SVGElement>;\n}) {\n return (\n <svg\n width=\"16\"\n height=\"17\"\n viewBox=\"-1 -1 18 19\"\n onClick={props.onClick}\n xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}>\n <g fill=\"none\" fillRule=\"evenodd\">\n <g fill=\"#536171\">\n <path d=\"M2.071 14.929v-2.411h2.411v2.41h-2.41zm2.947 0v-2.411h2.678v2.41H5.018zM2.07 11.982V9.304h2.411v2.678h-2.41zm2.947 0V9.304h2.678v2.678H5.018zM2.07 8.768v-2.41h2.411v2.41h-2.41zm6.161 6.16v-2.41h2.679v2.41H8.232zm-3.214-6.16v-2.41h2.678v2.41H5.018zm6.428 6.16v-2.41h2.411v2.41h-2.41zm-3.214-2.946V9.304h2.679v2.678H8.232zM5.286 4.75a.275.275 0 0 1-.268.268h-.536a.275.275 0 0 1-.268-.268V2.34c0-.143.126-.269.268-.269h.536c.142 0 .268.126.268.268V4.75zm6.16 7.232V9.304h2.411v2.678h-2.41zM8.232 8.768v-2.41h2.679v2.41H8.232zm3.214 0v-2.41h2.411v2.41h-2.41zm.268-4.018a.275.275 0 0 1-.268.268h-.535a.275.275 0 0 1-.268-.268V2.34c0-.143.125-.269.268-.269h.535c.143 0 .268.126.268.268V4.75zm3.215-.536c0-.586-.486-1.071-1.072-1.071h-1.071v-.804c0-.736-.603-1.339-1.34-1.339h-.535c-.737 0-1.34.603-1.34 1.34v.803H6.357v-.804C6.357 1.603 5.754 1 5.017 1h-.535c-.736 0-1.34.603-1.34 1.34v.803h-1.07C1.484 3.143 1 3.628 1 4.214V14.93C1 15.515 1.485 16 2.071 16h11.786c.586 0 1.072-.485 1.072-1.071V4.214z\" />\n </g>\n </g>\n </svg>\n );\n}\n","import React, { Component, FocusEventHandler, FocusEvent } from 'react';\nimport noop from 'lodash/noop';\n// eslint-disable-next-line -- TODO: describe this disable no-restricted-imports\nimport moment from 'moment';\nimport { css, cx } from 'emotion';\nimport { formatDateDisplay } from './utils/date';\nimport { createPikaday } from './utils/createPikaday';\nimport { CalendarIcon } from './icons/CalendarIcon';\n\nimport { TextInput } from '@contentful/f36-components';\n\nconst styles = {\n datePickerWrapper: css({\n position: 'relative',\n maxHeight: 70,\n }),\n datePicker: css({\n zIndex: 1002,\n display: 'block',\n '.is-hidden': {\n display: 'none',\n },\n }),\n input: css({\n width: '270px',\n cursor: 'pointer',\n paddingRight: '40px',\n '&:disabled': {\n cursor: 'not-allowed',\n },\n }),\n icon: css({\n cursor: 'pointer',\n zIndex: 50,\n position: 'absolute',\n top: '12px',\n right: '12px',\n }),\n};\n\nexport type DatePickerProps = {\n value?: moment.Moment;\n onChange: (val: moment.Moment | undefined) => void;\n onBlur: FocusEventHandler;\n disabled?: boolean;\n};\n\nexport class DatepickerInput extends Component<DatePickerProps> {\n static defaultProps: Partial<DatePickerProps> = {\n onChange: noop,\n onBlur: noop,\n };\n\n pikaday?: Pikaday;\n datePickerNode = React.createRef<HTMLInputElement>();\n\n componentDidMount() {\n const onChange = this.props.onChange;\n const defaultDate = this.props.value ? this.props.value.toDate() : undefined;\n this.pikaday = createPikaday({\n field: this.datePickerNode && this.datePickerNode.current,\n defaultDate,\n setDefaultDate: defaultDate !== undefined,\n position: 'bottom left',\n reposition: false,\n theme: cx(styles.datePicker, 'hide-carret'),\n toString: (date) => {\n return formatDateDisplay(moment(date));\n },\n // we need to keep this function like this\n // so `this` refers to pikaday instance\n onSelect: function onSelect() {\n onChange(this.getMoment() || undefined);\n },\n });\n }\n\n focusInput = () => {\n if (this.datePickerNode && this.datePickerNode.current) {\n this.datePickerNode.current.focus();\n }\n };\n\n componentWillUnmount() {\n if (this.pikaday) {\n this.pikaday.destroy();\n }\n }\n\n handleOpen = () => {\n if (this.pikaday) {\n this.pikaday.show();\n }\n };\n\n handleBlur = (e: FocusEvent) => {\n this.props.onBlur(e);\n if (this.pikaday && !this.pikaday.el.contains(e.relatedTarget as HTMLInputElement)) {\n this.pikaday.hide();\n }\n };\n\n render() {\n return (\n <div className={styles.datePickerWrapper}>\n <TextInput\n aria-label=\"Select date\"\n testId=\"date-input\"\n isReadOnly\n isDisabled={this.props.disabled}\n value={formatDateDisplay(this.props.value)}\n ref={this.datePickerNode}\n onFocus={this.handleOpen}\n onBlur={this.handleBlur}\n className={styles.input}\n />\n <CalendarIcon\n onClick={() => {\n this.focusInput();\n }}\n className={styles.icon}\n />\n </div>\n );\n }\n}\n","import React, { useState, useCallback, useEffect } from 'react';\n// eslint-disable-next-line -- TODO: describe this disable no-restricted-imports\nimport moment from 'moment';\nimport { css } from 'emotion';\n\nimport { TextInput, Flex } from '@contentful/f36-components';\n\nexport type TimepickerProps = {\n disabled: boolean;\n uses12hClock: boolean;\n onChange: (value: { time: string; ampm: string }) => void;\n time?: string;\n ampm?: string;\n};\n\nconst validInputFormats = [\n 'hh:mm a',\n 'hh:mm A',\n 'h:mm a',\n 'h:mm A',\n 'hh:mm',\n 'k:mm',\n 'kk:mm',\n 'h a',\n 'h A',\n 'h',\n 'hh',\n 'HH',\n];\n\nfunction parseRawInput(raw: string): moment.Moment | null {\n let time: moment.Moment | null = null;\n\n // eslint-disable-next-line -- TODO: describe this disable @typescript-eslint/prefer-for-of\n for (let i = 0; i < validInputFormats.length; i++) {\n const date = moment(raw, validInputFormats[i]);\n if (date.isValid()) {\n time = date;\n break;\n }\n }\n\n return time;\n}\n\nconst getDefaultTime = () => {\n return moment(`12:00 AM`, 'hh:mm A');\n};\n\nconst formatToString = (uses12hClock: boolean, value: moment.Moment): string => {\n return uses12hClock ? value.format('hh:mm A') : value.format('HH:mm');\n};\n\nexport const TimepickerInput = ({\n disabled,\n uses12hClock,\n time = '12:00',\n ampm = 'AM',\n onChange,\n}: TimepickerProps) => {\n const [selectedTime, setSelectedTime] = useState<string>(() => {\n return formatToString(uses12hClock, getDefaultTime());\n });\n\n useEffect(() => {\n setSelectedTime(formatToString(uses12hClock, moment(`${time} ${ampm}`, 'hh:mm A')));\n }, [time, ampm, uses12hClock]);\n\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n setSelectedTime(e.currentTarget.value);\n }, []);\n\n const handleFocus = useCallback((e) => {\n e.preventDefault();\n e.target.select();\n }, []);\n\n const handleBlur = () => {\n const parsedTime = parseRawInput(selectedTime);\n const value = parsedTime ?? getDefaultTime();\n setSelectedTime(formatToString(uses12hClock, value));\n onChange({ time: value.format('hh:mm'), ampm: value.format('A') });\n };\n\n return (\n <Flex className={css({ width: '145px' })}>\n <TextInput\n aria-label=\"Select time\"\n placeholder={uses12hClock ? '12:00 AM' : '00:00'}\n date-time-type={uses12hClock ? '12' : '24'}\n testId=\"time-input\"\n value={selectedTime}\n isDisabled={disabled}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleChange}\n />\n </Flex>\n );\n};\n","export const defaultZoneOffset = '+00:00';\n\nexport const zoneOffsets = [\n '-12:00',\n '-11:00',\n '-10:00',\n '-09:30',\n '-09:00',\n '-08:00',\n '-07:00',\n '-06:00',\n '-05:00',\n '-04:30',\n '-04:00',\n '-03:30',\n '-03:00',\n '-02:00',\n '-01:00',\n '+00:00',\n '+01:00',\n '+02:00',\n '+03:00',\n '+03:30',\n '+04:00',\n '+04:30',\n '+05:00',\n '+05:30',\n '+05:45',\n '+06:00',\n '+06:30',\n '+07:00',\n '+08:00',\n '+08:45',\n '+09:00',\n '+09:30',\n '+10:00',\n '+10:30',\n '+11:00',\n '+11:30',\n '+12:00',\n '+12:45',\n '+13:00',\n '+14:00',\n];\n","import React, { ChangeEvent } from 'react';\nimport { zoneOffsets, defaultZoneOffset } from './utils/zoneOffsets';\n\nimport { Select } from '@contentful/f36-components';\n\nexport type TimezonepickerProps = {\n disabled: boolean;\n onChange: (value: string) => void;\n value?: string;\n};\nexport const TimezonepickerInput = ({\n disabled,\n onChange,\n value = defaultZoneOffset,\n}: TimezonepickerProps) => {\n return (\n <Select\n aria-label=\"Select timezone\"\n testId=\"timezone-input\"\n value={value}\n isDisabled={disabled}\n onChange={(e: ChangeEvent<HTMLSelectElement>) => {\n onChange(e.currentTarget.value);\n }}>\n {zoneOffsets.map((offset) => (\n <Select.Option key={offset} value={offset}>\n UTC{offset}\n </Select.Option>\n ))}\n </Select>\n );\n};\n","import * as React from 'react';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { FieldAPI, FieldConnector, ParametersAPI } from '@contentful/field-editor-shared';\nimport { DatepickerInput } from './DatepickerInput';\nimport { TimepickerInput } from './TimepickerInput';\nimport { TimezonepickerInput } from './TimezonePickerInput';\nimport {\n userInputFromDatetime,\n buildFieldValue,\n getDefaultAMPM,\n getDefaultUtcOffset,\n} from './utils/date';\nimport { TimeFormat, DateTimeFormat, TimeResult } from './types';\n\nimport { TextLink } from '@contentful/f36-components';\n\nexport interface DateEditorProps {\n /**\n * is the field disabled initially\n */\n isInitiallyDisabled: boolean;\n\n /**\n * sdk.field\n */\n field: FieldAPI;\n\n /**\n * sdk.parameters\n */\n parameters?: ParametersAPI & {\n instance?: {\n format?: DateTimeFormat;\n ampm?: TimeFormat;\n };\n };\n}\n\nconst styles = {\n root: css({\n display: 'flex',\n alignItems: 'center',\n }),\n separator: css({\n marginLeft: tokens.spacingM,\n }),\n};\n\nfunction useEffectWithoutFirstRender(callback: Function, deps: Array<any>) {\n const isFirstRun = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRun.current) {\n isFirstRun.current = false;\n return;\n }\n callback();\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n }, deps);\n}\n\nfunction DateEditorContainer({\n initialValue,\n usesTime,\n usesTimezone,\n uses12hClock,\n disabled,\n hasClear,\n onChange,\n}: {\n initialValue: TimeResult;\n usesTime: boolean;\n usesTimezone: boolean;\n uses12hClock: boolean;\n disabled: boolean;\n hasClear: boolean;\n onChange: (value: TimeResult) => void;\n}) {\n const [value, setValue] = React.useState<TimeResult>(() => initialValue);\n\n useEffectWithoutFirstRender(() => {\n onChange(value);\n }, [value]);\n\n return (\n <div data-test-id=\"date-editor\" className={styles.root}>\n <DatepickerInput\n disabled={disabled}\n value={value.date}\n onChange={(date) => {\n setValue((value) => ({\n ...value,\n date,\n }));\n }}\n />\n {usesTime && (\n <>\n <div className={styles.separator} />\n <TimepickerInput\n disabled={disabled}\n time={value.time}\n ampm={value.ampm}\n onChange={({ time, ampm }) => {\n setValue((value) => ({\n ...value,\n time,\n ampm,\n }));\n }}\n uses12hClock={uses12hClock}\n />\n </>\n )}\n {usesTimezone && (\n <>\n <div className={styles.separator} />\n <TimezonepickerInput\n disabled={disabled}\n value={value.utcOffset}\n onChange={(utcOffset) => {\n setValue((value) => ({\n ...value,\n utcOffset,\n }));\n }}\n />\n </>\n )}\n {hasClear && (\n <>\n <div className={styles.separator} />\n <TextLink\n as=\"button\"\n isDisabled={disabled}\n testId=\"date-clear\"\n onClick={() => {\n setValue({\n date: undefined,\n time: undefined,\n ampm: getDefaultAMPM(),\n utcOffset: getDefaultUtcOffset(),\n });\n }}>\n Clear\n </TextLink>\n </>\n )}\n </div>\n );\n}\n\nexport function DateEditor(props: DateEditorProps) {\n const { field, parameters } = props;\n\n const formatParam = parameters?.instance?.format ?? 'timeZ';\n const ampmParam = parameters?.instance?.ampm ?? '24';\n\n const usesTime = formatParam !== 'dateonly';\n const usesTimezone = formatParam === 'timeZ';\n const uses12hClock = ampmParam === '12';\n\n return (\n <FieldConnector<string>\n field={field}\n isInitiallyDisabled={props.isInitiallyDisabled}\n throttle={0}>\n {({ value, disabled, setValue, externalReset }) => {\n const datetimeValue = userInputFromDatetime({\n value,\n uses12hClock,\n });\n return (\n <DateEditorContainer\n initialValue={datetimeValue}\n uses12hClock={uses12hClock}\n usesTimezone={usesTimezone}\n usesTime={usesTime}\n disabled={disabled}\n hasClear={Boolean(value)}\n onChange={(data) => {\n const fieldValue = buildFieldValue({ data, usesTime, usesTimezone });\n if (fieldValue.invalid) {\n return;\n }\n // if value is present - then override it with a new one\n // if value is not present - then set a new one if it's not nullable only\n if (Boolean(value) || (!value && Boolean(fieldValue.valid))) {\n setValue(fieldValue.valid);\n }\n }}\n key={`date-container-${externalReset}`}\n />\n );\n }}\n </FieldConnector>\n );\n}\n\nDateEditor.defaultProps = {\n isInitiallyDisabled: true,\n};\n"],"names":["ZONE_RX","formatDateDisplay","date","format","getDefaultUtcOffset","moment","set","hours","minutes","DEFAULTS","i18n","previousMonth","nextMonth","months","weekdaysShort","weekdays","yearRange","createPikaday","opts","Pikaday","Object","assign","CalendarIcon","props","React","width","height","viewBox","onClick","xmlns","className","fill","fillRule","d","styles","datePickerWrapper","css","position","maxHeight","datePicker","zIndex","display","input","cursor","paddingRight","icon","top","right","DatepickerInput","createRef","_this","datePickerNode","current","focus","pikaday","show","e","onBlur","el","contains","relatedTarget","hide","componentDidMount","onChange","this","defaultDate","value","toDate","undefined","field","setDefaultDate","reposition","theme","cx","toString","onSelect","getMoment","componentWillUnmount","destroy","render","TextInput","testId","isReadOnly","isDisabled","disabled","ref","onFocus","handleOpen","handleBlur","_this2","focusInput","Component","noop","validInputFormats","getDefaultTime","formatToString","uses12hClock","TimepickerInput","time","ampm","useState","selectedTime","setSelectedTime","useEffect","handleChange","useCallback","currentTarget","handleFocus","preventDefault","target","select","Flex","placeholder","parsedTime","raw","i","length","isValid","parseRawInput","zoneOffsets","TimezonepickerInput","Select","map","offset","Option","key","root","alignItems","separator","marginLeft","tokens","spacingM","DateEditorContainer","callback","deps","isFirstRun","initialValue","usesTime","usesTimezone","hasClear","setValue","utcOffset","TextLink","as","DateEditor","parameters","formatParam","instance","_parameters$instance","ampmParam","_parameters$instance2","FieldConnector","isInitiallyDisabled","throttle","externalReset","datetimeValue","datetime","datetimeString","test","fieldValueToMoment","userInputFromDatetime","Boolean","data","fieldValue","valid","utc","timeFromUserInput","parseZone","toObject","invalid","datetimeFromUserInput","buildFieldValue","defaultProps"],"mappings":"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"}
@@ -41,7 +41,7 @@ function _setPrototypeOf(o, p) {
41
41
  return _setPrototypeOf(o, p);
42
42
  }
43
43
 
44
- // eslint-disable-next-line no-restricted-imports
44
+ // eslint-disable-next-line -- TODO: describe this disable no-restricted-imports
45
45
  var ZONE_RX = /(Z|[+-]\d{2}[:+]?\d{2})$/;
46
46
 
47
47
  function startOfToday(format) {
@@ -332,7 +332,7 @@ DatepickerInput.defaultProps = {
332
332
  var validInputFormats = ['hh:mm a', 'hh:mm A', 'h:mm a', 'h:mm A', 'hh:mm', 'k:mm', 'kk:mm', 'h a', 'h A', 'h', 'hh', 'HH'];
333
333
 
334
334
  function parseRawInput(raw) {
335
- var time = null; // eslint-disable-next-line @typescript-eslint/prefer-for-of
335
+ var time = null; // eslint-disable-next-line -- TODO: describe this disable @typescript-eslint/prefer-for-of
336
336
 
337
337
  for (var i = 0; i < validInputFormats.length; i++) {
338
338
  var date = moment(raw, validInputFormats[i]);
@@ -449,7 +449,7 @@ function useEffectWithoutFirstRender(callback, deps) {
449
449
  return;
450
450
  }
451
451
 
452
- callback();
452
+ callback(); // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies
453
453
  }, deps);
454
454
  }
455
455
 
@@ -1 +1 @@
1
- {"version":3,"file":"field-editor-date.esm.js","sources":["../src/utils/date.ts","../src/utils/createPikaday.ts","../src/icons/CalendarIcon.tsx","../src/DatepickerInput.tsx","../src/TimepickerInput.tsx","../src/utils/zoneOffsets.ts","../src/TimezonePickerInput.tsx","../src/DateEditor.tsx"],"sourcesContent":["// eslint-disable-next-line no-restricted-imports\nimport moment from 'moment';\nimport { TimeResult } from '../types';\n\nconst ZONE_RX = /(Z|[+-]\\d{2}[:+]?\\d{2})$/;\n\nfunction startOfToday(format: string) {\n return moment().set({ hours: 0, minutes: 0 }).format(format);\n}\n\nfunction fieldValueToMoment(datetimeString: string | null | undefined): moment.Moment | null {\n if (!datetimeString) {\n return null;\n }\n\n const datetime = moment(datetimeString);\n if (ZONE_RX.test(datetimeString)) {\n datetime.utcOffset(datetimeString);\n }\n return datetime;\n}\n\nfunction timeFromUserInput(input: TimeResult) {\n const timeInput = input.time || '00:00';\n return moment.utc(timeInput + '!' + input.ampm, 'HH:mm!A');\n}\n\n/**\n * Convert the user input object into either a 'moment' value or an\n * invalid symbol.\n *\n * Success is indicated by returning '{valid: value}' and failure is\n * indicated by returning '{invalid: true}'. If 'input.date' is\n * 'null' we return '{valid: null}'\n */\nfunction datetimeFromUserInput(input: TimeResult): {\n invalid?: boolean;\n valid: moment.Moment | null;\n} {\n if (!input.date) {\n return { valid: null };\n }\n\n const time = timeFromUserInput(input);\n\n const date = moment\n .parseZone(input.utcOffset, 'Z')\n .set(input.date.toObject())\n .set({ hours: time.hours(), minutes: time.minutes() });\n\n if (date.isValid()) {\n return { valid: date };\n } else {\n return { invalid: true, valid: null };\n }\n}\n\nexport function formatDateDisplay(date?: moment.Moment) {\n if (date) {\n return date.format('dddd, MMMM Do YYYY');\n } else {\n return '';\n }\n}\n\n/**\n * Parse user input into a string that is stored in the API.\n *\n * Returns a sum type with either the string as the `valid` property\n * or the `invalid` property set to `false`.\n */\nexport function buildFieldValue({\n data,\n usesTime,\n usesTimezone,\n}: {\n data: TimeResult;\n usesTime: boolean;\n usesTimezone: boolean;\n}) {\n const date = datetimeFromUserInput(data);\n if (date.invalid) {\n return {\n invalid: true,\n };\n }\n\n let format;\n if (usesTimezone) {\n format = 'YYYY-MM-DDTHH:mmZ';\n } else if (usesTime) {\n format = 'YYYY-MM-DDTHH:mm';\n } else {\n format = 'YYYY-MM-DD';\n }\n return { valid: date?.valid ? date.valid.format(format) : null, invalid: false };\n}\n\nexport function getDefaultAMPM() {\n return 'AM';\n}\n\nexport function getDefaultUtcOffset() {\n return startOfToday('Z');\n}\n\n/**\n * Create the user input object from the field value.\n */\nexport function userInputFromDatetime({\n value,\n uses12hClock,\n}: {\n value: string | undefined | null;\n uses12hClock: boolean;\n}): TimeResult {\n const datetime = fieldValueToMoment(value);\n\n if (datetime) {\n const timeFormat = uses12hClock ? 'hh:mm' : 'HH:mm';\n return {\n date: datetime,\n time: datetime.format(timeFormat),\n ampm: datetime.format('A'),\n utcOffset: datetime.format('Z'),\n };\n } else {\n return {\n ampm: getDefaultAMPM(),\n utcOffset: getDefaultUtcOffset(),\n };\n }\n}\n","import Pikaday from 'pikaday';\n\nconst I18N = {\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n weekdaysShort: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n};\n\nconst DEFAULTS = {\n i18n: I18N,\n yearRange: 100,\n};\n\n// Gets same options as Pikaday and returns a Pikaday instance\nexport const createPikaday = (opts?: Pikaday.PikadayOptions) =>\n new Pikaday(Object.assign({}, DEFAULTS, opts));\n","import React from 'react';\n\nexport function CalendarIcon(props: {\n className?: string;\n onClick?: React.MouseEventHandler<SVGElement>;\n}) {\n return (\n <svg\n width=\"16\"\n height=\"17\"\n viewBox=\"-1 -1 18 19\"\n onClick={props.onClick}\n xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}>\n <g fill=\"none\" fillRule=\"evenodd\">\n <g fill=\"#536171\">\n <path d=\"M2.071 14.929v-2.411h2.411v2.41h-2.41zm2.947 0v-2.411h2.678v2.41H5.018zM2.07 11.982V9.304h2.411v2.678h-2.41zm2.947 0V9.304h2.678v2.678H5.018zM2.07 8.768v-2.41h2.411v2.41h-2.41zm6.161 6.16v-2.41h2.679v2.41H8.232zm-3.214-6.16v-2.41h2.678v2.41H5.018zm6.428 6.16v-2.41h2.411v2.41h-2.41zm-3.214-2.946V9.304h2.679v2.678H8.232zM5.286 4.75a.275.275 0 0 1-.268.268h-.536a.275.275 0 0 1-.268-.268V2.34c0-.143.126-.269.268-.269h.536c.142 0 .268.126.268.268V4.75zm6.16 7.232V9.304h2.411v2.678h-2.41zM8.232 8.768v-2.41h2.679v2.41H8.232zm3.214 0v-2.41h2.411v2.41h-2.41zm.268-4.018a.275.275 0 0 1-.268.268h-.535a.275.275 0 0 1-.268-.268V2.34c0-.143.125-.269.268-.269h.535c.143 0 .268.126.268.268V4.75zm3.215-.536c0-.586-.486-1.071-1.072-1.071h-1.071v-.804c0-.736-.603-1.339-1.34-1.339h-.535c-.737 0-1.34.603-1.34 1.34v.803H6.357v-.804C6.357 1.603 5.754 1 5.017 1h-.535c-.736 0-1.34.603-1.34 1.34v.803h-1.07C1.484 3.143 1 3.628 1 4.214V14.93C1 15.515 1.485 16 2.071 16h11.786c.586 0 1.072-.485 1.072-1.071V4.214z\" />\n </g>\n </g>\n </svg>\n );\n}\n","import React, { Component, FocusEventHandler, FocusEvent } from 'react';\nimport noop from 'lodash/noop';\n// eslint-disable-next-line no-restricted-imports\nimport moment from 'moment';\nimport { css, cx } from 'emotion';\nimport { formatDateDisplay } from './utils/date';\nimport { createPikaday } from './utils/createPikaday';\nimport { CalendarIcon } from './icons/CalendarIcon';\n\nimport { TextInput } from '@contentful/f36-components';\n\nconst styles = {\n datePickerWrapper: css({\n position: 'relative',\n maxHeight: 70,\n }),\n datePicker: css({\n zIndex: 1002,\n display: 'block',\n '.is-hidden': {\n display: 'none',\n },\n }),\n input: css({\n width: '270px',\n cursor: 'pointer',\n paddingRight: '40px',\n '&:disabled': {\n cursor: 'not-allowed',\n },\n }),\n icon: css({\n cursor: 'pointer',\n zIndex: 50,\n position: 'absolute',\n top: '12px',\n right: '12px',\n }),\n};\n\nexport type DatePickerProps = {\n value?: moment.Moment;\n onChange: (val: moment.Moment | undefined) => void;\n onBlur: FocusEventHandler;\n disabled?: boolean;\n};\n\nexport class DatepickerInput extends Component<DatePickerProps> {\n static defaultProps: Partial<DatePickerProps> = {\n onChange: noop,\n onBlur: noop,\n };\n\n pikaday?: Pikaday;\n datePickerNode = React.createRef<HTMLInputElement>();\n\n componentDidMount() {\n const onChange = this.props.onChange;\n const defaultDate = this.props.value ? this.props.value.toDate() : undefined;\n this.pikaday = createPikaday({\n field: this.datePickerNode && this.datePickerNode.current,\n defaultDate,\n setDefaultDate: defaultDate !== undefined,\n position: 'bottom left',\n reposition: false,\n theme: cx(styles.datePicker, 'hide-carret'),\n toString: (date) => {\n return formatDateDisplay(moment(date));\n },\n // we need to keep this function like this\n // so `this` refers to pikaday instance\n onSelect: function onSelect() {\n onChange(this.getMoment() || undefined);\n },\n });\n }\n\n focusInput = () => {\n if (this.datePickerNode && this.datePickerNode.current) {\n this.datePickerNode.current.focus();\n }\n };\n\n componentWillUnmount() {\n if (this.pikaday) {\n this.pikaday.destroy();\n }\n }\n\n handleOpen = () => {\n if (this.pikaday) {\n this.pikaday.show();\n }\n };\n\n handleBlur = (e: FocusEvent) => {\n this.props.onBlur(e);\n if (this.pikaday && !this.pikaday.el.contains(e.relatedTarget as HTMLInputElement)) {\n this.pikaday.hide();\n }\n };\n\n render() {\n return (\n <div className={styles.datePickerWrapper}>\n <TextInput\n aria-label=\"Select date\"\n testId=\"date-input\"\n isReadOnly\n isDisabled={this.props.disabled}\n value={formatDateDisplay(this.props.value)}\n ref={this.datePickerNode}\n onFocus={this.handleOpen}\n onBlur={this.handleBlur}\n className={styles.input}\n />\n <CalendarIcon\n onClick={() => {\n this.focusInput();\n }}\n className={styles.icon}\n />\n </div>\n );\n }\n}\n","import React, { useState, useCallback, useEffect } from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport moment from 'moment';\nimport { css } from 'emotion';\n\nimport { TextInput, Flex } from '@contentful/f36-components';\n\nexport type TimepickerProps = {\n disabled: boolean;\n uses12hClock: boolean;\n onChange: (value: { time: string; ampm: string }) => void;\n time?: string;\n ampm?: string;\n};\n\nconst validInputFormats = [\n 'hh:mm a',\n 'hh:mm A',\n 'h:mm a',\n 'h:mm A',\n 'hh:mm',\n 'k:mm',\n 'kk:mm',\n 'h a',\n 'h A',\n 'h',\n 'hh',\n 'HH',\n];\n\nfunction parseRawInput(raw: string): moment.Moment | null {\n let time: moment.Moment | null = null;\n\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < validInputFormats.length; i++) {\n const date = moment(raw, validInputFormats[i]);\n if (date.isValid()) {\n time = date;\n break;\n }\n }\n\n return time;\n}\n\nconst getDefaultTime = () => {\n return moment(`12:00 AM`, 'hh:mm A');\n};\n\nconst formatToString = (uses12hClock: boolean, value: moment.Moment): string => {\n return uses12hClock ? value.format('hh:mm A') : value.format('HH:mm');\n};\n\nexport const TimepickerInput = ({\n disabled,\n uses12hClock,\n time = '12:00',\n ampm = 'AM',\n onChange,\n}: TimepickerProps) => {\n const [selectedTime, setSelectedTime] = useState<string>(() => {\n return formatToString(uses12hClock, getDefaultTime());\n });\n\n useEffect(() => {\n setSelectedTime(formatToString(uses12hClock, moment(`${time} ${ampm}`, 'hh:mm A')));\n }, [time, ampm, uses12hClock]);\n\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n setSelectedTime(e.currentTarget.value);\n }, []);\n\n const handleFocus = useCallback((e) => {\n e.preventDefault();\n e.target.select();\n }, []);\n\n const handleBlur = () => {\n const parsedTime = parseRawInput(selectedTime);\n const value = parsedTime ?? getDefaultTime();\n setSelectedTime(formatToString(uses12hClock, value));\n onChange({ time: value.format('hh:mm'), ampm: value.format('A') });\n };\n\n return (\n <Flex className={css({ width: '145px' })}>\n <TextInput\n aria-label=\"Select time\"\n placeholder={uses12hClock ? '12:00 AM' : '00:00'}\n date-time-type={uses12hClock ? '12' : '24'}\n testId=\"time-input\"\n value={selectedTime}\n isDisabled={disabled}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleChange}\n />\n </Flex>\n );\n};\n","export const defaultZoneOffset = '+00:00';\n\nexport const zoneOffsets = [\n '-12:00',\n '-11:00',\n '-10:00',\n '-09:30',\n '-09:00',\n '-08:00',\n '-07:00',\n '-06:00',\n '-05:00',\n '-04:30',\n '-04:00',\n '-03:30',\n '-03:00',\n '-02:00',\n '-01:00',\n '+00:00',\n '+01:00',\n '+02:00',\n '+03:00',\n '+03:30',\n '+04:00',\n '+04:30',\n '+05:00',\n '+05:30',\n '+05:45',\n '+06:00',\n '+06:30',\n '+07:00',\n '+08:00',\n '+08:45',\n '+09:00',\n '+09:30',\n '+10:00',\n '+10:30',\n '+11:00',\n '+11:30',\n '+12:00',\n '+12:45',\n '+13:00',\n '+14:00',\n];\n","import React, { ChangeEvent } from 'react';\nimport { zoneOffsets, defaultZoneOffset } from './utils/zoneOffsets';\n\nimport { Select } from '@contentful/f36-components';\n\nexport type TimezonepickerProps = {\n disabled: boolean;\n onChange: (value: string) => void;\n value?: string;\n};\nexport const TimezonepickerInput = ({\n disabled,\n onChange,\n value = defaultZoneOffset,\n}: TimezonepickerProps) => {\n return (\n <Select\n aria-label=\"Select timezone\"\n testId=\"timezone-input\"\n value={value}\n isDisabled={disabled}\n onChange={(e: ChangeEvent<HTMLSelectElement>) => {\n onChange(e.currentTarget.value);\n }}>\n {zoneOffsets.map((offset) => (\n <Select.Option key={offset} value={offset}>\n UTC{offset}\n </Select.Option>\n ))}\n </Select>\n );\n};\n","import * as React from 'react';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { FieldAPI, FieldConnector, ParametersAPI } from '@contentful/field-editor-shared';\nimport { DatepickerInput } from './DatepickerInput';\nimport { TimepickerInput } from './TimepickerInput';\nimport { TimezonepickerInput } from './TimezonePickerInput';\nimport {\n userInputFromDatetime,\n buildFieldValue,\n getDefaultAMPM,\n getDefaultUtcOffset,\n} from './utils/date';\nimport { TimeFormat, DateTimeFormat, TimeResult } from './types';\n\nimport { TextLink } from '@contentful/f36-components';\n\nexport interface DateEditorProps {\n /**\n * is the field disabled initially\n */\n isInitiallyDisabled: boolean;\n\n /**\n * sdk.field\n */\n field: FieldAPI;\n\n /**\n * sdk.parameters\n */\n parameters?: ParametersAPI & {\n instance?: {\n format?: DateTimeFormat;\n ampm?: TimeFormat;\n };\n };\n}\n\nconst styles = {\n root: css({\n display: 'flex',\n alignItems: 'center',\n }),\n separator: css({\n marginLeft: tokens.spacingM,\n }),\n};\n\nfunction useEffectWithoutFirstRender(callback: Function, deps: Array<any>) {\n const isFirstRun = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRun.current) {\n isFirstRun.current = false;\n return;\n }\n callback();\n }, deps);\n}\n\nfunction DateEditorContainer({\n initialValue,\n usesTime,\n usesTimezone,\n uses12hClock,\n disabled,\n hasClear,\n onChange,\n}: {\n initialValue: TimeResult;\n usesTime: boolean;\n usesTimezone: boolean;\n uses12hClock: boolean;\n disabled: boolean;\n hasClear: boolean;\n onChange: (value: TimeResult) => void;\n}) {\n const [value, setValue] = React.useState<TimeResult>(() => initialValue);\n\n useEffectWithoutFirstRender(() => {\n onChange(value);\n }, [value]);\n\n return (\n <div data-test-id=\"date-editor\" className={styles.root}>\n <DatepickerInput\n disabled={disabled}\n value={value.date}\n onChange={(date) => {\n setValue((value) => ({\n ...value,\n date,\n }));\n }}\n />\n {usesTime && (\n <>\n <div className={styles.separator} />\n <TimepickerInput\n disabled={disabled}\n time={value.time}\n ampm={value.ampm}\n onChange={({ time, ampm }) => {\n setValue((value) => ({\n ...value,\n time,\n ampm,\n }));\n }}\n uses12hClock={uses12hClock}\n />\n </>\n )}\n {usesTimezone && (\n <>\n <div className={styles.separator} />\n <TimezonepickerInput\n disabled={disabled}\n value={value.utcOffset}\n onChange={(utcOffset) => {\n setValue((value) => ({\n ...value,\n utcOffset,\n }));\n }}\n />\n </>\n )}\n {hasClear && (\n <>\n <div className={styles.separator} />\n <TextLink\n as=\"button\"\n isDisabled={disabled}\n testId=\"date-clear\"\n onClick={() => {\n setValue({\n date: undefined,\n time: undefined,\n ampm: getDefaultAMPM(),\n utcOffset: getDefaultUtcOffset(),\n });\n }}>\n Clear\n </TextLink>\n </>\n )}\n </div>\n );\n}\n\nexport function DateEditor(props: DateEditorProps) {\n const { field, parameters } = props;\n\n const formatParam = parameters?.instance?.format ?? 'timeZ';\n const ampmParam = parameters?.instance?.ampm ?? '24';\n\n const usesTime = formatParam !== 'dateonly';\n const usesTimezone = formatParam === 'timeZ';\n const uses12hClock = ampmParam === '12';\n\n return (\n <FieldConnector<string>\n field={field}\n isInitiallyDisabled={props.isInitiallyDisabled}\n throttle={0}>\n {({ value, disabled, setValue, externalReset }) => {\n const datetimeValue = userInputFromDatetime({\n value,\n uses12hClock,\n });\n return (\n <DateEditorContainer\n initialValue={datetimeValue}\n uses12hClock={uses12hClock}\n usesTimezone={usesTimezone}\n usesTime={usesTime}\n disabled={disabled}\n hasClear={Boolean(value)}\n onChange={(data) => {\n const fieldValue = buildFieldValue({ data, usesTime, usesTimezone });\n if (fieldValue.invalid) {\n return;\n }\n // if value is present - then override it with a new one\n // if value is not present - then set a new one if it's not nullable only\n if (Boolean(value) || (!value && Boolean(fieldValue.valid))) {\n setValue(fieldValue.valid);\n }\n }}\n key={`date-container-${externalReset}`}\n />\n );\n }}\n </FieldConnector>\n );\n}\n\nDateEditor.defaultProps = {\n isInitiallyDisabled: true,\n};\n"],"names":["ZONE_RX","startOfToday","format","moment","set","hours","minutes","fieldValueToMoment","datetimeString","datetime","test","utcOffset","timeFromUserInput","input","timeInput","time","utc","ampm","datetimeFromUserInput","date","valid","parseZone","toObject","isValid","invalid","formatDateDisplay","buildFieldValue","data","usesTime","usesTimezone","getDefaultAMPM","getDefaultUtcOffset","userInputFromDatetime","value","uses12hClock","timeFormat","I18N","previousMonth","nextMonth","months","weekdaysShort","weekdays","DEFAULTS","i18n","yearRange","createPikaday","opts","Pikaday","Object","assign","CalendarIcon","props","React","width","height","viewBox","onClick","xmlns","className","fill","fillRule","d","styles","datePickerWrapper","css","position","maxHeight","datePicker","zIndex","display","cursor","paddingRight","icon","top","right","DatepickerInput","createRef","datePickerNode","current","focus","pikaday","show","e","onBlur","el","contains","relatedTarget","hide","componentDidMount","onChange","defaultDate","toDate","undefined","field","setDefaultDate","reposition","theme","cx","toString","onSelect","getMoment","componentWillUnmount","destroy","render","TextInput","testId","isReadOnly","isDisabled","disabled","ref","onFocus","handleOpen","handleBlur","focusInput","Component","noop","validInputFormats","parseRawInput","raw","i","length","getDefaultTime","formatToString","TimepickerInput","useState","selectedTime","setSelectedTime","useEffect","handleChange","useCallback","currentTarget","handleFocus","preventDefault","target","select","parsedTime","Flex","placeholder","defaultZoneOffset","zoneOffsets","TimezonepickerInput","Select","map","offset","Option","key","root","alignItems","separator","marginLeft","tokens","spacingM","useEffectWithoutFirstRender","callback","deps","isFirstRun","DateEditorContainer","initialValue","hasClear","setValue","TextLink","as","DateEditor","parameters","formatParam","instance","ampmParam","FieldConnector","isInitiallyDisabled","throttle","externalReset","datetimeValue","Boolean","fieldValue","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"field-editor-date.esm.js","sources":["../src/utils/date.ts","../src/utils/createPikaday.ts","../src/icons/CalendarIcon.tsx","../src/DatepickerInput.tsx","../src/TimepickerInput.tsx","../src/utils/zoneOffsets.ts","../src/TimezonePickerInput.tsx","../src/DateEditor.tsx"],"sourcesContent":["// eslint-disable-next-line -- TODO: describe this disable no-restricted-imports\nimport moment from 'moment';\nimport { TimeResult } from '../types';\n\nconst ZONE_RX = /(Z|[+-]\\d{2}[:+]?\\d{2})$/;\n\nfunction startOfToday(format: string) {\n return moment().set({ hours: 0, minutes: 0 }).format(format);\n}\n\nfunction fieldValueToMoment(datetimeString: string | null | undefined): moment.Moment | null {\n if (!datetimeString) {\n return null;\n }\n\n const datetime = moment(datetimeString);\n if (ZONE_RX.test(datetimeString)) {\n datetime.utcOffset(datetimeString);\n }\n return datetime;\n}\n\nfunction timeFromUserInput(input: TimeResult) {\n const timeInput = input.time || '00:00';\n return moment.utc(timeInput + '!' + input.ampm, 'HH:mm!A');\n}\n\n/**\n * Convert the user input object into either a 'moment' value or an\n * invalid symbol.\n *\n * Success is indicated by returning '{valid: value}' and failure is\n * indicated by returning '{invalid: true}'. If 'input.date' is\n * 'null' we return '{valid: null}'\n */\nfunction datetimeFromUserInput(input: TimeResult): {\n invalid?: boolean;\n valid: moment.Moment | null;\n} {\n if (!input.date) {\n return { valid: null };\n }\n\n const time = timeFromUserInput(input);\n\n const date = moment\n .parseZone(input.utcOffset, 'Z')\n .set(input.date.toObject())\n .set({ hours: time.hours(), minutes: time.minutes() });\n\n if (date.isValid()) {\n return { valid: date };\n } else {\n return { invalid: true, valid: null };\n }\n}\n\nexport function formatDateDisplay(date?: moment.Moment) {\n if (date) {\n return date.format('dddd, MMMM Do YYYY');\n } else {\n return '';\n }\n}\n\n/**\n * Parse user input into a string that is stored in the API.\n *\n * Returns a sum type with either the string as the `valid` property\n * or the `invalid` property set to `false`.\n */\nexport function buildFieldValue({\n data,\n usesTime,\n usesTimezone,\n}: {\n data: TimeResult;\n usesTime: boolean;\n usesTimezone: boolean;\n}) {\n const date = datetimeFromUserInput(data);\n if (date.invalid) {\n return {\n invalid: true,\n };\n }\n\n let format;\n if (usesTimezone) {\n format = 'YYYY-MM-DDTHH:mmZ';\n } else if (usesTime) {\n format = 'YYYY-MM-DDTHH:mm';\n } else {\n format = 'YYYY-MM-DD';\n }\n return { valid: date?.valid ? date.valid.format(format) : null, invalid: false };\n}\n\nexport function getDefaultAMPM() {\n return 'AM';\n}\n\nexport function getDefaultUtcOffset() {\n return startOfToday('Z');\n}\n\n/**\n * Create the user input object from the field value.\n */\nexport function userInputFromDatetime({\n value,\n uses12hClock,\n}: {\n value: string | undefined | null;\n uses12hClock: boolean;\n}): TimeResult {\n const datetime = fieldValueToMoment(value);\n\n if (datetime) {\n const timeFormat = uses12hClock ? 'hh:mm' : 'HH:mm';\n return {\n date: datetime,\n time: datetime.format(timeFormat),\n ampm: datetime.format('A'),\n utcOffset: datetime.format('Z'),\n };\n } else {\n return {\n ampm: getDefaultAMPM(),\n utcOffset: getDefaultUtcOffset(),\n };\n }\n}\n","import Pikaday from 'pikaday';\n\nconst I18N = {\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n weekdaysShort: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n};\n\nconst DEFAULTS = {\n i18n: I18N,\n yearRange: 100,\n};\n\n// Gets same options as Pikaday and returns a Pikaday instance\nexport const createPikaday = (opts?: Pikaday.PikadayOptions) =>\n new Pikaday(Object.assign({}, DEFAULTS, opts));\n","import React from 'react';\n\nexport function CalendarIcon(props: {\n className?: string;\n onClick?: React.MouseEventHandler<SVGElement>;\n}) {\n return (\n <svg\n width=\"16\"\n height=\"17\"\n viewBox=\"-1 -1 18 19\"\n onClick={props.onClick}\n xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}>\n <g fill=\"none\" fillRule=\"evenodd\">\n <g fill=\"#536171\">\n <path d=\"M2.071 14.929v-2.411h2.411v2.41h-2.41zm2.947 0v-2.411h2.678v2.41H5.018zM2.07 11.982V9.304h2.411v2.678h-2.41zm2.947 0V9.304h2.678v2.678H5.018zM2.07 8.768v-2.41h2.411v2.41h-2.41zm6.161 6.16v-2.41h2.679v2.41H8.232zm-3.214-6.16v-2.41h2.678v2.41H5.018zm6.428 6.16v-2.41h2.411v2.41h-2.41zm-3.214-2.946V9.304h2.679v2.678H8.232zM5.286 4.75a.275.275 0 0 1-.268.268h-.536a.275.275 0 0 1-.268-.268V2.34c0-.143.126-.269.268-.269h.536c.142 0 .268.126.268.268V4.75zm6.16 7.232V9.304h2.411v2.678h-2.41zM8.232 8.768v-2.41h2.679v2.41H8.232zm3.214 0v-2.41h2.411v2.41h-2.41zm.268-4.018a.275.275 0 0 1-.268.268h-.535a.275.275 0 0 1-.268-.268V2.34c0-.143.125-.269.268-.269h.535c.143 0 .268.126.268.268V4.75zm3.215-.536c0-.586-.486-1.071-1.072-1.071h-1.071v-.804c0-.736-.603-1.339-1.34-1.339h-.535c-.737 0-1.34.603-1.34 1.34v.803H6.357v-.804C6.357 1.603 5.754 1 5.017 1h-.535c-.736 0-1.34.603-1.34 1.34v.803h-1.07C1.484 3.143 1 3.628 1 4.214V14.93C1 15.515 1.485 16 2.071 16h11.786c.586 0 1.072-.485 1.072-1.071V4.214z\" />\n </g>\n </g>\n </svg>\n );\n}\n","import React, { Component, FocusEventHandler, FocusEvent } from 'react';\nimport noop from 'lodash/noop';\n// eslint-disable-next-line -- TODO: describe this disable no-restricted-imports\nimport moment from 'moment';\nimport { css, cx } from 'emotion';\nimport { formatDateDisplay } from './utils/date';\nimport { createPikaday } from './utils/createPikaday';\nimport { CalendarIcon } from './icons/CalendarIcon';\n\nimport { TextInput } from '@contentful/f36-components';\n\nconst styles = {\n datePickerWrapper: css({\n position: 'relative',\n maxHeight: 70,\n }),\n datePicker: css({\n zIndex: 1002,\n display: 'block',\n '.is-hidden': {\n display: 'none',\n },\n }),\n input: css({\n width: '270px',\n cursor: 'pointer',\n paddingRight: '40px',\n '&:disabled': {\n cursor: 'not-allowed',\n },\n }),\n icon: css({\n cursor: 'pointer',\n zIndex: 50,\n position: 'absolute',\n top: '12px',\n right: '12px',\n }),\n};\n\nexport type DatePickerProps = {\n value?: moment.Moment;\n onChange: (val: moment.Moment | undefined) => void;\n onBlur: FocusEventHandler;\n disabled?: boolean;\n};\n\nexport class DatepickerInput extends Component<DatePickerProps> {\n static defaultProps: Partial<DatePickerProps> = {\n onChange: noop,\n onBlur: noop,\n };\n\n pikaday?: Pikaday;\n datePickerNode = React.createRef<HTMLInputElement>();\n\n componentDidMount() {\n const onChange = this.props.onChange;\n const defaultDate = this.props.value ? this.props.value.toDate() : undefined;\n this.pikaday = createPikaday({\n field: this.datePickerNode && this.datePickerNode.current,\n defaultDate,\n setDefaultDate: defaultDate !== undefined,\n position: 'bottom left',\n reposition: false,\n theme: cx(styles.datePicker, 'hide-carret'),\n toString: (date) => {\n return formatDateDisplay(moment(date));\n },\n // we need to keep this function like this\n // so `this` refers to pikaday instance\n onSelect: function onSelect() {\n onChange(this.getMoment() || undefined);\n },\n });\n }\n\n focusInput = () => {\n if (this.datePickerNode && this.datePickerNode.current) {\n this.datePickerNode.current.focus();\n }\n };\n\n componentWillUnmount() {\n if (this.pikaday) {\n this.pikaday.destroy();\n }\n }\n\n handleOpen = () => {\n if (this.pikaday) {\n this.pikaday.show();\n }\n };\n\n handleBlur = (e: FocusEvent) => {\n this.props.onBlur(e);\n if (this.pikaday && !this.pikaday.el.contains(e.relatedTarget as HTMLInputElement)) {\n this.pikaday.hide();\n }\n };\n\n render() {\n return (\n <div className={styles.datePickerWrapper}>\n <TextInput\n aria-label=\"Select date\"\n testId=\"date-input\"\n isReadOnly\n isDisabled={this.props.disabled}\n value={formatDateDisplay(this.props.value)}\n ref={this.datePickerNode}\n onFocus={this.handleOpen}\n onBlur={this.handleBlur}\n className={styles.input}\n />\n <CalendarIcon\n onClick={() => {\n this.focusInput();\n }}\n className={styles.icon}\n />\n </div>\n );\n }\n}\n","import React, { useState, useCallback, useEffect } from 'react';\n// eslint-disable-next-line -- TODO: describe this disable no-restricted-imports\nimport moment from 'moment';\nimport { css } from 'emotion';\n\nimport { TextInput, Flex } from '@contentful/f36-components';\n\nexport type TimepickerProps = {\n disabled: boolean;\n uses12hClock: boolean;\n onChange: (value: { time: string; ampm: string }) => void;\n time?: string;\n ampm?: string;\n};\n\nconst validInputFormats = [\n 'hh:mm a',\n 'hh:mm A',\n 'h:mm a',\n 'h:mm A',\n 'hh:mm',\n 'k:mm',\n 'kk:mm',\n 'h a',\n 'h A',\n 'h',\n 'hh',\n 'HH',\n];\n\nfunction parseRawInput(raw: string): moment.Moment | null {\n let time: moment.Moment | null = null;\n\n // eslint-disable-next-line -- TODO: describe this disable @typescript-eslint/prefer-for-of\n for (let i = 0; i < validInputFormats.length; i++) {\n const date = moment(raw, validInputFormats[i]);\n if (date.isValid()) {\n time = date;\n break;\n }\n }\n\n return time;\n}\n\nconst getDefaultTime = () => {\n return moment(`12:00 AM`, 'hh:mm A');\n};\n\nconst formatToString = (uses12hClock: boolean, value: moment.Moment): string => {\n return uses12hClock ? value.format('hh:mm A') : value.format('HH:mm');\n};\n\nexport const TimepickerInput = ({\n disabled,\n uses12hClock,\n time = '12:00',\n ampm = 'AM',\n onChange,\n}: TimepickerProps) => {\n const [selectedTime, setSelectedTime] = useState<string>(() => {\n return formatToString(uses12hClock, getDefaultTime());\n });\n\n useEffect(() => {\n setSelectedTime(formatToString(uses12hClock, moment(`${time} ${ampm}`, 'hh:mm A')));\n }, [time, ampm, uses12hClock]);\n\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n setSelectedTime(e.currentTarget.value);\n }, []);\n\n const handleFocus = useCallback((e) => {\n e.preventDefault();\n e.target.select();\n }, []);\n\n const handleBlur = () => {\n const parsedTime = parseRawInput(selectedTime);\n const value = parsedTime ?? getDefaultTime();\n setSelectedTime(formatToString(uses12hClock, value));\n onChange({ time: value.format('hh:mm'), ampm: value.format('A') });\n };\n\n return (\n <Flex className={css({ width: '145px' })}>\n <TextInput\n aria-label=\"Select time\"\n placeholder={uses12hClock ? '12:00 AM' : '00:00'}\n date-time-type={uses12hClock ? '12' : '24'}\n testId=\"time-input\"\n value={selectedTime}\n isDisabled={disabled}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleChange}\n />\n </Flex>\n );\n};\n","export const defaultZoneOffset = '+00:00';\n\nexport const zoneOffsets = [\n '-12:00',\n '-11:00',\n '-10:00',\n '-09:30',\n '-09:00',\n '-08:00',\n '-07:00',\n '-06:00',\n '-05:00',\n '-04:30',\n '-04:00',\n '-03:30',\n '-03:00',\n '-02:00',\n '-01:00',\n '+00:00',\n '+01:00',\n '+02:00',\n '+03:00',\n '+03:30',\n '+04:00',\n '+04:30',\n '+05:00',\n '+05:30',\n '+05:45',\n '+06:00',\n '+06:30',\n '+07:00',\n '+08:00',\n '+08:45',\n '+09:00',\n '+09:30',\n '+10:00',\n '+10:30',\n '+11:00',\n '+11:30',\n '+12:00',\n '+12:45',\n '+13:00',\n '+14:00',\n];\n","import React, { ChangeEvent } from 'react';\nimport { zoneOffsets, defaultZoneOffset } from './utils/zoneOffsets';\n\nimport { Select } from '@contentful/f36-components';\n\nexport type TimezonepickerProps = {\n disabled: boolean;\n onChange: (value: string) => void;\n value?: string;\n};\nexport const TimezonepickerInput = ({\n disabled,\n onChange,\n value = defaultZoneOffset,\n}: TimezonepickerProps) => {\n return (\n <Select\n aria-label=\"Select timezone\"\n testId=\"timezone-input\"\n value={value}\n isDisabled={disabled}\n onChange={(e: ChangeEvent<HTMLSelectElement>) => {\n onChange(e.currentTarget.value);\n }}>\n {zoneOffsets.map((offset) => (\n <Select.Option key={offset} value={offset}>\n UTC{offset}\n </Select.Option>\n ))}\n </Select>\n );\n};\n","import * as React from 'react';\nimport { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { FieldAPI, FieldConnector, ParametersAPI } from '@contentful/field-editor-shared';\nimport { DatepickerInput } from './DatepickerInput';\nimport { TimepickerInput } from './TimepickerInput';\nimport { TimezonepickerInput } from './TimezonePickerInput';\nimport {\n userInputFromDatetime,\n buildFieldValue,\n getDefaultAMPM,\n getDefaultUtcOffset,\n} from './utils/date';\nimport { TimeFormat, DateTimeFormat, TimeResult } from './types';\n\nimport { TextLink } from '@contentful/f36-components';\n\nexport interface DateEditorProps {\n /**\n * is the field disabled initially\n */\n isInitiallyDisabled: boolean;\n\n /**\n * sdk.field\n */\n field: FieldAPI;\n\n /**\n * sdk.parameters\n */\n parameters?: ParametersAPI & {\n instance?: {\n format?: DateTimeFormat;\n ampm?: TimeFormat;\n };\n };\n}\n\nconst styles = {\n root: css({\n display: 'flex',\n alignItems: 'center',\n }),\n separator: css({\n marginLeft: tokens.spacingM,\n }),\n};\n\nfunction useEffectWithoutFirstRender(callback: Function, deps: Array<any>) {\n const isFirstRun = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRun.current) {\n isFirstRun.current = false;\n return;\n }\n callback();\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n }, deps);\n}\n\nfunction DateEditorContainer({\n initialValue,\n usesTime,\n usesTimezone,\n uses12hClock,\n disabled,\n hasClear,\n onChange,\n}: {\n initialValue: TimeResult;\n usesTime: boolean;\n usesTimezone: boolean;\n uses12hClock: boolean;\n disabled: boolean;\n hasClear: boolean;\n onChange: (value: TimeResult) => void;\n}) {\n const [value, setValue] = React.useState<TimeResult>(() => initialValue);\n\n useEffectWithoutFirstRender(() => {\n onChange(value);\n }, [value]);\n\n return (\n <div data-test-id=\"date-editor\" className={styles.root}>\n <DatepickerInput\n disabled={disabled}\n value={value.date}\n onChange={(date) => {\n setValue((value) => ({\n ...value,\n date,\n }));\n }}\n />\n {usesTime && (\n <>\n <div className={styles.separator} />\n <TimepickerInput\n disabled={disabled}\n time={value.time}\n ampm={value.ampm}\n onChange={({ time, ampm }) => {\n setValue((value) => ({\n ...value,\n time,\n ampm,\n }));\n }}\n uses12hClock={uses12hClock}\n />\n </>\n )}\n {usesTimezone && (\n <>\n <div className={styles.separator} />\n <TimezonepickerInput\n disabled={disabled}\n value={value.utcOffset}\n onChange={(utcOffset) => {\n setValue((value) => ({\n ...value,\n utcOffset,\n }));\n }}\n />\n </>\n )}\n {hasClear && (\n <>\n <div className={styles.separator} />\n <TextLink\n as=\"button\"\n isDisabled={disabled}\n testId=\"date-clear\"\n onClick={() => {\n setValue({\n date: undefined,\n time: undefined,\n ampm: getDefaultAMPM(),\n utcOffset: getDefaultUtcOffset(),\n });\n }}>\n Clear\n </TextLink>\n </>\n )}\n </div>\n );\n}\n\nexport function DateEditor(props: DateEditorProps) {\n const { field, parameters } = props;\n\n const formatParam = parameters?.instance?.format ?? 'timeZ';\n const ampmParam = parameters?.instance?.ampm ?? '24';\n\n const usesTime = formatParam !== 'dateonly';\n const usesTimezone = formatParam === 'timeZ';\n const uses12hClock = ampmParam === '12';\n\n return (\n <FieldConnector<string>\n field={field}\n isInitiallyDisabled={props.isInitiallyDisabled}\n throttle={0}>\n {({ value, disabled, setValue, externalReset }) => {\n const datetimeValue = userInputFromDatetime({\n value,\n uses12hClock,\n });\n return (\n <DateEditorContainer\n initialValue={datetimeValue}\n uses12hClock={uses12hClock}\n usesTimezone={usesTimezone}\n usesTime={usesTime}\n disabled={disabled}\n hasClear={Boolean(value)}\n onChange={(data) => {\n const fieldValue = buildFieldValue({ data, usesTime, usesTimezone });\n if (fieldValue.invalid) {\n return;\n }\n // if value is present - then override it with a new one\n // if value is not present - then set a new one if it's not nullable only\n if (Boolean(value) || (!value && Boolean(fieldValue.valid))) {\n setValue(fieldValue.valid);\n }\n }}\n key={`date-container-${externalReset}`}\n />\n );\n }}\n </FieldConnector>\n );\n}\n\nDateEditor.defaultProps = {\n isInitiallyDisabled: true,\n};\n"],"names":["ZONE_RX","startOfToday","format","moment","set","hours","minutes","fieldValueToMoment","datetimeString","datetime","test","utcOffset","timeFromUserInput","input","timeInput","time","utc","ampm","datetimeFromUserInput","date","valid","parseZone","toObject","isValid","invalid","formatDateDisplay","buildFieldValue","data","usesTime","usesTimezone","getDefaultAMPM","getDefaultUtcOffset","userInputFromDatetime","value","uses12hClock","timeFormat","I18N","previousMonth","nextMonth","months","weekdaysShort","weekdays","DEFAULTS","i18n","yearRange","createPikaday","opts","Pikaday","Object","assign","CalendarIcon","props","React","width","height","viewBox","onClick","xmlns","className","fill","fillRule","d","styles","datePickerWrapper","css","position","maxHeight","datePicker","zIndex","display","cursor","paddingRight","icon","top","right","DatepickerInput","createRef","datePickerNode","current","focus","pikaday","show","e","onBlur","el","contains","relatedTarget","hide","componentDidMount","onChange","defaultDate","toDate","undefined","field","setDefaultDate","reposition","theme","cx","toString","onSelect","getMoment","componentWillUnmount","destroy","render","TextInput","testId","isReadOnly","isDisabled","disabled","ref","onFocus","handleOpen","handleBlur","focusInput","Component","noop","validInputFormats","parseRawInput","raw","i","length","getDefaultTime","formatToString","TimepickerInput","useState","selectedTime","setSelectedTime","useEffect","handleChange","useCallback","currentTarget","handleFocus","preventDefault","target","select","parsedTime","Flex","placeholder","defaultZoneOffset","zoneOffsets","TimezonepickerInput","Select","map","offset","Option","key","root","alignItems","separator","marginLeft","tokens","spacingM","useEffectWithoutFirstRender","callback","deps","isFirstRun","DateEditorContainer","initialValue","hasClear","setValue","TextLink","as","DateEditor","parameters","formatParam","instance","ampmParam","FieldConnector","isInitiallyDisabled","throttle","externalReset","datetimeValue","Boolean","fieldValue","defaultProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAIA,IAAMA,OAAO,GAAG,0BAAhB;;AAEA,SAASC,YAAT,CAAsBC,MAAtB;AACE,SAAOC,MAAM,GAAGC,GAAT,CAAa;AAAEC,IAAAA,KAAK,EAAE,CAAT;AAAYC,IAAAA,OAAO,EAAE;AAArB,GAAb,EAAuCJ,MAAvC,CAA8CA,MAA9C,CAAP;AACD;;AAED,SAASK,kBAAT,CAA4BC,cAA5B;AACE,MAAI,CAACA,cAAL,EAAqB;AACnB,WAAO,IAAP;AACD;;AAED,MAAMC,QAAQ,GAAGN,MAAM,CAACK,cAAD,CAAvB;;AACA,MAAIR,OAAO,CAACU,IAAR,CAAaF,cAAb,CAAJ,EAAkC;AAChCC,IAAAA,QAAQ,CAACE,SAAT,CAAmBH,cAAnB;AACD;;AACD,SAAOC,QAAP;AACD;;AAED,SAASG,iBAAT,CAA2BC,KAA3B;AACE,MAAMC,SAAS,GAAGD,KAAK,CAACE,IAAN,IAAc,OAAhC;AACA,SAAOZ,MAAM,CAACa,GAAP,CAAWF,SAAS,GAAG,GAAZ,GAAkBD,KAAK,CAACI,IAAnC,EAAyC,SAAzC,CAAP;AACD;AAED;;;;;;;;;;AAQA,SAASC,qBAAT,CAA+BL,KAA/B;AAIE,MAAI,CAACA,KAAK,CAACM,IAAX,EAAiB;AACf,WAAO;AAAEC,MAAAA,KAAK,EAAE;AAAT,KAAP;AACD;;AAED,MAAML,IAAI,GAAGH,iBAAiB,CAACC,KAAD,CAA9B;AAEA,MAAMM,IAAI,GAAGhB,MAAM,CAChBkB,SADU,CACAR,KAAK,CAACF,SADN,EACiB,GADjB,EAEVP,GAFU,CAENS,KAAK,CAACM,IAAN,CAAWG,QAAX,EAFM,EAGVlB,GAHU,CAGN;AAAEC,IAAAA,KAAK,EAAEU,IAAI,CAACV,KAAL,EAAT;AAAuBC,IAAAA,OAAO,EAAES,IAAI,CAACT,OAAL;AAAhC,GAHM,CAAb;;AAKA,MAAIa,IAAI,CAACI,OAAL,EAAJ,EAAoB;AAClB,WAAO;AAAEH,MAAAA,KAAK,EAAED;AAAT,KAAP;AACD,GAFD,MAEO;AACL,WAAO;AAAEK,MAAAA,OAAO,EAAE,IAAX;AAAiBJ,MAAAA,KAAK,EAAE;AAAxB,KAAP;AACD;AACF;;SAEeK,kBAAkBN;AAChC,MAAIA,IAAJ,EAAU;AACR,WAAOA,IAAI,CAACjB,MAAL,CAAY,oBAAZ,CAAP;AACD,GAFD,MAEO;AACL,WAAO,EAAP;AACD;AACF;AAED;;;;;;;SAMgBwB;MACdC,YAAAA;MACAC,gBAAAA;MACAC,oBAAAA;AAMA,MAAMV,IAAI,GAAGD,qBAAqB,CAACS,IAAD,CAAlC;;AACA,MAAIR,IAAI,CAACK,OAAT,EAAkB;AAChB,WAAO;AACLA,MAAAA,OAAO,EAAE;AADJ,KAAP;AAGD;;AAED,MAAItB,MAAJ;;AACA,MAAI2B,YAAJ,EAAkB;AAChB3B,IAAAA,MAAM,GAAG,mBAAT;AACD,GAFD,MAEO,IAAI0B,QAAJ,EAAc;AACnB1B,IAAAA,MAAM,GAAG,kBAAT;AACD,GAFM,MAEA;AACLA,IAAAA,MAAM,GAAG,YAAT;AACD;;AACD,SAAO;AAAEkB,IAAAA,KAAK,EAAED,IAAI,QAAJ,IAAAA,IAAI,CAAEC,KAAN,GAAcD,IAAI,CAACC,KAAL,CAAWlB,MAAX,CAAkBA,MAAlB,CAAd,GAA0C,IAAnD;AAAyDsB,IAAAA,OAAO,EAAE;AAAlE,GAAP;AACD;SAEeM;AACd,SAAO,IAAP;AACD;SAEeC;AACd,SAAO9B,YAAY,CAAC,GAAD,CAAnB;AACD;AAED;;;;SAGgB+B;MACdC,cAAAA;MACAC,qBAAAA;AAKA,MAAMzB,QAAQ,GAAGF,kBAAkB,CAAC0B,KAAD,CAAnC;;AAEA,MAAIxB,QAAJ,EAAc;AACZ,QAAM0B,UAAU,GAAGD,YAAY,GAAG,OAAH,GAAa,OAA5C;AACA,WAAO;AACLf,MAAAA,IAAI,EAAEV,QADD;AAELM,MAAAA,IAAI,EAAEN,QAAQ,CAACP,MAAT,CAAgBiC,UAAhB,CAFD;AAGLlB,MAAAA,IAAI,EAAER,QAAQ,CAACP,MAAT,CAAgB,GAAhB,CAHD;AAILS,MAAAA,SAAS,EAAEF,QAAQ,CAACP,MAAT,CAAgB,GAAhB;AAJN,KAAP;AAMD,GARD,MAQO;AACL,WAAO;AACLe,MAAAA,IAAI,EAAEa,cAAc,EADf;AAELnB,MAAAA,SAAS,EAAEoB,mBAAmB;AAFzB,KAAP;AAID;AACF;;AClID,IAAMK,IAAI,GAAG;AACXC,EAAAA,aAAa,EAAE,gBADJ;AAEXC,EAAAA,SAAS,EAAE,YAFA;AAGXC,EAAAA,MAAM,EAAE,CACN,SADM,EAEN,UAFM,EAGN,OAHM,EAIN,OAJM,EAKN,KALM,EAMN,MANM,EAON,MAPM,EAQN,QARM,EASN,WATM,EAUN,SAVM,EAWN,UAXM,EAYN,UAZM,CAHG;AAiBXC,EAAAA,aAAa,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,EAA0B,GAA1B,EAA+B,GAA/B,CAjBJ;AAkBXC,EAAAA,QAAQ,EAAE,CAAC,QAAD,EAAW,QAAX,EAAqB,SAArB,EAAgC,WAAhC,EAA6C,UAA7C,EAAyD,QAAzD,EAAmE,UAAnE;AAlBC,CAAb;AAqBA,IAAMC,QAAQ,GAAG;AACfC,EAAAA,IAAI,EAAEP,IADS;AAEfQ,EAAAA,SAAS,EAAE;AAFI,CAAjB;;AAMA,IAAaC,aAAa,GAAG,SAAhBA,aAAgB,CAACC,IAAD;AAAA,SAC3B,IAAIC,OAAJ,CAAYC,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBP,QAAlB,EAA4BI,IAA5B,CAAZ,CAD2B;AAAA,CAAtB;;SC3BSI,aAAaC;AAI3B,SACEC,4BAAA,MAAA;AACEC,IAAAA,KAAK,EAAC;AACNC,IAAAA,MAAM,EAAC;AACPC,IAAAA,OAAO,EAAC;AACRC,IAAAA,OAAO,EAAEL,KAAK,CAACK;AACfC,IAAAA,KAAK,EAAC;AACNC,IAAAA,SAAS,EAAEP,KAAK,CAACO;GANnB,EAOEN,4BAAA,IAAA;AAAGO,IAAAA,IAAI,EAAC;AAAOC,IAAAA,QAAQ,EAAC;GAAxB,EACER,4BAAA,IAAA;AAAGO,IAAAA,IAAI,EAAC;GAAR,EACEP,4BAAA,OAAA;AAAMS,IAAAA,CAAC,EAAC;GAAR,CADF,CADF,CAPF,CADF;AAeD;;ACVD,IAAMC,MAAM,GAAG;AACbC,EAAAA,iBAAiB,eAAEC,GAAG,CAAC;AACrBC,IAAAA,QAAQ,EAAE,UADW;AAErBC,IAAAA,SAAS,EAAE;AAFU,GAAD,CADT;AAKbC,EAAAA,UAAU,eAAEH,GAAG,CAAC;AACdI,IAAAA,MAAM,EAAE,IADM;AAEdC,IAAAA,OAAO,EAAE,OAFK;AAGd,kBAAc;AACZA,MAAAA,OAAO,EAAE;AADG;AAHA,GAAD,CALF;AAYbxD,EAAAA,KAAK,eAAEmD,GAAG,CAAC;AACTX,IAAAA,KAAK,EAAE,OADE;AAETiB,IAAAA,MAAM,EAAE,SAFC;AAGTC,IAAAA,YAAY,EAAE,MAHL;AAIT,kBAAc;AACZD,MAAAA,MAAM,EAAE;AADI;AAJL,GAAD,CAZG;AAoBbE,EAAAA,IAAI,eAAER,GAAG,CAAC;AACRM,IAAAA,MAAM,EAAE,SADA;AAERF,IAAAA,MAAM,EAAE,EAFA;AAGRH,IAAAA,QAAQ,EAAE,UAHF;AAIRQ,IAAAA,GAAG,EAAE,MAJG;AAKRC,IAAAA,KAAK,EAAE;AALC,GAAD;AApBI,CAAf;AAoCA,IAAaC,eAAb;AAAA;;AAAA;;;;AAOE,wBAAA,GAAiBvB,cAAK,CAACwB,SAAN,EAAjB;;AAuBA,oBAAA,GAAa;AACX,UAAI,MAAKC,cAAL,IAAuB,MAAKA,cAAL,CAAoBC,OAA/C,EAAwD;AACtD,cAAKD,cAAL,CAAoBC,OAApB,CAA4BC,KAA5B;AACD;AACF,KAJD;;AAYA,oBAAA,GAAa;AACX,UAAI,MAAKC,OAAT,EAAkB;AAChB,cAAKA,OAAL,CAAaC,IAAb;AACD;AACF,KAJD;;AAMA,oBAAA,GAAa,UAACC,CAAD;AACX,YAAK/B,KAAL,CAAWgC,MAAX,CAAkBD,CAAlB;;AACA,UAAI,MAAKF,OAAL,IAAgB,CAAC,MAAKA,OAAL,CAAaI,EAAb,CAAgBC,QAAhB,CAAyBH,CAAC,CAACI,aAA3B,CAArB,EAAoF;AAClF,cAAKN,OAAL,CAAaO,IAAb;AACD;AACF,KALD;;;AA8BD;;AA9ED;;AAAA,SASEC,iBATF,GASE;AACE,QAAMC,QAAQ,GAAG,KAAKtC,KAAL,CAAWsC,QAA5B;AACA,QAAMC,WAAW,GAAG,KAAKvC,KAAL,CAAWlB,KAAX,GAAmB,KAAKkB,KAAL,CAAWlB,KAAX,CAAiB0D,MAAjB,EAAnB,GAA+CC,SAAnE;AACA,SAAKZ,OAAL,GAAenC,aAAa,CAAC;AAC3BgD,MAAAA,KAAK,EAAE,KAAKhB,cAAL,IAAuB,KAAKA,cAAL,CAAoBC,OADvB;AAE3BY,MAAAA,WAAW,EAAXA,WAF2B;AAG3BI,MAAAA,cAAc,EAAEJ,WAAW,KAAKE,SAHL;AAI3B3B,MAAAA,QAAQ,EAAE,aAJiB;AAK3B8B,MAAAA,UAAU,EAAE,KALe;AAM3BC,MAAAA,KAAK,EAAEC,EAAE,CAACnC,MAAM,CAACK,UAAR,EAAoB,aAApB,CANkB;AAO3B+B,MAAAA,QAAQ,EAAE,kBAAC/E,IAAD;AACR,eAAOM,iBAAiB,CAACtB,MAAM,CAACgB,IAAD,CAAP,CAAxB;AACD,OAT0B;AAU3B;AACA;AACAgF,MAAAA,QAAQ,EAAE,SAASA,QAAT;AACRV,QAAAA,QAAQ,CAAC,KAAKW,SAAL,MAAoBR,SAArB,CAAR;AACD;AAd0B,KAAD,CAA5B;AAgBD,GA5BH;;AAAA,SAoCES,oBApCF,GAoCE;AACE,QAAI,KAAKrB,OAAT,EAAkB;AAChB,WAAKA,OAAL,CAAasB,OAAb;AACD;AACF,GAxCH;;AAAA,SAuDEC,MAvDF,GAuDE;;;AACE,WACEnD,4BAAA,MAAA;AAAKM,MAAAA,SAAS,EAAEI,MAAM,CAACC;KAAvB,EACEX,4BAAA,CAACoD,SAAD;oBACa;AACXC,MAAAA,MAAM,EAAC;AACPC,MAAAA,UAAU;AACVC,MAAAA,UAAU,EAAE,KAAKxD,KAAL,CAAWyD;AACvB3E,MAAAA,KAAK,EAAER,iBAAiB,CAAC,KAAK0B,KAAL,CAAWlB,KAAZ;AACxB4E,MAAAA,GAAG,EAAE,KAAKhC;AACViC,MAAAA,OAAO,EAAE,KAAKC;AACd5B,MAAAA,MAAM,EAAE,KAAK6B;AACbtD,MAAAA,SAAS,EAAEI,MAAM,CAACjD;KATpB,CADF,EAYEuC,4BAAA,CAACF,YAAD;AACEM,MAAAA,OAAO,EAAE;AACP,QAAA,MAAI,CAACyD,UAAL;AACD;AACDvD,MAAAA,SAAS,EAAEI,MAAM,CAACU;KAJpB,CAZF,CADF;AAqBD,GA7EH;;AAAA;AAAA,EAAqC0C,SAArC;AACSvC,4BAAA,GAAyC;AAC9Cc,EAAAA,QAAQ,EAAE0B,IADoC;AAE9ChC,EAAAA,MAAM,EAAEgC;AAFsC,CAAzC;;ACjCT,IAAMC,iBAAiB,GAAG,CACxB,SADwB,EAExB,SAFwB,EAGxB,QAHwB,EAIxB,QAJwB,EAKxB,OALwB,EAMxB,MANwB,EAOxB,OAPwB,EAQxB,KARwB,EASxB,KATwB,EAUxB,GAVwB,EAWxB,IAXwB,EAYxB,IAZwB,CAA1B;;AAeA,SAASC,aAAT,CAAuBC,GAAvB;AACE,MAAIvG,IAAI,GAAyB,IAAjC;;AAGA,OAAK,IAAIwG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,iBAAiB,CAACI,MAAtC,EAA8CD,CAAC,EAA/C,EAAmD;AACjD,QAAMpG,IAAI,GAAGhB,MAAM,CAACmH,GAAD,EAAMF,iBAAiB,CAACG,CAAD,CAAvB,CAAnB;;AACA,QAAIpG,IAAI,CAACI,OAAL,EAAJ,EAAoB;AAClBR,MAAAA,IAAI,GAAGI,IAAP;AACA;AACD;AACF;;AAED,SAAOJ,IAAP;AACD;;AAED,IAAM0G,cAAc,GAAG,SAAjBA,cAAiB;AACrB,SAAOtH,MAAM,aAAa,SAAb,CAAb;AACD,CAFD;;AAIA,IAAMuH,cAAc,GAAG,SAAjBA,cAAiB,CAACxF,YAAD,EAAwBD,KAAxB;AACrB,SAAOC,YAAY,GAAGD,KAAK,CAAC/B,MAAN,CAAa,SAAb,CAAH,GAA6B+B,KAAK,CAAC/B,MAAN,CAAa,OAAb,CAAhD;AACD,CAFD;;AAIA,AAAO,IAAMyH,eAAe,GAAG,SAAlBA,eAAkB;MAC7Bf,gBAAAA;MACA1E,oBAAAA;uBACAnB;MAAAA,8BAAO;uBACPE;MAAAA,8BAAO;MACPwE,gBAAAA;;AAEA,kBAAwCmC,QAAQ,CAAS;AACvD,WAAOF,cAAc,CAACxF,YAAD,EAAeuF,cAAc,EAA7B,CAArB;AACD,GAF+C,CAAhD;AAAA,MAAOI,YAAP;AAAA,MAAqBC,eAArB;;AAIAC,EAAAA,SAAS,CAAC;AACRD,IAAAA,eAAe,CAACJ,cAAc,CAACxF,YAAD,EAAe/B,MAAM,CAAIY,IAAJ,SAAYE,IAAZ,EAAoB,SAApB,CAArB,CAAf,CAAf;AACD,GAFQ,EAEN,CAACF,IAAD,EAAOE,IAAP,EAAaiB,YAAb,CAFM,CAAT;AAIA,MAAM8F,YAAY,GAAGC,WAAW,CAAC,UAAC/C,CAAD;AAC/B4C,IAAAA,eAAe,CAAC5C,CAAC,CAACgD,aAAF,CAAgBjG,KAAjB,CAAf;AACD,GAF+B,EAE7B,EAF6B,CAAhC;AAIA,MAAMkG,WAAW,GAAGF,WAAW,CAAC,UAAC/C,CAAD;AAC9BA,IAAAA,CAAC,CAACkD,cAAF;AACAlD,IAAAA,CAAC,CAACmD,MAAF,CAASC,MAAT;AACD,GAH8B,EAG5B,EAH4B,CAA/B;;AAKA,MAAMtB,UAAU,GAAG,SAAbA,UAAa;AACjB,QAAMuB,UAAU,GAAGlB,aAAa,CAACQ,YAAD,CAAhC;AACA,QAAM5F,KAAK,GAAGsG,UAAH,WAAGA,UAAH,GAAiBd,cAAc,EAA1C;AACAK,IAAAA,eAAe,CAACJ,cAAc,CAACxF,YAAD,EAAeD,KAAf,CAAf,CAAf;AACAwD,IAAAA,QAAQ,CAAC;AAAE1E,MAAAA,IAAI,EAAEkB,KAAK,CAAC/B,MAAN,CAAa,OAAb,CAAR;AAA+Be,MAAAA,IAAI,EAAEgB,KAAK,CAAC/B,MAAN,CAAa,GAAb;AAArC,KAAD,CAAR;AACD,GALD;;AAOA,SACEkD,4BAAA,CAACoF,IAAD;AAAM9E,IAAAA,SAAS,EAAEM,GAAG,CAAC;AAAEX,MAAAA,KAAK,EAAE;AAAT,KAAD;GAApB,EACED,4BAAA,CAACoD,SAAD;kBACa;AACXiC,IAAAA,WAAW,EAAEvG,YAAY,GAAG,UAAH,GAAgB;sBACzBA,YAAY,GAAG,IAAH,GAAU;AACtCuE,IAAAA,MAAM,EAAC;AACPxE,IAAAA,KAAK,EAAE4F;AACPlB,IAAAA,UAAU,EAAEC;AACZE,IAAAA,OAAO,EAAEqB;AACThD,IAAAA,MAAM,EAAE6B;AACRvB,IAAAA,QAAQ,EAAEuC;GATZ,CADF,CADF;AAeD,CA9CM;;ACrDA,IAAMU,iBAAiB,GAAG,QAA1B;AAEP,IAAaC,WAAW,GAAG,CACzB,QADyB,EAEzB,QAFyB,EAGzB,QAHyB,EAIzB,QAJyB,EAKzB,QALyB,EAMzB,QANyB,EAOzB,QAPyB,EAQzB,QARyB,EASzB,QATyB,EAUzB,QAVyB,EAWzB,QAXyB,EAYzB,QAZyB,EAazB,QAbyB,EAczB,QAdyB,EAezB,QAfyB,EAgBzB,QAhByB,EAiBzB,QAjByB,EAkBzB,QAlByB,EAmBzB,QAnByB,EAoBzB,QApByB,EAqBzB,QArByB,EAsBzB,QAtByB,EAuBzB,QAvByB,EAwBzB,QAxByB,EAyBzB,QAzByB,EA0BzB,QA1ByB,EA2BzB,QA3ByB,EA4BzB,QA5ByB,EA6BzB,QA7ByB,EA8BzB,QA9ByB,EA+BzB,QA/ByB,EAgCzB,QAhCyB,EAiCzB,QAjCyB,EAkCzB,QAlCyB,EAmCzB,QAnCyB,EAoCzB,QApCyB,EAqCzB,QArCyB,EAsCzB,QAtCyB,EAuCzB,QAvCyB,EAwCzB,QAxCyB,CAApB;;ACQA,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB;MACjChC,gBAAAA;MACAnB,iBAAAA;wBACAxD;MAAAA,gCAAQyG;AAER,SACEtF,4BAAA,CAACyF,MAAD;kBACa;AACXpC,IAAAA,MAAM,EAAC;AACPxE,IAAAA,KAAK,EAAEA;AACP0E,IAAAA,UAAU,EAAEC;AACZnB,IAAAA,QAAQ,EAAE,kBAACP,CAAD;AACRO,MAAAA,SAAQ,CAACP,CAAC,CAACgD,aAAF,CAAgBjG,KAAjB,CAAR;AACD;GAPH,EAQG0G,WAAW,CAACG,GAAZ,CAAgB,UAACC,MAAD;AAAA,WACf3F,4BAAA,CAACyF,MAAM,CAACG,MAAR;AAAeC,MAAAA,GAAG,EAAEF;AAAQ9G,MAAAA,KAAK,EAAE8G;KAAnC,OAAA,EACMA,MADN,CADe;AAAA,GAAhB,CARH,CADF;AAgBD,CArBM;;AC6BP,IAAMjF,QAAM,GAAG;AACboF,EAAAA,IAAI,eAAElF,GAAG,CAAC;AACRK,IAAAA,OAAO,EAAE,MADD;AAER8E,IAAAA,UAAU,EAAE;AAFJ,GAAD,CADI;AAKbC,EAAAA,SAAS,eAAEpF,GAAG,CAAC;AACbqF,IAAAA,UAAU,EAAEC,MAAM,CAACC;AADN,GAAD;AALD,CAAf;;AAUA,SAASC,2BAAT,CAAqCC,QAArC,EAAyDC,IAAzD;AACE,MAAMC,UAAU,GAAGvG,MAAA,CAAa,IAAb,CAAnB;AACAA,EAAAA,SAAA,CAAgB;AACd,QAAIuG,UAAU,CAAC7E,OAAf,EAAwB;AACtB6E,MAAAA,UAAU,CAAC7E,OAAX,GAAqB,KAArB;AACA;AACD;;AACD2E,IAAAA,QAAQ;AAET,GAPD,EAOGC,IAPH;AAQD;;AAED,SAASE,mBAAT;MACEC,oBAAAA;MACAjI,gBAAAA;MACAC,oBAAAA;MACAK,oBAAAA;MACA0E,gBAAAA;MACAkD,gBAAAA;MACArE,gBAAAA;;AAUA,wBAA0BrC,QAAA,CAA2B;AAAA,WAAMyG,YAAN;AAAA,GAA3B,CAA1B;AAAA,MAAO5H,KAAP;AAAA,MAAc8H,QAAd;;AAEAP,EAAAA,2BAA2B,CAAC;AAC1B/D,IAAAA,QAAQ,CAACxD,KAAD,CAAR;AACD,GAF0B,EAExB,CAACA,KAAD,CAFwB,CAA3B;AAIA,SACEmB,aAAA,MAAA;oBAAkB;AAAcM,IAAAA,SAAS,EAAEI,QAAM,CAACoF;GAAlD,EACE9F,aAAA,CAACuB,eAAD;AACEiC,IAAAA,QAAQ,EAAEA;AACV3E,IAAAA,KAAK,EAAEA,KAAK,CAACd;AACbsE,IAAAA,QAAQ,EAAE,kBAACtE,IAAD;AACR4I,MAAAA,QAAQ,CAAC,UAAC9H,KAAD;AAAA,4BACJA,KADI;AAEPd,UAAAA,IAAI,EAAJA;AAFO;AAAA,OAAD,CAAR;AAID;GARH,CADF,EAWGS,QAAQ,IACPwB,aAAA,SAAA,MAAA,EACEA,aAAA,MAAA;AAAKM,IAAAA,SAAS,EAAEI,QAAM,CAACsF;GAAvB,CADF,EAEEhG,aAAA,CAACuE,eAAD;AACEf,IAAAA,QAAQ,EAAEA;AACV7F,IAAAA,IAAI,EAAEkB,KAAK,CAAClB;AACZE,IAAAA,IAAI,EAAEgB,KAAK,CAAChB;AACZwE,IAAAA,QAAQ,EAAE;UAAG1E,aAAAA;UAAME,aAAAA;AACjB8I,MAAAA,QAAQ,CAAC,UAAC9H,KAAD;AAAA,4BACJA,KADI;AAEPlB,UAAAA,IAAI,EAAJA,IAFO;AAGPE,UAAAA,IAAI,EAAJA;AAHO;AAAA,OAAD,CAAR;AAKD;AACDiB,IAAAA,YAAY,EAAEA;GAXhB,CAFF,CAZJ,EA6BGL,YAAY,IACXuB,aAAA,SAAA,MAAA,EACEA,aAAA,MAAA;AAAKM,IAAAA,SAAS,EAAEI,QAAM,CAACsF;GAAvB,CADF,EAEEhG,aAAA,CAACwF,mBAAD;AACEhC,IAAAA,QAAQ,EAAEA;AACV3E,IAAAA,KAAK,EAAEA,KAAK,CAACtB;AACb8E,IAAAA,QAAQ,EAAE,kBAAC9E,SAAD;AACRoJ,MAAAA,QAAQ,CAAC,UAAC9H,KAAD;AAAA,4BACJA,KADI;AAEPtB,UAAAA,SAAS,EAATA;AAFO;AAAA,OAAD,CAAR;AAID;GARH,CAFF,CA9BJ,EA4CGmJ,QAAQ,IACP1G,aAAA,SAAA,MAAA,EACEA,aAAA,MAAA;AAAKM,IAAAA,SAAS,EAAEI,QAAM,CAACsF;GAAvB,CADF,EAEEhG,aAAA,CAAC4G,QAAD;AACEC,IAAAA,EAAE,EAAC;AACHtD,IAAAA,UAAU,EAAEC;AACZH,IAAAA,MAAM,EAAC;AACPjD,IAAAA,OAAO,EAAE;AACPuG,MAAAA,QAAQ,CAAC;AACP5I,QAAAA,IAAI,EAAEyE,SADC;AAEP7E,QAAAA,IAAI,EAAE6E,SAFC;AAGP3E,QAAAA,IAAI,EAAEa,cAAc,EAHb;AAIPnB,QAAAA,SAAS,EAAEoB,mBAAmB;AAJvB,OAAD,CAAR;AAMD;GAXH,SAAA,CAFF,CA7CJ,CADF;AAkED;;AAED,SAAgBmI,WAAW/G;;;AACzB,MAAQ0C,KAAR,GAA8B1C,KAA9B,CAAQ0C,KAAR;AAAA,MAAesE,UAAf,GAA8BhH,KAA9B,CAAegH,UAAf;AAEA,MAAMC,WAAW,4BAAGD,UAAH,4CAAGA,UAAU,CAAEE,QAAf,qBAAG,qBAAsBnK,MAAzB,oCAAmC,OAApD;AACA,MAAMoK,SAAS,6BAAGH,UAAH,6CAAGA,UAAU,CAAEE,QAAf,qBAAG,sBAAsBpJ,IAAzB,qCAAiC,IAAhD;AAEA,MAAMW,QAAQ,GAAGwI,WAAW,KAAK,UAAjC;AACA,MAAMvI,YAAY,GAAGuI,WAAW,KAAK,OAArC;AACA,MAAMlI,YAAY,GAAGoI,SAAS,KAAK,IAAnC;AAEA,SACElH,aAAA,CAACmH,cAAD;AACE1E,IAAAA,KAAK,EAAEA;AACP2E,IAAAA,mBAAmB,EAAErH,KAAK,CAACqH;AAC3BC,IAAAA,QAAQ,EAAE;GAHZ,EAIG;QAAGxI,cAAAA;QAAO2E,iBAAAA;QAAUmD,iBAAAA;QAAUW,sBAAAA;AAC7B,QAAMC,aAAa,GAAG3I,qBAAqB,CAAC;AAC1CC,MAAAA,KAAK,EAALA,KAD0C;AAE1CC,MAAAA,YAAY,EAAZA;AAF0C,KAAD,CAA3C;AAIA,WACEkB,aAAA,CAACwG,mBAAD;AACEC,MAAAA,YAAY,EAAEc;AACdzI,MAAAA,YAAY,EAAEA;AACdL,MAAAA,YAAY,EAAEA;AACdD,MAAAA,QAAQ,EAAEA;AACVgF,MAAAA,QAAQ,EAAEA;AACVkD,MAAAA,QAAQ,EAAEc,OAAO,CAAC3I,KAAD;AACjBwD,MAAAA,QAAQ,EAAE,kBAAC9D,IAAD;AACR,YAAMkJ,UAAU,GAAGnJ,eAAe,CAAC;AAAEC,UAAAA,IAAI,EAAJA,IAAF;AAAQC,UAAAA,QAAQ,EAARA,QAAR;AAAkBC,UAAAA,YAAY,EAAZA;AAAlB,SAAD,CAAlC;;AACA,YAAIgJ,UAAU,CAACrJ,OAAf,EAAwB;AACtB;AACD;AAED;;;AACA,YAAIoJ,OAAO,CAAC3I,KAAD,CAAP,IAAmB,CAACA,KAAD,IAAU2I,OAAO,CAACC,UAAU,CAACzJ,KAAZ,CAAxC,EAA6D;AAC3D2I,UAAAA,QAAQ,CAACc,UAAU,CAACzJ,KAAZ,CAAR;AACD;AACF;AACD6H,MAAAA,GAAG,sBAAoByB;KAlBzB,CADF;AAsBD,GA/BH,CADF;AAmCD;AAEDR,UAAU,CAACY,YAAX,GAA0B;AACxBN,EAAAA,mBAAmB,EAAE;AADG,CAA1B;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contentful/field-editor-date",
3
- "version": "1.1.6",
3
+ "version": "1.1.7",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/field-editor-date.esm.js",
6
6
  "typings": "dist/index.d.ts",
@@ -25,7 +25,7 @@
25
25
  "dependencies": {
26
26
  "@contentful/f36-components": "^4.9.0",
27
27
  "@contentful/f36-tokens": "^4.0.0",
28
- "@contentful/field-editor-shared": "^1.1.2",
28
+ "@contentful/field-editor-shared": "^1.1.3",
29
29
  "emotion": "^10.0.17",
30
30
  "lodash": "^4.17.15",
31
31
  "lodash-es": "^4.17.15",
@@ -34,7 +34,7 @@
34
34
  },
35
35
  "devDependencies": {
36
36
  "@babel/core": "^7.7.4",
37
- "@contentful/field-editor-test-utils": "^1.1.2",
37
+ "@contentful/field-editor-test-utils": "^1.1.3",
38
38
  "@types/pikaday": "^1.7.4"
39
39
  },
40
40
  "peerDependencies": {
@@ -50,5 +50,5 @@
50
50
  }
51
51
  }
52
52
  },
53
- "gitHead": "e14bb5cdd54790144e864b203ce92dbbcaff16a9"
53
+ "gitHead": "1d89ccc17095a0d9deffe66b1992d14e248fdaf6"
54
54
  }