@beinformed/ui 1.59.4 → 1.59.6

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
@@ -2,6 +2,20 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [1.59.6](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.59.5...v1.59.6) (2024-12-11)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **datetime:** improve date input format for timestamps ([d250b03](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/d250b03cffefd59ba9a45c0708e1f44f7c343031))
11
+
12
+ ## [1.59.5](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.59.4...v1.59.5) (2024-12-11)
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * **datetime:** skip offsets and timezone for date and time utility ([5f4a8a8](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/5f4a8a89c0b0be264ef6f435b7d4f8616690dd23))
18
+
5
19
  ## [1.59.4](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.59.3...v1.59.4) (2024-12-11)
6
20
 
7
21
 
@@ -215,17 +215,24 @@ class DatetimeAttributeModel extends StringAttributeModel {
215
215
  if (this._dateInputFormat) {
216
216
  return this._dateInputFormat;
217
217
  }
218
-
219
- // remove time and offset tokens
220
- const charsToRemove = "HhaKmsSzXxO:";
218
+ const dateEraChars = "yMLdQDEewGu";
219
+ const timeOffsetChars = "HhaKmsSZzXxO";
220
+ const format = this.format;
221
221
  let inputFormat = "";
222
222
  let isInQuotes = false;
223
- for (let i = 0; i < this.format.length; i++) {
224
- const char = this.format[i];
223
+ let isInDate = false;
224
+ for (let i = 0; i < format.length; i++) {
225
+ const char = format[i];
225
226
  if (char === "'") {
226
- isInQuotes = !isInQuotes;
227
+ const prevChar = i > 0 ? format[i - 1] : "";
228
+ const nextChar = format[i + 1];
229
+ isInQuotes = prevChar === "'" || nextChar === "'" ? true : !isInQuotes;
230
+ } else if (!isInQuotes && _includesInstanceProperty(dateEraChars).call(dateEraChars, char)) {
231
+ isInDate = true;
232
+ } else if (!isInQuotes && _includesInstanceProperty(timeOffsetChars).call(timeOffsetChars, char)) {
233
+ isInDate = false;
227
234
  }
228
- if (isInQuotes || !_includesInstanceProperty(charsToRemove).call(charsToRemove, char)) {
235
+ if (isInDate) {
229
236
  inputFormat += char;
230
237
  }
231
238
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DatetimeAttributeModel.js","names":["has","DateUtil","DateTimeUtil","TimeUtil","TimestampUtil","StringAttributeModel","ConstraintCollection","DateTimeDateFormatConstraint","DateTimeTimeFormatConstraint","DatetimeFormatConstraint","DateBoundaryConstraint","isIncludeTimeOffsetInDateTimes","ATTRIBUTE_WIDTH","DATETIME_OFFSET_FORMAT","ISO_DATE_FORMAT","DatetimeAttributeModel","constructor","attribute","attributeContributions","modelOptions","_defineProperty","updateInitValue","isApplicableModel","contributions","_context","_includesInstanceProperty","call","type","formatUtil","getInitValue","value","data","length","toFormat","getIsoFormat","toISO","hasTime","getTimeValue","_context2","_context3","_context4","_context5","timeValue","timeInputFormat","toLowerCase","setHour","setMinute","setSecond","setMilliseconds","oldOffset","newOffset","replace","_initvalue","_inputvalue","getInitialInputValue","_value","initValue","inputFormat","getContribution","getInputValue","toString","inputvalue","validate","format","convertFormat","hasDate","formatLabel","dateInputFormat","inputFormatWithoutOffset","_context6","_trimInstanceProperty","_dateInputFormat","charsToRemove","isInQuotes","i","char","dateReadonlyFormat","_context7","placeholder","_placeholder","split","_timeInputFormat","timeFormatParts","push","timeFormat","join","timeReadonlyFormat","dateInputValue","timeInputValue","formatValue","hasFormat","readonlyvalue","isAmbiguous","offset","getOffset","mindate","maxdate","addServerError","error","id","message","properties","layouthint","_errorCollection","getFormatConstraint","addConstraints","constraints","add","readonlyWidth","SMALL","MEDIUM","updateByAttribute","otherAttribute","reset","otherValue","inputValue","update","console"],"sources":["../../../src/models/attributes/DatetimeAttributeModel.js"],"sourcesContent":["// @flow\nimport { has } from \"../../utils/helpers/objects\";\n\nimport {\n DateUtil,\n DateTimeUtil,\n TimeUtil,\n TimestampUtil,\n} from \"../../utils/datetime/DateTimeUtil\";\n\nimport StringAttributeModel from \"./StringAttributeModel\";\n\nimport ConstraintCollection from \"./input-constraints/ConstraintCollection\";\nimport DateTimeDateFormatConstraint from \"./input-constraints/DateTimeDateFormatConstraint\";\nimport DateTimeTimeFormatConstraint from \"./input-constraints/DateTimeTimeFormatConstraint\";\nimport DatetimeFormatConstraint from \"./input-constraints/DatetimeFormatConstraint\";\nimport DateBoundaryConstraint from \"./input-constraints/DateBoundaryConstraint\";\n\nimport {\n isIncludeTimeOffsetInDateTimes,\n ATTRIBUTE_WIDTH,\n DATETIME_OFFSET_FORMAT,\n ISO_DATE_FORMAT,\n} from \"../../constants\";\n\nimport type {\n FormErrorAnchor,\n IConstraintModel,\n AttributeType,\n ModelOptions,\n} from \"../types\";\nimport type { OffsetInfo } from \"../../utils/datetime/DateTimeUtil\";\n\n/**\n */\nclass DatetimeAttributeModel extends StringAttributeModel {\n _dateInputFormat: ?string;\n _timeInputFormat: ?string;\n\n /**\n */\n constructor(\n attribute: Object,\n attributeContributions: Object,\n modelOptions?: ModelOptions,\n ) {\n super(attribute, attributeContributions, modelOptions);\n\n this.updateInitValue();\n }\n\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n return [\"date\", \"time\", \"datetime\", \"timestamp\"].includes(\n contributions.type,\n );\n }\n\n /**\n */\n get formatUtil():\n | typeof TimeUtil\n | typeof TimestampUtil\n | typeof DateTimeUtil\n | typeof DateUtil {\n switch (this.type) {\n case \"time\":\n return TimeUtil;\n case \"timestamp\":\n return TimestampUtil;\n case \"datetime\":\n return DateTimeUtil;\n default:\n return DateUtil;\n }\n }\n\n /**\n */\n getInitValue(): string | null {\n let value = this.data.value;\n if (value != null) {\n if (this.type === \"time\" && value.length === 5) {\n value = `${value}:00`;\n }\n\n // handle old datetime values, which contained ms\n if (this.type === \"datetime\" && value.includes(\".\")) {\n value = TimestampUtil.toFormat(value, DateTimeUtil.getIsoFormat());\n } else {\n value = this.formatUtil.toISO(value);\n }\n\n if (this.hasTime) {\n value = this.getTimeValue(value);\n }\n }\n\n return value;\n }\n\n /**\n */\n getTimeValue(value: string): string {\n let timeValue = value;\n if (!this.timeInputFormat.toLowerCase().includes(\"h\")) {\n timeValue = this.formatUtil.setHour(value, 0);\n }\n if (!this.timeInputFormat.includes(\"m\")) {\n timeValue = this.formatUtil.setMinute(value, 0);\n }\n if (!this.timeInputFormat.includes(\"s\")) {\n timeValue = this.formatUtil.setSecond(value, 0);\n }\n if (this.type === \"timestamp\" && !this.timeInputFormat.includes(\"S\")) {\n timeValue = this.formatUtil.setMilliseconds(value, 0);\n }\n\n if (isIncludeTimeOffsetInDateTimes()) {\n // https://github.com/date-fns/date-fns/issues/3579\n const oldOffset = this.formatUtil.toFormat(value, DATETIME_OFFSET_FORMAT);\n const newOffset = this.formatUtil.toFormat(\n timeValue,\n DATETIME_OFFSET_FORMAT,\n );\n timeValue = timeValue.replace(newOffset, oldOffset);\n }\n\n return timeValue;\n }\n\n /**\n * Set time in the correct value based on available elements in the time format\n */\n updateInitValue() {\n const value = this.getInitValue();\n if (value != null) {\n this._initvalue = value;\n this._inputvalue = this.getInitialInputValue(value);\n this._value = value;\n }\n }\n\n /**\n * Get initial user input value\n */\n getInitialInputValue(value?: string): string {\n if (!value) {\n return \"\";\n }\n\n let initValue = value;\n if (this.type === \"time\" && value.length === 5) {\n initValue = `${value}:00`;\n }\n\n return this.formatUtil.toFormat(initValue, this.inputFormat);\n }\n\n /**\n * Set type to date\n */\n get type(): string {\n return this.getContribution(\"type\", \"date\");\n }\n\n /**\n * Returns the value as entered by the user. This can differ from the internal iso value that is stored\n */\n getInputValue(): string {\n return this._inputvalue ? this._inputvalue.toString() : \"\";\n }\n\n /**\n * Get input value\n */\n get inputvalue(): string {\n return this.getInputValue();\n }\n\n /**\n * Sets the input value to the value entered by the user\n */\n set inputvalue(value: string) {\n this.validate(value);\n\n this._inputvalue = value;\n\n this.value =\n value !== null && value !== \"\"\n ? this.formatUtil.toISO(value, this.inputFormat)\n : null;\n }\n\n /**\n * Get date format\n */\n get format(): string {\n const format = this.getContribution(\"format\", \"\");\n return this.formatUtil.convertFormat(format);\n }\n\n /**\n */\n get hasDate(): boolean {\n return (\n this.type === \"date\" ||\n this.type === \"datetime\" ||\n this.type === \"timestamp\"\n );\n }\n\n /**\n */\n get hasTime(): boolean {\n return (\n this.type === \"time\" ||\n this.type === \"datetime\" ||\n this.type === \"timestamp\"\n );\n }\n\n /**\n */\n get formatLabel(): string {\n switch (this.type) {\n case \"date\":\n return this.dateInputFormat.toLowerCase();\n case \"time\":\n return this.timeInputFormat.toLowerCase();\n default:\n return this.format.toLowerCase();\n }\n }\n\n /**\n */\n get inputFormatWithoutOffset(): string {\n if (this.hasDate && this.hasTime) {\n return `${this.dateInputFormat} ${this.timeInputFormat}`.trim();\n }\n\n if (this.hasDate) {\n return this.dateInputFormat;\n }\n\n if (this.hasTime) {\n return this.timeInputFormat;\n }\n\n return \"\";\n }\n\n /**\n */\n get inputFormat(): string {\n if (\n isIncludeTimeOffsetInDateTimes() &&\n this.dateInputFormat !== \"\" &&\n this.timeInputFormat !== \"\"\n ) {\n return `${this.inputFormatWithoutOffset} ${DATETIME_OFFSET_FORMAT}`;\n }\n return this.inputFormatWithoutOffset;\n }\n\n /**\n */\n get dateInputFormat(): string {\n if (!this.hasDate) {\n return \"\";\n }\n\n if (this._dateInputFormat) {\n return this._dateInputFormat;\n }\n\n // remove time and offset tokens\n const charsToRemove = \"HhaKmsSzXxO:\";\n\n let inputFormat = \"\";\n let isInQuotes = false;\n for (let i = 0; i < this.format.length; i++) {\n const char = this.format[i];\n if (char === \"'\") {\n isInQuotes = !isInQuotes;\n }\n if (isInQuotes || !charsToRemove.includes(char)) {\n inputFormat += char;\n }\n }\n\n this._dateInputFormat = inputFormat.trim();\n return this._dateInputFormat;\n }\n\n /**\n */\n get dateReadonlyFormat(): string {\n if (!this.hasDate) {\n return \"\";\n }\n\n return this.hasTime\n ? this.format.replace(this.timeInputFormat, \"\").trim()\n : this.format;\n }\n\n /**\n * return attribute placeholder or return formatlabel without time input format from contributions\n */\n get placeholder(): string {\n if (this._placeholder !== \"\") {\n return this._placeholder;\n }\n\n const formatLabel = this.getContribution(\"formatlabel\", \"\");\n\n if (this.hasDate && this.hasTime && formatLabel.includes(\" \")) {\n // return first part of formatlabel to keep placeholder matching date input\n return formatLabel.split(\" \")[0];\n }\n\n return formatLabel;\n }\n\n /**\n * Set placeholder text\n */\n set placeholder(placeholder: string) {\n this._placeholder = placeholder;\n }\n\n /**\n */\n get timeInputFormat(): string {\n if (!this.hasTime) {\n return \"\";\n }\n\n if (this._timeInputFormat) {\n return this._timeInputFormat;\n }\n\n const format = this.format;\n\n let timeFormatParts = [];\n if (format.includes(\"H\")) {\n timeFormatParts.push(\"HH\");\n } else if (format.includes(\"h\")) {\n timeFormatParts.push(\"hh\");\n }\n if (format.includes(\"m\")) {\n timeFormatParts.push(\"mm\");\n }\n if (format.includes(\"s\")) {\n timeFormatParts.push(\"ss\");\n }\n\n let timeFormat = timeFormatParts.join(\":\");\n if (format.includes(\"S\")) {\n timeFormat = `${timeFormat}.SSS`;\n }\n if (format.includes(\"a\")) {\n timeFormat = `${timeFormat} a`;\n }\n\n this._timeInputFormat = timeFormat;\n return this._timeInputFormat;\n }\n\n /**\n */\n get timeReadonlyFormat(): string {\n if (!this.hasTime) {\n return \"\";\n }\n\n return this.timeInputFormat;\n }\n\n /**\n */\n get dateInputValue(): string {\n return typeof this.value === \"string\" && this.dateInputFormat !== \"\"\n ? this.formatUtil.toFormat(this.value, this.dateInputFormat)\n : \"\";\n }\n\n /**\n */\n get timeInputValue(): string {\n return typeof this.value === \"string\" && this.timeInputFormat !== \"\"\n ? this.formatUtil.toFormat(this.value, this.timeInputFormat)\n : \"\";\n }\n\n /**\n * format value in readonly rendering\n */\n formatValue(value: ?string): string {\n if (value == null || value.toString() === \"\") {\n return \"\";\n }\n\n // when the value is exactly an iso date, render as date\n if (\n (this.type === \"datetime\" || this.type === \"timestamp\") &&\n DateUtil.hasFormat(value, ISO_DATE_FORMAT)\n ) {\n return DateUtil.toFormat(value, this.dateReadonlyFormat);\n }\n\n return this.formatUtil.toFormat(value, this.format);\n }\n\n /**\n * Retrieve readonly value, the date in the configurated format\n */\n get readonlyvalue(): string {\n if (typeof this.value === \"string\") {\n return this.formatValue(this.value.toString());\n }\n\n return \"\";\n }\n\n /**\n */\n get isAmbiguous(): boolean {\n if (typeof this.value === \"string\") {\n return this.formatUtil.isAmbiguous(this.value);\n }\n return false;\n }\n\n /**\n */\n get offset(): OffsetInfo | null {\n if (typeof this.value === \"string\") {\n return this.formatUtil.getOffset(this.value);\n }\n return null;\n }\n\n /**\n * Get minimum date\n */\n get mindate(): string | null {\n return this.getContribution(\"mindate\");\n }\n\n /**\n * Get maximum date\n */\n get maxdate(): string | null {\n return this.getContribution(\"maxdate\");\n }\n\n /**\n * Registers an error that was received from a server response\n */\n addServerError(error: FormErrorAnchor) {\n const { id, message, properties, layouthint } = error;\n if (properties && has(properties, \"format\") && this.formatLabel) {\n properties.format = this.formatLabel;\n }\n\n this._errorCollection.addServerError(id, message, properties, layouthint);\n }\n\n /**\n */\n getFormatConstraint(): IConstraintModel {\n switch (this.type) {\n case \"date\":\n return new DateTimeDateFormatConstraint(\n this.dateInputFormat,\n this.formatLabel,\n );\n case \"time\":\n return new DateTimeTimeFormatConstraint(\n this.timeInputFormat,\n this.formatLabel,\n );\n default:\n return new DatetimeFormatConstraint(\n this.type,\n this.inputFormat,\n this.formatLabel,\n );\n }\n }\n\n /**\n * Add Date constraints for attribute\n */\n addConstraints(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n constraints.add(this.getFormatConstraint());\n\n if (this.mindate || this.maxdate) {\n constraints.add(\n new DateBoundaryConstraint(\n this.type,\n this.mindate,\n this.maxdate,\n this.inputFormat,\n ),\n );\n }\n\n return constraints;\n }\n\n /**\n */\n get readonlyWidth(): $Keys<typeof ATTRIBUTE_WIDTH> {\n if (this.type === \"date\" || this.type === \"time\") {\n return ATTRIBUTE_WIDTH.SMALL;\n }\n\n return ATTRIBUTE_WIDTH.MEDIUM;\n }\n\n /**\n */\n updateByAttribute(otherAttribute: AttributeType): void {\n this.reset();\n if (otherAttribute instanceof DatetimeAttributeModel) {\n const otherValue = otherAttribute.value;\n if (otherValue != null) {\n const inputValue = this.formatUtil.toFormat(\n otherValue,\n this.inputFormat,\n );\n this.update(inputValue);\n }\n } else {\n console.error(\n `update of datetime attribute with ${otherAttribute.type} not supported`,\n );\n }\n }\n}\n\nexport default DatetimeAttributeModel;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"DatetimeAttributeModel.js","names":["has","DateUtil","DateTimeUtil","TimeUtil","TimestampUtil","StringAttributeModel","ConstraintCollection","DateTimeDateFormatConstraint","DateTimeTimeFormatConstraint","DatetimeFormatConstraint","DateBoundaryConstraint","isIncludeTimeOffsetInDateTimes","ATTRIBUTE_WIDTH","DATETIME_OFFSET_FORMAT","ISO_DATE_FORMAT","DatetimeAttributeModel","constructor","attribute","attributeContributions","modelOptions","_defineProperty","updateInitValue","isApplicableModel","contributions","_context","_includesInstanceProperty","call","type","formatUtil","getInitValue","value","data","length","toFormat","getIsoFormat","toISO","hasTime","getTimeValue","_context2","_context3","_context4","_context5","timeValue","timeInputFormat","toLowerCase","setHour","setMinute","setSecond","setMilliseconds","oldOffset","newOffset","replace","_initvalue","_inputvalue","getInitialInputValue","_value","initValue","inputFormat","getContribution","getInputValue","toString","inputvalue","validate","format","convertFormat","hasDate","formatLabel","dateInputFormat","inputFormatWithoutOffset","_context6","_trimInstanceProperty","_dateInputFormat","dateEraChars","timeOffsetChars","isInQuotes","isInDate","i","char","prevChar","nextChar","dateReadonlyFormat","_context7","placeholder","_placeholder","split","_timeInputFormat","timeFormatParts","push","timeFormat","join","timeReadonlyFormat","dateInputValue","timeInputValue","formatValue","hasFormat","readonlyvalue","isAmbiguous","offset","getOffset","mindate","maxdate","addServerError","error","id","message","properties","layouthint","_errorCollection","getFormatConstraint","addConstraints","constraints","add","readonlyWidth","SMALL","MEDIUM","updateByAttribute","otherAttribute","reset","otherValue","inputValue","update","console"],"sources":["../../../src/models/attributes/DatetimeAttributeModel.js"],"sourcesContent":["// @flow\nimport { has } from \"../../utils/helpers/objects\";\n\nimport {\n DateUtil,\n DateTimeUtil,\n TimeUtil,\n TimestampUtil,\n} from \"../../utils/datetime/DateTimeUtil\";\n\nimport StringAttributeModel from \"./StringAttributeModel\";\n\nimport ConstraintCollection from \"./input-constraints/ConstraintCollection\";\nimport DateTimeDateFormatConstraint from \"./input-constraints/DateTimeDateFormatConstraint\";\nimport DateTimeTimeFormatConstraint from \"./input-constraints/DateTimeTimeFormatConstraint\";\nimport DatetimeFormatConstraint from \"./input-constraints/DatetimeFormatConstraint\";\nimport DateBoundaryConstraint from \"./input-constraints/DateBoundaryConstraint\";\n\nimport {\n isIncludeTimeOffsetInDateTimes,\n ATTRIBUTE_WIDTH,\n DATETIME_OFFSET_FORMAT,\n ISO_DATE_FORMAT,\n} from \"../../constants\";\n\nimport type {\n FormErrorAnchor,\n IConstraintModel,\n AttributeType,\n ModelOptions,\n} from \"../types\";\nimport type { OffsetInfo } from \"../../utils/datetime/DateTimeUtil\";\n\n/**\n */\nclass DatetimeAttributeModel extends StringAttributeModel {\n _dateInputFormat: ?string;\n _timeInputFormat: ?string;\n\n /**\n */\n constructor(\n attribute: Object,\n attributeContributions: Object,\n modelOptions?: ModelOptions,\n ) {\n super(attribute, attributeContributions, modelOptions);\n\n this.updateInitValue();\n }\n\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n return [\"date\", \"time\", \"datetime\", \"timestamp\"].includes(\n contributions.type,\n );\n }\n\n /**\n */\n get formatUtil():\n | typeof TimeUtil\n | typeof TimestampUtil\n | typeof DateTimeUtil\n | typeof DateUtil {\n switch (this.type) {\n case \"time\":\n return TimeUtil;\n case \"timestamp\":\n return TimestampUtil;\n case \"datetime\":\n return DateTimeUtil;\n default:\n return DateUtil;\n }\n }\n\n /**\n */\n getInitValue(): string | null {\n let value = this.data.value;\n if (value != null) {\n if (this.type === \"time\" && value.length === 5) {\n value = `${value}:00`;\n }\n\n // handle old datetime values, which contained ms\n if (this.type === \"datetime\" && value.includes(\".\")) {\n value = TimestampUtil.toFormat(value, DateTimeUtil.getIsoFormat());\n } else {\n value = this.formatUtil.toISO(value);\n }\n\n if (this.hasTime) {\n value = this.getTimeValue(value);\n }\n }\n\n return value;\n }\n\n /**\n */\n getTimeValue(value: string): string {\n let timeValue = value;\n if (!this.timeInputFormat.toLowerCase().includes(\"h\")) {\n timeValue = this.formatUtil.setHour(value, 0);\n }\n if (!this.timeInputFormat.includes(\"m\")) {\n timeValue = this.formatUtil.setMinute(value, 0);\n }\n if (!this.timeInputFormat.includes(\"s\")) {\n timeValue = this.formatUtil.setSecond(value, 0);\n }\n if (this.type === \"timestamp\" && !this.timeInputFormat.includes(\"S\")) {\n timeValue = this.formatUtil.setMilliseconds(value, 0);\n }\n\n if (isIncludeTimeOffsetInDateTimes()) {\n // https://github.com/date-fns/date-fns/issues/3579\n const oldOffset = this.formatUtil.toFormat(value, DATETIME_OFFSET_FORMAT);\n const newOffset = this.formatUtil.toFormat(\n timeValue,\n DATETIME_OFFSET_FORMAT,\n );\n timeValue = timeValue.replace(newOffset, oldOffset);\n }\n\n return timeValue;\n }\n\n /**\n * Set time in the correct value based on available elements in the time format\n */\n updateInitValue() {\n const value = this.getInitValue();\n if (value != null) {\n this._initvalue = value;\n this._inputvalue = this.getInitialInputValue(value);\n this._value = value;\n }\n }\n\n /**\n * Get initial user input value\n */\n getInitialInputValue(value?: string): string {\n if (!value) {\n return \"\";\n }\n\n let initValue = value;\n if (this.type === \"time\" && value.length === 5) {\n initValue = `${value}:00`;\n }\n\n return this.formatUtil.toFormat(initValue, this.inputFormat);\n }\n\n /**\n * Set type to date\n */\n get type(): string {\n return this.getContribution(\"type\", \"date\");\n }\n\n /**\n * Returns the value as entered by the user. This can differ from the internal iso value that is stored\n */\n getInputValue(): string {\n return this._inputvalue ? this._inputvalue.toString() : \"\";\n }\n\n /**\n * Get input value\n */\n get inputvalue(): string {\n return this.getInputValue();\n }\n\n /**\n * Sets the input value to the value entered by the user\n */\n set inputvalue(value: string) {\n this.validate(value);\n\n this._inputvalue = value;\n\n this.value =\n value !== null && value !== \"\"\n ? this.formatUtil.toISO(value, this.inputFormat)\n : null;\n }\n\n /**\n * Get date format\n */\n get format(): string {\n const format = this.getContribution(\"format\", \"\");\n return this.formatUtil.convertFormat(format);\n }\n\n /**\n */\n get hasDate(): boolean {\n return (\n this.type === \"date\" ||\n this.type === \"datetime\" ||\n this.type === \"timestamp\"\n );\n }\n\n /**\n */\n get hasTime(): boolean {\n return (\n this.type === \"time\" ||\n this.type === \"datetime\" ||\n this.type === \"timestamp\"\n );\n }\n\n /**\n */\n get formatLabel(): string {\n switch (this.type) {\n case \"date\":\n return this.dateInputFormat.toLowerCase();\n case \"time\":\n return this.timeInputFormat.toLowerCase();\n default:\n return this.format.toLowerCase();\n }\n }\n\n /**\n */\n get inputFormatWithoutOffset(): string {\n if (this.hasDate && this.hasTime) {\n return `${this.dateInputFormat} ${this.timeInputFormat}`.trim();\n }\n\n if (this.hasDate) {\n return this.dateInputFormat;\n }\n\n if (this.hasTime) {\n return this.timeInputFormat;\n }\n\n return \"\";\n }\n\n /**\n */\n get inputFormat(): string {\n if (\n isIncludeTimeOffsetInDateTimes() &&\n this.dateInputFormat !== \"\" &&\n this.timeInputFormat !== \"\"\n ) {\n return `${this.inputFormatWithoutOffset} ${DATETIME_OFFSET_FORMAT}`;\n }\n return this.inputFormatWithoutOffset;\n }\n\n /**\n */\n get dateInputFormat(): string {\n if (!this.hasDate) {\n return \"\";\n }\n\n if (this._dateInputFormat) {\n return this._dateInputFormat;\n }\n\n const dateEraChars = \"yMLdQDEewGu\";\n const timeOffsetChars = \"HhaKmsSZzXxO\";\n\n const format = this.format;\n let inputFormat = \"\";\n\n let isInQuotes = false;\n let isInDate = false;\n\n for (let i = 0; i < format.length; i++) {\n const char = format[i];\n if (char === \"'\") {\n const prevChar = i > 0 ? format[i - 1] : \"\";\n const nextChar = format[i + 1];\n isInQuotes = prevChar === \"'\" || nextChar === \"'\" ? true : !isInQuotes;\n } else if (!isInQuotes && dateEraChars.includes(char)) {\n isInDate = true;\n } else if (!isInQuotes && timeOffsetChars.includes(char)) {\n isInDate = false;\n }\n\n if (isInDate) {\n inputFormat += char;\n }\n }\n\n this._dateInputFormat = inputFormat.trim();\n return this._dateInputFormat;\n }\n\n /**\n */\n get dateReadonlyFormat(): string {\n if (!this.hasDate) {\n return \"\";\n }\n\n return this.hasTime\n ? this.format.replace(this.timeInputFormat, \"\").trim()\n : this.format;\n }\n\n /**\n * return attribute placeholder or return formatlabel without time input format from contributions\n */\n get placeholder(): string {\n if (this._placeholder !== \"\") {\n return this._placeholder;\n }\n\n const formatLabel = this.getContribution(\"formatlabel\", \"\");\n\n if (this.hasDate && this.hasTime && formatLabel.includes(\" \")) {\n // return first part of formatlabel to keep placeholder matching date input\n return formatLabel.split(\" \")[0];\n }\n\n return formatLabel;\n }\n\n /**\n * Set placeholder text\n */\n set placeholder(placeholder: string) {\n this._placeholder = placeholder;\n }\n\n /**\n */\n get timeInputFormat(): string {\n if (!this.hasTime) {\n return \"\";\n }\n\n if (this._timeInputFormat) {\n return this._timeInputFormat;\n }\n\n const format = this.format;\n\n let timeFormatParts = [];\n if (format.includes(\"H\")) {\n timeFormatParts.push(\"HH\");\n } else if (format.includes(\"h\")) {\n timeFormatParts.push(\"hh\");\n }\n if (format.includes(\"m\")) {\n timeFormatParts.push(\"mm\");\n }\n if (format.includes(\"s\")) {\n timeFormatParts.push(\"ss\");\n }\n\n let timeFormat = timeFormatParts.join(\":\");\n if (format.includes(\"S\")) {\n timeFormat = `${timeFormat}.SSS`;\n }\n if (format.includes(\"a\")) {\n timeFormat = `${timeFormat} a`;\n }\n\n this._timeInputFormat = timeFormat;\n return this._timeInputFormat;\n }\n\n /**\n */\n get timeReadonlyFormat(): string {\n if (!this.hasTime) {\n return \"\";\n }\n\n return this.timeInputFormat;\n }\n\n /**\n */\n get dateInputValue(): string {\n return typeof this.value === \"string\" && this.dateInputFormat !== \"\"\n ? this.formatUtil.toFormat(this.value, this.dateInputFormat)\n : \"\";\n }\n\n /**\n */\n get timeInputValue(): string {\n return typeof this.value === \"string\" && this.timeInputFormat !== \"\"\n ? this.formatUtil.toFormat(this.value, this.timeInputFormat)\n : \"\";\n }\n\n /**\n * format value in readonly rendering\n */\n formatValue(value: ?string): string {\n if (value == null || value.toString() === \"\") {\n return \"\";\n }\n\n // when the value is exactly an iso date, render as date\n if (\n (this.type === \"datetime\" || this.type === \"timestamp\") &&\n DateUtil.hasFormat(value, ISO_DATE_FORMAT)\n ) {\n return DateUtil.toFormat(value, this.dateReadonlyFormat);\n }\n\n return this.formatUtil.toFormat(value, this.format);\n }\n\n /**\n * Retrieve readonly value, the date in the configurated format\n */\n get readonlyvalue(): string {\n if (typeof this.value === \"string\") {\n return this.formatValue(this.value.toString());\n }\n\n return \"\";\n }\n\n /**\n */\n get isAmbiguous(): boolean {\n if (typeof this.value === \"string\") {\n return this.formatUtil.isAmbiguous(this.value);\n }\n return false;\n }\n\n /**\n */\n get offset(): OffsetInfo | null {\n if (typeof this.value === \"string\") {\n return this.formatUtil.getOffset(this.value);\n }\n return null;\n }\n\n /**\n * Get minimum date\n */\n get mindate(): string | null {\n return this.getContribution(\"mindate\");\n }\n\n /**\n * Get maximum date\n */\n get maxdate(): string | null {\n return this.getContribution(\"maxdate\");\n }\n\n /**\n * Registers an error that was received from a server response\n */\n addServerError(error: FormErrorAnchor) {\n const { id, message, properties, layouthint } = error;\n if (properties && has(properties, \"format\") && this.formatLabel) {\n properties.format = this.formatLabel;\n }\n\n this._errorCollection.addServerError(id, message, properties, layouthint);\n }\n\n /**\n */\n getFormatConstraint(): IConstraintModel {\n switch (this.type) {\n case \"date\":\n return new DateTimeDateFormatConstraint(\n this.dateInputFormat,\n this.formatLabel,\n );\n case \"time\":\n return new DateTimeTimeFormatConstraint(\n this.timeInputFormat,\n this.formatLabel,\n );\n default:\n return new DatetimeFormatConstraint(\n this.type,\n this.inputFormat,\n this.formatLabel,\n );\n }\n }\n\n /**\n * Add Date constraints for attribute\n */\n addConstraints(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n constraints.add(this.getFormatConstraint());\n\n if (this.mindate || this.maxdate) {\n constraints.add(\n new DateBoundaryConstraint(\n this.type,\n this.mindate,\n this.maxdate,\n this.inputFormat,\n ),\n );\n }\n\n return constraints;\n }\n\n /**\n */\n get readonlyWidth(): $Keys<typeof ATTRIBUTE_WIDTH> {\n if (this.type === \"date\" || this.type === \"time\") {\n return ATTRIBUTE_WIDTH.SMALL;\n }\n\n return ATTRIBUTE_WIDTH.MEDIUM;\n }\n\n /**\n */\n updateByAttribute(otherAttribute: AttributeType): void {\n this.reset();\n if (otherAttribute instanceof DatetimeAttributeModel) {\n const otherValue = otherAttribute.value;\n if (otherValue != null) {\n const inputValue = this.formatUtil.toFormat(\n otherValue,\n this.inputFormat,\n );\n this.update(inputValue);\n }\n } else {\n console.error(\n `update of datetime attribute with ${otherAttribute.type} not supported`,\n );\n }\n }\n}\n\nexport default DatetimeAttributeModel;\n"],"mappings":";;;AACA,SAASA,GAAG,QAAQ,6BAA6B;AAEjD,SACEC,QAAQ,EACRC,YAAY,EACZC,QAAQ,EACRC,aAAa,QACR,mCAAmC;AAE1C,OAAOC,oBAAoB,MAAM,wBAAwB;AAEzD,OAAOC,oBAAoB,MAAM,0CAA0C;AAC3E,OAAOC,4BAA4B,MAAM,kDAAkD;AAC3F,OAAOC,4BAA4B,MAAM,kDAAkD;AAC3F,OAAOC,wBAAwB,MAAM,8CAA8C;AACnF,OAAOC,sBAAsB,MAAM,4CAA4C;AAE/E,SACEC,8BAA8B,EAC9BC,eAAe,EACfC,sBAAsB,EACtBC,eAAe,QACV,iBAAiB;AAUxB;AACA;AACA,MAAMC,sBAAsB,SAASV,oBAAoB,CAAC;EAIxD;AACF;EACEW,WAAWA,CACTC,SAAiB,EACjBC,sBAA8B,EAC9BC,YAA2B,EAC3B;IACA,KAAK,CAACF,SAAS,EAAEC,sBAAsB,EAAEC,YAAY,CAAC;IAACC,eAAA;IAAAA,eAAA;IAEvD,IAAI,CAACC,eAAe,CAAC,CAAC;EACxB;;EAEA;AACF;EACE,OAAOC,iBAAiBA,CAACC,aAAqB,EAAW;IAAA,IAAAC,QAAA;IACvD,OAAOC,yBAAA,CAAAD,QAAA,IAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,EAAAE,IAAA,CAAAF,QAAA,EAC9CD,aAAa,CAACI,IAChB,CAAC;EACH;;EAEA;AACF;EACE,IAAIC,UAAUA,CAAA,EAIM;IAClB,QAAQ,IAAI,CAACD,IAAI;MACf,KAAK,MAAM;QACT,OAAOxB,QAAQ;MACjB,KAAK,WAAW;QACd,OAAOC,aAAa;MACtB,KAAK,UAAU;QACb,OAAOF,YAAY;MACrB;QACE,OAAOD,QAAQ;IACnB;EACF;;EAEA;AACF;EACE4B,YAAYA,CAAA,EAAkB;IAC5B,IAAIC,KAAK,GAAG,IAAI,CAACC,IAAI,CAACD,KAAK;IAC3B,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,IAAI,IAAI,CAACH,IAAI,KAAK,MAAM,IAAIG,KAAK,CAACE,MAAM,KAAK,CAAC,EAAE;QAC9CF,KAAK,GAAG,GAAGA,KAAK,KAAK;MACvB;;MAEA;MACA,IAAI,IAAI,CAACH,IAAI,KAAK,UAAU,IAAIF,yBAAA,CAAAK,KAAK,EAAAJ,IAAA,CAALI,KAAK,EAAU,GAAG,CAAC,EAAE;QACnDA,KAAK,GAAG1B,aAAa,CAAC6B,QAAQ,CAACH,KAAK,EAAE5B,YAAY,CAACgC,YAAY,CAAC,CAAC,CAAC;MACpE,CAAC,MAAM;QACLJ,KAAK,GAAG,IAAI,CAACF,UAAU,CAACO,KAAK,CAACL,KAAK,CAAC;MACtC;MAEA,IAAI,IAAI,CAACM,OAAO,EAAE;QAChBN,KAAK,GAAG,IAAI,CAACO,YAAY,CAACP,KAAK,CAAC;MAClC;IACF;IAEA,OAAOA,KAAK;EACd;;EAEA;AACF;EACEO,YAAYA,CAACP,KAAa,EAAU;IAAA,IAAAQ,SAAA,EAAAC,SAAA,EAAAC,SAAA,EAAAC,SAAA;IAClC,IAAIC,SAAS,GAAGZ,KAAK;IACrB,IAAI,CAACL,yBAAA,CAAAa,SAAA,OAAI,CAACK,eAAe,CAACC,WAAW,CAAC,CAAC,EAAAlB,IAAA,CAAAY,SAAA,EAAU,GAAG,CAAC,EAAE;MACrDI,SAAS,GAAG,IAAI,CAACd,UAAU,CAACiB,OAAO,CAACf,KAAK,EAAE,CAAC,CAAC;IAC/C;IACA,IAAI,CAACL,yBAAA,CAAAc,SAAA,OAAI,CAACI,eAAe,EAAAjB,IAAA,CAAAa,SAAA,EAAU,GAAG,CAAC,EAAE;MACvCG,SAAS,GAAG,IAAI,CAACd,UAAU,CAACkB,SAAS,CAAChB,KAAK,EAAE,CAAC,CAAC;IACjD;IACA,IAAI,CAACL,yBAAA,CAAAe,SAAA,OAAI,CAACG,eAAe,EAAAjB,IAAA,CAAAc,SAAA,EAAU,GAAG,CAAC,EAAE;MACvCE,SAAS,GAAG,IAAI,CAACd,UAAU,CAACmB,SAAS,CAACjB,KAAK,EAAE,CAAC,CAAC;IACjD;IACA,IAAI,IAAI,CAACH,IAAI,KAAK,WAAW,IAAI,CAACF,yBAAA,CAAAgB,SAAA,OAAI,CAACE,eAAe,EAAAjB,IAAA,CAAAe,SAAA,EAAU,GAAG,CAAC,EAAE;MACpEC,SAAS,GAAG,IAAI,CAACd,UAAU,CAACoB,eAAe,CAAClB,KAAK,EAAE,CAAC,CAAC;IACvD;IAEA,IAAInB,8BAA8B,CAAC,CAAC,EAAE;MACpC;MACA,MAAMsC,SAAS,GAAG,IAAI,CAACrB,UAAU,CAACK,QAAQ,CAACH,KAAK,EAAEjB,sBAAsB,CAAC;MACzE,MAAMqC,SAAS,GAAG,IAAI,CAACtB,UAAU,CAACK,QAAQ,CACxCS,SAAS,EACT7B,sBACF,CAAC;MACD6B,SAAS,GAAGA,SAAS,CAACS,OAAO,CAACD,SAAS,EAAED,SAAS,CAAC;IACrD;IAEA,OAAOP,SAAS;EAClB;;EAEA;AACF;AACA;EACErB,eAAeA,CAAA,EAAG;IAChB,MAAMS,KAAK,GAAG,IAAI,CAACD,YAAY,CAAC,CAAC;IACjC,IAAIC,KAAK,IAAI,IAAI,EAAE;MACjB,IAAI,CAACsB,UAAU,GAAGtB,KAAK;MACvB,IAAI,CAACuB,WAAW,GAAG,IAAI,CAACC,oBAAoB,CAACxB,KAAK,CAAC;MACnD,IAAI,CAACyB,MAAM,GAAGzB,KAAK;IACrB;EACF;;EAEA;AACF;AACA;EACEwB,oBAAoBA,CAACxB,KAAc,EAAU;IAC3C,IAAI,CAACA,KAAK,EAAE;MACV,OAAO,EAAE;IACX;IAEA,IAAI0B,SAAS,GAAG1B,KAAK;IACrB,IAAI,IAAI,CAACH,IAAI,KAAK,MAAM,IAAIG,KAAK,CAACE,MAAM,KAAK,CAAC,EAAE;MAC9CwB,SAAS,GAAG,GAAG1B,KAAK,KAAK;IAC3B;IAEA,OAAO,IAAI,CAACF,UAAU,CAACK,QAAQ,CAACuB,SAAS,EAAE,IAAI,CAACC,WAAW,CAAC;EAC9D;;EAEA;AACF;AACA;EACE,IAAI9B,IAAIA,CAAA,EAAW;IACjB,OAAO,IAAI,CAAC+B,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC;EAC7C;;EAEA;AACF;AACA;EACEC,aAAaA,CAAA,EAAW;IACtB,OAAO,IAAI,CAACN,WAAW,GAAG,IAAI,CAACA,WAAW,CAACO,QAAQ,CAAC,CAAC,GAAG,EAAE;EAC5D;;EAEA;AACF;AACA;EACE,IAAIC,UAAUA,CAAA,EAAW;IACvB,OAAO,IAAI,CAACF,aAAa,CAAC,CAAC;EAC7B;;EAEA;AACF;AACA;EACE,IAAIE,UAAUA,CAAC/B,KAAa,EAAE;IAC5B,IAAI,CAACgC,QAAQ,CAAChC,KAAK,CAAC;IAEpB,IAAI,CAACuB,WAAW,GAAGvB,KAAK;IAExB,IAAI,CAACA,KAAK,GACRA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAK,EAAE,GAC1B,IAAI,CAACF,UAAU,CAACO,KAAK,CAACL,KAAK,EAAE,IAAI,CAAC2B,WAAW,CAAC,GAC9C,IAAI;EACZ;;EAEA;AACF;AACA;EACE,IAAIM,MAAMA,CAAA,EAAW;IACnB,MAAMA,MAAM,GAAG,IAAI,CAACL,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC;IACjD,OAAO,IAAI,CAAC9B,UAAU,CAACoC,aAAa,CAACD,MAAM,CAAC;EAC9C;;EAEA;AACF;EACE,IAAIE,OAAOA,CAAA,EAAY;IACrB,OACE,IAAI,CAACtC,IAAI,KAAK,MAAM,IACpB,IAAI,CAACA,IAAI,KAAK,UAAU,IACxB,IAAI,CAACA,IAAI,KAAK,WAAW;EAE7B;;EAEA;AACF;EACE,IAAIS,OAAOA,CAAA,EAAY;IACrB,OACE,IAAI,CAACT,IAAI,KAAK,MAAM,IACpB,IAAI,CAACA,IAAI,KAAK,UAAU,IACxB,IAAI,CAACA,IAAI,KAAK,WAAW;EAE7B;;EAEA;AACF;EACE,IAAIuC,WAAWA,CAAA,EAAW;IACxB,QAAQ,IAAI,CAACvC,IAAI;MACf,KAAK,MAAM;QACT,OAAO,IAAI,CAACwC,eAAe,CAACvB,WAAW,CAAC,CAAC;MAC3C,KAAK,MAAM;QACT,OAAO,IAAI,CAACD,eAAe,CAACC,WAAW,CAAC,CAAC;MAC3C;QACE,OAAO,IAAI,CAACmB,MAAM,CAACnB,WAAW,CAAC,CAAC;IACpC;EACF;;EAEA;AACF;EACE,IAAIwB,wBAAwBA,CAAA,EAAW;IACrC,IAAI,IAAI,CAACH,OAAO,IAAI,IAAI,CAAC7B,OAAO,EAAE;MAAA,IAAAiC,SAAA;MAChC,OAAOC,qBAAA,CAAAD,SAAA,MAAG,IAAI,CAACF,eAAe,IAAI,IAAI,CAACxB,eAAe,EAAE,EAAAjB,IAAA,CAAA2C,SAAM,CAAC;IACjE;IAEA,IAAI,IAAI,CAACJ,OAAO,EAAE;MAChB,OAAO,IAAI,CAACE,eAAe;IAC7B;IAEA,IAAI,IAAI,CAAC/B,OAAO,EAAE;MAChB,OAAO,IAAI,CAACO,eAAe;IAC7B;IAEA,OAAO,EAAE;EACX;;EAEA;AACF;EACE,IAAIc,WAAWA,CAAA,EAAW;IACxB,IACE9C,8BAA8B,CAAC,CAAC,IAChC,IAAI,CAACwD,eAAe,KAAK,EAAE,IAC3B,IAAI,CAACxB,eAAe,KAAK,EAAE,EAC3B;MACA,OAAO,GAAG,IAAI,CAACyB,wBAAwB,IAAIvD,sBAAsB,EAAE;IACrE;IACA,OAAO,IAAI,CAACuD,wBAAwB;EACtC;;EAEA;AACF;EACE,IAAID,eAAeA,CAAA,EAAW;IAC5B,IAAI,CAAC,IAAI,CAACF,OAAO,EAAE;MACjB,OAAO,EAAE;IACX;IAEA,IAAI,IAAI,CAACM,gBAAgB,EAAE;MACzB,OAAO,IAAI,CAACA,gBAAgB;IAC9B;IAEA,MAAMC,YAAY,GAAG,aAAa;IAClC,MAAMC,eAAe,GAAG,cAAc;IAEtC,MAAMV,MAAM,GAAG,IAAI,CAACA,MAAM;IAC1B,IAAIN,WAAW,GAAG,EAAE;IAEpB,IAAIiB,UAAU,GAAG,KAAK;IACtB,IAAIC,QAAQ,GAAG,KAAK;IAEpB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGb,MAAM,CAAC/B,MAAM,EAAE4C,CAAC,EAAE,EAAE;MACtC,MAAMC,IAAI,GAAGd,MAAM,CAACa,CAAC,CAAC;MACtB,IAAIC,IAAI,KAAK,GAAG,EAAE;QAChB,MAAMC,QAAQ,GAAGF,CAAC,GAAG,CAAC,GAAGb,MAAM,CAACa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;QAC3C,MAAMG,QAAQ,GAAGhB,MAAM,CAACa,CAAC,GAAG,CAAC,CAAC;QAC9BF,UAAU,GAAGI,QAAQ,KAAK,GAAG,IAAIC,QAAQ,KAAK,GAAG,GAAG,IAAI,GAAG,CAACL,UAAU;MACxE,CAAC,MAAM,IAAI,CAACA,UAAU,IAAIjD,yBAAA,CAAA+C,YAAY,EAAA9C,IAAA,CAAZ8C,YAAY,EAAUK,IAAI,CAAC,EAAE;QACrDF,QAAQ,GAAG,IAAI;MACjB,CAAC,MAAM,IAAI,CAACD,UAAU,IAAIjD,yBAAA,CAAAgD,eAAe,EAAA/C,IAAA,CAAf+C,eAAe,EAAUI,IAAI,CAAC,EAAE;QACxDF,QAAQ,GAAG,KAAK;MAClB;MAEA,IAAIA,QAAQ,EAAE;QACZlB,WAAW,IAAIoB,IAAI;MACrB;IACF;IAEA,IAAI,CAACN,gBAAgB,GAAGD,qBAAA,CAAAb,WAAW,EAAA/B,IAAA,CAAX+B,WAAiB,CAAC;IAC1C,OAAO,IAAI,CAACc,gBAAgB;EAC9B;;EAEA;AACF;EACE,IAAIS,kBAAkBA,CAAA,EAAW;IAAA,IAAAC,SAAA;IAC/B,IAAI,CAAC,IAAI,CAAChB,OAAO,EAAE;MACjB,OAAO,EAAE;IACX;IAEA,OAAO,IAAI,CAAC7B,OAAO,GACfkC,qBAAA,CAAAW,SAAA,OAAI,CAAClB,MAAM,CAACZ,OAAO,CAAC,IAAI,CAACR,eAAe,EAAE,EAAE,CAAC,EAAAjB,IAAA,CAAAuD,SAAM,CAAC,GACpD,IAAI,CAAClB,MAAM;EACjB;;EAEA;AACF;AACA;EACE,IAAImB,WAAWA,CAAA,EAAW;IACxB,IAAI,IAAI,CAACC,YAAY,KAAK,EAAE,EAAE;MAC5B,OAAO,IAAI,CAACA,YAAY;IAC1B;IAEA,MAAMjB,WAAW,GAAG,IAAI,CAACR,eAAe,CAAC,aAAa,EAAE,EAAE,CAAC;IAE3D,IAAI,IAAI,CAACO,OAAO,IAAI,IAAI,CAAC7B,OAAO,IAAIX,yBAAA,CAAAyC,WAAW,EAAAxC,IAAA,CAAXwC,WAAW,EAAU,GAAG,CAAC,EAAE;MAC7D;MACA,OAAOA,WAAW,CAACkB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClC;IAEA,OAAOlB,WAAW;EACpB;;EAEA;AACF;AACA;EACE,IAAIgB,WAAWA,CAACA,WAAmB,EAAE;IACnC,IAAI,CAACC,YAAY,GAAGD,WAAW;EACjC;;EAEA;AACF;EACE,IAAIvC,eAAeA,CAAA,EAAW;IAC5B,IAAI,CAAC,IAAI,CAACP,OAAO,EAAE;MACjB,OAAO,EAAE;IACX;IAEA,IAAI,IAAI,CAACiD,gBAAgB,EAAE;MACzB,OAAO,IAAI,CAACA,gBAAgB;IAC9B;IAEA,MAAMtB,MAAM,GAAG,IAAI,CAACA,MAAM;IAE1B,IAAIuB,eAAe,GAAG,EAAE;IACxB,IAAI7D,yBAAA,CAAAsC,MAAM,EAAArC,IAAA,CAANqC,MAAM,EAAU,GAAG,CAAC,EAAE;MACxBuB,eAAe,CAACC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC,MAAM,IAAI9D,yBAAA,CAAAsC,MAAM,EAAArC,IAAA,CAANqC,MAAM,EAAU,GAAG,CAAC,EAAE;MAC/BuB,eAAe,CAACC,IAAI,CAAC,IAAI,CAAC;IAC5B;IACA,IAAI9D,yBAAA,CAAAsC,MAAM,EAAArC,IAAA,CAANqC,MAAM,EAAU,GAAG,CAAC,EAAE;MACxBuB,eAAe,CAACC,IAAI,CAAC,IAAI,CAAC;IAC5B;IACA,IAAI9D,yBAAA,CAAAsC,MAAM,EAAArC,IAAA,CAANqC,MAAM,EAAU,GAAG,CAAC,EAAE;MACxBuB,eAAe,CAACC,IAAI,CAAC,IAAI,CAAC;IAC5B;IAEA,IAAIC,UAAU,GAAGF,eAAe,CAACG,IAAI,CAAC,GAAG,CAAC;IAC1C,IAAIhE,yBAAA,CAAAsC,MAAM,EAAArC,IAAA,CAANqC,MAAM,EAAU,GAAG,CAAC,EAAE;MACxByB,UAAU,GAAG,GAAGA,UAAU,MAAM;IAClC;IACA,IAAI/D,yBAAA,CAAAsC,MAAM,EAAArC,IAAA,CAANqC,MAAM,EAAU,GAAG,CAAC,EAAE;MACxByB,UAAU,GAAG,GAAGA,UAAU,IAAI;IAChC;IAEA,IAAI,CAACH,gBAAgB,GAAGG,UAAU;IAClC,OAAO,IAAI,CAACH,gBAAgB;EAC9B;;EAEA;AACF;EACE,IAAIK,kBAAkBA,CAAA,EAAW;IAC/B,IAAI,CAAC,IAAI,CAACtD,OAAO,EAAE;MACjB,OAAO,EAAE;IACX;IAEA,OAAO,IAAI,CAACO,eAAe;EAC7B;;EAEA;AACF;EACE,IAAIgD,cAAcA,CAAA,EAAW;IAC3B,OAAO,OAAO,IAAI,CAAC7D,KAAK,KAAK,QAAQ,IAAI,IAAI,CAACqC,eAAe,KAAK,EAAE,GAChE,IAAI,CAACvC,UAAU,CAACK,QAAQ,CAAC,IAAI,CAACH,KAAK,EAAE,IAAI,CAACqC,eAAe,CAAC,GAC1D,EAAE;EACR;;EAEA;AACF;EACE,IAAIyB,cAAcA,CAAA,EAAW;IAC3B,OAAO,OAAO,IAAI,CAAC9D,KAAK,KAAK,QAAQ,IAAI,IAAI,CAACa,eAAe,KAAK,EAAE,GAChE,IAAI,CAACf,UAAU,CAACK,QAAQ,CAAC,IAAI,CAACH,KAAK,EAAE,IAAI,CAACa,eAAe,CAAC,GAC1D,EAAE;EACR;;EAEA;AACF;AACA;EACEkD,WAAWA,CAAC/D,KAAc,EAAU;IAClC,IAAIA,KAAK,IAAI,IAAI,IAAIA,KAAK,CAAC8B,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;MAC5C,OAAO,EAAE;IACX;;IAEA;IACA,IACE,CAAC,IAAI,CAACjC,IAAI,KAAK,UAAU,IAAI,IAAI,CAACA,IAAI,KAAK,WAAW,KACtD1B,QAAQ,CAAC6F,SAAS,CAAChE,KAAK,EAAEhB,eAAe,CAAC,EAC1C;MACA,OAAOb,QAAQ,CAACgC,QAAQ,CAACH,KAAK,EAAE,IAAI,CAACkD,kBAAkB,CAAC;IAC1D;IAEA,OAAO,IAAI,CAACpD,UAAU,CAACK,QAAQ,CAACH,KAAK,EAAE,IAAI,CAACiC,MAAM,CAAC;EACrD;;EAEA;AACF;AACA;EACE,IAAIgC,aAAaA,CAAA,EAAW;IAC1B,IAAI,OAAO,IAAI,CAACjE,KAAK,KAAK,QAAQ,EAAE;MAClC,OAAO,IAAI,CAAC+D,WAAW,CAAC,IAAI,CAAC/D,KAAK,CAAC8B,QAAQ,CAAC,CAAC,CAAC;IAChD;IAEA,OAAO,EAAE;EACX;;EAEA;AACF;EACE,IAAIoC,WAAWA,CAAA,EAAY;IACzB,IAAI,OAAO,IAAI,CAAClE,KAAK,KAAK,QAAQ,EAAE;MAClC,OAAO,IAAI,CAACF,UAAU,CAACoE,WAAW,CAAC,IAAI,CAAClE,KAAK,CAAC;IAChD;IACA,OAAO,KAAK;EACd;;EAEA;AACF;EACE,IAAImE,MAAMA,CAAA,EAAsB;IAC9B,IAAI,OAAO,IAAI,CAACnE,KAAK,KAAK,QAAQ,EAAE;MAClC,OAAO,IAAI,CAACF,UAAU,CAACsE,SAAS,CAAC,IAAI,CAACpE,KAAK,CAAC;IAC9C;IACA,OAAO,IAAI;EACb;;EAEA;AACF;AACA;EACE,IAAIqE,OAAOA,CAAA,EAAkB;IAC3B,OAAO,IAAI,CAACzC,eAAe,CAAC,SAAS,CAAC;EACxC;;EAEA;AACF;AACA;EACE,IAAI0C,OAAOA,CAAA,EAAkB;IAC3B,OAAO,IAAI,CAAC1C,eAAe,CAAC,SAAS,CAAC;EACxC;;EAEA;AACF;AACA;EACE2C,cAAcA,CAACC,KAAsB,EAAE;IACrC,MAAM;MAAEC,EAAE;MAAEC,OAAO;MAAEC,UAAU;MAAEC;IAAW,CAAC,GAAGJ,KAAK;IACrD,IAAIG,UAAU,IAAIzG,GAAG,CAACyG,UAAU,EAAE,QAAQ,CAAC,IAAI,IAAI,CAACvC,WAAW,EAAE;MAC/DuC,UAAU,CAAC1C,MAAM,GAAG,IAAI,CAACG,WAAW;IACtC;IAEA,IAAI,CAACyC,gBAAgB,CAACN,cAAc,CAACE,EAAE,EAAEC,OAAO,EAAEC,UAAU,EAAEC,UAAU,CAAC;EAC3E;;EAEA;AACF;EACEE,mBAAmBA,CAAA,EAAqB;IACtC,QAAQ,IAAI,CAACjF,IAAI;MACf,KAAK,MAAM;QACT,OAAO,IAAIpB,4BAA4B,CACrC,IAAI,CAAC4D,eAAe,EACpB,IAAI,CAACD,WACP,CAAC;MACH,KAAK,MAAM;QACT,OAAO,IAAI1D,4BAA4B,CACrC,IAAI,CAACmC,eAAe,EACpB,IAAI,CAACuB,WACP,CAAC;MACH;QACE,OAAO,IAAIzD,wBAAwB,CACjC,IAAI,CAACkB,IAAI,EACT,IAAI,CAAC8B,WAAW,EAChB,IAAI,CAACS,WACP,CAAC;IACL;EACF;;EAEA;AACF;AACA;EACE2C,cAAcA,CAAA,EAAyB;IACrC,MAAMC,WAAW,GAAG,IAAIxG,oBAAoB,CAAC,CAAC;IAE9CwG,WAAW,CAACC,GAAG,CAAC,IAAI,CAACH,mBAAmB,CAAC,CAAC,CAAC;IAE3C,IAAI,IAAI,CAACT,OAAO,IAAI,IAAI,CAACC,OAAO,EAAE;MAChCU,WAAW,CAACC,GAAG,CACb,IAAIrG,sBAAsB,CACxB,IAAI,CAACiB,IAAI,EACT,IAAI,CAACwE,OAAO,EACZ,IAAI,CAACC,OAAO,EACZ,IAAI,CAAC3C,WACP,CACF,CAAC;IACH;IAEA,OAAOqD,WAAW;EACpB;;EAEA;AACF;EACE,IAAIE,aAAaA,CAAA,EAAkC;IACjD,IAAI,IAAI,CAACrF,IAAI,KAAK,MAAM,IAAI,IAAI,CAACA,IAAI,KAAK,MAAM,EAAE;MAChD,OAAOf,eAAe,CAACqG,KAAK;IAC9B;IAEA,OAAOrG,eAAe,CAACsG,MAAM;EAC/B;;EAEA;AACF;EACEC,iBAAiBA,CAACC,cAA6B,EAAQ;IACrD,IAAI,CAACC,KAAK,CAAC,CAAC;IACZ,IAAID,cAAc,YAAYrG,sBAAsB,EAAE;MACpD,MAAMuG,UAAU,GAAGF,cAAc,CAACtF,KAAK;MACvC,IAAIwF,UAAU,IAAI,IAAI,EAAE;QACtB,MAAMC,UAAU,GAAG,IAAI,CAAC3F,UAAU,CAACK,QAAQ,CACzCqF,UAAU,EACV,IAAI,CAAC7D,WACP,CAAC;QACD,IAAI,CAAC+D,MAAM,CAACD,UAAU,CAAC;MACzB;IACF,CAAC,MAAM;MACLE,OAAO,CAACnB,KAAK,CACX,qCAAqCc,cAAc,CAACzF,IAAI,gBAC1D,CAAC;IACH;EACF;AACF;AAEA,eAAeZ,sBAAsB","ignoreList":[]}
@@ -1,5 +1,4 @@
1
1
  import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
2
- import _startsWithInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/starts-with";
3
2
  import _sortInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/sort";
4
3
  import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
5
4
  import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
@@ -16,9 +15,19 @@ import { getCookie } from "../browser/Cookies";
16
15
  */
17
16
  class BaseDateTimeUtil {
18
17
  constructor(isoFormat) {
18
+ let doOffsets = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
19
19
  _defineProperty(this, "_isoFormat", void 0);
20
+ _defineProperty(this, "_doOffsets", void 0);
20
21
  _defineProperty(this, "_timeZone", typeof Intl === "undefined" ? "Etc/UTC" : Intl.DateTimeFormat().resolvedOptions().timeZone || "Etc/UTC");
21
22
  this._isoFormat = isoFormat;
23
+ this._doOffsets = doOffsets;
24
+ }
25
+
26
+ /**
27
+ * Indicates if offsets and timezones are relevant
28
+ */
29
+ get doOffsets() {
30
+ return this._doOffsets ? isIncludeTimeOffsetInDateTimes() : false;
22
31
  }
23
32
 
24
33
  /**
@@ -39,8 +48,7 @@ class BaseDateTimeUtil {
39
48
  /**
40
49
  */
41
50
  getIsoFormat() {
42
- var _context;
43
- if (isIncludeTimeOffsetInDateTimes() && _startsWithInstanceProperty(_context = this._isoFormat).call(_context, ISO_DATETIME_FORMAT)) {
51
+ if (this.doOffsets) {
44
52
  return this._isoFormat + DATETIME_OFFSET_FORMAT;
45
53
  }
46
54
  return this._isoFormat;
@@ -49,7 +57,7 @@ class BaseDateTimeUtil {
49
57
  /**
50
58
  */
51
59
  convertFormat(javaFormat) {
52
- var _context2;
60
+ var _context;
53
61
  if (!javaFormat) {
54
62
  return this.getIsoFormat();
55
63
  }
@@ -63,7 +71,7 @@ class BaseDateTimeUtil {
63
71
  let uts35Format = javaFormat;
64
72
 
65
73
  // Sort keys by length (descending) to handle multi-character tokens first
66
- const sortedKeys = _sortInstanceProperty(_context2 = _Object$keys(javaToUTS35Map)).call(_context2, (a, b) => b.length - a.length);
74
+ const sortedKeys = _sortInstanceProperty(_context = _Object$keys(javaToUTS35Map)).call(_context, (a, b) => b.length - a.length);
67
75
  for (const javaToken of sortedKeys) {
68
76
  const uts35Token = javaToUTS35Map[javaToken];
69
77
  const regex = new RegExp(javaToken, "g"); // Match all occurrences
@@ -102,12 +110,12 @@ class BaseDateTimeUtil {
102
110
 
103
111
  /**
104
112
  */
105
- toFormat(isoDate, targetFormat) {
113
+ toFormat(date, targetFormat) {
106
114
  let inputFormat = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.getIsoFormat();
107
115
  const {
108
116
  weekStartsOn
109
117
  } = this.getOptions();
110
- const parsedDate = this.toDate(isoDate, inputFormat);
118
+ const parsedDate = this.toDate(date, inputFormat);
111
119
  if (isValid(parsedDate)) {
112
120
  return format(parsedDate, targetFormat, {
113
121
  in: this.getDateFnsContext(),
@@ -136,11 +144,12 @@ class BaseDateTimeUtil {
136
144
  /**
137
145
  */
138
146
  hasFormat(date, sourceFormat) {
139
- const formattedValue = this.toFormat(date, sourceFormat, sourceFormat);
147
+ const parsedDate = this.toDate(date, sourceFormat);
148
+ const formattedValue = this.toFormat(parsedDate, sourceFormat);
140
149
  if (formattedValue === "Invalid Date") {
141
150
  return false;
142
151
  }
143
- const isOutsideRange = isBefore(formattedValue, new Date(1000, 1, 1)) || isAfter(formattedValue, new Date(9999, 11, 31));
152
+ const isOutsideRange = isBefore(parsedDate, new Date(1000, 1, 1)) || isAfter(parsedDate, new Date(9999, 11, 31));
144
153
  if (isOutsideRange) {
145
154
  return false;
146
155
  }
@@ -528,10 +537,10 @@ class BaseDateTimeUtil {
528
537
  /**
529
538
  */
530
539
  getDateFnsContext() {
531
- if (IS_GRAALJS) {
532
- return null; // tz method does not work in graal (yet)
540
+ if (this.doOffsets && !IS_GRAALJS) {
541
+ return tz(this.getTimeZone());
533
542
  }
534
- return tz(this.getTimeZone());
543
+ return undefined;
535
544
  }
536
545
 
537
546
  //////////// Offsets
@@ -557,12 +566,12 @@ class BaseDateTimeUtil {
557
566
  */
558
567
  getTimezoneOffsets() {
559
568
  const createOffsetObject = info => {
560
- var _context3, _context4;
569
+ var _context2, _context3;
561
570
  const sign = info.offset < 0 ? "-" : "+";
562
571
  const absOffset = Math.abs(info.offset);
563
572
  const hours = _Math$trunc(absOffset);
564
573
  const minutes = Math.round(absOffset % 1 * 60);
565
- const offsetString = `${sign}${_padStartInstanceProperty(_context3 = String(hours + (minutes === 60 ? 1 : 0))).call(_context3, 2, "0")}:${_padStartInstanceProperty(_context4 = String(minutes % 60)).call(_context4, 2, "0")}`;
574
+ const offsetString = `${sign}${_padStartInstanceProperty(_context2 = String(hours + (minutes === 60 ? 1 : 0))).call(_context2, 2, "0")}:${_padStartInstanceProperty(_context3 = String(minutes % 60)).call(_context3, 2, "0")}`;
566
575
  return {
567
576
  label: info.name,
568
577
  abbr: info.abbr,
@@ -603,7 +612,7 @@ const DateUtil = new BaseDateTimeUtil(ISO_DATE_FORMAT);
603
612
  /**
604
613
  * DateTimeUtil
605
614
  */
606
- const DateTimeUtil = new BaseDateTimeUtil(ISO_DATETIME_FORMAT);
615
+ const DateTimeUtil = new BaseDateTimeUtil(ISO_DATETIME_FORMAT, true);
607
616
 
608
617
  /**
609
618
  * TimeUtil
@@ -613,6 +622,6 @@ const TimeUtil = new BaseDateTimeUtil(ISO_TIME_FORMAT);
613
622
  /**
614
623
  * TimestampUtil
615
624
  */
616
- const TimestampUtil = new BaseDateTimeUtil(ISO_TIMESTAMP_FORMAT);
625
+ const TimestampUtil = new BaseDateTimeUtil(ISO_TIMESTAMP_FORMAT, true);
617
626
  export { DateUtil, DateTimeUtil, TimeUtil, TimestampUtil };
618
627
  //# sourceMappingURL=DateTimeUtil.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimeUtil.js","names":["format","isAfter","isBefore","isSameDay","isValid","parse","add","sub","set","startOfMonth","endOfMonth","startOfWeek","getHours","getMinutes","getDay","getWeek","enGB","nl","tz","soft","DATETIME_OFFSET_FORMAT","DEFAULT_FIRST_WEEK_CONTAINS_DATE","DEFAULT_WEEK_STARTS_ON","getSetting","IS_GRAALJS","isIncludeTimeOffsetInDateTimes","ISO_DATE_FORMAT","ISO_DATETIME_FORMAT","ISO_TIME_FORMAT","ISO_TIMESTAMP_FORMAT","getCookie","BaseDateTimeUtil","constructor","isoFormat","_defineProperty","Intl","DateTimeFormat","resolvedOptions","timeZone","_isoFormat","getOptions","weekStartsOn","firstWeekContainsDate","getIsoFormat","_context","_startsWithInstanceProperty","call","convertFormat","javaFormat","_context2","javaToUTS35Map","ZZZ","ZZ","Z","uts35Format","sortedKeys","_sortInstanceProperty","_Object$keys","a","b","length","javaToken","uts35Token","regex","RegExp","replace","getLocale","locale","toDate","date","inputFormat","arguments","undefined","Date","in","getDateFnsContext","toFormat","isoDate","targetFormat","parsedDate","toISO","sourceFormat","now","hasFormat","formattedValue","isOutsideRange","toUpperCase","inputDate","afterISODate","isSameOrAfter","isSame","beforeISODate","isSameOrBefore","compareDate","getTime","isOther","isWeekend","SATURDAY_NUMBER","SUNDAY_NUMBER","weekDay","isAmbiguous","dateTime","t","_mapInstanceProperty","x","newDate","minutes","time","indexOf","_calculate","calculationFn","property","value","addSeconds","amount","addMinutes","addHours","addDays","addWeeks","addMonths","addYears","subtractSeconds","subtractMinutes","subtractHours","subtractDays","subtractWeeks","subtractMonths","subtractYears","_get","method","options","_set","setYear","year","setMonth","month","setDay","day","setHour","hour","setMinute","minute","setSecond","second","setMilliseconds","millisecond","setTime","hours","seconds","milliseconds","getTimeZone","_timeZone","setTimeZone","getOffset","dateOffset","offsets","getTimezoneOffsets","daylight","standard","createOffsetObject","info","_context3","_context4","sign","offset","absOffset","Math","abs","_Math$trunc","round","offsetString","_padStartInstanceProperty","String","label","name","abbr","timezone","DateUtil","DateTimeUtil","TimeUtil","TimestampUtil"],"sources":["../../../src/utils/datetime/DateTimeUtil.js"],"sourcesContent":["// @flow\nimport {\n format,\n isAfter,\n isBefore,\n isSameDay,\n isValid,\n parse,\n add,\n sub,\n set,\n startOfMonth,\n endOfMonth,\n startOfWeek,\n getHours,\n getMinutes,\n getDay,\n getWeek,\n} from \"date-fns\";\nimport { enGB, nl } from \"date-fns/locale\";\nimport { tz } from \"@date-fns/tz\";\n\nimport soft from \"timezone-soft\";\n\nimport {\n DATETIME_OFFSET_FORMAT,\n DEFAULT_FIRST_WEEK_CONTAINS_DATE,\n DEFAULT_WEEK_STARTS_ON,\n getSetting,\n IS_GRAALJS,\n isIncludeTimeOffsetInDateTimes,\n ISO_DATE_FORMAT,\n ISO_DATETIME_FORMAT,\n ISO_TIME_FORMAT,\n ISO_TIMESTAMP_FORMAT,\n} from \"../../constants\";\n\nimport { getCookie } from \"../browser/Cookies\";\n\ntype OffsetInfoInput = {\n abbr: string,\n offset: number,\n name: string,\n};\n\nexport type OffsetInfo = {\n abbr: string,\n label: string,\n value: string,\n};\n\n/**\n * @hideconstructor\n */\nclass BaseDateTimeUtil {\n _isoFormat: string;\n _timeZone: string =\n typeof Intl === \"undefined\"\n ? \"Etc/UTC\"\n : Intl.DateTimeFormat().resolvedOptions().timeZone || \"Etc/UTC\";\n\n constructor(isoFormat: string) {\n this._isoFormat = isoFormat;\n }\n\n /**\n * Returns the options defined in settings\n */\n getOptions(): {\n weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6,\n firstWeekContainsDate: 1 | 2 | 3 | 4 | 5 | 6 | 7,\n } {\n // indicates on what day the week starts\n const weekStartsOn = getSetting(\n \"CALENDAR_WEEK_STARTS_ON\",\n DEFAULT_WEEK_STARTS_ON,\n );\n\n // indicates which date indicates the first week of the year\n const firstWeekContainsDate = getSetting(\n \"CALENDAR_FIRST_WEEK_CONTAINS_DATE\",\n DEFAULT_FIRST_WEEK_CONTAINS_DATE,\n );\n\n return { weekStartsOn, firstWeekContainsDate };\n }\n\n /**\n */\n getIsoFormat(): string {\n if (\n isIncludeTimeOffsetInDateTimes() &&\n this._isoFormat.startsWith(ISO_DATETIME_FORMAT)\n ) {\n return this._isoFormat + DATETIME_OFFSET_FORMAT;\n }\n return this._isoFormat;\n }\n\n /**\n */\n convertFormat(javaFormat: string): string {\n if (!javaFormat) {\n return this.getIsoFormat();\n }\n\n const javaToUTS35Map = {\n ZZZ: \"xxx\",\n ZZ: \"xx\",\n Z: \"x\",\n };\n\n // Replace Java pattern tokens with UTS #35 tokens\n let uts35Format = javaFormat;\n\n // Sort keys by length (descending) to handle multi-character tokens first\n const sortedKeys = Object.keys(javaToUTS35Map).sort(\n (a, b) => b.length - a.length,\n );\n\n for (const javaToken of sortedKeys) {\n const uts35Token = javaToUTS35Map[javaToken];\n const regex = new RegExp(javaToken, \"g\"); // Match all occurrences\n uts35Format = uts35Format.replace(regex, uts35Token);\n }\n\n return uts35Format;\n }\n\n /**\n */\n getLocale(): typeof nl | typeof enGB {\n const locale = getCookie(\"locale\") ?? \"en\";\n\n if (locale === \"nl\") {\n return nl;\n }\n\n return enGB;\n }\n\n /**\n */\n toDate(date: string | Date, inputFormat: string = this.getIsoFormat()): Date {\n if (date instanceof Date) {\n return date;\n }\n\n const { weekStartsOn, firstWeekContainsDate } = this.getOptions();\n\n return parse(date, inputFormat, new Date(), {\n in: this.getDateFnsContext(),\n weekStartsOn,\n firstWeekContainsDate,\n });\n }\n\n /**\n */\n toFormat(\n isoDate: string | Date,\n targetFormat: string,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n const { weekStartsOn } = this.getOptions();\n\n const parsedDate = this.toDate(isoDate, inputFormat);\n\n if (isValid(parsedDate)) {\n return format(parsedDate, targetFormat, {\n in: this.getDateFnsContext(),\n weekStartsOn,\n locale: this.getLocale(),\n });\n }\n\n return \"Invalid Date\";\n }\n\n /**\n */\n toISO(\n date: string | Date,\n sourceFormat: string = this.getIsoFormat(),\n ): string {\n return this.toFormat(date, this.getIsoFormat(), sourceFormat);\n }\n\n /**\n */\n now(): string {\n return this.toISO(new Date());\n }\n\n //////////// VALIDATION\n\n /**\n */\n hasFormat(date: string, sourceFormat: string): boolean {\n const formattedValue = this.toFormat(date, sourceFormat, sourceFormat);\n if (formattedValue === \"Invalid Date\") {\n return false;\n }\n\n const isOutsideRange =\n isBefore(formattedValue, new Date(1000, 1, 1)) ||\n isAfter(formattedValue, new Date(9999, 11, 31));\n if (isOutsideRange) {\n return false;\n }\n\n return (\n formattedValue.replace(/0/gu, \"\").toUpperCase() ===\n date.replace(/0/gu, \"\").toUpperCase()\n );\n }\n\n /**\n */\n isValid(\n date: string | Date | null | void,\n inputFormat: string = this.getIsoFormat(),\n ): boolean {\n if (!date) {\n return false;\n }\n\n const parsedDate = this.toDate(date, inputFormat);\n return isValid(parsedDate);\n }\n\n /**\n */\n isAfter(\n inputDate: string | Date,\n afterISODate: ?string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): boolean {\n return (\n afterISODate != null &&\n isAfter(this.toDate(inputDate, inputFormat), this.toDate(afterISODate))\n );\n }\n\n /**\n */\n isSameOrAfter(\n inputDate: string | Date,\n afterISODate: ?string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): boolean {\n return (\n afterISODate != null &&\n (this.isAfter(inputDate, afterISODate, inputFormat) ||\n this.isSame(inputDate, afterISODate, inputFormat))\n );\n }\n\n /**\n */\n isBefore(\n inputDate: string | Date,\n beforeISODate: ?string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): boolean {\n return (\n beforeISODate != null &&\n isBefore(this.toDate(inputDate, inputFormat), this.toDate(beforeISODate))\n );\n }\n\n /**\n */\n isSameOrBefore(\n inputDate: string | Date,\n beforeISODate: ?string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): boolean {\n return (\n beforeISODate != null &&\n (this.isBefore(inputDate, beforeISODate, inputFormat) ||\n this.isSame(inputDate, beforeISODate, inputFormat))\n );\n }\n\n /**\n */\n isSame(\n inputDate: string | Date,\n compareDate: ?string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): boolean {\n return (\n compareDate != null &&\n this.toDate(inputDate, inputFormat).getTime() ===\n this.toDate(compareDate).getTime()\n );\n }\n\n /**\n */\n isSameDay(\n inputDate: string | Date,\n compareDate: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): boolean {\n return (\n compareDate != null &&\n isSameDay(\n this.toDate(inputDate, inputFormat),\n this.toDate(compareDate, inputFormat),\n )\n );\n }\n\n /**\n */\n isOther(\n inputDate: string | Date,\n compareDate: ?string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): boolean {\n return !this.isSame(inputDate, compareDate, inputFormat);\n }\n\n /**\n */\n isWeekend(inputDate: string | Date): boolean {\n const SATURDAY_NUMBER = 6;\n const SUNDAY_NUMBER = 0;\n const weekDay = getDay(this.toDate(inputDate));\n\n return weekDay === SATURDAY_NUMBER || weekDay === SUNDAY_NUMBER;\n }\n\n /**\n * Checks if a given local date and time is ambiguous in the specified timezone.\n * Ambiguity happens during the end of daylight saving time (DST) transitions.\n */\n isAmbiguous(\n inputDate: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): boolean {\n if (inputDate == null || typeof Intl === \"undefined\") {\n return false;\n }\n\n const dateTime = this.toDate(inputDate, inputFormat);\n if (!isValid(dateTime)) {\n return false;\n }\n\n const t = [60, -60, 30, -30];\n const a = t.map((x) => {\n const newDate = add(dateTime, { minutes: x });\n return format(newDate, \"HH:mm\");\n });\n const time = format(dateTime, \"HH:mm\");\n return a.indexOf(time) > -1;\n }\n\n //////////// CALCULATIONS\n\n /**\n * @private\n */\n _calculate(\n date: string | Date,\n calculationFn: Function,\n property: string,\n value: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n const parsedDate = this.toDate(date, inputFormat);\n return this.toISO(\n calculationFn(\n parsedDate,\n { [property]: value },\n {\n in: this.getDateFnsContext(),\n },\n ),\n );\n }\n\n /**\n */\n addSeconds(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, add, \"seconds\", amount, inputFormat);\n }\n\n /**\n */\n addMinutes(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, add, \"minutes\", amount, inputFormat);\n }\n\n /**\n */\n addHours(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, add, \"hours\", amount, inputFormat);\n }\n\n /**\n */\n addDays(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, add, \"days\", amount, inputFormat);\n }\n\n /**\n */\n addWeeks(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, add, \"weeks\", amount, inputFormat);\n }\n\n /**\n */\n addMonths(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, add, \"months\", amount, inputFormat);\n }\n\n /**\n */\n addYears(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, add, \"years\", amount, inputFormat);\n }\n\n /**\n */\n subtractSeconds(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, sub, \"seconds\", amount, inputFormat);\n }\n\n /**\n */\n subtractMinutes(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, sub, \"minutes\", amount, inputFormat);\n }\n\n /**\n */\n subtractHours(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, sub, \"hours\", amount, inputFormat);\n }\n\n /**\n */\n subtractDays(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, sub, \"days\", amount, inputFormat);\n }\n\n /**\n */\n subtractWeeks(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, sub, \"weeks\", amount, inputFormat);\n }\n\n /**\n */\n subtractMonths(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, sub, \"months\", amount, inputFormat);\n }\n\n /**\n */\n subtractYears(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, sub, \"years\", amount, inputFormat);\n }\n\n //////////// GETTERS\n\n /**\n * @private\n */\n _get(\n date: string | Date,\n method: Function,\n inputFormat: string = this.getIsoFormat(),\n options: Object = {},\n ): string {\n const parsedDate = this.toDate(date, inputFormat);\n return this.toISO(\n method(parsedDate, {\n in: this.getDateFnsContext(),\n ...options,\n }),\n );\n }\n\n /**\n */\n startOfMonth(\n date: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._get(date, startOfMonth, inputFormat);\n }\n\n /**\n */\n endOfMonth(\n date: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._get(date, endOfMonth, inputFormat);\n }\n\n /**\n */\n startOfWeek(\n date: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n const { weekStartsOn } = this.getOptions();\n return this._get(date, startOfWeek, inputFormat, {\n weekStartsOn,\n });\n }\n\n /**\n */\n getHours(\n date: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): number {\n const parsedDate = this.toDate(date, inputFormat);\n return getHours(parsedDate, { in: this.getDateFnsContext() });\n }\n\n /**\n */\n getMinutes(\n date: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): number {\n const parsedDate = this.toDate(date, inputFormat);\n return getMinutes(parsedDate, { in: this.getDateFnsContext() });\n }\n\n /**\n */\n getWeek(\n date: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): number {\n const { weekStartsOn, firstWeekContainsDate } = this.getOptions();\n const parsedDate = this.toDate(date, inputFormat);\n return getWeek(parsedDate, {\n in: this.getDateFnsContext(),\n weekStartsOn,\n firstWeekContainsDate,\n });\n }\n\n //////////// SETTERS\n\n /**\n * @private\n */\n _set(\n date: string | Date,\n property: string,\n value: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n const parsedDate = this.toDate(date, inputFormat);\n return this.toISO(\n set(\n parsedDate,\n { [property]: value },\n // {\n // in: this.getDateFnsContext(),\n // },\n ),\n );\n }\n\n /**\n */\n setYear(\n date: string | Date,\n year: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._set(date, \"year\", year, inputFormat);\n }\n\n /**\n */\n setMonth(\n date: string | Date,\n month: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._set(date, \"month\", month, inputFormat);\n }\n\n /**\n */\n setDay(\n date: string | Date,\n day: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._set(date, \"date\", day, inputFormat);\n }\n\n /**\n */\n setHour(\n date: string | Date,\n hour: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._set(date, \"hours\", hour, inputFormat);\n }\n\n /**\n */\n setMinute(\n date: string | Date,\n minute: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._set(date, \"minutes\", minute, inputFormat);\n }\n\n /**\n */\n setSecond(\n date: string | Date,\n second: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._set(date, \"seconds\", second, inputFormat);\n }\n\n /**\n */\n setMilliseconds(\n date: string | Date,\n millisecond: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._set(date, \"milliseconds\", millisecond, inputFormat);\n }\n\n /**\n */\n setTime(\n date: string,\n hours: number,\n minutes: number,\n seconds: number,\n milliseconds: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n const parsedDate = this.toDate(date, inputFormat);\n return this.toISO(\n set(\n parsedDate,\n { hours, minutes, seconds, milliseconds },\n {\n in: this.getDateFnsContext(),\n },\n ),\n );\n }\n\n //////////// Timezone related\n\n /**\n */\n getTimeZone(): string {\n return this._timeZone;\n }\n\n /**\n */\n setTimeZone(timeZone: string) {\n this._timeZone = timeZone;\n }\n\n /**\n */\n getDateFnsContext(): null | Function {\n if (IS_GRAALJS) {\n return null; // tz method does not work in graal (yet)\n }\n return tz(this.getTimeZone());\n }\n\n //////////// Offsets\n\n /**\n */\n getOffset(\n date: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): OffsetInfo | null {\n const parsedDate = this.toDate(date, inputFormat);\n if (isValid(parsedDate)) {\n const dateOffset = this.toFormat(parsedDate, DATETIME_OFFSET_FORMAT);\n const offsets = this.getTimezoneOffsets();\n if (\n typeof offsets.daylight !== \"undefined\" &&\n offsets.daylight.value === dateOffset\n ) {\n return offsets.daylight;\n } else if (\n typeof offsets.standard !== \"undefined\" &&\n offsets.standard.value === dateOffset\n ) {\n return offsets.standard;\n }\n }\n return null;\n }\n\n /**\n */\n getTimezoneOffsets(): {\n standard?: OffsetInfo,\n daylight?: OffsetInfo,\n } {\n const createOffsetObject = (info: OffsetInfoInput): OffsetInfo => {\n const sign = info.offset < 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(info.offset);\n const hours = Math.trunc(absOffset);\n const minutes = Math.round((absOffset % 1) * 60);\n\n const offsetString = `${sign}${String(hours + (minutes === 60 ? 1 : 0)).padStart(2, \"0\")}:${String(minutes % 60).padStart(2, \"0\")}`;\n\n return {\n label: info.name,\n abbr: info.abbr,\n value: offsetString,\n };\n };\n\n const timezone = soft(this.getTimeZone());\n\n if (timezone.length === 0) {\n return {\n standard: {\n label: \"Etc/UTC\",\n abbr: \"Etc/UTC\",\n value: \"+00:00\",\n },\n };\n }\n\n const { daylight, standard } = timezone[0];\n\n if (daylight) {\n return {\n daylight: createOffsetObject(daylight),\n standard: createOffsetObject(standard),\n };\n }\n\n return { standard: createOffsetObject(standard) };\n }\n}\n\n/**\n * DateUtil\n */\nconst DateUtil: BaseDateTimeUtil = new BaseDateTimeUtil(ISO_DATE_FORMAT);\n\n/**\n * DateTimeUtil\n */\nconst DateTimeUtil: BaseDateTimeUtil = new BaseDateTimeUtil(\n ISO_DATETIME_FORMAT,\n);\n\n/**\n * TimeUtil\n */\nconst TimeUtil: BaseDateTimeUtil = new BaseDateTimeUtil(ISO_TIME_FORMAT);\n\n/**\n * TimestampUtil\n */\nconst TimestampUtil: BaseDateTimeUtil = new BaseDateTimeUtil(\n ISO_TIMESTAMP_FORMAT,\n);\n\nexport { DateUtil, DateTimeUtil, TimeUtil, TimestampUtil };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"DateTimeUtil.js","names":["format","isAfter","isBefore","isSameDay","isValid","parse","add","sub","set","startOfMonth","endOfMonth","startOfWeek","getHours","getMinutes","getDay","getWeek","enGB","nl","tz","soft","DATETIME_OFFSET_FORMAT","DEFAULT_FIRST_WEEK_CONTAINS_DATE","DEFAULT_WEEK_STARTS_ON","getSetting","IS_GRAALJS","isIncludeTimeOffsetInDateTimes","ISO_DATE_FORMAT","ISO_DATETIME_FORMAT","ISO_TIME_FORMAT","ISO_TIMESTAMP_FORMAT","getCookie","BaseDateTimeUtil","constructor","isoFormat","doOffsets","arguments","length","undefined","_defineProperty","Intl","DateTimeFormat","resolvedOptions","timeZone","_isoFormat","_doOffsets","getOptions","weekStartsOn","firstWeekContainsDate","getIsoFormat","convertFormat","javaFormat","_context","javaToUTS35Map","ZZZ","ZZ","Z","uts35Format","sortedKeys","_sortInstanceProperty","_Object$keys","call","a","b","javaToken","uts35Token","regex","RegExp","replace","getLocale","locale","toDate","date","inputFormat","Date","in","getDateFnsContext","toFormat","targetFormat","parsedDate","toISO","sourceFormat","now","hasFormat","formattedValue","isOutsideRange","toUpperCase","inputDate","afterISODate","isSameOrAfter","isSame","beforeISODate","isSameOrBefore","compareDate","getTime","isOther","isWeekend","SATURDAY_NUMBER","SUNDAY_NUMBER","weekDay","isAmbiguous","dateTime","t","_mapInstanceProperty","x","newDate","minutes","time","indexOf","_calculate","calculationFn","property","value","addSeconds","amount","addMinutes","addHours","addDays","addWeeks","addMonths","addYears","subtractSeconds","subtractMinutes","subtractHours","subtractDays","subtractWeeks","subtractMonths","subtractYears","_get","method","options","_set","setYear","year","setMonth","month","setDay","day","setHour","hour","setMinute","minute","setSecond","second","setMilliseconds","millisecond","setTime","hours","seconds","milliseconds","getTimeZone","_timeZone","setTimeZone","getOffset","dateOffset","offsets","getTimezoneOffsets","daylight","standard","createOffsetObject","info","_context2","_context3","sign","offset","absOffset","Math","abs","_Math$trunc","round","offsetString","_padStartInstanceProperty","String","label","name","abbr","timezone","DateUtil","DateTimeUtil","TimeUtil","TimestampUtil"],"sources":["../../../src/utils/datetime/DateTimeUtil.js"],"sourcesContent":["// @flow\nimport {\n format,\n isAfter,\n isBefore,\n isSameDay,\n isValid,\n parse,\n add,\n sub,\n set,\n startOfMonth,\n endOfMonth,\n startOfWeek,\n getHours,\n getMinutes,\n getDay,\n getWeek,\n} from \"date-fns\";\nimport { enGB, nl } from \"date-fns/locale\";\nimport { tz } from \"@date-fns/tz\";\n\nimport soft from \"timezone-soft\";\n\nimport {\n DATETIME_OFFSET_FORMAT,\n DEFAULT_FIRST_WEEK_CONTAINS_DATE,\n DEFAULT_WEEK_STARTS_ON,\n getSetting,\n IS_GRAALJS,\n isIncludeTimeOffsetInDateTimes,\n ISO_DATE_FORMAT,\n ISO_DATETIME_FORMAT,\n ISO_TIME_FORMAT,\n ISO_TIMESTAMP_FORMAT,\n} from \"../../constants\";\n\nimport { getCookie } from \"../browser/Cookies\";\n\ntype OffsetInfoInput = {\n abbr: string,\n offset: number,\n name: string,\n};\n\nexport type OffsetInfo = {\n abbr: string,\n label: string,\n value: string,\n};\n\n/**\n * @hideconstructor\n */\nclass BaseDateTimeUtil {\n _isoFormat: string;\n _doOffsets: boolean;\n\n _timeZone: string =\n typeof Intl === \"undefined\"\n ? \"Etc/UTC\"\n : Intl.DateTimeFormat().resolvedOptions().timeZone || \"Etc/UTC\";\n\n constructor(isoFormat: string, doOffsets: boolean = false) {\n this._isoFormat = isoFormat;\n this._doOffsets = doOffsets;\n }\n\n /**\n * Indicates if offsets and timezones are relevant\n */\n get doOffsets(): boolean {\n return this._doOffsets ? isIncludeTimeOffsetInDateTimes() : false;\n }\n\n /**\n * Returns the options defined in settings\n */\n getOptions(): {\n weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6,\n firstWeekContainsDate: 1 | 2 | 3 | 4 | 5 | 6 | 7,\n } {\n // indicates on what day the week starts\n const weekStartsOn = getSetting(\n \"CALENDAR_WEEK_STARTS_ON\",\n DEFAULT_WEEK_STARTS_ON,\n );\n\n // indicates which date indicates the first week of the year\n const firstWeekContainsDate = getSetting(\n \"CALENDAR_FIRST_WEEK_CONTAINS_DATE\",\n DEFAULT_FIRST_WEEK_CONTAINS_DATE,\n );\n\n return { weekStartsOn, firstWeekContainsDate };\n }\n\n /**\n */\n getIsoFormat(): string {\n if (this.doOffsets) {\n return this._isoFormat + DATETIME_OFFSET_FORMAT;\n }\n return this._isoFormat;\n }\n\n /**\n */\n convertFormat(javaFormat: string): string {\n if (!javaFormat) {\n return this.getIsoFormat();\n }\n\n const javaToUTS35Map = {\n ZZZ: \"xxx\",\n ZZ: \"xx\",\n Z: \"x\",\n };\n\n // Replace Java pattern tokens with UTS #35 tokens\n let uts35Format = javaFormat;\n\n // Sort keys by length (descending) to handle multi-character tokens first\n const sortedKeys = Object.keys(javaToUTS35Map).sort(\n (a, b) => b.length - a.length,\n );\n\n for (const javaToken of sortedKeys) {\n const uts35Token = javaToUTS35Map[javaToken];\n const regex = new RegExp(javaToken, \"g\"); // Match all occurrences\n uts35Format = uts35Format.replace(regex, uts35Token);\n }\n\n return uts35Format;\n }\n\n /**\n */\n getLocale(): typeof nl | typeof enGB {\n const locale = getCookie(\"locale\") ?? \"en\";\n\n if (locale === \"nl\") {\n return nl;\n }\n\n return enGB;\n }\n\n /**\n */\n toDate(date: string | Date, inputFormat: string = this.getIsoFormat()): Date {\n if (date instanceof Date) {\n return date;\n }\n\n const { weekStartsOn, firstWeekContainsDate } = this.getOptions();\n\n return parse(date, inputFormat, new Date(), {\n in: this.getDateFnsContext(),\n weekStartsOn,\n firstWeekContainsDate,\n });\n }\n\n /**\n */\n toFormat(\n date: string | Date,\n targetFormat: string,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n const { weekStartsOn } = this.getOptions();\n\n const parsedDate = this.toDate(date, inputFormat);\n\n if (isValid(parsedDate)) {\n return format(parsedDate, targetFormat, {\n in: this.getDateFnsContext(),\n weekStartsOn,\n locale: this.getLocale(),\n });\n }\n\n return \"Invalid Date\";\n }\n\n /**\n */\n toISO(\n date: string | Date,\n sourceFormat: string = this.getIsoFormat(),\n ): string {\n return this.toFormat(date, this.getIsoFormat(), sourceFormat);\n }\n\n /**\n */\n now(): string {\n return this.toISO(new Date());\n }\n\n //////////// VALIDATION\n\n /**\n */\n hasFormat(date: string, sourceFormat: string): boolean {\n const parsedDate = this.toDate(date, sourceFormat);\n\n const formattedValue = this.toFormat(parsedDate, sourceFormat);\n if (formattedValue === \"Invalid Date\") {\n return false;\n }\n\n const isOutsideRange =\n isBefore(parsedDate, new Date(1000, 1, 1)) ||\n isAfter(parsedDate, new Date(9999, 11, 31));\n if (isOutsideRange) {\n return false;\n }\n\n return (\n formattedValue.replace(/0/gu, \"\").toUpperCase() ===\n date.replace(/0/gu, \"\").toUpperCase()\n );\n }\n\n /**\n */\n isValid(\n date: string | Date | null | void,\n inputFormat: string = this.getIsoFormat(),\n ): boolean {\n if (!date) {\n return false;\n }\n\n const parsedDate = this.toDate(date, inputFormat);\n return isValid(parsedDate);\n }\n\n /**\n */\n isAfter(\n inputDate: string | Date,\n afterISODate: ?string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): boolean {\n return (\n afterISODate != null &&\n isAfter(this.toDate(inputDate, inputFormat), this.toDate(afterISODate))\n );\n }\n\n /**\n */\n isSameOrAfter(\n inputDate: string | Date,\n afterISODate: ?string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): boolean {\n return (\n afterISODate != null &&\n (this.isAfter(inputDate, afterISODate, inputFormat) ||\n this.isSame(inputDate, afterISODate, inputFormat))\n );\n }\n\n /**\n */\n isBefore(\n inputDate: string | Date,\n beforeISODate: ?string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): boolean {\n return (\n beforeISODate != null &&\n isBefore(this.toDate(inputDate, inputFormat), this.toDate(beforeISODate))\n );\n }\n\n /**\n */\n isSameOrBefore(\n inputDate: string | Date,\n beforeISODate: ?string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): boolean {\n return (\n beforeISODate != null &&\n (this.isBefore(inputDate, beforeISODate, inputFormat) ||\n this.isSame(inputDate, beforeISODate, inputFormat))\n );\n }\n\n /**\n */\n isSame(\n inputDate: string | Date,\n compareDate: ?string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): boolean {\n return (\n compareDate != null &&\n this.toDate(inputDate, inputFormat).getTime() ===\n this.toDate(compareDate).getTime()\n );\n }\n\n /**\n */\n isSameDay(\n inputDate: string | Date,\n compareDate: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): boolean {\n return (\n compareDate != null &&\n isSameDay(\n this.toDate(inputDate, inputFormat),\n this.toDate(compareDate, inputFormat),\n )\n );\n }\n\n /**\n */\n isOther(\n inputDate: string | Date,\n compareDate: ?string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): boolean {\n return !this.isSame(inputDate, compareDate, inputFormat);\n }\n\n /**\n */\n isWeekend(inputDate: string | Date): boolean {\n const SATURDAY_NUMBER = 6;\n const SUNDAY_NUMBER = 0;\n const weekDay = getDay(this.toDate(inputDate));\n\n return weekDay === SATURDAY_NUMBER || weekDay === SUNDAY_NUMBER;\n }\n\n /**\n * Checks if a given local date and time is ambiguous in the specified timezone.\n * Ambiguity happens during the end of daylight saving time (DST) transitions.\n */\n isAmbiguous(\n inputDate: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): boolean {\n if (inputDate == null || typeof Intl === \"undefined\") {\n return false;\n }\n\n const dateTime = this.toDate(inputDate, inputFormat);\n if (!isValid(dateTime)) {\n return false;\n }\n\n const t = [60, -60, 30, -30];\n const a = t.map((x) => {\n const newDate = add(dateTime, { minutes: x });\n return format(newDate, \"HH:mm\");\n });\n const time = format(dateTime, \"HH:mm\");\n return a.indexOf(time) > -1;\n }\n\n //////////// CALCULATIONS\n\n /**\n * @private\n */\n _calculate(\n date: string | Date,\n calculationFn: Function,\n property: string,\n value: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n const parsedDate = this.toDate(date, inputFormat);\n return this.toISO(\n calculationFn(\n parsedDate,\n { [property]: value },\n {\n in: this.getDateFnsContext(),\n },\n ),\n );\n }\n\n /**\n */\n addSeconds(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, add, \"seconds\", amount, inputFormat);\n }\n\n /**\n */\n addMinutes(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, add, \"minutes\", amount, inputFormat);\n }\n\n /**\n */\n addHours(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, add, \"hours\", amount, inputFormat);\n }\n\n /**\n */\n addDays(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, add, \"days\", amount, inputFormat);\n }\n\n /**\n */\n addWeeks(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, add, \"weeks\", amount, inputFormat);\n }\n\n /**\n */\n addMonths(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, add, \"months\", amount, inputFormat);\n }\n\n /**\n */\n addYears(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, add, \"years\", amount, inputFormat);\n }\n\n /**\n */\n subtractSeconds(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, sub, \"seconds\", amount, inputFormat);\n }\n\n /**\n */\n subtractMinutes(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, sub, \"minutes\", amount, inputFormat);\n }\n\n /**\n */\n subtractHours(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, sub, \"hours\", amount, inputFormat);\n }\n\n /**\n */\n subtractDays(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, sub, \"days\", amount, inputFormat);\n }\n\n /**\n */\n subtractWeeks(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, sub, \"weeks\", amount, inputFormat);\n }\n\n /**\n */\n subtractMonths(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, sub, \"months\", amount, inputFormat);\n }\n\n /**\n */\n subtractYears(\n date: string,\n amount: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._calculate(date, sub, \"years\", amount, inputFormat);\n }\n\n //////////// GETTERS\n\n /**\n * @private\n */\n _get(\n date: string | Date,\n method: Function,\n inputFormat: string = this.getIsoFormat(),\n options: Object = {},\n ): string {\n const parsedDate = this.toDate(date, inputFormat);\n return this.toISO(\n method(parsedDate, {\n in: this.getDateFnsContext(),\n ...options,\n }),\n );\n }\n\n /**\n */\n startOfMonth(\n date: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._get(date, startOfMonth, inputFormat);\n }\n\n /**\n */\n endOfMonth(\n date: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._get(date, endOfMonth, inputFormat);\n }\n\n /**\n */\n startOfWeek(\n date: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n const { weekStartsOn } = this.getOptions();\n return this._get(date, startOfWeek, inputFormat, {\n weekStartsOn,\n });\n }\n\n /**\n */\n getHours(\n date: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): number {\n const parsedDate = this.toDate(date, inputFormat);\n return getHours(parsedDate, { in: this.getDateFnsContext() });\n }\n\n /**\n */\n getMinutes(\n date: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): number {\n const parsedDate = this.toDate(date, inputFormat);\n return getMinutes(parsedDate, { in: this.getDateFnsContext() });\n }\n\n /**\n */\n getWeek(\n date: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): number {\n const { weekStartsOn, firstWeekContainsDate } = this.getOptions();\n const parsedDate = this.toDate(date, inputFormat);\n return getWeek(parsedDate, {\n in: this.getDateFnsContext(),\n weekStartsOn,\n firstWeekContainsDate,\n });\n }\n\n //////////// SETTERS\n\n /**\n * @private\n */\n _set(\n date: string | Date,\n property: string,\n value: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n const parsedDate = this.toDate(date, inputFormat);\n return this.toISO(\n set(\n parsedDate,\n { [property]: value },\n // {\n // in: this.getDateFnsContext(),\n // },\n ),\n );\n }\n\n /**\n */\n setYear(\n date: string | Date,\n year: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._set(date, \"year\", year, inputFormat);\n }\n\n /**\n */\n setMonth(\n date: string | Date,\n month: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._set(date, \"month\", month, inputFormat);\n }\n\n /**\n */\n setDay(\n date: string | Date,\n day: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._set(date, \"date\", day, inputFormat);\n }\n\n /**\n */\n setHour(\n date: string | Date,\n hour: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._set(date, \"hours\", hour, inputFormat);\n }\n\n /**\n */\n setMinute(\n date: string | Date,\n minute: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._set(date, \"minutes\", minute, inputFormat);\n }\n\n /**\n */\n setSecond(\n date: string | Date,\n second: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._set(date, \"seconds\", second, inputFormat);\n }\n\n /**\n */\n setMilliseconds(\n date: string | Date,\n millisecond: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n return this._set(date, \"milliseconds\", millisecond, inputFormat);\n }\n\n /**\n */\n setTime(\n date: string,\n hours: number,\n minutes: number,\n seconds: number,\n milliseconds: number,\n inputFormat: string = this.getIsoFormat(),\n ): string {\n const parsedDate = this.toDate(date, inputFormat);\n return this.toISO(\n set(\n parsedDate,\n { hours, minutes, seconds, milliseconds },\n {\n in: this.getDateFnsContext(),\n },\n ),\n );\n }\n\n //////////// Timezone related\n\n /**\n */\n getTimeZone(): string {\n return this._timeZone;\n }\n\n /**\n */\n setTimeZone(timeZone: string) {\n this._timeZone = timeZone;\n }\n\n /**\n */\n getDateFnsContext(): null | Function {\n if (this.doOffsets && !IS_GRAALJS) {\n return tz(this.getTimeZone());\n }\n return undefined;\n }\n\n //////////// Offsets\n\n /**\n */\n getOffset(\n date: string | Date,\n inputFormat: string = this.getIsoFormat(),\n ): OffsetInfo | null {\n const parsedDate = this.toDate(date, inputFormat);\n if (isValid(parsedDate)) {\n const dateOffset = this.toFormat(parsedDate, DATETIME_OFFSET_FORMAT);\n const offsets = this.getTimezoneOffsets();\n if (\n typeof offsets.daylight !== \"undefined\" &&\n offsets.daylight.value === dateOffset\n ) {\n return offsets.daylight;\n } else if (\n typeof offsets.standard !== \"undefined\" &&\n offsets.standard.value === dateOffset\n ) {\n return offsets.standard;\n }\n }\n return null;\n }\n\n /**\n */\n getTimezoneOffsets(): {\n standard?: OffsetInfo,\n daylight?: OffsetInfo,\n } {\n const createOffsetObject = (info: OffsetInfoInput): OffsetInfo => {\n const sign = info.offset < 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(info.offset);\n const hours = Math.trunc(absOffset);\n const minutes = Math.round((absOffset % 1) * 60);\n\n const offsetString = `${sign}${String(hours + (minutes === 60 ? 1 : 0)).padStart(2, \"0\")}:${String(minutes % 60).padStart(2, \"0\")}`;\n\n return {\n label: info.name,\n abbr: info.abbr,\n value: offsetString,\n };\n };\n\n const timezone = soft(this.getTimeZone());\n\n if (timezone.length === 0) {\n return {\n standard: {\n label: \"Etc/UTC\",\n abbr: \"Etc/UTC\",\n value: \"+00:00\",\n },\n };\n }\n\n const { daylight, standard } = timezone[0];\n\n if (daylight) {\n return {\n daylight: createOffsetObject(daylight),\n standard: createOffsetObject(standard),\n };\n }\n\n return { standard: createOffsetObject(standard) };\n }\n}\n\n/**\n * DateUtil\n */\nconst DateUtil: BaseDateTimeUtil = new BaseDateTimeUtil(ISO_DATE_FORMAT);\n\n/**\n * DateTimeUtil\n */\nconst DateTimeUtil: BaseDateTimeUtil = new BaseDateTimeUtil(\n ISO_DATETIME_FORMAT,\n true,\n);\n\n/**\n * TimeUtil\n */\nconst TimeUtil: BaseDateTimeUtil = new BaseDateTimeUtil(ISO_TIME_FORMAT);\n\n/**\n * TimestampUtil\n */\nconst TimestampUtil: BaseDateTimeUtil = new BaseDateTimeUtil(\n ISO_TIMESTAMP_FORMAT,\n true,\n);\n\nexport { DateUtil, DateTimeUtil, TimeUtil, TimestampUtil };\n"],"mappings":"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","ignoreList":[]}
@@ -222,17 +222,24 @@ class DatetimeAttributeModel extends _StringAttributeModel.default {
222
222
  if (this._dateInputFormat) {
223
223
  return this._dateInputFormat;
224
224
  }
225
-
226
- // remove time and offset tokens
227
- const charsToRemove = "HhaKmsSzXxO:";
225
+ const dateEraChars = "yMLdQDEewGu";
226
+ const timeOffsetChars = "HhaKmsSZzXxO";
227
+ const format = this.format;
228
228
  let inputFormat = "";
229
229
  let isInQuotes = false;
230
- for (let i = 0; i < this.format.length; i++) {
231
- const char = this.format[i];
230
+ let isInDate = false;
231
+ for (let i = 0; i < format.length; i++) {
232
+ const char = format[i];
232
233
  if (char === "'") {
233
- isInQuotes = !isInQuotes;
234
+ const prevChar = i > 0 ? format[i - 1] : "";
235
+ const nextChar = format[i + 1];
236
+ isInQuotes = prevChar === "'" || nextChar === "'" ? true : !isInQuotes;
237
+ } else if (!isInQuotes && (0, _includes.default)(dateEraChars).call(dateEraChars, char)) {
238
+ isInDate = true;
239
+ } else if (!isInQuotes && (0, _includes.default)(timeOffsetChars).call(timeOffsetChars, char)) {
240
+ isInDate = false;
234
241
  }
235
- if (isInQuotes || !(0, _includes.default)(charsToRemove).call(charsToRemove, char)) {
242
+ if (isInDate) {
236
243
  inputFormat += char;
237
244
  }
238
245
  }
@@ -276,17 +276,28 @@ class DatetimeAttributeModel extends StringAttributeModel {
276
276
  return this._dateInputFormat;
277
277
  }
278
278
 
279
- // remove time and offset tokens
280
- const charsToRemove = "HhaKmsSzXxO:";
279
+ const dateEraChars = "yMLdQDEewGu";
280
+ const timeOffsetChars = "HhaKmsSZzXxO";
281
281
 
282
+ const format = this.format;
282
283
  let inputFormat = "";
284
+
283
285
  let isInQuotes = false;
284
- for (let i = 0; i < this.format.length; i++) {
285
- const char = this.format[i];
286
+ let isInDate = false;
287
+
288
+ for (let i = 0; i < format.length; i++) {
289
+ const char = format[i];
286
290
  if (char === "'") {
287
- isInQuotes = !isInQuotes;
291
+ const prevChar = i > 0 ? format[i - 1] : "";
292
+ const nextChar = format[i + 1];
293
+ isInQuotes = prevChar === "'" || nextChar === "'" ? true : !isInQuotes;
294
+ } else if (!isInQuotes && dateEraChars.includes(char)) {
295
+ isInDate = true;
296
+ } else if (!isInQuotes && timeOffsetChars.includes(char)) {
297
+ isInDate = false;
288
298
  }
289
- if (isInQuotes || !charsToRemove.includes(char)) {
299
+
300
+ if (isInDate) {
290
301
  inputFormat += char;
291
302
  }
292
303
  }