kritzel-stencil 0.4.20 → 0.4.21

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.
Files changed (217) hide show
  1. package/LICENSE +21 -21
  2. package/LICENSE.md +49 -49
  3. package/dist/cjs/{index-Dn19mGl-.js → index-Xav9JFHg.js} +11 -47
  4. package/dist/cjs/index.cjs.js +1 -1
  5. package/dist/cjs/kritzel-active-users_47.cjs.entry.js +151 -119
  6. package/dist/cjs/kritzel-brush-style.cjs.entry.js +2 -2
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/cjs/{schema.constants-CY0WWJYd.js → schema.constants-CjN-B633.js} +20 -44
  9. package/dist/cjs/stencil.cjs.js +2 -2
  10. package/dist/collection/classes/structures/app-state-map.structure.js +16 -6
  11. package/dist/collection/collection-manifest.json +1 -1
  12. package/dist/collection/components/core/kritzel-awareness-cursors/kritzel-awareness-cursors.css +115 -115
  13. package/dist/collection/components/core/kritzel-awareness-cursors/kritzel-awareness-cursors.js +1 -1
  14. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.css +10 -10
  15. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +1 -1
  16. package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +160 -160
  17. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +18 -18
  18. package/dist/collection/components/core/kritzel-engine/kritzel-engine.css +80 -80
  19. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +43 -21
  20. package/dist/collection/components/core/kritzel-watermark/kritzel-watermark.css +29 -29
  21. package/dist/collection/components/core/kritzel-watermark/kritzel-watermark.js +2 -2
  22. package/dist/collection/components/shared/kritzel-avatar/kritzel-avatar.css +58 -58
  23. package/dist/collection/components/shared/kritzel-avatar/kritzel-avatar.js +3 -3
  24. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.css +42 -42
  25. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +3 -3
  26. package/dist/collection/components/shared/kritzel-button/kritzel-button.css +73 -73
  27. package/dist/collection/components/shared/kritzel-button/kritzel-button.js +2 -2
  28. package/dist/collection/components/shared/kritzel-color/kritzel-color.css +24 -24
  29. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -2
  30. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +46 -46
  31. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +1 -1
  32. package/dist/collection/components/shared/kritzel-dialog/kritzel-dialog.css +209 -209
  33. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.css +190 -190
  34. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +2 -2
  35. package/dist/collection/components/shared/kritzel-font/kritzel-font.css +10 -10
  36. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -1
  37. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.css +48 -48
  38. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +2 -2
  39. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +30 -30
  40. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +1 -1
  41. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.css +18 -18
  42. package/dist/collection/components/shared/kritzel-input/kritzel-input.css +69 -69
  43. package/dist/collection/components/shared/kritzel-input/kritzel-input.js +1 -1
  44. package/dist/collection/components/shared/kritzel-line-endings/kritzel-line-endings.css +60 -60
  45. package/dist/collection/components/shared/kritzel-line-endings/kritzel-line-endings.js +3 -3
  46. package/dist/collection/components/shared/kritzel-master-detail/kritzel-master-detail.css +190 -190
  47. package/dist/collection/components/shared/kritzel-master-detail/kritzel-master-detail.js +3 -3
  48. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +34 -34
  49. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +1 -1
  50. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.css +166 -166
  51. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +2 -2
  52. package/dist/collection/components/shared/kritzel-numeric-input/kritzel-numeric-input.css +102 -102
  53. package/dist/collection/components/shared/kritzel-numeric-input/kritzel-numeric-input.js +1 -1
  54. package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.css +85 -85
  55. package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.js +1 -1
  56. package/dist/collection/components/shared/kritzel-pill-tabs/kritzel-pill-tabs.css +68 -68
  57. package/dist/collection/components/shared/kritzel-pill-tabs/kritzel-pill-tabs.js +2 -2
  58. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +1 -1
  59. package/dist/collection/components/shared/kritzel-shape-fill/kritzel-shape-fill.css +47 -47
  60. package/dist/collection/components/shared/kritzel-shape-fill/kritzel-shape-fill.js +4 -4
  61. package/dist/collection/components/shared/kritzel-slide-toggle/kritzel-slide-toggle.css +48 -48
  62. package/dist/collection/components/shared/kritzel-slide-toggle/kritzel-slide-toggle.js +1 -1
  63. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.css +78 -78
  64. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +1 -1
  65. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +37 -37
  66. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +1 -1
  67. package/dist/collection/components/shared/kritzel-sync-indicator/kritzel-sync-indicator.css +50 -50
  68. package/dist/collection/components/shared/kritzel-sync-indicator/kritzel-sync-indicator.js +1 -1
  69. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.css +18 -18
  70. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +2 -2
  71. package/dist/collection/components/ui/kritzel-active-users/kritzel-active-users.css +65 -65
  72. package/dist/collection/components/ui/kritzel-back-to-content/kritzel-back-to-content.css +42 -42
  73. package/dist/collection/components/ui/kritzel-back-to-content/kritzel-back-to-content.js +1 -1
  74. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.css +112 -112
  75. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +331 -331
  76. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +6 -6
  77. package/dist/collection/components/ui/kritzel-current-user/kritzel-current-user.css +11 -11
  78. package/dist/collection/components/ui/kritzel-current-user/kritzel-current-user.js +1 -1
  79. package/dist/collection/components/ui/kritzel-current-user-dialog/kritzel-current-user-dialog.css +39 -39
  80. package/dist/collection/components/ui/kritzel-current-user-dialog/kritzel-current-user-dialog.js +1 -1
  81. package/dist/collection/components/ui/kritzel-export/kritzel-export.css +89 -89
  82. package/dist/collection/components/ui/kritzel-export/kritzel-export.js +1 -1
  83. package/dist/collection/components/ui/kritzel-loading-overlay/kritzel-loading-overlay.css +50 -50
  84. package/dist/collection/components/ui/kritzel-loading-overlay/kritzel-loading-overlay.js +1 -1
  85. package/dist/collection/components/ui/kritzel-login-dialog/kritzel-login-dialog.css +98 -98
  86. package/dist/collection/components/ui/kritzel-login-dialog/kritzel-login-dialog.js +1 -1
  87. package/dist/collection/components/ui/kritzel-more-menu/kritzel-more-menu.css +58 -58
  88. package/dist/collection/components/ui/kritzel-more-menu/kritzel-more-menu.js +2 -2
  89. package/dist/collection/components/ui/kritzel-notification-card/kritzel-notification-card.css +101 -101
  90. package/dist/collection/components/ui/kritzel-settings/kritzel-settings.css +137 -137
  91. package/dist/collection/components/ui/kritzel-settings/kritzel-settings.js +1 -1
  92. package/dist/collection/components/ui/kritzel-share-dialog/kritzel-share-dialog.css +150 -150
  93. package/dist/collection/components/ui/kritzel-share-dialog/kritzel-share-dialog.js +2 -2
  94. package/dist/collection/components/ui/kritzel-tool-config/kritzel-tool-config.css +38 -38
  95. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.css +45 -45
  96. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +1 -1
  97. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.css +16 -16
  98. package/dist/collection/components/ui/kritzel-zoom-panel/kritzel-zoom-panel.css +72 -72
  99. package/dist/collection/components/ui/kritzel-zoom-panel/kritzel-zoom-panel.js +1 -1
  100. package/dist/collection/constants/version.js +1 -1
  101. package/dist/collection/helpers/cursor.helper.js +6 -6
  102. package/dist/collection/helpers/svg-export.helper.js +41 -41
  103. package/dist/components/index.js +3 -3
  104. package/dist/components/kritzel-active-users.js +1 -1
  105. package/dist/components/kritzel-avatar.js +1 -1
  106. package/dist/components/kritzel-awareness-cursors.js +1 -1
  107. package/dist/components/kritzel-back-to-content.js +1 -1
  108. package/dist/components/kritzel-brush-style.js +4 -4
  109. package/dist/components/kritzel-button.js +1 -1
  110. package/dist/components/kritzel-color-palette.js +1 -1
  111. package/dist/components/kritzel-color.js +1 -1
  112. package/dist/components/kritzel-context-menu.js +1 -1
  113. package/dist/components/kritzel-controls.js +1 -1
  114. package/dist/components/kritzel-current-user-dialog.js +1 -1
  115. package/dist/components/kritzel-current-user.js +1 -1
  116. package/dist/components/kritzel-cursor-trail.js +1 -1
  117. package/dist/components/kritzel-dialog.js +1 -1
  118. package/dist/components/kritzel-dropdown.js +1 -1
  119. package/dist/components/kritzel-editor.js +56 -56
  120. package/dist/components/kritzel-engine.js +1 -1
  121. package/dist/components/kritzel-export.js +1 -1
  122. package/dist/components/kritzel-font-family.js +1 -1
  123. package/dist/components/kritzel-font-size.js +1 -1
  124. package/dist/components/kritzel-font.js +1 -1
  125. package/dist/components/kritzel-icon.js +1 -1
  126. package/dist/components/kritzel-input.js +1 -1
  127. package/dist/components/kritzel-line-endings.js +1 -1
  128. package/dist/components/kritzel-loading-overlay.js +1 -1
  129. package/dist/components/kritzel-login-dialog.js +1 -1
  130. package/dist/components/kritzel-master-detail.js +1 -1
  131. package/dist/components/kritzel-menu-item.js +1 -1
  132. package/dist/components/kritzel-menu.js +1 -1
  133. package/dist/components/kritzel-more-menu.js +1 -1
  134. package/dist/components/kritzel-notification-card.js +1 -1
  135. package/dist/components/kritzel-numeric-input.js +1 -1
  136. package/dist/components/kritzel-opacity-slider.js +1 -1
  137. package/dist/components/kritzel-pill-tabs.js +1 -1
  138. package/dist/components/kritzel-portal.js +1 -1
  139. package/dist/components/kritzel-settings.js +1 -1
  140. package/dist/components/kritzel-shape-fill.js +1 -1
  141. package/dist/components/kritzel-share-dialog.js +1 -1
  142. package/dist/components/kritzel-slide-toggle.js +1 -1
  143. package/dist/components/kritzel-split-button.js +1 -1
  144. package/dist/components/kritzel-stroke-size.js +1 -1
  145. package/dist/components/kritzel-sync-indicator.js +1 -1
  146. package/dist/components/kritzel-tool-config.js +1 -1
  147. package/dist/components/kritzel-tooltip.js +1 -1
  148. package/dist/components/kritzel-utility-panel.js +1 -1
  149. package/dist/components/kritzel-watermark.js +1 -1
  150. package/dist/components/kritzel-workspace-manager.js +1 -1
  151. package/dist/components/kritzel-zoom-panel.js +1 -1
  152. package/dist/components/{p-CLAz6RJc.js → p-2WiGyky4.js} +3 -3
  153. package/dist/components/{p-zG-WUBGF.js → p-4SPnZZkH.js} +4 -4
  154. package/dist/components/{p-MhQxGUvY.js → p-B-585egz.js} +3 -3
  155. package/dist/components/{p-C9_yBEoX.js → p-B43upypT.js} +10 -30
  156. package/dist/components/{p-CSKToqUl.js → p-B5SWPDuq.js} +4 -4
  157. package/dist/components/{p-Covorf4C.js → p-BFYtCsZu.js} +3 -3
  158. package/dist/components/{p-DYPA7jpg.js → p-BPsKYMH6.js} +2 -2
  159. package/dist/components/{p-25ExYYPf.js → p-BdCrcQ0_.js} +9 -9
  160. package/dist/components/{p-Cx-L_28S.js → p-BoN700-O.js} +3 -3
  161. package/dist/components/{p-ME1sDz3f.js → p-BozrueXV.js} +2 -2
  162. package/dist/components/{p-D2VcPEtL.js → p-BrNsOp2v.js} +6 -6
  163. package/dist/components/{p-BXUx_C0N.js → p-BsLI_BWq.js} +2 -2
  164. package/dist/components/{p-dAXnRkjA.js → p-C98Eb3_R.js} +5 -5
  165. package/dist/components/{p-Bxi-Bm49.js → p-CAoN_STZ.js} +2 -2
  166. package/dist/components/{p-CSWCmyzb.js → p-CF8pLc07.js} +5 -5
  167. package/dist/components/{p-D3BzgkIE.js → p-CSPYkLLH.js} +2 -2
  168. package/dist/components/{p-Ck-87E2G.js → p-CSuU8frA.js} +1 -1
  169. package/dist/components/{p-Di--2boB.js → p-CXpv9Rxe.js} +3 -3
  170. package/dist/components/{p-Csxx9TbU.js → p-C_f_QElb.js} +104 -96
  171. package/dist/components/{p-o3NYKrVL.js → p-CaBbajU2.js} +3 -3
  172. package/dist/components/{p-3tBE7SyG.js → p-Cm33td2O.js} +2 -2
  173. package/dist/components/{p-vDCa_ZDm.js → p-CrHvaLRV.js} +3 -3
  174. package/dist/components/{p-DT_WBwsw.js → p-CwZ3KKFq.js} +6 -6
  175. package/dist/components/{p-BZZ3KRPk.js → p-CzW58DHM.js} +3 -3
  176. package/dist/components/{p-BrqSjRJN.js → p-Czhdc844.js} +3 -3
  177. package/dist/components/{p-BkXQL5Dl.js → p-D1rjfWgJ.js} +5 -5
  178. package/dist/components/{p-DPsbNStn.js → p-DB58Oa5V.js} +2 -2
  179. package/dist/components/{p-DafP9PAA.js → p-DBqoPgev.js} +2 -2
  180. package/dist/components/{p-BrA9NBEE.js → p-DDTMGbtA.js} +21 -21
  181. package/dist/components/{p-Dznwo6oc.js → p-DKGg-76-.js} +2 -2
  182. package/dist/components/{p-Dp1CD4gK.js → p-DVXTPI71.js} +2 -2
  183. package/dist/components/{p-QSyeAy8R.js → p-DX2nriaq.js} +2 -2
  184. package/dist/components/{p-CHoOe3FD.js → p-Df3BwVGy.js} +3 -3
  185. package/dist/components/{p-DcUIO14-.js → p-Dt7-I2Xz.js} +4 -4
  186. package/dist/components/{p-BShrnlam.js → p-DtnMdWWB.js} +2 -2
  187. package/dist/components/{p-Ch-KG9To.js → p-DwMqCX2P.js} +3 -3
  188. package/dist/components/{p-fSV6KVTC.js → p-GKmqCI8r.js} +3 -3
  189. package/dist/components/{p-CWAChRD5.js → p-HoO86l1o.js} +12 -12
  190. package/dist/components/{p-Qdo3E8dr.js → p-PjPPCHVL.js} +2 -2
  191. package/dist/components/{p-D6JycG-I.js → p-bAacqNHq.js} +3 -3
  192. package/dist/components/{p-DjXQxw9R.js → p-djJSnjAX.js} +3 -3
  193. package/dist/components/{p-b0J2ktAm.js → p-dsxHDlQ3.js} +7 -7
  194. package/dist/components/{p-BppcoKoo.js → p-eZXIu4yK.js} +5 -5
  195. package/dist/components/{p-BFYT03fw.js → p-fL9rl200.js} +3 -3
  196. package/dist/components/{p-1Q4VnThv.js → p-jIKskj3S.js} +3 -3
  197. package/dist/components/{p-D0Trc3IQ.js → p-vqEUQ-4Q.js} +5 -5
  198. package/dist/esm/{index-2va1Pk9z.js → index-Dhio9uis.js} +11 -47
  199. package/dist/esm/index.js +2 -2
  200. package/dist/esm/kritzel-active-users_47.entry.js +151 -119
  201. package/dist/esm/kritzel-brush-style.entry.js +2 -2
  202. package/dist/esm/loader.js +2 -2
  203. package/dist/esm/{schema.constants-DBvUmuDH.js → schema.constants-DfvqHmxc.js} +20 -44
  204. package/dist/esm/stencil.js +3 -3
  205. package/dist/stencil/index.esm.js +2 -2
  206. package/dist/stencil/{p-d19d1b82.entry.js → p-832b80e9.entry.js} +151 -119
  207. package/dist/stencil/{p-DBvUmuDH.js → p-DfvqHmxc.js} +20 -44
  208. package/dist/stencil/{p-2va1Pk9z.js → p-Dhio9uis.js} +11 -47
  209. package/dist/stencil/{p-df06ca3a.entry.js → p-fb32cd8f.entry.js} +2 -2
  210. package/dist/stencil/stencil.esm.js +4 -4
  211. package/dist/types/classes/structures/app-state-map.structure.d.ts +6 -0
  212. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +5 -0
  213. package/dist/types/constants/version.d.ts +1 -1
  214. package/dist/types/stencil-public-runtime.d.ts +0 -12
  215. package/loader/index.d.ts +1 -1
  216. package/package.json +1 -1
  217. package/readme.md +10 -10
