{"version":3,"sources":["webpack:///./node_modules/@ionic/core/dist/esm-es5/haptic-c8f1473e.js","webpack:///./node_modules/@ionic/core/dist/esm-es5/theme-18cbe2cc.js","webpack:///./node_modules/@ionic/core/dist/esm-es5/ion-datetime_3-ios.entry.js"],"names":["hapticSelection","engine","window","TapticEngine","selection","hapticSelectionStart","gestureSelectionStart","hapticSelectionChanged","gestureSelectionChanged","hapticSelectionEnd","gestureSelectionEnd","hostContext","selector","el","closest","createColorClasses","color","_a","length","undefined","getClassList","classes","array","Array","isArray","split","filter","c","map","trim","getClassMap","forEach","SCHEME","openURL","url","ev","direction","router","this","test","document","querySelector","preventDefault","push","getDateValue","date","format","getValue","getValueFromFormat","FORMAT_A","FORMAT_a","ampm","defaultDate","parseDate","Date","toISOString","renderDatetime","template","value","locale","tokens","hasText","FORMAT_KEYS","index","indexOf","f","token","text","renderTextFormat","k","replace","i","FORMAT_DDDD","FORMAT_DDD","hour","toUpperCase","FORMAT_YY","FORMAT_MM","FORMAT_DD","FORMAT_HH","FORMAT_mm","FORMAT_ss","twoDigit","FORMAT_YYYY","fourDigit","FORMAT_MMMM","monthNames","MONTH_NAMES","FORMAT_MMM","monthShortNames","MONTH_SHORT_NAMES","FORMAT_hh","FORMAT_h","toString","year","month","day","getDay","dayNames","DAY_NAMES","dayShortNames","DAY_SHORT_NAMES","e","dateValueRange","min","max","opts","Error","FORMAT_M","FORMAT_D","FORMAT_H","FORMAT_m","FORMAT_s","dateSortValue","minute","parseInt","dateDataSortValue","data","daysInMonth","isLeapYear","ISO_8601_REGEXP","TIME_REGEXP","val","parse","exec","unshift","tzOffset","second","millisecond","getLocalDateTime","dateString","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","updateDate","existingData","newData","localDateTime","Number","isNaN","getTime","Object","assign","_i","keys","key","console","warn","hasOwnProperty","parseTemplate","formats","charAt","words","w","word","VALID_AMPM_PREFIX","convertFormatToKey","convertDataToISO","rtn","threeDigit","Math","floor","abs","convertToArrayOfStrings","input","type","values","convertToArrayOfNumbers","num","isFinite","slice","Datetime","class_1","hostRef","_this","inputId","datetimeIds","datetimeMin","datetimeMax","datetimeValue","isExpanded","name","disabled","readonly","displayFormat","cancelText","doneText","onClick","setFocus","open","onFocus","ionFocus","emit","onBlur","ionBlur","ionCancel","ionChange","ionStyle","prototype","disabledChanged","emitStyle","valueChanged","updateDatetimeValue","componentWillLoad","pickerOptions","picker","label","generatePickerOptions","create","sent","onDidDismiss","then","addEventListener","event","colSelectedIndex","colOptions","changeData","detail","selectedIndex","options","columns","generateColumns","present","placeholder","hasValue","mode","buttons","role","handler","getTimezoneOffset","pickerFormat","DEFAULT_FORMAT","calcMinMax","self","optValue","findIndex","opt","find","column","validateColumns","divyColumns","today","minCompareVal","maxCompareVal","yearCol","selectedYear","col","yearOpt","selectedMonth","validateColumn","numDaysInMonth","selectedDay","selectedHour","todaysYear","yearValues","years","apply","error","lowerBounds","upperBounds","lb","ub","indexMin","indexMax","defineProperty","get","enumerable","configurable","buttonEl","focus","render","_b","labelId","addPlaceholderClass","datetimeText","id","class","ref","btnEl","width","columnsWidth","option","align","optionsWidth","columnWidth","iosEnterAnimation","baseEl","baseAnimation","backdropAnimation","wrapperAnimation","addElement","fromTo","easing","duration","addAnimation","iosLeaveAnimation","Picker","class_2","presented","keyboardClose","showBackdrop","backdropDismiss","animated","onBackdropTap","cancelBtn","b","buttonClick","dismiss","didPresent","willPresent","willDismiss","didDismiss","durationTimeout","setTimeout","clearTimeout","onWillDismiss","getColumn","Promise","resolve","button","shouldDismiss","getSelected","selected","selectedColumn","columnIndex","cssClass","style","zIndex","overlayIndex","onIonBackdropTap","visible","tappable","buttonWrapperClass","buttonClass","PickerColumnCmp","class_3","optHeight","rotateFactor","scaleFactor","velocity","y","noAnimate","ionPickerColChange","colChanged","refresh","connectedCallback","pickerRotateFactor","pickerScaleFactor","gesture","createGesture","gestureName","gesturePriority","threshold","onStart","onMove","onEnd","setDisabled","tmrId","componentDidLoad","colEl","optsEl","firstElementChild","clientHeight","disconnectedCallback","cancelAnimationFrame","rafId","destroy","emitColChange","setSelected","update","saveY","translateY","translateZ","indexForY","durationStr","scaleStr","children","optOffset","transform","rotateX","transitionDuration","classList","add","PICKER_OPT_SELECTED","remove","prevSelected","lastIndex","decelerate","DECELERATION_FRICTION","minY","maxY","notLockedIn","round","requestAnimationFrame","currentPos","stopPropagation","deltaY","pow","bounceFrom","MAX_PICKER_SPEED","velocityY","target","hasAttribute","getAttribute","TRANSITION_DURATION","forceRefresh","Button","prefix","prefixWidth","maxWidth","o","suffix","suffixWidth"],"mappings":"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","file":"js/chunk-1236b7ea.09cbee3f.js","sourcesContent":["/**\n * Check to see if the Haptic Plugin is available\n * @return Returns `true` or false if the plugin is available\n */\n/**\n * Trigger a selection changed haptic event. Good for one-time events\n * (not for gestures)\n */\nvar hapticSelection = function () {\n var engine = window.TapticEngine;\n if (engine) {\n engine.selection();\n }\n};\n/**\n * Tell the haptic engine that a gesture for a selection change is starting.\n */\nvar hapticSelectionStart = function () {\n var engine = window.TapticEngine;\n if (engine) {\n engine.gestureSelectionStart();\n }\n};\n/**\n * Tell the haptic engine that a selection changed during a gesture.\n */\nvar hapticSelectionChanged = function () {\n var engine = window.TapticEngine;\n if (engine) {\n engine.gestureSelectionChanged();\n }\n};\n/**\n * Tell the haptic engine we are done with a gesture. This needs to be\n * called lest resources are not properly recycled.\n */\nvar hapticSelectionEnd = function () {\n var engine = window.TapticEngine;\n if (engine) {\n engine.gestureSelectionEnd();\n }\n};\nexport { hapticSelectionStart as a, hapticSelectionChanged as b, hapticSelectionEnd as c, hapticSelection as h };\n","import { __awaiter, __generator } from \"tslib\";\nvar hostContext = function (selector, el) {\n return el.closest(selector) !== null;\n};\n/**\n * Create the mode and color classes for the component based on the classes passed in\n */\nvar createColorClasses = function (color) {\n var _a;\n return (typeof color === 'string' && color.length > 0) ? (_a = {\n 'ion-color': true\n },\n _a[\"ion-color-\" + color] = true,\n _a) : undefined;\n};\nvar getClassList = function (classes) {\n if (classes !== undefined) {\n var array = Array.isArray(classes) ? classes : classes.split(' ');\n return array\n .filter(function (c) { return c != null; })\n .map(function (c) { return c.trim(); })\n .filter(function (c) { return c !== ''; });\n }\n return [];\n};\nvar getClassMap = function (classes) {\n var map = {};\n getClassList(classes).forEach(function (c) { return map[c] = true; });\n return map;\n};\nvar SCHEME = /^[a-z][a-z0-9+\\-.]*:/;\nvar openURL = function (url, ev, direction) { return __awaiter(void 0, void 0, void 0, function () {\n var router;\n return __generator(this, function (_a) {\n if (url != null && url[0] !== '#' && !SCHEME.test(url)) {\n router = document.querySelector('ion-router');\n if (router) {\n if (ev != null) {\n ev.preventDefault();\n }\n return [2 /*return*/, router.push(url, direction)];\n }\n }\n return [2 /*return*/, false];\n });\n}); };\nexport { createColorClasses as c, getClassMap as g, hostContext as h, openURL as o };\n","import { __awaiter, __generator } from \"tslib\";\nimport { r as registerInstance, d as createEvent, c as getIonMode, h, H as Host, e as getElement } from './core-feeeff0d.js';\nimport './config-3c7f3790.js';\nimport { c as clamp, f as findItemLabel, a as renderHiddenInput } from './helpers-46f4a262.js';\nimport { c as createAnimation } from './animation-af478fe9.js';\nimport { p as pickerController, d as prepareOverlay, e as present, f as dismiss, g as eventMethod, s as safeCall } from './overlays-10640d86.js';\nimport { h as hostContext, g as getClassMap } from './theme-18cbe2cc.js';\nimport { b as hapticSelectionChanged } from './haptic-c8f1473e.js';\n/**\n * Gets a date value given a format\n * Defaults to the current date if\n * no date given\n */\nvar getDateValue = function (date, format) {\n var getValue = getValueFromFormat(date, format);\n if (getValue !== undefined) {\n if (format === FORMAT_A || format === FORMAT_a) {\n date.ampm = getValue;\n }\n return getValue;\n }\n var defaultDate = parseDate(new Date().toISOString());\n return getValueFromFormat(defaultDate, format);\n};\nvar renderDatetime = function (template, value, locale) {\n if (value === undefined) {\n return undefined;\n }\n var tokens = [];\n var hasText = false;\n FORMAT_KEYS.forEach(function (format, index) {\n if (template.indexOf(format.f) > -1) {\n var token = '{' + index + '}';\n var text = renderTextFormat(format.f, value[format.k], value, locale);\n if (!hasText && text !== undefined && value[format.k] != null) {\n hasText = true;\n }\n tokens.push(token, text || '');\n template = template.replace(format.f, token);\n }\n });\n if (!hasText) {\n return undefined;\n }\n for (var i = 0; i < tokens.length; i += 2) {\n template = template.replace(tokens[i], tokens[i + 1]);\n }\n return template;\n};\nvar renderTextFormat = function (format, value, date, locale) {\n if ((format === FORMAT_DDDD || format === FORMAT_DDD)) {\n try {\n value = (new Date(date.year, date.month - 1, date.day)).getDay();\n if (format === FORMAT_DDDD) {\n return (locale.dayNames ? locale.dayNames : DAY_NAMES)[value];\n }\n return (locale.dayShortNames ? locale.dayShortNames : DAY_SHORT_NAMES)[value];\n }\n catch (e) {\n // ignore\n }\n return undefined;\n }\n if (format === FORMAT_A) {\n return date !== undefined && date.hour !== undefined\n ? (date.hour < 12 ? 'AM' : 'PM')\n : value ? value.toUpperCase() : '';\n }\n if (format === FORMAT_a) {\n return date !== undefined && date.hour !== undefined\n ? (date.hour < 12 ? 'am' : 'pm')\n : value || '';\n }\n if (value == null) {\n return '';\n }\n if (format === FORMAT_YY || format === FORMAT_MM ||\n format === FORMAT_DD || format === FORMAT_HH ||\n format === FORMAT_mm || format === FORMAT_ss) {\n return twoDigit(value);\n }\n if (format === FORMAT_YYYY) {\n return fourDigit(value);\n }\n if (format === FORMAT_MMMM) {\n return (locale.monthNames ? locale.monthNames : MONTH_NAMES)[value - 1];\n }\n if (format === FORMAT_MMM) {\n return (locale.monthShortNames ? locale.monthShortNames : MONTH_SHORT_NAMES)[value - 1];\n }\n if (format === FORMAT_hh || format === FORMAT_h) {\n if (value === 0) {\n return '12';\n }\n if (value > 12) {\n value -= 12;\n }\n if (format === FORMAT_hh && value < 10) {\n return ('0' + value);\n }\n }\n return value.toString();\n};\nvar dateValueRange = function (format, min, max) {\n var opts = [];\n if (format === FORMAT_YYYY || format === FORMAT_YY) {\n // year\n if (max.year === undefined || min.year === undefined) {\n throw new Error('min and max year is undefined');\n }\n for (var i = max.year; i >= min.year; i--) {\n opts.push(i);\n }\n }\n else if (format === FORMAT_MMMM || format === FORMAT_MMM ||\n format === FORMAT_MM || format === FORMAT_M ||\n format === FORMAT_hh || format === FORMAT_h) {\n // month or 12-hour\n for (var i = 1; i < 13; i++) {\n opts.push(i);\n }\n }\n else if (format === FORMAT_DDDD || format === FORMAT_DDD ||\n format === FORMAT_DD || format === FORMAT_D) {\n // day\n for (var i = 1; i < 32; i++) {\n opts.push(i);\n }\n }\n else if (format === FORMAT_HH || format === FORMAT_H) {\n // 24-hour\n for (var i = 0; i < 24; i++) {\n opts.push(i);\n }\n }\n else if (format === FORMAT_mm || format === FORMAT_m) {\n // minutes\n for (var i = 0; i < 60; i++) {\n opts.push(i);\n }\n }\n else if (format === FORMAT_ss || format === FORMAT_s) {\n // seconds\n for (var i = 0; i < 60; i++) {\n opts.push(i);\n }\n }\n else if (format === FORMAT_A || format === FORMAT_a) {\n // AM/PM\n opts.push('am', 'pm');\n }\n return opts;\n};\nvar dateSortValue = function (year, month, day, hour, minute) {\n if (hour === void 0) { hour = 0; }\n if (minute === void 0) { minute = 0; }\n return parseInt(\"1\" + fourDigit(year) + twoDigit(month) + twoDigit(day) + twoDigit(hour) + twoDigit(minute), 10);\n};\nvar dateDataSortValue = function (data) {\n return dateSortValue(data.year, data.month, data.day, data.hour, data.minute);\n};\nvar daysInMonth = function (month, year) {\n return (month === 4 || month === 6 || month === 9 || month === 11) ? 30 : (month === 2) ? isLeapYear(year) ? 29 : 28 : 31;\n};\nvar isLeapYear = function (year) {\n return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);\n};\nvar ISO_8601_REGEXP = /^(\\d{4}|[+\\-]\\d{6})(?:-(\\d{2})(?:-(\\d{2}))?)?(?:T(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(?:(Z)|([+\\-])(\\d{2})(?::(\\d{2}))?)?)?$/;\nvar TIME_REGEXP = /^((\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(?:(Z)|([+\\-])(\\d{2})(?::(\\d{2}))?)?)?$/;\nvar parseDate = function (val) {\n // manually parse IS0 cuz Date.parse cannot be trusted\n // ISO 8601 format: 1994-12-15T13:47:20Z\n var parse = null;\n if (val != null && val !== '') {\n // try parsing for just time first, HH:MM\n parse = TIME_REGEXP.exec(val);\n if (parse) {\n // adjust the array so it fits nicely with the datetime parse\n parse.unshift(undefined, undefined);\n parse[2] = parse[3] = undefined;\n }\n else {\n // try parsing for full ISO datetime\n parse = ISO_8601_REGEXP.exec(val);\n }\n }\n if (parse === null) {\n // wasn't able to parse the ISO datetime\n return undefined;\n }\n // ensure all the parse values exist with at least 0\n for (var i = 1; i < 8; i++) {\n parse[i] = parse[i] !== undefined ? parseInt(parse[i], 10) : undefined;\n }\n var tzOffset = 0;\n if (parse[9] && parse[10]) {\n // hours\n tzOffset = parseInt(parse[10], 10) * 60;\n if (parse[11]) {\n // minutes\n tzOffset += parseInt(parse[11], 10);\n }\n if (parse[9] === '-') {\n // + or -\n tzOffset *= -1;\n }\n }\n return {\n year: parse[1],\n month: parse[2],\n day: parse[3],\n hour: parse[4],\n minute: parse[5],\n second: parse[6],\n millisecond: parse[7],\n tzOffset: tzOffset,\n };\n};\n/**\n * Converts a valid UTC datetime string\n * To the user's local timezone\n * Note: This is not meant for time strings\n * such as \"01:47\"\n */\nvar getLocalDateTime = function (dateString) {\n if (dateString === void 0) { dateString = ''; }\n /**\n * If user passed in undefined\n * or null, convert it to the\n * empty string since the rest\n * of this functions expects\n * a string\n */\n if (dateString === undefined || dateString === null) {\n dateString = '';\n }\n /**\n * Ensures that YYYY-MM-DD, YYYY-MM,\n * YYYY-DD, etc does not get affected\n * by timezones and stays on the day/month\n * that the user provided\n */\n if (dateString.length === 10 ||\n dateString.length === 7) {\n dateString += ' ';\n }\n var date = (typeof dateString === 'string' && dateString.length > 0) ? new Date(dateString) : new Date();\n return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n};\nvar updateDate = function (existingData, newData) {\n if (!newData || typeof newData === 'string') {\n var localDateTime = getLocalDateTime(newData);\n if (!Number.isNaN(localDateTime.getTime())) {\n newData = localDateTime.toISOString();\n }\n }\n if (newData && newData !== '') {\n if (typeof newData === 'string') {\n // new date is a string, and hopefully in the ISO format\n // convert it to our DatetimeData if a valid ISO\n newData = parseDate(newData);\n if (newData) {\n // successfully parsed the ISO string to our DatetimeData\n Object.assign(existingData, newData);\n return true;\n }\n }\n else if ((newData.year || newData.hour || newData.month || newData.day || newData.minute || newData.second)) {\n // newData is from the datetime picker's selected values\n // update the existing datetimeValue with the new values\n if (newData.ampm !== undefined && newData.hour !== undefined) {\n // change the value of the hour based on whether or not it is am or pm\n // if the meridiem is pm and equal to 12, it remains 12\n // otherwise we add 12 to the hour value\n // if the meridiem is am and equal to 12, we change it to 0\n // otherwise we use its current hour value\n // for example: 8 pm becomes 20, 12 am becomes 0, 4 am becomes 4\n newData.hour.value = (newData.ampm.value === 'pm')\n ? (newData.hour.value === 12 ? 12 : newData.hour.value + 12)\n : (newData.hour.value === 12 ? 0 : newData.hour.value);\n }\n // merge new values from the picker's selection\n // to the existing DatetimeData values\n for (var _i = 0, _a = Object.keys(newData); _i < _a.length; _i++) {\n var key = _a[_i];\n existingData[key] = newData[key].value;\n }\n return true;\n }\n else if (newData.ampm) {\n // Even though in the picker column hour values are between 1 and 12, the hour value is actually normalized\n // to [0, 23] interval. Because of this when changing between AM and PM we have to update the hour so it points\n // to the correct HH hour\n newData.hour = {\n value: newData.hour\n ? newData.hour.value\n : (newData.ampm.value === 'pm'\n ? (existingData.hour < 12 ? existingData.hour + 12 : existingData.hour)\n : (existingData.hour >= 12 ? existingData.hour - 12 : existingData.hour))\n };\n existingData['hour'] = newData['hour'].value;\n existingData['ampm'] = newData['ampm'].value;\n return true;\n }\n // eww, invalid data\n console.warn(\"Error parsing date: \\\"\" + newData + \"\\\". Please provide a valid ISO 8601 datetime format: https://www.w3.org/TR/NOTE-datetime\");\n }\n else {\n // blank data, clear everything out\n for (var k in existingData) {\n if (existingData.hasOwnProperty(k)) {\n delete existingData[k];\n }\n }\n }\n return false;\n};\nvar parseTemplate = function (template) {\n var formats = [];\n template = template.replace(/[^\\w\\s]/gi, ' ');\n FORMAT_KEYS.forEach(function (format) {\n if (format.f.length > 1 && template.indexOf(format.f) > -1 && template.indexOf(format.f + format.f.charAt(0)) < 0) {\n template = template.replace(format.f, ' ' + format.f + ' ');\n }\n });\n var words = template.split(' ').filter(function (w) { return w.length > 0; });\n words.forEach(function (word, i) {\n FORMAT_KEYS.forEach(function (format) {\n if (word === format.f) {\n if (word === FORMAT_A || word === FORMAT_a) {\n // this format is an am/pm format, so it's an \"a\" or \"A\"\n if ((formats.indexOf(FORMAT_h) < 0 && formats.indexOf(FORMAT_hh) < 0) ||\n VALID_AMPM_PREFIX.indexOf(words[i - 1]) === -1) {\n // template does not already have a 12-hour format\n // or this am/pm format doesn't have a hour, minute, or second format immediately before it\n // so do not treat this word \"a\" or \"A\" as the am/pm format\n return;\n }\n }\n formats.push(word);\n }\n });\n });\n return formats;\n};\nvar getValueFromFormat = function (date, format) {\n if (format === FORMAT_A || format === FORMAT_a) {\n return (date.hour < 12 ? 'am' : 'pm');\n }\n if (format === FORMAT_hh || format === FORMAT_h) {\n return (date.hour > 12 ? date.hour - 12 : (date.hour === 0 ? 12 : date.hour));\n }\n return date[convertFormatToKey(format)];\n};\nvar convertFormatToKey = function (format) {\n for (var k in FORMAT_KEYS) {\n if (FORMAT_KEYS[k].f === format) {\n return FORMAT_KEYS[k].k;\n }\n }\n return undefined;\n};\nvar convertDataToISO = function (data) {\n // https://www.w3.org/TR/NOTE-datetime\n var rtn = '';\n if (data.year !== undefined) {\n // YYYY\n rtn = fourDigit(data.year);\n if (data.month !== undefined) {\n // YYYY-MM\n rtn += '-' + twoDigit(data.month);\n if (data.day !== undefined) {\n // YYYY-MM-DD\n rtn += '-' + twoDigit(data.day);\n if (data.hour !== undefined) {\n // YYYY-MM-DDTHH:mm:SS\n rtn += \"T\" + twoDigit(data.hour) + \":\" + twoDigit(data.minute) + \":\" + twoDigit(data.second);\n if (data.millisecond > 0) {\n // YYYY-MM-DDTHH:mm:SS.SSS\n rtn += '.' + threeDigit(data.millisecond);\n }\n if (data.tzOffset === undefined) {\n // YYYY-MM-DDTHH:mm:SSZ\n rtn += 'Z';\n }\n else {\n // YYYY-MM-DDTHH:mm:SS+/-HH:mm\n rtn += (data.tzOffset > 0 ? '+' : '-') + twoDigit(Math.floor(Math.abs(data.tzOffset / 60))) + ':' + twoDigit(data.tzOffset % 60);\n }\n }\n }\n }\n }\n else if (data.hour !== undefined) {\n // HH:mm\n rtn = twoDigit(data.hour) + ':' + twoDigit(data.minute);\n if (data.second !== undefined) {\n // HH:mm:SS\n rtn += ':' + twoDigit(data.second);\n if (data.millisecond !== undefined) {\n // HH:mm:SS.SSS\n rtn += '.' + threeDigit(data.millisecond);\n }\n }\n }\n return rtn;\n};\n/**\n * Use to convert a string of comma separated strings or\n * an array of strings, and clean up any user input\n */\nvar convertToArrayOfStrings = function (input, type) {\n if (input == null) {\n return undefined;\n }\n if (typeof input === 'string') {\n // convert the string to an array of strings\n // auto remove any [] characters\n input = input.replace(/\\[|\\]/g, '').split(',');\n }\n var values;\n if (Array.isArray(input)) {\n // trim up each string value\n values = input.map(function (val) { return val.toString().trim(); });\n }\n if (values === undefined || values.length === 0) {\n console.warn(\"Invalid \\\"\" + type + \"Names\\\". Must be an array of strings, or a comma separated string.\");\n }\n return values;\n};\n/**\n * Use to convert a string of comma separated numbers or\n * an array of numbers, and clean up any user input\n */\nvar convertToArrayOfNumbers = function (input, type) {\n if (typeof input === 'string') {\n // convert the string to an array of strings\n // auto remove any whitespace and [] characters\n input = input.replace(/\\[|\\]|\\s/g, '').split(',');\n }\n var values;\n if (Array.isArray(input)) {\n // ensure each value is an actual number in the returned array\n values = input\n .map(function (num) { return parseInt(num, 10); })\n .filter(isFinite);\n }\n else {\n values = [input];\n }\n if (values.length === 0) {\n console.warn(\"Invalid \\\"\" + type + \"Values\\\". Must be an array of numbers, or a comma separated string of numbers.\");\n }\n return values;\n};\nvar twoDigit = function (val) {\n return ('0' + (val !== undefined ? Math.abs(val) : '0')).slice(-2);\n};\nvar threeDigit = function (val) {\n return ('00' + (val !== undefined ? Math.abs(val) : '0')).slice(-3);\n};\nvar fourDigit = function (val) {\n return ('000' + (val !== undefined ? Math.abs(val) : '0')).slice(-4);\n};\nvar FORMAT_YYYY = 'YYYY';\nvar FORMAT_YY = 'YY';\nvar FORMAT_MMMM = 'MMMM';\nvar FORMAT_MMM = 'MMM';\nvar FORMAT_MM = 'MM';\nvar FORMAT_M = 'M';\nvar FORMAT_DDDD = 'DDDD';\nvar FORMAT_DDD = 'DDD';\nvar FORMAT_DD = 'DD';\nvar FORMAT_D = 'D';\nvar FORMAT_HH = 'HH';\nvar FORMAT_H = 'H';\nvar FORMAT_hh = 'hh';\nvar FORMAT_h = 'h';\nvar FORMAT_mm = 'mm';\nvar FORMAT_m = 'm';\nvar FORMAT_ss = 'ss';\nvar FORMAT_s = 's';\nvar FORMAT_A = 'A';\nvar FORMAT_a = 'a';\nvar FORMAT_KEYS = [\n { f: FORMAT_YYYY, k: 'year' },\n { f: FORMAT_MMMM, k: 'month' },\n { f: FORMAT_DDDD, k: 'day' },\n { f: FORMAT_MMM, k: 'month' },\n { f: FORMAT_DDD, k: 'day' },\n { f: FORMAT_YY, k: 'year' },\n { f: FORMAT_MM, k: 'month' },\n { f: FORMAT_DD, k: 'day' },\n { f: FORMAT_HH, k: 'hour' },\n { f: FORMAT_hh, k: 'hour' },\n { f: FORMAT_mm, k: 'minute' },\n { f: FORMAT_ss, k: 'second' },\n { f: FORMAT_M, k: 'month' },\n { f: FORMAT_D, k: 'day' },\n { f: FORMAT_H, k: 'hour' },\n { f: FORMAT_h, k: 'hour' },\n { f: FORMAT_m, k: 'minute' },\n { f: FORMAT_s, k: 'second' },\n { f: FORMAT_A, k: 'ampm' },\n { f: FORMAT_a, k: 'ampm' },\n];\nvar DAY_NAMES = [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n];\nvar DAY_SHORT_NAMES = [\n 'Sun',\n 'Mon',\n 'Tue',\n 'Wed',\n 'Thu',\n 'Fri',\n 'Sat',\n];\nvar MONTH_NAMES = [\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];\nvar MONTH_SHORT_NAMES = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n];\nvar VALID_AMPM_PREFIX = [\n FORMAT_hh, FORMAT_h, FORMAT_mm, FORMAT_m, FORMAT_ss, FORMAT_s\n];\nvar Datetime = /** @class */ (function () {\n function class_1(hostRef) {\n var _this = this;\n registerInstance(this, hostRef);\n this.inputId = \"ion-dt-\" + datetimeIds++;\n this.locale = {};\n this.datetimeMin = {};\n this.datetimeMax = {};\n this.datetimeValue = {};\n this.isExpanded = false;\n /**\n * The name of the control, which is submitted with the form data.\n */\n this.name = this.inputId;\n /**\n * If `true`, the user cannot interact with the datetime.\n */\n this.disabled = false;\n /**\n * If `true`, the datetime appears normal but is not interactive.\n */\n this.readonly = false;\n /**\n * The display format of the date and time as text that shows\n * within the item. When the `pickerFormat` input is not used, then the\n * `displayFormat` is used for both display the formatted text, and determining\n * the datetime picker's columns. See the `pickerFormat` input description for\n * more info. Defaults to `MMM D, YYYY`.\n */\n this.displayFormat = 'MMM D, YYYY';\n /**\n * The text to display on the picker's cancel button.\n */\n this.cancelText = 'Cancel';\n /**\n * The text to display on the picker's \"Done\" button.\n */\n this.doneText = 'Done';\n this.onClick = function () {\n _this.setFocus();\n _this.open();\n };\n this.onFocus = function () {\n _this.ionFocus.emit();\n };\n this.onBlur = function () {\n _this.ionBlur.emit();\n };\n this.ionCancel = createEvent(this, \"ionCancel\", 7);\n this.ionChange = createEvent(this, \"ionChange\", 7);\n this.ionFocus = createEvent(this, \"ionFocus\", 7);\n this.ionBlur = createEvent(this, \"ionBlur\", 7);\n this.ionStyle = createEvent(this, \"ionStyle\", 7);\n }\n class_1.prototype.disabledChanged = function () {\n this.emitStyle();\n };\n /**\n * Update the datetime value when the value changes\n */\n class_1.prototype.valueChanged = function () {\n this.updateDatetimeValue(this.value);\n this.emitStyle();\n this.ionChange.emit({\n value: this.value\n });\n };\n class_1.prototype.componentWillLoad = function () {\n // first see if locale names were provided in the inputs\n // then check to see if they're in the config\n // if neither were provided then it will use default English names\n this.locale = {\n // this.locale[type] = convertToArrayOfStrings((this[type] ? this[type] : this.config.get(type), type);\n monthNames: convertToArrayOfStrings(this.monthNames, 'monthNames'),\n monthShortNames: convertToArrayOfStrings(this.monthShortNames, 'monthShortNames'),\n dayNames: convertToArrayOfStrings(this.dayNames, 'dayNames'),\n dayShortNames: convertToArrayOfStrings(this.dayShortNames, 'dayShortNames')\n };\n this.updateDatetimeValue(this.value);\n this.emitStyle();\n };\n /**\n * Opens the datetime overlay.\n */\n class_1.prototype.open = function () {\n return __awaiter(this, void 0, void 0, function () {\n var pickerOptions, picker;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.disabled || this.isExpanded) {\n return [2 /*return*/];\n }\n pickerOptions = this.generatePickerOptions();\n return [4 /*yield*/, pickerController.create(pickerOptions)];\n case 1:\n picker = _a.sent();\n this.isExpanded = true;\n picker.onDidDismiss().then(function () {\n _this.isExpanded = false;\n _this.setFocus();\n });\n picker.addEventListener('ionPickerColChange', function (event) { return __awaiter(_this, void 0, void 0, function () {\n var data, colSelectedIndex, colOptions, changeData;\n return __generator(this, function (_a) {\n data = event.detail;\n colSelectedIndex = data.selectedIndex;\n colOptions = data.options;\n changeData = {};\n changeData[data.name] = {\n value: colOptions[colSelectedIndex].value\n };\n if (data.name !== 'ampm' && this.datetimeValue.ampm !== undefined) {\n changeData['ampm'] = {\n value: this.datetimeValue.ampm\n };\n }\n this.updateDatetimeValue(changeData);\n picker.columns = this.generateColumns();\n return [2 /*return*/];\n });\n }); });\n return [4 /*yield*/, picker.present()];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n class_1.prototype.emitStyle = function () {\n this.ionStyle.emit({\n 'interactive': true,\n 'datetime': true,\n 'has-placeholder': this.placeholder != null,\n 'has-value': this.hasValue(),\n 'interactive-disabled': this.disabled,\n });\n };\n class_1.prototype.updateDatetimeValue = function (value) {\n updateDate(this.datetimeValue, value);\n };\n class_1.prototype.generatePickerOptions = function () {\n var _this = this;\n var mode = getIonMode(this);\n var pickerOptions = Object.assign(Object.assign({ mode: mode }, this.pickerOptions), { columns: this.generateColumns() });\n // If the user has not passed in picker buttons,\n // add a cancel and ok button to the picker\n var buttons = pickerOptions.buttons;\n if (!buttons || buttons.length === 0) {\n pickerOptions.buttons = [\n {\n text: this.cancelText,\n role: 'cancel',\n handler: function () {\n _this.updateDatetimeValue(_this.value);\n _this.ionCancel.emit();\n }\n },\n {\n text: this.doneText,\n handler: function (data) {\n _this.updateDatetimeValue(data);\n /**\n * Prevent convertDataToISO from doing any\n * kind of transformation based on timezone\n * This cancels out any change it attempts to make\n *\n * Important: Take the timezone offset based on\n * the date that is currently selected, otherwise\n * there can be 1 hr difference when dealing w/ DST\n */\n var date = new Date(convertDataToISO(_this.datetimeValue));\n _this.datetimeValue.tzOffset = date.getTimezoneOffset() * -1;\n _this.value = convertDataToISO(_this.datetimeValue);\n }\n }\n ];\n }\n return pickerOptions;\n };\n class_1.prototype.generateColumns = function () {\n var _this = this;\n // if a picker format wasn't provided, then fallback\n // to use the display format\n var template = this.pickerFormat || this.displayFormat || DEFAULT_FORMAT;\n if (template.length === 0) {\n return [];\n }\n // make sure we've got up to date sizing information\n this.calcMinMax();\n // does not support selecting by day name\n // automatically remove any day name formats\n template = template.replace('DDDD', '{~}').replace('DDD', '{~}');\n if (template.indexOf('D') === -1) {\n // there is not a day in the template\n // replace the day name with a numeric one if it exists\n template = template.replace('{~}', 'D');\n }\n // make sure no day name replacer is left in the string\n template = template.replace(/{~}/g, '');\n // parse apart the given template into an array of \"formats\"\n var columns = parseTemplate(template).map(function (format) {\n // loop through each format in the template\n // create a new picker column to build up with data\n var key = convertFormatToKey(format);\n var values;\n // check if they have exact values to use for this date part\n // otherwise use the default date part values\n var self = _this;\n values = self[key + 'Values']\n ? convertToArrayOfNumbers(self[key + 'Values'], key)\n : dateValueRange(format, _this.datetimeMin, _this.datetimeMax);\n var colOptions = values.map(function (val) {\n return {\n value: val,\n text: renderTextFormat(format, val, undefined, _this.locale),\n };\n });\n // cool, we've loaded up the columns with options\n // preselect the option for this column\n var optValue = getDateValue(_this.datetimeValue, format);\n var selectedIndex = colOptions.findIndex(function (opt) { return opt.value === optValue; });\n return {\n name: key,\n selectedIndex: selectedIndex >= 0 ? selectedIndex : 0,\n options: colOptions\n };\n });\n // Normalize min/max\n var min = this.datetimeMin;\n var max = this.datetimeMax;\n ['month', 'day', 'hour', 'minute']\n .filter(function (name) { return !columns.find(function (column) { return column.name === name; }); })\n .forEach(function (name) {\n min[name] = 0;\n max[name] = 0;\n });\n return this.validateColumns(divyColumns(columns));\n };\n class_1.prototype.validateColumns = function (columns) {\n var today = new Date();\n var minCompareVal = dateDataSortValue(this.datetimeMin);\n var maxCompareVal = dateDataSortValue(this.datetimeMax);\n var yearCol = columns.find(function (c) { return c.name === 'year'; });\n var selectedYear = today.getFullYear();\n if (yearCol) {\n // default to the first value if the current year doesn't exist in the options\n if (!yearCol.options.find(function (col) { return col.value === today.getFullYear(); })) {\n selectedYear = yearCol.options[0].value;\n }\n var selectedIndex = yearCol.selectedIndex;\n if (selectedIndex !== undefined) {\n var yearOpt = yearCol.options[selectedIndex];\n if (yearOpt) {\n // they have a selected year value\n selectedYear = yearOpt.value;\n }\n }\n }\n var selectedMonth = this.validateColumn(columns, 'month', 1, minCompareVal, maxCompareVal, [selectedYear, 0, 0, 0, 0], [selectedYear, 12, 31, 23, 59]);\n var numDaysInMonth = daysInMonth(selectedMonth, selectedYear);\n var selectedDay = this.validateColumn(columns, 'day', 2, minCompareVal, maxCompareVal, [selectedYear, selectedMonth, 0, 0, 0], [selectedYear, selectedMonth, numDaysInMonth, 23, 59]);\n var selectedHour = this.validateColumn(columns, 'hour', 3, minCompareVal, maxCompareVal, [selectedYear, selectedMonth, selectedDay, 0, 0], [selectedYear, selectedMonth, selectedDay, 23, 59]);\n this.validateColumn(columns, 'minute', 4, minCompareVal, maxCompareVal, [selectedYear, selectedMonth, selectedDay, selectedHour, 0], [selectedYear, selectedMonth, selectedDay, selectedHour, 59]);\n return columns;\n };\n class_1.prototype.calcMinMax = function () {\n var todaysYear = new Date().getFullYear();\n if (this.yearValues !== undefined) {\n var years = convertToArrayOfNumbers(this.yearValues, 'year');\n if (this.min === undefined) {\n this.min = Math.min.apply(Math, years).toString();\n }\n if (this.max === undefined) {\n this.max = Math.max.apply(Math, years).toString();\n }\n }\n else {\n if (this.min === undefined) {\n this.min = (todaysYear - 100).toString();\n }\n if (this.max === undefined) {\n this.max = todaysYear.toString();\n }\n }\n var min = this.datetimeMin = parseDate(this.min);\n var max = this.datetimeMax = parseDate(this.max);\n min.year = min.year || todaysYear;\n max.year = max.year || todaysYear;\n min.month = min.month || 1;\n max.month = max.month || 12;\n min.day = min.day || 1;\n max.day = max.day || 31;\n min.hour = min.hour || 0;\n max.hour = max.hour || 23;\n min.minute = min.minute || 0;\n max.minute = max.minute || 59;\n min.second = min.second || 0;\n max.second = max.second || 59;\n // Ensure min/max constraints\n if (min.year > max.year) {\n console.error('min.year > max.year');\n min.year = max.year - 100;\n }\n if (min.year === max.year) {\n if (min.month > max.month) {\n console.error('min.month > max.month');\n min.month = 1;\n }\n else if (min.month === max.month && min.day > max.day) {\n console.error('min.day > max.day');\n min.day = 1;\n }\n }\n };\n class_1.prototype.validateColumn = function (columns, name, index, min, max, lowerBounds, upperBounds) {\n var column = columns.find(function (c) { return c.name === name; });\n if (!column) {\n return 0;\n }\n var lb = lowerBounds.slice();\n var ub = upperBounds.slice();\n var options = column.options;\n var indexMin = options.length - 1;\n var indexMax = 0;\n for (var i = 0; i < options.length; i++) {\n var opts = options[i];\n var value = opts.value;\n lb[index] = opts.value;\n ub[index] = opts.value;\n var disabled = opts.disabled = (value < lowerBounds[index] ||\n value > upperBounds[index] ||\n dateSortValue(ub[0], ub[1], ub[2], ub[3], ub[4]) < min ||\n dateSortValue(lb[0], lb[1], lb[2], lb[3], lb[4]) > max);\n if (!disabled) {\n indexMin = Math.min(indexMin, i);\n indexMax = Math.max(indexMax, i);\n }\n }\n var selectedIndex = column.selectedIndex = clamp(indexMin, column.selectedIndex, indexMax);\n var opt = column.options[selectedIndex];\n if (opt) {\n return opt.value;\n }\n return 0;\n };\n Object.defineProperty(class_1.prototype, \"text\", {\n get: function () {\n // create the text of the formatted data\n var template = this.displayFormat || this.pickerFormat || DEFAULT_FORMAT;\n if (this.value === undefined ||\n this.value === null ||\n this.value.length === 0) {\n return;\n }\n return renderDatetime(template, this.datetimeValue, this.locale);\n },\n enumerable: true,\n configurable: true\n });\n class_1.prototype.hasValue = function () {\n return this.text !== undefined;\n };\n class_1.prototype.setFocus = function () {\n if (this.buttonEl) {\n this.buttonEl.focus();\n }\n };\n class_1.prototype.render = function () {\n var _a;\n var _this = this;\n var _b = this, inputId = _b.inputId, text = _b.text, disabled = _b.disabled, readonly = _b.readonly, isExpanded = _b.isExpanded, el = _b.el, placeholder = _b.placeholder;\n var mode = getIonMode(this);\n var labelId = inputId + '-lbl';\n var label = findItemLabel(el);\n var addPlaceholderClass = (text === undefined && placeholder != null) ? true : false;\n // If selected text has been passed in, use that first\n // otherwise use the placeholder\n var datetimeText = text === undefined\n ? (placeholder != null ? placeholder : '')\n : text;\n if (label) {\n label.id = labelId;\n }\n renderHiddenInput(true, el, this.name, this.value, this.disabled);\n return (h(Host, { onClick: this.onClick, role: \"combobox\", \"aria-disabled\": disabled ? 'true' : null, \"aria-expanded\": \"\" + isExpanded, \"aria-haspopup\": \"true\", \"aria-labelledby\": labelId, class: (_a = {},\n _a[mode] = true,\n _a['datetime-disabled'] = disabled,\n _a['datetime-readonly'] = readonly,\n _a['datetime-placeholder'] = addPlaceholderClass,\n _a['in-item'] = hostContext('ion-item', el),\n _a) }, h(\"div\", { class: \"datetime-text\" }, datetimeText), h(\"button\", { type: \"button\", onFocus: this.onFocus, onBlur: this.onBlur, disabled: this.disabled, ref: function (btnEl) { return _this.buttonEl = btnEl; } })));\n };\n Object.defineProperty(class_1.prototype, \"el\", {\n get: function () { return getElement(this); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(class_1, \"watchers\", {\n get: function () {\n return {\n \"disabled\": [\"disabledChanged\"],\n \"value\": [\"valueChanged\"]\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(class_1, \"style\", {\n get: function () { return \":host{padding-left:var(--padding-start);padding-right:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;min-width:16px;min-height:1.2em;font-family:var(--ion-font-family,inherit);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;z-index:2}\\@supports ((-webkit-margin-start:0) or (margin-inline-start:0)) or (-webkit-margin-start:0){:host{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end)}}:host(.in-item){position:static}:host(.datetime-placeholder){color:var(--placeholder-color)}:host(.datetime-disabled){opacity:.3;pointer-events:none}:host(.datetime-readonly){pointer-events:none}button{left:0;top:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;width:100%;height:100%;border:0;background:transparent;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}:host-context([dir=rtl]) button,[dir=rtl] button{left:unset;right:unset;right:0}button::-moz-focus-inner{border:0}.datetime-text{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;-ms-flex:1;flex:1;min-height:inherit;direction:ltr;overflow:inherit}:host-context([dir=rtl]) .datetime-text,[dir=rtl] .datetime-text{direction:rtl}:host{--placeholder-color:var(--ion-color-step-400,#999);--padding-top:10px;--padding-end:8px;--padding-bottom:10px;--padding-start:16px}\"; },\n enumerable: true,\n configurable: true\n });\n return class_1;\n}());\nvar divyColumns = function (columns) {\n var columnsWidth = [];\n var col;\n var width;\n for (var i = 0; i < columns.length; i++) {\n col = columns[i];\n columnsWidth.push(0);\n for (var _i = 0, _a = col.options; _i < _a.length; _i++) {\n var option = _a[_i];\n width = option.text.length;\n if (width > columnsWidth[i]) {\n columnsWidth[i] = width;\n }\n }\n }\n if (columnsWidth.length === 2) {\n width = Math.max(columnsWidth[0], columnsWidth[1]);\n columns[0].align = 'right';\n columns[1].align = 'left';\n columns[0].optionsWidth = columns[1].optionsWidth = width * 17 + \"px\";\n }\n else if (columnsWidth.length === 3) {\n width = Math.max(columnsWidth[0], columnsWidth[2]);\n columns[0].align = 'right';\n columns[1].columnWidth = columnsWidth[1] * 17 + \"px\";\n columns[0].optionsWidth = columns[2].optionsWidth = width * 17 + \"px\";\n columns[2].align = 'left';\n }\n return columns;\n};\nvar DEFAULT_FORMAT = 'MMM D, YYYY';\nvar datetimeIds = 0;\n/**\n * iOS Picker Enter Animation\n */\nvar iosEnterAnimation = function (baseEl) {\n var baseAnimation = createAnimation();\n var backdropAnimation = createAnimation();\n var wrapperAnimation = createAnimation();\n backdropAnimation\n .addElement(baseEl.querySelector('ion-backdrop'))\n .fromTo('opacity', 0.01, 0.26);\n wrapperAnimation\n .addElement(baseEl.querySelector('.picker-wrapper'))\n .fromTo('transform', 'translateY(100%)', 'translateY(0%)');\n return baseAnimation\n .addElement(baseEl)\n .easing('cubic-bezier(.36,.66,.04,1)')\n .duration(400)\n .addAnimation([backdropAnimation, wrapperAnimation]);\n};\n/**\n * iOS Picker Leave Animation\n */\nvar iosLeaveAnimation = function (baseEl) {\n var baseAnimation = createAnimation();\n var backdropAnimation = createAnimation();\n var wrapperAnimation = createAnimation();\n backdropAnimation\n .addElement(baseEl.querySelector('ion-backdrop'))\n .fromTo('opacity', 0.26, 0.01);\n wrapperAnimation\n .addElement(baseEl.querySelector('.picker-wrapper'))\n .fromTo('transform', 'translateY(0%)', 'translateY(100%)');\n return baseAnimation\n .addElement(baseEl)\n .easing('cubic-bezier(.36,.66,.04,1)')\n .duration(400)\n .addAnimation([backdropAnimation, wrapperAnimation]);\n};\nvar Picker = /** @class */ (function () {\n function class_2(hostRef) {\n var _this = this;\n registerInstance(this, hostRef);\n this.mode = getIonMode(this);\n this.presented = false;\n /**\n * If `true`, the keyboard will be automatically dismissed when the overlay is presented.\n */\n this.keyboardClose = true;\n /**\n * Array of buttons to be displayed at the top of the picker.\n */\n this.buttons = [];\n /**\n * Array of columns to be displayed in the picker.\n */\n this.columns = [];\n /**\n * Number of milliseconds to wait before dismissing the picker.\n */\n this.duration = 0;\n /**\n * If `true`, a backdrop will be displayed behind the picker.\n */\n this.showBackdrop = true;\n /**\n * If `true`, the picker will be dismissed when the backdrop is clicked.\n */\n this.backdropDismiss = true;\n /**\n * If `true`, the picker will animate.\n */\n this.animated = true;\n this.onBackdropTap = function () {\n var cancelBtn = _this.buttons.find(function (b) { return b.role === 'cancel'; });\n if (cancelBtn) {\n _this.buttonClick(cancelBtn);\n }\n else {\n _this.dismiss();\n }\n };\n prepareOverlay(this.el);\n this.didPresent = createEvent(this, \"ionPickerDidPresent\", 7);\n this.willPresent = createEvent(this, \"ionPickerWillPresent\", 7);\n this.willDismiss = createEvent(this, \"ionPickerWillDismiss\", 7);\n this.didDismiss = createEvent(this, \"ionPickerDidDismiss\", 7);\n }\n /**\n * Present the picker overlay after it has been created.\n */\n class_2.prototype.present = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, present(this, 'pickerEnter', iosEnterAnimation, iosEnterAnimation, undefined)];\n case 1:\n _a.sent();\n if (this.duration > 0) {\n this.durationTimeout = setTimeout(function () { return _this.dismiss(); }, this.duration);\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Dismiss the picker overlay after it has been presented.\n *\n * @param data Any data to emit in the dismiss events.\n * @param role The role of the element that is dismissing the picker.\n * This can be useful in a button handler for determining which button was\n * clicked to dismiss the picker.\n * Some examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n */\n class_2.prototype.dismiss = function (data, role) {\n if (this.durationTimeout) {\n clearTimeout(this.durationTimeout);\n }\n return dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation, iosLeaveAnimation);\n };\n /**\n * Returns a promise that resolves when the picker did dismiss.\n */\n class_2.prototype.onDidDismiss = function () {\n return eventMethod(this.el, 'ionPickerDidDismiss');\n };\n /**\n * Returns a promise that resolves when the picker will dismiss.\n */\n class_2.prototype.onWillDismiss = function () {\n return eventMethod(this.el, 'ionPickerWillDismiss');\n };\n /**\n * Get the column that matches the specified name.\n *\n * @param name The name of the column.\n */\n class_2.prototype.getColumn = function (name) {\n return Promise.resolve(this.columns.find(function (column) { return column.name === name; }));\n };\n class_2.prototype.buttonClick = function (button) {\n // if (this.disabled) {\n // return;\n // }\n // keep the time of the most recent button click\n // a handler has been provided, execute it\n // pass the handler the values from the inputs\n var shouldDismiss = safeCall(button.handler, this.getSelected()) !== false;\n if (shouldDismiss) {\n return this.dismiss();\n }\n return Promise.resolve(false);\n };\n class_2.prototype.getSelected = function () {\n var selected = {};\n this.columns.forEach(function (col, index) {\n var selectedColumn = col.selectedIndex !== undefined\n ? col.options[col.selectedIndex]\n : undefined;\n selected[col.name] = {\n text: selectedColumn ? selectedColumn.text : undefined,\n value: selectedColumn ? selectedColumn.value : undefined,\n columnIndex: index\n };\n });\n return selected;\n };\n class_2.prototype.render = function () {\n var _a;\n var _this = this;\n var mode = getIonMode(this);\n return (h(Host, { \"aria-modal\": \"true\", class: Object.assign((_a = {}, _a[mode] = true, \n // Used internally for styling\n _a[\"picker-\" + mode] = true, _a), getClassMap(this.cssClass)), style: {\n zIndex: \"\" + (20000 + this.overlayIndex)\n }, onIonBackdropTap: this.onBackdropTap }, h(\"ion-backdrop\", { visible: this.showBackdrop, tappable: this.backdropDismiss }), h(\"div\", { class: \"picker-wrapper\", role: \"dialog\" }, h(\"div\", { class: \"picker-toolbar\" }, this.buttons.map(function (b) { return (h(\"div\", { class: buttonWrapperClass(b) }, h(\"button\", { type: \"button\", onClick: function () { return _this.buttonClick(b); }, class: buttonClass(b) }, b.text))); })), h(\"div\", { class: \"picker-columns\" }, h(\"div\", { class: \"picker-above-highlight\" }), this.presented && this.columns.map(function (c) { return h(\"ion-picker-column\", { col: c }); }), h(\"div\", { class: \"picker-below-highlight\" })))));\n };\n Object.defineProperty(class_2.prototype, \"el\", {\n get: function () { return getElement(this); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(class_2, \"style\", {\n get: function () { return \".sc-ion-picker-ios-h{--border-radius:0;--border-style:solid;--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--max-height:auto;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;top:0;display:block;position:absolute;width:100%;height:100%;font-family:var(--ion-font-family,inherit);contain:strict;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}[dir=rtl].sc-ion-picker-ios-h, [dir=rtl] .sc-ion-picker-ios-h{left:unset;right:unset;right:0}.overlay-hidden.sc-ion-picker-ios-h{display:none}.picker-wrapper.sc-ion-picker-ios{border-radius:var(--border-radius);left:0;right:0;bottom:0;margin-left:auto;margin-right:auto;margin-top:auto;margin-bottom:auto;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;overflow:hidden;z-index:10}\\@supports ((-webkit-margin-start:0) or (margin-inline-start:0)) or (-webkit-margin-start:0){.picker-wrapper.sc-ion-picker-ios{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}.picker-toolbar.sc-ion-picker-ios{width:100%;background:transparent;contain:strict;z-index:1}.picker-button.sc-ion-picker-ios{border:0;font-family:inherit}.picker-button.sc-ion-picker-ios:active, .picker-button.sc-ion-picker-ios:focus{outline:none}.picker-columns.sc-ion-picker-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-pack:center;justify-content:center;margin-bottom:var(--ion-safe-area-bottom,0);contain:strict;direction:ltr;overflow:hidden}.picker-above-highlight.sc-ion-picker-ios, .picker-below-highlight.sc-ion-picker-ios{display:none;pointer-events:none}.sc-ion-picker-ios-h{--background:var(--ion-background-color,#fff);--border-width:1px 0 0;--border-color:var(--ion-item-border-color,var(--ion-border-color,var(--ion-color-step-250,#c8c7cc)));--height:260px;color:var(--ion-item-color,var(--ion-text-color,#000))}.picker-toolbar.sc-ion-picker-ios{display:-ms-flexbox;display:flex;height:44px;border-bottom:.55px solid var(--border-color)}.picker-toolbar-button.sc-ion-picker-ios{-ms-flex:1;flex:1;text-align:end}.picker-toolbar-button.sc-ion-picker-ios:last-child .picker-button.sc-ion-picker-ios{font-weight:600}.picker-toolbar-button.sc-ion-picker-ios:first-child{font-weight:400;text-align:start}.picker-button.sc-ion-picker-ios, .picker-button.activated.sc-ion-picker-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:1em;padding-right:1em;padding-top:0;padding-bottom:0;height:44px;background:transparent;color:var(--ion-color-primary,#3880ff);font-size:16px}\\@supports ((-webkit-margin-start:0) or (margin-inline-start:0)) or (-webkit-margin-start:0){.picker-button.sc-ion-picker-ios, .picker-button.activated.sc-ion-picker-ios{padding-left:unset;padding-right:unset;-webkit-padding-start:1em;padding-inline-start:1em;-webkit-padding-end:1em;padding-inline-end:1em}}.picker-columns.sc-ion-picker-ios{height:215px;-webkit-perspective:1000px;perspective:1000px}.picker-above-highlight.sc-ion-picker-ios{left:0;top:0;-webkit-transform:translateZ(90px);transform:translateZ(90px);display:block;position:absolute;width:100%;height:81px;border-bottom:1px solid var(--border-color);background:-webkit-gradient(linear,left top,left bottom,color-stop(20%,var(--background,var(--ion-background-color,#fff))),to(rgba(var(--background-rgb,var(--ion-background-color-rgb,255,255,255)),.8)));background:linear-gradient(180deg,var(--background,var(--ion-background-color,#fff)) 20%,rgba(var(--background-rgb,var(--ion-background-color-rgb,255,255,255)),.8));z-index:10}[dir=rtl].sc-ion-picker-ios-h .picker-above-highlight.sc-ion-picker-ios, [dir=rtl] .sc-ion-picker-ios-h .picker-above-highlight.sc-ion-picker-ios, [dir=rtl].sc-ion-picker-ios .picker-above-highlight.sc-ion-picker-ios{left:unset;right:unset;right:0}.picker-below-highlight.sc-ion-picker-ios{left:0;top:115px;-webkit-transform:translateZ(90px);transform:translateZ(90px);display:block;position:absolute;width:100%;height:119px;border-top:1px solid var(--border-color);background:-webkit-gradient(linear,left bottom,left top,color-stop(30%,var(--background,var(--ion-background-color,#fff))),to(rgba(var(--background-rgb,var(--ion-background-color-rgb,255,255,255)),.8)));background:linear-gradient(0deg,var(--background,var(--ion-background-color,#fff)) 30%,rgba(var(--background-rgb,var(--ion-background-color-rgb,255,255,255)),.8));z-index:11}[dir=rtl].sc-ion-picker-ios-h .picker-below-highlight.sc-ion-picker-ios, [dir=rtl] .sc-ion-picker-ios-h .picker-below-highlight.sc-ion-picker-ios, [dir=rtl].sc-ion-picker-ios .picker-below-highlight.sc-ion-picker-ios{left:unset;right:unset;right:0}\"; },\n enumerable: true,\n configurable: true\n });\n return class_2;\n}());\nvar buttonWrapperClass = function (button) {\n var _a;\n return _a = {},\n _a[\"picker-toolbar-\" + button.role] = button.role !== undefined,\n _a['picker-toolbar-button'] = true,\n _a;\n};\nvar buttonClass = function (button) {\n return Object.assign({ 'picker-button': true, 'ion-activatable': true }, getClassMap(button.cssClass));\n};\nvar PickerColumnCmp = /** @class */ (function () {\n function class_3(hostRef) {\n registerInstance(this, hostRef);\n this.optHeight = 0;\n this.rotateFactor = 0;\n this.scaleFactor = 1;\n this.velocity = 0;\n this.y = 0;\n this.noAnimate = true;\n this.ionPickerColChange = createEvent(this, \"ionPickerColChange\", 7);\n }\n class_3.prototype.colChanged = function () {\n this.refresh();\n };\n class_3.prototype.connectedCallback = function () {\n return __awaiter(this, void 0, void 0, function () {\n var pickerRotateFactor, pickerScaleFactor, mode, _a;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n pickerRotateFactor = 0;\n pickerScaleFactor = 0.81;\n mode = getIonMode(this);\n if (mode === 'ios') {\n pickerRotateFactor = -0.46;\n pickerScaleFactor = 1;\n }\n this.rotateFactor = pickerRotateFactor;\n this.scaleFactor = pickerScaleFactor;\n _a = this;\n return [4 /*yield*/, import('./index-624eea58.js')];\n case 1:\n _a.gesture = (_b.sent()).createGesture({\n el: this.el,\n gestureName: 'picker-swipe',\n gesturePriority: 100,\n threshold: 0,\n onStart: function (ev) { return _this.onStart(ev); },\n onMove: function (ev) { return _this.onMove(ev); },\n onEnd: function (ev) { return _this.onEnd(ev); },\n });\n this.gesture.setDisabled(false);\n this.tmrId = setTimeout(function () {\n _this.noAnimate = false;\n _this.refresh(true);\n }, 250);\n return [2 /*return*/];\n }\n });\n });\n };\n class_3.prototype.componentDidLoad = function () {\n var colEl = this.optsEl;\n if (colEl) {\n // DOM READ\n // We perfom a DOM read over a rendered item, this needs to happen after the first render\n this.optHeight = (colEl.firstElementChild ? colEl.firstElementChild.clientHeight : 0);\n }\n this.refresh();\n };\n class_3.prototype.disconnectedCallback = function () {\n cancelAnimationFrame(this.rafId);\n clearTimeout(this.tmrId);\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n };\n class_3.prototype.emitColChange = function () {\n this.ionPickerColChange.emit(this.col);\n };\n class_3.prototype.setSelected = function (selectedIndex, duration) {\n // if there is a selected index, then figure out it's y position\n // if there isn't a selected index, then just use the top y position\n var y = (selectedIndex > -1) ? -(selectedIndex * this.optHeight) : 0;\n this.velocity = 0;\n // set what y position we're at\n cancelAnimationFrame(this.rafId);\n this.update(y, duration, true);\n this.emitColChange();\n };\n class_3.prototype.update = function (y, duration, saveY) {\n if (!this.optsEl) {\n return;\n }\n // ensure we've got a good round number :)\n var translateY = 0;\n var translateZ = 0;\n var _a = this, col = _a.col, rotateFactor = _a.rotateFactor;\n var selectedIndex = col.selectedIndex = this.indexForY(-y);\n var durationStr = (duration === 0) ? '' : duration + 'ms';\n var scaleStr = \"scale(\" + this.scaleFactor + \")\";\n var children = this.optsEl.children;\n for (var i = 0; i < children.length; i++) {\n var button = children[i];\n var opt = col.options[i];\n var optOffset = (i * this.optHeight) + y;\n var transform = '';\n if (rotateFactor !== 0) {\n var rotateX = optOffset * rotateFactor;\n if (Math.abs(rotateX) <= 90) {\n translateY = 0;\n translateZ = 90;\n transform = \"rotateX(\" + rotateX + \"deg) \";\n }\n else {\n translateY = -9999;\n }\n }\n else {\n translateZ = 0;\n translateY = optOffset;\n }\n var selected = selectedIndex === i;\n transform += \"translate3d(0px,\" + translateY + \"px,\" + translateZ + \"px) \";\n if (this.scaleFactor !== 1 && !selected) {\n transform += scaleStr;\n }\n // Update transition duration\n if (this.noAnimate) {\n opt.duration = 0;\n button.style.transitionDuration = '';\n }\n else if (duration !== opt.duration) {\n opt.duration = duration;\n button.style.transitionDuration = durationStr;\n }\n // Update transform\n if (transform !== opt.transform) {\n opt.transform = transform;\n button.style.transform = transform;\n }\n // Update selected item\n if (selected !== opt.selected) {\n opt.selected = selected;\n if (selected) {\n button.classList.add(PICKER_OPT_SELECTED);\n }\n else {\n button.classList.remove(PICKER_OPT_SELECTED);\n }\n }\n }\n this.col.prevSelected = selectedIndex;\n if (saveY) {\n this.y = y;\n }\n if (this.lastIndex !== selectedIndex) {\n // have not set a last index yet\n hapticSelectionChanged();\n this.lastIndex = selectedIndex;\n }\n };\n class_3.prototype.decelerate = function () {\n var _this = this;\n if (this.velocity !== 0) {\n // still decelerating\n this.velocity *= DECELERATION_FRICTION;\n // do not let it go slower than a velocity of 1\n this.velocity = (this.velocity > 0)\n ? Math.max(this.velocity, 1)\n : Math.min(this.velocity, -1);\n var y = this.y + this.velocity;\n if (y > this.minY) {\n // whoops, it's trying to scroll up farther than the options we have!\n y = this.minY;\n this.velocity = 0;\n }\n else if (y < this.maxY) {\n // gahh, it's trying to scroll down farther than we can!\n y = this.maxY;\n this.velocity = 0;\n }\n this.update(y, 0, true);\n var notLockedIn = (Math.round(y) % this.optHeight !== 0) || (Math.abs(this.velocity) > 1);\n if (notLockedIn) {\n // isn't locked in yet, keep decelerating until it is\n this.rafId = requestAnimationFrame(function () { return _this.decelerate(); });\n }\n else {\n this.velocity = 0;\n this.emitColChange();\n }\n }\n else if (this.y % this.optHeight !== 0) {\n // needs to still get locked into a position so options line up\n var currentPos = Math.abs(this.y % this.optHeight);\n // create a velocity in the direction it needs to scroll\n this.velocity = (currentPos > (this.optHeight / 2) ? 1 : -1);\n this.decelerate();\n }\n };\n class_3.prototype.indexForY = function (y) {\n return Math.min(Math.max(Math.abs(Math.round(y / this.optHeight)), 0), this.col.options.length - 1);\n };\n // TODO should this check disabled?\n class_3.prototype.onStart = function (detail) {\n // We have to prevent default in order to block scrolling under the picker\n // but we DO NOT have to stop propagation, since we still want\n // some \"click\" events to capture\n detail.event.preventDefault();\n detail.event.stopPropagation();\n // reset everything\n cancelAnimationFrame(this.rafId);\n var options = this.col.options;\n var minY = (options.length - 1);\n var maxY = 0;\n for (var i = 0; i < options.length; i++) {\n if (!options[i].disabled) {\n minY = Math.min(minY, i);\n maxY = Math.max(maxY, i);\n }\n }\n this.minY = -(minY * this.optHeight);\n this.maxY = -(maxY * this.optHeight);\n };\n class_3.prototype.onMove = function (detail) {\n detail.event.preventDefault();\n detail.event.stopPropagation();\n // update the scroll position relative to pointer start position\n var y = this.y + detail.deltaY;\n if (y > this.minY) {\n // scrolling up higher than scroll area\n y = Math.pow(y, 0.8);\n this.bounceFrom = y;\n }\n else if (y < this.maxY) {\n // scrolling down below scroll area\n y += Math.pow(this.maxY - y, 0.9);\n this.bounceFrom = y;\n }\n else {\n this.bounceFrom = 0;\n }\n this.update(y, 0, false);\n };\n class_3.prototype.onEnd = function (detail) {\n if (this.bounceFrom > 0) {\n // bounce back up\n this.update(this.minY, 100, true);\n this.emitColChange();\n return;\n }\n else if (this.bounceFrom < 0) {\n // bounce back down\n this.update(this.maxY, 100, true);\n this.emitColChange();\n return;\n }\n this.velocity = clamp(-MAX_PICKER_SPEED, detail.velocityY * 23, MAX_PICKER_SPEED);\n if (this.velocity === 0 && detail.deltaY === 0) {\n var opt = detail.event.target.closest('.picker-opt');\n if (opt && opt.hasAttribute('opt-index')) {\n this.setSelected(parseInt(opt.getAttribute('opt-index'), 10), TRANSITION_DURATION);\n }\n }\n else {\n this.y += detail.deltaY;\n this.decelerate();\n }\n };\n class_3.prototype.refresh = function (forceRefresh) {\n var min = this.col.options.length - 1;\n var max = 0;\n var options = this.col.options;\n for (var i = 0; i < options.length; i++) {\n if (!options[i].disabled) {\n min = Math.min(min, i);\n max = Math.max(max, i);\n }\n }\n /**\n * Only update selected value if column has a\n * velocity of 0. If it does not, then the\n * column is animating might land on\n * a value different than the value at\n * selectedIndex\n */\n if (this.velocity !== 0) {\n return;\n }\n var selectedIndex = clamp(min, this.col.selectedIndex || 0, max);\n if (this.col.prevSelected !== selectedIndex || forceRefresh) {\n var y = (selectedIndex * this.optHeight) * -1;\n this.velocity = 0;\n this.update(y, TRANSITION_DURATION, true);\n }\n };\n class_3.prototype.render = function () {\n var _a;\n var _this = this;\n var col = this.col;\n var Button = 'button';\n var mode = getIonMode(this);\n return (h(Host, { class: (_a = {},\n _a[mode] = true,\n _a['picker-col'] = true,\n _a['picker-opts-left'] = this.col.align === 'left',\n _a['picker-opts-right'] = this.col.align === 'right',\n _a), style: {\n 'max-width': this.col.columnWidth\n } }, col.prefix && (h(\"div\", { class: \"picker-prefix\", style: { width: col.prefixWidth } }, col.prefix)), h(\"div\", { class: \"picker-opts\", style: { maxWidth: col.optionsWidth }, ref: function (el) { return _this.optsEl = el; } }, col.options.map(function (o, index) { return h(Button, { type: \"button\", class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, \"opt-index\": index }, o.text); })), col.suffix && (h(\"div\", { class: \"picker-suffix\", style: { width: col.suffixWidth } }, col.suffix))));\n };\n Object.defineProperty(class_3.prototype, \"el\", {\n get: function () { return getElement(this); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(class_3, \"watchers\", {\n get: function () {\n return {\n \"col\": [\"colChanged\"]\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(class_3, \"style\", {\n get: function () { return \".picker-col{display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-pack:center;justify-content:center;height:100%;-webkit-box-sizing:content-box;box-sizing:content-box;contain:content}.picker-opts{position:relative;-ms-flex:1;flex:1;max-width:100%}.picker-opt{left:0;top:0;display:block;position:absolute;width:100%;border:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;contain:strict;overflow:hidden;will-change:transform}:host-context([dir=rtl]) .picker-opt,[dir=rtl] .picker-opt{left:unset;right:unset;right:0}.picker-opt.picker-opt-disabled{pointer-events:none}.picker-opt-disabled{opacity:0}.picker-opts-left{-ms-flex-pack:start;justify-content:flex-start}.picker-opts-right{-ms-flex-pack:end;justify-content:flex-end}.picker-opt:active,.picker-opt:focus{outline:none}.picker-prefix{text-align:end}.picker-prefix,.picker-suffix{position:relative;-ms-flex:1;flex:1;white-space:nowrap}.picker-suffix{text-align:start}.picker-col{padding-left:4px;padding-right:4px;padding-top:0;padding-bottom:0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}\\@supports ((-webkit-margin-start:0) or (margin-inline-start:0)) or (-webkit-margin-start:0){.picker-col{padding-left:unset;padding-right:unset;-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px}}.picker-opts,.picker-prefix,.picker-suffix{top:77px;pointer-events:none}.picker-opt,.picker-opts,.picker-prefix,.picker-suffix{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;color:inherit;font-size:20px;line-height:42px}.picker-opt{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-transform-origin:center center;transform-origin:center center;height:46px;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;background:transparent;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:auto}:host-context([dir=rtl]) .picker-opt,[dir=rtl] .picker-opt{-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}\"; },\n enumerable: true,\n configurable: true\n });\n return class_3;\n}());\nvar PICKER_OPT_SELECTED = 'picker-opt-selected';\nvar DECELERATION_FRICTION = 0.97;\nvar MAX_PICKER_SPEED = 90;\nvar TRANSITION_DURATION = 150;\nexport { Datetime as ion_datetime, Picker as ion_picker, PickerColumnCmp as ion_picker_column };\n"],"sourceRoot":""}