{"version":3,"sources":["webpack:///./src/consts/curveConfigDefaults.ts","webpack:///../../../src/components/VSkeletonLoader/VSkeletonLoader.ts","webpack:///./src/components/VesselSelectSimple.vue?2754","webpack:///./src/components/VesselSelectSimple.vue","webpack:///./src/components/VesselSelectSimple.vue?16ac","webpack:///./src/components/VesselSelectSimple.vue?9b17","webpack:///./src/components/VesselSelectSimple.vue?28df","webpack:///../../../src/components/VTextarea/VTextarea.ts","webpack:///./src/Scripts/utilities/numericFilter.js","webpack:///./src/types/PowerSpeedCurveConfig.ts"],"names":["curveTypeFormula","CurveFunction","Hoerl","min","max","Rational","Polynomial","Power","mixins","Elevatable","Measurable","Themeable","extend","name","props","boilerplate","Boolean","loading","tile","transition","String","type","types","Object","default","computed","attrs","this","isLoading","role","$attrs","classes","themeClasses","elevationClasses","$scopedSlots","rootTypes","actions","article","avatar","button","card","chip","heading","image","paragraph","sentences","table","text","methods","genBone","children","$createElement","staticClass","genBones","bone","split","length","generator","genStructure","Array","from","map","indexOf","mapBones","push","genSkeleton","getSlot","on","afterEnter","resetStyles","beforeEnter","onBeforeEnter","beforeLeave","onBeforeLeave","leaveCancelled","bones","replace","el","_initialStyle","display","style","setProperty","render","h","$listeners","class","measurableStyles","undefined","_vm","_h","_c","_self","_l","vessel","key","id","$event","toggleVesselSelection","model","value","selectedVesselIds","callback","$$v","$set","expression","_t","staticRenderFns","VesselSelectSimple","vesselIds","vessels","forEach","isSelected","keys","vesselId","parseInt","find","v","index","selectedVessels","findIndex","splice","$emit","some","Vue","__decorate","PropSync","Prop","required","Component","component","VCheckbox","VList","VListItem","baseMixins","VTextField","autoGrow","noResize","rowHeight","Number","validator","isNaN","parseFloat","rows","noResizeHandle","options","call","watch","val","$nextTick","calculateInputHeight","$refs","input","_this$$refs$input","removeProperty","lazyValue","mounted","setTimeout","height","scrollHeight","minHeight","Math","genInput","tag","data","onInput","e","onKeyDown","isFocused","keyCode","stopPropagation","event","window","expect","target","toString","test","preventDefault"],"mappings":"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","file":"js/chunk-1f1cf57a.33c0ad0f.js","sourcesContent":["import { CurveFunction } from \"@/types/PowerSpeedCurveConfig\";\r\n\r\ntype CurveConstantCount = {\r\n // eslint-disable-next-line no-unused-vars\r\n [key in CurveFunction]: {\r\n min: number;\r\n max: number;\r\n };\r\n};\r\n\r\ntype CurveFunctionFormula = {\r\n // eslint-disable-next-line no-unused-vars\r\n [key in CurveFunction]: string;\r\n};\r\n\r\nexport const curveConstantsCount: CurveConstantCount = {\r\n [CurveFunction.Hoerl]: {\r\n min: 3,\r\n max: 3,\r\n },\r\n [CurveFunction.Rational]: {\r\n min: 4,\r\n max: 4,\r\n },\r\n [CurveFunction.Polynomial]: {\r\n min: 3,\r\n max: 7,\r\n },\r\n [CurveFunction.Power]: {\r\n min: 3,\r\n max: 7,\r\n },\r\n};\r\n\r\nexport const curveTypeFormula: CurveFunctionFormula = {\r\n [CurveFunction.Hoerl]: \"y=A*(B^x)*(x^C)\",\r\n [CurveFunction.Rational]: \"y=(A+Bx)/(1+Cx+Dx^2)\",\r\n [CurveFunction.Polynomial]: \"y=A+Bx+Cx^2+Dx^3...\",\r\n [CurveFunction.Power]: \"y=A*x^B\",\r\n};\r\n","// Styles\nimport './VSkeletonLoader.sass'\n\n// Mixins\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\nimport { getSlot } from '../../util/helpers'\nimport { PropValidator } from 'vue/types/options'\n\nexport interface HTMLSkeletonLoaderElement extends HTMLElement {\n _initialStyle?: {\n display: string | null\n transition: string\n }\n}\n\n/* @vue/component */\nexport default mixins(\n Elevatable,\n Measurable,\n Themeable,\n).extend({\n name: 'VSkeletonLoader',\n\n props: {\n boilerplate: Boolean,\n loading: Boolean,\n tile: Boolean,\n transition: String,\n type: String,\n types: {\n type: Object,\n default: () => ({}),\n } as PropValidator>,\n },\n\n computed: {\n attrs (): object {\n if (!this.isLoading) return this.$attrs\n\n return !this.boilerplate ? {\n 'aria-busy': true,\n 'aria-live': 'polite',\n role: 'alert',\n ...this.$attrs,\n } : {}\n },\n classes (): object {\n return {\n 'v-skeleton-loader--boilerplate': this.boilerplate,\n 'v-skeleton-loader--is-loading': this.isLoading,\n 'v-skeleton-loader--tile': this.tile,\n ...this.themeClasses,\n ...this.elevationClasses,\n }\n },\n isLoading (): boolean {\n return !('default' in this.$scopedSlots) || this.loading\n },\n rootTypes (): Record {\n return {\n actions: 'button@2',\n article: 'heading, paragraph',\n avatar: 'avatar',\n button: 'button',\n card: 'image, card-heading',\n 'card-avatar': 'image, list-item-avatar',\n 'card-heading': 'heading',\n chip: 'chip',\n 'date-picker': 'list-item, card-heading, divider, date-picker-options, date-picker-days, actions',\n 'date-picker-options': 'text, avatar@2',\n 'date-picker-days': 'avatar@28',\n heading: 'heading',\n image: 'image',\n 'list-item': 'text',\n 'list-item-avatar': 'avatar, text',\n 'list-item-two-line': 'sentences',\n 'list-item-avatar-two-line': 'avatar, sentences',\n 'list-item-three-line': 'paragraph',\n 'list-item-avatar-three-line': 'avatar, paragraph',\n paragraph: 'text@3',\n sentences: 'text@2',\n table: 'table-heading, table-thead, table-tbody, table-tfoot',\n 'table-heading': 'heading, text',\n 'table-thead': 'heading@6',\n 'table-tbody': 'table-row-divider@6',\n 'table-row-divider': 'table-row, divider',\n 'table-row': 'table-cell@6',\n 'table-cell': 'text',\n 'table-tfoot': 'text@2, avatar@2',\n text: 'text',\n ...this.types,\n }\n },\n },\n\n methods: {\n genBone (text: string, children: VNode[]) {\n return this.$createElement('div', {\n staticClass: `v-skeleton-loader__${text} v-skeleton-loader__bone`,\n }, children)\n },\n genBones (bone: string): VNode[] {\n // e.g. 'text@3'\n const [type, length] = bone.split('@') as [string, number]\n const generator = () => this.genStructure(type)\n\n // Generate a length array based upon\n // value after @ in the bone string\n return Array.from({ length }).map(generator)\n },\n // Fix type when this is merged\n // https://github.com/microsoft/TypeScript/pull/33050\n genStructure (type?: string): any {\n let children = []\n type = type || this.type || ''\n const bone = this.rootTypes[type] || ''\n\n // End of recursion, do nothing\n /* eslint-disable-next-line no-empty, brace-style */\n if (type === bone) {}\n // Array of values - e.g. 'heading, paragraph, text@2'\n else if (type.indexOf(',') > -1) return this.mapBones(type)\n // Array of values - e.g. 'paragraph@4'\n else if (type.indexOf('@') > -1) return this.genBones(type)\n // Array of values - e.g. 'card@2'\n else if (bone.indexOf(',') > -1) children = this.mapBones(bone)\n // Array of values - e.g. 'list-item@2'\n else if (bone.indexOf('@') > -1) children = this.genBones(bone)\n // Single value - e.g. 'card-heading'\n else if (bone) children.push(this.genStructure(bone))\n\n return [this.genBone(type, children)]\n },\n genSkeleton () {\n const children = []\n\n if (!this.isLoading) children.push(getSlot(this))\n else children.push(this.genStructure())\n\n /* istanbul ignore else */\n if (!this.transition) return children\n\n /* istanbul ignore next */\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n },\n // Only show transition when\n // content has been loaded\n on: {\n afterEnter: this.resetStyles,\n beforeEnter: this.onBeforeEnter,\n beforeLeave: this.onBeforeLeave,\n leaveCancelled: this.resetStyles,\n },\n }, children)\n },\n mapBones (bones: string) {\n // Remove spaces and return array of structures\n return bones.replace(/\\s/g, '').split(',').map(this.genStructure)\n },\n onBeforeEnter (el: HTMLSkeletonLoaderElement) {\n this.resetStyles(el)\n\n if (!this.isLoading) return\n\n el._initialStyle = {\n display: el.style.display,\n transition: el.style.transition,\n }\n\n el.style.setProperty('transition', 'none', 'important')\n },\n onBeforeLeave (el: HTMLSkeletonLoaderElement) {\n el.style.setProperty('display', 'none', 'important')\n },\n resetStyles (el: HTMLSkeletonLoaderElement) {\n if (!el._initialStyle) return\n\n el.style.display = el._initialStyle.display || ''\n el.style.transition = el._initialStyle.transition\n\n delete el._initialStyle\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-skeleton-loader',\n attrs: this.attrs,\n on: this.$listeners,\n class: this.classes,\n style: this.isLoading ? this.measurableStyles : undefined,\n }, [this.genSkeleton()])\n },\n})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vessel-select\"},[_c('v-list',{staticClass:\"d-flex flex-wrap py-3\"},[_vm._l((_vm.vessels),function(vessel){return _c('v-list-item',{key:vessel.id,attrs:{\"color\":\"primary lighten-2\",\"top\":\"\"}},[_c('v-checkbox',{attrs:{\"label\":vessel.name,\"color\":\"primary\"},on:{\"change\":function($event){return _vm.toggleVesselSelection(vessel)}},model:{value:(_vm.selectedVesselIds[vessel.id]),callback:function ($$v) {_vm.$set(_vm.selectedVesselIds, vessel.id, $$v)},expression:\"selectedVesselIds[vessel.id]\"}}),_vm._t(\"checkbox-append-content\",null,{\"vessel\":vessel})],2)})],2),_vm._t(\"footer-content\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, PropSync, Prop } from \"vue-property-decorator\";\nimport { Vessel } from \"@/types/Vessel\";\n\n@Component({})\nexport default class VesselSelectSimple extends Vue {\n @PropSync(\"selectedVesselsList\", { type: Array, default: () => [] })\n selectedVessels!: Vessel[];\n @Prop({ type: Array, default: () => [], required: true })\n vessels!: Vessel[];\n\n get selectedVesselIds(): Record {\n const vesselIds: Record = {};\n this.vessels.forEach(vessel => {\n vesselIds[vessel.id] = this.isSelected(vessel.id);\n });\n return vesselIds;\n }\n\n set selectedVesselIds(value: Record) {\n Object.keys(value).forEach(vesselId => {\n const id = parseInt(vesselId, 10);\n const vessel = this.vessels.find(v => v.id === id);\n if (vessel && value[id] !== this.isSelected(id)) {\n this.toggleVesselSelection(vessel);\n }\n });\n }\n\n toggleVesselSelection(vessel: Vessel): void {\n const index = this.selectedVessels.findIndex(v => v.id === vessel.id);\n if (index === -1) {\n this.selectedVessels.push(vessel);\n } else {\n this.selectedVessels.splice(index, 1);\n }\n this.$emit(\"onSelectionChange\", vessel);\n }\n\n isSelected(id: number): boolean {\n return this.selectedVessels.some(v => v.id === id);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VesselSelectSimple.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VesselSelectSimple.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VesselSelectSimple.vue?vue&type=template&id=7fec328c&scoped=true&\"\nimport script from \"./VesselSelectSimple.vue?vue&type=script&lang=ts&\"\nexport * from \"./VesselSelectSimple.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./VesselSelectSimple.vue?vue&type=style&index=0&id=7fec328c&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7fec328c\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\ninstallComponents(component, {VCheckbox,VList,VListItem})\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VesselSelectSimple.vue?vue&type=style&index=0&id=7fec328c&scoped=true&lang=scss&\"","// Styles\nimport './VTextarea.sass'\n\n// Extensions\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport Vue from 'vue'\n\ninterface options extends Vue {\n $refs: {\n input: HTMLTextAreaElement\n }\n}\n\nconst baseMixins = mixins\n>(\n VTextField\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-textarea',\n\n props: {\n autoGrow: Boolean,\n noResize: Boolean,\n rowHeight: {\n type: [Number, String],\n default: 24,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseInt(v, 10)),\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-textarea': true,\n 'v-textarea--auto-grow': this.autoGrow,\n 'v-textarea--no-resize': this.noResizeHandle,\n ...VTextField.options.computed.classes.call(this),\n }\n },\n noResizeHandle (): boolean {\n return this.noResize || this.autoGrow\n },\n },\n\n watch: {\n autoGrow (val: boolean) {\n this.$nextTick(() => {\n val\n ? this.calculateInputHeight()\n : this.$refs.input?.style.removeProperty('height')\n })\n },\n lazyValue () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n rowHeight () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n },\n\n mounted () {\n setTimeout(() => {\n this.autoGrow && this.calculateInputHeight()\n }, 0)\n },\n\n methods: {\n calculateInputHeight () {\n const input = this.$refs.input\n if (!input) return\n\n input.style.height = '0'\n const height = input.scrollHeight\n const minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight)\n // This has to be done ASAP, waiting for Vue\n // to update the DOM causes ugly layout jumping\n input.style.height = Math.max(minHeight, height) + 'px'\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.tag = 'textarea'\n delete input.data!.attrs!.type\n input.data!.attrs!.rows = this.rows\n\n return input\n },\n onInput (e: Event) {\n VTextField.options.methods.onInput.call(this, e)\n this.autoGrow && this.calculateInputHeight()\n },\n onKeyDown (e: KeyboardEvent) {\n // Prevents closing of a\n // dialog when pressing\n // enter\n if (this.isFocused && e.keyCode === 13) {\n e.stopPropagation()\n }\n\n this.$emit('keydown', e)\n },\n },\n})\n","export default function (event) {\r\n event = event ? event : window.event;\r\n const expect = event.target.value.toString() + event.key.toString();\r\n return !/^\\d?\\-?\\d*[.,]?\\d*$/.test(expect) ? event.preventDefault() : false;\r\n}\r\n","export interface PowerSpeedCurveConfig {\r\n id: number;\r\n description: string;\r\n powerSpeedCurveData: PowerSpeedCurveData[];\r\n vesselIds: number[];\r\n}\r\n\r\nexport interface PowerSpeedCurveData {\r\n id: number;\r\n curveFunction: CurveFunction;\r\n speedMin: number;\r\n speedMax: number;\r\n draftMin: number;\r\n draftMax: number;\r\n powerSpeedCurveParameters: PowerSpeedCurveParameter[];\r\n}\r\n\r\nexport interface PowerSpeedCurveParameter {\r\n id: number;\r\n constant: string;\r\n a0: number;\r\n a1: number;\r\n a2: number;\r\n}\r\n\r\nexport enum CurveFunction {\r\n Hoerl = \"Hoerl\",\r\n Polynomial = \"Polynomial\",\r\n Rational = \"Rational\",\r\n Power = \"Power\",\r\n}\r\n"],"sourceRoot":""}