@descope/web-components-ui 1.43.0 → 1.45.0
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/dist/cjs/index.cjs.js +124 -55
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/index.esm.js +530 -256
- package/dist/index.esm.js.map +1 -1
- package/dist/umd/3620.js +1 -1
- package/dist/umd/3620.js.map +1 -1
- package/dist/umd/5348.js +2 -0
- package/dist/umd/5348.js.map +1 -0
- package/dist/umd/6477.js +149 -0
- package/dist/umd/6477.js.map +1 -0
- package/dist/umd/9365.js +1 -1
- package/dist/umd/9365.js.map +1 -1
- package/dist/umd/DescopeDev.js +1 -1
- package/dist/umd/DescopeDev.js.map +1 -1
- package/dist/umd/descope-hybrid-field-index-js.js +3 -3
- package/dist/umd/descope-hybrid-field-index-js.js.map +1 -1
- package/dist/umd/descope-passcode-index-js.js +1 -1
- package/dist/umd/descope-passcode-index-js.js.map +1 -1
- package/dist/umd/descope-timer-button.js +1 -1
- package/dist/umd/descope-timer-button.js.map +1 -1
- package/dist/umd/descope-timer.js +1 -1
- package/dist/umd/descope-timer.js.map +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/dist/umd/phone-fields-descope-phone-field-descope-phone-field-internal-index-js.js +1 -1
- package/dist/umd/phone-fields-descope-phone-field-descope-phone-field-internal-index-js.js.map +1 -1
- package/dist/umd/phone-fields-descope-phone-field-index-js.js +1 -1
- package/dist/umd/phone-fields-descope-phone-field-index-js.js.map +1 -1
- package/dist/umd/phone-fields-descope-phone-input-box-field-descope-phone-input-box-internal-index-js.js +2 -2
- package/dist/umd/phone-fields-descope-phone-input-box-field-descope-phone-input-box-internal-index-js.js.map +1 -1
- package/dist/umd/phone-fields-descope-phone-input-box-field-index-js.js +2 -113
- package/dist/umd/phone-fields-descope-phone-input-box-field-index-js.js.LICENSE.txt +0 -6
- package/dist/umd/phone-fields-descope-phone-input-box-field-index-js.js.map +1 -1
- package/package.json +7 -6
- package/src/components/descope-hybrid-field/HybridFieldClass.js +6 -0
- package/src/components/descope-passcode/PasscodeClass.js +2 -0
- package/src/components/phone-fields/descope-phone-field/PhoneFieldClass.js +10 -2
- package/src/components/phone-fields/descope-phone-field/descope-phone-field-internal/PhoneFieldInternal.js +229 -125
- package/src/components/phone-fields/descope-phone-input-box-field/PhoneFieldInputBoxClass.js +42 -24
- package/src/components/phone-fields/descope-phone-input-box-field/descope-phone-input-box-internal/PhoneFieldInternalInputBox.js +176 -79
- package/src/components/phone-fields/descope-phone-input-box-field/index.js +0 -1
- package/src/components/phone-fields/helpers.js +7 -0
- package/src/mixins/index.js +1 -0
- package/src/mixins/inputOverrideValidConstraints.js +12 -0
- package/dist/umd/6424.js +0 -149
- package/dist/umd/6424.js.map +0 -1
- /package/dist/umd/{6424.js.LICENSE.txt → 6477.js.LICENSE.txt} +0 -0
    
        package/dist/cjs/index.cjs.js
    CHANGED
    
    | @@ -4372,6 +4372,19 @@ const externalInputMixin = | |
| 4372 4372 | 
             
                  }
         | 
| 4373 4373 | 
             
                };
         | 
| 4374 4374 |  | 
| 4375 | 
            +
            const inputOverrideValidConstraintsMixin = (superclass) =>
         | 
| 4376 | 
            +
              class InputOverrideValidConstraintsMixinClass extends superclass {
         | 
| 4377 | 
            +
                init() {
         | 
| 4378 | 
            +
                  super.init?.();
         | 
| 4379 | 
            +
             | 
| 4380 | 
            +
                  // vaadin uses `validConstraints` (required, pattern, minlength, maxlength) to determine if it should validate
         | 
| 4381 | 
            +
                  // the input or not. We want to override this behavior, so we can enforce validation even if these attributes are not present.
         | 
| 4382 | 
            +
                  if (this.baseElement._hasValidConstraints) {
         | 
| 4383 | 
            +
                    this.baseElement._hasValidConstraints = () => true;
         | 
| 4384 | 
            +
                  }
         | 
| 4385 | 
            +
                }
         | 
| 4386 | 
            +
              };
         | 