@@ -1,78 +1,78 @@
1
- :host {
2
- position: relative;
3
- display: flex;
4
- align-items: center;
5
- font-family: sans-serif;
6
- z-index: 1;
7
- padding: var(--kritzel-split-button-padding, 4px);
8
- background-color: var(--kritzel-split-button-background-color, #ffffff);
9
- border-radius: var(--kritzel-split-button-border-radius, 12px);
10
- box-shadow: var(--kritzel-split-button-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));
11
- border: var(--kritzel-split-button-border, 1px solid #ebebeb);
12
- gap: var(--kritzel-split-button-gap, 4px);
13
- }
14
-
15
- :host(.mobile){
16
- --kritzel-split-button-hover-background-color: transparent;
17
- }
18
-
19
- button {
20
- border: none;
21
- background-color: transparent;
22
- padding: 0;
23
- margin: 0;
24
- font-family: inherit;
25
- font-size: inherit;
26
- color: var(--kritzel-split-button-color, #000000);
27
- -webkit-appearance: none;
28
- -moz-appearance: none;
29
- appearance: none;
30
- cursor: var(--kritzel-global-pointer-cursor, pointer);
31
- text-align: center;
32
- display: flex;
33
- align-items: center;
34
- justify-content: center;
35
- pointer-events: all;
36
- -webkit-tap-highlight-color: transparent;
37
- }
38
-
39
- .split-main-button,
40
- .split-menu-button {
41
- height: auto;
42
- display: flex;
43
- align-items: center;
44
- padding: var(--kritzel-split-button-padding, 8px);
45
- background-color: var(--kritzel-split-button-background-color, #ffffff);
46
- border-radius: var(--kritzel-split-button-border-radius, 12px);
47
- font-size: var(--kritzel-split-button-font-size, 14px);
48
- }
49
-
50
- .split-main-button:hover,
51
- .split-menu-button:hover {
52
- background-color: var(--kritzel-split-button-hover-background-color, hsl(0, 0%, 0%, 4.3%));
53
- }
54
-
55
- .split-main-button:focus,
56
- .split-menu-button:focus {
57
- background-color: var(--kritzel-split-button-hover-background-color, hsl(0, 0%, 0%, 4.3%));
58
- }
59
-
60
- .split-main-button {
61
- gap: var(--kritzel-split-button-gap, 4px);
62
- }
63
-
64
- .split-menu-button {
65
- border-left: none;
66
- justify-content: center;
67
- }
68
-
69
- .split-divider {
70
- width: var(--kritzel-split-button-divider-width, 1px);
71
- height: 24px;
72
- background-color: var(--kritzel-split-button-divider-background-color, hsl(0, 0%, 0%, 4.3%));
73
- }
74
-
75
- :disabled {
76
- pointer-events: none;
77
- opacity: 0.5;
78
- }
1
+ :host {
2
+ position: relative;
3
+ display: flex;
4
+ align-items: center;
5
+ font-family: sans-serif;
6
+ z-index: 1;
7
+ padding: var(--kritzel-split-button-padding, 4px);
8
+ background-color: var(--kritzel-split-button-background-color, #ffffff);
9
+ border-radius: var(--kritzel-split-button-border-radius, 12px);
10
+ box-shadow: var(--kritzel-split-button-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));
11
+ border: var(--kritzel-split-button-border, 1px solid #ebebeb);
12
+ gap: var(--kritzel-split-button-gap, 4px);
13
+ }
14
+
15
+ :host(.mobile){
16
+ --kritzel-split-button-hover-background-color: transparent;
17
+ }
18
+
19
+ button {
20
+ border: none;
21
+ background-color: transparent;
22
+ padding: 0;
23
+ margin: 0;
24
+ font-family: inherit;
25
+ font-size: inherit;
26
+ color: var(--kritzel-split-button-color, #000000);
27
+ -webkit-appearance: none;
28
+ -moz-appearance: none;
29
+ appearance: none;
30
+ cursor: var(--kritzel-global-pointer-cursor, pointer);
31
+ text-align: center;
32
+ display: flex;
33
+ align-items: center;
34
+ justify-content: center;
35
+ pointer-events: all;
36
+ -webkit-tap-highlight-color: transparent;
37
+ }
38
+
39
+ .split-main-button,
40
+ .split-menu-button {
41
+ height: auto;
42
+ display: flex;
43
+ align-items: center;
44
+ padding: var(--kritzel-split-button-padding, 8px);
45
+ background-color: var(--kritzel-split-button-background-color, #ffffff);
46
+ border-radius: var(--kritzel-split-button-border-radius, 12px);
47
+ font-size: var(--kritzel-split-button-font-size, 14px);
48
+ }
49
+
50
+ .split-main-button:hover,
51
+ .split-menu-button:hover {
52
+ background-color: var(--kritzel-split-button-hover-background-color, hsl(0, 0%, 0%, 4.3%));
53
+ }
54
+
55
+ .split-main-button:focus,
56
+ .split-menu-button:focus {
57
+ background-color: var(--kritzel-split-button-hover-background-color, hsl(0, 0%, 0%, 4.3%));
58
+ }
59
+
60
+ .split-main-button {
61
+ gap: var(--kritzel-split-button-gap, 4px);
62
+ }
63
+
64
+ .split-menu-button {
65
+ border-left: none;
66
+ justify-content: center;
67
+ }
68
+
69
+ .split-divider {
70
+ width: var(--kritzel-split-button-divider-width, 1px);
71
+ height: 24px;
72
+ background-color: var(--kritzel-split-button-divider-background-color, hsl(0, 0%, 0%, 4.3%));
73
+ }
74
+
75
+ :disabled {
76
+ pointer-events: none;
77
+ opacity: 0.5;
78
+ }
@@ -82,7 +82,7 @@ export class KritzelSplitButton {
82
82
  this.menuScrollTop = event.target.scrollTop;
83
83
  };
84
84
  render() {
85
- return (h(Host, { key: 'd8dac18091d84994607f96dea4cb09f5823b8477', class: { mobile: this.isTouchDevice } }, h("button", { key: '7601c722ba60bf73e8009c32b40ff88e51680011', class: "split-main-button", tabIndex: 0, onClick: this.handleButtonClick, disabled: this.mainButtonDisabled, "aria-label": "Main action" }, this.buttonIcon && h("kritzel-icon", { key: '567ea117b77ee0e8a4e023bc80d5cbafd44e7e05', name: this.buttonIcon })), h("div", { key: '53ae4da47818cb474fe659700d59171a9fe1b150', class: "split-divider" }), h("button", { key: '3893a36b2e33c86aa013e4a28a4428ba6ad4bb55', ref: el => (this.splitMenuButtonRef = el), class: "split-menu-button", tabIndex: 0, onClick: this.toggleMenu, disabled: this.menuButtonDisabled, "aria-label": "Open menu" }, h("kritzel-icon", { key: '2dd391e711b37b41ccfe310fc705842fbde80110', name: this.dropdownIcon })), h("kritzel-portal", { key: '5e5d03337b0fd3e11547bb1678595dd1559e0b88', anchor: this.anchorElement, offsetY: 4, onClose: this.closeMenu }, h("kritzel-menu", { key: 'c50fe3d6591024513e0cb2ecce97f23a34499fe5', ref: el => (this.menuRef = el), items: this.items, onItemSelect: this.handleItemSelect, onItemSave: this.handleItemSave, onItemCancel: this.handleItemCancel, onItemToggleChildMenu: this.handleItemToggleChildMenu, onItemCloseChildMenu: this.handleItemCloseChildMenu, onClose: this.closeMenu, onScroll: this.handleScroll }))));
85
+ return (h(Host, { key: 'f7f5019b32f4514a4ccf5bd07742658e3d05020a', class: { mobile: this.isTouchDevice } }, h("button", { key: '361007b4281edfe2bf18f28f7c4f19ba1f251b49', class: "split-main-button", tabIndex: 0, onClick: this.handleButtonClick, disabled: this.mainButtonDisabled, "aria-label": "Main action" }, this.buttonIcon && h("kritzel-icon", { key: '17d4fad6cfa070225daa67dfc648d4ac64091e90', name: this.buttonIcon })), h("div", { key: 'c18107b7d557525092c28ff5d7336ebb3648b672', class: "split-divider" }), h("button", { key: 'c7a9a67d832f026fa8e21eff7ea5935cd72862ed', ref: el => (this.splitMenuButtonRef = el), class: "split-menu-button", tabIndex: 0, onClick: this.toggleMenu, disabled: this.menuButtonDisabled, "aria-label": "Open menu" }, h("kritzel-icon", { key: '5b40284c8f04fba80ca606b0af201040efe53880', name: this.dropdownIcon })), h("kritzel-portal", { key: '62bd7f26c020497f2131759d0d1ef9d18e817b37', anchor: this.anchorElement, offsetY: 4, onClose: this.closeMenu }, h("kritzel-menu", { key: 'a1a11a0ae33f9626db3cd56fbb881c613f1ab78c', ref: el => (this.menuRef = el), items: this.items, onItemSelect: this.handleItemSelect, onItemSave: this.handleItemSave, onItemCancel: this.handleItemCancel, onItemToggleChildMenu: this.handleItemToggleChildMenu, onItemCloseChildMenu: this.handleItemCloseChildMenu, onClose: this.closeMenu, onScroll: this.handleScroll }))));
86
86
  }
87
87
  static get is() { return "kritzel-split-button"; }
88
88
  static get encapsulation() { return "shadow"; }
@@ -1,37 +1,37 @@
1
- :host {
2
- display: flex;
3
- align-items: flex-start;
4
- gap: 0;
5
- padding: 0;
6
- width: 100%;
7
- box-sizing: border-box;
8
- }
9
-
10
- .size-grid {
11
- width: 100%;
12
- display: grid;
13
- grid-template-columns: repeat(auto-fill, 32px);
14
- gap: 8px;
15
- justify-items: center;
16
- }
17
-
18
- .size-container {
19
- display: flex;
20
- justify-content: center;
21
- align-items: center;
22
- width: 32px;
23
- height: 32px;
24
- border-radius: 50%;
25
- cursor: var(--kritzel-global-pointer-cursor, pointer);
26
- border: 2px solid transparent;
27
- box-sizing: border-box;
28
- }
29
-
30
- .size-container:hover {
31
- background-color: var(--kritzel-stroke-size-hover-background-color, #ebebeb);
32
- }
33
-
34
- .size-container.selected {
35
- border-color: var(--kritzel-selection-border-color, #007AFF);
36
- background-color: var(--kritzel-stroke-size-selected-background-color, #ebebeb);
37
- }
1
+ :host {
2
+ display: flex;
3
+ align-items: flex-start;
4
+ gap: 0;
5
+ padding: 0;
6
+ width: 100%;
7
+ box-sizing: border-box;
8
+ }
9
+
10
+ .size-grid {
11
+ width: 100%;
12
+ display: grid;
13
+ grid-template-columns: repeat(auto-fill, 32px);
14
+ gap: 8px;
15
+ justify-items: center;
16
+ }
17
+
18
+ .size-container {
19
+ display: flex;
20
+ justify-content: center;
21
+ align-items: center;
22
+ width: 32px;
23
+ height: 32px;
24
+ border-radius: 50%;
25
+ cursor: var(--kritzel-global-pointer-cursor, pointer);
26
+ border: 2px solid transparent;
27
+ box-sizing: border-box;
28
+ }
29
+
30
+ .size-container:hover {
31
+ background-color: var(--kritzel-stroke-size-hover-background-color, #ebebeb);
32
+ }
33
+
34
+ .size-container.selected {
35
+ border-color: var(--kritzel-selection-border-color, #007AFF);
36
+ background-color: var(--kritzel-stroke-size-selected-background-color, #ebebeb);
37
+ }
@@ -9,7 +9,7 @@ export class KritzelStrokeSize {
9
9
  }
10
10
  render() {
11
11
  const sizes = this.sizes ?? [];
12
- return (h(Host, { key: 'c0920f9f5c038774e8515134e5d5a89dc71b11ab' }, h("div", { key: '05dc9a4b9e91114562bdbaede31c37576a9bd6e9', class: "size-grid" }, sizes.map(size => (h("div", { tabIndex: 0, class: {
12
+ return (h(Host, { key: 'c0307e527e6f9d5d663ae3f8f605162cdde2a339' }, h("div", { key: '9533e0486f8078d25b7e8fc3323126d77700ac72', class: "size-grid" }, sizes.map(size => (h("div", { tabIndex: 0, class: {
13
13
  'size-container': true,
14
14
  'selected': this.selectedSize === size,
15
15
  }, onClick: () => this.handleSizeClick(size) }, h("kritzel-color", { value: 'var(--kritzel-global-text-primary)', size: size })))))));
@@ -1,50 +1,50 @@
1
- :host {
2
- display: contents;
3
- }
4
-
5
- .indicator {
6
- position: absolute;
7
- top: 12px;
8
- left: 50%;
9
- transform: translateX(-50%);
10
- z-index: var(--kritzel-editor-sync-indicator-z-index, 10001);
11
- pointer-events: none;
12
- display: inline-flex;
13
- align-items: center;
14
- gap: 8px;
15
- padding: 6px 10px;
16
- border-radius: 999px;
17
- background: var(--kritzel-editor-sync-indicator-background, rgba(255, 255, 255, 0.92));
18
- color: var(--kritzel-editor-sync-indicator-color, #334155);
19
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.12);
20
- font-family: var(--kritzel-font-family, sans-serif);
21
- font-size: 12px;
22
- line-height: 1;
23
- font-weight: 500;
24
- opacity: 0;
25
- visibility: hidden;
26
- }
27
-
28
- .indicator.visible {
29
- opacity: 1;
30
- visibility: visible;
31
- }
32
-
33
- .spinner {
34
- width: 12px;
35
- height: 12px;
36
- border-radius: 50%;
37
- border: 2px solid var(--kritzel-editor-sync-indicator-spinner-track, rgba(148, 163, 184, 0.35));
38
- border-top-color: var(--kritzel-editor-sync-indicator-spinner-color, #2563eb);
39
- animation: kritzel-sync-indicator-spin 0.8s linear infinite;
40
- }
41
-
42
- @keyframes kritzel-sync-indicator-spin {
43
- from {
44
- transform: rotate(0deg);
45
- }
46
-
47
- to {
48
- transform: rotate(360deg);
49
- }
50
- }
1
+ :host {
2
+ display: contents;
3
+ }
4
+
5
+ .indicator {
6
+ position: absolute;
7
+ top: 12px;
8
+ left: 50%;
9
+ transform: translateX(-50%);
10
+ z-index: var(--kritzel-editor-sync-indicator-z-index, 10001);
11
+ pointer-events: none;
12
+ display: inline-flex;
13
+ align-items: center;
14
+ gap: 8px;
15
+ padding: 6px 10px;
16
+ border-radius: 999px;
17
+ background: var(--kritzel-editor-sync-indicator-background, rgba(255, 255, 255, 0.92));
18
+ color: var(--kritzel-editor-sync-indicator-color, #334155);
19
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.12);
20
+ font-family: var(--kritzel-font-family, sans-serif);
21
+ font-size: 12px;
22
+ line-height: 1;
23
+ font-weight: 500;
24
+ opacity: 0;
25
+ visibility: hidden;
26
+ }
27
+
28
+ .indicator.visible {
29
+ opacity: 1;
30
+ visibility: visible;
31
+ }
32
+
33
+ .spinner {
34
+ width: 12px;
35
+ height: 12px;
36
+ border-radius: 50%;
37
+ border: 2px solid var(--kritzel-editor-sync-indicator-spinner-track, rgba(148, 163, 184, 0.35));
38
+ border-top-color: var(--kritzel-editor-sync-indicator-spinner-color, #2563eb);
39
+ animation: kritzel-sync-indicator-spin 0.8s linear infinite;
40
+ }
41
+
42
+ @keyframes kritzel-sync-indicator-spin {
43
+ from {
44
+ transform: rotate(0deg);
45
+ }
46
+
47
+ to {
48
+ transform: rotate(360deg);
49
+ }
50
+ }
@@ -5,7 +5,7 @@ export class KritzelSyncIndicator {
5
5
  /** The text displayed next to the spinner. */
6
6
  text = 'Syncing...';
7
7
  render() {
8
- return (h(Host, { key: '2622544751cd377f172115f5f73e21e0f0995185' }, h("div", { key: '0cf49cbfbfa4ed0625eeff443ba1e2996a26562e', class: { indicator: true, visible: this.visible }, role: "status", "aria-live": "polite", "aria-label": "Synchronizing workspace" }, h("span", { key: '053ddc85e9ad2210822d3100ecf5d54d7170d470', class: "spinner", "aria-hidden": "true" }), h("span", { key: '94ea7f6be206688e9065d02b1d5c753e3598e9df' }, this.text))));
8
+ return (h(Host, { key: '05e825ee1c08fe02008b8e1adfe9e09a7996f221' }, h("div", { key: 'ea1635896f643c16713d35d6efd3abf486b1fbe2', class: { indicator: true, visible: this.visible }, role: "status", "aria-live": "polite", "aria-label": "Synchronizing workspace" }, h("span", { key: '7b57ea67d6f2c40dc74e966c16ebe9d95c75394a', class: "spinner", "aria-hidden": "true" }), h("span", { key: 'fc16405b02d96213d0025239b6e863883192ada5' }, this.text))));
9
9
  }
10
10
  static get is() { return "kritzel-sync-indicator"; }
11
11
  static get encapsulation() { return "shadow"; }
@@ -1,18 +1,18 @@
1
- :host {
2
- width: auto;
3
- }
4
-
5
- .tooltip-content {
6
- position: relative;
7
- padding: 8px 12px;
8
- border-radius: 4px;
9
- width: fit-content;
10
- background-color: var(--kritzel-tooltip-background-color, #ffffff);
11
- color: var(--kritzel-tooltip-color, #000000);
12
- padding: var(--kritzel-tooltip-padding, 12px);
13
- border: var(--kritzel-tooltip-border, 1px solid #ebebeb);
14
- border-radius: var(--kritzel-tooltip-border-radius, 16px);
15
- white-space: nowrap;
16
- box-shadow: var(--kritzel-tooltip-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12));
17
- }
18
-
1
+ :host {
2
+ width: auto;
3
+ }
4
+
5
+ .tooltip-content {
6
+ position: relative;
7
+ padding: 8px 12px;
8
+ border-radius: 4px;
9
+ width: fit-content;
10
+ background-color: var(--kritzel-tooltip-background-color, #ffffff);
11
+ color: var(--kritzel-tooltip-color, #000000);
12
+ padding: var(--kritzel-tooltip-padding, 12px);
13
+ border: var(--kritzel-tooltip-border, 1px solid #ebebeb);
14
+ border-radius: var(--kritzel-tooltip-border-radius, 16px);
15
+ white-space: nowrap;
16
+ box-shadow: var(--kritzel-tooltip-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12));
17
+ }
18
+
@@ -128,14 +128,14 @@ export class KritzelTooltip {
128
128
  }
129
129
  }
130
130
  render() {
131
- return (h(Host, { key: '2fee8c1343888c34bbed7dd172b946ff732f6fc1', style: {
131
+ return (h(Host, { key: '93486d37c5dcaaf9a3d0d1c53d6308ddd5712560', style: {
132
132
  position: 'fixed',
133
133
  zIndex: '9999',
134
134
  transition: 'opacity 0.3s ease-in-out, transform 0.3s ease-in-out',
135
135
  visibility: this.isVisible ? 'visible' : 'hidden',
136
136
  left: `${this.positionX}px`,
137
137
  bottom: `${this.positionY}px`,
138
- } }, h("div", { key: 'fe72d28fb81f24309077f30193c84064afcd6ebe', class: "tooltip-content", onClick: event => event.stopPropagation(), onPointerDown: event => event.stopPropagation(), onMouseDown: event => event.stopPropagation() }, h("slot", { key: 'ee95da259971a58b048780b21a0018fd6731bb03' }))));
138
+ } }, h("div", { key: '4b5cf451f75d09459145b874eb3c7faffafa87e0', class: "tooltip-content", onClick: event => event.stopPropagation(), onPointerDown: event => event.stopPropagation(), onMouseDown: event => event.stopPropagation() }, h("slot", { key: '6c7fda100473a7d4fc533edc52d67bf6909bdc0e' }))));
139
139
  }
140
140
  static get is() { return "kritzel-tooltip"; }
141
141
  static get encapsulation() { return "shadow"; }
@@ -1,65 +1,65 @@
1
- :host {
2
- display: inline-flex;
3
- align-items: center;
4
- }
5
-
6
- .avatars {
7
- display: flex;
8
- align-items: center;
9
- }
10
-
11
- .avatar-wrapper {
12
- position: relative;
13
- transition: margin-left 200ms ease;
14
- }
15
-
16
- .avatar-wrapper kritzel-avatar {
17
- border-radius: 50%;
18
- box-shadow: 0 0 0 2px var(--kritzel-active-users-avatar-border-color, #ffffff);
19
- }
20
-
21
- .avatars:hover .avatar-wrapper {
22
- margin-left: -6px !important;
23
- }
24
-
25
- .avatar-tooltip {
26
- position: absolute;
27
- top: 100%;
28
- left: 50%;
29
- transform: translateX(-50%);
30
- margin-top: 12px;
31
- padding: 4px 8px;
32
- background-color: var(--kritzel-active-users-tooltip-background, #333333);
33
- color: var(--kritzel-active-users-tooltip-color, #ffffff);
34
- font-family: sans-serif;
35
- font-size: 12px;
36
- font-weight: 500;
37
- border-radius: 4px;
38
- white-space: nowrap;
39
- width: max-content;
40
- pointer-events: none;
41
- opacity: 0;
42
- transition: opacity 150ms ease;
43
- }
44
-
45
- .avatar-wrapper:hover .avatar-tooltip,
46
- .overflow-count:hover .avatar-tooltip {
47
- opacity: 1;
48
- }
49
-
50
- .overflow-count {
51
- position: relative;
52
- margin-left: 8px;
53
- font-family: sans-serif;
54
- font-size: var(--kritzel-active-users-overflow-font-size, 14px);
55
- font-weight: 500;
56
- color: var(--kritzel-active-users-overflow-color, #666666);
57
- white-space: nowrap;
58
- cursor: default;
59
- }
60
-
61
- .overflow-count .avatar-tooltip {
62
- white-space: nowrap;
63
- text-align: left;
64
- margin-top: 20px;
65
- }
1
+ :host {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ }
5
+
6
+ .avatars {
7
+ display: flex;
8
+ align-items: center;
9
+ }
10
+
11
+ .avatar-wrapper {
12
+ position: relative;
13
+ transition: margin-left 200ms ease;
14
+ }
15
+
16
+ .avatar-wrapper kritzel-avatar {
17
+ border-radius: 50%;
18
+ box-shadow: 0 0 0 2px var(--kritzel-active-users-avatar-border-color, #ffffff);
19
+ }
20
+
21
+ .avatars:hover .avatar-wrapper {
22
+ margin-left: -6px !important;
23
+ }
24
+
25
+ .avatar-tooltip {
26
+ position: absolute;
27
+ top: 100%;
28
+ left: 50%;
29
+ transform: translateX(-50%);
30
+ margin-top: 12px;
31
+ padding: 4px 8px;
32
+ background-color: var(--kritzel-active-users-tooltip-background, #333333);
33
+ color: var(--kritzel-active-users-tooltip-color, #ffffff);
34
+ font-family: sans-serif;
35
+ font-size: 12px;
36
+ font-weight: 500;
37
+ border-radius: 4px;
38
+ white-space: nowrap;
39
+ width: max-content;
40
+ pointer-events: none;
41
+ opacity: 0;
42
+ transition: opacity 150ms ease;
43
+ }
44
+
45
+ .avatar-wrapper:hover .avatar-tooltip,
46
+ .overflow-count:hover .avatar-tooltip {
47
+ opacity: 1;
48
+ }
49
+
50
+ .overflow-count {
51
+ position: relative;
52
+ margin-left: 8px;
53
+ font-family: sans-serif;
54
+ font-size: var(--kritzel-active-users-overflow-font-size, 14px);
55
+ font-weight: 500;
56
+ color: var(--kritzel-active-users-overflow-color, #666666);
57
+ white-space: nowrap;
58
+ cursor: default;
59
+ }
60
+
61
+ .overflow-count .avatar-tooltip {
62
+ white-space: nowrap;
63
+ text-align: left;
64
+ margin-top: 20px;
65
+ }
@@ -1,42 +1,42 @@
1
- :host {
2
- display: block;
3
- z-index: var(--kritzel-back-to-content-z-index, 1000);
4
- }
5
-
6
- .back-to-content-button {
7
- display: flex;
8
- align-items: center;
9
- justify-content: center;
10
- height: var(--kritzel-back-to-content-height, 50px);
11
- box-sizing: border-box;
12
- gap: var(--kritzel-back-to-content-gap, 6px);
13
- padding: var(--kritzel-back-to-content-padding, 0 16px);
14
- border: var(--kritzel-back-to-content-border, 1px solid #ebebeb);
15
- border-radius: var(--kritzel-back-to-content-border-radius, 12px);
16
- background-color: var(--kritzel-back-to-content-background-color, #ffffff);
17
- color: var(--kritzel-back-to-content-color, #000000);
18
- font-size: var(--kritzel-back-to-content-font-size, 14px);
19
- font-weight: var(--kritzel-back-to-content-font-weight, 500);
20
- cursor: var(--kritzel-global-pointer-cursor, pointer);
21
- box-shadow: var(--kritzel-back-to-content-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));
22
- opacity: 0;
23
- pointer-events: none;
24
- transition: opacity 0.2s ease-out, transform 0.2s ease-out, background-color 0.15s ease-out;
25
- -webkit-tap-highlight-color: transparent;
26
- user-select: none;
27
- }
28
-
29
- .back-to-content-button.visible {
30
- opacity: 1;
31
- pointer-events: auto;
32
- }
33
-
34
- @media (hover: hover) {
35
- .back-to-content-button:hover {
36
- background-color: var(--kritzel-back-to-content-hover-background-color, hsl(0, 0%, 0%, 4.3%));
37
- }
38
- }
39
-
40
- .back-to-content-button:active {
41
- background-color: var(--kritzel-back-to-content-active-background-color, hsl(0, 0%, 0%, 8.6%));
42
- }
1
+ :host {
2
+ display: block;
3
+ z-index: var(--kritzel-back-to-content-z-index, 1000);
4
+ }
5
+
6
+ .back-to-content-button {
7
+ display: flex;
8
+ align-items: center;
9
+ justify-content: center;
10
+ height: var(--kritzel-back-to-content-height, 50px);
11
+ box-sizing: border-box;
12
+ gap: var(--kritzel-back-to-content-gap, 6px);
13
+ padding: var(--kritzel-back-to-content-padding, 0 16px);
14
+ border: var(--kritzel-back-to-content-border, 1px solid #ebebeb);
15
+ border-radius: var(--kritzel-back-to-content-border-radius, 12px);
16
+ background-color: var(--kritzel-back-to-content-background-color, #ffffff);
17
+ color: var(--kritzel-back-to-content-color, #000000);
18
+ font-size: var(--kritzel-back-to-content-font-size, 14px);
19
+ font-weight: var(--kritzel-back-to-content-font-weight, 500);
20
+ cursor: var(--kritzel-global-pointer-cursor, pointer);
21
+ box-shadow: var(--kritzel-back-to-content-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));
22
+ opacity: 0;
23
+ pointer-events: none;
24
+ transition: opacity 0.2s ease-out, transform 0.2s ease-out, background-color 0.15s ease-out;
25
+ -webkit-tap-highlight-color: transparent;
26
+ user-select: none;
27
+ }
28
+
29
+ .back-to-content-button.visible {
30
+ opacity: 1;
31
+ pointer-events: auto;
32
+ }
33
+
34
+ @media (hover: hover) {
35
+ .back-to-content-button:hover {
36
+ background-color: var(--kritzel-back-to-content-hover-background-color, hsl(0, 0%, 0%, 4.3%));
37
+ }
38
+ }
39
+
40
+ .back-to-content-button:active {
41
+ background-color: var(--kritzel-back-to-content-active-background-color, hsl(0, 0%, 0%, 8.6%));
42
+ }
@@ -16,7 +16,7 @@ export class KritzelBackToContent {
16
16
  this.backToContent.emit();
17
17
  };
18
18
  render() {
19
- return (h(Host, { key: '612164b48226601d863cb2acdab1d567e9652188' }, h("button", { key: '159a4f4f01934c03c7898f2803bf87d5f0d95aba', class: { 'back-to-content-button': true, visible: this.visible }, onClick: this.handleClick, "aria-label": this.text }, h("kritzel-icon", { key: 'e7ec1308ab12ca233509a00fc76df17fce1f5700', name: "chevrons-left" }))));
19
+ return (h(Host, { key: '2576489b9f97c77d1931e7c8496bae968d998f9d' }, h("button", { key: 'da891543ce8a9b5ccd2f4a461bdcdc7f3f9ad266', class: { 'back-to-content-button': true, visible: this.visible }, onClick: this.handleClick, "aria-label": this.text }, h("kritzel-icon", { key: '4559cc932918707d5961c6237f3c5e23c9e4cc9d', name: "chevrons-left" }))));
20
20
  }
21
21
  static get is() { return "kritzel-back-to-content"; }
22
22
  static get encapsulation() { return "shadow"; }