UNPKG

@scandit/web-datacapture-barcode

Version:

Scandit Data Capture SDK for the Web

1 lines 21.3 kB
import"../../SelectionMode.js";import"../SparkScanPreviewBehavior.js";import"../SparkScanScanningBehavior.js";import"../SparkScanAnalyticsManager.js";import{DragControllerEvent as e}from"./controllers/DragController.js";import{SparkScanBarcodeFeedback as t}from"../SparkScanBarcodeFeedback.js";import{toolbarBackgroundColorCssVariable as n,toolbarIconActiveTintColorCssVariable as r,toolbarIconInactiveTintColorCssVariable as i,triggerButtonAnimationColorCssVariable as a,triggerButtonCollapsedColorCssVariable as o,triggerButtonCollapsedPressedColorCssVariable as s,triggerButtonExpandedColorCssVariable as c,triggerButtonExpandedPressedColorCssVariable as l,triggerButtonTintColorCssVariable as u,visualFeedbackErrorColorCssVariable as d,visualFeedbackSuccessColorCssVariable as f}from"./constants/cssVariables.js";import{miniPreviewVisibilityChangeEvent as p}from"./constants/events.js";import{barcodeFindButtonVisibleAttribute as m,cameraSwitchButtonVisibleAttribute as h,labelCaptureButtonVisibleAttribute as g,previewCloseControlVisibleAttribute as _,previewSizeControlVisibleAttribute as v,scanningBehaviorAttribute as y,scanningBehaviorButtonVisibleAttribute as b,selectionModeAutoAttribute as x,targetModeButtonVisibleAttribute as S,targetModeEnabledAttribute as C,torchControlVisibleAttribute as w,torchEnabledAttribute as T,zoomSwitchControlVisibleAttribute as E}from"./constants/attributes.js";import{sparkScanViewTag as D}from"./constants/tags.js";import{unconstrainedModeThreshold as O}from"./constants/constants.js";import{SparkScanViewMiniPreview as k}from"./SparkScanViewMiniPreview.js";import{t as A}from"../../SparkScanViewPresenter-26JfPd8a.js";import{SparkScanViewSettings as j}from"./SparkScanViewSettings.js";import{SparkScanViewTriggerButton as M}from"./SparkScanViewTriggerButton.js";import{SparkScanViewVisualFeedback as N}from"./SparkScanViewVisualFeedback.js";import{CameraPosition as P,Color as F,Logger as I,Point as L}from"@scandit/web-datacapture-core";import{OrientationObserver as R,orientationChangeEvent as z}from"@scandit/web-datacapture-core/build/js/private/OrientationObserver.js";import{ScanditHTMLElement as B,Timeout as V,clamp as H,css as U,defineCustomElements as W}from"@scandit/web-datacapture-core/build/js/private/utils/index.js";var G=class G extends B{constructor(...e){super(...e),this._targetModeButtonVisible=!1,this._scanningBehaviorButtonVisible=!1,this._torchControlVisible=!0,this._zoomSwitchControlVisible=!0,this._previewSizeControlVisible=!0,this._barcodeFindButtonVisible=!1,this._labelCaptureButtonVisible=!1,this._cameraSwitchButtonVisible=!1,this._previewCloseControlVisible=!0,this._triggerButtonVisible=!0,this._isTorchAvailable=!0,this._isZoomAvailable=!0,this._isConnected=!1,this._sizingMode=`constrained`,this.feedbackDelegate={getFeedbackForBarcode:()=>t.success()},this.onSparkScanSettingsApplied=e=>{let t=e.selectionMode??null;this.applySelectionModeToToolbar(t),this.presenter.applySelectionModeToScanningMode(t),(t===`on`||t===`off`)&&this.targetModeButtonTapped(t===`on`,!1)},this.resizeObserver=null,this.onResizeHandler=this.onResize.bind(this),this.settings=new j,this.presenter=A.forView(this,this.settings),this.miniPreview=k.create(),this.triggerButton=M.create(),this.visualFeedback=N.create(),this.miniPreviewTimeout=new V(500,this.onMiniPreviewTimeoutFinished.bind(this)),this.orientationObserver=new R,this.miniPreviewPointerUpListener=this.onMiniPreviewPointerUp.bind(this),this.miniPreviewPointerMoveListener=this.onMiniPreviewPointerMove.bind(this),this.miniPreviewButtonTapListener=this.onMiniPreviewButtonTap.bind(this),this.miniPreviewDragListener=this.onMiniPreviewDrag.bind(this),this.miniPreviewDragEndListener=this.onMiniPreviewDragEnd.bind(this),this.miniPreviewVisibilityChangeListener=this.onMiniPreviewVisibilityChange.bind(this),this.triggerButtonPointerDownListener=this.onTriggerButtonPointerDown.bind(this),this.triggerButtonTapListener=this.onTriggerButtonTap.bind(this),this.triggerButtonLongPressStartListener=this.onTriggerButtonLongPressStart.bind(this),this.triggerButtonLongPressEndListener=this.onTriggerButtonLongPressEnd.bind(this),this.triggerButtonDragListener=this.onTriggerButtonDrag.bind(this),this.toolbarButtonTapListener=this.onToolbarButtonTap.bind(this),this.clickOutsideListener=this.onClickOutside.bind(this),this.visibilityChangeListener=this.onVisibilityChange.bind(this),this.orientationChangeListener=this.onOrientationChange.bind(this),this.holdingToScan=!1,this.miniPreviewListeners=[[`pointerup`,this.miniPreviewPointerUpListener],[`pointermove`,this.miniPreviewPointerMoveListener],[`minipreviewbuttontap`,this.miniPreviewButtonTapListener],[`toolbarbuttontap`,this.toolbarButtonTapListener],[`drag`,this.miniPreviewDragListener],[`dragend`,this.miniPreviewDragEndListener],[p,this.miniPreviewVisibilityChangeListener]],this.triggerButtonListeners=[[`pointerdown`,this.triggerButtonPointerDownListener],[`tap`,this.triggerButtonTapListener],[`longpressstart`,this.triggerButtonLongPressStartListener],[`longpressend`,this.triggerButtonLongPressEndListener],[`drag`,this.triggerButtonDragListener]]}get targetModeButtonVisible(){return this._targetModeButtonVisible}set targetModeButtonVisible(e){var t;this._targetModeButtonVisible=e,(t=this.miniPreview)!=null&&t.toolbar&&(this.miniPreview.toolbar[S]=e)}get selectionModeButtonVisible(){return this._targetModeButtonVisible}set selectionModeButtonVisible(e){this.targetModeButtonVisible=e}get scanningBehaviorButtonVisible(){return this._scanningBehaviorButtonVisible}set scanningBehaviorButtonVisible(e){var t;this._scanningBehaviorButtonVisible=e,(t=this.miniPreview)!=null&&t.toolbar&&(this.miniPreview.toolbar[b]=e)}get torchControlVisible(){return this._torchControlVisible}set torchControlVisible(e){this._torchControlVisible=e,this.miniPreview&&(this.miniPreview[w]=e&&this._isTorchAvailable)}get zoomSwitchControlVisible(){return this._zoomSwitchControlVisible}set zoomSwitchControlVisible(e){this._zoomSwitchControlVisible=e,this.miniPreview&&(this.miniPreview[E]=e&&this._isZoomAvailable)}get previewSizeControlVisible(){return this._previewSizeControlVisible}set previewSizeControlVisible(e){this._previewSizeControlVisible=e,this.miniPreview&&(this.miniPreview[v]=e)}get barcodeFindButtonVisible(){return this._barcodeFindButtonVisible}set barcodeFindButtonVisible(e){var t;this._barcodeFindButtonVisible=e,(t=this.miniPreview)!=null&&t.toolbar&&(this.miniPreview.toolbar[m]=e)}get labelCaptureButtonVisible(){return this._labelCaptureButtonVisible}set labelCaptureButtonVisible(e){var t;this._labelCaptureButtonVisible=e,(t=this.miniPreview)!=null&&t.toolbar&&(this.miniPreview.toolbar[g]=e)}get cameraSwitchButtonVisible(){return this._cameraSwitchButtonVisible}set cameraSwitchButtonVisible(e){var t;this._cameraSwitchButtonVisible=e,(t=this.miniPreview)!=null&&t.toolbar&&(this.miniPreview.toolbar[h]=e)}get previewCloseControlVisible(){return this._previewCloseControlVisible}set previewCloseControlVisible(e){this._previewCloseControlVisible=e,this.miniPreview&&(this.miniPreview[_]=e)}get triggerButtonVisible(){return this._triggerButtonVisible}set triggerButtonVisible(e){this._triggerButtonVisible=e,this.triggerButton&&(this.triggerButton.visible=e)}get dataCaptureContext(){return this.presenter.context}set dataCaptureContext(e){this.presenter.context!==e&&(this.presenter.context=e,this._maybeAutoPrepareScanning())}get sparkScan(){return this.presenter.sparkScan}set sparkScan(e){if(this.presenter.sparkScan!==e){let t=this.presenter.sparkScan;t&&t._setModeViewListener(null),this.presenter.sparkScan=e,e&&e._setModeViewListener(this.onSparkScanSettingsApplied),this._maybeAutoPrepareScanning()}}applySelectionModeToToolbar(e){this.miniPreview.toolbar&&(this.miniPreview.toolbar[x]=e===`auto`)}get _targetModeEnabledMessage(){return this.settings.toastSettings.selectionModeOnMessage??this.settings.toastSettings.targetModeEnabledMessage??`Aimer on`}get _targetModeDisabledMessage(){return this.settings.toastSettings.selectionModeOffMessage??this.settings.toastSettings.targetModeDisabledMessage??`Aimer off`}get _continuousModeEnabledMessage(){return this.settings.toastSettings.continuousModeEnabledMessage??`Continuous mode on`}get _continuousModeDisabledMessage(){return this.settings.toastSettings.continuousModeDisabledMessage??`Continuous mode off`}get _scanPausedMessage(){return this.settings.toastSettings.scanPausedMessage??`Scan paused`}get _torchEnabledMessage(){return this.settings.toastSettings.torchEnabledMessage??`Torch on`}get _torchDisabledMessage(){return this.settings.toastSettings.torchDisabledMessage??`Torch off`}get _zoomedInMessage(){return this.settings.toastSettings.zoomedInMessage??`2x zoom`}get _zoomedOutMessage(){return this.settings.toastSettings.zoomedOutMessage??`1x zoom`}set sparkScanViewSettings(e){let t=e??new j;this.settings=t,this.presenter.setSparkScanViewSettings(t)}get sparkScanViewSettings(){return this.settings}static forElement(e,t,n,r){let i=G.create();return r&&(i.sparkScanViewSettings=r),i.dataCaptureContext=t,i.sparkScan=n,e.append(i),i}static register(){W({[D]:G})}static create(){return G.register(),document.createElement(`spark-scan-view`)}static createStyleElement(){return U`:root{${o}:#12161966;${c}:#12161966;${a}:#5b707f4d;${u}:#fff;${n}:#121619cc;${r}:#fbc02c;${i}:#fff;${f}:#0ff;${d}:#fa4446}${D}{position:relative}`}async prepareScanning(){await this.presenter.prepareScanning(this.miniPreview.host)}async startScanning(){await this.presenter.startScanning()}async pauseScanning(){await this.presenter.pauseScanning()}async stopScanning(){await this.presenter.stopScanning({sessionStopReason:`user`})}showToast(e){this.miniPreview.showToast(`info`,e,1e3)}setListener(e){this.presenter.setListener(e)}setTriggerButtonImage(e){this.triggerButton.setImage(e)}get miniPreviewSize(){return this.miniPreview.size}set miniPreviewSize(e){this.miniPreview.size=e}setWidthAndHeightCssStyleProperties(){let e,t;if(this._sizingMode===`unconstrained`){var n,r;e=((n=globalThis.window.visualViewport)==null?void 0:n.width)??globalThis.window.innerWidth,t=((r=globalThis.window.visualViewport)==null?void 0:r.height)??globalThis.window.innerHeight}else{var i,a;e=((i=this.parentElement)==null?void 0:i.clientWidth)||document.body.clientWidth,t=((a=this.parentElement)==null?void 0:a.clientHeight)||document.body.clientHeight}this.style.setProperty(`--dvw`,`${e}px`),this.style.setProperty(`--dvh`,`${t}px`),this.style.setProperty(`--dvw-half`,`calc(var(--dvw) / 2)`),this.style.setProperty(`--dvh-half`,`calc(var(--dvh) / 2)`)}onResize(){this.updateSizingMode(),this.setWidthAndHeightCssStyleProperties(),this.repositionElementsIfOutOfBounds()}updateSizingMode(){var e,t;let n=((e=this.parentElement)==null?void 0:e.clientWidth)??0,r=(((t=this.parentElement)==null?void 0:t.clientHeight)??0)<O||n<O?`unconstrained`:`constrained`;if(this._sizingMode!==r){this._sizingMode=r;let e=r===`unconstrained`;this.toggleAttribute(`unconstrained`,e),this.miniPreview.toggleAttribute(`unconstrained`,e),this.triggerButton.toggleAttribute(`unconstrained`,e),this.miniPreview.useViewportBounds=e,this.triggerButton.useViewportBounds=e,this.repositionElementsIfOutOfBounds()}}_maybeAutoPrepareScanning(){this._isConnected&&this.presenter.context&&this.presenter.sparkScan&&this.prepareScanning().catch(e=>{I.warn(`Auto prepareScanning failed:`,e)})}connectedCallback(){var e;this.append(G.createStyleElement().cloneNode(!0),this.miniPreview,this.triggerButton,this.visualFeedback),this.resizeObserver=new ResizeObserver(this.onResizeHandler),this.resizeObserver.observe(this.parentElement),this.previewCloseControlVisible=this._previewCloseControlVisible,this.previewSizeControlVisible=this._previewSizeControlVisible,this.zoomSwitchControlVisible=this._zoomSwitchControlVisible,this.torchControlVisible=this._torchControlVisible,this.miniPreview.size=this.settings.defaultMiniPreviewSize,this.targetModeButtonVisible=this._targetModeButtonVisible,this.scanningBehaviorButtonVisible=this._scanningBehaviorButtonVisible,this.barcodeFindButtonVisible=this._barcodeFindButtonVisible,this.labelCaptureButtonVisible=this._labelCaptureButtonVisible,this.cameraSwitchButtonVisible=this._cameraSwitchButtonVisible,this.sparkScan&&this.sparkScan._setModeViewListener(this.onSparkScanSettingsApplied),this.triggerButtonVisible=this._triggerButtonVisible;for(let[e,t]of[[this.triggerButtonCollapsedColor,o],[this.triggerButtonExpandedColor,c],[this.triggerButtonAnimationColor,a],[this.triggerButtonTintColor,u],[this.toolbarBackgroundColor,n],[this.toolbarIconActiveTintColor,r],[this.toolbarIconInactiveTintColor,i]])e&&this.style.setProperty(t,`#${e.toJSON()}`);this.setTriggerButtonPressedColor(`triggerButtonCollapsedColor`,o,s),this.setTriggerButtonPressedColor(`triggerButtonExpandedColor`,c,l),this.addMiniPreviewListeners(),this.addTriggerButtonListeners(),this.orientationObserver.register(),document.addEventListener(`pointerup`,this.clickOutsideListener),document.addEventListener(`visibilitychange`,this.visibilityChangeListener),this.orientationObserver.addEventListener(z,this.orientationChangeListener),this.orientationObserver.dispatchOrientationChangeEvent(this.orientationObserver.orientation),this.updateSizingMode(),this.setWidthAndHeightCssStyleProperties(),(e=window.visualViewport)==null||e.addEventListener(`resize`,this.onResizeHandler),this._isConnected=!0,this._maybeAutoPrepareScanning()}disconnectedCallback(){var e,t;this.miniPreviewTimeout.stop(),(e=this.resizeObserver)==null||e.disconnect(),this.orientationObserver.unregister(),this.orientationObserver.removeEventListener(z,this.orientationChangeListener),this.removeMiniPreviewListeners(),this.removeTriggerButtonListeners(),document.removeEventListener(`pointerup`,this.clickOutsideListener),document.removeEventListener(`visibilitychange`,this.visibilityChangeListener),(t=window.visualViewport)==null||t.removeEventListener(`resize`,this.onResizeHandler);for(let e of Array.from(this.children))e.remove();this._isConnected=!1}setTorchAvailable(e){this._isTorchAvailable=e,this.torchControlVisible=this._torchControlVisible}setZoomAvailable(e){this._isZoomAvailable=e,this.zoomSwitchControlVisible=this._zoomSwitchControlVisible}switchToIdleState(){this.miniPreview.darkened=!1,this.miniPreview.visible=!1,this.miniPreview.hideToast(),this.triggerButton.expanded=!1,this.triggerButton.stopPulsating()}async switchToActiveState(e,t,n,r){this.miniPreviewTimeout.stop(),this.miniPreview.hideToast(),this.miniPreview.cancelFadeOut(),this.miniPreview.darkened=!1,this.miniPreview.visible=!0,this.triggerButton.expanded=!0,this.triggerButton.startPulsating(),this.miniPreview.toolbar&&(this.miniPreview.toolbar[y]=t),e&&(n&&this.style.setProperty(f,`#${n.toJSON()}`),await this.visualFeedback.emitSuccessFeedback()),r===!0&&this.miniPreview.showToast(`warning`,this._zoomedInMessage,1e3)}async switchToInactiveState(e,t,n,r){this.miniPreview.darkened=n===`persistent`||e,this.miniPreview.visible=n===`persistent`||e,this.triggerButton.expanded=!0,this.triggerButton.stopPulsating(),this.miniPreview.toolbar&&(this.miniPreview.toolbar[y]=t),e&&(r&&this.style.setProperty(f,`#${r.toJSON()}`),await this.visualFeedback.emitSuccessFeedback(),n===`default`&&this.miniPreviewTimeout.start()),n===`persistent`&&this.miniPreview.showToast(`warning`,this._scanPausedMessage,1/0)}async switchToErrorState(e,t){e.resumeCapturingDelay>0&&(this.triggerButton.stopPulsating(),this.miniPreview.showToast(`error`,e.message,e.resumeCapturingDelay)),t&&(this.style.setProperty(d,`#${e.visualFeedbackColor.toJSON()}`),await this.visualFeedback.emitErrorFeedback())}async onMiniPreviewPointerUp(){await this.presenter.onMiniPreviewPointerUp()}onMiniPreviewPointerMove(){this.presenter.onMiniPreviewPointerMove()}async onMiniPreviewButtonTap(e){switch(e.detail.tapped){case`torchButton`:await this.presenter.onTorchButtonTap(e.detail.enabled);break;case`closeButton`:await this.presenter.onMiniPreviewCloseButtonTap();break;case`resizeButton`:this.presenter.onMiniPreviewResizeButtonTap();break;case`zoomButton`:await this.presenter.onMiniPreviewZoomButtonTap(e.detail.zoomFactor);break}this.miniPreviewTimeout.running&&this.miniPreviewTimeout.start()}async onMiniPreviewDrag(t){t instanceof e&&await this.presenter.onMiniPreviewDrag(t.point,this.orientationObserver.orientation.type)}async onMiniPreviewDragEnd(t){t instanceof e&&await this.presenter.onMiniPreviewDragEnd()}async onMiniPreviewVisibilityChange(e){await this.presenter.onMiniPreviewVisibilityChange(e.detail.visible)}async onTriggerButtonPointerDown(){await this.presenter.onTriggerButtonPointerDown()}async onTriggerButtonTap(){await this.presenter.onTriggerButtonTap()}async onTriggerButtonLongPressStart(){this.holdingToScan||(this.holdingToScan=!0,await this.presenter.onTriggerButtonLongPressStart())}async onTriggerButtonLongPressEnd(){this.holdingToScan&&(this.holdingToScan=!1,await this.presenter.onTriggerButtonLongPressEnd())}onTriggerButtonDrag(t){t instanceof e&&this.presenter.onTriggerButtonDrag(t.point,this.orientationObserver.orientation.type)}async onToolbarButtonTap(e){switch(this.miniPreview.rewindAnimation(),e.detail.tapped){case`targetModeButton`:await this.onTargetModeButtonTap(e);return;case`scanningBehaviorButton`:await this.onScanningBehaviorButtonTap(e);return;case`barcodeFindButton`:await this.onBarcodeFindButtonTap();return;case`labelCaptureButton`:await this.onLabelCaptureButtonTap();return;case`cameraSwitchButton`:await this.onCameraSwitchButtonTap()}}async onClickOutside(e){e.composedPath().includes(this)||await this.presenter.onClickOutside()}async onVisibilityChange(){document.visibilityState===`hidden`&&await this.presenter.onVisibilityChange()}async onTargetModeButtonTap(e){await this.presenter.onTargetModeButtonTap(e.detail.enabled)}async onScanningBehaviorButtonTap(e){await this.presenter.onScanningBehaviorButtonTap(e.detail.enabled)}async onBarcodeFindButtonTap(){await this.presenter.onBarcodeFindButtonTap()}async onLabelCaptureButtonTap(){await this.presenter.onLabelCaptureButtonTap()}async onCameraSwitchButtonTap(){this.torchControlVisible=!1,await this.presenter.onCameraSwitchButtonTap()}async onTorchButtonTap(e){await this.presenter.onTorchButtonTap(e.detail.enabled)}async onMiniPreviewTimeoutFinished(){await this.miniPreview.fadeOut()}async onOrientationChange(e){this.updateSizingMode(),this.setWidthAndHeightCssStyleProperties(),this.miniPreview.orientation=e.detail.type;let t,n,r,i;switch(e.detail.type){case`landscape-primary`:case`landscape-secondary`:t=this.presenter.landscapeOrientationTriggerButtonTranslateX,n=this.presenter.landscapeOrientationTriggerButtonTranslateY,r=this.presenter.landscapeOrientationMiniPreviewTranslateX,i=this.presenter.landscapeOrientationMiniPreviewTranslateY;break;case`portrait-primary`:case`portrait-secondary`:t=this.presenter.portraitOrientationTriggerButtonTranslateX,n=this.presenter.portraitOrientationTriggerButtonTranslateY,r=this.presenter.portraitOrientationMiniPreviewTranslateX,i=this.presenter.portraitOrientationMiniPreviewTranslateY;break}this.triggerButton.translateTo(new L(t,n)),this.miniPreview.translateTo(new L(r,i)),await this.presenter.onOrientationChange()}targetModeButtonTapped(e,t=!0){if(t){let t=e?`warning`:`info`,n=e?this._targetModeEnabledMessage:this._targetModeDisabledMessage;this.miniPreview.showToast(t,n,1e3)}this.miniPreview.toolbar&&(this.miniPreview.toolbar[C]=e),this.miniPreviewTimeout.running&&this.miniPreviewTimeout.start()}scanningBehaviorButtonTapped(e,t=!0){if(t){let t=e?`warning`:`info`,n=e?this._continuousModeEnabledMessage:this._continuousModeDisabledMessage;this.miniPreview.showToast(t,n,1e3)}this.miniPreview.toolbar&&(this.miniPreview.toolbar[y]=e?`continuous`:`single`),this.miniPreviewTimeout.running&&this.miniPreviewTimeout.start()}torchButtonTapped(e,t=!0){if(t){let t=e?`warning`:`info`,n=e?this._torchEnabledMessage:this._torchDisabledMessage;this.miniPreview.showToast(t,n,1e3)}this.miniPreview.toolbar&&(this.miniPreview[T]=e),this.miniPreviewTimeout.running&&this.miniPreviewTimeout.start()}cameraSwitchButtonTapped(e,t){var n;this.torchControlVisible=e,(n=this.miniPreview.toolbar)==null||n.enableCameraSwitchButton(t===P.UserFacing)}getDefaultCssVariableValue(e){return window.getComputedStyle(this).getPropertyValue(e)}setTriggerButtonPressedColor(e,t,n){let r=this[e]??F.fromHex(this.getDefaultCssVariableValue(t)),i=H(r.alpha+r.alpha*.25,r.alpha,255),a=r.withAlpha(i);this.style.setProperty(n,`#${a.toJSON()}`)}addMiniPreviewListeners(){for(let[e,t]of this.miniPreviewListeners)this.miniPreview.addEventListener(e,t)}removeMiniPreviewListeners(){for(let[e,t]of this.miniPreviewListeners)this.miniPreview.removeEventListener(e,t)}addTriggerButtonListeners(){for(let[e,t]of this.triggerButtonListeners)this.triggerButton.addEventListener(e,t)}removeTriggerButtonListeners(){for(let[e,t]of this.triggerButtonListeners)this.triggerButton.removeEventListener(e,t)}repositionElementsIfOutOfBounds(){this.triggerButton.repositionIfOutOfBounds(),this.miniPreview.repositionIfOutOfBounds()}repositionMiniPreviewIfOutOfBounds(){this.miniPreview.repositionIfOutOfBounds()}repositionTriggerButtonIfOutOfBounds(){this.triggerButton.repositionIfOutOfBounds()}};export{G as SparkScanView};