| 4387 | 
            +
             | 
| 4375 4388 | 
             
            const {
         | 
| 4376 4389 | 
             
              host: host$r,
         | 
| 4377 4390 | 
             
              label: label$9,
         | 
| @@ -7356,6 +7369,7 @@ const PasscodeClass = compose$1( | |
| 7356 7369 | 
             
                },
         | 
| 7357 7370 | 
             
              }),
         | 
| 7358 7371 | 
             
              draggableMixin,
         | 
| 7372 | 
            +
              inputOverrideValidConstraintsMixin,
         | 
| 7359 7373 | 
             
              composedProxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),
         | 
| 7360 7374 | 
             
              componentNameValidationMixin,
         | 
| 7361 7375 | 
             
              customMixin$b
         | 
| @@ -9849,7 +9863,6 @@ const customMixin$a = (superclass) => | |
| 9849 9863 | 
             
                    includeAttrs: [
         | 
| 9850 9864 | 
             
                      'size',
         | 
| 9851 9865 | 
             
                      'bordered',
         | 
| 9852 | 
            -
                      'invalid',
         | 
| 9853 9866 | 
             
                      'minlength',
         | 
| 9854 9867 | 
             
                      'maxlength',
         | 
| 9855 9868 | 
             
                      'default-code',
         | 
| @@ -9862,6 +9875,8 @@ const customMixin$a = (superclass) => | |
| 9862 9875 | 
             
                      'label',
         | 
| 9863 9876 | 
             
                      'label-type',
         | 
| 9864 9877 | 
             
                      'allow-alphanumeric-input',
         | 
| 9878 | 
            +
                      'format-value',
         | 
| 9879 | 
            +
                      'strict-validation',
         | 
| 9865 9880 | 
             
                    ],
         | 
| 9866 9881 | 
             
                  });
         | 
| 9867 9882 | 
             
                }
         | 
| @@ -10010,6 +10025,7 @@ const PhoneFieldClass = compose$1( | |
| 10010 10025 | 
             
                },
         | 
| 10011 10026 | 
             
              }),
         | 
| 10012 10027 | 
             
              draggableMixin,
         | 
| 10028 | 
            +
              inputOverrideValidConstraintsMixin,
         | 
| 10013 10029 | 
             
              composedProxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),
         | 
| 10014 10030 | 
             
              customMixin$a
         | 
