{"version":3,"file":"js/688-95df9cdb3e1c2b33cf58.js","mappings":"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","sources":["webpack://Scout/./app/javascript/jquery.plugin.js","webpack://Scout/./app/javascript/jquery.timeentry.js","webpack://Scout/./app/javascript/packs/admin/availability_field.js"],"sourcesContent":["(function() {\n var initializing = false;\n window.JQClass = function() {\n };\n JQClass.classes = {};\n JQClass.extend = function extender(prop) {\n var base = this.prototype;\n initializing = true;\n var prototype = new this();\n initializing = false;\n for (var name2 in prop) {\n prototype[name2] = typeof prop[name2] == \"function\" && typeof base[name2] == \"function\" ? /* @__PURE__ */ function(name3, fn) {\n return function() {\n var __super = this._super;\n this._super = function(args) {\n return base[name3].apply(this, args || []);\n };\n var ret = fn.apply(this, arguments);\n this._super = __super;\n return ret;\n };\n }(name2, prop[name2]) : prop[name2];\n }\n function JQClass2() {\n if (!initializing && this._init) {\n this._init.apply(this, arguments);\n }\n }\n JQClass2.prototype = prototype;\n JQClass2.prototype.constructor = JQClass2;\n JQClass2.extend = extender;\n return JQClass2;\n };\n})();\n(function($) {\n JQClass.classes.JQPlugin = JQClass.extend({\n /** Name to identify this plugin.\n @example name: 'tabs' */\n name: \"plugin\",\n /** Default options for instances of this plugin (default: {}).\n @example defaultOptions: {\n selectedClass: 'selected',\n triggers: 'click'\n } */\n defaultOptions: {},\n /** Options dependent on the locale.\n Indexed by language and (optional) country code, with '' denoting the default language (English/US).\n @example regionalOptions: {\n '': {\n greeting: 'Hi'\n }\n } */\n regionalOptions: {},\n /** Names of getter methods - those that can't be chained (default: []).\n @example _getters: ['activeTab'] */\n _getters: [],\n /** Retrieve a marker class for affected elements.\n @private\n @return {string} The marker class. */\n _getMarker: function() {\n return \"is-\" + this.name;\n },\n /** Initialise the plugin.\n Create the jQuery bridge - plugin name xyz
\n produces $.xyz
and $.fn.xyz
. */\n _init: function() {\n $.extend(this.defaultOptions, this.regionalOptions && this.regionalOptions[\"\"] || {});\n var jqName = camelCase(this.name);\n $[jqName] = this;\n $.fn[jqName] = function(options) {\n var otherArgs = Array.prototype.slice.call(arguments, 1);\n if ($[jqName]._isNotChained(options, otherArgs)) {\n return $[jqName][options].apply($[jqName], [this[0]].concat(otherArgs));\n }\n return this.each(function() {\n if (typeof options === \"string\") {\n if (options[0] === \"_\" || !$[jqName][options]) {\n throw \"Unknown method: \" + options;\n }\n $[jqName][options].apply($[jqName], [this].concat(otherArgs));\n } else {\n $[jqName]._attach(this, options);\n }\n });\n };\n },\n /** Set default values for all subsequent instances.\n @param options {object} The new default options.\n @example $.plugin.setDefauls({name: value}) */\n setDefaults: function(options) {\n $.extend(this.defaultOptions, options || {});\n },\n /** Determine whether a method is a getter and doesn't permit chaining.\n @private\n @param name {string} The method name.\n @param otherArgs {any[]} Any other arguments for the method.\n @return {boolean} True if this method is a getter, false otherwise. */\n _isNotChained: function(name2, otherArgs) {\n if (name2 === \"option\" && (otherArgs.length === 0 || otherArgs.length === 1 && typeof otherArgs[0] === \"string\")) {\n return true;\n }\n return $.inArray(name2, this._getters) > -1;\n },\n /** Initialise an element. Called internally only.\n Adds an instance object as data named for the plugin.\n @param elem {Element} The element to enhance.\n @param options {object} Overriding settings. */\n _attach: function(elem2, options) {\n elem2 = $(elem2);\n if (elem2.hasClass(this._getMarker())) {\n return;\n }\n elem2.addClass(this._getMarker());\n options = $.extend({}, this.defaultOptions, this._getMetadata(elem2), options || {});\n var inst = $.extend(\n { name: this.name, elem: elem2, options },\n this._instSettings(elem2, options)\n );\n elem2.data(this.name, inst);\n this._postAttach(elem2, inst);\n this.option(elem2, options);\n },\n /** Retrieve additional instance settings.\n Override this in a sub-class to provide extra settings.\n @param elem {jQuery} The current jQuery element.\n @param options {object} The instance options.\n @return {object} Any extra instance values.\n @example _instSettings: function(elem, options) {\n return {nav: elem.find(options.navSelector)};\n } */\n _instSettings: function(elem2, options) {\n return {};\n },\n /** Plugin specific post initialisation.\n Override this in a sub-class to perform extra activities.\n @param elem {jQuery} The current jQuery element.\n @param inst {object} The instance settings.\n @example _postAttach: function(elem, inst) {\n elem.on('click.' + this.name, function() {\n ...\n });\n } */\n _postAttach: function(elem2, inst) {\n },\n /** Retrieve metadata configuration from the element.\n Metadata is specified as an attribute:\n data-<plugin name>=\"<setting name>: '<value>', ...\"
.\n Dates should be specified as strings in this format: 'new Date(y, m-1, d)'.\n @private\n @param elem {jQuery} The source element.\n @return {object} The inline configuration or {}. */\n _getMetadata: function(elem) {\n try {\n var data = elem.data(this.name.toLowerCase()) || \"\";\n data = data.replace(/'/g, '\"');\n data = data.replace(/([a-zA-Z0-9]+):/g, function(match, group, i) {\n var count = data.substring(0, i).match(/\"/g);\n return !count || count.length % 2 === 0 ? '\"' + group + '\":' : group + \":\";\n });\n data = $.parseJSON(\"{\" + data + \"}\");\n for (var name in data) {\n var value = data[name];\n if (typeof value === \"string\" && value.match(/^new Date\\((.*)\\)$/)) {\n data[name] = eval(value);\n }\n }\n return data;\n } catch (e) {\n return {};\n }\n },\n /** Retrieve the instance data for element.\n @param elem {Element} The source element.\n @return {object} The instance data or {}. */\n _getInst: function(elem2) {\n return $(elem2).data(this.name) || {};\n },\n /** Retrieve or reconfigure the settings for a plugin.\n @param elem {Element} The source element.\n @param name {object|string} The collection of new option values or the name of a single option.\n @param [value] {any} The value for a single named option.\n @return {any|object} If retrieving a single value or all options.\n @example $(selector).plugin('option', 'name', value)\n $(selector).plugin('option', {name: value, ...})\n var value = $(selector).plugin('option', 'name')\n var options = $(selector).plugin('option') */\n option: function(elem2, name2, value2) {\n elem2 = $(elem2);\n var inst = elem2.data(this.name);\n if (!name2 || typeof name2 === \"string\" && value2 == null) {\n var options = (inst || {}).options;\n return options && name2 ? options[name2] : options;\n }\n if (!elem2.hasClass(this._getMarker())) {\n return;\n }\n var options = name2 || {};\n if (typeof name2 === \"string\") {\n options = {};\n options[name2] = value2;\n }\n this._optionsChanged(elem2, inst, options);\n $.extend(inst.options, options);\n },\n /** Plugin specific options processing.\n Old value available in inst.options[name]
, new value in options[name]
.\n Override this in a sub-class to perform extra activities.\n @param elem {jQuery} The current jQuery element.\n @param inst {object} The instance settings.\n @param options {object} The new options.\n @example _optionsChanged: function(elem, inst, options) {\n if (options.name != inst.options.name) {\n elem.removeClass(inst.options.name).addClass(options.name);\n }\n } */\n _optionsChanged: function(elem2, inst, options) {\n },\n /** Remove all trace of the plugin.\n Override _preDestroy
for plugin-specific processing.\n @param elem {Element} The source element.\n @example $(selector).plugin('destroy') */\n destroy: function(elem2) {\n elem2 = $(elem2);\n if (!elem2.hasClass(this._getMarker())) {\n return;\n }\n this._preDestroy(elem2, this._getInst(elem2));\n elem2.removeData(this.name).removeClass(this._getMarker());\n },\n /** Plugin specific pre destruction.\n Override this in a sub-class to perform extra activities and undo everything that was\n done in the _postAttach
or _optionsChanged
functions.\n @param elem {jQuery} The current jQuery element.\n @param inst {object} The instance settings.\n @example _preDestroy: function(elem, inst) {\n elem.off('.' + this.name);\n } */\n _preDestroy: function(elem2, inst) {\n }\n });\n function camelCase(name2) {\n return name2.replace(/-([a-z])/g, function(match, group) {\n return group.toUpperCase();\n });\n }\n $.JQPlugin = {\n /** Create a new collection plugin.\n @memberof \"$.JQPlugin\"\n @param [superClass='JQPlugin'] {string} The name of the parent class to inherit from.\n @param overrides {object} The property/function overrides for the new class.\n @example $.JQPlugin.createPlugin({\n name: 'tabs',\n defaultOptions: {selectedClass: 'selected'},\n _initSettings: function(elem, options) { return {...}; },\n _postAttach: function(elem, inst) { ... }\n }); */\n createPlugin: function(superClass, overrides) {\n if (typeof superClass === \"object\") {\n overrides = superClass;\n superClass = \"JQPlugin\";\n }\n superClass = camelCase(superClass);\n var className = camelCase(overrides.name);\n JQClass.classes[className] = JQClass.classes[superClass].extend(overrides);\n new JQClass.classes[className]();\n }\n };\n})(jQuery);\n","(function($) {\n var pluginName = \"timeEntry\";\n $.JQPlugin.createPlugin({\n /** The name of the plugin. */\n name: pluginName,\n /** Time entry before show callback.\n Triggered when the input field is focussed.\n @callback beforeShowCallback\n @param input {Element} The current input field.\n @return {object} Any changes to the instance settings.\n @example beforeShow: function(input) {\n // Cross-populate minimum/maximum times for a range\n return {minTime: (input.id === 'timeTo' ?\n $('#timeFrom').timeEntry('getTime') : null), \n maxTime: (input.id === 'timeFrom' ?\n $('#timeTo').timeEntry('getTime') : null)};\n } */\n /** Time entry before set time callback.\n Triggered when the input field value is to be changed.\n @callback beforeSetTimeCallback\n @param current {string} The current time value entered.\n @param newTime {string} The new time value to use.\n @param minTime {Date} The minimum time value allowed.\n @param maxTime {Date} The maximum time value allowed.\n @return {Date} The actual time value to set.\n @example beforeSetTime: function(oldTime, newTime, minTime, maxTime) {\n var increment = (newTime - (oldTime || newTime)) > 0;\n if (newTime.getMinutes() > 30) { // First half of hour only\n newTime.setMinutes(increment ? 0 : 30);\n newTime.setHours(newTime.getHours() + (increment ? 1 : 0));\n }\n return newTime;\n } */\n /** Default settings for the plugin.\n @property [appendText=''] {string} Display text following the input box, e.g. showing the format.\n @property [showSeconds=false] {boolean} true
to show seconds as well,\n false
for hours/minutes only.\n @property [unlimitedHours=false] {boolean} true
to allow entry of more than 24 hours,\n false
to restrict to one day.\n @property [timeSteps=[1,1,1]] {number[]} Steps for each of hours/minutes/seconds when incrementing/decrementing.\n @property [initialField=null] {number} The field to highlight initially (0 = hours, 1 = minutes, ...),\n or null
for none.\n @property [noSeparatorEntry=false] {boolean} true
to move to next sub-field after two digits entry.\n @property [tabToExit=false] {boolean} true
for tab key to go to next element,\n false
for tab key to step through internal fields.\n @property [useMouseWheel=true] {boolean} true
to use mouse wheel for increment/decrement if possible,\n false
to never use it.\n @property [defaultTime=null] {Date|number|string} The time to use if none has been set,\n or null
for now. Specify as a Date
object, as a number of seconds\n offset from now, or as a string of offsets from now, using 'H' for hours,\n 'M' for minutes, 'S' for seconds.\n @property [minTime=null] {Date|number|string|number[]} The earliest selectable time,\n or null
for no limit. See defaultTime
for possible formats,\n use array of hours, minutes, seconds for unlimitedHours
.\n @property [maxTime=null] {Date|number|string|number[]} The latest selectable time,\n or null
for no limit. See defaultTime
for possible formats,\n use array of hours, minutes, seconds for unlimitedHours
.\n @property [spinnerImage='spinnerDefault.png'] {string} The URL of the images to use for the time spinner -\n seven images packed horizontally for normal, each button pressed\n (centre, previous, next, increment, decrement), and disabled.\n @property [spinnerSize=[20,20,8]] {number[]} The width and height of the spinner image,\n and size of centre button for current time.\n @property [spinnerBigImage=''] {string} The URL of the images to use for the expanded time spinner -\n seven images packed horizontally for normal, each button pressed\n (centre, previous, next, increment, decrement), and disabled.\n @property [spinnerBigSize=[40,40,16]] {number[]} The width and height of the expanded spinner image,\n and size of centre button for current time.\n @property [spinnerIncDecOnly=false] {boolean} true
for increment/decrement buttons only, false
for all.\n @property [spinnerRepeat=[500,250]] {number[]} Initial and subsequent waits in milliseconds\n for repeats on the spinner buttons.\n @property [beforeShow=null] {beforeShowCallback} Function that takes an input field and\n returns a set of custom settings for the time entry.\n @property [beforeSetTime=null] {beforeSetTimeCallback} Function that runs before updating the time,\n takes the old and new times, and minimum and maximum times as parameters,\n and returns an adjusted time if necessary.\n @example {defaultTime: new Date(0, 0, 0, 8, 30, 0), minTime: -300, maxTime: '+2H +30M'} */\n defaultOptions: {\n appendText: \"\",\n showSeconds: false,\n unlimitedHours: false,\n timeSteps: [1, 1, 1],\n initialField: null,\n noSeparatorEntry: false,\n tabToExit: false,\n useMouseWheel: true,\n defaultTime: null,\n minTime: null,\n maxTime: null,\n spinnerImage: \"spinnerDefault.png\",\n spinnerSize: [20, 20, 8],\n spinnerBigImage: \"\",\n spinnerBigSize: [40, 40, 16],\n spinnerIncDecOnly: false,\n spinnerRepeat: [500, 250],\n beforeShow: null,\n beforeSetTime: null\n },\n /** Localisations for the plugin.\n Entries are objects indexed by the language code ('' being the default US/English).\n Each object has the following attributes.\n @property [show24Hours=false] {boolean} true
to use 24 hour time, false
for 12 hour (AM/PM).\n @property [separator=':'] {string} The separator between time fields.\n @property [ampmPrefix=''] {string} The separator before the AM/PM text.\n @property [ampmNames=['AM','PM']] {string[]} Names of morning/evening markers.\n @property [spinnerTexts=['Now','Previous field','Next field','Increment','Decrement']] {string[]}\n The popup texts for the spinner image areas. */\n regionalOptions: {\n // Available regional settings, indexed by language/country code\n \"\": {\n // Default regional settings - English/US\n show24Hours: false,\n separator: \":\",\n ampmPrefix: \"\",\n ampmNames: [\"AM\", \"PM\"],\n spinnerTexts: [\"Now\", \"Previous field\", \"Next field\", \"Increment\", \"Decrement\"]\n }\n },\n _getters: [\"getOffset\", \"getTime\", \"isDisabled\"],\n _appendClass: pluginName + \"-append\",\n // Class name for the appended content\n _controlClass: pluginName + \"-control\",\n // Class name for the date entry control\n _expandClass: pluginName + \"-expand\",\n // Class name for the expanded spinner\n _disabledInputs: [],\n // List of time inputs that have been disabled\n _instSettings: function(elem, options) {\n return { _field: 0, _selectedHour: 0, _selectedMinute: 0, _selectedSecond: 0 };\n },\n _postAttach: function(elem, inst) {\n elem.on(\"focus.\" + inst.name, this._doFocus).on(\"blur.\" + inst.name, this._doBlur).on(\"click.\" + inst.name, this._doClick).on(\"keydown.\" + inst.name, this._doKeyDown).on(\"keypress.\" + inst.name, this._doKeyPress).on(\"paste.\" + inst.name, function(event) {\n setTimeout(function() {\n plugin._parseTime(inst);\n }, 1);\n });\n },\n _optionsChanged: function(elem, inst, options) {\n var currentTime = this._extractTime(inst);\n $.extend(inst.options, options);\n inst.options.show24Hours = inst.options.show24Hours || inst.options.unlimitedHours;\n inst._field = 0;\n if (currentTime) {\n this._setTime(inst, new Date(0, 0, 0, currentTime[0], currentTime[1], currentTime[2]));\n }\n elem.next(\"span.\" + this._appendClass).remove();\n elem.parent().find(\"span.\" + this._controlClass).remove();\n if ($.fn.mousewheel) {\n elem.unmousewheel();\n }\n var spinner = !inst.options.spinnerImage ? null : $('');\n elem.after(inst.options.appendText ? '' + inst.options.appendText + \"\" : \"\").after(spinner || \"\");\n if (inst.options.useMouseWheel && $.fn.mousewheel) {\n elem.mousewheel(this._doMouseWheel);\n }\n if (spinner) {\n spinner.mousedown(this._handleSpinner).mouseup(this._endSpinner).mouseover(this._expandSpinner).mouseout(this._endSpinner).mousemove(this._describeSpinner);\n }\n },\n /** Enable a time entry input and any associated spinner.\n @param elem {Element} The single input field.\n @example $(selector).timeEntry('enable') */\n enable: function(elem) {\n this._enableDisable(elem, false);\n },\n /** Disable a time entry input and any associated spinner.\n @param elem {Element} The single input field.\n @example $(selector).timeEntry('disable') */\n disable: function(elem) {\n this._enableDisable(elem, true);\n },\n /** Enable or disable a time entry input and any associated spinner.\n @private\n @param elem {Element} The single input field.\n @param disable {boolean} true
to disable, false
to enable. */\n _enableDisable: function(elem, disable) {\n var inst = this._getInst(elem);\n if (!inst) {\n return;\n }\n elem.disabled = disable;\n if (elem.nextSibling && elem.nextSibling.nodeName.toLowerCase() === \"span\") {\n this._changeSpinner(inst, elem.nextSibling, disable ? 5 : -1);\n }\n this._disabledInputs = $.map(\n this._disabledInputs,\n function(value) {\n return value === elem ? null : value;\n }\n );\n if (disable) {\n this._disabledInputs.push(elem);\n }\n },\n /** Check whether an input field has been disabled.\n @param elem {Element} The input field to check.\n @return {boolean} true
if this field has been disabled, false
if it is enabled.\n @example if ($(selector).dateEntry('isDisabled')) {...} */\n isDisabled: function(elem) {\n return $.inArray(elem, this._disabledInputs) > -1;\n },\n _preDestroy: function(elem, inst) {\n elem = $(elem).off(\".\" + pluginName);\n if ($.fn.mousewheel) {\n elem.unmousewheel();\n }\n this._disabledInputs = $.map(\n this._disabledInputs,\n function(value) {\n return value === elem[0] ? null : value;\n }\n );\n elem.siblings(\".\" + this._appendClass + \",.\" + this._controlClass).remove();\n },\n /** Initialise the current time for a time entry input field.\n @param elem {Element} The input field to update.\n @param time {Date|number|string} The new time or offset or null
to clear.\n An actual time or offset in seconds from now or units and periods of offsets from now.\n @example $(selector).timeEntry('setTime', new Date(0, 0, 0, 11, 22, 33))\n $(selector).timeEntry('setTime', +300)\n $(selector).timeEntry('setTime', '+1H +30M')\n $(selector).timeEntry('setTime', null) */\n setTime: function(elem, time) {\n var inst = this._getInst(elem);\n if (inst) {\n if (time === null || time === \"\") {\n $(elem).val(\"\");\n } else {\n this._setTime(inst, time ? $.isArray(time) ? time : typeof time === \"object\" ? new Date(time.getTime()) : time : null);\n }\n }\n },\n /** Retrieve the current time for a time entry input field.\n @param elem {Element} The input field to update.\n @return {Date} The current time or null
if none.\n @example var time = $(selector).timeEntry('getTime') */\n getTime: function(elem) {\n var inst = this._getInst(elem);\n var currentTime = inst ? this._extractTime(inst) : null;\n return !currentTime ? null : new Date(0, 0, 0, currentTime[0], currentTime[1], currentTime[2]);\n },\n /** Retrieve the millisecond offset for the current time.\n @param elem {Element} The input field to examine.\n @return {number} The time as milliseconds offset or zero if none.\n @example var offset = $(selector).timeEntry('getOffset') */\n getOffset: function(elem) {\n var inst = this._getInst(elem);\n var currentTime = inst ? this._extractTime(inst) : null;\n return !currentTime ? 0 : (currentTime[0] * 3600 + currentTime[1] * 60 + currentTime[2]) * 1e3;\n },\n /** Initialise date entry.\n @private\n @param elem {Element|Event} The input field or the focus event. */\n _doFocus: function(elem) {\n var input = elem.nodeName && elem.nodeName.toLowerCase() === \"input\" ? elem : this;\n if (plugin._lastInput === input || plugin.isDisabled(input)) {\n plugin._focussed = false;\n return;\n }\n var inst = plugin._getInst(input);\n plugin._focussed = true;\n plugin._lastInput = input;\n plugin._blurredInput = null;\n $.extend(inst.options, $.isFunction(inst.options.beforeShow) ? inst.options.beforeShow.apply(input, [input]) : {});\n plugin._parseTime(inst, elem.nodeName ? null : elem);\n setTimeout(function() {\n plugin._showField(inst);\n }, 10);\n },\n /** Note that the field has been exited.\n @private\n @param event {Event} The blur event. */\n _doBlur: function(event) {\n plugin._blurredInput = plugin._lastInput;\n plugin._lastInput = null;\n },\n /** Select appropriate field portion on click, if already in the field.\n @private\n @param event {Event} The click event. */\n _doClick: function(event) {\n var input = event.target;\n var inst = plugin._getInst(input);\n var prevField = inst._field;\n if (!plugin._focussed) {\n inst._field = plugin._getSelection(inst, input, event);\n }\n if (prevField !== inst._field) {\n inst._lastChr = \"\";\n }\n plugin._showField(inst);\n plugin._focussed = false;\n },\n /** Find the selected subfield within the control.\n @private\n @param inst {object} The current instance settings.\n @param input {Element} The input control.\n @param event {Event} The triggering event.\n @return {number} The selected subfield. */\n _getSelection: function(inst, input, event) {\n var select = 0;\n var fieldSizes = [inst.elem.val().split(inst.options.separator)[0].length, 2, 2];\n if (input.selectionStart !== null) {\n var end = 0;\n for (var field = 0; field <= Math.max(1, inst._secondField, inst._ampmField); field++) {\n end += field !== inst._ampmField ? fieldSizes[field] + inst.options.separator.length : inst.options.ampmPrefix.length + inst.options.ampmNames[0].length;\n select = field;\n if (input.selectionStart < end) {\n break;\n }\n }\n } else if (input.createTextRange && event != null) {\n var src = $(event.srcElement);\n var range = input.createTextRange();\n var convert = function(value) {\n return { thin: 2, medium: 4, thick: 6 }[value] || value;\n };\n var offsetX = event.clientX + document.documentElement.scrollLeft - (src.offset().left + parseInt(convert(src.css(\"border-left-width\")), 10)) - range.offsetLeft;\n for (var field = 0; field <= Math.max(1, inst._secondField, inst._ampmField); field++) {\n var end = field !== inst._ampmField ? field * fieldSize + 2 : inst._ampmField * fieldSize + inst.options.ampmPrefix.length + inst.options.ampmNames[0].length;\n range.collapse();\n range.moveEnd(\"character\", end);\n select = field;\n if (offsetX < range.boundingWidth) {\n break;\n }\n }\n }\n return select;\n },\n /** Handle keystrokes in the field.\n @private\n @param event {Event} The keydown event.\n @return {boolean} true
to continue, false
to stop processing. */\n _doKeyDown: function(event) {\n if (event.keyCode >= 48) {\n return true;\n }\n var inst = plugin._getInst(event.target);\n switch (event.keyCode) {\n case 9:\n return inst.options.tabToExit ? true : event.shiftKey ? (\n // Move to previous time field, or out if at the beginning\n plugin._changeField(inst, -1, true)\n ) : (\n // Move to next time field, or out if at the end\n plugin._changeField(inst, 1, true)\n );\n case 35:\n if (event.ctrlKey) {\n plugin._setValue(inst, \"\");\n } else {\n inst._field = Math.max(1, inst._secondField, inst._ampmField);\n plugin._adjustField(inst, 0);\n }\n break;\n case 36:\n if (event.ctrlKey) {\n plugin._setTime(inst);\n } else {\n inst._field = 0;\n plugin._adjustField(inst, 0);\n }\n break;\n case 37:\n plugin._changeField(inst, -1, false);\n break;\n case 38:\n plugin._adjustField(inst, 1);\n break;\n case 39:\n plugin._changeField(inst, 1, false);\n break;\n case 40:\n plugin._adjustField(inst, -1);\n break;\n case 46:\n plugin._setValue(inst, \"\");\n break;\n case 8:\n inst._lastChr = \"\";\n default:\n return true;\n }\n return false;\n },\n /** Disallow unwanted characters.\n @private\n @param event {Event} The keypress event.\n @return {boolean} true
to continue, false
to stop processing. */\n _doKeyPress: function(event) {\n var chr = String.fromCharCode(event.charCode === void 0 ? event.keyCode : event.charCode);\n if (chr < \" \") {\n return true;\n }\n var inst = plugin._getInst(event.target);\n plugin._handleKeyPress(inst, chr);\n return false;\n },\n /** Update date based on keystroke entered.\n @private\n @param inst {object} The instance settings.\n @param chr {string} The new character. */\n _handleKeyPress: function(inst, chr) {\n if (chr === inst.options.separator) {\n this._changeField(inst, 1, false);\n } else if (chr >= \"0\" && chr <= \"9\") {\n var key = parseInt(chr, 10);\n var value = parseInt(inst._lastChr + chr, 10);\n var hour = inst._field !== 0 ? inst._selectedHour : inst.options.unlimitedHours ? value : inst.options.show24Hours ? value < 24 ? value : key : (value >= 1 && value <= 12 ? value : key > 0 ? key : inst._selectedHour) % 12 + (inst._selectedHour >= 12 ? 12 : 0);\n var minute = inst._field !== 1 ? inst._selectedMinute : value < 60 ? value : key;\n var second = inst._field !== inst._secondField ? inst._selectedSecond : value < 60 ? value : key;\n var fields = this._constrainTime(inst, [hour, minute, second]);\n this._setTime(inst, inst.options.unlimitedHours ? fields : new Date(0, 0, 0, fields[0], fields[1], fields[2]));\n if (inst.options.noSeparatorEntry && inst._lastChr) {\n this._changeField(inst, 1, false);\n } else {\n inst._lastChr = inst.options.unlimitedHours && inst._field === 0 ? inst._lastChr + chr : chr;\n }\n } else if (!inst.options.show24Hours) {\n chr = chr.toLowerCase();\n if (chr === inst.options.ampmNames[0].substring(0, 1).toLowerCase() && inst._selectedHour >= 12 || chr === inst.options.ampmNames[1].substring(0, 1).toLowerCase() && inst._selectedHour < 12) {\n var saveField = inst._field;\n inst._field = inst._ampmField;\n this._adjustField(inst, 1);\n inst._field = saveField;\n this._showField(inst);\n }\n }\n },\n /** Increment/decrement on mouse wheel activity.\n @private\n @param event {Event} The mouse wheel event.\n @param delta {number} The amount of change. */\n _doMouseWheel: function(event, delta) {\n if (plugin.isDisabled(event.target)) {\n return;\n }\n var inst = plugin._getInst(event.target);\n inst.elem.focus();\n if (!inst.elem.val()) {\n plugin._parseTime(inst);\n }\n plugin._adjustField(inst, delta);\n event.preventDefault();\n },\n /** Expand the spinner, if possible, to make it easier to use.\n @private\n @param event {Event} The mouse over event. */\n _expandSpinner: function(event) {\n var spinner = plugin._getSpinnerTarget(event);\n var inst = plugin._getInst(plugin._getInput(spinner));\n if (plugin.isDisabled(inst.elem[0])) {\n return;\n }\n if (inst.options.spinnerBigImage) {\n inst._expanded = true;\n var offset = $(spinner).offset();\n var relative = null;\n $(spinner).parents().each(function() {\n var parent = $(this);\n if (parent.css(\"position\") === \"relative\" || parent.css(\"position\") === \"absolute\") {\n relative = parent.offset();\n }\n return !relative;\n });\n $('
null
. */\n _parseTime: function(inst, event) {\n var currentTime = this._extractTime(inst);\n if (currentTime) {\n inst._selectedHour = currentTime[0];\n inst._selectedMinute = currentTime[1];\n inst._selectedSecond = currentTime[2];\n } else {\n var now = this._constrainTime(inst);\n inst._selectedHour = now[0];\n inst._selectedMinute = now[1];\n inst._selectedSecond = inst.options.showSeconds ? now[2] : 0;\n }\n inst._secondField = inst.options.showSeconds ? 2 : -1;\n inst._ampmField = inst.options.show24Hours ? -1 : inst.options.showSeconds ? 3 : 2;\n inst._lastChr = \"\";\n var postProcess = function() {\n if (inst.elem.val() !== \"\") {\n plugin._showTime(inst);\n }\n };\n if (typeof inst.options.initialField === \"number\") {\n inst._field = Math.max(0, Math.min(\n Math.max(1, inst._secondField, inst._ampmField),\n inst.options.initialField\n ));\n postProcess();\n } else {\n setTimeout(function() {\n inst._field = plugin._getSelection(inst, inst.elem[0], event);\n postProcess();\n }, 0);\n }\n },\n /** Extract the time value from a string as an array of values, or default to null
.\n @private\n @param value {string} The date text.\n @param inst {object} The instance settings.\n @return {number[]} The retrieved time components (hours, minutes, seconds) or\n null
if no value. */\n _extractTime: function(inst, value) {\n value = value || inst.elem.val();\n var currentTime = value.split(inst.options.separator);\n if (inst.options.separator === \"\" && value !== \"\") {\n currentTime[0] = value.substring(0, 2);\n currentTime[1] = value.substring(2, 4);\n currentTime[2] = value.substring(4, 6);\n }\n if (currentTime.length >= 2) {\n var isAM = !inst.options.show24Hours && value.indexOf(inst.options.ampmNames[0]) > -1;\n var isPM = !inst.options.show24Hours && value.indexOf(inst.options.ampmNames[1]) > -1;\n var hour = parseInt(currentTime[0], 10);\n hour = isNaN(hour) ? 0 : hour;\n hour = ((isAM || isPM) && hour === 12 ? 0 : hour) + (isPM ? 12 : 0);\n var minute = parseInt(currentTime[1], 10);\n minute = isNaN(minute) ? 0 : minute;\n var second = currentTime.length >= 3 ? parseInt(currentTime[2], 10) : 0;\n second = isNaN(second) || !inst.options.showSeconds ? 0 : second;\n return this._constrainTime(inst, [hour, minute, second]);\n }\n return null;\n },\n /** Constrain the given/current time to the time steps.\n @private\n @param inst {object} The instance settings.\n @param fields {number[]} The current time components (hours, minutes, seconds).\n @return {number[]} The constrained time components (hours, minutes, seconds). */\n _constrainTime: function(inst, fields) {\n var specified = fields !== null && fields !== void 0;\n if (!specified) {\n var now = this._determineTime(inst.options.defaultTime, inst) || /* @__PURE__ */ new Date();\n fields = [now.getHours(), now.getMinutes(), now.getSeconds()];\n }\n var reset = false;\n for (var i = 0; i < inst.options.timeSteps.length; i++) {\n if (reset) {\n fields[i] = 0;\n } else if (inst.options.timeSteps[i] > 1) {\n fields[i] = Math.round(fields[i] / inst.options.timeSteps[i]) * inst.options.timeSteps[i];\n reset = true;\n }\n }\n return fields;\n },\n /** Set the selected time into the input field.\n @private\n @param inst {object} The instance settings. */\n _showTime: function(inst) {\n var currentTime = (inst.options.unlimitedHours ? inst._selectedHour : this._formatNumber(inst.options.show24Hours ? inst._selectedHour : (inst._selectedHour + 11) % 12 + 1)) + inst.options.separator + this._formatNumber(inst._selectedMinute) + (inst.options.showSeconds ? inst.options.separator + this._formatNumber(inst._selectedSecond) : \"\") + (inst.options.show24Hours ? \"\" : inst.options.ampmPrefix + inst.options.ampmNames[inst._selectedHour < 12 ? 0 : 1]);\n this._setValue(inst, currentTime);\n this._showField(inst);\n },\n /** Highlight the current date field.\n @private\n @param inst {object} The instance settings. */\n _showField: function(inst) {\n var input = inst.elem[0];\n if (inst.elem.is(\":hidden\") || plugin._lastInput !== input) {\n return;\n }\n var fieldSizes = [inst.elem.val().split(inst.options.separator)[0].length, 2, 2];\n var start = 0;\n var field = 0;\n while (field < inst._field) {\n start += fieldSizes[field] + (field === Math.max(1, inst._secondField) ? 0 : inst.options.separator.length);\n field++;\n }\n var end = start + (inst._field !== inst._ampmField ? fieldSizes[field] : inst.options.ampmPrefix.length + inst.options.ampmNames[0].length);\n if (input.setSelectionRange) {\n input.setSelectionRange(start, end);\n } else if (input.createTextRange) {\n var range = input.createTextRange();\n range.moveStart(\"character\", start);\n range.moveEnd(\"character\", end - inst.elem.val().length);\n range.select();\n }\n if (!input.disabled) {\n input.focus();\n }\n },\n /** Ensure displayed single number has a leading zero.\n @private\n @param value {number} The current value.\n @return {string} Number with at least two digits. */\n _formatNumber: function(value) {\n return (value < 10 ? \"0\" : \"\") + value;\n },\n /** Update the input field and notify listeners.\n @private\n @param inst {object} The instance settings.\n @param value {string} The new value. */\n _setValue: function(inst, value) {\n if (value !== inst.elem.val()) {\n inst.elem.val(value).trigger(\"change\");\n }\n },\n /** Move to previous/next field, or out of field altogether if appropriate.\n @private\n @param inst {object} The instance settings.\n @param offset {number} The direction of change (-1, +1).\n @param moveOut {boolean} true
if can move out of the field.\n @return {boolean} true
if exiting the field, false
if not. */\n _changeField: function(inst, offset, moveOut) {\n var atFirstLast = inst.elem.val() === \"\" || inst._field === (offset === -1 ? 0 : Math.max(1, inst._secondField, inst._ampmField));\n if (!atFirstLast) {\n inst._field += offset;\n }\n this._showField(inst);\n inst._lastChr = \"\";\n return atFirstLast && moveOut;\n },\n /** Update the current field in the direction indicated.\n @private\n @param inst {object} The instance settings.\n @param offset {number} The amount to change by. */\n _adjustField: function(inst, offset) {\n if (inst.elem.val() === \"\") {\n offset = 0;\n }\n if (inst.options.unlimitedHours) {\n this._setTime(inst, [\n inst._selectedHour + (inst._field === 0 ? offset * inst.options.timeSteps[0] : 0),\n inst._selectedMinute + (inst._field === 1 ? offset * inst.options.timeSteps[1] : 0),\n inst._selectedSecond + (inst._field === inst._secondField ? offset * inst.options.timeSteps[2] : 0)\n ]);\n } else {\n this._setTime(inst, new Date(\n 0,\n 0,\n 0,\n inst._selectedHour + (inst._field === 0 ? offset * inst.options.timeSteps[0] : 0) + (inst._field === inst._ampmField ? offset * 12 : 0),\n inst._selectedMinute + (inst._field === 1 ? offset * inst.options.timeSteps[1] : 0),\n inst._selectedSecond + (inst._field === inst._secondField ? offset * inst.options.timeSteps[2] : 0)\n ));\n }\n },\n /** Check against minimum/maximum and display time.\n @private\n @param inst {object} The instance settings.\n @param time {Date|number|string|number[]} The actual time or offset in seconds from now or\n units and periods of offsets from now or numeric period values. */\n _setTime: function(inst, time) {\n if (inst.options.unlimitedHours && $.isArray(time)) {\n var fields = time;\n } else {\n time = this._determineTime(time, inst);\n var fields = time ? [time.getHours(), time.getMinutes(), time.getSeconds()] : null;\n }\n fields = this._constrainTime(inst, fields);\n time = new Date(0, 0, 0, fields[0], fields[1], fields[2]);\n var time = this._normaliseTime(time);\n var minTime = this._normaliseTime(this._determineTime(inst.options.minTime, inst));\n var maxTime = this._normaliseTime(this._determineTime(inst.options.maxTime, inst));\n if (inst.options.unlimitedHours) {\n while (fields[2] < 0) {\n fields[2] += 60;\n fields[1]--;\n }\n while (fields[2] > 59) {\n fields[2] -= 60;\n fields[1]++;\n }\n while (fields[1] < 0) {\n fields[1] += 60;\n fields[0]--;\n }\n while (fields[1] > 59) {\n fields[1] -= 60;\n fields[0]++;\n }\n minTime = inst.options.minTime != null && $.isArray(inst.options.minTime) ? inst.options.minTime : [0, 0, 0];\n if (fields[0] < minTime[0]) {\n fields = minTime.slice(0, 3);\n } else if (fields[0] === minTime[0]) {\n if (fields[1] < minTime[1]) {\n fields[1] = minTime[1];\n fields[2] = minTime[2];\n } else if (fields[1] === minTime[1]) {\n if (fields[2] < minTime[2]) {\n fields[2] = minTime[2];\n }\n }\n }\n if (inst.options.maxTime != null && $.isArray(inst.options.maxTime)) {\n if (fields[0] > inst.options.maxTime[0]) {\n fields = inst.options.maxTime.slice(0, 3);\n } else if (fields[0] === inst.options.maxTime[0]) {\n if (fields[1] > inst.options.maxTime[1]) {\n fields[1] = inst.options.maxTime[1];\n fields[2] = inst.options.maxTime[2];\n } else if (fields[1] === inst.options.maxTime[1]) {\n if (fields[2] > inst.options.maxTime[2]) {\n fields[2] = inst.options.maxTime[2];\n }\n }\n }\n }\n } else {\n if (minTime && maxTime && minTime > maxTime) {\n if (time < minTime && time > maxTime) {\n time = Math.abs(time - minTime) < Math.abs(time - maxTime) ? minTime : maxTime;\n }\n } else {\n time = minTime && time < minTime ? minTime : maxTime && time > maxTime ? maxTime : time;\n }\n fields[0] = time.getHours();\n fields[1] = time.getMinutes();\n fields[2] = time.getSeconds();\n }\n if ($.isFunction(inst.options.beforeSetTime)) {\n time = inst.options.beforeSetTime.apply(\n inst.elem[0],\n [this.getTime(inst.elem[0]), time, minTime, maxTime]\n );\n fields[0] = time.getHours();\n fields[1] = time.getMinutes();\n fields[2] = time.getSeconds();\n }\n inst._selectedHour = fields[0];\n inst._selectedMinute = fields[1];\n inst._selectedSecond = fields[2];\n this._showTime(inst);\n },\n /** A time may be specified as an exact value or a relative one.\n @private\n @param setting {Date|number|string|number[]} The actual time or offset in seconds from now or\n units and periods of offsets from now or numeric period values.\n @param inst {object} The instance settings.\n @return {Date} The calculated time. */\n _determineTime: function(setting, inst) {\n var offsetNumeric = function(offset) {\n var time = /* @__PURE__ */ new Date();\n time.setTime(time.getTime() + offset * 1e3);\n return time;\n };\n var offsetString = function(offset) {\n var fields = plugin._extractTime(inst, offset);\n var time = /* @__PURE__ */ new Date();\n var hour = fields ? fields[0] : time.getHours();\n var minute = fields ? fields[1] : time.getMinutes();\n var second = fields ? fields[2] : time.getSeconds();\n if (!fields) {\n var pattern = /([+-]?[0-9]+)\\s*(s|S|m|M|h|H)?/g;\n var matches = pattern.exec(offset);\n while (matches) {\n switch (matches[2] || \"s\") {\n case \"s\":\n case \"S\":\n second += parseInt(matches[1], 10);\n break;\n case \"m\":\n case \"M\":\n minute += parseInt(matches[1], 10);\n break;\n case \"h\":\n case \"H\":\n hour += parseInt(matches[1], 10);\n break;\n }\n matches = pattern.exec(offset);\n }\n }\n time = new Date(0, 0, 10, hour, minute, second, 0);\n if (/^!/.test(offset)) {\n if (time.getDate() > 10) {\n time = new Date(0, 0, 10, 23, 59, 59);\n } else if (time.getDate() < 10) {\n time = new Date(0, 0, 10, 0, 0, 0);\n }\n }\n return time;\n };\n var offsetArray = function(setting2) {\n return new Date(0, 0, 0, setting2[0], setting2[1] || 0, setting2[2] || 0, 0);\n };\n return setting ? typeof setting === \"string\" ? offsetString(setting) : typeof setting === \"number\" ? offsetNumeric(setting) : $.isArray(setting) ? offsetArray(setting) : setting : null;\n },\n /** Normalise time object to a common date.\n @private\n @param time {Date} The original time.\n @return {Date} The normalised time. */\n _normaliseTime: function(time) {\n if (!time) {\n return null;\n }\n time.setFullYear(1900);\n time.setMonth(0);\n time.setDate(0);\n return time;\n }\n });\n var plugin = $.timeEntry;\n})(jQuery);\n","window.updatePaidHours = function(e) {\n var row = $(e.target).closest(\"tr.availability-row\");\n var fromTimeParts = $(\".from-time\").val().split(\":\");\n var fromTime = parseInt(fromTimeParts[0]) + parseInt(fromTimeParts[0]);\n var paidMinutes = window.stringToMinutes(row.find(\".to-time\").val()) - window.stringToMinutes(row.find(\".from-time\").val()) - parseInt(\"0\" + row.find(\".js-break-time\").val());\n paidMinutes = (paidMinutes + 24 * 60) % (24 * 60);\n row.find(\".paid-hours\").val((paidMinutes / 60).toFixed(2));\n window.updateTotal();\n};\nwindow.updateTotal = function() {\n var rows = $(\"tr.availability-row\");\n var totalShifts = 0;\n var totalHours = 0;\n $.each(rows, function(index, row) {\n var hours = parseFloat($(row).find(\".paid-hours\").val());\n totalHours += hours;\n totalShifts += hours == 0 ? 0 : 1;\n });\n $(\".total-shifts\").text(totalShifts);\n $(\".total-paid-hours\").text(totalHours.toFixed(2));\n};\nwindow.stringToMinutes = function(str) {\n var parts = str.split(\":\");\n return parseInt(\"0\" + parts[0]) * 60 + parseInt(\"0\" + parts[1]);\n};\n$(function() {\n $(\".timeentry\").timeEntry({ show24Hours: true, spinnerImage: \"\" });\n $(\".availability-field .timeentry, .js-break-time\").on(\"change\", updatePaidHours);\n $(\".availability-field .from-time\").change();\n});\n"],"names":["initializing","window","JQClass","classes","extend","extender","prop","base","this","prototype","name2","name3","fn","__super","_super","args","apply","ret","arguments","JQClass2","_init","constructor","$","camelCase","replace","match","group","toUpperCase","JQPlugin","name","defaultOptions","regionalOptions","_getters","_getMarker","jqName","options","otherArgs","Array","slice","call","_isNotChained","concat","each","_attach","setDefaults","length","inArray","elem2","hasClass","addClass","_getMetadata","inst","elem","_instSettings","data","_postAttach","option","toLowerCase","i","count","substring","parseJSON","value","eval","e","_getInst","value2","_optionsChanged","destroy","_preDestroy","removeData","removeClass","createPlugin","superClass","overrides","className","jQuery","pluginName","appendText","showSeconds","unlimitedHours","timeSteps","initialField","noSeparatorEntry","tabToExit","useMouseWheel","defaultTime","minTime","maxTime","spinnerImage","spinnerSize","spinnerBigImage","spinnerBigSize","spinnerIncDecOnly","spinnerRepeat","beforeShow","beforeSetTime","show24Hours","separator","ampmPrefix","ampmNames","spinnerTexts","_appendClass","_controlClass","_expandClass","_disabledInputs","_field","_selectedHour","_selectedMinute","_selectedSecond","on","_doFocus","_doBlur","_doClick","_doKeyDown","_doKeyPress","event","setTimeout","plugin","_parseTime","currentTime","_extractTime","_setTime","Date","next","remove","parent","find","mousewheel","unmousewheel","spinner","after","_doMouseWheel","mousedown","_handleSpinner","mouseup","_endSpinner","mouseover","_expandSpinner","mouseout","mousemove","_describeSpinner","enable","_enableDisable","disable","disabled","nextSibling","nodeName","_changeSpinner","map","push","isDisabled","off","siblings","setTime","time","val","isArray","getTime","getOffset","input","_lastInput","_focussed","_blurredInput","isFunction","_showField","target","prevField","_getSelection","_lastChr","select","fieldSizes","split","selectionStart","end","field","Math","max","_secondField","_ampmField","createTextRange","src","srcElement","range","offsetX","clientX","document","documentElement","scrollLeft","offset","left","parseInt","thin","medium","thick","css","offsetLeft","fieldSize","collapse","moveEnd","boundingWidth","keyCode","shiftKey","_changeField","ctrlKey","_setValue","_adjustField","chr","String","fromCharCode","charCode","_handleKeyPress","key","hour","minute","second","fields","_constrainTime","saveField","delta","focus","preventDefault","_getSpinnerTarget","_getInput","_expanded","relative","parents","top","_endExpand","insertAfter","title","_getSpinnerRegion","region","_actionSpinner","_timer","_handlingSpinner","_repeatSpinner","one","_releaseSpinner","clearTimeout","pos","scrolled","body","scrollTop","clientY","right","bottom","abs","min","now","postProcess","_showTime","isAM","indexOf","isPM","isNaN","_determineTime","getHours","getMinutes","getSeconds","reset","round","_formatNumber","is","start","setSelectionRange","moveStart","trigger","moveOut","atFirstLast","_normaliseTime","setting","setting2","pattern","matches","exec","test","getDate","offsetString","setFullYear","setMonth","setDate","timeEntry","updatePaidHours","row","closest","fromTimeParts","paidMinutes","stringToMinutes","toFixed","updateTotal","rows","totalShifts","totalHours","index","hours","parseFloat","text","str","parts","change"],"sourceRoot":""}