import { BaseUiElementFactory, PublicUiElementIdAndClasses } from "./base"; import { Html5QrcodeScannerStrings } from "../../strings"; export class CameraZoomUi { constructor() { this.onChangeCallback = null; this.zoomElementContainer = document.createElement("div"); this.rangeInput = BaseUiElementFactory.createElement("input", PublicUiElementIdAndClasses.ZOOM_SLIDER_ID); this.rangeInput.type = "range"; this.rangeText = document.createElement("span"); this.rangeInput.min = "1"; this.rangeInput.max = "5"; this.rangeInput.value = "1"; this.rangeInput.step = "0.1"; } render(parentElement, renderOnCreate) { this.zoomElementContainer.style.display = renderOnCreate ? "block" : "none"; this.zoomElementContainer.style.padding = "5px 10px"; this.zoomElementContainer.style.textAlign = "center"; parentElement.appendChild(this.zoomElementContainer); this.rangeInput.style.display = "inline-block"; this.rangeInput.style.width = "50%"; this.rangeInput.style.height = "5px"; this.rangeInput.style.background = "#d3d3d3"; this.rangeInput.style.outline = "none"; this.rangeInput.style.opacity = "0.7"; let zoomString = Html5QrcodeScannerStrings.zoom(); this.rangeText.innerText = `${this.rangeInput.value}x ${zoomString}`; this.rangeText.style.marginRight = "10px"; let $this = this; this.rangeInput.addEventListener("input", () => $this.onValueChange()); this.rangeInput.addEventListener("change", () => $this.onValueChange()); this.zoomElementContainer.appendChild(this.rangeInput); this.zoomElementContainer.appendChild(this.rangeText); } onValueChange() { let zoomString = Html5QrcodeScannerStrings.zoom(); this.rangeText.innerText = `${this.rangeInput.value}x ${zoomString}`; if (this.onChangeCallback) { this.onChangeCallback(parseFloat(this.rangeInput.value)); } } setValues(minValue, maxValue, defaultValue, step) { this.rangeInput.min = minValue.toString(); this.rangeInput.max = maxValue.toString(); this.rangeInput.step = step.toString(); this.rangeInput.value = defaultValue.toString(); this.onValueChange(); } show() { this.zoomElementContainer.style.display = "block"; } hide() { this.zoomElementContainer.style.display = "none"; } setOnCameraZoomValueChangeCallback(onChangeCallback) { this.onChangeCallback = onChangeCallback; } removeOnCameraZoomValueChangeCallback() { this.onChangeCallback = null; } static create(parentElement, renderOnCreate) { let cameraZoomUi = new CameraZoomUi(); cameraZoomUi.render(parentElement, renderOnCreate); return cameraZoomUi; } } //# sourceMappingURL=camera-zoom-ui.js.map