| 10015 10031 | 
             
            )(
         | 
| @@ -10170,7 +10186,7 @@ const textVars$1 = TextFieldClass.cssVarList; | |
| 10170 10186 | 
             
            const componentName$H = getComponentName$1('phone-input-box-field');
         | 
| 10171 10187 |  | 
| 10172 10188 | 
             
            const customMixin$9 = (superclass) =>
         | 
| 10173 | 
            -
              class  | 
| 10189 | 
            +
              class PhoneFieldInputBoxMixinClass extends superclass {
         | 
| 10174 10190 | 
             
                static get CountryCodes() {
         | 
| 10175 10191 | 
             
                  return CountryCodes;
         | 
| 10176 10192 | 
             
                }
         | 
| @@ -10194,8 +10210,6 @@ const customMixin$9 = (superclass) => | |
| 10194 10210 | 
             
                  forwardAttrs$1(this.shadowRoot.host, this.inputElement, {
         | 
| 10195 10211 | 
             
                    includeAttrs: [
         | 
| 10196 10212 | 
             
                      'size',
         | 
| 10197 | 
            -
                      'bordered',
         | 
| 10198 | 
            -
                      'invalid',
         | 
| 10199 10213 | 
             
                      'minlength',
         | 
| 10200 10214 | 
             
                      'maxlength',
         | 
| 10201 10215 | 
             
                      'default-code',
         | 
| @@ -10204,6 +10218,10 @@ const customMixin$9 = (superclass) => | |
| 10204 10218 | 
             
                      'label',
         | 
| 10205 10219 | 
             
                      'label-type',
         | 
| 10206 10220 | 
             
                      'allow-alphanumeric-input',
         | 
| 10221 | 
            +
                      'restrict-countries',
         | 
| 10222 | 
            +
                      'format-value',
         | 
| 10223 | 
            +
                      'strict-validation',
         | 
| 10224 | 
            +
                      'data-errormessage-type-mismatch',
         | 
| 10207 10225 | 
             
                    ],
         | 
| 10208 10226 | 
             
                  });
         | 
| 10209 10227 | 
             
                }
         | 
| @@ -10219,7 +10237,8 @@ const { | |
| 10219 10237 | 
             
              inputElement: inputElement$1,
         | 
| 10220 10238 | 
             
              requiredIndicator: requiredIndicator$3,
         | 
| 10221 10239 | 
             
              inputField: inputField$1,
         | 
| 10222 | 
            -
               | 
| 10240 | 
            +
              internalComponent,
         | 
| 10241 | 
            +
              internalComponentAfter,
         | 
| 10223 10242 | 
             
              phoneInput,
         | 
| 10224 10243 | 
             
              errorMessage: errorMessage$5,
         | 
| 10225 10244 | 
             
              helperText: helperText$3,
         | 
| @@ -10230,8 +10249,11 @@ const { | |
| 10230 10249 | 
             
              inputElement: { selector: 'input' },
         | 
| 10231 10250 | 
             
              requiredIndicator: { selector: '[required]::part(required-indicator)::after' },
         | 
| 10232 10251 | 
             
              inputField: { selector: () => 'vaadin-text-field::part(input-field)' },
         | 
| 10233 | 
            -
               | 
| 10234 | 
            -
                selector:  | 
| 10252 | 
            +
              internalComponent: {
         | 
| 10253 | 
            +
                selector: 'descope-phone-field-internal-input-box',
         | 
| 10254 | 
            +
              },
         | 
| 10255 | 
            +
              internalComponentAfter: {
         | 
| 10256 | 
            +
                selector: 'descope-phone-field-internal-input-box::after',
         | 
| 10235 10257 | 
             
              },
         | 
| 10236 10258 | 
             
              phoneInput: { selector: () => 'descope-text-field' },
         | 
| 10237 10259 | 
             
              helperText: { selector: '::part(helper-text)' },
         | 
| @@ -10254,14 +10276,6 @@ const PhoneFieldInputBoxClass = compose$1( | |
| 10254 10276 | 
             
                  hostMinWidth: { ...host$g, property: 'min-width' },
         | 
| 10255 10277 | 
             
                  hostDirection: { ...host$g, property: 'direction' },
         | 
| 10256 10278 |  | 
| 10257 | 
            -
                  inputBorderStyle: { ...inputFieldInternal, property: 'border-style' },
         | 
| 10258 | 
            -
                  inputBorderWidth: { ...inputFieldInternal, property: 'border-width' },
         | 
| 10259 | 
            -
                  inputBorderColor: { ...inputFieldInternal, property: 'border-color' },
         | 
| 10260 | 
            -
                  inputBorderRadius: [
         | 
| 10261 | 
            -
                    { ...inputField$1, property: 'border-radius' },
         | 
| 10262 | 
            -
                    { ...inputFieldInternal, property: 'border-radius' },
         | 
| 10263 | 
            -
                  ],
         | 
| 10264 | 
            -
             | 
| 10265 10279 | 
             
                  inputHorizontalPadding: [
         | 
| 10266 10280 | 
             
                    { ...phoneInput, property: 'padding-left' },
         | 
| 10267 10281 | 
             
                    { ...phoneInput, property: 'padding-right' },
         | 
| @@ -10286,10 +10300,18 @@ const PhoneFieldInputBoxClass = compose$1( | |
| 10286 10300 |  | 
| 10287 10301 | 
             
                  inputPlaceholderTextColor: { ...phoneInput, property: textVars$1.inputPlaceholderColor },
         | 
| 10288 10302 |  | 
| 10289 | 
            -
                   | 
| 10290 | 
            -
                   | 
| 10291 | 
            -
                   | 
| 10292 | 
            -
                   | 
| 10303 | 
            +
                  inputBorderStyle: { ...internalComponentAfter, property: 'border-style' },
         | 
| 10304 | 
            +
                  inputBorderWidth: { ...internalComponentAfter, property: 'border-width' },
         | 
| 10305 | 
            +
                  inputBorderColor: { ...internalComponentAfter, property: 'border-color' },
         | 
| 10306 | 
            +
                  inputBorderRadius: [
         | 
| 10307 | 
            +
                    { ...internalComponent, property: 'border-radius' },
         | 
| 10308 | 
            +
                    { ...internalComponentAfter, property: 'border-radius' },
         | 
| 10309 | 
            +
                  ],
         | 
| 10310 | 
            +
             | 
| 10311 | 
            +
                  inputOutlineStyle: { ...internalComponent, property: 'outline-style' },
         | 
| 10312 | 
            +
                  inputOutlineColor: { ...internalComponent, property: 'outline-color' },
         | 
| 10313 | 
            +
                  inputOutlineWidth: { ...internalComponent, property: 'outline-width' },
         | 
| 10314 | 
            +
                  inputOutlineOffset: { ...internalComponent, property: 'outline-offset' },
         | 
| 10293 10315 |  | 
| 10294 10316 | 
             
                  labelPosition: { ...label$3, property: 'position' },
         | 
| 10295 10317 | 
             
                  labelTopPosition: { ...label$3, property: 'top' },
         | 
| @@ -10308,6 +10330,7 @@ const PhoneFieldInputBoxClass = compose$1( | |
| 10308 10330 | 
             
                },
         | 
| 10309 10331 | 
             
              }),
         | 
| 10310 10332 | 
             
              draggableMixin,
         | 
| 10333 | 
            +
              inputOverrideValidConstraintsMixin,
         | 
| 10311 10334 | 
             
              composedProxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),
         | 
| 10312 10335 | 
             
              customMixin$9
         | 
| 10313 10336 | 
             
            )(
         | 
| @@ -10339,7 +10362,6 @@ const PhoneFieldInputBoxClass = compose$1( | |
| 10339 10362 | 
             
                vaadin-text-field::part(input-field) {
         | 
| 10340 10363 | 
             
                  padding: 0;
         | 
| 10341 10364 | 
             
                  background: transparent;
         | 
| 10342 | 
            -
                  overflow: hidden;
         | 
| 10343 10365 | 
             
                  -webkit-mask-image: none;
         | 
| 10344 10366 | 
             
                }
         | 
| 10345 10367 | 
             
                descope-phone-field-internal-input-box {
         | 
| @@ -10350,14 +10372,20 @@ const PhoneFieldInputBoxClass = compose$1( | |
| 10350 10372 | 
             
                descope-phone-field-internal-input-box > div {
         | 
| 10351 10373 | 
             
                  width: 100%;
         | 
| 10352 10374 | 
             
                }
         | 
| 10353 | 
            -
                descope-phone-field-internal-input-box .separator {
         | 
| 10354 | 
            -
                  flex: 0;
         | 
| 10355 | 
            -
                  border: none;
         | 
| 10356 | 
            -
                }
         | 
| 10357 10375 | 
             
                descope-phone-field-internal-input-box descope-text-field {
         | 
| 10358 10376 | 
             
                  ${textVars$1.inputOutlineWidth}: 0;
         | 
| 10359 10377 | 
             
                  ${textVars$1.inputOutlineOffset}: 0;
         | 
| 10360 10378 | 
             
                }
         | 
| 10379 | 
            +
                descope-phone-field-internal-input-box::after {
         | 
| 10380 | 
            +
                  content: '';
         | 
| 10381 | 
            +
                  position: absolute;
         | 
| 10382 | 
            +
                  width: 100%;
         | 
| 10383 | 
            +
                  height: 100%;
         | 
| 10384 | 
            +
                  top: 0;
         | 
| 10385 | 
            +
                  left: 0;
         | 
| 10386 | 
            +
                  box-sizing: border-box;
         | 
| 10387 | 
            +
                  pointer-events: none;
         | 
| 10388 | 
            +
                }
         | 
| 10361 10389 | 
             
                descope-text-field {
         | 
| 10362 10390 | 
             
                  flex-grow: 1;
         | 
| 10363 10391 | 
             
                  width: 100%;
         | 
| @@ -18606,6 +18634,8 @@ const attrs = { | |
| 18606 18634 | 
             
                  'restrict-countries',
         | 
| 18607 18635 | 
             
                  'default-code',
         | 
| 18608 18636 | 
             
                  'phone-minlength',
         | 
| 18637 | 
            +
                  'phone-format-value',
         | 
| 18638 | 
            +
                  'phone-strict-validation',
         | 
| 18609 18639 | 
             
                  'data-errormessage-value-missing-phone',
         | 
| 18610 18640 | 
             
                ],
         | 
| 18611 18641 | 
             
                inputBox: [
         | 
| @@ -18613,6 +18643,8 @@ const attrs = { | |
| 18613 18643 | 
             
                  'restrict-countries',
         | 
| 18614 18644 | 
             
                  'default-code',
         | 
| 18615 18645 | 
             
                  'phone-minlength',
         | 
| 18646 | 
            +
                  'phone-format-value',
         | 
| 18647 | 
            +
                  'phone-strict-validation',
         | 
| 18616 18648 | 
             
                  'data-errormessage-value-missing-phone',
         | 
| 18617 18649 | 
             
                ],
         | 
| 18618 18650 | 
             
              },
         | 
| @@ -18626,6 +18658,8 @@ const attrMap = { | |
| 18626 18658 | 
             
              phone: {
         | 
| 18627 18659 | 
             
                'phone-input-label': 'label',
         | 
| 18628 18660 | 
             
                'phone-minlength': 'minlength',
         | 
| 18661 | 
            +
                'phone-format-value': 'format-value',
         | 
| 18662 | 
            +
                'phone-strict-validation': 'strict-validation',
         | 
| 18629 18663 | 
             
                'data-errormessage-value-missing-phone': 'data-errormessage-value-missing',
         | 
| 18630 18664 | 
             
              },
         | 
| 18631 18665 | 
             
            };
         | 
| @@ -19838,7 +19872,7 @@ var addressField$1 = /*#__PURE__*/Object.freeze({ | |
| 19838 19872 | 
             
              vars: vars$3
         | 
| 19839 19873 | 
             
            });
         | 
| 19840 19874 |  | 
| 19841 | 
            -
            var clockIcon = "data:image/svg+xml;base64, | 
| 19875 | 
            +
            var clockIcon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgdmlld0JveD0iMCAwIDEwMSAxMDEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik01MC4zMzM0IDAuMzMzMjUyQzIyLjgzMzQgMC4zMzMyNTIgMC4zMzMzNzQgMjIuODMzMyAwLjMzMzM3NCA1MC4zMzMzQzAuMzMzMzc0IDc3LjgzMzMgMjIuODMzNCAxMDAuMzMzIDUwLjMzMzQgMTAwLjMzM0M3Ny44MzM0IDEwMC4zMzMgMTAwLjMzMyA3Ny44MzMzIDEwMC4zMzMgNTAuMzMzM0MxMDAuMzMzIDIyLjgzMzMgNzcuODMzNCAwLjMzMzI1MiA1MC4zMzM0IDAuMzMzMjUyWk01MC4zMzM0IDg3LjgzMzNDMjkuNzA4NCA4Ny44MzMzIDEyLjgzMzQgNzAuOTU4MyAxMi44MzM0IDUwLjMzMzNDMTIuODMzNCAyOS43MDgzIDI5LjcwODQgMTIuODMzMyA1MC4zMzM0IDEyLjgzMzNDNzAuOTU4NCAxMi44MzMzIDg3LjgzMzQgMjkuNzA4MyA4Ny44MzM0IDUwLjMzMzNDODcuODMzNCA3MC45NTgzIDcwLjk1ODQgODcuODMzMyA1MC4zMzM0IDg3LjgzMzNaIiBmaWxsPSIjMTgxQTFDIi8+CjxwYXRoIGQ9Ik01MC4zMzI4IDE5LjA4MzNINDQuMDgyOFY1Ni41ODMySDc1LjMzMjhWNTAuMzMzMkg1MC4zMzI4VjE5LjA4MzNaIiBmaWxsPSIjMTgxQTFDIi8+Cjwvc3ZnPgo=";
         | 
| 19842 19876 |  | 
| 19843 19877 | 
             
            const fmt = (val, pad = 2) => String(val).padStart(pad, '0');
         | 
| 19844 19878 |  | 
| @@ -19859,7 +19893,7 @@ const formatTime = (ms = 0) => { | |
| 19859 19893 |  | 
| 19860 19894 | 
             
            const componentName$3 = getComponentName('timer');
         | 
| 19861 19895 |  | 
| 19862 | 
            -
            const observedAttributes$1 = ['seconds', 'hide-icon'];
         | 
| 19896 | 
            +
            const observedAttributes$1 = ['seconds', 'hide-icon', 'paused'];
         | 
| 19863 19897 |  | 
| 19864 19898 | 
             
            const BaseClass$2 = createBaseClass$1({
         | 
| 19865 19899 | 
             
              componentName: componentName$3,
         | 
| @@ -19917,57 +19951,63 @@ class RawTimer extends BaseClass$2 { | |
| 19917 19951 | 
             
                return Math.max(0, secs);
         | 
| 19918 19952 | 
             
              }
         | 
| 19919 19953 |  | 
| 19954 | 
            +
              // we use `pause` attribute for allowing preview mode by executing `pause`
         | 
| 19955 | 
            +
              get isPaused() {
         | 
| 19956 | 
            +
                return this.getAttribute('paused') === 'true';
         | 
| 19957 | 
            +
              }
         | 
| 19958 | 
            +
             | 
| 19920 19959 | 
             
              init() {
         | 
| 19921 19960 | 
             
                super.init?.();
         | 
| 19922 19961 |  | 
| 19923 19962 | 
             
                this.#timeRemains = this.seconds;
         | 
| 19924 19963 | 
             
              }
         | 
| 19925 19964 |  | 
| 19926 | 
            -
               | 
| 19927 | 
            -
                this.dispatchEvent(new CustomEvent('timer-started', { bubbles: true }));
         | 
| 19928 | 
            -
             | 
| 19929 | 
            -
                this.startInterval();
         | 
| 19930 | 
            -
              }
         | 
| 19931 | 
            -
             | 
| 19932 | 
            -
              startInterval() {    
         | 
| 19965 | 
            +
              startInterval() {
         | 
| 19933 19966 | 
             
                const intervalCycle = () => {
         | 
| 19967 | 
            +
                  this.#decreaseInterval();
         | 
| 19968 | 
            +
                  if (!this.#timeRemains) this.stop();
         | 
| 19934 19969 | 
             
                  this.#updateDisplay(this.#timeRemains);
         | 
| 19935 | 
            -
             | 
| 19936 | 
            -
                  if (!this.#timeRemains) {
         | 
| 19937 | 
            -
                    this.stop();
         | 
| 19938 | 
            -
                  } else {
         | 
| 19939 | 
            -
                    this.#decreaseInterval();
         | 
| 19940 | 
            -
                  }
         | 
| 19941 19970 | 
             
                };
         | 
| 19942 19971 |  | 
| 19943 | 
            -
                intervalCycle();
         | 
| 19944 | 
            -
             | 
| 19945 19972 | 
             
                if (this.#timeRemains) {
         | 
| 19946 19973 | 
             
                  this.#intervalId = setInterval(intervalCycle, DEFAULT_INTERVAL);
         | 
| 19974 | 
            +
                } else {
         | 
| 19975 | 
            +
                  this.stop();
         | 
| 19947 19976 | 
             
                }
         | 
| 19948 19977 | 
             
              }
         | 
| 19949 19978 |  | 
| 19979 | 
            +
              stopInterval() {
         | 
| 19980 | 
            +
                clearInterval(this.#intervalId);
         | 
| 19981 | 
            +
              }
         | 
| 19982 | 
            +
             | 
| 19950 19983 | 
             
              #decreaseInterval() {
         | 
| 19951 | 
            -
                this.#timeRemains =  | 
| 19984 | 
            +
                this.#timeRemains = this.#timeRemains - DEFAULT_INTERVAL;
         | 
| 19952 19985 | 
             
              }
         | 
| 19953 19986 |  | 
| 19954 19987 | 
             
              reset() {
         | 
| 19955 19988 | 
             
                this.#timeRemains = this.seconds;
         | 
| 19956 | 
            -
                this | 
| 19989 | 
            +
                this.#updateDisplay(this.#timeRemains);
         | 
| 19990 | 
            +
             | 
| 19991 | 
            +
                if (this.isPaused) return;
         | 
| 19992 | 
            +
             | 
| 19993 | 
            +
                this.dispatchEvent(new CustomEvent('timer-started', { bubbles: true }));
         | 
| 19994 | 
            +
                this.startInterval();
         | 
| 19957 19995 | 
             
              }
         | 
| 19958 19996 |  | 
| 19959 19997 | 
             
              stop() {
         | 
| 19960 | 
            -
                this. | 
| 19998 | 
            +
                this.stopInterval();
         | 
| 19961 19999 | 
             
                this.#timeRemains = 0;
         | 
| 19962 20000 | 
             
                this.#updateDisplay(this.#timeRemains);
         | 
| 19963 20001 | 
             
                this.dispatchEvent(new CustomEvent('timer-ended', { bubbles: true }));
         | 
| 19964 20002 | 
             
              }
         | 
| 19965 20003 |  | 
| 19966 20004 | 
             
              pause() {
         | 
| 19967 | 
            -
                 | 
| 20005 | 
            +
                this.setAttribute('paused', 'true');
         | 
| 20006 | 
            +
                this.stopInterval();
         | 
| 19968 20007 | 
             
              }
         | 
| 19969 20008 |  | 
| 19970 20009 | 
             
              resume() {
         | 
| 20010 | 
            +
                this.removeAttribute('paused');
         | 
| 19971 20011 | 
             
                this.startInterval();
         | 
| 19972 20012 | 
             
              }
         | 
| 19973 20013 |  | 
| @@ -19979,6 +20019,19 @@ class RawTimer extends BaseClass$2 { | |
| 19979 20019 | 
             
                this.icon.classList.toggle('hidden', val === 'true');
         | 
| 19980 20020 | 
             
              }
         | 
| 19981 20021 |  | 
| 20022 | 
            +
              #handlePause(paused) {
         | 
| 20023 | 
            +
                setTimeout(() => {
         | 
| 20024 | 
            +
                  if (paused) {
         | 
| 20025 | 
            +
                    this.pause();
         | 
| 20026 | 
            +
                  } else {
         | 
| 20027 | 
            +
                    // we want to prevent a another interval from starting in case previous interval was not yet cleared
         | 
| 20028 | 
            +
                    if (!this.#intervalId) {
         | 
| 20029 | 
            +
                      this.resume();
         | 
| 20030 | 
            +
                    }
         | 
| 20031 | 
            +
                  }
         | 
| 20032 | 
            +
                });
         | 
| 20033 | 
            +
              }
         | 
| 20034 | 
            +
             | 
| 19982 20035 | 
             
              attributeChangedCallback(attrName, oldValue, newValue) {
         | 
| 19983 20036 | 
             
                super.attributeChangedCallback?.(attrName, oldValue, newValue);
         | 
| 19984 20037 |  | 
| @@ -19989,28 +20042,31 @@ class RawTimer extends BaseClass$2 { | |
| 19989 20042 | 
             
                  if (attrName === 'hide-icon') {
         | 
| 19990 20043 | 
             
                    this.#toggleIcon(newValue);
         | 
| 19991 20044 | 
             
                  }
         | 
| 20045 | 
            +
                  if (attrName === 'paused') {
         | 
| 20046 | 
            +
                    this.#handlePause(newValue === 'true');
         | 
| 20047 | 
            +
                  }
         | 
| 19992 20048 | 
             
                }
         | 
| 19993 20049 | 
             
              }
         | 
| 19994 20050 | 
             
            }
         | 
| 19995 20051 |  | 
| 19996 20052 | 
             
            const { host: host$1, icon, timer: timer$2 } = {
         | 
| 19997 20053 | 
             
              host: { selector: () => ':host' },
         | 
| 19998 | 
            -
              icon: { selector: '.icon' },
         | 
| 19999 | 
            -
              timer: { selector: '.timer' },
         | 
| 20054 | 
            +
              icon: { selector: () => '.icon' },
         | 
| 20055 | 
            +
              timer: { selector: () => '.timer' },
         | 
| 20000 20056 | 
             
            };
         | 
| 20001 20057 |  | 
| 20002 20058 | 
             
            const TimerClass = compose(
         | 
| 20003 20059 | 
             
              createStyleMixin$1({
         | 
| 20004 20060 | 
             
                mappings: {
         | 
| 20005 | 
            -
                   | 
| 20006 | 
            -
                  fontSize: [{}, { ...icon }],
         | 
| 20061 | 
            +
                  fontSize: {},
         | 
| 20007 20062 | 
             
                  iconSize: [
         | 
| 20008 20063 | 
             
                    { ...icon, property: 'width' },
         | 
| 20009 20064 | 
             
                    { ...icon, property: 'height' },
         | 
| 20010 20065 | 
             
                  ],
         | 
| 20011 20066 | 
             
                  fontFamily: {},
         | 
| 20067 | 
            +
                  minHeight: {},
         | 
| 20012 20068 | 
             
                  fontWeight: { ...timer$2 },
         | 
| 20013 | 
            -
                  lineHeight: {  | 
| 20069 | 
            +
                  lineHeight: { ...timer$2 },
         | 
| 20014 20070 | 
             
                  textColor: { ...timer$2, property: 'color' },
         | 
| 20015 20071 | 
             
                  gap: {},
         | 
| 20016 20072 | 
             
                  textAlign: { property: 'justify-content' },
         | 
| @@ -20030,7 +20086,8 @@ const timer = { | |
| 20030 20086 | 
             
              [vars$2.hostDirection]: globalRefs$1.direction,
         | 
| 20031 20087 | 
             
              [vars$2.gap]: '0.25em',
         | 
| 20032 20088 | 
             
              [vars$2.fontFamily]: globalRefs$1.fonts.font1.family,
         | 
| 20033 | 
            -
              [vars$2. | 
| 20089 | 
            +
              [vars$2.minHeight]: '1.5em',
         | 
| 20090 | 
            +
              [vars$2.lineHeight]: '1em',
         | 
| 20034 20091 | 
             
              [vars$2.fontWeight]: globalRefs$1.fonts.font1.fontWeight,
         | 
| 20035 20092 | 
             
              [vars$2.textColor]: globalRefs$1.colors.surface.contrast,
         | 
| 20036 20093 | 
             
              [vars$2.iconColor]: globalRefs$1.colors.surface.contrast,
         | 
| @@ -20078,6 +20135,7 @@ const mapButtonAttrs = { | |
| 20078 20135 | 
             
            const timerAttrs = [
         | 
| 20079 20136 | 
             
              'timer-seconds',
         | 
| 20080 20137 | 
             
              'timer-hide-icon',
         | 
| 20138 | 
            +
              'timer-paused',
         | 
| 20081 20139 | 
             
              'size',
         | 
| 20082 20140 | 
             
              'text-align',
         | 
| 20083 20141 | 
             
              'full-width',
         | 
| @@ -20086,6 +20144,7 @@ const timerAttrs = [ | |
| 20086 20144 | 
             
            const mapTimerAttrs = {
         | 
| 20087 20145 | 
             
              'timer-seconds': 'seconds',
         | 
| 20088 20146 | 
             
              'timer-hide-icon': 'hide-icon',
         | 
| 20147 | 
            +
              'timer-paused': 'paused',
         | 
| 20089 20148 | 
             
            };
         | 
| 20090 20149 |  | 
| 20091 20150 | 
             
            const BaseClass$1 = createBaseClass$1({
         | 
| @@ -20100,7 +20159,7 @@ class RawTimerButton extends BaseClass$1 { | |
| 20100 20159 | 
             
                this.attachShadow({ mode: 'open' }).innerHTML = `
         | 
| 20101 20160 | 
             
                  <div class="wrapper">
         | 
| 20102 20161 | 
             
                    <descope-timer class="timer"></descope-timer>
         | 
| 20103 | 
            -
                    <descope-button class="button">
         | 
| 20162 | 
            +
                    <descope-button class="button" disabled="true">
         | 
| 20104 20163 | 
             
                      <slot></slot>
         | 
| 20105 20164 | 
             
                    </descope-button>
         | 
| 20106 20165 | 
             
                  </div>
         | 
| @@ -20146,6 +20205,14 @@ class RawTimerButton extends BaseClass$1 { | |
| 20146 20205 | 
             
                  includeAttrs: timerAttrs,
         | 
| 20147 20206 | 
             
                  mapAttrs: mapTimerAttrs,
         | 
| 20148 20207 | 
             
                });
         | 
| 20208 | 
            +
             | 
| 20209 | 
            +
                // When we sync attributes, the `disabled` attribute is being compared to the attribute
         | 
| 20210 | 
            +
                // on Vaadin component; since the Vaadin component has no `disabled` attribute, we sync
         | 
| 20211 | 
            +
                // that back to our component.
         | 
| 20212 | 
            +
                // This is pending a more generic fix in the way we sync attibutes.
         | 
| 20213 | 
            +
                this.button.shadowRoot
         | 
| 20214 | 
            +
                  .querySelector('vaadin-button')
         | 
| 20215 | 
            +
                  .setAttribute('disabled', 'true');
         | 
| 20149 20216 | 
             
              }
         | 
| 20150 20217 |  | 
| 20151 20218 | 
             
              onTimerStarted() {
         | 
| @@ -20161,9 +20228,11 @@ class RawTimerButton extends BaseClass$1 { | |
| 20161 20228 | 
             
              }
         | 
| 20162 20229 |  | 
| 20163 20230 | 
             
              toggleButtonDisable(isDisabled) {
         | 
| 20164 | 
            -
                 | 
| 20165 | 
            -
                   | 
| 20166 | 
            -
             | 
| 20231 | 
            +
                setTimeout(() => {
         | 
| 20232 | 
            +
                  isDisabled
         | 
| 20233 | 
            +
                    ? this.button.setAttribute('disabled', 'true')
         | 
| 20234 | 
            +
                    : this.button.removeAttribute('disabled');
         | 
| 20235 | 
            +
                });
         | 
| 20167 20236 | 
             
              }
         | 
| 20168 20237 | 
             
            }
         | 
| 20169 20238 |  |