{
  "version": 3,
  "sources": ["../../../src/field-types/utils/is-valid-date-boundary.ts"],
  "sourcesContent": ["/**\n * External dependencies\n */\nimport { isValid as isValidDate } from 'date-fns';\n\n/**\n * WordPress dependencies\n */\nimport { getDate } from '@wordpress/date';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\n\ntype Boundary = 'min' | 'max';\n\nfunction parseDateLike( value?: string ) {\n\tif ( ! value ) {\n\t\treturn null;\n\t}\n\n\t// Pre-check to avoid passing unparseable strings to getDate,\n\t// which uses moment.js and emits deprecation warnings.\n\tif ( ! isValidDate( new Date( value ) ) ) {\n\t\treturn null;\n\t}\n\n\tconst parsed = getDate( value );\n\treturn parsed && isValidDate( parsed ) ? parsed : null;\n}\n\nfunction validateDateLikeBoundary< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >,\n\tboundary: Boundary\n): boolean {\n\tconst constraint = field.isValid[ boundary ]?.constraint;\n\tif ( typeof constraint !== 'string' ) {\n\t\treturn false;\n\t}\n\n\tconst value = field.getValue( { item } );\n\tconst boundaryValue = Array.isArray( value )\n\t\t? value[ boundary === 'min' ? 0 : value.length - 1 ]\n\t\t: value;\n\n\tif (\n\t\tboundaryValue === undefined ||\n\t\tboundaryValue === null ||\n\t\tboundaryValue === ''\n\t) {\n\t\treturn true;\n\t}\n\n\tconst parsedConstraint = parseDateLike( constraint );\n\tconst parsedValue = parseDateLike( String( boundaryValue ) );\n\n\treturn (\n\t\t!! parsedConstraint &&\n\t\t!! parsedValue &&\n\t\t( boundary === 'min'\n\t\t\t? parsedValue.getTime() >= parsedConstraint.getTime()\n\t\t\t: parsedValue.getTime() <= parsedConstraint.getTime() )\n\t);\n}\n\nexport function isValidMinDate< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >\n): boolean {\n\treturn validateDateLikeBoundary( item, field, 'min' );\n}\n\nexport function isValidMaxDate< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >\n): boolean {\n\treturn validateDateLikeBoundary( item, field, 'max' );\n}\n"],
  "mappings": ";AAGA,SAAS,WAAW,mBAAmB;AAKvC,SAAS,eAAe;AASxB,SAAS,cAAe,OAAiB;AACxC,MAAK,CAAE,OAAQ;AACd,WAAO;AAAA,EACR;AAIA,MAAK,CAAE,YAAa,IAAI,KAAM,KAAM,CAAE,GAAI;AACzC,WAAO;AAAA,EACR;AAEA,QAAM,SAAS,QAAS,KAAM;AAC9B,SAAO,UAAU,YAAa,MAAO,IAAI,SAAS;AACnD;AAEA,SAAS,yBACR,MACA,OACA,UACU;AACV,QAAM,aAAa,MAAM,QAAS,QAAS,GAAG;AAC9C,MAAK,OAAO,eAAe,UAAW;AACrC,WAAO;AAAA,EACR;AAEA,QAAM,QAAQ,MAAM,SAAU,EAAE,KAAK,CAAE;AACvC,QAAM,gBAAgB,MAAM,QAAS,KAAM,IACxC,MAAO,aAAa,QAAQ,IAAI,MAAM,SAAS,CAAE,IACjD;AAEH,MACC,kBAAkB,UAClB,kBAAkB,QAClB,kBAAkB,IACjB;AACD,WAAO;AAAA,EACR;AAEA,QAAM,mBAAmB,cAAe,UAAW;AACnD,QAAM,cAAc,cAAe,OAAQ,aAAc,CAAE;AAE3D,SACC,CAAC,CAAE,oBACH,CAAC,CAAE,gBACD,aAAa,QACZ,YAAY,QAAQ,KAAK,iBAAiB,QAAQ,IAClD,YAAY,QAAQ,KAAK,iBAAiB,QAAQ;AAEvD;AAEO,SAAS,eACf,MACA,OACU;AACV,SAAO,yBAA0B,MAAM,OAAO,KAAM;AACrD;AAEO,SAAS,eACf,MACA,OACU;AACV,SAAO,yBAA0B,MAAM,OAAO,KAAM;AACrD;",
  "names": []
}
