{"version":3,"sources":["webpack:///./app/javascript/phab-ratings.js","webpack:///./app/javascript/packs/professional.js","webpack:///./node_modules/raty-js/lib/jquery.raty.js","webpack:///./app/javascript/lib/bootstrap-errors.js"],"names":["require","ratings","form","document","getElementById","$","raty","starType","scoreName","submit","e","val","alert","preventDefault","addEventListener","outerHTML","innerHTML","processJsonErrors","methods","init","options","this","each","self","destroy","call","opt","extend","fn","defaults","data","_adjustCallback","_adjustNumber","_adjustHints","score","_adjustedScore","_adjustStarType","_adjustPath","_createStars","cancel","_createCancel","precision","_adjustPrecision","_createScore","_apply","_setTitle","_target","readOnly","_lock","style","cursor","_binds","i","length","_between","number","hints","halfShow","half","steps","group","Object","prototype","toString","j","hint","last","undefined","numberMax","path","charAt","replaces","replace","_fill","_roundStars","value","min","max","Math","parseFloat","_bindOverCancel","_bindClickCancel","_bindOutCancel","_bindOver","_bindClick","_bindOut","that","stars","on","evt","execute","alt","click","_roundHalfScore","removeAttr","_resetTitle","mouseout","icon","cancelOff","cancelClass","_setIcon","action","_getScoreByPosition","mouseover","starOff","cancelOn","attr","_buildScoreField","name","type","appendTo","title","cancelHint","src","addClass","cancelPlace","prepend","append","targetScore","_nameForIndex","attrs","_getHint","space","children","_error","message","text","error","hash","star","turnOn","_turnOn","iconRange","irange","_getRangeIcon","range","_getFirstDecimal","decimal","split","result","parseInt","slice","starOn","off","getAttribute","size","_getWidth","pageX","offset","left","noRatedMsg","integer","ceil","set","move","width","eq","css","prop","hide","toFixed","round","down","up","full","_setTarget","target","targetFormat","is","html","targetText","targetType","mousemove","targetKeep","single","_unlock","removeAttribute","Event","raw","empty","removeData","clone","getScore","push","percent","trigger","readonly","reload","arguments","setScore","apply","method","Array","starHalf","jQuery","model","event","callbackForField","jsonErrors","detail","erroredKeys","keys","forEach","erroredField","index","fieldNameOnPage","field","jField","fieldError","join","insertAfter","remove","removeClass","scrollIntoView"],"mappings":"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","file":"js/professional-ffb0ea4bba18027f68a9.chunk.js","sourcesContent":["require('raty-js/lib/jquery.raty');\nimport processJsonErrors from \"./lib/bootstrap-errors\";\n\nexport default function ratings() {\n let form = document.getElementById('review_form');\n if (form) {\n // Handle ratings and verify that they have been selected\n $('.raty').raty({starType: 'i', scoreName: 'review[stars]'});\n $(form).submit(function (e) {\n let ratingValue = $('.raty input[name=\"review[stars]\"]').val();\n if (!ratingValue) {\n alert(\"Please select a rating for your review.\");\n e.preventDefault();\n return false;\n }\n });\n\n // Handle successful review form submission\n form.addEventListener('ajax:success', function () {\n form.outerHTML = document.getElementById('review_success').innerHTML;\n })\n\n // Handle failed review form submission\n form.addEventListener('ajax:error', function (e) {\n processJsonErrors('review', e)\n });\n }\n}","import ratings from \"../phab-ratings\";\n\ndocument.addEventListener(\"turbolinks:load\", function () {\n ratings();\n});\n\nimport \"raty-js/lib/jquery.raty.css\";","/*!\n * jQuery Raty - A Star Rating Plugin\n *\n * The MIT License\n *\n * author: Washington Botelho\n * github: wbotelhos/raty\n * version: 2.9.0\n *\n */\n\n(function ($) {\n 'use strict';\n\n var methods = {\n init: function (options) {\n return this.each(function () {\n this.self = $(this);\n methods.destroy.call(this.self);\n this.opt = $.extend(true, {}, $.fn.raty.defaults, options, this.self.data());\n methods._adjustCallback.call(this);\n methods._adjustNumber.call(this);\n methods._adjustHints.call(this);\n this.opt.score = methods._adjustedScore.call(this, this.opt.score);\n if (this.opt.starType !== 'img') {\n methods._adjustStarType.call(this);\n }\n methods._adjustPath.call(this);\n methods._createStars.call(this);\n if (this.opt.cancel) {\n methods._createCancel.call(this);\n }\n if (this.opt.precision) {\n methods._adjustPrecision.call(this);\n }\n methods._createScore.call(this);\n methods._apply.call(this, this.opt.score);\n methods._setTitle.call(this, this.opt.score);\n methods._target.call(this, this.opt.score);\n if (this.opt.readOnly) {\n methods._lock.call(this);\n } else {\n this.style.cursor = 'pointer';\n methods._binds.call(this);\n }\n });\n },\n _adjustCallback: function () {\n var options = ['number', 'readOnly', 'score', 'scoreName', 'target', 'path'];\n for (var i = 0; i < options.length; i++) {\n if (typeof this.opt[options[i]] === 'function') {\n this.opt[options[i]] = this.opt[options[i]].call(this);\n }\n }\n },\n _adjustedScore: function (score) {\n if (!score) {\n return score;\n }\n return methods._between(score, 0, this.opt.number);\n },\n _adjustHints: function () {\n if (!this.opt.hints) {\n this.opt.hints = [];\n }\n if (!this.opt.halfShow && !this.opt.half) {\n return;\n }\n var steps = this.opt.precision ? 10 : 2;\n for (var i = 0; i < this.opt.number; i++) {\n var group = this.opt.hints[i];\n if (Object.prototype.toString.call(group) !== '[object Array]') {\n group = [group];\n }\n this.opt.hints[i] = [];\n for (var j = 0; j < steps; j++) {\n var hint = group[j],\n last = group[group.length - 1];\n if (last === undefined) {\n last = null;\n }\n this.opt.hints[i][j] = hint === undefined ? last : hint;\n }\n }\n },\n _adjustNumber: function () {\n this.opt.number = methods._between(this.opt.number, 1, this.opt.numberMax);\n },\n _adjustPath: function () {\n this.opt.path = this.opt.path || '';\n if (this.opt.path && this.opt.path.charAt(this.opt.path.length - 1) !== '/') {\n this.opt.path += '/';\n }\n },\n _adjustPrecision: function () {\n this.opt.half = true;\n },\n _adjustStarType: function () {\n var replaces = ['cancelOff', 'cancelOn', 'starHalf', 'starOff', 'starOn'];\n this.opt.path = '';\n for (var i = 0; i < replaces.length; i++) {\n this.opt[replaces[i]] = this.opt[replaces[i]].replace('.', '-');\n }\n },\n _apply: function (score) {\n methods._fill.call(this, score);\n if (score) {\n if (score > 0) {\n this.score.val(score);\n }\n methods._roundStars.call(this, score);\n }\n },\n _between: function (value, min, max) {\n return Math.min(Math.max(parseFloat(value), min), max);\n },\n _binds: function () {\n if (this.cancel) {\n methods._bindOverCancel.call(this);\n methods._bindClickCancel.call(this);\n methods._bindOutCancel.call(this);\n }\n methods._bindOver.call(this);\n methods._bindClick.call(this);\n methods._bindOut.call(this);\n },\n _bindClick: function () {\n var that = this;\n that.stars.on('click.raty', function (evt) {\n var execute = true,\n score = that.opt.half || that.opt.precision ? that.self.data('score') : this.alt || $(this).data('alt');\n if (that.opt.click) {\n execute = that.opt.click.call(that, +score, evt);\n }\n if (execute || execute === undefined) {\n if (that.opt.half && !that.opt.precision) {\n score = methods._roundHalfScore.call(that, score);\n }\n methods._apply.call(that, score);\n }\n });\n },\n _bindClickCancel: function () {\n var that = this;\n that.cancel.on('click.raty', function (evt) {\n that.score.removeAttr('value');\n if (that.opt.click) {\n that.opt.click.call(that, null, evt);\n }\n });\n },\n _bindOut: function () {\n var that = this;\n that.self.on('mouseleave.raty', function (evt) {\n var score = +that.score.val() || undefined;\n methods._apply.call(that, score);\n methods._target.call(that, score, evt);\n methods._resetTitle.call(that);\n if (that.opt.mouseout) {\n that.opt.mouseout.call(that, score, evt);\n }\n });\n },\n _bindOutCancel: function () {\n var that = this;\n that.cancel.on('mouseleave.raty', function (evt) {\n var icon = that.opt.cancelOff;\n if (that.opt.starType !== 'img') {\n icon = that.opt.cancelClass + ' ' + icon;\n }\n methods._setIcon.call(that, this, icon);\n if (that.opt.mouseout) {\n var score = +that.score.val() || undefined;\n that.opt.mouseout.call(that, score, evt);\n }\n });\n },\n _bindOver: function () {\n var that = this,\n action = that.opt.half ? 'mousemove.raty' : 'mouseover.raty';\n that.stars.on(action, function (evt) {\n var score = methods._getScoreByPosition.call(that, evt, this);\n methods._fill.call(that, score);\n if (that.opt.half) {\n methods._roundStars.call(that, score, evt);\n methods._setTitle.call(that, score, evt);\n that.self.data('score', score);\n }\n methods._target.call(that, score, evt);\n if (that.opt.mouseover) {\n that.opt.mouseover.call(that, score, evt);\n }\n });\n },\n _bindOverCancel: function () {\n var that = this;\n that.cancel.on('mouseover.raty', function (evt) {\n var starOff = that.opt.path + that.opt.starOff,\n icon = that.opt.cancelOn;\n if (that.opt.starType === 'img') {\n that.stars.attr('src', starOff);\n } else {\n icon = that.opt.cancelClass + ' ' + icon;\n that.stars.attr('class', starOff);\n }\n methods._setIcon.call(that, this, icon);\n methods._target.call(that, null, evt);\n if (that.opt.mouseover) {\n that.opt.mouseover.call(that, null);\n }\n });\n },\n _buildScoreField: function () {\n return $('', {\n name: this.opt.scoreName,\n type: 'hidden'\n }).appendTo(this);\n },\n _createCancel: function () {\n var icon = this.opt.path + this.opt.cancelOff,\n cancel = $('<' + this.opt.starType + ' />', {\n title: this.opt.cancelHint,\n 'class': this.opt.cancelClass\n });\n if (this.opt.starType === 'img') {\n cancel.attr({\n src: icon,\n alt: 'x'\n });\n } else {\n // TODO: use $.data\n cancel.attr('data-alt', 'x').addClass(icon);\n }\n if (this.opt.cancelPlace === 'left') {\n this.self.prepend(' ').prepend(cancel);\n } else {\n this.self.append(' ').append(cancel);\n }\n this.cancel = cancel;\n },\n _createScore: function () {\n var score = $(this.opt.targetScore);\n this.score = score.length ? score : methods._buildScoreField.call(this);\n },\n _createStars: function () {\n for (var i = 1; i <= this.opt.number; i++) {\n var name = methods._nameForIndex.call(this, i),\n attrs = {\n alt: i,\n src: this.opt.path + this.opt[name]\n };\n if (this.opt.starType !== 'img') {\n attrs = {\n 'data-alt': i,\n 'class': attrs.src\n }; // TODO: use $.data.\n }\n\n attrs.title = methods._getHint.call(this, i);\n $('<' + this.opt.starType + ' />', attrs).appendTo(this);\n if (this.opt.space) {\n this.self.append(i < this.opt.number ? ' ' : '');\n }\n }\n this.stars = this.self.children(this.opt.starType);\n },\n _error: function (message) {\n $(this).text(message);\n $.error(message);\n },\n _fill: function (score) {\n var hash = 0;\n for (var i = 1; i <= this.stars.length; i++) {\n var icon,\n star = this.stars[i - 1],\n turnOn = methods._turnOn.call(this, i, score);\n if (this.opt.iconRange && this.opt.iconRange.length > hash) {\n var irange = this.opt.iconRange[hash];\n icon = methods._getRangeIcon.call(this, irange, turnOn);\n if (i <= irange.range) {\n methods._setIcon.call(this, star, icon);\n }\n if (i === irange.range) {\n hash++;\n }\n } else {\n icon = this.opt[turnOn ? 'starOn' : 'starOff'];\n methods._setIcon.call(this, star, icon);\n }\n }\n },\n _getFirstDecimal: function (number) {\n var decimal = number.toString().split('.')[1],\n result = 0;\n if (decimal) {\n result = parseInt(decimal.charAt(0), 10);\n if (decimal.slice(1, 5) === '9999') {\n result++;\n }\n }\n return result;\n },\n _getRangeIcon: function (irange, turnOn) {\n return turnOn ? irange.on || this.opt.starOn : irange.off || this.opt.starOff;\n },\n _getScoreByPosition: function (evt, icon) {\n var score = parseInt(icon.alt || icon.getAttribute('data-alt'), 10);\n if (this.opt.half) {\n var size = methods._getWidth.call(this),\n percent = parseFloat((evt.pageX - $(icon).offset().left) / size);\n score = score - 1 + percent;\n }\n return score;\n },\n _getHint: function (score, evt) {\n if (score !== 0 && !score) {\n return this.opt.noRatedMsg;\n }\n var decimal = methods._getFirstDecimal.call(this, score),\n integer = Math.ceil(score),\n group = this.opt.hints[(integer || 1) - 1],\n hint = group,\n set = !evt || this.move;\n if (this.opt.precision) {\n if (set) {\n decimal = decimal === 0 ? 9 : decimal - 1;\n }\n hint = group[decimal];\n } else if (this.opt.halfShow || this.opt.half) {\n decimal = set && decimal === 0 ? 1 : decimal > 5 ? 1 : 0;\n hint = group[decimal];\n }\n return hint === '' ? '' : hint || score;\n },\n _getWidth: function () {\n var width = this.stars[0].width || parseFloat(this.stars.eq(0).css('font-size'));\n if (!width) {\n methods._error.call(this, 'Could not get the icon width!');\n }\n return width;\n },\n _lock: function () {\n var hint = methods._getHint.call(this, this.score.val());\n this.style.cursor = '';\n this.title = hint;\n this.score.prop('readonly', true);\n this.stars.prop('title', hint);\n if (this.cancel) {\n this.cancel.hide();\n }\n this.self.data('readonly', true);\n },\n _nameForIndex: function (i) {\n return this.opt.score && this.opt.score >= i ? 'starOn' : 'starOff';\n },\n _resetTitle: function () {\n for (var i = 0; i < this.opt.number; i++) {\n this.stars[i].title = methods._getHint.call(this, i + 1);\n }\n },\n _roundHalfScore: function (score) {\n var integer = parseInt(score, 10),\n decimal = methods._getFirstDecimal.call(this, score);\n if (decimal !== 0) {\n decimal = decimal > 5 ? 1 : 0.5;\n }\n return integer + decimal;\n },\n _roundStars: function (score, evt) {\n var decimal = (score % 1).toFixed(2),\n name;\n if (evt || this.move) {\n name = decimal > 0.5 ? 'starOn' : 'starHalf';\n } else if (decimal > this.opt.round.down) {\n // Up: [x.76 .. x.99]\n name = 'starOn';\n if (this.opt.halfShow && decimal < this.opt.round.up) {\n // Half: [x.26 .. x.75]\n name = 'starHalf';\n } else if (decimal < this.opt.round.full) {\n // Down: [x.00 .. x.5]\n name = 'starOff';\n }\n }\n if (name) {\n var icon = this.opt[name],\n star = this.stars[Math.ceil(score) - 1];\n methods._setIcon.call(this, star, icon);\n } // Full down: [x.00 .. x.25]\n },\n\n _setIcon: function (star, icon) {\n star[this.opt.starType === 'img' ? 'src' : 'className'] = this.opt.path + icon;\n },\n _setTarget: function (target, score) {\n if (score) {\n score = this.opt.targetFormat.toString().replace('{score}', score);\n }\n if (target.is(':input')) {\n target.val(score);\n } else {\n target.html(score);\n }\n },\n _setTitle: function (score, evt) {\n if (score) {\n var integer = parseInt(Math.ceil(score), 10),\n star = this.stars[integer - 1];\n star.title = methods._getHint.call(this, score, evt);\n }\n },\n _target: function (score, evt) {\n if (this.opt.target) {\n var target = $(this.opt.target);\n if (!target.length) {\n methods._error.call(this, 'Target selector invalid or missing!');\n }\n var mouseover = evt && evt.type === 'mouseover';\n if (score === undefined) {\n score = this.opt.targetText;\n } else if (score === null) {\n score = mouseover ? this.opt.cancelHint : this.opt.targetText;\n } else {\n if (this.opt.targetType === 'hint') {\n score = methods._getHint.call(this, score, evt);\n } else if (this.opt.precision) {\n score = parseFloat(score).toFixed(1);\n }\n var mousemove = evt && evt.type === 'mousemove';\n if (!mouseover && !mousemove && !this.opt.targetKeep) {\n score = this.opt.targetText;\n }\n }\n methods._setTarget.call(this, target, score);\n }\n },\n _turnOn: function (i, score) {\n return this.opt.single ? i === score : i <= score;\n },\n _unlock: function () {\n this.style.cursor = 'pointer';\n this.removeAttribute('title');\n this.score.removeAttr('readonly');\n this.self.data('readonly', false);\n for (var i = 0; i < this.opt.number; i++) {\n this.stars[i].title = methods._getHint.call(this, i + 1);\n }\n if (this.cancel) {\n this.cancel.css('display', '');\n }\n },\n cancel: function (click) {\n return this.each(function () {\n var self = $(this);\n if (self.data('readonly') !== true) {\n methods[click ? 'click' : 'score'].call(self, null);\n this.score.removeAttr('value');\n }\n });\n },\n click: function (score) {\n return this.each(function () {\n if ($(this).data('readonly') !== true) {\n score = methods._adjustedScore.call(this, score);\n methods._apply.call(this, score);\n if (this.opt.click) {\n this.opt.click.call(this, score, $.Event('click'));\n }\n methods._target.call(this, score);\n }\n });\n },\n destroy: function () {\n return this.each(function () {\n var self = $(this),\n raw = self.data('raw');\n if (raw) {\n self.off('.raty').empty().css({\n cursor: raw.style.cursor\n }).removeData('readonly');\n } else {\n self.data('raw', self.clone()[0]);\n }\n });\n },\n getScore: function () {\n var score = [],\n value;\n this.each(function () {\n value = this.score.val();\n score.push(value ? +value : undefined);\n });\n return score.length > 1 ? score : score[0];\n },\n move: function (score) {\n return this.each(function () {\n var integer = parseInt(score, 10),\n decimal = methods._getFirstDecimal.call(this, score);\n if (integer >= this.opt.number) {\n integer = this.opt.number - 1;\n decimal = 10;\n }\n var width = methods._getWidth.call(this),\n steps = width / 10,\n star = $(this.stars[integer]),\n percent = star.offset().left + steps * decimal,\n evt = $.Event('mousemove', {\n pageX: percent\n });\n this.move = true;\n star.trigger(evt);\n this.move = false;\n });\n },\n readOnly: function (readonly) {\n return this.each(function () {\n var self = $(this);\n if (self.data('readonly') !== readonly) {\n if (readonly) {\n self.off('.raty').children(this.opt.starType).off('.raty');\n methods._lock.call(this);\n } else {\n methods._binds.call(this);\n methods._unlock.call(this);\n }\n self.data('readonly', readonly);\n }\n });\n },\n reload: function () {\n return methods.set.call(this, {});\n },\n score: function () {\n var self = $(this);\n return arguments.length ? methods.setScore.apply(self, arguments) : methods.getScore.call(self);\n },\n set: function (options) {\n return this.each(function () {\n $(this).raty($.extend({}, this.opt, options));\n });\n },\n setScore: function (score) {\n return this.each(function () {\n if ($(this).data('readonly') !== true) {\n score = methods._adjustedScore.call(this, score);\n methods._apply.call(this, score);\n methods._target.call(this, score);\n }\n });\n }\n };\n $.fn.raty = function (method) {\n if (methods[method]) {\n return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));\n } else if (typeof method === 'object' || !method) {\n return methods.init.apply(this, arguments);\n } else {\n $.error('Method ' + method + ' does not exist!');\n }\n };\n $.fn.raty.defaults = {\n cancel: false,\n cancelClass: 'raty-cancel',\n cancelHint: 'Cancel this rating!',\n cancelOff: 'cancel-off.png',\n cancelOn: 'cancel-on.png',\n cancelPlace: 'left',\n click: undefined,\n half: false,\n halfShow: true,\n hints: ['bad', 'poor', 'regular', 'good', 'gorgeous'],\n iconRange: undefined,\n mouseout: undefined,\n mouseover: undefined,\n noRatedMsg: 'Not rated yet!',\n number: 5,\n numberMax: 20,\n path: undefined,\n precision: false,\n readOnly: false,\n round: {\n down: 0.25,\n full: 0.6,\n up: 0.76\n },\n score: undefined,\n scoreName: 'score',\n single: false,\n space: true,\n starHalf: 'star-half.png',\n starOff: 'star-off.png',\n starOn: 'star-on.png',\n starType: 'img',\n target: undefined,\n targetFormat: '{score}',\n targetKeep: false,\n targetScore: undefined,\n targetText: '',\n targetType: 'hint'\n };\n})(jQuery);","// Processes errors in a {property: [errors]} format in JSON from a Rails AJAX callback.\n// Accepts a callback parameter - if it's specified, then it can be used to find custom fields, that don't\n// have the standard Rails form field naming scheme.\nexport default function processJsonErrors(model, event, callbackForField) {\n // event.detail contains [response, status, xhr] per\n // https://guides.rubyonrails.org/working_with_javascript_in_rails.html#remote-elements\n let jsonErrors = event.detail[0];\n let erroredKeys = Object.keys(jsonErrors);\n erroredKeys.forEach(function (erroredField, index) {\n let fieldNameOnPage = erroredField;\n if (erroredField === \"words_in_bio\") {\n fieldNameOnPage = \"bio\";\n }\n\n let field = document.getElementById(model + '_' + fieldNameOnPage);\n if (!field && callbackForField) {\n field = callbackForField(fieldNameOnPage)\n }\n\n if (field) {\n let jField = $(field);\n jField.addClass('is-invalid');\n let fieldError = $('
' +\n jsonErrors[erroredField].join(\"
\")\n + '
');\n fieldError.insertAfter(jField);\n\n // remove the error once the user has acknowledged it\n jField.click(function () {\n fieldError.remove();\n jField.removeClass('is-invalid');\n // no need to keep monitoring this change event, that's silly\n jField.off('change');\n });\n\n if ((index + 1) === erroredKeys.length) {\n // last error gets scrolled into the viewport\n field.scrollIntoView();\n }\n }\n });\n}"],"sourceRoot":""}