@signosoft/signpad-js 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -1220,7 +1220,7 @@ class UB {
|
|
|
1220
1220
|
this.configEventHandlers = {};
|
|
1221
1221
|
}
|
|
1222
1222
|
}
|
|
1223
|
-
const LB = ":host{--primary-color-0: #4e56ea;--primary-color-10: #7178ee;--background-color-0: #f1f2fd;--background-color-10: #e3e4fc;--text-color-0: #333e4a;--white-color: #ffffff;--grey-color: #b5b9be;--min-height: 48px;--spacing-constraints: 16px 24px;--sign-font-family: Arial, Helvetica, sans-serif;--sign-top-bar-bg-base: var(--background-color-10);--sign-top-bar-text-base: var(--primary-color-0);--sign-top-bar-padding: var(--spacing-constraints);--sign-top-bar-min-height: var(--min-height);--sign-canvas-bg-base: var(--background-color-0);--sign-line-height: 22px;--sign-line-margin-bottom: 16px;--sign-line-border-base: var(--primary-color-10);--sign-line-additional-text-color: var(--text-color-0);--sign-line-margin: 0px 24px var(--sign-line-margin-bottom) 24px;--sign-canvas-line-text-font-size: 12px;--sign-canvas-height-offset: var(--sign-line-height);--sign-bottom-bar-bg-base: var(--background-color-10);--sign-bottom-bar-padding: var(--spacing-constraints);--sign-bottom-bar-min-height: var(--min-height);--sign-bottom-bar-gap: 12px;--sign-button-font-size: 16px;--sign-button-padding: 14px 16px;--sign-button-min-height: var(--min-height);--sign-button-border-radius:
|
|
1223
|
+
const LB = ":host{--primary-color-0: #4e56ea;--primary-color-10: #7178ee;--background-color-0: #f1f2fd;--background-color-10: #e3e4fc;--text-color-0: #333e4a;--white-color: #ffffff;--grey-color: #b5b9be;--min-height: 48px;--spacing-constraints: 16px 24px;--sign-font-family: Arial, Helvetica, sans-serif;--sign-common-border-radius: 8px;--sign-top-bar-bg-base: var(--background-color-10);--sign-top-bar-text-base: var(--primary-color-0);--sign-top-bar-padding: var(--spacing-constraints);--sign-top-bar-min-height: var(--min-height);--sign-top-bar-border-top-left-radius: var(--sign-common-border-radius);--sign-top-bar-border-top-right-radius: var(--sign-common-border-radius);--sign-top-bar-border-bottom-left-radius: 0;--sign-top-bar-border-bottom-right-radius: 0;--sign-canvas-bg-base: var(--background-color-0);--sign-canvas-wrapper-border-top-left-radius: 0;--sign-canvas-wrapper-border-top-right-radius: 0;--sign-canvas-wrapper-border-bottom-left-radius: 0;--sign-canvas-wrapper-border-bottom-right-radius: 0;--sign-line-height: 22px;--sign-line-margin-bottom: 16px;--sign-line-border-base: var(--primary-color-10);--sign-line-additional-text-color: var(--text-color-0);--sign-line-margin: 0px 24px var(--sign-line-margin-bottom) 24px;--sign-canvas-line-text-font-size: 12px;--sign-canvas-height-offset: var(--sign-line-height);--sign-bottom-bar-bg-base: var(--background-color-10);--sign-bottom-bar-padding: var(--spacing-constraints);--sign-bottom-bar-min-height: var(--min-height);--sign-bottom-bar-gap: 12px;--sign-bottom-bar-border-top-left-radius: 0;--sign-bottom-bar-border-top-right-radius: 0;--sign-bottom-bar-border-bottom-left-radius: var(--sign-common-border-radius);--sign-bottom-bar-border-bottom-right-radius: var( --sign-common-border-radius );--sign-button-font-size: 16px;--sign-button-padding: 14px 16px;--sign-button-min-height: var(--min-height);--sign-button-border-radius: var(--sign-common-border-radius);--sign-button-font-weight: 500;--sign-button-primary-bg-base: var(--primary-color-0);--sign-button-primary-bg-hover: var(--primary-color-10);--sign-button-primary-bg-disabled: var(--grey-color);--sign-button-primary-text-base: var(--white-color);--sign-button-primary-text-hover: var(--white-color);--sign-button-primary-text-disabled: var(--white-color);--sign-button-primary-border-base: 1px solid var(--primary-color-0);--sign-button-primary-border-hover: 1px solid var(--primary-color-10);--sign-button-primary-border-disabled: 1px solid var(--grey-color);--sign-button-link-bg-base: transparent;--sign-button-link-bg-hover: var(--background-color-10);--sign-button-link-bg-disabled: transparent;--sign-button-link-text-base: var(--primary-color-0);--sign-button-link-text-hover: var(--primary-color-10);--sign-button-link-text-disabled: var(--grey-color);--sign-button-link-border-base: 1px solid var(--primary-color-0);--sign-button-link-border-hover: 1px solid var(--primary-color-10);--sign-button-link-border-disabled: 1px solid var(--grey-color);--sign-device-state-text-color-connected: green;--sign-device-state-text-color-disconnected: red;--sign-loading-overlay-bg-color: rgba(255, 255, 255, .8);--sign-loading-overlay-text-color: var(--text-color-0);--sign-loading-overlay-spinner-color: var(--primary-color-0);--sign-loading-overlay-spinner-border-color: rgba(78, 86, 234, .1);--sign-loading-overlay-spinner-size: 30px}html{font-family:var(--sign-font-family)!important}.signpad-canvas-container{display:flex;flex-direction:column;width:100%;height:100%;min-width:380px}.signpad-top-bar{display:flex;justify-content:space-between;padding:var(--sign-top-bar-padding);min-height:var(--sign-top-bar-min-height);background-color:var(--sign-top-bar-bg-base);color:var(--sign-top-bar-text-base);align-items:center;border-top-left-radius:var(--sign-top-bar-border-top-left-radius);border-top-right-radius:var(--sign-top-bar-border-top-right-radius);border-bottom-left-radius:var(--sign-top-bar-border-bottom-left-radius);border-bottom-right-radius:var(--sign-top-bar-border-bottom-right-radius)}.signpad-top-left-actions,.signpad-top-right-actions{display:flex;gap:var(--sign-bottom-bar-gap)}.signpad-top-left-actions{justify-content:flex-start}.signpad-top-right-actions{justify-content:flex-end}.signpad-canvas-wrapper{position:relative;width:100%;padding-top:16px;padding-bottom:56.25%;height:0;background-color:var(--sign-canvas-bg-base);box-sizing:border-box;overflow:hidden;border-top-left-radius:var(--sign-canvas-wrapper-border-top-left-radius);border-top-right-radius:var(--sign-canvas-wrapper-border-top-right-radius);border-bottom-left-radius:var( --sign-canvas-wrapper-border-bottom-left-radius );border-bottom-right-radius:var( --sign-canvas-wrapper-border-bottom-right-radius )}.signpad-canvas-container>.signpad-canvas-wrapper:first-child{--sign-canvas-wrapper-border-top-left-radius: var( --sign-common-border-radius );--sign-canvas-wrapper-border-top-right-radius: var( --sign-common-border-radius )}.signpad-canvas-container>.signpad-canvas-wrapper:last-child{--sign-canvas-wrapper-border-bottom-left-radius: var( --sign-common-border-radius );--sign-canvas-wrapper-border-bottom-right-radius: var( --sign-common-border-radius )}.signpad-canvas{position:absolute;width:100%;height:calc(100% - (var(--sign-canvas-height-offset) + var(--sign-line-margin-bottom)));left:0;top:0}.signpad-canvas-line-container{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;height:var(--sign-line-height);border-top:2px solid var(--sign-line-border-base);box-sizing:border-box;padding-top:6px;margin:var(--sign-line-margin)}.signpad-canvas-line-additional-text,.signpad-canvas-line-state,.signpad-canvas-line-state.connected{font-family:var(--sign-font-family);font-size:var(--sign-canvas-line-text-font-size)}.signpad-canvas-line-additional-text{color:var(--sign-line-additional-text-color);margin:0}.signpad-canvas-line-state{color:var(--sign-device-state-text-color-disconnected);margin:0}.signpad-canvas-line-state.connected{color:var(--sign-device-state-text-color-connected)}.signpad-bottom-bar{display:flex;flex-direction:row;gap:var(--sign-bottom-bar-gap);padding:var(--sign-bottom-bar-padding);min-height:var(--sign-bottom-bar-min-height);background-color:var(--sign-bottom-bar-bg-base);border-top-left-radius:var(--sign-bottom-bar-border-top-left-radius);border-top-right-radius:var(--sign-bottom-bar-border-top-right-radius);border-bottom-left-radius:var(--sign-bottom-bar-border-bottom-left-radius);border-bottom-right-radius:var(--sign-bottom-bar-border-bottom-right-radius)}.btn{font-family:var(--sign-font-family);min-height:var(--sign-button-min-height);padding:var(--sign-button-padding);margin:0;font-weight:var(--sign-button-font-weight);width:100%;font-size:var(--sign-button-font-size);border-radius:var(--sign-button-border-radius);transition:background-color .3s ease,color .3s ease,transform .1s ease}.btn:hover:not(:disabled){cursor:pointer}.btn:focus:not(:disabled){outline:none}.btn-primary{background-color:var(--sign-button-primary-bg-base);color:var(--sign-button-primary-text-base);border:var(--sign-button-primary-border-base)}.btn-primary:hover:not(:disabled){background-color:var(--sign-button-primary-bg-hover);color:var(--sign-button-primary-text-hover);border:var(--sign-button-primary-border-hover)}.btn-primary:disabled{background-color:var(--sign-button-primary-bg-disabled);color:var(--sign-button-primary-text-disabled);border:var(--sign-button-primary-border-disabled)}.btn-link{background-color:var(--sign-button-link-bg-base);color:var(--sign-button-link-text-base);border:var(--sign-button-link-border-base)}.btn-link:hover:not(:disabled){background-color:var(--sign-button-link-bg-hover);color:var(--sign-button-link-text-hover);border:var(--sign-button-link-border-hover)}.btn-link:disabled{background-color:var(--sign-button-link-bg-disabled);color:var(--sign-button-link-text-disabled);border:var(--sign-button-link-border-disabled)}.signpad-loading-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--sign-loading-overlay-bg-color);display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:10;text-align:center;gap:10px}.signpad-loading-overlay .spinner{border:4px solid var(--sign-loading-overlay-spinner-border-color);border-left-color:var(--sign-loading-overlay-spinner-color);border-radius:50%;width:var(--sign-loading-overlay-spinner-size);height:var(--sign-loading-overlay-spinner-size);animation:spin 1s linear infinite}.signpad-loading-overlay-text{font-family:var(--sign-font-family);color:var(--sign-loading-overlay-text-color);font-size:14px;margin:16px 0 0}@keyframes spin{to{transform:rotate(360deg)}}";
|
|
1224
1224
|
let XI = class {
|
|
1225
1225
|
constructor() {
|
|
1226
1226
|
this._device = null, this._isWasmInitialized = !1, this._module = null, this._disconnectHandler = null, this._eventCallbacks = /* @__PURE__ */ new Map(), this._callbackToHandle = /* @__PURE__ */ new Map(), this._masterCallback = null, this._penAspectCorrector = null, this._unexpectedDisconnectCallbacks = /* @__PURE__ */ new Set();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(q,U){typeof exports=="object"&&typeof module<"u"?U(exports,require("lit")):typeof define=="function"&&define.amd?define(["exports","lit"],U):(q=typeof globalThis<"u"?globalThis:q||self,U(q.SignosoftSignpad={},q.lit))})(this,(function(q,U){"use strict";const Dg=Q=>(A,I)=>{I!==void 0?I.addInitializer(()=>{customElements.define(Q,A)}):customElements.define(Q,A)};const FA=globalThis,XA=FA.ShadowRoot&&(FA.ShadyCSS===void 0||FA.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,wI=Symbol(),SI=new WeakMap;let wg=class{constructor(A,I,g){if(this._$cssResult$=!0,g!==wI)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=A,this.t=I}get styleSheet(){let A=this.o;const I=this.t;if(XA&&A===void 0){const g=I!==void 0&&I.length===1;g&&(A=SI.get(I)),A===void 0&&((this.o=A=new CSSStyleSheet).replaceSync(this.cssText),g&&SI.set(I,A))}return A}toString(){return this.cssText}};const Sg=Q=>new wg(typeof Q=="string"?Q:Q+"",void 0,wI),sg=(Q,A)=>{if(XA)Q.adoptedStyleSheets=A.map(I=>I instanceof CSSStyleSheet?I:I.styleSheet);else for(const I of A){const g=document.createElement("style"),E=FA.litNonce;E!==void 0&&g.setAttribute("nonce",E),g.textContent=I.cssText,Q.appendChild(g)}},sI=XA?Q=>Q:Q=>Q instanceof CSSStyleSheet?(A=>{let I="";for(const g of A.cssRules)I+=g.cssText;return Sg(I)})(Q):Q;const{is:ag,defineProperty:Kg,getOwnPropertyDescriptor:yg,getOwnPropertyNames:hg,getOwnPropertySymbols:Mg,getPrototypeOf:Gg}=Object,JA=globalThis,aI=JA.trustedTypes,Rg=aI?aI.emptyScript:"",Ng=JA.reactiveElementPolyfillSupport,sA=(Q,A)=>Q,UA={toAttribute(Q,A){switch(A){case Boolean:Q=Q?Rg:null;break;case Object:case Array:Q=Q==null?Q:JSON.stringify(Q)}return Q},fromAttribute(Q,A){let I=Q;switch(A){case Boolean:I=Q!==null;break;case Number:I=Q===null?null:Number(Q);break;case Object:case Array:try{I=JSON.parse(Q)}catch{I=null}}return I}},PA=(Q,A)=>!ag(Q,A),KI={attribute:!0,type:String,converter:UA,reflect:!1,useDefault:!1,hasChanged:PA};Symbol.metadata??=Symbol("metadata"),JA.litPropertyMetadata??=new WeakMap;class aA extends HTMLElement{static addInitializer(A){this._$Ei(),(this.l??=[]).push(A)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(A,I=KI){if(I.state&&(I.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(A)&&((I=Object.create(I)).wrapped=!0),this.elementProperties.set(A,I),!I.noAccessor){const g=Symbol(),E=this.getPropertyDescriptor(A,g,I);E!==void 0&&Kg(this.prototype,A,E)}}static getPropertyDescriptor(A,I,g){const{get:E,set:D}=yg(this.prototype,A)??{get(){return this[I]},set(S){this[I]=S}};return{get:E,set(S){const a=E?.call(this);D?.call(this,S),this.requestUpdate(A,a,g)},configurable:!0,enumerable:!0}}static getPropertyOptions(A){return this.elementProperties.get(A)??KI}static _$Ei(){if(this.hasOwnProperty(sA("elementProperties")))return;const A=Gg(this);A.finalize(),A.l!==void 0&&(this.l=[...A.l]),this.elementProperties=new Map(A.elementProperties)}static finalize(){if(this.hasOwnProperty(sA("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(sA("properties"))){const I=this.properties,g=[...hg(I),...Mg(I)];for(const E of g)this.createProperty(E,I[E])}const A=this[Symbol.metadata];if(A!==null){const I=litPropertyMetadata.get(A);if(I!==void 0)for(const[g,E]of I)this.elementProperties.set(g,E)}this._$Eh=new Map;for(const[I,g]of this.elementProperties){const E=this._$Eu(I,g);E!==void 0&&this._$Eh.set(E,I)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(A){const I=[];if(Array.isArray(A)){const g=new Set(A.flat(1/0).reverse());for(const E of g)I.unshift(sI(E))}else A!==void 0&&I.push(sI(A));return I}static _$Eu(A,I){const g=I.attribute;return g===!1?void 0:typeof g=="string"?g:typeof A=="string"?A.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(A=>this.enableUpdating=A),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(A=>A(this))}addController(A){(this._$EO??=new Set).add(A),this.renderRoot!==void 0&&this.isConnected&&A.hostConnected?.()}removeController(A){this._$EO?.delete(A)}_$E_(){const A=new Map,I=this.constructor.elementProperties;for(const g of I.keys())this.hasOwnProperty(g)&&(A.set(g,this[g]),delete this[g]);A.size>0&&(this._$Ep=A)}createRenderRoot(){const A=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return sg(A,this.constructor.elementStyles),A}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(A=>A.hostConnected?.())}enableUpdating(A){}disconnectedCallback(){this._$EO?.forEach(A=>A.hostDisconnected?.())}attributeChangedCallback(A,I,g){this._$AK(A,g)}_$ET(A,I){const g=this.constructor.elementProperties.get(A),E=this.constructor._$Eu(A,g);if(E!==void 0&&g.reflect===!0){const D=(g.converter?.toAttribute!==void 0?g.converter:UA).toAttribute(I,g.type);this._$Em=A,D==null?this.removeAttribute(E):this.setAttribute(E,D),this._$Em=null}}_$AK(A,I){const g=this.constructor,E=g._$Eh.get(A);if(E!==void 0&&this._$Em!==E){const D=g.getPropertyOptions(E),S=typeof D.converter=="function"?{fromAttribute:D.converter}:D.converter?.fromAttribute!==void 0?D.converter:UA;this._$Em=E;const a=S.fromAttribute(I,D.type);this[E]=a??this._$Ej?.get(E)??a,this._$Em=null}}requestUpdate(A,I,g,E=!1,D){if(A!==void 0){const S=this.constructor;if(E===!1&&(D=this[A]),g??=S.getPropertyOptions(A),!((g.hasChanged??PA)(D,I)||g.useDefault&&g.reflect&&D===this._$Ej?.get(A)&&!this.hasAttribute(S._$Eu(A,g))))return;this.C(A,I,g)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(A,I,{useDefault:g,reflect:E,wrapped:D},S){g&&!(this._$Ej??=new Map).has(A)&&(this._$Ej.set(A,S??I??this[A]),D!==!0||S!==void 0)||(this._$AL.has(A)||(this.hasUpdated||g||(I=void 0),this._$AL.set(A,I)),E===!0&&this._$Em!==A&&(this._$Eq??=new Set).add(A))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(I){Promise.reject(I)}const A=this.scheduleUpdate();return A!=null&&await A,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[E,D]of this._$Ep)this[E]=D;this._$Ep=void 0}const g=this.constructor.elementProperties;if(g.size>0)for(const[E,D]of g){const{wrapped:S}=D,a=this[E];S!==!0||this._$AL.has(E)||a===void 0||this.C(E,void 0,D,a)}}let A=!1;const I=this._$AL;try{A=this.shouldUpdate(I),A?(this.willUpdate(I),this._$EO?.forEach(g=>g.hostUpdate?.()),this.update(I)):this._$EM()}catch(g){throw A=!1,this._$EM(),g}A&&this._$AE(I)}willUpdate(A){}_$AE(A){this._$EO?.forEach(I=>I.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(A)),this.updated(A)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(A){return!0}update(A){this._$Eq&&=this._$Eq.forEach(I=>this._$ET(I,this[I])),this._$EM()}updated(A){}firstUpdated(A){}}aA.elementStyles=[],aA.shadowRootOptions={mode:"open"},aA[sA("elementProperties")]=new Map,aA[sA("finalized")]=new Map,Ng?.({ReactiveElement:aA}),(JA.reactiveElementVersions??=[]).push("2.1.2");const kg={attribute:!0,type:String,converter:UA,reflect:!1,hasChanged:PA},tg=(Q=kg,A,I)=>{const{kind:g,metadata:E}=I;let D=globalThis.litPropertyMetadata.get(E);if(D===void 0&&globalThis.litPropertyMetadata.set(E,D=new Map),g==="setter"&&((Q=Object.create(Q)).wrapped=!0),D.set(I.name,Q),g==="accessor"){const{name:S}=I;return{set(a){const h=A.get.call(this);A.set.call(this,a),this.requestUpdate(S,h,Q,!0,a)},init(a){return a!==void 0&&this.C(S,void 0,Q,a),a}}}if(g==="setter"){const{name:S}=I;return function(a){const h=this[S];A.call(this,a),this.requestUpdate(S,h,Q,!0,a)}}throw Error("Unsupported decorator location: "+g)};function Fg(Q){return(A,I)=>typeof I=="object"?tg(Q,A,I):((g,E,D)=>{const S=E.hasOwnProperty(D);return E.constructor.createProperty(D,g),S?Object.getOwnPropertyDescriptor(E,D):void 0})(Q,A,I)}const Jg=(Q,A,I)=>(I.configurable=!0,I.enumerable=!0,Reflect.decorate&&typeof A!="object"&&Object.defineProperty(Q,A,I),I);function Ug(Q,A){return(I,g,E)=>{const D=S=>S.renderRoot?.querySelector(Q)??null;return Jg(I,g,{get(){return D(this)}})}}var R=(Q=>(Q.INITIAL="initial",Q.DISCONNECTED="disconnected",Q.FINISHED="finished",Q.CONNECTING="connecting",Q.WAITING_FOR_DEVICE_SELECTION="waiting_for_device_selection",Q.CONNECTED_PHYSICAL="connected_physical",Q.CONNECTED_MOUSE_FALLBACK="connected_mouse_fallback",Q.SIGNING_ACTIVE="signing_active",Q.PROCESSING_OK="processing_ok",Q.PROCESSING_CLEAR="processing_clear",Q.PROCESSING_CANCEL="processing_cancel",Q.DISCONNECTING="disconnecting",Q.ERROR="error",Q))(R||{}),Y=(Q=>(Q.SIGN_PEN="sign-pen",Q.SIGN_OK="sign-ok",Q.SIGN_CLEAR="sign-clear",Q.SIGN_CANCEL="sign-cancel",Q.SIGN_ERROR="sign-error",Q.SIGN_CONNECT="sign-connect",Q.SIGN_DISCONNECT="sign-disconnect",Q))(Y||{}),yI=(Q=>(Q.OK="OK",Q.CLEAR="CLEAR",Q.CANCEL="CANCEL",Q.CLEAR_SIGNATURE="CLEAR_SIGNATURE",Q.DISCONNECT="DISCONNECT",Q.CONNECT_SIGNPAD="CONNECT_SIGNPAD",Q))(yI||{}),L=(Q=>(Q.AUTO_CONNECTING="AUTO_CONNECTING",Q.CONNECTING_TO_DEVICE="CONNECTING_TO_DEVICE",Q.DISCONNECTING_DEVICE="DISCONNECTING_DEVICE",Q.COMPONENT_INITIALIZED="COMPONENT_INITIALIZED",Q.TEXT_START_SIGNING="TEXT_START_SIGNING",Q.TEXT_SIGN_WITH_PHYSICAL="TEXT_SIGN_WITH_PHYSICAL",Q.TEXT_SIGN_WITH_MOUSE="TEXT_SIGN_WITH_MOUSE",Q.TEXT_SIGN_GENERIC="TEXT_SIGN_GENERIC",Q.TEXT_SIGNING_WITH_DEVICE="TEXT_SIGNING_WITH_DEVICE",Q.NO_DEVICE_FOUND="NO_DEVICE_FOUND",Q.CONNECTION_ERROR="CONNECTION_ERROR",Q.ERROR_DISCONNECTION="ERROR_DISCONNECTION",Q.ERROR_INSTANTIATING_DRIVER="ERROR_INSTANTIATING_DRIVER",Q.SIGNPAD_DISCONNECTED="SIGNPAD_DISCONNECTED",Q.DEVICE_UNEXPECTEDLY_DISCONNECTED="DEVICE_UNEXPECTEDLY_DISCONNECTED",Q.SIGN_SUCCESSFUL="SIGN_SUCCESSFUL",Q.SIGN_CANCELLED="SIGN_CANCELLED",Q.SIGN_CLEARED="SIGN_CLEARED",Q.MISSING_LICENSE_KEY="MISSING_LICENSE_KEY",Q.READY_TO_CONNECT="READY_TO_CONNECT",Q.SIGNPAD_DETECTED="SIGNPAD_DETECTED",Q.NO_LICENSE_KEY="NO_LICENSE_KEY",Q))(L||{}),X=(Q=>(Q.NOT_CONNECTED="NOT_CONNECTED",Q.CONNECTED="CONNECTED",Q.CONNECTING="CONNECTING",Q.MOUSE="MOUSE",Q.CONNECTED_UNKNOWN="CONNECTED_UNKNOWN_DEVICE",Q))(X||{});class Lg{constructor(A){this.component=A}async handleClear(){await this.executeAction(R.PROCESSING_CLEAR,async()=>{await this.component.connectionManager.clearSignature(),await this.component.config.actionHandlers?.handleClear?.(),this.component.dispatch(Y.SIGN_CLEAR)})}async handleOk(){return await this.executeAction(R.PROCESSING_OK,async()=>{const A=await this.component.connectionManager.stopSigning();return await this.component.config.actionHandlers?.handleOk?.(A),this.component.dispatch(Y.SIGN_OK,A),A})}async handleCancel(){await this.executeAction(R.PROCESSING_CANCEL,async()=>{await this.component.config.actionHandlers?.handleCancel?.(),this.component.dispatch(Y.SIGN_CANCEL)})}async startSigning(A){const I=this.component.connectionManager,g=this.component.canvasRef;if(!I.hasSignatureLayer()||!g){this.handleStartSigningError();return}this.component.stateManager.transitionTo(R.CONNECTING,"Preparing session...");try{this.component.resetDrawingState(),await I.startSigning(g,A);const E=await this.getReadyState(),D=E===R.CONNECTED_MOUSE_FALLBACK?"READY_TO_SIGN_MOUSE":"READY_TO_SIGN_PHYSICAL";this.component.stateManager.transitionTo(E,D)}catch(E){this.handleError("Error starting signing session",E)}}async stopSigning(){return this.component.connectionManager.stopSigning()}async executeAction(A,I){this.component.stateManager.transitionTo(A,"Processing...");try{const g=await I();return this.component.resetDrawingState(),await this.finalizePostAction(),g}catch(g){throw this.handleError("Error during action processing",g),g}}async getReadyState(){const A=this.component.connectionManager.isDeviceConnected(),I=await this.component.connectionManager.getDeviceInfo();return this.component.connectionManager.isFallback(I,A,!0)?R.CONNECTED_MOUSE_FALLBACK:R.CONNECTED_PHYSICAL}async finalizePostAction(){const A=await this.getReadyState();this.component.config.autoconnectOptions?.autoRestartSigningAfterAction?await this.startSigning():this.component.stateManager.transitionTo(A,"Ready.")}handleStartSigningError(){this.component.currentState===R.CONNECTED_MOUSE_FALLBACK&&(this.component.resetDrawingState(),this.component.mouseManager?.addListeners(),this.component.stateManager.transitionTo(R.CONNECTED_MOUSE_FALLBACK))}handleError(A,I){console.error(`Signosoft Signpad: ${A}`,I),this.component.stateManager.transitionTo(R.ERROR,A,I)}}class cg{constructor(A,I={minWidth:1,maxWidth:3,color:"#000000"}){this.lastDrawPoint=null,this.canvas=A;const g=A.getContext("2d");if(!g)throw new Error("Could not get 2D rendering context for canvas.");this.ctx=g,this.currentDrawingOptions=I,this.configureCanvasForDPI(),this.applyDrawingStyles(this.currentDrawingOptions)}get drawingOptions(){return{...this.currentDrawingOptions}}updateDrawingOptions(A){this.currentDrawingOptions=A,this.applyDrawingStyles(this.currentDrawingOptions)}drawSegment(A){const I=this.ctx,g=this.canvas,E=this.currentDrawingOptions,D=A.relativeX??0,S=A.relativeY??0,a=D*g.width,h=S*g.height,F=this.drawingOptions.minWidth+(this.drawingOptions.maxWidth-this.drawingOptions.minWidth)*(A.pressure??0);I.strokeStyle=E.color??"#000000",I.lineWidth=F,A.inContact?this.lastDrawPoint?(I.beginPath(),I.moveTo(this.lastDrawPoint.x,this.lastDrawPoint.y),I.lineTo(a,h),I.stroke(),this.lastDrawPoint={x:a,y:h}):this.lastDrawPoint={x:a,y:h}:this.lastDrawPoint=null}clear(){this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height),this.lastDrawPoint=null}configureCanvasForDPI(){const A=window.devicePixelRatio||1,I=this.canvas.getBoundingClientRect(),g=I.width||this.canvas.clientWidth||0,E=I.height||this.canvas.clientHeight||0;if(g<=0||E<=0)return;const D=Math.round(g*A),S=Math.round(E*A);this.canvas.width===D&&this.canvas.height===S||(this.canvas.width=D,this.canvas.height=S)}applyDrawingStyles(A){this.ctx.strokeStyle=A.color??"#000000",this.ctx.lineCap="round",this.ctx.lineJoin="round",this.ctx.globalCompositeOperation="source-over"}}class Yg{constructor(A){this.sigLayer=null,this.debugCallbackRegistrationCount=0,this.cachedDeviceInfo=null,this.lastPenDispatchTime=0,this.penDataToDispatch=null,this.throttleDelayMs=16,this.component=A}async connect(A=!1,I=!1){this.component.stateManager.transitionTo(R.CONNECTING,A?L.AUTO_CONNECTING:L.CONNECTING_TO_DEVICE);try{const g=await this.sigLayer?.connect(A),E=this.sigLayer?.isConnected()??!1,D=!!(g&&E),S=D?this.normalizeDeviceInfo(await this.sigLayer?.getDeviceInfo()):null;this.cachedDeviceInfo=S??null;const a=D&&(S?.deviceName??S?.name??null)==="Pointer Input (Fallback Mode)",h=this.component.canvasRef;let F,l;if(D&&!a){const f=S?.deviceName??S?.name??X.CONNECTED_UNKNOWN;this.component.setDeviceStatusText(f),F=R.CONNECTED_PHYSICAL,l=L.TEXT_SIGN_WITH_PHYSICAL,this.component.mouseManager?.areListenersAttached()&&this.component.mouseManager?.removeListeners()}else if(D&&a||!D&&I)this.component.setDeviceStatusText(X.MOUSE),F=R.CONNECTED_MOUSE_FALLBACK,l=L.TEXT_SIGN_WITH_MOUSE;else return this.component.stateManager.transitionTo(R.DISCONNECTED,L.NO_DEVICE_FOUND),!1;const p=this.component.configManager.getDrawingOptions();return this.sigLayer?.isInSigningMode?.()&&await this.sigLayer.stopSigning(),await this.sigLayer?.startSigning(h,!0,p),this.component.stateManager.transitionTo(F,l),this.component.dispatch(Y.SIGN_CONNECT,{deviceInfo:S}),!0}catch(g){return console.error("Signosoft Signpad: Error in connect method:",g),this.component.stateManager.transitionTo(R.ERROR,L.CONNECTION_ERROR,g),!1}}async disconnect(){this.component.stateManager.transitionTo(R.DISCONNECTING,L.DISCONNECTING_DEVICE);try{await this.sigLayer?.disconnect(),this.sigLayer=null,this.cachedDeviceInfo=null}catch(A){console.error("Signosoft Signpad: Error during disconnect",A),this.component.stateManager.transitionTo(R.ERROR,L.ERROR_DISCONNECTION,A)}}hasSignatureLayer(){return this.sigLayer!==null}async getDeviceInfo(){if(this.cachedDeviceInfo)return this.cachedDeviceInfo;const A=this.normalizeDeviceInfo(await this.sigLayer?.getDeviceInfo());return this.cachedDeviceInfo=A??null,A}isDeviceConnected(){return this.sigLayer?.isConnected()??!1}isSigningActive(){return this.sigLayer?.isInSigningMode?.()??!1}async startSigning(A,I){if(!this.sigLayer)return!1;const g=I??this.component.configManager.getDrawingOptions();return await this.sigLayer.startSigning(A,!0,g),!0}async stopSigning(){try{if(this.sigLayer)return await this.sigLayer.stopSigning()}catch(A){console.warn("Signosoft Signpad: SigLayer stop failed, continuing cleanup",A)}finally{this.component.mouseManager?.removeListeners(),this.component.resetDrawingState(),console.log("[ConnectionManager] Signing stopped and mouse listeners removed.")}}async clearSignature(){this.sigLayer?.isInSigningMode&&await this.sigLayer.clearSignature()}async ensureSignatureLayer(){if(!this.sigLayer)try{this.sigLayer=new SignatureLayer,this.setupCallbacks()}catch(A){throw console.error("Signosoft Signpad: Error instantiating driver",A),this.component.stateManager.transitionTo(R.ERROR,L.ERROR_INSTANTIATING_DRIVER,A),A}}setupCallbacks(){this.sigLayer&&(this.debugCallbackRegistrationCount+=1,console.log(`[Signpad Debug] SignatureLayer callbacks registered (${this.debugCallbackRegistrationCount})`),this.sigLayer.onOK(()=>this.component.buttonManager.handleOk()),this.sigLayer.onClear(()=>this.component.buttonManager.handleClear()),this.sigLayer.onCancel(()=>this.component.buttonManager.handleCancel()),this.sigLayer.onPen(A=>{A.inContact&&!this.component.hasStartedDrawing&&this.component.stateManager.setDrawingStarted(!0),this.runThrottledPenDispatch(A)}),this.sigLayer.onUnexpectedDisconnect(()=>{const A=this.component.currentState;A!==R.DISCONNECTING&&A!==R.INITIAL&&A!==R.DISCONNECTED&&A!==R.ERROR&&(this.component.stateManager.transitionTo(R.DISCONNECTED,L.DEVICE_UNEXPECTEDLY_DISCONNECTED),this.component.dispatch(Y.SIGN_DISCONNECT))}))}runThrottledPenDispatch(A){if(this.component.stateManager.isBusy||this.component.stateManager.isError)return;this.penDataToDispatch=A;const I=performance.now();I-this.lastPenDispatchTime>this.throttleDelayMs&&(this.component.dispatch(Y.SIGN_PEN,this.penDataToDispatch),this.lastPenDispatchTime=I,this.penDataToDispatch=null)}async initWithLease(A){await this.ensureSignatureLayer(),this.sigLayer&&await this.sigLayer.initialize(A)}isFallback(A,I,g){const D=(A?.deviceName??A?.name??null)==="Pointer Input (Fallback Mode)",S=this.component.currentState===R.CONNECTED_MOUSE_FALLBACK,a=this.component.deviceStatusText===X.MOUSE;return D||S||a||g&&!I}normalizeDeviceInfo(A){return A?!A.deviceName&&A.name?{...A,deviceName:A.name}:A:null}}class eg{constructor(A){this.component=A}get deviceStatusKey(){return this.component.currentState===R.CONNECTED_MOUSE_FALLBACK?X.MOUSE:this.isConnected?this.component.deviceStatusText||X.CONNECTED_UNKNOWN:X.NOT_CONNECTED}get statusMessageKey(){return this.component.statusMessage||""}get additionalTextKey(){const A=R,I=L;switch(this.component.currentState){case A.INITIAL:case A.DISCONNECTED:case A.ERROR:return I.TEXT_START_SIGNING;case A.CONNECTED_PHYSICAL:return I.TEXT_SIGN_WITH_PHYSICAL;case A.CONNECTED_MOUSE_FALLBACK:return I.TEXT_SIGN_WITH_MOUSE;case A.SIGNING_ACTIVE:return I.TEXT_SIGNING_WITH_DEVICE;default:return I.TEXT_SIGN_GENERIC}}get isConnected(){const A=this.component.currentState;return A===R.CONNECTED_PHYSICAL||A===R.CONNECTED_MOUSE_FALLBACK||A===R.SIGNING_ACTIVE||A===R.PROCESSING_OK||A===R.PROCESSING_CLEAR||A===R.PROCESSING_CANCEL}get isBusy(){const A=this.component.currentState;return A===R.CONNECTING||A===R.WAITING_FOR_DEVICE_SELECTION||A===R.PROCESSING_OK||A===R.PROCESSING_CLEAR||A===R.PROCESSING_CANCEL||A===R.DISCONNECTING}get isError(){return this.component.currentState===R.ERROR}get actionButtonsDisabled(){return!this.isConnected||!this.component.hasStartedDrawing||this.isBusy}get connectButtonDisabled(){return this.isBusy||this.isConnected}get disconnectButtonDisabled(){const A=this.component.currentState;return A===R.DISCONNECTED||A===R.INITIAL||this.isBusy}transitionTo(A,I="",g){const E=this.component.currentState;E===A&&this.component.statusMessage===I&&!g||(this.component.setCurrentState(A),this.component.setStatusMessage(I),this.handleSideEffects(A,E),g&&this.component.dispatch(Y.SIGN_ERROR,g))}setDrawingStarted(A){this.component.hasStartedDrawing!==A&&this.component.setHasStartedDrawing(A)}handleSideEffects(A,I){const g=E=>E===R.INITIAL||E===R.DISCONNECTED||E===R.ERROR;g(A)?(this.component.setDeviceStatusText(X.NOT_CONNECTED),g(I)||(this.component.resetDrawingState(),this.component.mouseManager?.removeListeners())):(A===R.CONNECTED_PHYSICAL||A===R.CONNECTED_MOUSE_FALLBACK)&&(A===R.CONNECTED_MOUSE_FALLBACK?I===R.PROCESSING_OK||I===R.PROCESSING_CLEAR||I===R.PROCESSING_CANCEL||this.component.mouseManager?.addListeners():I===R.CONNECTED_MOUSE_FALLBACK&&this.component.mouseManager?.removeListeners())}}class ng{constructor(A,I){this.isDrawing=!1,this.sequenceCounter=0,this.sessionStartTime=null,this.debugListenerRegistrationCount=0,this.listenersAttached=!1,this.canvas=A,this.onPenData=I,this.boundHandleMouseDown=this.handleMouseDown.bind(this),this.boundHandleMouseMove=this.handleMouseMove.bind(this),this.boundHandleMouseUp=this.handleMouseUp.bind(this),this.boundHandleMouseLeave=this.handleMouseLeave.bind(this)}get isCurrentlyDrawing(){return this.isDrawing}addListeners(){if(this.listenersAttached){console.log("[Signpad Debug] Mouse listeners already registered");return}this.listenersAttached=!0,this.debugListenerRegistrationCount+=1,console.log(`[Signpad Debug] Mouse listeners registered (${this.debugListenerRegistrationCount})`),this.canvas.addEventListener("mousedown",this.boundHandleMouseDown),this.canvas.addEventListener("mousemove",this.boundHandleMouseMove),this.canvas.addEventListener("mouseup",this.boundHandleMouseUp),this.canvas.addEventListener("mouseleave",this.boundHandleMouseLeave)}removeListeners(){if(!this.listenersAttached){console.log("[Signpad Debug] Mouse listeners already removed");return}this.listenersAttached=!1,console.log("[Signpad Debug] Mouse listeners removed"),this.canvas.removeEventListener("mousedown",this.boundHandleMouseDown),this.canvas.removeEventListener("mousemove",this.boundHandleMouseMove),this.canvas.removeEventListener("mouseup",this.boundHandleMouseUp),this.canvas.removeEventListener("mouseleave",this.boundHandleMouseLeave),this.isDrawing=!1,this.sequenceCounter=0}areListenersAttached(){return this.listenersAttached}resetSession(){this.isDrawing=!1,this.sequenceCounter=0,this.sessionStartTime=null}handleMouseDown(A){this.isDrawing=!0,this.sequenceCounter=0,this.sessionStartTime===null&&(this.sessionStartTime=Date.now()),this.processMouseEvent(A,!0)}handleMouseMove(A){this.isDrawing&&(this.sequenceCounter++,this.processMouseEvent(A,!0))}handleMouseUp(A){this.isDrawing&&(this.isDrawing=!1,this.processMouseEvent(A,!1),this.sequenceCounter=0)}handleMouseLeave(A){this.isDrawing&&(this.isDrawing=!1,this.processMouseEvent(A,!1),this.sequenceCounter=0)}processMouseEvent(A,I){const{x:g,y:E}=this.getNormalizedCoordinates(A),D={relativeX:g,relativeY:E,pressure:I?.5:0,inContact:I,timestamp:this.timestampToSeconds()};this.onPenData(D)}getNormalizedCoordinates(A){const I=this.canvas.getBoundingClientRect(),g=(A.clientX-I.left)/I.width,E=(A.clientY-I.top)/I.height;return{x:g,y:E}}timestampToSeconds(){this.sessionStartTime===null&&(this.sessionStartTime=Date.now());const I=(Date.now()-this.sessionStartTime)/1e3;return Number(I.toFixed(3))}}const LA={en:{OK:"OK",CLEAR:"Clear",CANCEL:"Cancel",CLEAR_SIGNATURE:"Clear signature",DISCONNECT:"Disconnect",CONNECT_SIGNPAD:"Connect Signpad",NOT_CONNECTED:"Not Connected",CONNECTED:"Connected",CONNECTING:"Connecting...",MOUSE:"Mouse",CONNECTED_UNKNOWN_DEVICE:"Connected (Unknown Device)",AUTO_CONNECTING:"Auto-connecting to device...",CONNECTING_TO_DEVICE:"Connecting to your device...",DISCONNECTING_DEVICE:"Disconnecting device...",COMPONENT_INITIALIZED:"Component initialized.",TEXT_START_SIGNING:"Connect your device.",TEXT_SIGN_WITH_PHYSICAL:"Please sign using the device pen.",TEXT_SIGN_WITH_MOUSE:"Please sign using your mouse.",TEXT_SIGN_GENERIC:"Sign in the area above using mouse or pen.",TEXT_SIGNING_WITH_DEVICE:"Signing with {device}",NO_DEVICE_FOUND:"No device found.",CONNECTION_ERROR:"Connection error.",ERROR_DISCONNECTION:"Error during disconnection.",ERROR_INSTANTIATING_DRIVER:"Error instantiating driver.",SIGNPAD_DISCONNECTED:"Signpad disconnected.",DEVICE_UNEXPECTEDLY_DISCONNECTED:"Device unexpectedly disconnected.",SIGN_SUCCESSFUL:"Signature saved successfully.",SIGN_CANCELLED:"Signing cancelled.",SIGN_CLEARED:"Signature cleared.",MISSING_LICENSE_KEY:"No license key provided. Please provide a license key to connect.",READY_TO_CONNECT:"Ready to connect.",SIGNPAD_DETECTED:"Signpad detected. Click 'Connect Signpad' to begin.",NO_LICENSE_KEY:"Device connected, but no license key provided."},cs:{OK:"OK",CLEAR:"Smazat",CANCEL:"Zrušit",CLEAR_SIGNATURE:"Smazat podpis",DISCONNECT:"Odpojit",CONNECT_SIGNPAD:"Připojit Signpad",NOT_CONNECTED:"Nepřipojeno",CONNECTED:"Připojeno",CONNECTING:"Připojování...",MOUSE:"Myš",CONNECTED_UNKNOWN_DEVICE:"Připojeno (neznámé zařízení)",AUTO_CONNECTING:"Automatické připojování k zařízení...",CONNECTING_TO_DEVICE:"Připojování k vašemu zařízení...",DISCONNECTING_DEVICE:"Odpojování zařízení...",COMPONENT_INITIALIZED:"Komponenta byla inicializována.",TEXT_START_SIGNING:"Připojte své zařízení.",TEXT_SIGN_WITH_PHYSICAL:"Podepište se perem zařízení.",TEXT_SIGN_WITH_MOUSE:"Podepište se pomocí myši.",TEXT_SIGN_GENERIC:"Podepište se v oblasti výše pomocí myši nebo pera.",TEXT_SIGNING_WITH_DEVICE:"Podepisování pomocí: {device}",NO_DEVICE_FOUND:"Zařízení nebylo nalezeno.",CONNECTION_ERROR:"Chyba připojení.",ERROR_DISCONNECTION:"Chyba při odpojování.",ERROR_INSTANTIATING_DRIVER:"Chyba při inicializaci ovladače.",SIGNPAD_DISCONNECTED:"Signpad byl odpojen.",DEVICE_UNEXPECTEDLY_DISCONNECTED:"Zařízení bylo neočekávaně odpojeno.",SIGN_SUCCESSFUL:"Podpis byl úspěšně uložen.",SIGN_CANCELLED:"Podepisování bylo zrušeno.",SIGN_CLEARED:"Podpis byl vymazán.",MISSING_LICENSE_KEY:"Nebyl poskytnut licenční klíč. Pro připojení prosím zadejte licenční klíč.",READY_TO_CONNECT:"Připraveno k připojení.",SIGNPAD_DETECTED:"Signpad byl nalezen. Klikněte na 'Připojit Signpad' pro spuštění.",NO_LICENSE_KEY:"Zařízení je připojeno, ale nebyl poskytnut licenční klíč."}};class Hg{constructor(A){this.translations=LA.en,this.currentLang="",this.currentPath=void 0,this.component=A}t(A,I={}){let g=this.translations[A]||A;for(const[E,D]of Object.entries(I))g=g.replace(new RegExp(`{${E}}`,"g"),D);return g}async loadLanguage(A,I,g){const E=I?.trim();if(A===this.currentLang&&E===this.currentPath)return;let D=this.getBaselineTranslations(A);const S=this.resolveInlineTranslations(A,g);if(S){this.translations={...D,...S},this.currentLang=A,this.currentPath=E,this.component.requestUpdate();return}if(!E){this.translations=D,this.currentLang=A,this.currentPath=E,this.component.requestUpdate();return}const a=this.constructUrl(A,E);try{const h=await fetch(a);if(h.ok){const F=await h.json();D={...D,...F},console.log(`signosoft-signpad: External translations loaded from ${a}`)}else I&&console.info(`signosoft-signpad: Custom path provided, but file not found at ${a}`)}catch(h){console.warn(`signosoft-signpad: Failed to load external translations from ${a}. Using built-in defaults.`,h)}this.translations=D,this.currentLang=A,this.currentPath=E,this.component.requestUpdate()}getBaselineTranslations(A){const I=LA.en;return A!=="en"&&LA.hasOwnProperty(A)?{...I,...LA[A]}:{...I}}resolveInlineTranslations(A,I){return I?typeof Object.values(I)[0]=="string"?I:I[A]:void 0}constructUrl(A,I){const g=I.trim();let E="";return g.endsWith(".json")?E=g:E=`${g.replace(/\/+$/,"")}/${A}.json`,E}}class rg{constructor(A){this.configEventHandlers={},this.customEventListenerCache=new WeakMap,this.component=A}apply(A){const I=this.component.config;if(!I){this.clearConfigEventHandlers();return}this.applyLocalization(A,I),this.applyDrawingOptions(A,I),this.syncConfigEventHandlers(I)}getUiVisibilityOptions(){const A=this.component.config.uiVisibilityOptions;return{topBarVisible:A?.topBarVisible??!0,topBarClearButtonVisible:A?.topBarClearButtonVisible??!1,topBarConnectButtonVisible:A?.topBarConnectButtonVisible??!0,bottomBarVisible:A?.bottomBarVisible??!0,okButtonVisible:A?.okButtonVisible??!0,clearButtonVisible:A?.clearButtonVisible??!0,cancelButtonVisible:A?.cancelButtonVisible??!0,canvasLineVisible:A?.canvasLineVisible??!0,deviceStatusTextVisible:A?.deviceStatusTextVisible??!0,additionalTextVisible:A?.additionalTextVisible??!0}}getDrawingOptions(){const A=this.component.config.canvasAndDrawingOptions;return{minWidth:A?.minWidth??1,maxWidth:A?.maxWidth??3,color:A?.color??"#000000"}}applyLocalization(A,I){const g=A?.languageOptions,E=I.languageOptions;(!A||g?.lang!==E?.lang||g?.langPath!==E?.langPath||g?.translations!==E?.translations)&&this.component.localizationManager.loadLanguage(E?.lang??"en",E?.langPath,E?.translations)}applyDrawingOptions(A,I){const g=A?.canvasAndDrawingOptions,E=I.canvasAndDrawingOptions;this.component.canvasManager&&(!A||g?.minWidth!==E?.minWidth||g?.maxWidth!==E?.maxWidth||g?.color!==E?.color)&&this.component.canvasManager.updateDrawingOptions(this.getDrawingOptions())}syncConfigEventHandlers(A){const I=S=>{if(!S)return;const a=this.customEventListenerCache.get(S);if(a)return a;const h=F=>{S(F)};return this.customEventListenerCache.set(S,h),h},g=A.eventCallbacks,E={[Y.SIGN_CONNECT]:I(g?.onConnect),[Y.SIGN_DISCONNECT]:I(g?.onDisconnect),[Y.SIGN_PEN]:I(g?.onPen),[Y.SIGN_OK]:I(g?.onOk),[Y.SIGN_CLEAR]:I(g?.onClear),[Y.SIGN_CANCEL]:I(g?.onCancel),[Y.SIGN_ERROR]:I(g?.onError)},D=new Set([...Object.keys(this.configEventHandlers),...Object.keys(E)]);for(const S of D){const a=this.configEventHandlers[S],h=E[S];a&&a!==h&&this.component.removeEventListener(S,a),h&&a!==h&&this.component.addEventListener(S,h),h?this.configEventHandlers[S]=h:delete this.configEventHandlers[S]}}clearConfigEventHandlers(){for(const[A,I]of Object.entries(this.configEventHandlers))I&&this.component.removeEventListener(A,I);this.configEventHandlers={}}}const qg=":host{--primary-color-0: #4e56ea;--primary-color-10: #7178ee;--background-color-0: #f1f2fd;--background-color-10: #e3e4fc;--text-color-0: #333e4a;--white-color: #ffffff;--grey-color: #b5b9be;--min-height: 48px;--spacing-constraints: 16px 24px;--sign-font-family: Arial, Helvetica, sans-serif;--sign-top-bar-bg-base: var(--background-color-10);--sign-top-bar-text-base: var(--primary-color-0);--sign-top-bar-padding: var(--spacing-constraints);--sign-top-bar-min-height: var(--min-height);--sign-canvas-bg-base: var(--background-color-0);--sign-line-height: 22px;--sign-line-margin-bottom: 16px;--sign-line-border-base: var(--primary-color-10);--sign-line-additional-text-color: var(--text-color-0);--sign-line-margin: 0px 24px var(--sign-line-margin-bottom) 24px;--sign-canvas-line-text-font-size: 12px;--sign-canvas-height-offset: var(--sign-line-height);--sign-bottom-bar-bg-base: var(--background-color-10);--sign-bottom-bar-padding: var(--spacing-constraints);--sign-bottom-bar-min-height: var(--min-height);--sign-bottom-bar-gap: 12px;--sign-button-font-size: 16px;--sign-button-padding: 14px 16px;--sign-button-min-height: var(--min-height);--sign-button-border-radius: 8px;--sign-button-font-weight: 500;--sign-button-primary-bg-base: var(--primary-color-0);--sign-button-primary-bg-hover: var(--primary-color-10);--sign-button-primary-bg-disabled: var(--grey-color);--sign-button-primary-text-base: var(--white-color);--sign-button-primary-text-hover: var(--white-color);--sign-button-primary-text-disabled: var(--white-color);--sign-button-link-bg-base: transparent;--sign-button-link-bg-hover: var(--background-color-10);--sign-button-link-bg-disabled: transparent;--sign-button-link-text-base: var(--primary-color-0);--sign-button-link-text-hover: var(--primary-color-10);--sign-button-link-text-disabled: var(--grey-color);--sign-button-link-border-base: 1px solid var(--primary-color-0);--sign-button-link-border-hover: 1px solid var(--primary-color-10);--sign-button-link-border-disabled: 1px solid var(--grey-color);--sign-device-state-text-color-connected: green;--sign-device-state-text-color-disconnected: red;--sign-loading-overlay-bg-color: rgba(255, 255, 255, .8);--sign-loading-overlay-text-color: var(--text-color-0);--sign-loading-overlay-spinner-color: var(--primary-color-0);--sign-loading-overlay-spinner-border-color: rgba(78, 86, 234, .1);--sign-loading-overlay-spinner-size: 30px}html{font-family:var(--sign-font-family)!important}.signpad-canvas-container{display:flex;flex-direction:column;width:100%;height:100%;min-width:380px}.signpad-top-bar{display:flex;justify-content:space-between;padding:var(--sign-top-bar-padding);min-height:var(--sign-top-bar-min-height);background-color:var(--sign-top-bar-bg-base);color:var(--sign-top-bar-text-base);align-items:center}.signpad-top-left-actions,.signpad-top-right-actions{display:flex;gap:var(--sign-bottom-bar-gap)}.signpad-top-left-actions{justify-content:flex-start}.signpad-top-right-actions{justify-content:flex-end}.signpad-canvas-wrapper{position:relative;width:100%;padding-top:16px;padding-bottom:56.25%;height:0;background-color:var(--sign-canvas-bg-base);box-sizing:border-box;overflow:hidden}.signpad-canvas{position:absolute;width:100%;height:calc(100% - (var(--sign-canvas-height-offset) + var(--sign-line-margin-bottom)));left:0;top:0}.signpad-canvas-line-container{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;height:var(--sign-line-height);border-top:2px solid var(--sign-line-border-base);box-sizing:border-box;padding-top:6px;margin:var(--sign-line-margin)}.signpad-canvas-line-additional-text,.signpad-canvas-line-state,.signpad-canvas-line-state.connected{font-family:var(--sign-font-family);font-size:var(--sign-canvas-line-text-font-size)}.signpad-canvas-line-additional-text{color:var(--sign-line-additional-text-color);margin:0}.signpad-canvas-line-state{color:var(--sign-device-state-text-color-disconnected);margin:0}.signpad-canvas-line-state.connected{color:var(--sign-device-state-text-color-connected)}.signpad-bottom-bar{display:flex;flex-direction:row;gap:var(--sign-bottom-bar-gap);padding:var(--sign-bottom-bar-padding);min-height:var(--sign-bottom-bar-min-height);background-color:var(--sign-bottom-bar-bg-base)}.btn{font-family:var(--sign-font-family);min-height:var(--sign-button-min-height);padding:var(--sign-button-padding);margin:0;font-weight:var(--sign-button-font-weight);width:100%;font-size:var(--sign-button-font-size);border-radius:var(--sign-button-border-radius);transition:background-color .3s ease,color .3s ease,transform .1s ease}.btn:hover:not(:disabled){cursor:pointer}.btn:focus:not(:disabled){outline:none}.btn-primary{background-color:var(--sign-button-primary-bg-base);color:var(--sign-button-primary-text-base);border:1px solid var(--sign-button-primary-bg-base)}.btn-primary:hover:not(:disabled){background-color:var(--sign-button-primary-bg-hover);color:var(--sign-button-primary-text-hover);border:1px solid var(--sign-button-primary-bg-hover)}.btn-primary:disabled{background-color:var(--sign-button-primary-bg-disabled);color:var(--sign-button-primary-text-disabled);border:1px solid var(--sign-button-primary-bg-disabled)}.btn-link{background-color:var(--sign-button-link-bg-base);color:var(--sign-button-link-text-base);border:var(--sign-button-link-border-base)}.btn-link:hover:not(:disabled){background-color:var(--sign-button-link-bg-hover);color:var(--sign-button-link-text-hover);border:var(--sign-button-link-border-hover)}.btn-link:disabled{background-color:var(--sign-button-link-bg-disabled);color:var(--sign-button-link-text-disabled);border:var(--sign-button-link-border-disabled)}.signpad-loading-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--sign-loading-overlay-bg-color);display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:10;text-align:center;gap:10px}.signpad-loading-overlay .spinner{border:4px solid var(--sign-loading-overlay-spinner-border-color);border-left-color:var(--sign-loading-overlay-spinner-color);border-radius:50%;width:var(--sign-loading-overlay-spinner-size);height:var(--sign-loading-overlay-spinner-size);animation:spin 1s linear infinite}.signpad-loading-overlay-text{font-family:var(--sign-font-family);color:var(--sign-loading-overlay-text-color);font-size:14px;margin:16px 0 0}@keyframes spin{to{transform:rotate(360deg)}}";let hI=class{constructor(){this._device=null,this._isWasmInitialized=!1,this._module=null,this._disconnectHandler=null,this._eventCallbacks=new Map,this._callbackToHandle=new Map,this._masterCallback=null,this._penAspectCorrector=null,this._unexpectedDisconnectCallbacks=new Set}get device(){return this._device}get isWasmInitialized(){return this._isWasmInitialized}get Module(){return this._module}};typeof hI<"u"&&(window.TabletDriver=hI);var MI=(()=>{var Q=typeof document<"u"?document.currentScript?.src:void 0;return(async function(A={}){var I,g=A,E,D,S=new Promise((C,B)=>{E=C,D=B}),a=typeof window=="object",h=typeof WorkerGlobalScope<"u",F=typeof process=="object"&&process.versions?.node&&process.type!="renderer";typeof __filename<"u"?Q=__filename:h&&(Q=self.location.href);var l="",p,f;if(F){var $={};l=__dirname+"/",f=C=>(C=dA(C)?new URL(C):C,$.readFileSync(C)),p=async C=>(C=dA(C)?new URL(C):C,$.readFileSync(C,void 0)),process.argv.slice(2)}else if(a||h){try{l=new URL(".",Q).href}catch{}h&&(f=C=>{var B=new XMLHttpRequest;return B.open("GET",C,!1),B.responseType="arraybuffer",B.send(null),new Uint8Array(B.response)}),p=async C=>{if(dA(C))return new Promise((i,o)=>{var w=new XMLHttpRequest;w.open("GET",C,!0),w.responseType="arraybuffer",w.onload=()=>{w.status==200||w.status==0&&w.response?i(w.response):o(w.status)},w.onerror=o,w.send(null)});var B=await fetch(C,{credentials:"same-origin"});if(B.ok)return B.arrayBuffer();throw Error(B.status+" : "+B.url)}}console.log.bind(console);var z=console.error.bind(console),AA,oA,lA=!1,IA,O,DA,gA,CA,H,YI,_A,eI,nI,dA=C=>C.startsWith("file://");function HI(){var C=oA.buffer;IA=new Int8Array(C),DA=new Int16Array(C),g.HEAPU8=O=new Uint8Array(C),gA=new Uint16Array(C),CA=new Int32Array(C),H=new Uint32Array(C),YI=new Float32Array(C),nI=new Float64Array(C),_A=new BigInt64Array(C),eI=new BigUint64Array(C)}var BA=0,hA=null;function rI(C){throw g.onAbort?.(C),C="Aborted("+C+")",z(C),lA=!0,C=new WebAssembly.RuntimeError(C+". Build with -sASSERTIONS for more info."),D(C),C}var $A;async function fg(C){if(!AA)try{var B=await p(C);return new Uint8Array(B)}catch{}if(C==$A&&AA)C=new Uint8Array(AA);else if(f)C=f(C);else throw"both async and sync fetching of the wasm failed";return C}async function pg(C,B){try{var i=await fg(C);return await WebAssembly.instantiate(i,B)}catch(o){z(`failed to asynchronously prepare wasm: ${o}`),rI(o)}}async function Og(C){var B=$A;if(!AA&&typeof WebAssembly.instantiateStreaming=="function"&&!dA(B)&&!F)try{var i=fetch(B,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(i,C)}catch(o){z(`wasm streaming compile failed: ${o}`),z("falling back to ArrayBuffer instantiation")}return pg(B,C)}var qI=C=>{for(;0<C.length;)C.shift()(g)},lI=[],dI=[],xg=()=>{var C=g.preRun.shift();dI.push(C)};class Tg{constructor(B){this.Z=B-24}}var fI=0,fA={},AI=C=>{for(;C.length;){var B=C.pop();C.pop()(B)}};function MA(C){return this.fromWireType(H[C>>2])}var wA={},QA={},pA={},OA=class extends Error{constructor(C){super(C),this.name="InternalError"}},GA=(C,B,i)=>{function o(y){if(y=i(y),y.length!==C.length)throw new OA("Mismatched type converter count");for(var N=0;N<C.length;++N)Z(C[N],y[N])}C.forEach(y=>pA[y]=B);var w=Array(B.length),s=[],K=0;B.forEach((y,N)=>{QA.hasOwnProperty(y)?w[N]=QA[y]:(s.push(y),wA.hasOwnProperty(y)||(wA[y]=[]),wA[y].push(()=>{w[N]=QA[y],++K,K===s.length&&o(w)}))}),s.length===0&&o(w)},pI,r=C=>{for(var B="";O[C];)B+=pI[O[C++]];return B},k=class extends Error{constructor(C){super(C),this.name="BindingError"}},jg=C=>{throw new k(C)};function Wg(C,B,i={}){var o=B.name;if(!C)throw new k(`type "${o}" must have a positive integer typeid pointer`);if(QA.hasOwnProperty(C)){if(i.Ga)return;throw new k(`Cannot register type '${o}' twice`)}QA[C]=B,delete pA[C],wA.hasOwnProperty(C)&&(B=wA[C],delete wA[C],B.forEach(w=>w()))}function Z(C,B,i={}){return Wg(C,B,i)}var OI=(C,B,i)=>{switch(B){case 1:return i?o=>IA[o]:o=>O[o];case 2:return i?o=>DA[o>>1]:o=>gA[o>>1];case 4:return i?o=>CA[o>>2]:o=>H[o>>2];case 8:return i?o=>_A[o>>3]:o=>eI[o>>3];default:throw new TypeError(`invalid integer width (${B}): ${C}`)}},II=C=>{throw new k(C.Y.aa.$.name+" instance already deleted")},gI=!1,xI=()=>{},RA=C=>typeof FinalizationRegistry>"u"?(RA=B=>B,C):(gI=new FinalizationRegistry(B=>{B=B.Y,--B.count.value,B.count.value===0&&(B.da?B.ha.ia(B.da):B.aa.$.ia(B.Z))}),RA=B=>{var i=B.Y;return i.da&&gI.register(B,{Y:i},B),B},xI=B=>{gI.unregister(B)},RA(C));function xA(){}var TA=(C,B)=>Object.defineProperty(B,"name",{value:C}),TI={},jI=(C,B,i)=>{if(C[B].ba===void 0){var o=C[B];C[B]=function(...w){if(!C[B].ba.hasOwnProperty(w.length))throw new k(`Function '${i}' called with an invalid number of arguments (${w.length}) - expects one of (${C[B].ba})!`);return C[B].ba[w.length].apply(this,w)},C[B].ba=[],C[B].ba[o.la]=o}},CI=(C,B,i)=>{if(g.hasOwnProperty(C)){if(i===void 0||g[C].ba!==void 0&&g[C].ba[i]!==void 0)throw new k(`Cannot register public name '${C}' twice`);if(jI(g,C,C),g[C].ba.hasOwnProperty(i))throw new k(`Cannot register multiple overloads of a function with the same number of arguments (${i})!`);g[C].ba[i]=B}else g[C]=B,g[C].la=i},bg=C=>{C=C.replace(/[^a-zA-Z0-9_]/g,"$");var B=C.charCodeAt(0);return 48<=B&&57>=B?`_${C}`:C};function mg(C,B,i,o,w,s,K,y){this.name=C,this.constructor=B,this.ka=i,this.ia=o,this.ea=w,this.Ba=s,this.oa=K,this.za=y,this.Ja=[]}var BI=(C,B,i)=>{for(;B!==i;){if(!B.oa)throw new k(`Expected null or instance of ${i.name}, got an instance of ${B.name}`);C=B.oa(C),B=B.ea}return C},QI=C=>{if(C===null)return"null";var B=typeof C;return B==="object"||B==="array"||B==="function"?C.toString():""+C};function Zg(C,B){if(B===null){if(this.ra)throw new k(`null is not a valid ${this.name}`);return 0}if(!B.Y)throw new k(`Cannot pass "${QI(B)}" as a ${this.name}`);if(!B.Y.Z)throw new k(`Cannot pass deleted object as a pointer of type ${this.name}`);return BI(B.Y.Z,B.Y.aa.$,this.$)}function ug(C,B){if(B===null){if(this.ra)throw new k(`null is not a valid ${this.name}`);if(this.qa){var i=this.sa();return C!==null&&C.push(this.ia,i),i}return 0}if(!B||!B.Y)throw new k(`Cannot pass "${QI(B)}" as a ${this.name}`);if(!B.Y.Z)throw new k(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.pa&&B.Y.aa.pa)throw new k(`Cannot convert argument of type ${B.Y.ha?B.Y.ha.name:B.Y.aa.name} to parameter type ${this.name}`);if(i=BI(B.Y.Z,B.Y.aa.$,this.$),this.qa){if(B.Y.da===void 0)throw new k("Passing raw pointer to smart pointer is illegal");switch(this.Oa){case 0:if(B.Y.ha===this)i=B.Y.da;else throw new k(`Cannot convert argument of type ${B.Y.ha?B.Y.ha.name:B.Y.aa.name} to parameter type ${this.name}`);break;case 1:i=B.Y.da;break;case 2:if(B.Y.ha===this)i=B.Y.da;else{var o=B.clone();i=this.Ka(i,u(()=>o.delete())),C!==null&&C.push(this.ia,i)}break;default:throw new k("Unsupporting sharing policy")}}return i}function Xg(C,B){if(B===null){if(this.ra)throw new k(`null is not a valid ${this.name}`);return 0}if(!B.Y)throw new k(`Cannot pass "${QI(B)}" as a ${this.name}`);if(!B.Y.Z)throw new k(`Cannot pass deleted object as a pointer of type ${this.name}`);if(B.Y.aa.pa)throw new k(`Cannot convert argument of type ${B.Y.aa.name} to parameter type ${this.name}`);return BI(B.Y.Z,B.Y.aa.$,this.$)}var WI=(C,B,i)=>B===i?C:i.ea===void 0?null:(C=WI(C,B,i.ea),C===null?null:i.za(C)),Pg={},Vg=(C,B)=>{if(B===void 0)throw new k("ptr should not be undefined");for(;C.ea;)B=C.oa(B),C=C.ea;return Pg[B]},jA=(C,B)=>{if(!B.aa||!B.Z)throw new OA("makeClassHandle requires ptr and ptrType");if(!!B.ha!=!!B.da)throw new OA("Both smartPtrType and smartPtr must be specified");return B.count={value:1},RA(Object.create(C,{Y:{value:B,writable:!0}}))};function WA(C,B,i,o,w,s,K,y,N,M,G){this.name=C,this.$=B,this.ra=i,this.pa=o,this.qa=w,this.Ia=s,this.Oa=K,this.xa=y,this.sa=N,this.Ka=M,this.ia=G,w||B.ea!==void 0?this.toWireType=ug:(this.toWireType=o?Zg:Xg,this.fa=null)}var bI=(C,B,i)=>{if(!g.hasOwnProperty(C))throw new OA("Replacing nonexistent public symbol");g[C].ba!==void 0&&i!==void 0?g[C].ba[i]=B:(g[C]=B,g[C].la=i)},mI=[],ZI,P=(C,B)=>{C=r(C);var i;if((i=mI[B])||(mI[B]=i=ZI.get(B)),typeof i!="function")throw new k(`unknown function pointer with signature ${C}: ${B}`);return i};class zg extends Error{}var uI=C=>{C=wC(C);var B=r(C);return iA(C),B},EI=(C,B)=>{function i(s){w[s]||QA[s]||(pA[s]?pA[s].forEach(i):(o.push(s),w[s]=!0))}var o=[],w={};throw B.forEach(i),new zg(`${C}: `+o.map(uI).join([", "]))};function XI(C){for(var B=1;B<C.length;++B)if(C[B]!==null&&C[B].fa===void 0)return!0;return!1}function PI(C,B,i,o,w,s){var K=B.length;if(2>K)throw new k("argTypes array size mismatch! Must at least get return value and 'this' types!");var y=B[1]!==null&&i!==null,N=XI(B);for(i=B[0].name!=="void",o=[C,jg,o,w,AI,B[0],B[1]],w=0;w<K-2;++w)o.push(B[w+2]);if(!N)for(w=y?1:2;w<B.length;++w)B[w].fa!==null&&o.push(B[w].fa);N=XI(B),w=B.length-2;var M=[],G=["fn"];for(y&&G.push("thisWired"),K=0;K<w;++K)M.push(`arg${K}`),G.push(`arg${K}Wired`);M=M.join(","),G=G.join(","),M=`return function (${M}) {
|
|
1
|
+
(function(q,U){typeof exports=="object"&&typeof module<"u"?U(exports,require("lit")):typeof define=="function"&&define.amd?define(["exports","lit"],U):(q=typeof globalThis<"u"?globalThis:q||self,U(q.SignosoftSignpad={},q.lit))})(this,(function(q,U){"use strict";const Dg=Q=>(A,I)=>{I!==void 0?I.addInitializer(()=>{customElements.define(Q,A)}):customElements.define(Q,A)};const FA=globalThis,XA=FA.ShadowRoot&&(FA.ShadyCSS===void 0||FA.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,wI=Symbol(),SI=new WeakMap;let wg=class{constructor(A,I,g){if(this._$cssResult$=!0,g!==wI)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=A,this.t=I}get styleSheet(){let A=this.o;const I=this.t;if(XA&&A===void 0){const g=I!==void 0&&I.length===1;g&&(A=SI.get(I)),A===void 0&&((this.o=A=new CSSStyleSheet).replaceSync(this.cssText),g&&SI.set(I,A))}return A}toString(){return this.cssText}};const Sg=Q=>new wg(typeof Q=="string"?Q:Q+"",void 0,wI),sg=(Q,A)=>{if(XA)Q.adoptedStyleSheets=A.map(I=>I instanceof CSSStyleSheet?I:I.styleSheet);else for(const I of A){const g=document.createElement("style"),E=FA.litNonce;E!==void 0&&g.setAttribute("nonce",E),g.textContent=I.cssText,Q.appendChild(g)}},sI=XA?Q=>Q:Q=>Q instanceof CSSStyleSheet?(A=>{let I="";for(const g of A.cssRules)I+=g.cssText;return Sg(I)})(Q):Q;const{is:ag,defineProperty:Kg,getOwnPropertyDescriptor:yg,getOwnPropertyNames:hg,getOwnPropertySymbols:Mg,getPrototypeOf:Gg}=Object,JA=globalThis,aI=JA.trustedTypes,Rg=aI?aI.emptyScript:"",Ng=JA.reactiveElementPolyfillSupport,sA=(Q,A)=>Q,UA={toAttribute(Q,A){switch(A){case Boolean:Q=Q?Rg:null;break;case Object:case Array:Q=Q==null?Q:JSON.stringify(Q)}return Q},fromAttribute(Q,A){let I=Q;switch(A){case Boolean:I=Q!==null;break;case Number:I=Q===null?null:Number(Q);break;case Object:case Array:try{I=JSON.parse(Q)}catch{I=null}}return I}},PA=(Q,A)=>!ag(Q,A),KI={attribute:!0,type:String,converter:UA,reflect:!1,useDefault:!1,hasChanged:PA};Symbol.metadata??=Symbol("metadata"),JA.litPropertyMetadata??=new WeakMap;class aA extends HTMLElement{static addInitializer(A){this._$Ei(),(this.l??=[]).push(A)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(A,I=KI){if(I.state&&(I.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(A)&&((I=Object.create(I)).wrapped=!0),this.elementProperties.set(A,I),!I.noAccessor){const g=Symbol(),E=this.getPropertyDescriptor(A,g,I);E!==void 0&&Kg(this.prototype,A,E)}}static getPropertyDescriptor(A,I,g){const{get:E,set:D}=yg(this.prototype,A)??{get(){return this[I]},set(S){this[I]=S}};return{get:E,set(S){const a=E?.call(this);D?.call(this,S),this.requestUpdate(A,a,g)},configurable:!0,enumerable:!0}}static getPropertyOptions(A){return this.elementProperties.get(A)??KI}static _$Ei(){if(this.hasOwnProperty(sA("elementProperties")))return;const A=Gg(this);A.finalize(),A.l!==void 0&&(this.l=[...A.l]),this.elementProperties=new Map(A.elementProperties)}static finalize(){if(this.hasOwnProperty(sA("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(sA("properties"))){const I=this.properties,g=[...hg(I),...Mg(I)];for(const E of g)this.createProperty(E,I[E])}const A=this[Symbol.metadata];if(A!==null){const I=litPropertyMetadata.get(A);if(I!==void 0)for(const[g,E]of I)this.elementProperties.set(g,E)}this._$Eh=new Map;for(const[I,g]of this.elementProperties){const E=this._$Eu(I,g);E!==void 0&&this._$Eh.set(E,I)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(A){const I=[];if(Array.isArray(A)){const g=new Set(A.flat(1/0).reverse());for(const E of g)I.unshift(sI(E))}else A!==void 0&&I.push(sI(A));return I}static _$Eu(A,I){const g=I.attribute;return g===!1?void 0:typeof g=="string"?g:typeof A=="string"?A.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(A=>this.enableUpdating=A),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(A=>A(this))}addController(A){(this._$EO??=new Set).add(A),this.renderRoot!==void 0&&this.isConnected&&A.hostConnected?.()}removeController(A){this._$EO?.delete(A)}_$E_(){const A=new Map,I=this.constructor.elementProperties;for(const g of I.keys())this.hasOwnProperty(g)&&(A.set(g,this[g]),delete this[g]);A.size>0&&(this._$Ep=A)}createRenderRoot(){const A=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return sg(A,this.constructor.elementStyles),A}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(A=>A.hostConnected?.())}enableUpdating(A){}disconnectedCallback(){this._$EO?.forEach(A=>A.hostDisconnected?.())}attributeChangedCallback(A,I,g){this._$AK(A,g)}_$ET(A,I){const g=this.constructor.elementProperties.get(A),E=this.constructor._$Eu(A,g);if(E!==void 0&&g.reflect===!0){const D=(g.converter?.toAttribute!==void 0?g.converter:UA).toAttribute(I,g.type);this._$Em=A,D==null?this.removeAttribute(E):this.setAttribute(E,D),this._$Em=null}}_$AK(A,I){const g=this.constructor,E=g._$Eh.get(A);if(E!==void 0&&this._$Em!==E){const D=g.getPropertyOptions(E),S=typeof D.converter=="function"?{fromAttribute:D.converter}:D.converter?.fromAttribute!==void 0?D.converter:UA;this._$Em=E;const a=S.fromAttribute(I,D.type);this[E]=a??this._$Ej?.get(E)??a,this._$Em=null}}requestUpdate(A,I,g,E=!1,D){if(A!==void 0){const S=this.constructor;if(E===!1&&(D=this[A]),g??=S.getPropertyOptions(A),!((g.hasChanged??PA)(D,I)||g.useDefault&&g.reflect&&D===this._$Ej?.get(A)&&!this.hasAttribute(S._$Eu(A,g))))return;this.C(A,I,g)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(A,I,{useDefault:g,reflect:E,wrapped:D},S){g&&!(this._$Ej??=new Map).has(A)&&(this._$Ej.set(A,S??I??this[A]),D!==!0||S!==void 0)||(this._$AL.has(A)||(this.hasUpdated||g||(I=void 0),this._$AL.set(A,I)),E===!0&&this._$Em!==A&&(this._$Eq??=new Set).add(A))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(I){Promise.reject(I)}const A=this.scheduleUpdate();return A!=null&&await A,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[E,D]of this._$Ep)this[E]=D;this._$Ep=void 0}const g=this.constructor.elementProperties;if(g.size>0)for(const[E,D]of g){const{wrapped:S}=D,a=this[E];S!==!0||this._$AL.has(E)||a===void 0||this.C(E,void 0,D,a)}}let A=!1;const I=this._$AL;try{A=this.shouldUpdate(I),A?(this.willUpdate(I),this._$EO?.forEach(g=>g.hostUpdate?.()),this.update(I)):this._$EM()}catch(g){throw A=!1,this._$EM(),g}A&&this._$AE(I)}willUpdate(A){}_$AE(A){this._$EO?.forEach(I=>I.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(A)),this.updated(A)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(A){return!0}update(A){this._$Eq&&=this._$Eq.forEach(I=>this._$ET(I,this[I])),this._$EM()}updated(A){}firstUpdated(A){}}aA.elementStyles=[],aA.shadowRootOptions={mode:"open"},aA[sA("elementProperties")]=new Map,aA[sA("finalized")]=new Map,Ng?.({ReactiveElement:aA}),(JA.reactiveElementVersions??=[]).push("2.1.2");const kg={attribute:!0,type:String,converter:UA,reflect:!1,hasChanged:PA},tg=(Q=kg,A,I)=>{const{kind:g,metadata:E}=I;let D=globalThis.litPropertyMetadata.get(E);if(D===void 0&&globalThis.litPropertyMetadata.set(E,D=new Map),g==="setter"&&((Q=Object.create(Q)).wrapped=!0),D.set(I.name,Q),g==="accessor"){const{name:S}=I;return{set(a){const h=A.get.call(this);A.set.call(this,a),this.requestUpdate(S,h,Q,!0,a)},init(a){return a!==void 0&&this.C(S,void 0,Q,a),a}}}if(g==="setter"){const{name:S}=I;return function(a){const h=this[S];A.call(this,a),this.requestUpdate(S,h,Q,!0,a)}}throw Error("Unsupported decorator location: "+g)};function Fg(Q){return(A,I)=>typeof I=="object"?tg(Q,A,I):((g,E,D)=>{const S=E.hasOwnProperty(D);return E.constructor.createProperty(D,g),S?Object.getOwnPropertyDescriptor(E,D):void 0})(Q,A,I)}const Jg=(Q,A,I)=>(I.configurable=!0,I.enumerable=!0,Reflect.decorate&&typeof A!="object"&&Object.defineProperty(Q,A,I),I);function Ug(Q,A){return(I,g,E)=>{const D=S=>S.renderRoot?.querySelector(Q)??null;return Jg(I,g,{get(){return D(this)}})}}var R=(Q=>(Q.INITIAL="initial",Q.DISCONNECTED="disconnected",Q.FINISHED="finished",Q.CONNECTING="connecting",Q.WAITING_FOR_DEVICE_SELECTION="waiting_for_device_selection",Q.CONNECTED_PHYSICAL="connected_physical",Q.CONNECTED_MOUSE_FALLBACK="connected_mouse_fallback",Q.SIGNING_ACTIVE="signing_active",Q.PROCESSING_OK="processing_ok",Q.PROCESSING_CLEAR="processing_clear",Q.PROCESSING_CANCEL="processing_cancel",Q.DISCONNECTING="disconnecting",Q.ERROR="error",Q))(R||{}),Y=(Q=>(Q.SIGN_PEN="sign-pen",Q.SIGN_OK="sign-ok",Q.SIGN_CLEAR="sign-clear",Q.SIGN_CANCEL="sign-cancel",Q.SIGN_ERROR="sign-error",Q.SIGN_CONNECT="sign-connect",Q.SIGN_DISCONNECT="sign-disconnect",Q))(Y||{}),yI=(Q=>(Q.OK="OK",Q.CLEAR="CLEAR",Q.CANCEL="CANCEL",Q.CLEAR_SIGNATURE="CLEAR_SIGNATURE",Q.DISCONNECT="DISCONNECT",Q.CONNECT_SIGNPAD="CONNECT_SIGNPAD",Q))(yI||{}),L=(Q=>(Q.AUTO_CONNECTING="AUTO_CONNECTING",Q.CONNECTING_TO_DEVICE="CONNECTING_TO_DEVICE",Q.DISCONNECTING_DEVICE="DISCONNECTING_DEVICE",Q.COMPONENT_INITIALIZED="COMPONENT_INITIALIZED",Q.TEXT_START_SIGNING="TEXT_START_SIGNING",Q.TEXT_SIGN_WITH_PHYSICAL="TEXT_SIGN_WITH_PHYSICAL",Q.TEXT_SIGN_WITH_MOUSE="TEXT_SIGN_WITH_MOUSE",Q.TEXT_SIGN_GENERIC="TEXT_SIGN_GENERIC",Q.TEXT_SIGNING_WITH_DEVICE="TEXT_SIGNING_WITH_DEVICE",Q.NO_DEVICE_FOUND="NO_DEVICE_FOUND",Q.CONNECTION_ERROR="CONNECTION_ERROR",Q.ERROR_DISCONNECTION="ERROR_DISCONNECTION",Q.ERROR_INSTANTIATING_DRIVER="ERROR_INSTANTIATING_DRIVER",Q.SIGNPAD_DISCONNECTED="SIGNPAD_DISCONNECTED",Q.DEVICE_UNEXPECTEDLY_DISCONNECTED="DEVICE_UNEXPECTEDLY_DISCONNECTED",Q.SIGN_SUCCESSFUL="SIGN_SUCCESSFUL",Q.SIGN_CANCELLED="SIGN_CANCELLED",Q.SIGN_CLEARED="SIGN_CLEARED",Q.MISSING_LICENSE_KEY="MISSING_LICENSE_KEY",Q.READY_TO_CONNECT="READY_TO_CONNECT",Q.SIGNPAD_DETECTED="SIGNPAD_DETECTED",Q.NO_LICENSE_KEY="NO_LICENSE_KEY",Q))(L||{}),X=(Q=>(Q.NOT_CONNECTED="NOT_CONNECTED",Q.CONNECTED="CONNECTED",Q.CONNECTING="CONNECTING",Q.MOUSE="MOUSE",Q.CONNECTED_UNKNOWN="CONNECTED_UNKNOWN_DEVICE",Q))(X||{});class Lg{constructor(A){this.component=A}async handleClear(){await this.executeAction(R.PROCESSING_CLEAR,async()=>{await this.component.connectionManager.clearSignature(),await this.component.config.actionHandlers?.handleClear?.(),this.component.dispatch(Y.SIGN_CLEAR)})}async handleOk(){return await this.executeAction(R.PROCESSING_OK,async()=>{const A=await this.component.connectionManager.stopSigning();return await this.component.config.actionHandlers?.handleOk?.(A),this.component.dispatch(Y.SIGN_OK,A),A})}async handleCancel(){await this.executeAction(R.PROCESSING_CANCEL,async()=>{await this.component.config.actionHandlers?.handleCancel?.(),this.component.dispatch(Y.SIGN_CANCEL)})}async startSigning(A){const I=this.component.connectionManager,g=this.component.canvasRef;if(!I.hasSignatureLayer()||!g){this.handleStartSigningError();return}this.component.stateManager.transitionTo(R.CONNECTING,"Preparing session...");try{this.component.resetDrawingState(),await I.startSigning(g,A);const E=await this.getReadyState(),D=E===R.CONNECTED_MOUSE_FALLBACK?"READY_TO_SIGN_MOUSE":"READY_TO_SIGN_PHYSICAL";this.component.stateManager.transitionTo(E,D)}catch(E){this.handleError("Error starting signing session",E)}}async stopSigning(){return this.component.connectionManager.stopSigning()}async executeAction(A,I){this.component.stateManager.transitionTo(A,"Processing...");try{const g=await I();return this.component.resetDrawingState(),await this.finalizePostAction(),g}catch(g){throw this.handleError("Error during action processing",g),g}}async getReadyState(){const A=this.component.connectionManager.isDeviceConnected(),I=await this.component.connectionManager.getDeviceInfo();return this.component.connectionManager.isFallback(I,A,!0)?R.CONNECTED_MOUSE_FALLBACK:R.CONNECTED_PHYSICAL}async finalizePostAction(){const A=await this.getReadyState();this.component.config.autoconnectOptions?.autoRestartSigningAfterAction?await this.startSigning():this.component.stateManager.transitionTo(A,"Ready.")}handleStartSigningError(){this.component.currentState===R.CONNECTED_MOUSE_FALLBACK&&(this.component.resetDrawingState(),this.component.mouseManager?.addListeners(),this.component.stateManager.transitionTo(R.CONNECTED_MOUSE_FALLBACK))}handleError(A,I){console.error(`Signosoft Signpad: ${A}`,I),this.component.stateManager.transitionTo(R.ERROR,A,I)}}class cg{constructor(A,I={minWidth:1,maxWidth:3,color:"#000000"}){this.lastDrawPoint=null,this.canvas=A;const g=A.getContext("2d");if(!g)throw new Error("Could not get 2D rendering context for canvas.");this.ctx=g,this.currentDrawingOptions=I,this.configureCanvasForDPI(),this.applyDrawingStyles(this.currentDrawingOptions)}get drawingOptions(){return{...this.currentDrawingOptions}}updateDrawingOptions(A){this.currentDrawingOptions=A,this.applyDrawingStyles(this.currentDrawingOptions)}drawSegment(A){const I=this.ctx,g=this.canvas,E=this.currentDrawingOptions,D=A.relativeX??0,S=A.relativeY??0,a=D*g.width,h=S*g.height,F=this.drawingOptions.minWidth+(this.drawingOptions.maxWidth-this.drawingOptions.minWidth)*(A.pressure??0);I.strokeStyle=E.color??"#000000",I.lineWidth=F,A.inContact?this.lastDrawPoint?(I.beginPath(),I.moveTo(this.lastDrawPoint.x,this.lastDrawPoint.y),I.lineTo(a,h),I.stroke(),this.lastDrawPoint={x:a,y:h}):this.lastDrawPoint={x:a,y:h}:this.lastDrawPoint=null}clear(){this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height),this.lastDrawPoint=null}configureCanvasForDPI(){const A=window.devicePixelRatio||1,I=this.canvas.getBoundingClientRect(),g=I.width||this.canvas.clientWidth||0,E=I.height||this.canvas.clientHeight||0;if(g<=0||E<=0)return;const D=Math.round(g*A),S=Math.round(E*A);this.canvas.width===D&&this.canvas.height===S||(this.canvas.width=D,this.canvas.height=S)}applyDrawingStyles(A){this.ctx.strokeStyle=A.color??"#000000",this.ctx.lineCap="round",this.ctx.lineJoin="round",this.ctx.globalCompositeOperation="source-over"}}class Yg{constructor(A){this.sigLayer=null,this.debugCallbackRegistrationCount=0,this.cachedDeviceInfo=null,this.lastPenDispatchTime=0,this.penDataToDispatch=null,this.throttleDelayMs=16,this.component=A}async connect(A=!1,I=!1){this.component.stateManager.transitionTo(R.CONNECTING,A?L.AUTO_CONNECTING:L.CONNECTING_TO_DEVICE);try{const g=await this.sigLayer?.connect(A),E=this.sigLayer?.isConnected()??!1,D=!!(g&&E),S=D?this.normalizeDeviceInfo(await this.sigLayer?.getDeviceInfo()):null;this.cachedDeviceInfo=S??null;const a=D&&(S?.deviceName??S?.name??null)==="Pointer Input (Fallback Mode)",h=this.component.canvasRef;let F,l;if(D&&!a){const f=S?.deviceName??S?.name??X.CONNECTED_UNKNOWN;this.component.setDeviceStatusText(f),F=R.CONNECTED_PHYSICAL,l=L.TEXT_SIGN_WITH_PHYSICAL,this.component.mouseManager?.areListenersAttached()&&this.component.mouseManager?.removeListeners()}else if(D&&a||!D&&I)this.component.setDeviceStatusText(X.MOUSE),F=R.CONNECTED_MOUSE_FALLBACK,l=L.TEXT_SIGN_WITH_MOUSE;else return this.component.stateManager.transitionTo(R.DISCONNECTED,L.NO_DEVICE_FOUND),!1;const p=this.component.configManager.getDrawingOptions();return this.sigLayer?.isInSigningMode?.()&&await this.sigLayer.stopSigning(),await this.sigLayer?.startSigning(h,!0,p),this.component.stateManager.transitionTo(F,l),this.component.dispatch(Y.SIGN_CONNECT,{deviceInfo:S}),!0}catch(g){return console.error("Signosoft Signpad: Error in connect method:",g),this.component.stateManager.transitionTo(R.ERROR,L.CONNECTION_ERROR,g),!1}}async disconnect(){this.component.stateManager.transitionTo(R.DISCONNECTING,L.DISCONNECTING_DEVICE);try{await this.sigLayer?.disconnect(),this.sigLayer=null,this.cachedDeviceInfo=null}catch(A){console.error("Signosoft Signpad: Error during disconnect",A),this.component.stateManager.transitionTo(R.ERROR,L.ERROR_DISCONNECTION,A)}}hasSignatureLayer(){return this.sigLayer!==null}async getDeviceInfo(){if(this.cachedDeviceInfo)return this.cachedDeviceInfo;const A=this.normalizeDeviceInfo(await this.sigLayer?.getDeviceInfo());return this.cachedDeviceInfo=A??null,A}isDeviceConnected(){return this.sigLayer?.isConnected()??!1}isSigningActive(){return this.sigLayer?.isInSigningMode?.()??!1}async startSigning(A,I){if(!this.sigLayer)return!1;const g=I??this.component.configManager.getDrawingOptions();return await this.sigLayer.startSigning(A,!0,g),!0}async stopSigning(){try{if(this.sigLayer)return await this.sigLayer.stopSigning()}catch(A){console.warn("Signosoft Signpad: SigLayer stop failed, continuing cleanup",A)}finally{this.component.mouseManager?.removeListeners(),this.component.resetDrawingState(),console.log("[ConnectionManager] Signing stopped and mouse listeners removed.")}}async clearSignature(){this.sigLayer?.isInSigningMode&&await this.sigLayer.clearSignature()}async ensureSignatureLayer(){if(!this.sigLayer)try{this.sigLayer=new SignatureLayer,this.setupCallbacks()}catch(A){throw console.error("Signosoft Signpad: Error instantiating driver",A),this.component.stateManager.transitionTo(R.ERROR,L.ERROR_INSTANTIATING_DRIVER,A),A}}setupCallbacks(){this.sigLayer&&(this.debugCallbackRegistrationCount+=1,console.log(`[Signpad Debug] SignatureLayer callbacks registered (${this.debugCallbackRegistrationCount})`),this.sigLayer.onOK(()=>this.component.buttonManager.handleOk()),this.sigLayer.onClear(()=>this.component.buttonManager.handleClear()),this.sigLayer.onCancel(()=>this.component.buttonManager.handleCancel()),this.sigLayer.onPen(A=>{A.inContact&&!this.component.hasStartedDrawing&&this.component.stateManager.setDrawingStarted(!0),this.runThrottledPenDispatch(A)}),this.sigLayer.onUnexpectedDisconnect(()=>{const A=this.component.currentState;A!==R.DISCONNECTING&&A!==R.INITIAL&&A!==R.DISCONNECTED&&A!==R.ERROR&&(this.component.stateManager.transitionTo(R.DISCONNECTED,L.DEVICE_UNEXPECTEDLY_DISCONNECTED),this.component.dispatch(Y.SIGN_DISCONNECT))}))}runThrottledPenDispatch(A){if(this.component.stateManager.isBusy||this.component.stateManager.isError)return;this.penDataToDispatch=A;const I=performance.now();I-this.lastPenDispatchTime>this.throttleDelayMs&&(this.component.dispatch(Y.SIGN_PEN,this.penDataToDispatch),this.lastPenDispatchTime=I,this.penDataToDispatch=null)}async initWithLease(A){await this.ensureSignatureLayer(),this.sigLayer&&await this.sigLayer.initialize(A)}isFallback(A,I,g){const D=(A?.deviceName??A?.name??null)==="Pointer Input (Fallback Mode)",S=this.component.currentState===R.CONNECTED_MOUSE_FALLBACK,a=this.component.deviceStatusText===X.MOUSE;return D||S||a||g&&!I}normalizeDeviceInfo(A){return A?!A.deviceName&&A.name?{...A,deviceName:A.name}:A:null}}class eg{constructor(A){this.component=A}get deviceStatusKey(){return this.component.currentState===R.CONNECTED_MOUSE_FALLBACK?X.MOUSE:this.isConnected?this.component.deviceStatusText||X.CONNECTED_UNKNOWN:X.NOT_CONNECTED}get statusMessageKey(){return this.component.statusMessage||""}get additionalTextKey(){const A=R,I=L;switch(this.component.currentState){case A.INITIAL:case A.DISCONNECTED:case A.ERROR:return I.TEXT_START_SIGNING;case A.CONNECTED_PHYSICAL:return I.TEXT_SIGN_WITH_PHYSICAL;case A.CONNECTED_MOUSE_FALLBACK:return I.TEXT_SIGN_WITH_MOUSE;case A.SIGNING_ACTIVE:return I.TEXT_SIGNING_WITH_DEVICE;default:return I.TEXT_SIGN_GENERIC}}get isConnected(){const A=this.component.currentState;return A===R.CONNECTED_PHYSICAL||A===R.CONNECTED_MOUSE_FALLBACK||A===R.SIGNING_ACTIVE||A===R.PROCESSING_OK||A===R.PROCESSING_CLEAR||A===R.PROCESSING_CANCEL}get isBusy(){const A=this.component.currentState;return A===R.CONNECTING||A===R.WAITING_FOR_DEVICE_SELECTION||A===R.PROCESSING_OK||A===R.PROCESSING_CLEAR||A===R.PROCESSING_CANCEL||A===R.DISCONNECTING}get isError(){return this.component.currentState===R.ERROR}get actionButtonsDisabled(){return!this.isConnected||!this.component.hasStartedDrawing||this.isBusy}get connectButtonDisabled(){return this.isBusy||this.isConnected}get disconnectButtonDisabled(){const A=this.component.currentState;return A===R.DISCONNECTED||A===R.INITIAL||this.isBusy}transitionTo(A,I="",g){const E=this.component.currentState;E===A&&this.component.statusMessage===I&&!g||(this.component.setCurrentState(A),this.component.setStatusMessage(I),this.handleSideEffects(A,E),g&&this.component.dispatch(Y.SIGN_ERROR,g))}setDrawingStarted(A){this.component.hasStartedDrawing!==A&&this.component.setHasStartedDrawing(A)}handleSideEffects(A,I){const g=E=>E===R.INITIAL||E===R.DISCONNECTED||E===R.ERROR;g(A)?(this.component.setDeviceStatusText(X.NOT_CONNECTED),g(I)||(this.component.resetDrawingState(),this.component.mouseManager?.removeListeners())):(A===R.CONNECTED_PHYSICAL||A===R.CONNECTED_MOUSE_FALLBACK)&&(A===R.CONNECTED_MOUSE_FALLBACK?I===R.PROCESSING_OK||I===R.PROCESSING_CLEAR||I===R.PROCESSING_CANCEL||this.component.mouseManager?.addListeners():I===R.CONNECTED_MOUSE_FALLBACK&&this.component.mouseManager?.removeListeners())}}class ng{constructor(A,I){this.isDrawing=!1,this.sequenceCounter=0,this.sessionStartTime=null,this.debugListenerRegistrationCount=0,this.listenersAttached=!1,this.canvas=A,this.onPenData=I,this.boundHandleMouseDown=this.handleMouseDown.bind(this),this.boundHandleMouseMove=this.handleMouseMove.bind(this),this.boundHandleMouseUp=this.handleMouseUp.bind(this),this.boundHandleMouseLeave=this.handleMouseLeave.bind(this)}get isCurrentlyDrawing(){return this.isDrawing}addListeners(){if(this.listenersAttached){console.log("[Signpad Debug] Mouse listeners already registered");return}this.listenersAttached=!0,this.debugListenerRegistrationCount+=1,console.log(`[Signpad Debug] Mouse listeners registered (${this.debugListenerRegistrationCount})`),this.canvas.addEventListener("mousedown",this.boundHandleMouseDown),this.canvas.addEventListener("mousemove",this.boundHandleMouseMove),this.canvas.addEventListener("mouseup",this.boundHandleMouseUp),this.canvas.addEventListener("mouseleave",this.boundHandleMouseLeave)}removeListeners(){if(!this.listenersAttached){console.log("[Signpad Debug] Mouse listeners already removed");return}this.listenersAttached=!1,console.log("[Signpad Debug] Mouse listeners removed"),this.canvas.removeEventListener("mousedown",this.boundHandleMouseDown),this.canvas.removeEventListener("mousemove",this.boundHandleMouseMove),this.canvas.removeEventListener("mouseup",this.boundHandleMouseUp),this.canvas.removeEventListener("mouseleave",this.boundHandleMouseLeave),this.isDrawing=!1,this.sequenceCounter=0}areListenersAttached(){return this.listenersAttached}resetSession(){this.isDrawing=!1,this.sequenceCounter=0,this.sessionStartTime=null}handleMouseDown(A){this.isDrawing=!0,this.sequenceCounter=0,this.sessionStartTime===null&&(this.sessionStartTime=Date.now()),this.processMouseEvent(A,!0)}handleMouseMove(A){this.isDrawing&&(this.sequenceCounter++,this.processMouseEvent(A,!0))}handleMouseUp(A){this.isDrawing&&(this.isDrawing=!1,this.processMouseEvent(A,!1),this.sequenceCounter=0)}handleMouseLeave(A){this.isDrawing&&(this.isDrawing=!1,this.processMouseEvent(A,!1),this.sequenceCounter=0)}processMouseEvent(A,I){const{x:g,y:E}=this.getNormalizedCoordinates(A),D={relativeX:g,relativeY:E,pressure:I?.5:0,inContact:I,timestamp:this.timestampToSeconds()};this.onPenData(D)}getNormalizedCoordinates(A){const I=this.canvas.getBoundingClientRect(),g=(A.clientX-I.left)/I.width,E=(A.clientY-I.top)/I.height;return{x:g,y:E}}timestampToSeconds(){this.sessionStartTime===null&&(this.sessionStartTime=Date.now());const I=(Date.now()-this.sessionStartTime)/1e3;return Number(I.toFixed(3))}}const LA={en:{OK:"OK",CLEAR:"Clear",CANCEL:"Cancel",CLEAR_SIGNATURE:"Clear signature",DISCONNECT:"Disconnect",CONNECT_SIGNPAD:"Connect Signpad",NOT_CONNECTED:"Not Connected",CONNECTED:"Connected",CONNECTING:"Connecting...",MOUSE:"Mouse",CONNECTED_UNKNOWN_DEVICE:"Connected (Unknown Device)",AUTO_CONNECTING:"Auto-connecting to device...",CONNECTING_TO_DEVICE:"Connecting to your device...",DISCONNECTING_DEVICE:"Disconnecting device...",COMPONENT_INITIALIZED:"Component initialized.",TEXT_START_SIGNING:"Connect your device.",TEXT_SIGN_WITH_PHYSICAL:"Please sign using the device pen.",TEXT_SIGN_WITH_MOUSE:"Please sign using your mouse.",TEXT_SIGN_GENERIC:"Sign in the area above using mouse or pen.",TEXT_SIGNING_WITH_DEVICE:"Signing with {device}",NO_DEVICE_FOUND:"No device found.",CONNECTION_ERROR:"Connection error.",ERROR_DISCONNECTION:"Error during disconnection.",ERROR_INSTANTIATING_DRIVER:"Error instantiating driver.",SIGNPAD_DISCONNECTED:"Signpad disconnected.",DEVICE_UNEXPECTEDLY_DISCONNECTED:"Device unexpectedly disconnected.",SIGN_SUCCESSFUL:"Signature saved successfully.",SIGN_CANCELLED:"Signing cancelled.",SIGN_CLEARED:"Signature cleared.",MISSING_LICENSE_KEY:"No license key provided. Please provide a license key to connect.",READY_TO_CONNECT:"Ready to connect.",SIGNPAD_DETECTED:"Signpad detected. Click 'Connect Signpad' to begin.",NO_LICENSE_KEY:"Device connected, but no license key provided."},cs:{OK:"OK",CLEAR:"Smazat",CANCEL:"Zrušit",CLEAR_SIGNATURE:"Smazat podpis",DISCONNECT:"Odpojit",CONNECT_SIGNPAD:"Připojit Signpad",NOT_CONNECTED:"Nepřipojeno",CONNECTED:"Připojeno",CONNECTING:"Připojování...",MOUSE:"Myš",CONNECTED_UNKNOWN_DEVICE:"Připojeno (neznámé zařízení)",AUTO_CONNECTING:"Automatické připojování k zařízení...",CONNECTING_TO_DEVICE:"Připojování k vašemu zařízení...",DISCONNECTING_DEVICE:"Odpojování zařízení...",COMPONENT_INITIALIZED:"Komponenta byla inicializována.",TEXT_START_SIGNING:"Připojte své zařízení.",TEXT_SIGN_WITH_PHYSICAL:"Podepište se perem zařízení.",TEXT_SIGN_WITH_MOUSE:"Podepište se pomocí myši.",TEXT_SIGN_GENERIC:"Podepište se v oblasti výše pomocí myši nebo pera.",TEXT_SIGNING_WITH_DEVICE:"Podepisování pomocí: {device}",NO_DEVICE_FOUND:"Zařízení nebylo nalezeno.",CONNECTION_ERROR:"Chyba připojení.",ERROR_DISCONNECTION:"Chyba při odpojování.",ERROR_INSTANTIATING_DRIVER:"Chyba při inicializaci ovladače.",SIGNPAD_DISCONNECTED:"Signpad byl odpojen.",DEVICE_UNEXPECTEDLY_DISCONNECTED:"Zařízení bylo neočekávaně odpojeno.",SIGN_SUCCESSFUL:"Podpis byl úspěšně uložen.",SIGN_CANCELLED:"Podepisování bylo zrušeno.",SIGN_CLEARED:"Podpis byl vymazán.",MISSING_LICENSE_KEY:"Nebyl poskytnut licenční klíč. Pro připojení prosím zadejte licenční klíč.",READY_TO_CONNECT:"Připraveno k připojení.",SIGNPAD_DETECTED:"Signpad byl nalezen. Klikněte na 'Připojit Signpad' pro spuštění.",NO_LICENSE_KEY:"Zařízení je připojeno, ale nebyl poskytnut licenční klíč."}};class Hg{constructor(A){this.translations=LA.en,this.currentLang="",this.currentPath=void 0,this.component=A}t(A,I={}){let g=this.translations[A]||A;for(const[E,D]of Object.entries(I))g=g.replace(new RegExp(`{${E}}`,"g"),D);return g}async loadLanguage(A,I,g){const E=I?.trim();if(A===this.currentLang&&E===this.currentPath)return;let D=this.getBaselineTranslations(A);const S=this.resolveInlineTranslations(A,g);if(S){this.translations={...D,...S},this.currentLang=A,this.currentPath=E,this.component.requestUpdate();return}if(!E){this.translations=D,this.currentLang=A,this.currentPath=E,this.component.requestUpdate();return}const a=this.constructUrl(A,E);try{const h=await fetch(a);if(h.ok){const F=await h.json();D={...D,...F},console.log(`signosoft-signpad: External translations loaded from ${a}`)}else I&&console.info(`signosoft-signpad: Custom path provided, but file not found at ${a}`)}catch(h){console.warn(`signosoft-signpad: Failed to load external translations from ${a}. Using built-in defaults.`,h)}this.translations=D,this.currentLang=A,this.currentPath=E,this.component.requestUpdate()}getBaselineTranslations(A){const I=LA.en;return A!=="en"&&LA.hasOwnProperty(A)?{...I,...LA[A]}:{...I}}resolveInlineTranslations(A,I){return I?typeof Object.values(I)[0]=="string"?I:I[A]:void 0}constructUrl(A,I){const g=I.trim();let E="";return g.endsWith(".json")?E=g:E=`${g.replace(/\/+$/,"")}/${A}.json`,E}}class rg{constructor(A){this.configEventHandlers={},this.customEventListenerCache=new WeakMap,this.component=A}apply(A){const I=this.component.config;if(!I){this.clearConfigEventHandlers();return}this.applyLocalization(A,I),this.applyDrawingOptions(A,I),this.syncConfigEventHandlers(I)}getUiVisibilityOptions(){const A=this.component.config.uiVisibilityOptions;return{topBarVisible:A?.topBarVisible??!0,topBarClearButtonVisible:A?.topBarClearButtonVisible??!1,topBarConnectButtonVisible:A?.topBarConnectButtonVisible??!0,bottomBarVisible:A?.bottomBarVisible??!0,okButtonVisible:A?.okButtonVisible??!0,clearButtonVisible:A?.clearButtonVisible??!0,cancelButtonVisible:A?.cancelButtonVisible??!0,canvasLineVisible:A?.canvasLineVisible??!0,deviceStatusTextVisible:A?.deviceStatusTextVisible??!0,additionalTextVisible:A?.additionalTextVisible??!0}}getDrawingOptions(){const A=this.component.config.canvasAndDrawingOptions;return{minWidth:A?.minWidth??1,maxWidth:A?.maxWidth??3,color:A?.color??"#000000"}}applyLocalization(A,I){const g=A?.languageOptions,E=I.languageOptions;(!A||g?.lang!==E?.lang||g?.langPath!==E?.langPath||g?.translations!==E?.translations)&&this.component.localizationManager.loadLanguage(E?.lang??"en",E?.langPath,E?.translations)}applyDrawingOptions(A,I){const g=A?.canvasAndDrawingOptions,E=I.canvasAndDrawingOptions;this.component.canvasManager&&(!A||g?.minWidth!==E?.minWidth||g?.maxWidth!==E?.maxWidth||g?.color!==E?.color)&&this.component.canvasManager.updateDrawingOptions(this.getDrawingOptions())}syncConfigEventHandlers(A){const I=S=>{if(!S)return;const a=this.customEventListenerCache.get(S);if(a)return a;const h=F=>{S(F)};return this.customEventListenerCache.set(S,h),h},g=A.eventCallbacks,E={[Y.SIGN_CONNECT]:I(g?.onConnect),[Y.SIGN_DISCONNECT]:I(g?.onDisconnect),[Y.SIGN_PEN]:I(g?.onPen),[Y.SIGN_OK]:I(g?.onOk),[Y.SIGN_CLEAR]:I(g?.onClear),[Y.SIGN_CANCEL]:I(g?.onCancel),[Y.SIGN_ERROR]:I(g?.onError)},D=new Set([...Object.keys(this.configEventHandlers),...Object.keys(E)]);for(const S of D){const a=this.configEventHandlers[S],h=E[S];a&&a!==h&&this.component.removeEventListener(S,a),h&&a!==h&&this.component.addEventListener(S,h),h?this.configEventHandlers[S]=h:delete this.configEventHandlers[S]}}clearConfigEventHandlers(){for(const[A,I]of Object.entries(this.configEventHandlers))I&&this.component.removeEventListener(A,I);this.configEventHandlers={}}}const qg=":host{--primary-color-0: #4e56ea;--primary-color-10: #7178ee;--background-color-0: #f1f2fd;--background-color-10: #e3e4fc;--text-color-0: #333e4a;--white-color: #ffffff;--grey-color: #b5b9be;--min-height: 48px;--spacing-constraints: 16px 24px;--sign-font-family: Arial, Helvetica, sans-serif;--sign-common-border-radius: 8px;--sign-top-bar-bg-base: var(--background-color-10);--sign-top-bar-text-base: var(--primary-color-0);--sign-top-bar-padding: var(--spacing-constraints);--sign-top-bar-min-height: var(--min-height);--sign-top-bar-border-top-left-radius: var(--sign-common-border-radius);--sign-top-bar-border-top-right-radius: var(--sign-common-border-radius);--sign-top-bar-border-bottom-left-radius: 0;--sign-top-bar-border-bottom-right-radius: 0;--sign-canvas-bg-base: var(--background-color-0);--sign-canvas-wrapper-border-top-left-radius: 0;--sign-canvas-wrapper-border-top-right-radius: 0;--sign-canvas-wrapper-border-bottom-left-radius: 0;--sign-canvas-wrapper-border-bottom-right-radius: 0;--sign-line-height: 22px;--sign-line-margin-bottom: 16px;--sign-line-border-base: var(--primary-color-10);--sign-line-additional-text-color: var(--text-color-0);--sign-line-margin: 0px 24px var(--sign-line-margin-bottom) 24px;--sign-canvas-line-text-font-size: 12px;--sign-canvas-height-offset: var(--sign-line-height);--sign-bottom-bar-bg-base: var(--background-color-10);--sign-bottom-bar-padding: var(--spacing-constraints);--sign-bottom-bar-min-height: var(--min-height);--sign-bottom-bar-gap: 12px;--sign-bottom-bar-border-top-left-radius: 0;--sign-bottom-bar-border-top-right-radius: 0;--sign-bottom-bar-border-bottom-left-radius: var(--sign-common-border-radius);--sign-bottom-bar-border-bottom-right-radius: var( --sign-common-border-radius );--sign-button-font-size: 16px;--sign-button-padding: 14px 16px;--sign-button-min-height: var(--min-height);--sign-button-border-radius: var(--sign-common-border-radius);--sign-button-font-weight: 500;--sign-button-primary-bg-base: var(--primary-color-0);--sign-button-primary-bg-hover: var(--primary-color-10);--sign-button-primary-bg-disabled: var(--grey-color);--sign-button-primary-text-base: var(--white-color);--sign-button-primary-text-hover: var(--white-color);--sign-button-primary-text-disabled: var(--white-color);--sign-button-primary-border-base: 1px solid var(--primary-color-0);--sign-button-primary-border-hover: 1px solid var(--primary-color-10);--sign-button-primary-border-disabled: 1px solid var(--grey-color);--sign-button-link-bg-base: transparent;--sign-button-link-bg-hover: var(--background-color-10);--sign-button-link-bg-disabled: transparent;--sign-button-link-text-base: var(--primary-color-0);--sign-button-link-text-hover: var(--primary-color-10);--sign-button-link-text-disabled: var(--grey-color);--sign-button-link-border-base: 1px solid var(--primary-color-0);--sign-button-link-border-hover: 1px solid var(--primary-color-10);--sign-button-link-border-disabled: 1px solid var(--grey-color);--sign-device-state-text-color-connected: green;--sign-device-state-text-color-disconnected: red;--sign-loading-overlay-bg-color: rgba(255, 255, 255, .8);--sign-loading-overlay-text-color: var(--text-color-0);--sign-loading-overlay-spinner-color: var(--primary-color-0);--sign-loading-overlay-spinner-border-color: rgba(78, 86, 234, .1);--sign-loading-overlay-spinner-size: 30px}html{font-family:var(--sign-font-family)!important}.signpad-canvas-container{display:flex;flex-direction:column;width:100%;height:100%;min-width:380px}.signpad-top-bar{display:flex;justify-content:space-between;padding:var(--sign-top-bar-padding);min-height:var(--sign-top-bar-min-height);background-color:var(--sign-top-bar-bg-base);color:var(--sign-top-bar-text-base);align-items:center;border-top-left-radius:var(--sign-top-bar-border-top-left-radius);border-top-right-radius:var(--sign-top-bar-border-top-right-radius);border-bottom-left-radius:var(--sign-top-bar-border-bottom-left-radius);border-bottom-right-radius:var(--sign-top-bar-border-bottom-right-radius)}.signpad-top-left-actions,.signpad-top-right-actions{display:flex;gap:var(--sign-bottom-bar-gap)}.signpad-top-left-actions{justify-content:flex-start}.signpad-top-right-actions{justify-content:flex-end}.signpad-canvas-wrapper{position:relative;width:100%;padding-top:16px;padding-bottom:56.25%;height:0;background-color:var(--sign-canvas-bg-base);box-sizing:border-box;overflow:hidden;border-top-left-radius:var(--sign-canvas-wrapper-border-top-left-radius);border-top-right-radius:var(--sign-canvas-wrapper-border-top-right-radius);border-bottom-left-radius:var( --sign-canvas-wrapper-border-bottom-left-radius );border-bottom-right-radius:var( --sign-canvas-wrapper-border-bottom-right-radius )}.signpad-canvas-container>.signpad-canvas-wrapper:first-child{--sign-canvas-wrapper-border-top-left-radius: var( --sign-common-border-radius );--sign-canvas-wrapper-border-top-right-radius: var( --sign-common-border-radius )}.signpad-canvas-container>.signpad-canvas-wrapper:last-child{--sign-canvas-wrapper-border-bottom-left-radius: var( --sign-common-border-radius );--sign-canvas-wrapper-border-bottom-right-radius: var( --sign-common-border-radius )}.signpad-canvas{position:absolute;width:100%;height:calc(100% - (var(--sign-canvas-height-offset) + var(--sign-line-margin-bottom)));left:0;top:0}.signpad-canvas-line-container{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;height:var(--sign-line-height);border-top:2px solid var(--sign-line-border-base);box-sizing:border-box;padding-top:6px;margin:var(--sign-line-margin)}.signpad-canvas-line-additional-text,.signpad-canvas-line-state,.signpad-canvas-line-state.connected{font-family:var(--sign-font-family);font-size:var(--sign-canvas-line-text-font-size)}.signpad-canvas-line-additional-text{color:var(--sign-line-additional-text-color);margin:0}.signpad-canvas-line-state{color:var(--sign-device-state-text-color-disconnected);margin:0}.signpad-canvas-line-state.connected{color:var(--sign-device-state-text-color-connected)}.signpad-bottom-bar{display:flex;flex-direction:row;gap:var(--sign-bottom-bar-gap);padding:var(--sign-bottom-bar-padding);min-height:var(--sign-bottom-bar-min-height);background-color:var(--sign-bottom-bar-bg-base);border-top-left-radius:var(--sign-bottom-bar-border-top-left-radius);border-top-right-radius:var(--sign-bottom-bar-border-top-right-radius);border-bottom-left-radius:var(--sign-bottom-bar-border-bottom-left-radius);border-bottom-right-radius:var(--sign-bottom-bar-border-bottom-right-radius)}.btn{font-family:var(--sign-font-family);min-height:var(--sign-button-min-height);padding:var(--sign-button-padding);margin:0;font-weight:var(--sign-button-font-weight);width:100%;font-size:var(--sign-button-font-size);border-radius:var(--sign-button-border-radius);transition:background-color .3s ease,color .3s ease,transform .1s ease}.btn:hover:not(:disabled){cursor:pointer}.btn:focus:not(:disabled){outline:none}.btn-primary{background-color:var(--sign-button-primary-bg-base);color:var(--sign-button-primary-text-base);border:var(--sign-button-primary-border-base)}.btn-primary:hover:not(:disabled){background-color:var(--sign-button-primary-bg-hover);color:var(--sign-button-primary-text-hover);border:var(--sign-button-primary-border-hover)}.btn-primary:disabled{background-color:var(--sign-button-primary-bg-disabled);color:var(--sign-button-primary-text-disabled);border:var(--sign-button-primary-border-disabled)}.btn-link{background-color:var(--sign-button-link-bg-base);color:var(--sign-button-link-text-base);border:var(--sign-button-link-border-base)}.btn-link:hover:not(:disabled){background-color:var(--sign-button-link-bg-hover);color:var(--sign-button-link-text-hover);border:var(--sign-button-link-border-hover)}.btn-link:disabled{background-color:var(--sign-button-link-bg-disabled);color:var(--sign-button-link-text-disabled);border:var(--sign-button-link-border-disabled)}.signpad-loading-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--sign-loading-overlay-bg-color);display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:10;text-align:center;gap:10px}.signpad-loading-overlay .spinner{border:4px solid var(--sign-loading-overlay-spinner-border-color);border-left-color:var(--sign-loading-overlay-spinner-color);border-radius:50%;width:var(--sign-loading-overlay-spinner-size);height:var(--sign-loading-overlay-spinner-size);animation:spin 1s linear infinite}.signpad-loading-overlay-text{font-family:var(--sign-font-family);color:var(--sign-loading-overlay-text-color);font-size:14px;margin:16px 0 0}@keyframes spin{to{transform:rotate(360deg)}}";let hI=class{constructor(){this._device=null,this._isWasmInitialized=!1,this._module=null,this._disconnectHandler=null,this._eventCallbacks=new Map,this._callbackToHandle=new Map,this._masterCallback=null,this._penAspectCorrector=null,this._unexpectedDisconnectCallbacks=new Set}get device(){return this._device}get isWasmInitialized(){return this._isWasmInitialized}get Module(){return this._module}};typeof hI<"u"&&(window.TabletDriver=hI);var MI=(()=>{var Q=typeof document<"u"?document.currentScript?.src:void 0;return(async function(A={}){var I,g=A,E,D,S=new Promise((C,B)=>{E=C,D=B}),a=typeof window=="object",h=typeof WorkerGlobalScope<"u",F=typeof process=="object"&&process.versions?.node&&process.type!="renderer";typeof __filename<"u"?Q=__filename:h&&(Q=self.location.href);var l="",p,f;if(F){var $={};l=__dirname+"/",f=C=>(C=dA(C)?new URL(C):C,$.readFileSync(C)),p=async C=>(C=dA(C)?new URL(C):C,$.readFileSync(C,void 0)),process.argv.slice(2)}else if(a||h){try{l=new URL(".",Q).href}catch{}h&&(f=C=>{var B=new XMLHttpRequest;return B.open("GET",C,!1),B.responseType="arraybuffer",B.send(null),new Uint8Array(B.response)}),p=async C=>{if(dA(C))return new Promise((i,o)=>{var w=new XMLHttpRequest;w.open("GET",C,!0),w.responseType="arraybuffer",w.onload=()=>{w.status==200||w.status==0&&w.response?i(w.response):o(w.status)},w.onerror=o,w.send(null)});var B=await fetch(C,{credentials:"same-origin"});if(B.ok)return B.arrayBuffer();throw Error(B.status+" : "+B.url)}}console.log.bind(console);var z=console.error.bind(console),AA,oA,lA=!1,IA,O,DA,gA,CA,H,YI,_A,eI,nI,dA=C=>C.startsWith("file://");function HI(){var C=oA.buffer;IA=new Int8Array(C),DA=new Int16Array(C),g.HEAPU8=O=new Uint8Array(C),gA=new Uint16Array(C),CA=new Int32Array(C),H=new Uint32Array(C),YI=new Float32Array(C),nI=new Float64Array(C),_A=new BigInt64Array(C),eI=new BigUint64Array(C)}var BA=0,hA=null;function rI(C){throw g.onAbort?.(C),C="Aborted("+C+")",z(C),lA=!0,C=new WebAssembly.RuntimeError(C+". Build with -sASSERTIONS for more info."),D(C),C}var $A;async function fg(C){if(!AA)try{var B=await p(C);return new Uint8Array(B)}catch{}if(C==$A&&AA)C=new Uint8Array(AA);else if(f)C=f(C);else throw"both async and sync fetching of the wasm failed";return C}async function pg(C,B){try{var i=await fg(C);return await WebAssembly.instantiate(i,B)}catch(o){z(`failed to asynchronously prepare wasm: ${o}`),rI(o)}}async function Og(C){var B=$A;if(!AA&&typeof WebAssembly.instantiateStreaming=="function"&&!dA(B)&&!F)try{var i=fetch(B,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(i,C)}catch(o){z(`wasm streaming compile failed: ${o}`),z("falling back to ArrayBuffer instantiation")}return pg(B,C)}var qI=C=>{for(;0<C.length;)C.shift()(g)},lI=[],dI=[],xg=()=>{var C=g.preRun.shift();dI.push(C)};class Tg{constructor(B){this.Z=B-24}}var fI=0,fA={},AI=C=>{for(;C.length;){var B=C.pop();C.pop()(B)}};function MA(C){return this.fromWireType(H[C>>2])}var wA={},QA={},pA={},OA=class extends Error{constructor(C){super(C),this.name="InternalError"}},GA=(C,B,i)=>{function o(y){if(y=i(y),y.length!==C.length)throw new OA("Mismatched type converter count");for(var N=0;N<C.length;++N)Z(C[N],y[N])}C.forEach(y=>pA[y]=B);var w=Array(B.length),s=[],K=0;B.forEach((y,N)=>{QA.hasOwnProperty(y)?w[N]=QA[y]:(s.push(y),wA.hasOwnProperty(y)||(wA[y]=[]),wA[y].push(()=>{w[N]=QA[y],++K,K===s.length&&o(w)}))}),s.length===0&&o(w)},pI,r=C=>{for(var B="";O[C];)B+=pI[O[C++]];return B},k=class extends Error{constructor(C){super(C),this.name="BindingError"}},jg=C=>{throw new k(C)};function Wg(C,B,i={}){var o=B.name;if(!C)throw new k(`type "${o}" must have a positive integer typeid pointer`);if(QA.hasOwnProperty(C)){if(i.Ga)return;throw new k(`Cannot register type '${o}' twice`)}QA[C]=B,delete pA[C],wA.hasOwnProperty(C)&&(B=wA[C],delete wA[C],B.forEach(w=>w()))}function Z(C,B,i={}){return Wg(C,B,i)}var OI=(C,B,i)=>{switch(B){case 1:return i?o=>IA[o]:o=>O[o];case 2:return i?o=>DA[o>>1]:o=>gA[o>>1];case 4:return i?o=>CA[o>>2]:o=>H[o>>2];case 8:return i?o=>_A[o>>3]:o=>eI[o>>3];default:throw new TypeError(`invalid integer width (${B}): ${C}`)}},II=C=>{throw new k(C.Y.aa.$.name+" instance already deleted")},gI=!1,xI=()=>{},RA=C=>typeof FinalizationRegistry>"u"?(RA=B=>B,C):(gI=new FinalizationRegistry(B=>{B=B.Y,--B.count.value,B.count.value===0&&(B.da?B.ha.ia(B.da):B.aa.$.ia(B.Z))}),RA=B=>{var i=B.Y;return i.da&&gI.register(B,{Y:i},B),B},xI=B=>{gI.unregister(B)},RA(C));function xA(){}var TA=(C,B)=>Object.defineProperty(B,"name",{value:C}),TI={},jI=(C,B,i)=>{if(C[B].ba===void 0){var o=C[B];C[B]=function(...w){if(!C[B].ba.hasOwnProperty(w.length))throw new k(`Function '${i}' called with an invalid number of arguments (${w.length}) - expects one of (${C[B].ba})!`);return C[B].ba[w.length].apply(this,w)},C[B].ba=[],C[B].ba[o.la]=o}},CI=(C,B,i)=>{if(g.hasOwnProperty(C)){if(i===void 0||g[C].ba!==void 0&&g[C].ba[i]!==void 0)throw new k(`Cannot register public name '${C}' twice`);if(jI(g,C,C),g[C].ba.hasOwnProperty(i))throw new k(`Cannot register multiple overloads of a function with the same number of arguments (${i})!`);g[C].ba[i]=B}else g[C]=B,g[C].la=i},bg=C=>{C=C.replace(/[^a-zA-Z0-9_]/g,"$");var B=C.charCodeAt(0);return 48<=B&&57>=B?`_${C}`:C};function mg(C,B,i,o,w,s,K,y){this.name=C,this.constructor=B,this.ka=i,this.ia=o,this.ea=w,this.Ba=s,this.oa=K,this.za=y,this.Ja=[]}var BI=(C,B,i)=>{for(;B!==i;){if(!B.oa)throw new k(`Expected null or instance of ${i.name}, got an instance of ${B.name}`);C=B.oa(C),B=B.ea}return C},QI=C=>{if(C===null)return"null";var B=typeof C;return B==="object"||B==="array"||B==="function"?C.toString():""+C};function Zg(C,B){if(B===null){if(this.ra)throw new k(`null is not a valid ${this.name}`);return 0}if(!B.Y)throw new k(`Cannot pass "${QI(B)}" as a ${this.name}`);if(!B.Y.Z)throw new k(`Cannot pass deleted object as a pointer of type ${this.name}`);return BI(B.Y.Z,B.Y.aa.$,this.$)}function ug(C,B){if(B===null){if(this.ra)throw new k(`null is not a valid ${this.name}`);if(this.qa){var i=this.sa();return C!==null&&C.push(this.ia,i),i}return 0}if(!B||!B.Y)throw new k(`Cannot pass "${QI(B)}" as a ${this.name}`);if(!B.Y.Z)throw new k(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.pa&&B.Y.aa.pa)throw new k(`Cannot convert argument of type ${B.Y.ha?B.Y.ha.name:B.Y.aa.name} to parameter type ${this.name}`);if(i=BI(B.Y.Z,B.Y.aa.$,this.$),this.qa){if(B.Y.da===void 0)throw new k("Passing raw pointer to smart pointer is illegal");switch(this.Oa){case 0:if(B.Y.ha===this)i=B.Y.da;else throw new k(`Cannot convert argument of type ${B.Y.ha?B.Y.ha.name:B.Y.aa.name} to parameter type ${this.name}`);break;case 1:i=B.Y.da;break;case 2:if(B.Y.ha===this)i=B.Y.da;else{var o=B.clone();i=this.Ka(i,u(()=>o.delete())),C!==null&&C.push(this.ia,i)}break;default:throw new k("Unsupporting sharing policy")}}return i}function Xg(C,B){if(B===null){if(this.ra)throw new k(`null is not a valid ${this.name}`);return 0}if(!B.Y)throw new k(`Cannot pass "${QI(B)}" as a ${this.name}`);if(!B.Y.Z)throw new k(`Cannot pass deleted object as a pointer of type ${this.name}`);if(B.Y.aa.pa)throw new k(`Cannot convert argument of type ${B.Y.aa.name} to parameter type ${this.name}`);return BI(B.Y.Z,B.Y.aa.$,this.$)}var WI=(C,B,i)=>B===i?C:i.ea===void 0?null:(C=WI(C,B,i.ea),C===null?null:i.za(C)),Pg={},Vg=(C,B)=>{if(B===void 0)throw new k("ptr should not be undefined");for(;C.ea;)B=C.oa(B),C=C.ea;return Pg[B]},jA=(C,B)=>{if(!B.aa||!B.Z)throw new OA("makeClassHandle requires ptr and ptrType");if(!!B.ha!=!!B.da)throw new OA("Both smartPtrType and smartPtr must be specified");return B.count={value:1},RA(Object.create(C,{Y:{value:B,writable:!0}}))};function WA(C,B,i,o,w,s,K,y,N,M,G){this.name=C,this.$=B,this.ra=i,this.pa=o,this.qa=w,this.Ia=s,this.Oa=K,this.xa=y,this.sa=N,this.Ka=M,this.ia=G,w||B.ea!==void 0?this.toWireType=ug:(this.toWireType=o?Zg:Xg,this.fa=null)}var bI=(C,B,i)=>{if(!g.hasOwnProperty(C))throw new OA("Replacing nonexistent public symbol");g[C].ba!==void 0&&i!==void 0?g[C].ba[i]=B:(g[C]=B,g[C].la=i)},mI=[],ZI,P=(C,B)=>{C=r(C);var i;if((i=mI[B])||(mI[B]=i=ZI.get(B)),typeof i!="function")throw new k(`unknown function pointer with signature ${C}: ${B}`);return i};class zg extends Error{}var uI=C=>{C=wC(C);var B=r(C);return iA(C),B},EI=(C,B)=>{function i(s){w[s]||QA[s]||(pA[s]?pA[s].forEach(i):(o.push(s),w[s]=!0))}var o=[],w={};throw B.forEach(i),new zg(`${C}: `+o.map(uI).join([", "]))};function XI(C){for(var B=1;B<C.length;++B)if(C[B]!==null&&C[B].fa===void 0)return!0;return!1}function PI(C,B,i,o,w,s){var K=B.length;if(2>K)throw new k("argTypes array size mismatch! Must at least get return value and 'this' types!");var y=B[1]!==null&&i!==null,N=XI(B);for(i=B[0].name!=="void",o=[C,jg,o,w,AI,B[0],B[1]],w=0;w<K-2;++w)o.push(B[w+2]);if(!N)for(w=y?1:2;w<B.length;++w)B[w].fa!==null&&o.push(B[w].fa);N=XI(B),w=B.length-2;var M=[],G=["fn"];for(y&&G.push("thisWired"),K=0;K<w;++K)M.push(`arg${K}`),G.push(`arg${K}Wired`);M=M.join(","),G=G.join(","),M=`return function (${M}) {
|
|
2
2
|
`,N&&(M+=`var destructors = [];
|
|
3
3
|
`);var t=N?"destructors":"null",e="humanName throwBindingError invoker fn runDestructors retType classParam".split(" ");for(y&&(M+=`var thisWired = classParam['toWireType'](${t}, this);
|
|
4
4
|
`),K=0;K<w;++K)M+=`var arg${K}Wired = argType${K}['toWireType'](${t}, arg${K});
|
package/package.json
CHANGED
|
@@ -19,6 +19,10 @@ html {
|
|
|
19
19
|
background-color: var(--sign-top-bar-bg-base);
|
|
20
20
|
color: var(--sign-top-bar-text-base);
|
|
21
21
|
align-items: center;
|
|
22
|
+
border-top-left-radius: var(--sign-top-bar-border-top-left-radius);
|
|
23
|
+
border-top-right-radius: var(--sign-top-bar-border-top-right-radius);
|
|
24
|
+
border-bottom-left-radius: var(--sign-top-bar-border-bottom-left-radius);
|
|
25
|
+
border-bottom-right-radius: var(--sign-top-bar-border-bottom-right-radius);
|
|
22
26
|
}
|
|
23
27
|
|
|
24
28
|
.signpad-top-left-actions,
|
|
@@ -44,6 +48,32 @@ html {
|
|
|
44
48
|
background-color: var(--sign-canvas-bg-base);
|
|
45
49
|
box-sizing: border-box;
|
|
46
50
|
overflow: hidden;
|
|
51
|
+
border-top-left-radius: var(--sign-canvas-wrapper-border-top-left-radius);
|
|
52
|
+
border-top-right-radius: var(--sign-canvas-wrapper-border-top-right-radius);
|
|
53
|
+
border-bottom-left-radius: var(
|
|
54
|
+
--sign-canvas-wrapper-border-bottom-left-radius
|
|
55
|
+
);
|
|
56
|
+
border-bottom-right-radius: var(
|
|
57
|
+
--sign-canvas-wrapper-border-bottom-right-radius
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.signpad-canvas-container > .signpad-canvas-wrapper:first-child {
|
|
62
|
+
--sign-canvas-wrapper-border-top-left-radius: var(
|
|
63
|
+
--sign-common-border-radius
|
|
64
|
+
);
|
|
65
|
+
--sign-canvas-wrapper-border-top-right-radius: var(
|
|
66
|
+
--sign-common-border-radius
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.signpad-canvas-container > .signpad-canvas-wrapper:last-child {
|
|
71
|
+
--sign-canvas-wrapper-border-bottom-left-radius: var(
|
|
72
|
+
--sign-common-border-radius
|
|
73
|
+
);
|
|
74
|
+
--sign-canvas-wrapper-border-bottom-right-radius: var(
|
|
75
|
+
--sign-common-border-radius
|
|
76
|
+
);
|
|
47
77
|
}
|
|
48
78
|
.signpad-canvas {
|
|
49
79
|
position: absolute;
|
|
@@ -95,6 +125,10 @@ html {
|
|
|
95
125
|
padding: var(--sign-bottom-bar-padding);
|
|
96
126
|
min-height: var(--sign-bottom-bar-min-height);
|
|
97
127
|
background-color: var(--sign-bottom-bar-bg-base);
|
|
128
|
+
border-top-left-radius: var(--sign-bottom-bar-border-top-left-radius);
|
|
129
|
+
border-top-right-radius: var(--sign-bottom-bar-border-top-right-radius);
|
|
130
|
+
border-bottom-left-radius: var(--sign-bottom-bar-border-bottom-left-radius);
|
|
131
|
+
border-bottom-right-radius: var(--sign-bottom-bar-border-bottom-right-radius);
|
|
98
132
|
}
|
|
99
133
|
.btn {
|
|
100
134
|
font-family: var(--sign-font-family);
|
|
@@ -120,17 +154,17 @@ html {
|
|
|
120
154
|
.btn-primary {
|
|
121
155
|
background-color: var(--sign-button-primary-bg-base);
|
|
122
156
|
color: var(--sign-button-primary-text-base);
|
|
123
|
-
border:
|
|
157
|
+
border: var(--sign-button-primary-border-base);
|
|
124
158
|
}
|
|
125
159
|
.btn-primary:hover:not(:disabled) {
|
|
126
160
|
background-color: var(--sign-button-primary-bg-hover);
|
|
127
161
|
color: var(--sign-button-primary-text-hover);
|
|
128
|
-
border:
|
|
162
|
+
border: var(--sign-button-primary-border-hover);
|
|
129
163
|
}
|
|
130
164
|
.btn-primary:disabled {
|
|
131
165
|
background-color: var(--sign-button-primary-bg-disabled);
|
|
132
166
|
color: var(--sign-button-primary-text-disabled);
|
|
133
|
-
border:
|
|
167
|
+
border: var(--sign-button-primary-border-disabled);
|
|
134
168
|
}
|
|
135
169
|
.btn-link {
|
|
136
170
|
background-color: var(--sign-button-link-bg-base);
|
|
@@ -14,15 +14,24 @@
|
|
|
14
14
|
|
|
15
15
|
/* CSS Variables */
|
|
16
16
|
--sign-font-family: Arial, Helvetica, sans-serif;
|
|
17
|
+
--sign-common-border-radius: 8px;
|
|
17
18
|
|
|
18
19
|
/* Top Bar */
|
|
19
20
|
--sign-top-bar-bg-base: var(--background-color-10);
|
|
20
21
|
--sign-top-bar-text-base: var(--primary-color-0);
|
|
21
22
|
--sign-top-bar-padding: var(--spacing-constraints);
|
|
22
23
|
--sign-top-bar-min-height: var(--min-height);
|
|
24
|
+
--sign-top-bar-border-top-left-radius: var(--sign-common-border-radius);
|
|
25
|
+
--sign-top-bar-border-top-right-radius: var(--sign-common-border-radius);
|
|
26
|
+
--sign-top-bar-border-bottom-left-radius: 0;
|
|
27
|
+
--sign-top-bar-border-bottom-right-radius: 0;
|
|
23
28
|
|
|
24
29
|
/* Canvas Area */
|
|
25
30
|
--sign-canvas-bg-base: var(--background-color-0);
|
|
31
|
+
--sign-canvas-wrapper-border-top-left-radius: 0;
|
|
32
|
+
--sign-canvas-wrapper-border-top-right-radius: 0;
|
|
33
|
+
--sign-canvas-wrapper-border-bottom-left-radius: 0;
|
|
34
|
+
--sign-canvas-wrapper-border-bottom-right-radius: 0;
|
|
26
35
|
|
|
27
36
|
/* Line */
|
|
28
37
|
--sign-line-height: 22px;
|
|
@@ -38,12 +47,18 @@
|
|
|
38
47
|
--sign-bottom-bar-padding: var(--spacing-constraints);
|
|
39
48
|
--sign-bottom-bar-min-height: var(--min-height);
|
|
40
49
|
--sign-bottom-bar-gap: 12px;
|
|
50
|
+
--sign-bottom-bar-border-top-left-radius: 0;
|
|
51
|
+
--sign-bottom-bar-border-top-right-radius: 0;
|
|
52
|
+
--sign-bottom-bar-border-bottom-left-radius: var(--sign-common-border-radius);
|
|
53
|
+
--sign-bottom-bar-border-bottom-right-radius: var(
|
|
54
|
+
--sign-common-border-radius
|
|
55
|
+
);
|
|
41
56
|
|
|
42
57
|
/* Button general settings */
|
|
43
58
|
--sign-button-font-size: 16px;
|
|
44
59
|
--sign-button-padding: 14px 16px;
|
|
45
60
|
--sign-button-min-height: var(--min-height);
|
|
46
|
-
--sign-button-border-radius:
|
|
61
|
+
--sign-button-border-radius: var(--sign-common-border-radius);
|
|
47
62
|
--sign-button-font-weight: 500;
|
|
48
63
|
|
|
49
64
|
/* Primary Buttons (OK, Clear, Cancel) */
|
|
@@ -53,6 +68,9 @@
|
|
|
53
68
|
--sign-button-primary-text-base: var(--white-color);
|
|
54
69
|
--sign-button-primary-text-hover: var(--white-color);
|
|
55
70
|
--sign-button-primary-text-disabled: var(--white-color);
|
|
71
|
+
--sign-button-primary-border-base: 1px solid var(--primary-color-0);
|
|
72
|
+
--sign-button-primary-border-hover: 1px solid var(--primary-color-10);
|
|
73
|
+
--sign-button-primary-border-disabled: 1px solid var(--grey-color);
|
|
56
74
|
|
|
57
75
|
/* Link Buttons (Connect signpad) */
|
|
58
76
|
--sign-button-link-bg-base: transparent;
|