kritzel-stencil 0.1.16 → 0.1.17
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/{default-line-tool.config-BXYWjUSM.js → default-line-tool.config-D-Ru2SSK.js} +101 -130
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/kritzel-back-to-content_32.cjs.entry.js +11 -5
- package/dist/collection/classes/handlers/move.handler.js +2 -2
- package/dist/collection/classes/objects/path.class.js +4 -9
- package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.css +1 -1
- package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +7 -1
- package/dist/collection/components/ui/kritzel-tool-config/kritzel-tool-config.css +1 -1
- package/dist/collection/constants/version.js +1 -1
- package/dist/collection/helpers/keyboard.helper.js +70 -10
- package/dist/collection/themes/dark-theme.js +0 -44
- package/dist/collection/themes/light-theme.js +0 -39
- package/dist/components/index.js +1 -1
- package/dist/components/kritzel-brush-style.js +1 -1
- package/dist/components/kritzel-color-palette.js +1 -1
- package/dist/components/kritzel-color.js +1 -1
- package/dist/components/kritzel-controls.js +1 -1
- package/dist/components/kritzel-dropdown.js +1 -1
- package/dist/components/kritzel-editor.js +1 -1
- package/dist/components/kritzel-engine.js +1 -1
- package/dist/components/kritzel-font-family.js +1 -1
- package/dist/components/kritzel-settings.js +1 -1
- package/dist/components/kritzel-stroke-size.js +1 -1
- package/dist/components/kritzel-tool-config.js +1 -1
- package/dist/components/p--Bo4GaCK.js +1 -0
- package/dist/components/{p-Bzv0vavh.js → p-B8IOGWhN.js} +1 -1
- package/dist/components/{p-y6zswJUQ.js → p-BDFu1vsS.js} +1 -1
- package/dist/components/{p-dQFQsn5l.js → p-CmqXj79q.js} +1 -1
- package/dist/components/{p-CCvoXqIn.js → p-CwP7yBQP.js} +1 -1
- package/dist/components/p-Cy7mncoG.js +1 -0
- package/dist/components/p-DKDoQ9nc.js +1 -0
- package/dist/components/{p-C__BfmIJ.js → p-DPR5Yq3I.js} +1 -1
- package/dist/components/{p-BrAnZtQA.js → p-DZpC1x_I.js} +1 -1
- package/dist/components/{p-bE-Bpn0g.js → p-DrwG_00J.js} +2 -2
- package/dist/components/{p-dYHgrz6o.js → p-MlG9hN-3.js} +1 -1
- package/dist/esm/{default-line-tool.config-BKFxgp0p.js → default-line-tool.config-CYM64Io0.js} +101 -130
- package/dist/esm/index.js +2 -2
- package/dist/esm/kritzel-back-to-content_32.entry.js +11 -5
- package/dist/stencil/index.esm.js +1 -1
- package/dist/stencil/p-CYM64Io0.js +1 -0
- package/dist/stencil/{p-afc040bc.entry.js → p-e3cf8ef3.entry.js} +2 -2
- package/dist/stencil/stencil.esm.js +1 -1
- package/dist/types/components/shared/kritzel-dropdown/kritzel-dropdown.d.ts +1 -0
- package/dist/types/constants/version.d.ts +1 -1
- package/dist/types/helpers/keyboard.helper.d.ts +1 -0
- package/package.json +1 -1
- package/dist/components/p-CKG7ycw4.js +0 -1
- package/dist/components/p-Cuf-GvO0.js +0 -1
- package/dist/components/p-UNc_oph8.js +0 -1
- package/dist/stencil/p-BKFxgp0p.js +0 -1
package/dist/cjs/{default-line-tool.config-BXYWjUSM.js → default-line-tool.config-D-Ru2SSK.js}
RENAMED
|
@@ -418,6 +418,32 @@ class KritzelBaseObject {
|
|
|
418
418
|
}
|
|
419
419
|
}
|
|
420
420
|
|
|
421
|
+
class KritzelDevicesHelper {
|
|
422
|
+
static isTouchDevice() {
|
|
423
|
+
return window.matchMedia('(any-pointer: coarse)').matches;
|
|
424
|
+
}
|
|
425
|
+
static isAndroid() {
|
|
426
|
+
return /android/i.test(navigator.userAgent);
|
|
427
|
+
}
|
|
428
|
+
static isIOS() {
|
|
429
|
+
return /iPad|iPhone|iPod/.test(navigator.userAgent);
|
|
430
|
+
}
|
|
431
|
+
static detectOS() {
|
|
432
|
+
if (this.isIOS()) {
|
|
433
|
+
return 'iOS';
|
|
434
|
+
}
|
|
435
|
+
else if (this.isAndroid()) {
|
|
436
|
+
return 'Android';
|
|
437
|
+
}
|
|
438
|
+
else {
|
|
439
|
+
return 'Other';
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
static isFirefox() {
|
|
443
|
+
return /firefox/i.test(navigator.userAgent);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
|
|
421
447
|
class KritzelKeyboardHelper {
|
|
422
448
|
static forceHideKeyboard() {
|
|
423
449
|
if (document.activeElement instanceof HTMLElement) {
|
|
@@ -447,49 +473,82 @@ class KritzelKeyboardHelper {
|
|
|
447
473
|
meta.setAttribute('content', newContent);
|
|
448
474
|
}
|
|
449
475
|
}
|
|
476
|
+
static isTextInputFocused() {
|
|
477
|
+
const activeElement = document.activeElement;
|
|
478
|
+
if (!activeElement)
|
|
479
|
+
return false;
|
|
480
|
+
// Check for standard text input elements
|
|
481
|
+
if (activeElement instanceof HTMLInputElement) {
|
|
482
|
+
const textTypes = ['text', 'password', 'email', 'number', 'search', 'tel', 'url'];
|
|
483
|
+
return textTypes.includes(activeElement.type);
|
|
484
|
+
}
|
|
485
|
+
if (activeElement instanceof HTMLTextAreaElement) {
|
|
486
|
+
return true;
|
|
487
|
+
}
|
|
488
|
+
// Check for contenteditable elements
|
|
489
|
+
if (activeElement instanceof HTMLElement && activeElement.isContentEditable) {
|
|
490
|
+
return true;
|
|
491
|
+
}
|
|
492
|
+
return false;
|
|
493
|
+
}
|
|
450
494
|
static onKeyboardVisibleChanged(callback) {
|
|
495
|
+
const os = KritzelDevicesHelper.detectOS();
|
|
496
|
+
if (os !== 'iOS' && os !== 'Android') {
|
|
497
|
+
return () => { };
|
|
498
|
+
}
|
|
499
|
+
// Use VirtualKeyboard API if available (modern browsers)
|
|
500
|
+
if ('virtualKeyboard' in navigator) {
|
|
501
|
+
const vk = navigator.virtualKeyboard;
|
|
502
|
+
const onGeometryChange = () => {
|
|
503
|
+
const isOpen = vk.boundingRect.height > 0;
|
|
504
|
+
callback(isOpen);
|
|
505
|
+
};
|
|
506
|
+
vk.addEventListener('geometrychange', onGeometryChange);
|
|
507
|
+
return () => vk.removeEventListener('geometrychange', onGeometryChange);
|
|
508
|
+
}
|
|
509
|
+
// Fallback: combine focus detection with viewport changes
|
|
451
510
|
if ('visualViewport' in window) {
|
|
452
511
|
const VIEWPORT_VS_CLIENT_HEIGHT_RATIO = 0.75;
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
const
|
|
512
|
+
let initialHeight = window.visualViewport.height;
|
|
513
|
+
const checkKeyboardState = () => {
|
|
514
|
+
const viewportRatio = (window.visualViewport.height * window.visualViewport.scale) / initialHeight;
|
|
515
|
+
const viewportShrunk = viewportRatio < VIEWPORT_VS_CLIENT_HEIGHT_RATIO;
|
|
516
|
+
const isOpen = viewportShrunk && this.isTextInputFocused();
|
|
456
517
|
callback(isOpen);
|
|
457
518
|
};
|
|
519
|
+
const onResize = () => {
|
|
520
|
+
checkKeyboardState();
|
|
521
|
+
};
|
|
522
|
+
const onFocusIn = () => {
|
|
523
|
+
// Update initial height when focus changes to capture pre-keyboard state
|
|
524
|
+
if (!this.isTextInputFocused()) {
|
|
525
|
+
initialHeight = window.visualViewport.height;
|
|
526
|
+
}
|
|
527
|
+
// Small delay to allow viewport to adjust
|
|
528
|
+
setTimeout(checkKeyboardState, 100);
|
|
529
|
+
};
|
|
530
|
+
const onFocusOut = () => {
|
|
531
|
+
// Keyboard closes when focus leaves text inputs
|
|
532
|
+
setTimeout(() => {
|
|
533
|
+
if (!this.isTextInputFocused()) {
|
|
534
|
+
callback(false);
|
|
535
|
+
// Reset initial height after keyboard closes
|
|
536
|
+
setTimeout(() => {
|
|
537
|
+
initialHeight = window.visualViewport.height;
|
|
538
|
+
}, 300);
|
|
539
|
+
}
|
|
540
|
+
}, 100);
|
|
541
|
+
};
|
|
458
542
|
window.visualViewport.addEventListener('resize', onResize);
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
class KritzelDevicesHelper {
|
|
471
|
-
static isTouchDevice() {
|
|
472
|
-
return window.matchMedia('(any-pointer: coarse)').matches;
|
|
473
|
-
}
|
|
474
|
-
static isAndroid() {
|
|
475
|
-
return /android/i.test(navigator.userAgent);
|
|
476
|
-
}
|
|
477
|
-
static isIOS() {
|
|
478
|
-
return /iPad|iPhone|iPod/.test(navigator.userAgent);
|
|
479
|
-
}
|
|
480
|
-
static detectOS() {
|
|
481
|
-
if (this.isIOS()) {
|
|
482
|
-
return 'iOS';
|
|
483
|
-
}
|
|
484
|
-
else if (this.isAndroid()) {
|
|
485
|
-
return 'Android';
|
|
486
|
-
}
|
|
487
|
-
else {
|
|
488
|
-
return 'Other';
|
|
543
|
+
document.addEventListener('focusin', onFocusIn);
|
|
544
|
+
document.addEventListener('focusout', onFocusOut);
|
|
545
|
+
return () => {
|
|
546
|
+
window.visualViewport.removeEventListener('resize', onResize);
|
|
547
|
+
document.removeEventListener('focusin', onFocusIn);
|
|
548
|
+
document.removeEventListener('focusout', onFocusOut);
|
|
549
|
+
};
|
|
489
550
|
}
|
|
490
|
-
|
|
491
|
-
static isFirefox() {
|
|
492
|
-
return /firefox/i.test(navigator.userAgent);
|
|
551
|
+
return () => { };
|
|
493
552
|
}
|
|
494
553
|
}
|
|
495
554
|
|
|
@@ -14126,17 +14185,11 @@ const lightTheme = {
|
|
|
14126
14185
|
contextMenu: {
|
|
14127
14186
|
backgroundColor: '#ffffff',
|
|
14128
14187
|
border: '1px solid #ebebeb',
|
|
14129
|
-
borderRadius: '12px',
|
|
14130
14188
|
boxShadow: '0 1px 6px rgba(0, 0, 0, 0.12)',
|
|
14131
14189
|
itemActiveBackgroundColor: 'hsl(0, 0%, 0%, 8.6%)',
|
|
14132
|
-
itemBorderRadius: '12px',
|
|
14133
14190
|
itemColor: '#333333',
|
|
14134
14191
|
itemDisabledColor: '#aaaaaa',
|
|
14135
|
-
itemFontSize: '14px',
|
|
14136
|
-
itemGap: '8px',
|
|
14137
14192
|
itemHoverBackgroundColor: 'hsl(0, 0%, 0%, 4.3%)',
|
|
14138
|
-
itemPadding: '8px',
|
|
14139
|
-
padding: '4px',
|
|
14140
14193
|
},
|
|
14141
14194
|
controls: {
|
|
14142
14195
|
backgroundColor: '#ffffff',
|
|
@@ -14169,16 +14222,6 @@ const lightTheme = {
|
|
|
14169
14222
|
selectedBackgroundColor: '#007bff1a',
|
|
14170
14223
|
textColor: '#333333',
|
|
14171
14224
|
},
|
|
14172
|
-
editor: {
|
|
14173
|
-
controlsBottom: '16px',
|
|
14174
|
-
controlsTransform: 'translateX(-50%)',
|
|
14175
|
-
controlsTransition: 'opacity 0.2s ease',
|
|
14176
|
-
controlsTransitionDuration: '0.2s',
|
|
14177
|
-
topLeftButtonsLeft: '16px',
|
|
14178
|
-
topLeftButtonsTop: '16px',
|
|
14179
|
-
topRightButtonsRight: '16px',
|
|
14180
|
-
topRightButtonsTop: '16px',
|
|
14181
|
-
},
|
|
14182
14225
|
engine: {
|
|
14183
14226
|
backgroundColor: '#ffffff',
|
|
14184
14227
|
},
|
|
@@ -14214,27 +14257,17 @@ const lightTheme = {
|
|
|
14214
14257
|
menu: {
|
|
14215
14258
|
backgroundColor: '#ffffff',
|
|
14216
14259
|
border: '1px solid #ebebeb',
|
|
14217
|
-
borderRadius: '12px',
|
|
14218
14260
|
boxShadow: '0 0 3px rgba(0, 0, 0, 0.08)',
|
|
14219
|
-
gap: '4px',
|
|
14220
|
-
itemBorderRadius: '12px',
|
|
14221
14261
|
itemButtonHoverBackgroundColor: 'hsl(0, 0%, 0%, 4.3%)',
|
|
14222
14262
|
itemChildOpenBackgroundColor: 'hsl(0, 0%, 0%, 3%)',
|
|
14223
14263
|
itemColor: '#333333',
|
|
14224
14264
|
itemEditingBackgroundColor: '#f0f0f0',
|
|
14225
|
-
itemFontSize: '14px',
|
|
14226
|
-
itemHeight: '40px',
|
|
14227
14265
|
itemInputBorder: '1px solid #ccc',
|
|
14228
|
-
itemInputHeight: '32px',
|
|
14229
14266
|
itemInputSelectionColor: 'rgba(255, 255, 255, 0.16)',
|
|
14230
14267
|
itemInputSelectionTextColor: '#000000',
|
|
14231
|
-
itemMinHeight: '40px',
|
|
14232
14268
|
itemOverlayBackgroundColor: 'hsl(0, 0%, 0%, 4.3%)',
|
|
14233
|
-
itemPadding: '8px',
|
|
14234
14269
|
itemSelectedBackgroundColor: '#007aff',
|
|
14235
14270
|
itemSelectedColor: '#ffffff',
|
|
14236
|
-
padding: '8px',
|
|
14237
|
-
width: '200px',
|
|
14238
14271
|
},
|
|
14239
14272
|
moreMenu: {
|
|
14240
14273
|
buttonActiveBackgroundColor: '#e9e9e9',
|
|
@@ -14263,9 +14296,6 @@ const lightTheme = {
|
|
|
14263
14296
|
thumbColor: '#ffffff',
|
|
14264
14297
|
trackColor: '#e0e0e0',
|
|
14265
14298
|
},
|
|
14266
|
-
portal: {
|
|
14267
|
-
maxHeight: '300px',
|
|
14268
|
-
},
|
|
14269
14299
|
settings: {
|
|
14270
14300
|
contentHeadingColor: '#000000',
|
|
14271
14301
|
contentTextColor: '#333333',
|
|
@@ -14278,14 +14308,10 @@ const lightTheme = {
|
|
|
14278
14308
|
selectedBackgroundColor: '#ebebeb',
|
|
14279
14309
|
},
|
|
14280
14310
|
slideToggle: {
|
|
14281
|
-
borderRadius: '11px',
|
|
14282
|
-
height: '22px',
|
|
14283
14311
|
thumbColor: '#fff',
|
|
14284
14312
|
thumbSize: '18px',
|
|
14285
14313
|
trackCheckedColor: '#007AFF',
|
|
14286
14314
|
trackColor: '#ccc',
|
|
14287
|
-
transitionDuration: '0.2s',
|
|
14288
|
-
width: '40px',
|
|
14289
14315
|
},
|
|
14290
14316
|
splitButton: {
|
|
14291
14317
|
backgroundColor: '#ffffff',
|
|
@@ -14299,20 +14325,14 @@ const lightTheme = {
|
|
|
14299
14325
|
hoverBackgroundColor: '#ebebeb',
|
|
14300
14326
|
selectedBackgroundColor: '#ebebeb',
|
|
14301
14327
|
},
|
|
14302
|
-
submenu: {
|
|
14303
|
-
gap: '4px',
|
|
14304
|
-
},
|
|
14305
14328
|
tooltip: {
|
|
14306
14329
|
backgroundColor: '#ffffff',
|
|
14307
14330
|
border: '1px solid #ebebeb',
|
|
14308
|
-
borderRadius: '16px',
|
|
14309
14331
|
boxShadow: '0 1px 6px rgba(0, 0, 0, 0.12)',
|
|
14310
14332
|
color: '#000000',
|
|
14311
|
-
padding: '12px',
|
|
14312
14333
|
},
|
|
14313
14334
|
utilityPanel: {
|
|
14314
14335
|
backgroundColor: '#e2e2e2',
|
|
14315
|
-
buttonBorderRadius: '8px',
|
|
14316
14336
|
buttonColor: '#333333',
|
|
14317
14337
|
buttonHoverBackgroundColor: 'hsl(0, 0%, 0%, 4.3%)',
|
|
14318
14338
|
separatorColor: 'hsl(0, 0%, 0%, 8%)',
|
|
@@ -14359,17 +14379,11 @@ const darkTheme = {
|
|
|
14359
14379
|
contextMenu: {
|
|
14360
14380
|
backgroundColor: '#2a2a2a',
|
|
14361
14381
|
border: '1px solid #3a3a3a',
|
|
14362
|
-
borderRadius: '12px',
|
|
14363
14382
|
boxShadow: '0 1px 8px rgba(0, 0, 0, 0.4)',
|
|
14364
14383
|
itemActiveBackgroundColor: 'hsl(0, 0%, 100%, 12%)',
|
|
14365
|
-
itemBorderRadius: '12px',
|
|
14366
14384
|
itemColor: '#e0e0e0',
|
|
14367
14385
|
itemDisabledColor: '#666666',
|
|
14368
|
-
itemFontSize: '14px',
|
|
14369
|
-
itemGap: '8px',
|
|
14370
14386
|
itemHoverBackgroundColor: 'hsl(0, 0%, 100%, 8%)',
|
|
14371
|
-
itemPadding: '8px',
|
|
14372
|
-
padding: '4px',
|
|
14373
14387
|
},
|
|
14374
14388
|
controls: {
|
|
14375
14389
|
backgroundColor: '#2a2a2a',
|
|
@@ -14384,9 +14398,7 @@ const darkTheme = {
|
|
|
14384
14398
|
dialog: {
|
|
14385
14399
|
backdropColor: 'rgba(0, 0, 0, 0.6)',
|
|
14386
14400
|
backgroundColor: '#2a2a2a',
|
|
14387
|
-
bodyPadding: '16px',
|
|
14388
14401
|
border: '1px solid #3a3a3a',
|
|
14389
|
-
borderRadius: '16px',
|
|
14390
14402
|
boxShadow: '0 4px 24px rgba(0, 0, 0, 0.5)',
|
|
14391
14403
|
closeButtonActiveBackground: 'hsl(0, 0%, 100%, 12%)',
|
|
14392
14404
|
closeButtonBackground: 'transparent',
|
|
@@ -14396,8 +14408,6 @@ const darkTheme = {
|
|
|
14396
14408
|
footerBorder: '1px solid #3a3a3a',
|
|
14397
14409
|
headerBorder: '1px solid #3a3a3a',
|
|
14398
14410
|
titleColor: '#ffffff',
|
|
14399
|
-
titleFontSize: '18px',
|
|
14400
|
-
titleFontWeight: '600',
|
|
14401
14411
|
},
|
|
14402
14412
|
dropdown: {
|
|
14403
14413
|
accentColor: '#0A84FF',
|
|
@@ -14405,16 +14415,6 @@ const darkTheme = {
|
|
|
14405
14415
|
selectedBackgroundColor: 'rgba(10, 132, 255, 0.2)',
|
|
14406
14416
|
textColor: '#e0e0e0',
|
|
14407
14417
|
},
|
|
14408
|
-
editor: {
|
|
14409
|
-
controlsBottom: '16px',
|
|
14410
|
-
controlsTransform: 'translateX(-50%)',
|
|
14411
|
-
controlsTransition: 'opacity 0.2s ease',
|
|
14412
|
-
controlsTransitionDuration: '0.2s',
|
|
14413
|
-
topLeftButtonsLeft: '16px',
|
|
14414
|
-
topLeftButtonsTop: '16px',
|
|
14415
|
-
topRightButtonsRight: '16px',
|
|
14416
|
-
topRightButtonsTop: '16px',
|
|
14417
|
-
},
|
|
14418
14418
|
engine: {
|
|
14419
14419
|
backgroundColor: '#1a1a1a',
|
|
14420
14420
|
},
|
|
@@ -14450,33 +14450,22 @@ const darkTheme = {
|
|
|
14450
14450
|
menu: {
|
|
14451
14451
|
backgroundColor: '#2a2a2a',
|
|
14452
14452
|
border: '1px solid #3a3a3a',
|
|
14453
|
-
borderRadius: '12px',
|
|
14454
14453
|
boxShadow: '0 0 6px rgba(0, 0, 0, 0.3)',
|
|
14455
|
-
gap: '4px',
|
|
14456
|
-
itemBorderRadius: '12px',
|
|
14457
14454
|
itemButtonHoverBackgroundColor: 'hsl(0, 0%, 100%, 8%)',
|
|
14458
14455
|
itemChildOpenBackgroundColor: 'hsl(0, 0%, 100%, 6%)',
|
|
14459
14456
|
itemColor: '#e0e0e0',
|
|
14460
14457
|
itemEditingBackgroundColor: '#3a3a3a',
|
|
14461
|
-
itemFontSize: '14px',
|
|
14462
|
-
itemHeight: '40px',
|
|
14463
14458
|
itemInputBorder: '1px solid #4a4a4a',
|
|
14464
|
-
itemInputHeight: '32px',
|
|
14465
14459
|
itemInputSelectionColor: 'rgba(255, 255, 255, 0.2)',
|
|
14466
14460
|
itemInputSelectionTextColor: '#ffffff',
|
|
14467
|
-
itemMinHeight: '40px',
|
|
14468
14461
|
itemOverlayBackgroundColor: 'hsl(0, 0%, 0%, 20%)',
|
|
14469
|
-
itemPadding: '8px',
|
|
14470
14462
|
itemSelectedBackgroundColor: '#0A84FF',
|
|
14471
14463
|
itemSelectedColor: '#ffffff',
|
|
14472
|
-
padding: '8px',
|
|
14473
|
-
width: '200px',
|
|
14474
14464
|
},
|
|
14475
14465
|
moreMenu: {
|
|
14476
14466
|
buttonActiveBackgroundColor: '#444444',
|
|
14477
14467
|
buttonBackgroundColor: '#2a2a2a',
|
|
14478
14468
|
buttonBorder: '1px solid #3a3a3a',
|
|
14479
|
-
buttonBorderRadius: '12px',
|
|
14480
14469
|
buttonBoxShadow: '0 0 6px rgba(0, 0, 0, 0.3)',
|
|
14481
14470
|
buttonColor: '#ffffff',
|
|
14482
14471
|
buttonHoverBackgroundColor: '#3b3b3b',
|
|
@@ -14499,9 +14488,6 @@ const darkTheme = {
|
|
|
14499
14488
|
thumbColor: '#ffffff',
|
|
14500
14489
|
trackColor: '#4a4a4a',
|
|
14501
14490
|
},
|
|
14502
|
-
portal: {
|
|
14503
|
-
maxHeight: '300px',
|
|
14504
|
-
},
|
|
14505
14491
|
settings: {
|
|
14506
14492
|
contentHeadingColor: '#ffffff',
|
|
14507
14493
|
contentTextColor: '#e0e0e0',
|
|
@@ -14514,14 +14500,10 @@ const darkTheme = {
|
|
|
14514
14500
|
selectedBackgroundColor: '#3a3a3a',
|
|
14515
14501
|
},
|
|
14516
14502
|
slideToggle: {
|
|
14517
|
-
borderRadius: '11px',
|
|
14518
|
-
height: '22px',
|
|
14519
14503
|
thumbColor: '#ffffff',
|
|
14520
|
-
thumbSize: '18px',
|
|
14521
14504
|
trackCheckedColor: '#0A84FF',
|
|
14522
14505
|
trackColor: '#4a4a4a',
|
|
14523
14506
|
transitionDuration: '0.2s',
|
|
14524
|
-
width: '40px',
|
|
14525
14507
|
},
|
|
14526
14508
|
splitButton: {
|
|
14527
14509
|
backgroundColor: '#2a2a2a',
|
|
@@ -14535,20 +14517,14 @@ const darkTheme = {
|
|
|
14535
14517
|
hoverBackgroundColor: '#3a3a3a',
|
|
14536
14518
|
selectedBackgroundColor: '#3a3a3a',
|
|
14537
14519
|
},
|
|
14538
|
-
submenu: {
|
|
14539
|
-
gap: '4px',
|
|
14540
|
-
},
|
|
14541
14520
|
tooltip: {
|
|
14542
14521
|
backgroundColor: '#2a2a2a',
|
|
14543
14522
|
border: '1px solid #3a3a3a',
|
|
14544
|
-
borderRadius: '16px',
|
|
14545
14523
|
boxShadow: '0 1px 8px rgba(0, 0, 0, 0.4)',
|
|
14546
14524
|
color: '#ffffff',
|
|
14547
|
-
padding: '12px',
|
|
14548
14525
|
},
|
|
14549
14526
|
utilityPanel: {
|
|
14550
14527
|
backgroundColor: '#3a3a3a',
|
|
14551
|
-
buttonBorderRadius: '8px',
|
|
14552
14528
|
buttonColor: '#e0e0e0',
|
|
14553
14529
|
buttonHoverBackgroundColor: 'hsl(0, 0%, 100%, 8%)',
|
|
14554
14530
|
separatorColor: 'hsl(0, 0%, 100%, 12%)',
|
|
@@ -15291,15 +15267,10 @@ class KritzelPath extends KritzelBaseObject {
|
|
|
15291
15267
|
* Does NOT modify translateX/translateY (use updateDimensions for initial setup).
|
|
15292
15268
|
*/
|
|
15293
15269
|
updateBoundingBox() {
|
|
15294
|
-
const
|
|
15295
|
-
|
|
15296
|
-
|
|
15297
|
-
|
|
15298
|
-
});
|
|
15299
|
-
const minX = Math.min(...rotatedPoints.map(p => p[0] - this.strokeWidth / 2));
|
|
15300
|
-
const minY = Math.min(...rotatedPoints.map(p => p[1] - this.strokeWidth / 2));
|
|
15301
|
-
const maxX = Math.max(...rotatedPoints.map(p => p[0] + this.strokeWidth / 2));
|
|
15302
|
-
const maxY = Math.max(...rotatedPoints.map(p => p[1] + this.strokeWidth / 2));
|
|
15270
|
+
const minX = Math.min(...this.points.map(p => p[0])) - this.strokeWidth / 2;
|
|
15271
|
+
const minY = Math.min(...this.points.map(p => p[1])) - this.strokeWidth / 2;
|
|
15272
|
+
const maxX = Math.max(...this.points.map(p => p[0])) + this.strokeWidth / 2;
|
|
15273
|
+
const maxY = Math.max(...this.points.map(p => p[1])) + this.strokeWidth / 2;
|
|
15303
15274
|
this.width = maxX - minX + this.lineSlack;
|
|
15304
15275
|
this.height = maxY - minY + this.lineSlack;
|
|
15305
15276
|
this.x = minX;
|
|
@@ -17779,7 +17750,7 @@ class KritzelMoveHandler extends KritzelBaseHandler {
|
|
|
17779
17750
|
const moveDeltaX = Math.abs(clientX - this.startX);
|
|
17780
17751
|
const moveDeltaY = Math.abs(clientY - this.startY);
|
|
17781
17752
|
const moveThreshold = 5;
|
|
17782
|
-
if (moveDeltaX > moveThreshold || moveDeltaY > moveThreshold) {
|
|
17753
|
+
if (this.hasMoved || moveDeltaX > moveThreshold || moveDeltaY > moveThreshold) {
|
|
17783
17754
|
// Check for anchor disconnect threshold on lines
|
|
17784
17755
|
this.checkAndDisconnectAnchors(clientX, clientY);
|
|
17785
17756
|
selectionGroup.move(clientX, clientY, this.dragStartX, this.dragStartY);
|
|
@@ -17805,7 +17776,7 @@ class KritzelMoveHandler extends KritzelBaseHandler {
|
|
|
17805
17776
|
const moveDeltaX = Math.abs(x - this.startX);
|
|
17806
17777
|
const moveDeltaY = Math.abs(y - this.startY);
|
|
17807
17778
|
const moveThreshold = 5;
|
|
17808
|
-
if (moveDeltaX > moveThreshold || moveDeltaY > moveThreshold) {
|
|
17779
|
+
if (this.hasMoved || moveDeltaX > moveThreshold || moveDeltaY > moveThreshold) {
|
|
17809
17780
|
clearTimeout(this._core.store.state.longTouchTimeout);
|
|
17810
17781
|
// Check for anchor disconnect threshold on lines
|
|
17811
17782
|
this.checkAndDisconnectAnchors(x, y);
|
package/dist/cjs/index.cjs.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var index = require('./index-i21-qqbc.js');
|
|
4
|
-
var defaultLineTool_config = require('./default-line-tool.config-
|
|
4
|
+
var defaultLineTool_config = require('./default-line-tool.config-D-Ru2SSK.js');
|
|
5
5
|
|
|
6
6
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
7
7
|
|
|
@@ -1173,7 +1173,7 @@ const KritzelDialog = class {
|
|
|
1173
1173
|
};
|
|
1174
1174
|
KritzelDialog.style = kritzelDialogCss();
|
|
1175
1175
|
|
|
1176
|
-
const kritzelDropdownCss = () => `:host{display:inline-flex;vertical-align:middle;width:100%;position:relative}.dropdown-wrapper{display:flex;align-items:center;border:1px solid var(--kritzel-global-border-color, #ebebeb);border-radius:var(--kritzel-controls-control-border-radius, 12px);overflow:visible;height:32px;width:100%;position:relative}.dropdown-container{flex:1;height:100%;min-width:0}.dropdown-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 8px;height:100%;width:100%;box-sizing:border-box;border-radius:var(--kritzel-controls-control-border-radius, 12px);border:none;background-color:var(--kritzel-controls-background-color, #ffffff);cursor:var(--kritzel-global-pointer-cursor, pointer);outline:none;font-size:inherit;font-family:inherit;color:var(--kritzel-dropdown-text-color, #333333);-webkit-tap-highlight-color:transparent;text-align:left}.dropdown-trigger:focus-visible{outline:revert}.dropdown-trigger.has-suffix-border{border-right:1px solid var(--kritzel-global-border-color, #ebebeb);border-top-right-radius:0;border-bottom-right-radius:0}.dropdown-trigger.has-prefix-border{border-left:1px solid var(--kritzel-global-border-color, #ebebeb);border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-trigger-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.dropdown-trigger-arrow{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;transition:transform 0.2s ease}.dropdown-trigger-arrow svg{width:100%;height:100%}.dropdown-trigger.is-open .dropdown-trigger-arrow{transform:rotate(180deg)}.dropdown-trigger.is-open.open-up .dropdown-trigger-arrow{transform:rotate(0deg)}.dropdown-menu{position:absolute;left:0;right:0;margin:0;padding:4px 0;list-style:none;background-color:var(--kritzel-controls-background-color, #ffffff);border:1px solid var(--kritzel-global-border-color, #ebebeb);border-radius:var(--kritzel-controls-control-border-radius, 12px);box-shadow:var(--kritzel-controls-box-shadow, 0 4px 12px rgba(0, 0, 0, 0.15));z-index:1000;max-height:240px;overflow-y:auto;opacity:0;visibility:hidden;transition:opacity 0.15s ease, transform 0.15s ease, visibility 0.15s;outline:none}.dropdown-menu.open-down{top:calc(100% + 4px);bottom:auto;transform:translateY(-8px)}.dropdown-menu.open-up{bottom:calc(100% + 4px);top:auto;transform:translateY(8px)}.dropdown-menu.is-open{opacity:1;visibility:
|
|
1176
|
+
const kritzelDropdownCss = () => `:host{display:inline-flex;vertical-align:middle;width:100%;position:relative}.dropdown-wrapper{display:flex;align-items:center;border:1px solid var(--kritzel-global-border-color, #ebebeb);border-radius:var(--kritzel-controls-control-border-radius, 12px);overflow:visible;height:32px;width:100%;position:relative}.dropdown-container{flex:1;height:100%;min-width:0}.dropdown-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 8px;height:100%;width:100%;box-sizing:border-box;border-radius:var(--kritzel-controls-control-border-radius, 12px);border:none;background-color:var(--kritzel-controls-background-color, #ffffff);cursor:var(--kritzel-global-pointer-cursor, pointer);outline:none;font-size:inherit;font-family:inherit;color:var(--kritzel-dropdown-text-color, #333333);-webkit-tap-highlight-color:transparent;text-align:left}.dropdown-trigger:focus-visible{outline:revert}.dropdown-trigger.has-suffix-border{border-right:1px solid var(--kritzel-global-border-color, #ebebeb);border-top-right-radius:0;border-bottom-right-radius:0}.dropdown-trigger.has-prefix-border{border-left:1px solid var(--kritzel-global-border-color, #ebebeb);border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-trigger-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.dropdown-trigger-arrow{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;transition:transform 0.2s ease}.dropdown-trigger-arrow svg{width:100%;height:100%}.dropdown-trigger.is-open .dropdown-trigger-arrow{transform:rotate(180deg)}.dropdown-trigger.is-open.open-up .dropdown-trigger-arrow{transform:rotate(0deg)}.dropdown-menu{position:absolute;left:0;right:0;margin:0;padding:4px 0;list-style:none;background-color:var(--kritzel-controls-background-color, #ffffff);border:1px solid var(--kritzel-global-border-color, #ebebeb);border-radius:var(--kritzel-controls-control-border-radius, 12px);box-shadow:var(--kritzel-controls-box-shadow, 0 4px 12px rgba(0, 0, 0, 0.15));z-index:1000;max-height:240px;overflow-y:auto;opacity:0;visibility:hidden;transition:opacity 0.15s ease, transform 0.15s ease, visibility 0.15s;outline:none}.dropdown-menu.open-down{top:calc(100% + 4px);bottom:auto;transform:translateY(-8px)}.dropdown-menu.open-up{bottom:calc(100% + 4px);top:auto;transform:translateY(8px)}.dropdown-menu.is-open{opacity:1;visibility:inherit;transform:translateY(0)}.dropdown-menu.open-up{box-shadow:var(--kritzel-controls-box-shadow, 0 -4px 12px rgba(0, 0, 0, 0.15))}.dropdown-option{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;cursor:var(--kritzel-global-pointer-cursor, pointer);color:var(--kritzel-dropdown-text-color, #333333);transition:background-color 0.1s ease;-webkit-tap-highlight-color:transparent}.dropdown-option.is-focused{background-color:var(--kritzel-dropdown-hover-background-color, #f0f0f0)}.dropdown-option.is-selected{font-weight:600;background-color:var(--kritzel-dropdown-selected-background-color, #007bff1a)}.dropdown-option-check{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;color:var(--kritzel-dropdown-accent-color, #007bff)}.dropdown-option-check svg{width:100%;height:100%}.dropdown-menu{scrollbar-color:var(--kritzel-global-scrollbar-thumb-color, #ebebeb) transparent;scrollbar-width:thin}::slotted(*){height:100%;box-sizing:border-box}`;
|
|
1177
1177
|
|
|
1178
1178
|
const KritzelDropdown = class {
|
|
1179
1179
|
constructor(hostRef) {
|
|
@@ -1210,6 +1210,12 @@ const KritzelDropdown = class {
|
|
|
1210
1210
|
this.evaluateSuffixContent();
|
|
1211
1211
|
this.evaluatePrefixContent();
|
|
1212
1212
|
}
|
|
1213
|
+
disconnectedCallback() {
|
|
1214
|
+
// Close menu when component is removed from DOM to prevent orphaned open dropdowns
|
|
1215
|
+
if (this.isOpen) {
|
|
1216
|
+
this.isOpen = false;
|
|
1217
|
+
}
|
|
1218
|
+
}
|
|
1213
1219
|
handleDocumentClick(event) {
|
|
1214
1220
|
if (this.isOpen && !this.el.contains(event.target)) {
|
|
1215
1221
|
this.closeMenu();
|
|
@@ -1399,7 +1405,7 @@ const KritzelDropdown = class {
|
|
|
1399
1405
|
'open-up': this.openDirection === 'up',
|
|
1400
1406
|
'open-down': this.openDirection === 'down',
|
|
1401
1407
|
};
|
|
1402
|
-
return (index.h(index.Host, { key: '
|
|
1408
|
+
return (index.h(index.Host, { key: '83e46921e04c655ed185bfe3de524a61e9510447' }, index.h("div", { key: '251ee0af926e24e13a2b07fa6b8b41d02212434d', class: "dropdown-wrapper", ref: el => (this.wrapperElement = el) }, index.h("slot", { key: '2cf811d76e5e626d19aa746e4f59b4d25ca45ae0', name: "prefix", ref: el => (this.prefixSlotElement = el), onSlotchange: this.evaluatePrefixContent }), index.h("div", { key: '1d54e16f12814c150d842266f6ee6ae8891a0130', class: "dropdown-container", style: { width: this.width } }, index.h("button", { key: '3c99b3dd4a25a59579eed072953c3d7f502f7a21', type: "button", class: triggerClasses, style: { ...this.selectStyles, ...this.getSelectedStyle() }, onClick: this.toggleMenu, onKeyDown: this.handleTriggerKeyDown, "aria-haspopup": "listbox", "aria-expanded": this.isOpen ? 'true' : 'false', ref: el => (this.triggerElement = el) }, index.h("span", { key: '1bfa6da63ffdd6bf2b022f92425ce212e009d507', class: "dropdown-trigger-label" }, this.getSelectedLabel()), index.h("span", { key: 'e08ae142512344ffcd0ecfb477133a18fcfb3f34', class: "dropdown-trigger-arrow", "aria-hidden": "true" }, index.h("svg", { key: '8386ae9c934762f8e054f42c580cf750c5a9440a', xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, index.h("polyline", { key: '024d4ecbc8a3ab9879edc02c890df7ceabef1f8a', points: "6 9 12 15 18 9" }))))), index.h("slot", { key: '028de1fa2049c7d682b967f34a3a5e9c39d32fe2', name: "suffix", ref: el => (this.suffixSlotElement = el), onSlotchange: this.evaluateSuffixContent }), index.h("ul", { key: '51cd0ecefc1dcb0cd869d7e67c56f1944847efef', class: menuClasses, role: "listbox", tabindex: "-1", onKeyDown: this.handleMenuKeyDown, ref: el => (this.menuElement = el) }, this.options.map((option, index$1) => {
|
|
1403
1409
|
const isSelected = option.value === this.internalValue;
|
|
1404
1410
|
const isFocused = index$1 === this.focusedIndex;
|
|
1405
1411
|
const optionClasses = {
|
|
@@ -23717,7 +23723,7 @@ const KritzelPortal = class {
|
|
|
23717
23723
|
* This file is auto-generated by the version bump scripts.
|
|
23718
23724
|
* Do not modify manually.
|
|
23719
23725
|
*/
|
|
23720
|
-
const KRITZEL_VERSION = '0.1.
|
|
23726
|
+
const KRITZEL_VERSION = '0.1.17';
|
|
23721
23727
|
|
|
23722
23728
|
const kritzelSettingsCss = () => `:host{display:contents}kritzel-dialog{--kritzel-dialog-body-padding:0;--kritzel-dialog-width-large:800px;--kritzel-dialog-height-large:500px}.footer-button{padding:8px 16px;border-radius:6px;cursor:pointer;font-size:14px}.cancel-button{border:1px solid #ebebeb;background:#fff;color:inherit}.cancel-button:hover{background:#f5f5f5}.settings-content{padding:0}.settings-content h3{margin:0 0 16px 0;font-size:18px;font-weight:600;color:var(--kritzel-settings-content-heading-color, #333333)}.settings-content p{margin:0;font-size:14px;color:var(--kritzel-settings-content-text-color, #666666);line-height:1.5}.settings-group{display:flex;flex-direction:column;gap:24px}.settings-item{display:flex;flex-direction:column;gap:8px}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.settings-label{font-size:14px;font-weight:500;color:var(--kritzel-settings-label-color, #333333);margin:0}.settings-description{font-size:12px;color:var(--kritzel-settings-description-color, #888888);margin:0;line-height:1.4}`;
|
|
23723
23729
|
|
|
@@ -24008,7 +24014,7 @@ const KritzelStrokeSize = class {
|
|
|
24008
24014
|
};
|
|
24009
24015
|
KritzelStrokeSize.style = kritzelStrokeSizeCss();
|
|
24010
24016
|
|
|
24011
|
-
const kritzelToolConfigCss = () => `.expand-toggle{background:none;border:none;cursor:pointer;padding:0;margin:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:var(--kritzel-icon-color, currentColor);transition:transform 0.2s ease}.expand-toggle:hover{opacity:0.7}.expand-toggle:focus{outline:none}.expand-toggle:focus-visible{outline:2px solid var(--kritzel-focus-color, #007acc);outline-offset:2px}.expand-toggle:active{transform:scale(0.95)}.divider{height:1px;background-color:var(--kritzel-divider-color, #e0e0e0);margin:4px 0;width:100%}`;
|
|
24017
|
+
const kritzelToolConfigCss = () => `.expand-toggle{background:none;border:none;cursor:var(--kritzel-global-pointer-cursor, pointer);padding:0;margin:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:var(--kritzel-icon-color, currentColor);transition:transform 0.2s ease}.expand-toggle:hover{opacity:0.7}.expand-toggle:focus{outline:none}.expand-toggle:focus-visible{outline:2px solid var(--kritzel-focus-color, #007acc);outline-offset:2px}.expand-toggle:active{transform:scale(0.95)}.divider{height:1px;background-color:var(--kritzel-divider-color, #e0e0e0);margin:4px 0;width:100%}`;
|
|
24012
24018
|
|
|
24013
24019
|
const KritzelToolConfig = class {
|
|
24014
24020
|
constructor(hostRef) {
|
|
@@ -102,7 +102,7 @@ export class KritzelMoveHandler extends KritzelBaseHandler {
|
|
|
102
102
|
const moveDeltaX = Math.abs(clientX - this.startX);
|
|
103
103
|
const moveDeltaY = Math.abs(clientY - this.startY);
|
|
104
104
|
const moveThreshold = 5;
|
|
105
|
-
if (moveDeltaX > moveThreshold || moveDeltaY > moveThreshold) {
|
|
105
|
+
if (this.hasMoved || moveDeltaX > moveThreshold || moveDeltaY > moveThreshold) {
|
|
106
106
|
// Check for anchor disconnect threshold on lines
|
|
107
107
|
this.checkAndDisconnectAnchors(clientX, clientY);
|
|
108
108
|
selectionGroup.move(clientX, clientY, this.dragStartX, this.dragStartY);
|
|
@@ -128,7 +128,7 @@ export class KritzelMoveHandler extends KritzelBaseHandler {
|
|
|
128
128
|
const moveDeltaX = Math.abs(x - this.startX);
|
|
129
129
|
const moveDeltaY = Math.abs(y - this.startY);
|
|
130
130
|
const moveThreshold = 5;
|
|
131
|
-
if (moveDeltaX > moveThreshold || moveDeltaY > moveThreshold) {
|
|
131
|
+
if (this.hasMoved || moveDeltaX > moveThreshold || moveDeltaY > moveThreshold) {
|
|
132
132
|
clearTimeout(this._core.store.state.longTouchTimeout);
|
|
133
133
|
// Check for anchor disconnect threshold on lines
|
|
134
134
|
this.checkAndDisconnectAnchors(x, y);
|
|
@@ -246,15 +246,10 @@ export class KritzelPath extends KritzelBaseObject {
|
|
|
246
246
|
* Does NOT modify translateX/translateY (use updateDimensions for initial setup).
|
|
247
247
|
*/
|
|
248
248
|
updateBoundingBox() {
|
|
249
|
-
const
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
});
|
|
254
|
-
const minX = Math.min(...rotatedPoints.map(p => p[0] - this.strokeWidth / 2));
|
|
255
|
-
const minY = Math.min(...rotatedPoints.map(p => p[1] - this.strokeWidth / 2));
|
|
256
|
-
const maxX = Math.max(...rotatedPoints.map(p => p[0] + this.strokeWidth / 2));
|
|
257
|
-
const maxY = Math.max(...rotatedPoints.map(p => p[1] + this.strokeWidth / 2));
|
|
249
|
+
const minX = Math.min(...this.points.map(p => p[0])) - this.strokeWidth / 2;
|
|
250
|
+
const minY = Math.min(...this.points.map(p => p[1])) - this.strokeWidth / 2;
|
|
251
|
+
const maxX = Math.max(...this.points.map(p => p[0])) + this.strokeWidth / 2;
|
|
252
|
+
const maxY = Math.max(...this.points.map(p => p[1])) + this.strokeWidth / 2;
|
|
258
253
|
this.width = maxX - minX + this.lineSlack;
|
|
259
254
|
this.height = maxY - minY + this.lineSlack;
|
|
260
255
|
this.x = minX;
|
|
@@ -30,6 +30,12 @@ export class KritzelDropdown {
|
|
|
30
30
|
this.evaluateSuffixContent();
|
|
31
31
|
this.evaluatePrefixContent();
|
|
32
32
|
}
|
|
33
|
+
disconnectedCallback() {
|
|
34
|
+
// Close menu when component is removed from DOM to prevent orphaned open dropdowns
|
|
35
|
+
if (this.isOpen) {
|
|
36
|
+
this.isOpen = false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
33
39
|
handleDocumentClick(event) {
|
|
34
40
|
if (this.isOpen && !this.el.contains(event.target)) {
|
|
35
41
|
this.closeMenu();
|
|
@@ -219,7 +225,7 @@ export class KritzelDropdown {
|
|
|
219
225
|
'open-up': this.openDirection === 'up',
|
|
220
226
|
'open-down': this.openDirection === 'down',
|
|
221
227
|
};
|
|
222
|
-
return (h(Host, { key: '
|
|
228
|
+
return (h(Host, { key: '83e46921e04c655ed185bfe3de524a61e9510447' }, h("div", { key: '251ee0af926e24e13a2b07fa6b8b41d02212434d', class: "dropdown-wrapper", ref: el => (this.wrapperElement = el) }, h("slot", { key: '2cf811d76e5e626d19aa746e4f59b4d25ca45ae0', name: "prefix", ref: el => (this.prefixSlotElement = el), onSlotchange: this.evaluatePrefixContent }), h("div", { key: '1d54e16f12814c150d842266f6ee6ae8891a0130', class: "dropdown-container", style: { width: this.width } }, h("button", { key: '3c99b3dd4a25a59579eed072953c3d7f502f7a21', type: "button", class: triggerClasses, style: { ...this.selectStyles, ...this.getSelectedStyle() }, onClick: this.toggleMenu, onKeyDown: this.handleTriggerKeyDown, "aria-haspopup": "listbox", "aria-expanded": this.isOpen ? 'true' : 'false', ref: el => (this.triggerElement = el) }, h("span", { key: '1bfa6da63ffdd6bf2b022f92425ce212e009d507', class: "dropdown-trigger-label" }, this.getSelectedLabel()), h("span", { key: 'e08ae142512344ffcd0ecfb477133a18fcfb3f34', class: "dropdown-trigger-arrow", "aria-hidden": "true" }, h("svg", { key: '8386ae9c934762f8e054f42c580cf750c5a9440a', xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("polyline", { key: '024d4ecbc8a3ab9879edc02c890df7ceabef1f8a', points: "6 9 12 15 18 9" }))))), h("slot", { key: '028de1fa2049c7d682b967f34a3a5e9c39d32fe2', name: "suffix", ref: el => (this.suffixSlotElement = el), onSlotchange: this.evaluateSuffixContent }), h("ul", { key: '51cd0ecefc1dcb0cd869d7e67c56f1944847efef', class: menuClasses, role: "listbox", tabindex: "-1", onKeyDown: this.handleMenuKeyDown, ref: el => (this.menuElement = el) }, this.options.map((option, index) => {
|
|
223
229
|
const isSelected = option.value === this.internalValue;
|
|
224
230
|
const isFocused = index === this.focusedIndex;
|
|
225
231
|
const optionClasses = {
|