{"version":3,"sources":["webpack:///../../../src/components/VIcon/VIcon.ts","webpack:///../../../src/mixins/registrable/index.ts","webpack:///./src/model/image/imageModel.js","webpack:///../../../src/mixins/validatable/index.ts","webpack:///./src/design/components/alert/alertModel.js","webpack:///./src/model/common/events/eventConst.js","webpack:///../../../src/components/VProgressCircular/VProgressCircular.ts","webpack:///../../../src/mixins/comparable/index.ts","webpack:///../../../src/components/VIcon/index.ts","webpack:///../../../src/mixins/sizeable/index.ts","webpack:///../../../src/components/VLabel/VLabel.ts","webpack:///../../../src/components/VLabel/index.ts","webpack:///../../../src/components/VMessages/VMessages.ts","webpack:///../../../src/components/VMessages/index.ts","webpack:///../../../src/components/VInput/VInput.ts","webpack:///../../../src/components/VInput/index.ts","webpack:///../../../src/directives/touch/index.ts","webpack:///./src/mixins/shared/documents/annotationOptionMixin.js"],"names":["SIZE_MAP","isFontAwesome5","iconType","some","val","includes","isSvgPath","icon","test","length","VIcon","mixins","BindsAttrs","Colorable","Sizeable","Themeable","extend","name","props","dense","Boolean","disabled","left","right","size","Number","String","tag","type","required","default","computed","medium","hasClickListener","this","listeners$","click","methods","getIcon","iconName","$slots","text","trim","remapInternalIcon","getSize","sizes","xSmall","small","large","xLarge","explicitSize","keys","find","key","convertToUnit","getDefaultData","staticClass","class","attrs","undefined","attrs$","on","getSvgWrapperData","fontSize","wrapperData","style","height","width","applyColors","data","themeClasses","setTextColor","color","renderFontIcon","h","newChildren","delimiterIndex","indexOf","isMaterialIcon","push","slice","renderSvgIcon","svgData","xmlns","viewBox","role","d","renderSvgIconComponent","component","nativeOn","render","Vue","$_wrapperFor","functional","children","domProps","textContent","innerHTML","generateWarning","child","parent","consoleWarn","inject","namespace","defaultImpl","register","unregister","provide","self","annotateOption","Object","freeze","annotationsInclude","annotationsBurn","annotationsBurnMaintainColor","redactionsInclude","redactionsBurn","imageOperation","ZoomIn","ZoomOut","FitToPage","BestFit","FitToWidth","RotateLeft","RotateRight","JumpFirstPage","JumpLastPage","PreviousPage","NextPage","SelectPage","Move","Remove","SavePage","CheckIn","CheckOut","Scan","Import","Release","ImportAnnotation","ExportAnnotation","annotateOptions","label","hint","note","findAnnotateOption","el","createAnnotateOption","printOption","annotations","redactions","include","burn","burnOption","maintainColor","burnAnnotations","burnRedaction","getEditFilePath","findPrintOption","printOptions","imageOperations","iconMovePage","iconTrash","iconScanner","iconImport","iconExport","createPrintOption","findImageOperation","imageViewerToolbarActions","toolTip","iconZoomIn","iconZoomOut","iconFitToPage","iconFitToWidth","iconResize","iconRotateLeft","iconRotateRight","iconFullBack","iconSingleBackward","iconSingleForward","iconFullForward","iconSave","iconFileCheckIn","iconFileCheckOut","iconFileRelease","findImageViewerToolbarOperation","importAnnotationOptions","customPage","allPages","exportAnnotationOptions","baseMixins","RegistrableInject","error","errorCount","errorMessages","Array","messages","readonly","rules","success","successMessages","validateOnBlur","value","errorBucket","hasColor","hasFocused","hasInput","isFocused","isResetting","lazyValue","valid","computedColor","isDisabled","isDark","appIsDark","hasError","internalErrorMessages","hasSuccess","internalSuccessMessages","externalError","hasMessages","validationTarget","hasState","shouldValidate","genInternalMessages","internalMessages","internalValue","get","set","$emit","_a","form","isInteractive","isReadonly","validations","validationState","watch","handler","newVal","oldVal","deepEqual","validate","deep","$nextTick","setTimeout","beforeMount","created","beforeDestroy","isArray","reset","resetValidation","force","index","rule","consoleError","alertType","info","warning","alertTypes","border","top","bottom","borders","createAlert","message","dismissible","formatAlertError","action","eventNames","resetDetails","deleteDetails","saveDetails","deleteSelectedItems","printSelectedItems","configureDataTable","openSelectedItem","dialogCancel","dialogOK","closed","close","opened","selectedNotification","selectedOption","alertVisibilityChanged","activated","expanded","remove","listItemGroupChange","moreText","removeField","databaseLookup","categoryChanged","updateRecord","agendaTemplateChanged","AgendaItemTemplateChanged","AgendaSectionTemplateChanged","selectedExtension","insertFile","overwriteFile","expandedPreview","agendaPacketOptions","onRecordMoved","onFileDropped","performContextMenuAction","onContextMenuAction","checkInOptionChanged","uploadFileChanged","ocrTextSaved","itemSelected","optionChanged","downloadReport","taskValidation","onEventClicked","onContextAction","calendarContextAction","onEventRightClicked","onFileChanged","onSearchAction","onSearchChipRemoved","openDefaultPdfViewer","onCheckout","onDialogOpened","onDialogClosedAfterAction","onOk","directives","intersect","button","indeterminate","rotate","radius","isVisible","calculatedSize","circumference","Math","PI","classes","normalizedValue","parseFloat","strokeDashArray","round","strokeDashOffset","strokeWidth","viewBoxSize","styles","svgStyles","transform","genCircle","offset","$createElement","fill","cx","cy","r","genSvg","genInfo","getSlot","onObserve","entries","observer","isIntersecting","$listeners","valueComparator","Function","sizeableClasses","absolute","focused","for","ctx","listeners","newData","mergeData","functionalThemeClasses","position","ref","options","VLabel","genChildren","map","genMessage","VMessages","Validatable","inheritAttrs","appendIcon","backgroundColor","hideDetails","hideSpinButtons","id","loading","persistentHint","prependIcon","hasMouseDown","showDetails","isLabelActive","isDirty","computedId","_uid","hasDetails","messagesToDisplay","hasHint","hasLabel","$_modelEvent","validation","validationResult","filter","beforeCreate","$options","model","event","genContent","genPrependSlot","genControl","genAppendSlot","title","genInputSlot","genMessages","genDefaultSlot","genLabel","genIcon","cb","extraData","eventName","kebabCase","hasListener","localeKey","prepend","prependInner","append","appendOuter","clear","$vuetify","lang","t","dark","light","tabindex","e","preventDefault","stopPropagation","mouseup","setBackgroundColor","onClick","mousedown","onMouseDown","onMouseUp","scopedSlots","genSlot","location","slot","VInput","handleGesture","wrapper","touchstartX","touchendX","touchstartY","touchendY","dirRatio","minDistance","offsetX","offsetY","abs","up","down","touchstart","touch","changedTouches","clientX","clientY","start","assign","touchend","end","touchmove","touchmoveX","touchmoveY","move","createHandlers","inserted","binding","vnode","target","parentElement","passive","handlers","_touchHandlers","context","forEach","addEventListener","unbind","removeEventListener","Touch","mapActions","createNamespacedHelpers","annotationOptionMixin","components","BaseDropDownMenuButton","BaseTooltipButton","DownloadAnnotationOption","PrintAnnotationOption","LayoutPopoverMenu","iconDownload","iconPdf","iconDropDownload","iconPrint","iconSend","iconClose","asItIs","fieldDownloadType","asPdf","downloadFile","downloadFileAsPdf","downloadImageFileVersion","downloadFileVersionAsPdf"],"mappings":"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","file":"js/chunk-6183c412.d2da0a3f.js","sourcesContent":["import './VIcon.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Sizeable from '../../mixins/sizeable'\nimport Themeable from '../../mixins/themeable'\n\n// Util\nimport { convertToUnit, keys, remapInternalIcon } from '../../util/helpers'\n\n// Types\nimport Vue, { CreateElement, VNode, VNodeChildren, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport { VuetifyIcon, VuetifyIconComponent } from 'vuetify/types/services/icons'\n\nenum SIZE_MAP {\n xSmall = '12px',\n small = '16px',\n default = '24px',\n medium = '28px',\n large = '36px',\n xLarge = '40px'\n}\n\nfunction isFontAwesome5 (iconType: string): boolean {\n return ['fas', 'far', 'fal', 'fab', 'fad', 'fak'].some(val => iconType.includes(val))\n}\n\nfunction isSvgPath (icon: string): boolean {\n return (/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\\dz]$/i.test(icon) && icon.length > 4)\n}\n\nconst VIcon = mixins(\n BindsAttrs,\n Colorable,\n Sizeable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-icon',\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n left: Boolean,\n right: Boolean,\n size: [Number, String],\n tag: {\n type: String,\n required: false,\n default: 'i',\n },\n },\n\n computed: {\n medium () {\n return false\n },\n hasClickListener (): boolean {\n return Boolean(\n this.listeners$.click || this.listeners$['!click']\n )\n },\n },\n\n methods: {\n getIcon (): VuetifyIcon {\n let iconName = ''\n if (this.$slots.default) iconName = this.$slots.default[0].text!.trim()\n\n return remapInternalIcon(this, iconName)\n },\n getSize (): string | undefined {\n const sizes = {\n xSmall: this.xSmall,\n small: this.small,\n medium: this.medium,\n large: this.large,\n xLarge: this.xLarge,\n }\n\n const explicitSize = keys(sizes).find(key => sizes[key])\n\n return (\n (explicitSize && SIZE_MAP[explicitSize]) || convertToUnit(this.size)\n )\n },\n // Component data for both font icon and SVG wrapper span\n getDefaultData (): VNodeData {\n return {\n staticClass: 'v-icon notranslate',\n class: {\n 'v-icon--disabled': this.disabled,\n 'v-icon--left': this.left,\n 'v-icon--link': this.hasClickListener,\n 'v-icon--right': this.right,\n 'v-icon--dense': this.dense,\n },\n attrs: {\n 'aria-hidden': !this.hasClickListener,\n disabled: this.hasClickListener && this.disabled,\n type: this.hasClickListener ? 'button' : undefined,\n ...this.attrs$,\n },\n on: this.listeners$,\n }\n },\n getSvgWrapperData () {\n const fontSize = this.getSize()\n const wrapperData = {\n ...this.getDefaultData(),\n style: fontSize ? {\n fontSize,\n height: fontSize,\n width: fontSize,\n } : undefined,\n }\n this.applyColors(wrapperData)\n\n return wrapperData\n },\n applyColors (data: VNodeData): void {\n data.class = { ...data.class, ...this.themeClasses }\n this.setTextColor(this.color, data)\n },\n renderFontIcon (icon: string, h: CreateElement): VNode {\n const newChildren: VNodeChildren = []\n const data = this.getDefaultData()\n\n let iconType = 'material-icons'\n // Material Icon delimiter is _\n // https://material.io/icons/\n const delimiterIndex = icon.indexOf('-')\n const isMaterialIcon = delimiterIndex <= -1\n\n if (isMaterialIcon) {\n // Material icon uses ligatures.\n newChildren.push(icon)\n } else {\n iconType = icon.slice(0, delimiterIndex)\n if (isFontAwesome5(iconType)) iconType = ''\n }\n\n data.class[iconType] = true\n data.class[icon] = !isMaterialIcon\n\n const fontSize = this.getSize()\n if (fontSize) data.style = { fontSize }\n\n this.applyColors(data)\n\n return h(this.hasClickListener ? 'button' : this.tag, data, newChildren)\n },\n renderSvgIcon (icon: string, h: CreateElement): VNode {\n const svgData: VNodeData = {\n class: 'v-icon__svg',\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 24 24',\n role: 'img',\n 'aria-hidden': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n svgData.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h('svg', svgData, [\n h('path', {\n attrs: {\n d: icon,\n },\n }),\n ]),\n ])\n },\n renderSvgIconComponent (\n icon: VuetifyIconComponent,\n h: CreateElement\n ): VNode {\n const data: VNodeData = {\n class: {\n 'v-icon__component': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n data.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n this.applyColors(data)\n\n const component = icon.component\n data.props = icon.props\n data.nativeOn = data.on\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h(component, data),\n ])\n },\n },\n\n render (h: CreateElement): VNode {\n const icon = this.getIcon()\n\n if (typeof icon === 'string') {\n if (isSvgPath(icon)) {\n return this.renderSvgIcon(icon, h)\n }\n return this.renderFontIcon(icon, h)\n }\n\n return this.renderSvgIconComponent(icon, h)\n },\n})\n\nexport default Vue.extend({\n name: 'v-icon',\n\n $_wrapperFor: VIcon,\n\n functional: true,\n\n render (h, { data, children }): VNode {\n let iconName = ''\n\n // Support usage of v-text and v-html\n if (data.domProps) {\n iconName = data.domProps.textContent ||\n data.domProps.innerHTML ||\n iconName\n\n // Remove nodes so it doesn't\n // overwrite our changes\n delete data.domProps.textContent\n delete data.domProps.innerHTML\n }\n\n return h(VIcon, data, iconName ? [iconName] : children)\n },\n})\n","import Vue from 'vue'\nimport { VueConstructor } from 'vue/types/vue'\nimport { consoleWarn } from '../../util/console'\n\nfunction generateWarning (child: string, parent: string) {\n return () => consoleWarn(`The ${child} component must be used inside a ${parent}`)\n}\n\nexport type Registrable = VueConstructor : {\n register (...props: any[]): void\n unregister (self: any): void\n }\n}>\n\nexport function inject<\n T extends string, C extends VueConstructor | null = null\n> (namespace: T, child?: string, parent?: string): Registrable {\n const defaultImpl = child && parent ? {\n register: generateWarning(child, parent),\n unregister: generateWarning(child, parent),\n } : null\n\n return Vue.extend({\n name: 'registrable-inject',\n\n inject: {\n [namespace]: {\n default: defaultImpl,\n },\n },\n })\n}\n\nexport function provide (namespace: string, self = false) {\n return Vue.extend({\n name: 'registrable-provide',\n\n provide (): object {\n return {\n [namespace]: self ? this : {\n register: (this as any).register,\n unregister: (this as any).unregister,\n },\n }\n },\n })\n}\n","import {\r\n iconTrash,\r\n iconMovePage,\r\n iconZoomIn,\r\n iconZoomOut,\r\n iconFitToPage,\r\n iconFitToWidth,\r\n iconRotateLeft,\r\n iconRotateRight,\r\n iconResize,\r\n iconFullBack,\r\n iconSingleBackward,\r\n iconFullForward,\r\n iconSingleForward,\r\n iconSave,\r\n iconFileCheckIn,\r\n iconFileCheckOut,\r\n iconFileRelease,\r\n iconScanner,\r\n iconImport,\r\n iconExport\r\n} from \"@/design/icon/iconConst\";\r\n\r\n/**\r\n * annotate Option (Current implementation)\r\n * @type {Readonly<{annotationsBurn: string, annotationsBurnMaintainColor: string, redactionsBurn: string, annotationsInclude: string, redactionsInclude: string}>}\r\n */\r\nconst annotateOption = Object.freeze({\r\n annotationsInclude: \"includeAnnotations\",\r\n annotationsBurn: \"burnIntoImage\",\r\n annotationsBurnMaintainColor: \"maintainColor\",\r\n redactionsInclude: \"includeRedaction\",\r\n redactionsBurn: \"burnRedaction\"\r\n});\r\n\r\n/**\r\n * Image Operation\r\n * @type {Readonly<{Move: string, Remove: string}>}\r\n */\r\nconst imageOperation = Object.freeze({\r\n ZoomIn: \"Zoom In\",\r\n ZoomOut: \"Zoom Out\",\r\n FitToPage: \"Fit To Page\",\r\n BestFit: \"Best Fit\",\r\n FitToWidth: \"Fit To Width\",\r\n RotateLeft: \"Rotate Page Left\",\r\n RotateRight: \"Rotate Page Right\",\r\n JumpFirstPage: \"Jump to First Page\",\r\n JumpLastPage: \"Jump to Last Page\",\r\n PreviousPage: \"Previous Page\",\r\n NextPage: \"Next Page\",\r\n SelectPage: \"Select Page\",\r\n Move: \"Move\",\r\n Remove: \"Remove\",\r\n SavePage: \"Save Document\",\r\n CheckIn: \"Check In\",\r\n CheckOut: \"Check Out\",\r\n Scan: \"Scan\",\r\n Import: \"Import\",\r\n Release: \"Release\",\r\n ImportAnnotation: \"Import Annotation\",\r\n ExportAnnotation: \"Export Annotation\"\r\n});\r\n\r\n/**\r\n * annotate Options\r\n * @type {{note: string, hint: string, name: string, label: string}[]}\r\n */\r\nconst annotateOptions = Object.freeze([\r\n {\r\n name: annotateOption.annotationsInclude,\r\n label: \"Include Annotations\",\r\n hint:\r\n \"Include Annotations when exporting an image file containing annotations\",\r\n note:\r\n \"Annotations will be included when exporting an image file containing annotations\"\r\n },\r\n {\r\n name: annotateOption.annotationsBurn,\r\n label: \"Burn Annotations into Image\",\r\n hint: \"Burn Annotations into current Image\",\r\n note:\r\n \"Annotations will burned into an image when exporting an image file containing annotations\"\r\n },\r\n {\r\n name: annotateOption.annotationsBurnMaintainColor,\r\n label: \"Maintain Annotation Color\",\r\n hint: \"Maintain Annotation Color when Burn Annotations into current Image\",\r\n note: \"Drastically increases image file size\"\r\n },\r\n {\r\n name: annotateOption.redactionsInclude,\r\n label: \"Include Redactions\",\r\n hint:\r\n \"Include Redactions when exporting an image file containing annotations\",\r\n note:\r\n \"Redactions will be included when exporting an image file containing annotations\"\r\n },\r\n {\r\n name: annotateOption.redactionsBurn,\r\n label: \"Burn Redactions\",\r\n hint: \"Burn Redactions into current Image\",\r\n note:\r\n \"Redactions will burned into an image when exporting an image file containing annotations\"\r\n }\r\n]);\r\n\r\n/**\r\n * find Annotate Option\r\n * @param {string} name Annotate Option\r\n * @return {{note: string, hint: string, name: string, label: string}}\r\n */\r\nconst findAnnotateOption = name => {\r\n return annotateOptions.find(el => el.name === name);\r\n};\r\n\r\n/**\r\n * create Annotate Option (Current implementation)\r\n * @param {boolean} annotationsInclude include annotations\r\n * @param {boolean} annotationsBurn burn include annotations\r\n * @param {boolean} annotationsBurnMaintainColor Maintain Color when burn annotations\r\n * @param {boolean} redactionsInclude include redactions\r\n * @param {boolean} redactionsBurn burn included redactions\r\n * @return {{includeAnnotations: boolean, burnIntoImage: boolean, maintainColor: boolean, includeRedaction: boolean, burnRedaction: boolean}}\r\n */\r\nconst createAnnotateOption = (\r\n annotationsInclude = true,\r\n annotationsBurn = true,\r\n annotationsBurnMaintainColor = true,\r\n redactionsInclude = true,\r\n redactionsBurn = true\r\n) => {\r\n return {\r\n [annotateOption.annotationsInclude]: annotationsInclude,\r\n [annotateOption.annotationsBurn]: annotationsBurn,\r\n [annotateOption.annotationsBurnMaintainColor]: annotationsBurnMaintainColor,\r\n [annotateOption.redactionsInclude]: redactionsInclude,\r\n [annotateOption.redactionsBurn]: redactionsBurn\r\n };\r\n};\r\n\r\n/**\r\n * export Annotate Options (new proposed implementation)\r\n * @type {Readonly<{redactions: string, annotations: string}>}\r\n */\r\nconst exportAnnotateOptions = Object.freeze({\r\n annotations: \"annotations\",\r\n redactions: \"redactions\"\r\n});\r\n\r\n/**\r\n * export Annotations Option\r\n * @type {Readonly<{include: string, burn: string, burnOption: string}>}\r\n */\r\nconst exportAnnotationsOption = Object.freeze({\r\n include: \"include\",\r\n burn: \"burn\",\r\n burnOption: \"burnOption\"\r\n});\r\n\r\n/**\r\n * annotations Burn Option\r\n * @type {Readonly<{maintainColor: string}>}\r\n */\r\nconst annotationsBurnOption = Object.freeze({\r\n maintainColor: \"maintainColor\"\r\n});\r\n\r\n/**\r\n * export Redactions Option\r\n * @type {Readonly<{include: string, burn: string}>}\r\n */\r\nconst exportRedactionsOption = Object.freeze({\r\n include: \"include\",\r\n burn: \"burn\"\r\n});\r\n\r\n/**\r\n * create Export Annotate Options (new proposed implementation)\r\n * @param {boolean} annotationsInclude\r\n * @param {boolean} annotationsBurn\r\n * @param {boolean} annotationsBurnMaintainColor\r\n * @param {boolean} redactionsInclude\r\n * @param {boolean} redactionsBurn\r\n * @return {{annotations: {include: boolean, burn: boolean, burnOption: {maintainColor:boolean}}, redactions: {include: boolean, burn: boolean}}}\r\n */\r\nconst createExportAnnotateOptions = (\r\n annotationsInclude = true,\r\n annotationsBurn = true,\r\n annotationsBurnMaintainColor = true,\r\n redactionsInclude = true,\r\n redactionsBurn = true\r\n) => {\r\n return {\r\n [exportAnnotateOptions.annotations]: {\r\n [exportAnnotationsOption.include]: annotationsInclude,\r\n [exportAnnotationsOption.burn]: annotationsBurn,\r\n [exportAnnotationsOption.burnOption]: {\r\n [annotationsBurnOption.maintainColor]: annotationsBurnMaintainColor\r\n }\r\n },\r\n [exportAnnotateOptions.redactions]: {\r\n [exportRedactionsOption.include]: redactionsInclude,\r\n [exportRedactionsOption.burn]: redactionsBurn\r\n }\r\n };\r\n};\r\n\r\n/**\r\n * print annotate-able image Option enum names\r\n * @type {Readonly<{burnAnnotations: string, burnRedaction: string, getEditFilePath: String}>}\r\n */\r\nconst printOption = Object.freeze({\r\n burnAnnotations: \"burnAnnotations\",\r\n burnRedaction: \"burnRedaction\",\r\n getEditFilePath: \"getEditFilePath\" // TODO: getEditFilePath is not a self-explanatory name, we should consider renaming it\r\n});\r\n\r\n/**\r\n * find Print annotate-able Option\r\n * @param {string} name Print Option\r\n * @return {{note: string, hint: string, name: string, label: string}}\r\n */\r\nconst findPrintOption = name => {\r\n return printOptions.find(el => el.name === name);\r\n};\r\n\r\n/**\r\n * print annotate-able image Options\r\n * @type {{note: string, hint: string, name: string, label: string}[]}\r\n */\r\nconst printOptions = Object.freeze([\r\n {\r\n name: printOption.burnAnnotations,\r\n label: \"Include Annotations\",\r\n hint: \"Include (burned) all Annotations when specified image being printed\",\r\n note:\r\n \"All Annotations will be included (burned) when specified image being printed\"\r\n },\r\n {\r\n name: printOption.burnRedaction,\r\n label: \"Include Redaction\",\r\n hint: \"Include (burned) all Redactions when specified image being printed\",\r\n note:\r\n \"All Annotations will be included (burned) when specified image being printed\"\r\n },\r\n {\r\n name: printOption.getEditFilePath,\r\n label: \"get Edit File Path\",\r\n hint: \"Sameed TODO: get Edit File Path\",\r\n note: \"Sameed TODO: get Edit File Path\"\r\n }\r\n]);\r\n\r\n/** Image Operations\r\n * NOTE : Expand interface on Demand\r\n * @type {{name: string, icon: string, label: string}[]}\r\n */\r\nconst imageOperations = Object.freeze([\r\n {\r\n name: imageOperation.Move,\r\n label: imageOperation.Move,\r\n icon: iconMovePage\r\n },\r\n {\r\n name: imageOperation.Remove,\r\n label: imageOperation.Remove,\r\n icon: iconTrash\r\n },\r\n {\r\n name: imageOperation.Scan,\r\n label: imageOperation.Scan,\r\n icon: iconScanner\r\n },\r\n {\r\n name: imageOperation.Import,\r\n label: \"Import File\",\r\n icon: iconImport\r\n },\r\n {\r\n name: imageOperation.ImportAnnotation,\r\n label: \"Import Annotations\",\r\n icon: iconImport\r\n },\r\n {\r\n name: imageOperation.ExportAnnotation,\r\n label: \"Export Annotations\",\r\n icon: iconExport\r\n }\r\n]);\r\n\r\n/**\r\n * create annotate-able Print image Option\r\n * @param {boolean} burnAnnotations burn Annotations\r\n * @param {boolean} burnRedaction burn Redaction\r\n * @param {boolean} getEditFilePath\r\n * @return {{burnAnnotations: boolean, burnRedaction: boolean, getEditFilePath: boolean}}\r\n */\r\nconst createPrintOption = (\r\n burnAnnotations = true,\r\n burnRedaction = true,\r\n getEditFilePath = false\r\n) => {\r\n return {\r\n [printOption.burnAnnotations]: burnAnnotations,\r\n [printOption.burnRedaction]: burnRedaction,\r\n [printOption.getEditFilePath]: getEditFilePath\r\n };\r\n};\r\n\r\n/** find Image Operation\r\n * @param name image operation name\r\n * @return {{name: string, icon: string, label: string}}\r\n */\r\nconst findImageOperation = name => {\r\n return imageOperations?.find(el => el?.name === name);\r\n};\r\n\r\n/** Image Operations\r\n * NOTE : Expand interface on Demand\r\n * @type {{name: string,label: string, toolTip:string, icon: string}[]}\r\n */\r\nconst imageViewerToolbarActions = Object.freeze([\r\n {\r\n name: imageOperation.ZoomIn,\r\n label: imageOperation.ZoomIn,\r\n toolTip: imageOperation.ZoomIn,\r\n icon: iconZoomIn\r\n },\r\n {\r\n name: imageOperation.ZoomOut,\r\n label: imageOperation.ZoomOut,\r\n toolTip: imageOperation.ZoomOut,\r\n icon: iconZoomOut\r\n },\r\n {\r\n name: imageOperation.FitToPage,\r\n label: imageOperation.FitToPage,\r\n toolTip: imageOperation.FitToPage,\r\n icon: iconFitToPage\r\n },\r\n {\r\n name: imageOperation.FitToWidth,\r\n label: imageOperation.FitToWidth,\r\n toolTip: imageOperation.FitToWidth,\r\n icon: iconFitToWidth\r\n },\r\n {\r\n name: imageOperation.BestFit,\r\n label: imageOperation.BestFit,\r\n toolTip: imageOperation.BestFit,\r\n icon: iconResize\r\n },\r\n {\r\n name: imageOperation.RotateLeft,\r\n label: imageOperation.RotateLeft,\r\n toolTip: imageOperation.RotateLeft,\r\n icon: iconRotateLeft\r\n },\r\n {\r\n name: imageOperation.RotateRight,\r\n label: imageOperation.RotateRight,\r\n toolTip: imageOperation.RotateRight,\r\n icon: iconRotateRight\r\n },\r\n {\r\n name: imageOperation.JumpFirstPage,\r\n label: imageOperation.JumpFirstPage,\r\n toolTip: imageOperation.JumpFirstPage,\r\n icon: iconFullBack\r\n },\r\n {\r\n name: imageOperation.PreviousPage,\r\n label: imageOperation.PreviousPage,\r\n toolTip: imageOperation.PreviousPage,\r\n icon: iconSingleBackward\r\n },\r\n {\r\n name: imageOperation.SelectPage,\r\n label: imageOperation.SelectPage,\r\n toolTip: imageOperation.SelectPage\r\n },\r\n {\r\n name: imageOperation.NextPage,\r\n label: imageOperation.NextPage,\r\n toolTip: imageOperation.NextPage,\r\n icon: iconSingleForward\r\n },\r\n {\r\n name: imageOperation.JumpLastPage,\r\n label: imageOperation.JumpLastPage,\r\n toolTip: imageOperation.JumpLastPage,\r\n icon: iconFullForward\r\n },\r\n {\r\n name: imageOperation.Move,\r\n label: imageOperation.Move,\r\n toolTip: imageOperation.Move,\r\n icon: iconMovePage\r\n },\r\n {\r\n name: imageOperation.Remove,\r\n label: imageOperation.Remove,\r\n toolTip: imageOperation.Remove,\r\n icon: iconTrash\r\n },\r\n {\r\n name: imageOperation.SavePage,\r\n label: imageOperation.SavePage,\r\n toolTip: imageOperation.SavePage,\r\n icon: iconSave\r\n },\r\n {\r\n name: imageOperation.CheckIn,\r\n label: imageOperation.CheckIn,\r\n toolTip: imageOperation.CheckIn,\r\n icon: iconFileCheckIn\r\n },\r\n {\r\n name: imageOperation.CheckOut,\r\n label: imageOperation.CheckOut,\r\n toolTip: imageOperation.CheckOut,\r\n icon: iconFileCheckOut\r\n },\r\n {\r\n name: imageOperation.Release,\r\n label: imageOperation.Release,\r\n toolTip: imageOperation.Release,\r\n icon: iconFileRelease\r\n }\r\n]);\r\n\r\n/** find Image Viewer Toolbar Operation\r\n * @param name image operation name\r\n * @return {{name: string,label: string, toolTip:string, icon: string}}\r\n */\r\nconst findImageViewerToolbarOperation = name => {\r\n return imageViewerToolbarActions?.find(el => el?.name === name);\r\n};\r\n\r\n/**\r\n * Import Annotation Options\r\n * @type {Readonly<{customPage: number, allPages: number}>}\r\n */\r\nconst importAnnotationOptions = Object.freeze({\r\n customPage: 1,\r\n allPages: 2\r\n});\r\n\r\n/**\r\n * Export Annotation Options\r\n * @type {Readonly<{customPage: number, allPages: number}>}\r\n */\r\nconst exportAnnotationOptions = Object.freeze({\r\n customPage: 1,\r\n allPages: 2\r\n});\r\nexport {\r\n annotateOption,\r\n printOption,\r\n printOptions,\r\n imageOperation,\r\n createAnnotateOption,\r\n createPrintOption,\r\n createExportAnnotateOptions,\r\n findPrintOption,\r\n findAnnotateOption,\r\n findImageOperation,\r\n findImageViewerToolbarOperation,\r\n imageViewerToolbarActions,\r\n importAnnotationOptions,\r\n exportAnnotationOptions\r\n};\r\n","// Mixins\nimport Colorable from '../colorable'\nimport Themeable from '../themeable'\nimport { inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { deepEqual } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\nimport { InputMessage, InputValidationRules } from 'vuetify/types'\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject<'form', any>('form'),\n Themeable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'validatable',\n\n props: {\n disabled: {\n type: Boolean,\n default: null,\n },\n error: Boolean,\n errorCount: {\n type: [Number, String],\n default: 1,\n },\n errorMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n messages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n readonly: {\n type: Boolean,\n default: null,\n },\n rules: {\n type: Array,\n default: () => [],\n } as PropValidator,\n success: Boolean,\n successMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n validateOnBlur: Boolean,\n value: { required: false },\n },\n\n data () {\n return {\n errorBucket: [] as string[],\n hasColor: false,\n hasFocused: false,\n hasInput: false,\n isFocused: false,\n isResetting: false,\n lazyValue: this.value,\n valid: false,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.color) return this.color\n // It's assumed that if the input is on a\n // dark background, the user will want to\n // have a white color. If the entire app\n // is setup to be dark, then they will\n // like want to use their primary color\n if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n hasError (): boolean {\n return (\n this.internalErrorMessages.length > 0 ||\n this.errorBucket.length > 0 ||\n this.error\n )\n },\n // TODO: Add logic that allows the user to enable based\n // upon a good validation\n hasSuccess (): boolean {\n return (\n this.internalSuccessMessages.length > 0 ||\n this.success\n )\n },\n externalError (): boolean {\n return this.internalErrorMessages.length > 0 || this.error\n },\n hasMessages (): boolean {\n return this.validationTarget.length > 0\n },\n hasState (): boolean {\n if (this.isDisabled) return false\n\n return (\n this.hasSuccess ||\n (this.shouldValidate && this.hasError)\n )\n },\n internalErrorMessages (): InputValidationRules {\n return this.genInternalMessages(this.errorMessages)\n },\n internalMessages (): InputValidationRules {\n return this.genInternalMessages(this.messages)\n },\n internalSuccessMessages (): InputValidationRules {\n return this.genInternalMessages(this.successMessages)\n },\n internalValue: {\n get (): unknown {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n\n this.$emit('input', val)\n },\n },\n isDisabled (): boolean {\n return this.disabled ?? (\n !!this.form &&\n this.form.disabled\n )\n },\n isInteractive (): boolean {\n return !this.isDisabled && !this.isReadonly\n },\n isReadonly (): boolean {\n return this.readonly ?? (\n !!this.form &&\n this.form.readonly\n )\n },\n shouldValidate (): boolean {\n if (this.externalError) return true\n if (this.isResetting) return false\n\n return this.validateOnBlur\n ? this.hasFocused && !this.isFocused\n : (this.hasInput || this.hasFocused)\n },\n validations (): InputValidationRules {\n return this.validationTarget.slice(0, Number(this.errorCount))\n },\n validationState (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor) return this.computedColor\n return undefined\n },\n validationTarget (): InputValidationRules {\n if (this.internalErrorMessages.length > 0) {\n return this.internalErrorMessages\n } else if (this.successMessages && this.successMessages.length > 0) {\n return this.internalSuccessMessages\n } else if (this.messages && this.messages.length > 0) {\n return this.internalMessages\n } else if (this.shouldValidate) {\n return this.errorBucket\n } else return []\n },\n },\n\n watch: {\n rules: {\n handler (newVal, oldVal) {\n if (deepEqual(newVal, oldVal)) return\n this.validate()\n },\n deep: true,\n },\n internalValue () {\n // If it's the first time we're setting input,\n // mark it with hasInput\n this.hasInput = true\n this.validateOnBlur || this.$nextTick(this.validate)\n },\n isFocused (val) {\n // Should not check validation\n // if disabled\n if (\n !val &&\n !this.isDisabled\n ) {\n this.hasFocused = true\n this.validateOnBlur && this.$nextTick(this.validate)\n }\n },\n isResetting () {\n setTimeout(() => {\n this.hasInput = false\n this.hasFocused = false\n this.isResetting = false\n this.validate()\n }, 0)\n },\n hasError (val) {\n if (this.shouldValidate) {\n this.$emit('update:error', val)\n }\n },\n value (val) {\n this.lazyValue = val\n },\n },\n\n beforeMount () {\n this.validate()\n },\n\n created () {\n this.form && this.form.register(this)\n },\n\n beforeDestroy () {\n this.form && this.form.unregister(this)\n },\n\n methods: {\n genInternalMessages (messages: InputMessage | null): InputValidationRules {\n if (!messages) return []\n else if (Array.isArray(messages)) return messages\n else return [messages]\n },\n /** @public */\n reset () {\n this.isResetting = true\n this.internalValue = Array.isArray(this.internalValue)\n ? []\n : null\n },\n /** @public */\n resetValidation () {\n this.isResetting = true\n },\n /** @public */\n validate (force = false, value?: any): boolean {\n const errorBucket = []\n value = value || this.internalValue\n\n if (force) this.hasInput = this.hasFocused = true\n\n for (let index = 0; index < this.rules.length; index++) {\n const rule = this.rules[index]\n const valid = typeof rule === 'function' ? rule(value) : rule\n\n if (valid === false || typeof valid === 'string') {\n errorBucket.push(valid || '')\n } else if (typeof valid !== 'boolean') {\n consoleError(`Rules should return a string or boolean, received '${typeof valid}' instead`, this)\n }\n }\n\n this.errorBucket = errorBucket\n this.valid = errorBucket.length === 0\n\n return this.valid\n },\n },\n})\n","/**\r\n * Alert Type (map to vuetify Alert types)\r\n * @type {{success: string, warning: string, error: string, info: string}}\r\n */\r\nconst alertType = Object.freeze({\r\n success: \"success\",\r\n info: \"info\",\r\n warning: \"warning\",\r\n error: \"error\"\r\n});\r\n\r\n/**\r\n * Get the list of available Alert Types\r\n * @type {(string)[]}\r\n */\r\nconst alertTypes = Object.freeze([\r\n alertType.success,\r\n alertType.info,\r\n alertType.warning,\r\n alertType.error\r\n]);\r\n\r\n/**\r\n * Alert border\r\n * @type {Readonly<{top: string, left: string, bottom: string, right: string}>}\r\n */\r\nconst border = Object.freeze({\r\n top: \"top \",\r\n right: \"right \",\r\n bottom: \"bottom \",\r\n left: \"left\"\r\n});\r\n\r\n/**\r\n * Alert borders\r\n * @type {(string)[]}\r\n */\r\nconst borders = Object.freeze([\r\n border.top,\r\n border.right,\r\n border.bottom,\r\n border.left\r\n]);\r\n\r\n/**\r\n * create Alert\r\n * @param {string} type Alert type\r\n * @param {string} message Alert message\r\n * @param {boolean} dismissible dismissible Alert\r\n * @return {{type : string, message : string, dismissible : boolean}}\r\n */\r\nconst createAlert = (type, message, dismissible = false) => {\r\n return {\r\n type: type,\r\n message: message,\r\n dismissible: dismissible\r\n };\r\n};\r\n\r\n/**\r\n * format Alert Error\r\n * @param action full operation action\r\n * @param error error message\r\n * @return {`Couldn't ${string}. ${string}`}\r\n */\r\nconst formatAlertError = (action, error) => {\r\n return `Couldn't ${action}. ${error}`;\r\n};\r\n\r\nexport {\r\n alertType,\r\n alertTypes,\r\n border,\r\n borders,\r\n createAlert,\r\n formatAlertError\r\n};\r\n","/**\r\n * Event Names\r\n * @type {Readonly<{deleteSelectedItems: string, selectedNotification: string, saveDetails: string, openSelectedItem: string, dialogCancel: string, dialogOK: string, selectedOption: string, click: string, alertVisibilityChanged: string, remove: string, listItemGroupChange: string, deleteDetails: string, printSelectedItems: string, closed: string, configureDataTable: string, close: string, resetDetails: string, activated: string}>}\r\n */\r\nconst eventNames = Object.freeze({\r\n resetDetails: \"resetDetails\",\r\n deleteDetails: \"deleteDetails\",\r\n saveDetails: \"saveDetails\",\r\n deleteSelectedItems: \"deleteSelectedItems\",\r\n printSelectedItems: \"printSelectedItems\",\r\n configureDataTable: \"configureDataTable\",\r\n openSelectedItem: \"open-selected-item\",\r\n dialogCancel: \"cancel\",\r\n dialogOK: \"ok\",\r\n closed: \"closed\",\r\n close: \"close\",\r\n opened: \"opened\",\r\n selectedNotification: \"selectedNotification\",\r\n selectedOption: \"selectedOption\",\r\n alertVisibilityChanged: \"alertVisibilityChanged\",\r\n activated: \"activated\",\r\n expanded: \"expanded\",\r\n remove: \"remove\",\r\n click: \"click\",\r\n listItemGroupChange: \"listItemGroupChange\",\r\n moreText: \"moreText\",\r\n removeField: \"removeField\",\r\n databaseLookup: \"databaseLookup\",\r\n categoryChanged: \"categoryChanged\",\r\n updateRecord: \"update-record\",\r\n agendaTemplateChanged: \"agendaTemplateChanged\",\r\n AgendaItemTemplateChanged: \"AgendaItemTemplateChanged\",\r\n AgendaSectionTemplateChanged: \"AgendaSectionTemplateChanged\",\r\n selectedExtension: \"selected-extension\",\r\n insertFile: \"insert-file\",\r\n customPage: \"custom-page\",\r\n overwriteFile: \"overwrite-option\",\r\n expandedPreview: \"expandedPreview\",\r\n agendaPacketOptions: \"agendaPacketOptions\",\r\n onRecordMoved: \"onRecordMoved\",\r\n onFileDropped: \"onFileDropped\",\r\n performContextMenuAction: \"performContextMenuAction\",\r\n onContextMenuAction: \"onContextMenuAction\",\r\n checkInOptionChanged: \"checkInOptionChanged\",\r\n uploadFileChanged: \"uploadFileChanged\",\r\n ocrTextSaved: \"ocrTextSaved\",\r\n itemSelected: \"itemSelected\",\r\n optionChanged: \"optionChanged\",\r\n downloadReport: \"download-report\",\r\n taskValidation: \"task-validation\",\r\n onEventClicked: \"onEventClicked\",\r\n onContextAction: \"onContextAction\",\r\n calendarContextAction: \"calendarContextAction\",\r\n onEventRightClicked: \"onEventRightClicked\",\r\n onFileChanged: \"onFileChanged\",\r\n onSearchAction: \"onSearchAction\",\r\n onSearchChipRemoved: \"onSearchChipRemoved\",\r\n openDefaultPdfViewer: \"openDefaultPdfViewer\",\r\n onCheckout: \"onCheckout\",\r\n onDialogOpened: \"onDialogOpened\",\r\n onDialogClosedAfterAction: \"onDialogClosedAfterAction\",\r\n onOk: \"onOk\"\r\n});\r\n\r\nexport { eventNames };\r\n","// Styles\nimport './VProgressCircular.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utils\nimport { convertToUnit, getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\n\n/* @vue/component */\nexport default Colorable.extend({\n name: 'v-progress-circular',\n\n directives: { intersect },\n\n props: {\n button: Boolean,\n indeterminate: Boolean,\n rotate: {\n type: [Number, String],\n default: 0,\n },\n size: {\n type: [Number, String],\n default: 32,\n },\n width: {\n type: [Number, String],\n default: 4,\n },\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n radius: 20,\n isVisible: true,\n }),\n\n computed: {\n calculatedSize (): number {\n return Number(this.size) + (this.button ? 8 : 0)\n },\n\n circumference (): number {\n return 2 * Math.PI * this.radius\n },\n\n classes (): object {\n return {\n 'v-progress-circular--visible': this.isVisible,\n 'v-progress-circular--indeterminate': this.indeterminate,\n 'v-progress-circular--button': this.button,\n }\n },\n\n normalizedValue (): number {\n if (this.value < 0) {\n return 0\n }\n\n if (this.value > 100) {\n return 100\n }\n\n return parseFloat(this.value)\n },\n\n strokeDashArray (): number {\n return Math.round(this.circumference * 1000) / 1000\n },\n\n strokeDashOffset (): string {\n return ((100 - this.normalizedValue) / 100) * this.circumference + 'px'\n },\n\n strokeWidth (): number {\n return Number(this.width) / +this.size * this.viewBoxSize * 2\n },\n\n styles (): object {\n return {\n height: convertToUnit(this.calculatedSize),\n width: convertToUnit(this.calculatedSize),\n }\n },\n\n svgStyles (): object {\n return {\n transform: `rotate(${Number(this.rotate)}deg)`,\n }\n },\n\n viewBoxSize (): number {\n return this.radius / (1 - Number(this.width) / +this.size)\n },\n },\n\n methods: {\n genCircle (name: string, offset: string | number): VNode {\n return this.$createElement('circle', {\n class: `v-progress-circular__${name}`,\n attrs: {\n fill: 'transparent',\n cx: 2 * this.viewBoxSize,\n cy: 2 * this.viewBoxSize,\n r: this.radius,\n 'stroke-width': this.strokeWidth,\n 'stroke-dasharray': this.strokeDashArray,\n 'stroke-dashoffset': offset,\n },\n })\n },\n genSvg (): VNode {\n const children = [\n this.indeterminate || this.genCircle('underlay', 0),\n this.genCircle('overlay', this.strokeDashOffset),\n ] as VNodeChildren\n\n return this.$createElement('svg', {\n style: this.svgStyles,\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: `${this.viewBoxSize} ${this.viewBoxSize} ${2 * this.viewBoxSize} ${2 * this.viewBoxSize}`,\n },\n }, children)\n },\n genInfo (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-circular__info',\n }, getSlot(this))\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-circular',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: this.styles,\n on: this.$listeners,\n }), [\n this.genSvg(),\n this.genInfo(),\n ])\n },\n})\n","import Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { deepEqual } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'comparable',\n props: {\n valueComparator: {\n type: Function,\n default: deepEqual,\n } as PropValidator,\n },\n})\n","import VIcon from './VIcon'\n\nexport { VIcon }\nexport default VIcon\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'sizeable',\n\n props: {\n large: Boolean,\n small: Boolean,\n xLarge: Boolean,\n xSmall: Boolean,\n },\n\n computed: {\n medium (): boolean {\n return Boolean(\n !this.xSmall &&\n !this.small &&\n !this.large &&\n !this.xLarge\n )\n },\n sizeableClasses (): object {\n return {\n 'v-size--x-small': this.xSmall,\n 'v-size--small': this.small,\n 'v-size--default': this.medium,\n 'v-size--large': this.large,\n 'v-size--x-large': this.xLarge,\n }\n },\n },\n})\n","// Styles\nimport './VLabel.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable, { functionalThemeClasses } from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Helpers\nimport { convertToUnit } from '../../util/helpers'\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default mixins(Themeable).extend({\n name: 'v-label',\n\n functional: true,\n\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: 'primary',\n },\n disabled: Boolean,\n focused: Boolean,\n for: String,\n left: {\n type: [Number, String],\n default: 0,\n },\n right: {\n type: [Number, String],\n default: 'auto',\n },\n value: Boolean,\n },\n\n render (h, ctx): VNode {\n const { children, listeners, props, data } = ctx\n const newData = mergeData({\n staticClass: 'v-label',\n class: {\n 'v-label--active': props.value,\n 'v-label--is-disabled': props.disabled,\n ...functionalThemeClasses(ctx),\n },\n attrs: {\n for: props.for,\n 'aria-hidden': !props.for,\n },\n on: listeners,\n style: {\n left: convertToUnit(props.left),\n right: convertToUnit(props.right),\n position: props.absolute ? 'absolute' : 'relative',\n },\n ref: 'label',\n }, data)\n\n return h('label', Colorable.options.methods.setTextColor(props.focused && props.color, newData), children)\n },\n})\n","import VLabel from './VLabel'\n\nexport { VLabel }\nexport default VLabel\n","// Styles\nimport './VMessages.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../util/mixins'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-messages',\n\n props: {\n value: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n },\n\n methods: {\n genChildren () {\n return this.$createElement('transition-group', {\n staticClass: 'v-messages__wrapper',\n attrs: {\n name: 'message-transition',\n tag: 'div',\n },\n }, this.value.map(this.genMessage))\n },\n genMessage (message: string, key: number) {\n return this.$createElement('div', {\n staticClass: 'v-messages__message',\n key,\n }, getSlot(this, 'default', { message, key }) || [message])\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-messages',\n class: this.themeClasses,\n }), [this.genChildren()])\n },\n})\n","import VMessages from './VMessages'\n\nexport { VMessages }\nexport default VMessages\n","// Styles\nimport './VInput.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VLabel from '../VLabel'\nimport VMessages from '../VMessages'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Validatable from '../../mixins/validatable'\n\n// Utilities\nimport {\n convertToUnit,\n getSlot,\n kebabCase,\n} from '../../util/helpers'\nimport mergeData from '../../util/mergeData'\n\n// Types\nimport { VNode, VNodeData, PropType } from 'vue'\nimport mixins from '../../util/mixins'\nimport { InputValidationRule } from 'vuetify/types'\n\nconst baseMixins = mixins(\n BindsAttrs,\n Validatable,\n)\n\ninterface options extends InstanceType {\n /* eslint-disable-next-line camelcase */\n $_modelEvent: string\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-input',\n\n inheritAttrs: false,\n\n props: {\n appendIcon: String,\n backgroundColor: {\n type: String,\n default: '',\n },\n dense: Boolean,\n height: [Number, String],\n hideDetails: [Boolean, String] as PropType,\n hideSpinButtons: Boolean,\n hint: String,\n id: String,\n label: String,\n loading: Boolean,\n persistentHint: Boolean,\n prependIcon: String,\n value: null as any as PropType,\n },\n\n data () {\n return {\n lazyValue: this.value,\n hasMouseDown: false,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-input--has-state': this.hasState,\n 'v-input--hide-details': !this.showDetails,\n 'v-input--is-label-active': this.isLabelActive,\n 'v-input--is-dirty': this.isDirty,\n 'v-input--is-disabled': this.isDisabled,\n 'v-input--is-focused': this.isFocused,\n // .loading === '' so we can't just cast to boolean\n 'v-input--is-loading': this.loading !== false && this.loading != null,\n 'v-input--is-readonly': this.isReadonly,\n 'v-input--dense': this.dense,\n 'v-input--hide-spin-buttons': this.hideSpinButtons,\n ...this.themeClasses,\n }\n },\n computedId (): string {\n return this.id || `input-${this._uid}`\n },\n hasDetails (): boolean {\n return this.messagesToDisplay.length > 0\n },\n hasHint (): boolean {\n return !this.hasMessages &&\n !!this.hint &&\n (this.persistentHint || this.isFocused)\n },\n hasLabel (): boolean {\n return !!(this.$slots.label || this.label)\n },\n // Proxy for `lazyValue`\n // This allows an input\n // to function without\n // a provided model\n internalValue: {\n get (): any {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n this.$emit(this.$_modelEvent, val)\n },\n },\n isDirty (): boolean {\n return !!this.lazyValue\n },\n isLabelActive (): boolean {\n return this.isDirty\n },\n messagesToDisplay (): string[] {\n if (this.hasHint) return [this.hint]\n\n if (!this.hasMessages) return []\n\n return this.validations.map((validation: string | InputValidationRule) => {\n if (typeof validation === 'string') return validation\n\n const validationResult = validation(this.internalValue)\n\n return typeof validationResult === 'string' ? validationResult : ''\n }).filter(message => message !== '')\n },\n showDetails (): boolean {\n return this.hideDetails === false || (this.hideDetails === 'auto' && this.hasDetails)\n },\n },\n\n watch: {\n value (val) {\n this.lazyValue = val\n },\n },\n\n beforeCreate () {\n // v-radio-group needs to emit a different event\n // https://github.com/vuetifyjs/vuetify/issues/4752\n this.$_modelEvent = (this.$options.model && this.$options.model.event) || 'input'\n },\n\n methods: {\n genContent () {\n return [\n this.genPrependSlot(),\n this.genControl(),\n this.genAppendSlot(),\n ]\n },\n genControl () {\n return this.$createElement('div', {\n staticClass: 'v-input__control',\n attrs: { title: this.attrs$.title },\n }, [\n this.genInputSlot(),\n this.genMessages(),\n ])\n },\n genDefaultSlot () {\n return [\n this.genLabel(),\n getSlot(this),\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData: VNodeData = {}\n ) {\n const icon = (this as any)[`${type}Icon`]\n const eventName = `click:${kebabCase(type)}`\n const hasListener = !!(this.listeners$[eventName] || cb)\n\n const localeKey = {\n prepend: 'prependAction',\n prependInner: 'prependAction',\n append: 'appendAction',\n appendOuter: 'appendAction',\n clear: 'clear',\n }[type]\n const label = hasListener && localeKey\n ? this.$vuetify.lang.t(`$vuetify.input.${localeKey}`, this.label ?? '')\n : undefined\n\n const data = mergeData({\n attrs: {\n 'aria-label': label,\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n light: this.light,\n tabindex: type === 'clear' ? -1 : undefined,\n },\n on: !hasListener\n ? undefined\n : {\n click: (e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n\n this.$emit(eventName, e)\n cb && cb(e)\n },\n // Container has g event that will\n // trigger menu open if enclosed\n mouseup: (e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n },\n },\n }, extraData)\n\n return this.$createElement('div', {\n staticClass: `v-input__icon`,\n class: type ? `v-input__icon--${kebabCase(type)}` : undefined,\n }, [\n this.$createElement(\n VIcon,\n data,\n icon\n ),\n ])\n },\n genInputSlot () {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor, {\n staticClass: 'v-input__slot',\n style: { height: convertToUnit(this.height) },\n on: {\n click: this.onClick,\n mousedown: this.onMouseDown,\n mouseup: this.onMouseUp,\n },\n ref: 'input-slot',\n }), [this.genDefaultSlot()])\n },\n genLabel () {\n if (!this.hasLabel) return null\n\n return this.$createElement(VLabel, {\n props: {\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n focused: this.hasState,\n for: this.computedId,\n light: this.light,\n },\n }, getSlot(this, 'label') || this.label)\n },\n genMessages () {\n if (!this.showDetails) return null\n\n return this.$createElement(VMessages, {\n props: {\n color: this.hasHint ? '' : this.validationState,\n dark: this.dark,\n light: this.light,\n value: this.messagesToDisplay,\n },\n attrs: {\n role: this.hasMessages ? 'alert' : null,\n },\n scopedSlots: {\n default: props => getSlot(this, 'message', props),\n },\n })\n },\n genSlot (\n type: string,\n location: string,\n slot: (VNode | VNode[])[]\n ) {\n if (!slot.length) return null\n\n const ref = `${type}-${location}`\n\n return this.$createElement('div', {\n staticClass: `v-input__${ref}`,\n ref,\n }, slot)\n },\n genPrependSlot () {\n const slot = []\n\n if (this.$slots.prepend) {\n slot.push(this.$slots.prepend)\n } else if (this.prependIcon) {\n slot.push(this.genIcon('prepend'))\n }\n\n return this.genSlot('prepend', 'outer', slot)\n },\n genAppendSlot () {\n const slot = []\n\n // Append icon for text field was really\n // an appended inner icon, v-text-field\n // will overwrite this method in order to obtain\n // backwards compat\n if (this.$slots.append) {\n slot.push(this.$slots.append)\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'))\n }\n\n return this.genSlot('append', 'outer', slot)\n },\n onClick (e: Event) {\n this.$emit('click', e)\n },\n onMouseDown (e: Event) {\n this.hasMouseDown = true\n this.$emit('mousedown', e)\n },\n onMouseUp (e: Event) {\n this.hasMouseDown = false\n this.$emit('mouseup', e)\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.validationState, {\n staticClass: 'v-input',\n class: this.classes,\n }), this.genContent())\n },\n})\n","import VInput from './VInput'\n\nexport { VInput }\nexport default VInput\n","import { VNodeDirective, VNode } from 'vue/types/vnode'\nimport { keys } from '../../util/helpers'\nimport { TouchHandlers, TouchValue, TouchWrapper } from 'vuetify/types'\n\nexport interface TouchStoredHandlers {\n touchstart: (e: TouchEvent) => void\n touchend: (e: TouchEvent) => void\n touchmove: (e: TouchEvent) => void\n}\n\ninterface TouchVNodeDirective extends VNodeDirective {\n value?: TouchValue\n}\n\nconst handleGesture = (wrapper: TouchWrapper) => {\n const { touchstartX, touchendX, touchstartY, touchendY } = wrapper\n const dirRatio = 0.5\n const minDistance = 16\n wrapper.offsetX = touchendX - touchstartX\n wrapper.offsetY = touchendY - touchstartY\n\n if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n wrapper.left && (touchendX < touchstartX - minDistance) && wrapper.left(wrapper)\n wrapper.right && (touchendX > touchstartX + minDistance) && wrapper.right(wrapper)\n }\n\n if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n wrapper.up && (touchendY < touchstartY - minDistance) && wrapper.up(wrapper)\n wrapper.down && (touchendY > touchstartY + minDistance) && wrapper.down(wrapper)\n }\n}\n\nfunction touchstart (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchstartX = touch.clientX\n wrapper.touchstartY = touch.clientY\n\n wrapper.start &&\n wrapper.start(Object.assign(event, wrapper))\n}\n\nfunction touchend (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchendX = touch.clientX\n wrapper.touchendY = touch.clientY\n\n wrapper.end &&\n wrapper.end(Object.assign(event, wrapper))\n\n handleGesture(wrapper)\n}\n\nfunction touchmove (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchmoveX = touch.clientX\n wrapper.touchmoveY = touch.clientY\n\n wrapper.move && wrapper.move(Object.assign(event, wrapper))\n}\n\nfunction createHandlers (value: TouchHandlers): TouchStoredHandlers {\n const wrapper = {\n touchstartX: 0,\n touchstartY: 0,\n touchendX: 0,\n touchendY: 0,\n touchmoveX: 0,\n touchmoveY: 0,\n offsetX: 0,\n offsetY: 0,\n left: value.left,\n right: value.right,\n up: value.up,\n down: value.down,\n start: value.start,\n move: value.move,\n end: value.end,\n }\n\n return {\n touchstart: (e: TouchEvent) => touchstart(e, wrapper),\n touchend: (e: TouchEvent) => touchend(e, wrapper),\n touchmove: (e: TouchEvent) => touchmove(e, wrapper),\n }\n}\n\nfunction inserted (el: HTMLElement, binding: TouchVNodeDirective, vnode: VNode) {\n const value = binding.value!\n const target = value.parent ? el.parentElement : el\n const options = value.options || { passive: true }\n\n // Needed to pass unit tests\n if (!target) return\n\n const handlers = createHandlers(binding.value!)\n target._touchHandlers = Object(target._touchHandlers)\n target._touchHandlers![vnode.context!._uid] = handlers\n\n keys(handlers).forEach(eventName => {\n target.addEventListener(eventName, handlers[eventName] as EventListener, options)\n })\n}\n\nfunction unbind (el: HTMLElement, binding: TouchVNodeDirective, vnode: VNode) {\n const target = binding.value!.parent ? el.parentElement : el\n if (!target || !target._touchHandlers) return\n\n const handlers = target._touchHandlers[vnode.context!._uid]\n keys(handlers).forEach(eventName => {\n target.removeEventListener(eventName, handlers[eventName])\n })\n delete target._touchHandlers[vnode.context!._uid]\n}\n\nexport const Touch = {\n inserted,\n unbind,\n}\n\nexport default Touch\n","// design\r\nimport {\r\n iconDownload,\r\n iconPdf,\r\n iconDropDownload,\r\n iconPrint,\r\n iconSend,\r\n iconClose\r\n} from \"@/design/icon/iconConst\";\r\n\r\n// model\r\nimport { fieldDownloadType } from \"@/model/document/documentModel\";\r\nimport {\r\n createAnnotateOption,\r\n createPrintOption\r\n} from \"@/model/image/imageModel\";\r\n\r\n// vuex\r\nimport { createNamespacedHelpers } from \"vuex\";\r\nconst { mapActions } = createNamespacedHelpers(\"document\");\r\n\r\nexport const annotationOptionMixin = {\r\n components: {\r\n BaseDropDownMenuButton: () =>\r\n import(\"@/components/shared/base/BaseDropDownMenuButton\"),\r\n BaseTooltipButton: () =>\r\n import(\"@/components/shared/base/BaseTooltipButton\"),\r\n DownloadAnnotationOption: () =>\r\n import(\r\n \"@/components/shared/core/image/Annotation/DownloadAnnotationOption\"\r\n ),\r\n PrintAnnotationOption: () =>\r\n import(\"@/components/shared/core/image/Annotation/PrintAnnotationOption\"),\r\n LayoutPopoverMenu: () =>\r\n import(\"@/components/shared/core/layout/menu/LayoutPopoverMenu\")\r\n },\r\n data() {\r\n return {\r\n /**\r\n * @type {{includeAnnotations: boolean, burnIntoImage: boolean, maintainColor: boolean, includeRedaction: boolean, burnRedaction: boolean}}\r\n */\r\n annotateOption: createAnnotateOption(),\r\n\r\n /**\r\n * print annotate-able Print image Option\r\n * @type {{burnAnnotations: boolean, burnRedaction: boolean}}\r\n */\r\n printOption: createPrintOption(),\r\n\r\n // icons TODO: move it to a corresponded operation model\r\n iconDownload: iconDownload,\r\n iconPdf: iconPdf,\r\n iconDropDownload: iconDropDownload,\r\n iconPrint: iconPrint,\r\n iconSend: iconSend,\r\n iconClose: iconClose,\r\n\r\n // Document Const Model\r\n asItIs: fieldDownloadType.asItIs,\r\n asPdf: fieldDownloadType.asPdf\r\n };\r\n },\r\n methods: {\r\n ...mapActions({\r\n downloadFile: \"downloadFile\",\r\n downloadFileAsPdf: \"downloadFileAsPdf\",\r\n downloadImageFileVersion: \"downloadImageFileVersion\",\r\n downloadFileVersionAsPdf: \"downloadFileVersionAsPdf\"\r\n })\r\n }\r\n};\r\n"],"sourceRoot":""}