{"version":3,"file":"PhotoScaleControls-dvHYdXLS.js","sources":["../../../node_modules/lodash-es/startCase.js","../../../app/javascript/components/editor/inputs/BaseInput.vue","../../../app/javascript/components/shared/ImageEditingControl.vue","../../../app/javascript/components/shared/PhotoRotationControls.vue","../../../app/javascript/components/shared/PhotoScaleControls.vue"],"sourcesContent":["import createCompounder from './_createCompounder.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\nvar startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n});\n\nexport default startCase;\n","<template>\n <div></div>\n</template>\n\n<script>\nimport { vOnClickOutside } from \"@vueuse/components\";\n\nexport default {\n name: \"BaseInput\",\n directives: {\n onClickOutside: vOnClickOutside\n },\n props: {\n name: {\n type: String,\n default: \"\"\n },\n value: {\n type: null,\n required: true\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n optionsShowing: false\n };\n },\n methods: {\n toggleOptions() {\n if (this.disabled) return;\n\n this.optionsShowing = !this.optionsShowing;\n },\n hideOptions() {\n this.optionsShowing = false;\n }\n }\n};\n</script>\n","<template>\n <div class=\"flex items-center\">\n <span class=\"label typeset-9\">{{ label }}</span>\n <div class=\"controls flex-1\">\n <slot></slot>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"ImageEditingControl\",\n props: {\n label: {\n type: String,\n required: true\n }\n }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.label {\n min-width: 80px;\n}\n</style>\n","<template>\n <image-editing-control :label=\"label || t('editor.photo.rotate')\">\n <a\n href=\"#\"\n class=\"inline-flex bg-transparent hover:bg-paper-1 h-6 w-6 items-center justify-center mr-2\"\n @click.prevent=\"rotateLeft\">\n <svg-icon\n name=\"rotate-cc\"\n width=\"14\"\n height=\"12\" />\n </a>\n <a\n href=\"#\"\n class=\"inline-flex bg-transparent hover:bg-paper-1 h-6 w-6 items-center justify-center\"\n @click.prevent=\"rotateRight\">\n <svg-icon\n name=\"rotate-c\"\n width=\"14\"\n height=\"12\" />\n </a>\n </image-editing-control>\n</template>\n\n<script>\nimport ImageEditingControl from \"./ImageEditingControl.vue\";\nimport SvgIcon from \"./SvgIcon.vue\";\n\nexport default {\n name: \"PhotoRotationControls\",\n components: {\n ImageEditingControl,\n SvgIcon\n },\n props: {\n label: {\n type: String,\n required: false\n },\n canvas: {\n type: Object,\n default: null\n }\n },\n methods: {\n rotateLeft() {\n this.canvas.rotateImageFrameLeft();\n this.triggerAnalyticsEvent(\"Left\");\n },\n rotateRight() {\n this.canvas.rotateImageFrameRight();\n this.triggerAnalyticsEvent(\"Right\");\n },\n triggerAnalyticsEvent(type) {\n analytics.track(\"Rotate Photo\", {\n type\n });\n }\n }\n};\n</script>\n","<template>\n <image-editing-control :label=\"label || t('editor.photo.scale')\">\n <div class=\"flex items-center\">\n <input\n class=\"number-input form-control ml-3 inline-flex bordered\"\n :value=\"formattedValue\"\n :step=\"step\"\n @keydown.up.exact.prevent\n @keydown.down.exact.prevent\n @keydown.shift.up.exact.prevent\n @keydown.shift.down.exact.prevent\n @keyup.enter=\"enter\"\n @keyup.up.exact=\"increment(0.1)\"\n @keyup.down.exact=\"decrement(0.1)\"\n @keyup.shift.up.exact=\"increment(1)\"\n @keyup.shift.down.exact=\"decrement(1)\" />\n <button\n class=\"hover:bg-paper-1 bg-transparent h-6 w-6 flex items-center justify-center ml-2\"\n @click=\"decrement(1)\">\n <svg-icon\n name=\"minus\"\n height=\"1px\"\n width=\"9px\" />\n </button>\n <button\n class=\"hover:bg-paper-1 bg-transparent h-6 w-6 flex items-center justify-center ml-2\"\n @click=\"increment(1)\">\n <svg-icon\n name=\"plus\"\n height=\"9px\"\n width=\"9px\" />\n </button>\n </div>\n </image-editing-control>\n</template>\n\n<script>\nimport SvgIcon from \"@/app/javascript/components/shared/SvgIcon.vue\";\nimport ImageEditingControl from \"./ImageEditingControl.vue\";\n\nexport default {\n name: \"PhotoScaleControls\",\n components: {\n ImageEditingControl,\n SvgIcon\n },\n props: {\n min: {\n type: Number,\n required: true\n },\n max: {\n type: Number,\n required: true\n },\n step: {\n type: Number,\n required: true\n },\n modelValue: {\n type: null,\n required: true\n },\n label: {\n type: String,\n default: null\n }\n },\n emits: [\"update:modelValue\"],\n computed: {\n formattedValue() {\n if (!this.modelValue) {\n return \"\";\n }\n\n return `${Math.round(this.modelValue * 10)}%`;\n }\n },\n methods: {\n increment(amount) {\n this.$emit(\n \"update:modelValue\",\n Math.min(this.modelValue + amount, this.max)\n );\n analytics.track(\"Scale Photo\");\n },\n decrement(amount) {\n this.$emit(\n \"update:modelValue\",\n Math.max(this.modelValue - amount, this.min)\n );\n analytics.track(\"Scale Photo\");\n },\n enter($event) {\n let val = parseFloat($event.target.value) / 10 || this.min;\n if (val < this.min) {\n val = this.min;\n }\n if (val > this.max) {\n val = this.max;\n }\n this.$emit(\"update:modelValue\", val);\n }\n }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.number-input {\n width: 60px;\n height: 32px;\n outline: none;\n}\n</style>\n"],"names":["startCase","createCompounder","result","word","index","upperFirst","_sfc_main","vOnClickOutside","_createElementBlock","_hoisted_1","_hoisted_2","_hoisted_3","_openBlock","_createElementVNode","_toDisplayString","$props","_renderSlot","_ctx","ImageEditingControl","SvgIcon","type","_createBlock","_component_image_editing_control","_withCtx","_cache","_withModifiers","$options","args","_createVNode","_component_svg_icon","amount","$event","val","_withKeys"],"mappings":"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","x_google_ignoreList":[0]}