kritzel-stencil 0.4.22 → 0.4.24

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 (225) hide show
  1. package/LICENSE +21 -21
  2. package/LICENSE.md +49 -49
  3. package/dist/cjs/{index-Xav9JFHg.js → index-Dn19mGl-.js} +47 -11
  4. package/dist/cjs/index.cjs.js +2 -51
  5. package/dist/cjs/kritzel-active-users_47.cjs.entry.js +198 -231
  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-CjN-B633.js → schema.constants-CY0WWJYd.js} +44 -20
  9. package/dist/cjs/stencil.cjs.js +2 -2
  10. package/dist/collection/classes/providers/sync/hocuspocus-sync-provider.class.js +0 -21
  11. package/dist/collection/classes/providers/sync/websocket-sync-provider.class.js +1 -29
  12. package/dist/collection/classes/structures/app-state-map.structure.js +1 -4
  13. package/dist/collection/classes/structures/object-map.structure.js +4 -66
  14. package/dist/collection/collection-manifest.json +1 -1
  15. package/dist/collection/components/core/kritzel-awareness-cursors/kritzel-awareness-cursors.css +115 -115
  16. package/dist/collection/components/core/kritzel-awareness-cursors/kritzel-awareness-cursors.js +1 -1
  17. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.css +10 -10
  18. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +1 -1
  19. package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +160 -160
  20. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +18 -51
  21. package/dist/collection/components/core/kritzel-engine/kritzel-engine.css +80 -80
  22. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +102 -65
  23. package/dist/collection/components/core/kritzel-watermark/kritzel-watermark.css +29 -29
  24. package/dist/collection/components/core/kritzel-watermark/kritzel-watermark.js +2 -2
  25. package/dist/collection/components/shared/kritzel-avatar/kritzel-avatar.css +58 -58
  26. package/dist/collection/components/shared/kritzel-avatar/kritzel-avatar.js +3 -3
  27. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.css +42 -42
  28. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +3 -3
  29. package/dist/collection/components/shared/kritzel-button/kritzel-button.css +73 -73
  30. package/dist/collection/components/shared/kritzel-button/kritzel-button.js +2 -2
  31. package/dist/collection/components/shared/kritzel-color/kritzel-color.css +24 -24
  32. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -2
  33. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +46 -46
  34. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +1 -1
  35. package/dist/collection/components/shared/kritzel-dialog/kritzel-dialog.css +209 -209
  36. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.css +190 -190
  37. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +2 -2
  38. package/dist/collection/components/shared/kritzel-font/kritzel-font.css +10 -10
  39. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -1
  40. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.css +48 -48
  41. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +2 -2
  42. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +30 -30
  43. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +1 -1
  44. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.css +18 -18
  45. package/dist/collection/components/shared/kritzel-input/kritzel-input.css +69 -69
  46. package/dist/collection/components/shared/kritzel-input/kritzel-input.js +1 -1
  47. package/dist/collection/components/shared/kritzel-line-endings/kritzel-line-endings.css +60 -60
  48. package/dist/collection/components/shared/kritzel-line-endings/kritzel-line-endings.js +3 -3
  49. package/dist/collection/components/shared/kritzel-master-detail/kritzel-master-detail.css +190 -190
  50. package/dist/collection/components/shared/kritzel-master-detail/kritzel-master-detail.js +3 -3
  51. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +34 -34
  52. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +1 -1
  53. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.css +166 -166
  54. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +2 -2
  55. package/dist/collection/components/shared/kritzel-numeric-input/kritzel-numeric-input.css +102 -102
  56. package/dist/collection/components/shared/kritzel-numeric-input/kritzel-numeric-input.js +1 -1
  57. package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.css +85 -85
  58. package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.js +1 -1
  59. package/dist/collection/components/shared/kritzel-pill-tabs/kritzel-pill-tabs.css +68 -68
  60. package/dist/collection/components/shared/kritzel-pill-tabs/kritzel-pill-tabs.js +2 -2
  61. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +1 -1
  62. package/dist/collection/components/shared/kritzel-shape-fill/kritzel-shape-fill.css +47 -47
  63. package/dist/collection/components/shared/kritzel-shape-fill/kritzel-shape-fill.js +4 -4
  64. package/dist/collection/components/shared/kritzel-slide-toggle/kritzel-slide-toggle.css +48 -48
  65. package/dist/collection/components/shared/kritzel-slide-toggle/kritzel-slide-toggle.js +1 -1
  66. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.css +78 -78
  67. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +1 -1
  68. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +37 -37
  69. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +1 -1
  70. package/dist/collection/components/shared/kritzel-sync-indicator/kritzel-sync-indicator.css +50 -50
  71. package/dist/collection/components/shared/kritzel-sync-indicator/kritzel-sync-indicator.js +1 -1
  72. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.css +18 -18
  73. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +2 -2
  74. package/dist/collection/components/ui/kritzel-active-users/kritzel-active-users.css +65 -65
  75. package/dist/collection/components/ui/kritzel-back-to-content/kritzel-back-to-content.css +42 -42
  76. package/dist/collection/components/ui/kritzel-back-to-content/kritzel-back-to-content.js +1 -1
  77. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.css +112 -112
  78. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +331 -331
  79. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +6 -6
  80. package/dist/collection/components/ui/kritzel-current-user/kritzel-current-user.css +11 -11
  81. package/dist/collection/components/ui/kritzel-current-user/kritzel-current-user.js +1 -1
  82. package/dist/collection/components/ui/kritzel-current-user-dialog/kritzel-current-user-dialog.css +39 -39
  83. package/dist/collection/components/ui/kritzel-current-user-dialog/kritzel-current-user-dialog.js +1 -1
  84. package/dist/collection/components/ui/kritzel-export/kritzel-export.css +89 -89
  85. package/dist/collection/components/ui/kritzel-export/kritzel-export.js +1 -1
  86. package/dist/collection/components/ui/kritzel-loading-overlay/kritzel-loading-overlay.css +50 -50
  87. package/dist/collection/components/ui/kritzel-loading-overlay/kritzel-loading-overlay.js +1 -1
  88. package/dist/collection/components/ui/kritzel-login-dialog/kritzel-login-dialog.css +98 -98
  89. package/dist/collection/components/ui/kritzel-login-dialog/kritzel-login-dialog.js +1 -1
  90. package/dist/collection/components/ui/kritzel-more-menu/kritzel-more-menu.css +58 -58
  91. package/dist/collection/components/ui/kritzel-more-menu/kritzel-more-menu.js +2 -2
  92. package/dist/collection/components/ui/kritzel-notification-card/kritzel-notification-card.css +101 -101
  93. package/dist/collection/components/ui/kritzel-settings/kritzel-settings.css +137 -137
  94. package/dist/collection/components/ui/kritzel-settings/kritzel-settings.js +1 -1
  95. package/dist/collection/components/ui/kritzel-share-dialog/kritzel-share-dialog.css +150 -150
  96. package/dist/collection/components/ui/kritzel-share-dialog/kritzel-share-dialog.js +2 -2
  97. package/dist/collection/components/ui/kritzel-tool-config/kritzel-tool-config.css +38 -38
  98. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.css +45 -45
  99. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +1 -1
  100. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.css +16 -16
  101. package/dist/collection/components/ui/kritzel-zoom-panel/kritzel-zoom-panel.css +72 -72
  102. package/dist/collection/components/ui/kritzel-zoom-panel/kritzel-zoom-panel.js +1 -1
  103. package/dist/collection/constants/version.js +1 -1
  104. package/dist/collection/helpers/cursor.helper.js +6 -6
  105. package/dist/collection/helpers/svg-export.helper.js +41 -41
  106. package/dist/components/index.js +4 -53
  107. package/dist/components/kritzel-active-users.js +1 -1
  108. package/dist/components/kritzel-avatar.js +1 -1
  109. package/dist/components/kritzel-awareness-cursors.js +1 -1
  110. package/dist/components/kritzel-back-to-content.js +1 -1
  111. package/dist/components/kritzel-brush-style.js +4 -4
  112. package/dist/components/kritzel-button.js +1 -1
  113. package/dist/components/kritzel-color-palette.js +1 -1
  114. package/dist/components/kritzel-color.js +1 -1
  115. package/dist/components/kritzel-context-menu.js +1 -1
  116. package/dist/components/kritzel-controls.js +1 -1
  117. package/dist/components/kritzel-current-user-dialog.js +1 -1
  118. package/dist/components/kritzel-current-user.js +1 -1
  119. package/dist/components/kritzel-cursor-trail.js +1 -1
  120. package/dist/components/kritzel-dialog.js +1 -1
  121. package/dist/components/kritzel-dropdown.js +1 -1
  122. package/dist/components/kritzel-editor.js +56 -61
  123. package/dist/components/kritzel-engine.js +1 -1
  124. package/dist/components/kritzel-export.js +1 -1
  125. package/dist/components/kritzel-font-family.js +1 -1
  126. package/dist/components/kritzel-font-size.js +1 -1
  127. package/dist/components/kritzel-font.js +1 -1
  128. package/dist/components/kritzel-icon.js +1 -1
  129. package/dist/components/kritzel-input.js +1 -1
  130. package/dist/components/kritzel-line-endings.js +1 -1
  131. package/dist/components/kritzel-loading-overlay.js +1 -1
  132. package/dist/components/kritzel-login-dialog.js +1 -1
  133. package/dist/components/kritzel-master-detail.js +1 -1
  134. package/dist/components/kritzel-menu-item.js +1 -1
  135. package/dist/components/kritzel-menu.js +1 -1
  136. package/dist/components/kritzel-more-menu.js +1 -1
  137. package/dist/components/kritzel-notification-card.js +1 -1
  138. package/dist/components/kritzel-numeric-input.js +1 -1
  139. package/dist/components/kritzel-opacity-slider.js +1 -1
  140. package/dist/components/kritzel-pill-tabs.js +1 -1
  141. package/dist/components/kritzel-portal.js +1 -1
  142. package/dist/components/kritzel-settings.js +1 -1
  143. package/dist/components/kritzel-shape-fill.js +1 -1
  144. package/dist/components/kritzel-share-dialog.js +1 -1
  145. package/dist/components/kritzel-slide-toggle.js +1 -1
  146. package/dist/components/kritzel-split-button.js +1 -1
  147. package/dist/components/kritzel-stroke-size.js +1 -1
  148. package/dist/components/kritzel-sync-indicator.js +1 -1
  149. package/dist/components/kritzel-tool-config.js +1 -1
  150. package/dist/components/kritzel-tooltip.js +1 -1
  151. package/dist/components/kritzel-utility-panel.js +1 -1
  152. package/dist/components/kritzel-watermark.js +1 -1
  153. package/dist/components/kritzel-workspace-manager.js +1 -1
  154. package/dist/components/kritzel-zoom-panel.js +1 -1
  155. package/dist/components/{p-jIKskj3S.js → p-1Q4VnThv.js} +3 -3
  156. package/dist/components/{p-Cm33td2O.js → p-3tBE7SyG.js} +2 -2
  157. package/dist/components/{p-fL9rl200.js → p-BFYT03fw.js} +3 -3
  158. package/dist/components/{p-DtnMdWWB.js → p-BShrnlam.js} +2 -2
  159. package/dist/components/{p-BsLI_BWq.js → p-BXUx_C0N.js} +2 -2
  160. package/dist/components/{p-CzW58DHM.js → p-BZZ3KRPk.js} +3 -3
  161. package/dist/components/{p-D1rjfWgJ.js → p-BkXQL5Dl.js} +5 -5
  162. package/dist/components/{p-eZXIu4yK.js → p-BppcoKoo.js} +5 -5
  163. package/dist/components/{p-DDTMGbtA.js → p-BrA9NBEE.js} +21 -21
  164. package/dist/components/{p-Czhdc844.js → p-BrqSjRJN.js} +3 -3
  165. package/dist/components/{p-CAoN_STZ.js → p-Bxi-Bm49.js} +2 -2
  166. package/dist/components/{p-B43upypT.js → p-C9_yBEoX.js} +30 -10
  167. package/dist/components/{p-Df3BwVGy.js → p-CHoOe3FD.js} +3 -3
  168. package/dist/components/{p-2WiGyky4.js → p-CLAz6RJc.js} +3 -3
  169. package/dist/components/{p-B5SWPDuq.js → p-CSKToqUl.js} +4 -4
  170. package/dist/components/{p-CF8pLc07.js → p-CSWCmyzb.js} +5 -5
  171. package/dist/components/{p-HoO86l1o.js → p-CWAChRD5.js} +12 -12
  172. package/dist/components/{p-DwMqCX2P.js → p-Ch-KG9To.js} +3 -3
  173. package/dist/components/{p-CSuU8frA.js → p-Ck-87E2G.js} +1 -1
  174. package/dist/components/{p-BFYtCsZu.js → p-Covorf4C.js} +3 -3
  175. package/dist/components/{p-BoN700-O.js → p-Cx-L_28S.js} +3 -3
  176. package/dist/components/{p-vqEUQ-4Q.js → p-D0Trc3IQ.js} +5 -5
  177. package/dist/components/{p-BrNsOp2v.js → p-D2VcPEtL.js} +6 -6
  178. package/dist/components/{p-CSPYkLLH.js → p-D3BzgkIE.js} +2 -2
  179. package/dist/components/{p-bAacqNHq.js → p-D6JycG-I.js} +3 -3
  180. package/dist/components/{p-DB58Oa5V.js → p-DPsbNStn.js} +2 -2
  181. package/dist/components/{p-CwZ3KKFq.js → p-DT_WBwsw.js} +6 -6
  182. package/dist/components/{p-Dx5NfJ0U.js → p-DW1B118Q.js} +9 -9
  183. package/dist/components/{p-BPsKYMH6.js → p-DYPA7jpg.js} +2 -2
  184. package/dist/components/{p-DBqoPgev.js → p-DafP9PAA.js} +2 -2
  185. package/dist/components/{p-Dt7-I2Xz.js → p-DcUIO14-.js} +4 -4
  186. package/dist/components/{p-CXpv9Rxe.js → p-Di--2boB.js} +3 -3
  187. package/dist/components/{p-djJSnjAX.js → p-DjXQxw9R.js} +3 -3
  188. package/dist/components/{p-DVXTPI71.js → p-Dp1CD4gK.js} +2 -2
  189. package/dist/components/{p-BNeE3SiZ.js → p-DwEYMvIn.js} +175 -179
  190. package/dist/components/{p-DKGg-76-.js → p-Dznwo6oc.js} +2 -2
  191. package/dist/components/{p-BozrueXV.js → p-ME1sDz3f.js} +2 -2
  192. package/dist/components/{p-B-585egz.js → p-MhQxGUvY.js} +3 -3
  193. package/dist/components/{p-DX2nriaq.js → p-QSyeAy8R.js} +2 -2
  194. package/dist/components/{p-PjPPCHVL.js → p-Qdo3E8dr.js} +2 -2
  195. package/dist/components/{p-dsxHDlQ3.js → p-b0J2ktAm.js} +7 -7
  196. package/dist/components/{p-C98Eb3_R.js → p-dAXnRkjA.js} +5 -5
  197. package/dist/components/{p-GKmqCI8r.js → p-fSV6KVTC.js} +3 -3
  198. package/dist/components/{p-CaBbajU2.js → p-o3NYKrVL.js} +3 -3
  199. package/dist/components/{p-CrHvaLRV.js → p-vDCa_ZDm.js} +3 -3
  200. package/dist/components/{p-4SPnZZkH.js → p-zG-WUBGF.js} +4 -4
  201. package/dist/esm/{index-Dhio9uis.js → index-2va1Pk9z.js} +47 -11
  202. package/dist/esm/index.js +3 -52
  203. package/dist/esm/kritzel-active-users_47.entry.js +198 -231
  204. package/dist/esm/kritzel-brush-style.entry.js +2 -2
  205. package/dist/esm/loader.js +2 -2
  206. package/dist/esm/{schema.constants-DfvqHmxc.js → schema.constants-DBvUmuDH.js} +44 -20
  207. package/dist/esm/stencil.js +3 -3
  208. package/dist/stencil/index.esm.js +3 -52
  209. package/dist/stencil/{p-Dhio9uis.js → p-2va1Pk9z.js} +47 -11
  210. package/dist/stencil/{p-DfvqHmxc.js → p-DBvUmuDH.js} +44 -20
  211. package/dist/stencil/{p-ab5c4292.entry.js → p-ce6d432e.entry.js} +198 -231
  212. package/dist/stencil/{p-fb32cd8f.entry.js → p-df06ca3a.entry.js} +2 -2
  213. package/dist/stencil/stencil.esm.js +4 -4
  214. package/dist/types/classes/providers/sync/hocuspocus-sync-provider.class.d.ts +0 -5
  215. package/dist/types/classes/providers/sync/websocket-sync-provider.class.d.ts +0 -6
  216. package/dist/types/classes/structures/object-map.structure.d.ts +2 -26
  217. package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +0 -3
  218. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +11 -9
  219. package/dist/types/components.d.ts +1 -8
  220. package/dist/types/constants/version.d.ts +1 -1
  221. package/dist/types/interfaces/sync-provider.interface.d.ts +0 -13
  222. package/dist/types/stencil-public-runtime.d.ts +12 -0
  223. package/loader/index.d.ts +1 -1
  224. package/package.json +1 -1
  225. package/readme.md +10 -10
@@ -1,81 +1,81 @@
1
- :host {
2
- display: block;
3
- position: relative;
4
- height: 100%;
5
- width: 100%;
6
- overflow: hidden;
7
- isolation: isolate;
8
- background-color: var(--kritzel-engine-background-color, #ffffff);
9
- }
10
-
11
- :host,
12
- :host * {
13
- touch-action: none;
14
- user-select: none;
15
- }
16
-
17
- .ProseMirror {
18
- outline: none;
19
- }
20
-
21
- p, h1, h2, h3, h4, h5, h6, blockquote, pre {
22
- margin: 0;
23
- padding: 0;
24
- }
25
-
26
- .debug-panel {
27
- position: absolute;
28
- pointer-events: none;
29
- top: 0;
30
- right: 0;
31
- }
32
-
33
- .origin {
34
- position: relative;
35
- top: 0;
36
- left: 0;
37
- height: 0;
38
- width: 0;
39
- pointer-events: none;
40
- -webkit-transform-origin: top left;
41
- -moz-transform-origin: top left;
42
- transform-origin: top left;
43
- overflow: visible;
44
- }
45
-
46
- .object {
47
- overflow: visible;
48
- }
49
-
50
- .kritzel-image-object--first-reveal {
51
- animation: kritzel-image-first-reveal 180ms ease-out both;
52
- will-change: filter;
53
- }
54
-
55
- @keyframes kritzel-image-first-reveal {
56
- from {
57
- filter: opacity(0);
58
- }
59
-
60
- to {
61
- filter: opacity(1);
62
- }
63
- }
64
-
65
- @media (prefers-reduced-motion: reduce) {
66
- .kritzel-image-object--first-reveal {
67
- animation: none;
68
- }
69
- }
70
-
71
- .PlaygroundEditorTheme__quote {
72
- margin: 0;
73
- margin-left: 20px;
74
- margin-bottom: 10px;
75
- font-size: 15px;
76
- color: rgb(101, 103, 107);
77
- border-left-color: rgb(206, 208, 212);
78
- border-left-width: 4px;
79
- border-left-style: solid;
80
- padding-left: 16px;
1
+ :host {
2
+ display: block;
3
+ position: relative;
4
+ height: 100%;
5
+ width: 100%;
6
+ overflow: hidden;
7
+ isolation: isolate;
8
+ background-color: var(--kritzel-engine-background-color, #ffffff);
9
+ }
10
+
11
+ :host,
12
+ :host * {
13
+ touch-action: none;
14
+ user-select: none;
15
+ }
16
+
17
+ .ProseMirror {
18
+ outline: none;
19
+ }
20
+
21
+ p, h1, h2, h3, h4, h5, h6, blockquote, pre {
22
+ margin: 0;
23
+ padding: 0;
24
+ }
25
+
26
+ .debug-panel {
27
+ position: absolute;
28
+ pointer-events: none;
29
+ top: 0;
30
+ right: 0;
31
+ }
32
+
33
+ .origin {
34
+ position: relative;
35
+ top: 0;
36
+ left: 0;
37
+ height: 0;
38
+ width: 0;
39
+ pointer-events: none;
40
+ -webkit-transform-origin: top left;
41
+ -moz-transform-origin: top left;
42
+ transform-origin: top left;
43
+ overflow: visible;
44
+ }
45
+
46
+ .object {
47
+ overflow: visible;
48
+ }
49
+
50
+ .kritzel-image-object--first-reveal {
51
+ animation: kritzel-image-first-reveal 180ms ease-out both;
52
+ will-change: filter;
53
+ }
54
+
55
+ @keyframes kritzel-image-first-reveal {
56
+ from {
57
+ filter: opacity(0);
58
+ }
59
+
60
+ to {
61
+ filter: opacity(1);
62
+ }
63
+ }
64
+
65
+ @media (prefers-reduced-motion: reduce) {
66
+ .kritzel-image-object--first-reveal {
67
+ animation: none;
68
+ }
69
+ }
70
+
71
+ .PlaygroundEditorTheme__quote {
72
+ margin: 0;
73
+ margin-left: 20px;
74
+ margin-bottom: 10px;
75
+ font-size: 15px;
76
+ color: rgb(101, 103, 107);
77
+ border-left-color: rgb(206, 208, 212);
78
+ border-left-width: 4px;
79
+ border-left-style: solid;
80
+ padding-left: 16px;
81
81
  }
@@ -258,7 +258,7 @@ export class KritzelEngine {
258
258
  contextMenuStateChange;
259
259
  /** Emitted when the combined loading state (external `isLoading` prop or internal workspace loading) changes. */
260
260
  loadingChange;
261
- /** Emitted while remote changes are being applied to the active workspace. Stays silent when the remote holds nothing new. */
261
+ /** Emitted when remote workspace synchronization is in progress. */
262
262
  syncingChange;
263
263
  forceUpdate = 0;
264
264
  isSyncing = false;
@@ -1839,13 +1839,18 @@ export class KritzelEngine {
1839
1839
  _syncConfigRevision = 0;
1840
1840
  _assetStorageConfigRevision = 0;
1841
1841
  _isWorkspaceLoading = false;
1842
+ _syncingRequestId = 0;
1843
+ _syncingShowTimeout = null;
1844
+ _syncingHideTimeout = null;
1845
+ _syncingVisibleSince = null;
1846
+ _syncingShowDelayMs = 300;
1847
+ _syncingMinimumVisibleMs = 500;
1842
1848
  _hasLoggedUnlicensedWelcomeBanner = false;
1843
1849
  _previousVisibleCustomElements = new Set();
1844
1850
  _revealedImageKeys = new Set();
1845
1851
  _sceneBootstrapOpacity = 1;
1846
1852
  _sceneBootstrapTransitionEnabled = false;
1847
1853
  _sceneBootstrapTransitionTimer = null;
1848
- _remoteChangesUnsubscribe = null;
1849
1854
  _defaultUndoState = {
1850
1855
  canUndo: false,
1851
1856
  canRedo: false,
@@ -1862,16 +1867,65 @@ export class KritzelEngine {
1862
1867
  this.core.store.state.isLoading = this._isWorkspaceLoading || this.isLoading;
1863
1868
  this.loadingChange.emit(this.core.store.state.isLoading);
1864
1869
  }
1865
- syncSyncingState(isSyncing) {
1866
- if (this.isSyncing === isSyncing) {
1870
+ beginSyncingRequest() {
1871
+ this._syncingRequestId++;
1872
+ this.clearSyncingShowTimeout();
1873
+ this.clearSyncingHideTimeout();
1874
+ return this._syncingRequestId;
1875
+ }
1876
+ syncSyncingState(isSyncing, requestId) {
1877
+ if (requestId !== this._syncingRequestId) {
1878
+ return;
1879
+ }
1880
+ if (isSyncing) {
1881
+ this.clearSyncingHideTimeout();
1882
+ if (this.isSyncing || this._syncingShowTimeout !== null) {
1883
+ return;
1884
+ }
1885
+ this._syncingShowTimeout = setTimeout(() => {
1886
+ this._syncingShowTimeout = null;
1887
+ if (requestId !== this._syncingRequestId || this.isSyncing) {
1888
+ return;
1889
+ }
1890
+ this.isSyncing = true;
1891
+ this._syncingVisibleSince = Date.now();
1892
+ this.syncingChange.emit(true);
1893
+ }, this._syncingShowDelayMs);
1894
+ return;
1895
+ }
1896
+ this.clearSyncingShowTimeout();
1897
+ if (!this.isSyncing) {
1867
1898
  return;
1868
1899
  }
1869
- this.isSyncing = isSyncing;
1870
- this.syncingChange.emit(isSyncing);
1900
+ this.clearSyncingHideTimeout();
1901
+ const elapsedMs = Date.now() - (this._syncingVisibleSince ?? Date.now());
1902
+ const remainingVisibleMs = Math.max(0, this._syncingMinimumVisibleMs - elapsedMs);
1903
+ if (remainingVisibleMs === 0) {
1904
+ this.finishSyncingState(requestId);
1905
+ return;
1906
+ }
1907
+ this._syncingHideTimeout = setTimeout(() => this.finishSyncingState(requestId), remainingVisibleMs);
1871
1908
  }
1872
- clearRemoteChangesSubscription() {
1873
- this._remoteChangesUnsubscribe?.();
1874
- this._remoteChangesUnsubscribe = null;
1909
+ finishSyncingState(requestId) {
1910
+ this._syncingHideTimeout = null;
1911
+ if (requestId !== this._syncingRequestId || !this.isSyncing) {
1912
+ return;
1913
+ }
1914
+ this.isSyncing = false;
1915
+ this._syncingVisibleSince = null;
1916
+ this.syncingChange.emit(false);
1917
+ }
1918
+ clearSyncingShowTimeout() {
1919
+ if (this._syncingShowTimeout !== null) {
1920
+ clearTimeout(this._syncingShowTimeout);
1921
+ this._syncingShowTimeout = null;
1922
+ }
1923
+ }
1924
+ clearSyncingHideTimeout() {
1925
+ if (this._syncingHideTimeout !== null) {
1926
+ clearTimeout(this._syncingHideTimeout);
1927
+ this._syncingHideTimeout = null;
1928
+ }
1875
1929
  }
1876
1930
  isNetworkAvailable() {
1877
1931
  return typeof navigator !== 'undefined' && navigator.onLine;
@@ -1965,7 +2019,7 @@ export class KritzelEngine {
1965
2019
  disconnectedCallback() {
1966
2020
  this.throttledPointerMoveMulti.cancel();
1967
2021
  this._revealedImageKeys.clear();
1968
- this.clearRemoteChangesSubscription();
2022
+ this.beginSyncingRequest();
1969
2023
  if (this._sceneBootstrapTransitionTimer !== null) {
1970
2024
  clearTimeout(this._sceneBootstrapTransitionTimer);
1971
2025
  this._sceneBootstrapTransitionTimer = null;
@@ -2215,12 +2269,27 @@ export class KritzelEngine {
2215
2269
  }
2216
2270
  this._isWorkspaceLoading = true;
2217
2271
  this.syncLoadingState();
2272
+ const syncingRequestId = this.beginSyncingRequest();
2218
2273
  const initializationPromise = this.core.initializeWorkspace(workspace, options);
2219
2274
  this._workspaceInitializationPromise = initializationPromise;
2220
2275
  this._workspaceInitializationTargetKey = targetKey;
2221
2276
  try {
2222
2277
  await initializationPromise;
2223
- this.trackRemoteSynchronization();
2278
+ // Track remote sync in the background without blocking the loading overlay.
2279
+ const initializedObjects = this.core.store.objects;
2280
+ const networkSyncPromise = initializedObjects?.whenNetworkSynced();
2281
+ if (networkSyncPromise && this.isNetworkAvailable()) {
2282
+ this.syncSyncingState(true, syncingRequestId);
2283
+ void networkSyncPromise.finally(() => {
2284
+ // Only clear syncing for the currently active object map.
2285
+ if (this.core.store.objects === initializedObjects) {
2286
+ this.syncSyncingState(false, syncingRequestId);
2287
+ }
2288
+ });
2289
+ }
2290
+ else {
2291
+ this.syncSyncingState(false, syncingRequestId);
2292
+ }
2224
2293
  }
2225
2294
  finally {
2226
2295
  // Only the most recent init clears loading state to prevent race conditions
@@ -2232,38 +2301,6 @@ export class KritzelEngine {
2232
2301
  }
2233
2302
  }
2234
2303
  }
2235
- /**
2236
- * Reports syncing only while remote data is actually being reconciled into the
2237
- * active workspace. Yjs suppresses updates that carry nothing new, so a workspace
2238
- * that already matches the remote never reports syncing at all.
2239
- */
2240
- trackRemoteSynchronization() {
2241
- this.clearRemoteChangesSubscription();
2242
- this.syncSyncingState(false);
2243
- const initializedObjects = this.core.store.objects;
2244
- if (!initializedObjects?.hasNetworkSyncProvider || !this.isNetworkAvailable()) {
2245
- return;
2246
- }
2247
- if (initializedObjects.supportsRemoteChangeDetection) {
2248
- this._remoteChangesUnsubscribe = initializedObjects.onRemoteChangesApplied(() => {
2249
- if (this.core.store.objects !== initializedObjects) {
2250
- return;
2251
- }
2252
- this.syncSyncingState(true);
2253
- });
2254
- }
2255
- else {
2256
- // Custom providers without an update origin cannot be diffed, so fall back to reporting the whole handshake.
2257
- this.syncSyncingState(true);
2258
- }
2259
- void initializedObjects.whenNetworkSynced().finally(() => {
2260
- if (this.core.store.objects !== initializedObjects) {
2261
- return;
2262
- }
2263
- this.clearRemoteChangesSubscription();
2264
- this.syncSyncingState(false);
2265
- });
2266
- }
2267
2304
  emitObjectsChange() {
2268
2305
  const objectsMap = this.core.store.objects;
2269
2306
  if (!objectsMap) {
@@ -3019,7 +3056,7 @@ export class KritzelEngine {
3019
3056
  "optional": true,
3020
3057
  "docs": {
3021
3058
  "tags": [],
3022
- "text": "Configuration for binary asset storage (e.g., images).\n\nThe Yjs document only persists asset ids; the actual bytes are stored\nby the providers listed here. Defaults to IndexedDB-only storage. To\nsupport cross-device image sync alongside a networked sync provider\n(Hocuspocus, WebSocket), configure at least one remote asset provider\nsuch as `HttpAssetProvider` or `PresignedAssetProvider`."
3059
+ "text": "Configuration for binary asset storage (e.g., images).\r\n\r\nThe Yjs document only persists asset ids; the actual bytes are stored\r\nby the providers listed here. Defaults to IndexedDB-only storage. To\r\nsupport cross-device image sync alongside a networked sync provider\r\n(Hocuspocus, WebSocket), configure at least one remote asset provider\r\nsuch as `HttpAssetProvider` or `PresignedAssetProvider`."
3023
3060
  },
3024
3061
  "getter": false,
3025
3062
  "setter": false
@@ -3887,7 +3924,7 @@ export class KritzelEngine {
3887
3924
  "composed": true,
3888
3925
  "docs": {
3889
3926
  "tags": [],
3890
- "text": "Emitted while remote changes are being applied to the active workspace. Stays silent when the remote holds nothing new."
3927
+ "text": "Emitted when remote workspace synchronization is in progress."
3891
3928
  },
3892
3929
  "complexType": {
3893
3930
  "original": "boolean",
@@ -4448,7 +4485,7 @@ export class KritzelEngine {
4448
4485
  "return": "Promise<void>"
4449
4486
  },
4450
4487
  "docs": {
4451
- "text": "Programmatically opens the context menu at a specified world-coordinate position.\nIf `objectId` is provided and found, the object context menu is shown for that object.\nIf no `objectId` is provided but a selection group already exists, the object context menu is shown.\nOtherwise, the global context menu is shown.",
4488
+ "text": "Programmatically opens the context menu at a specified world-coordinate position.\r\nIf `objectId` is provided and found, the object context menu is shown for that object.\r\nIf no `objectId` is provided but a selection group already exists, the object context menu is shown.\r\nOtherwise, the global context menu is shown.",
4452
4489
  "tags": [{
4453
4490
  "name": "param",
4454
4491
  "text": "options.x - The X position in world (canvas) coordinates."
@@ -4558,7 +4595,7 @@ export class KritzelEngine {
4558
4595
  "return": "Promise<T[]>"
4559
4596
  },
4560
4597
  "docs": {
4561
- "text": "Returns all objects that match the given predicate function.\nExcludes internal selection-related objects (selection groups and selection boxes).",
4598
+ "text": "Returns all objects that match the given predicate function.\r\nExcludes internal selection-related objects (selection groups and selection boxes).",
4562
4599
  "tags": [{
4563
4600
  "name": "param",
4564
4601
  "text": "predicate - A filter function called for each object. Return `true` to include."
@@ -4567,7 +4604,7 @@ export class KritzelEngine {
4567
4604
  "text": "An array of matching objects."
4568
4605
  }, {
4569
4606
  "name": "example",
4570
- "text": "```ts\n// Find all text objects\nconst texts = await engine.findObjects(obj => obj.__class__ === 'KritzelText');\n\n// Find objects at a point\nconst hits = await engine.findObjects(obj => obj.hitTest(100, 200));\n\n// Combine criteria\nconst filtered = await engine.findObjects(obj => obj.__class__ === 'KritzelPath' && obj.opacity < 0.5);\n```"
4607
+ "text": "```ts\r\n// Find all text objects\r\nconst texts = await engine.findObjects(obj => obj.__class__ === 'KritzelText');\r\n\r\n// Find objects at a point\r\nconst hits = await engine.findObjects(obj => obj.hitTest(100, 200));\r\n\r\n// Combine criteria\r\nconst filtered = await engine.findObjects(obj => obj.__class__ === 'KritzelPath' && obj.opacity < 0.5);\r\n```"
4571
4608
  }]
4572
4609
  }
4573
4610
  },
@@ -4700,7 +4737,7 @@ export class KritzelEngine {
4700
4737
  "return": "Promise<T[]>"
4701
4738
  },
4702
4739
  "docs": {
4703
- "text": "Adds multiple objects to the canvas in a single batch operation.\nAll objects are inserted within one Yjs transaction (single undo step),\ntriggering only one rerender cycle. Intended for programmatic streaming\nscenarios where per-object overhead would cause stutter.",
4740
+ "text": "Adds multiple objects to the canvas in a single batch operation.\r\nAll objects are inserted within one Yjs transaction (single undo step),\r\ntriggering only one rerender cycle. Intended for programmatic streaming\r\nscenarios where per-object overhead would cause stutter.",
4704
4741
  "tags": [{
4705
4742
  "name": "param",
4706
4743
  "text": "objects - The object instances to add."
@@ -4822,7 +4859,7 @@ export class KritzelEngine {
4822
4859
  "return": "Promise<T[]>"
4823
4860
  },
4824
4861
  "docs": {
4825
- "text": "Removes multiple objects from the canvas in a single batch operation.\nAll removals happen within one Yjs transaction (single undo step),\ntriggering only one rerender cycle. Intended for programmatic streaming\nscenarios where per-object overhead would cause stutter.",
4862
+ "text": "Removes multiple objects from the canvas in a single batch operation.\r\nAll removals happen within one Yjs transaction (single undo step),\r\ntriggering only one rerender cycle. Intended for programmatic streaming\r\nscenarios where per-object overhead would cause stutter.",
4826
4863
  "tags": [{
4827
4864
  "name": "param",
4828
4865
  "text": "objects - The objects to remove."
@@ -5010,7 +5047,7 @@ export class KritzelEngine {
5010
5047
  "return": "Promise<void>"
5011
5048
  },
5012
5049
  "docs": {
5013
- "text": "Pans the viewport to center on the given object without changing the zoom level.\nUnlike `centerObjectInViewport`, this moves the camera \u2014 not the object.",
5050
+ "text": "Pans the viewport to center on the given object without changing the zoom level.\r\nUnlike `centerObjectInViewport`, this moves the camera \u2014 not the object.",
5014
5051
  "tags": [{
5015
5052
  "name": "param",
5016
5053
  "text": "object - The object whose center the viewport should pan to."
@@ -5030,7 +5067,7 @@ export class KritzelEngine {
5030
5067
  "return": "Promise<boolean>"
5031
5068
  },
5032
5069
  "docs": {
5033
- "text": "Pans and zooms the viewport to fit the nearest content, with padding.\nUseful when the user has panned away from all objects.",
5070
+ "text": "Pans and zooms the viewport to fit the nearest content, with padding.\r\nUseful when the user has panned away from all objects.",
5034
5071
  "tags": [{
5035
5072
  "name": "returns",
5036
5073
  "text": "`true` if content was found and the viewport was adjusted, `false` otherwise."
@@ -5054,7 +5091,7 @@ export class KritzelEngine {
5054
5091
  "return": "Promise<boolean>"
5055
5092
  },
5056
5093
  "docs": {
5057
- "text": "Pans and zooms the viewport to fit ALL objects on the canvas, including those not currently rendered.\nCalculates the combined bounding box of all objects and centers the viewport to show them.",
5094
+ "text": "Pans and zooms the viewport to fit ALL objects on the canvas, including those not currently rendered.\r\nCalculates the combined bounding box of all objects and centers the viewport to show them.",
5058
5095
  "tags": [{
5059
5096
  "name": "param",
5060
5097
  "text": "animate - Whether to animate the viewport transition (default: true)."
@@ -5091,7 +5128,7 @@ export class KritzelEngine {
5091
5128
  "return": "Promise<boolean>"
5092
5129
  },
5093
5130
  "docs": {
5094
- "text": "Pans and zooms the viewport to fit the provided objects.\nCalculates the combined bounding box of the given objects and centers the viewport to show them.",
5131
+ "text": "Pans and zooms the viewport to fit the provided objects.\r\nCalculates the combined bounding box of the given objects and centers the viewport to show them.",
5095
5132
  "tags": [{
5096
5133
  "name": "param",
5097
5134
  "text": "objects - The objects to center and fit in the viewport."
@@ -5198,7 +5235,7 @@ export class KritzelEngine {
5198
5235
  "return": "Promise<void>"
5199
5236
  },
5200
5237
  "docs": {
5201
- "text": "Zooms the viewport to the given scale level.\nOptionally centers on a world point; if omitted, zooms around the viewport center.",
5238
+ "text": "Zooms the viewport to the given scale level.\r\nOptionally centers on a world point; if omitted, zooms around the viewport center.",
5202
5239
  "tags": [{
5203
5240
  "name": "param",
5204
5241
  "text": "scale - Target scale level."
@@ -5516,7 +5553,7 @@ export class KritzelEngine {
5516
5553
  "return": "Promise<KritzelObjectExportFormat[]>"
5517
5554
  },
5518
5555
  "docs": {
5519
- "text": "Returns export formats supported by the currently selected object.\nOnly returns formats when exactly one object is selected.",
5556
+ "text": "Returns export formats supported by the currently selected object.\r\nOnly returns formats when exactly one object is selected.",
5520
5557
  "tags": []
5521
5558
  }
5522
5559
  },
@@ -5543,7 +5580,7 @@ export class KritzelEngine {
5543
5580
  "return": "Promise<boolean>"
5544
5581
  },
5545
5582
  "docs": {
5546
- "text": "Checks whether the currently selected object supports a specific export format.\nReturns false when none or multiple objects are selected.",
5583
+ "text": "Checks whether the currently selected object supports a specific export format.\r\nReturns false when none or multiple objects are selected.",
5547
5584
  "tags": []
5548
5585
  }
5549
5586
  },
@@ -5570,7 +5607,7 @@ export class KritzelEngine {
5570
5607
  "return": "Promise<void>"
5571
5608
  },
5572
5609
  "docs": {
5573
- "text": "Exports the currently selected object in the requested format and triggers a file download.\nOnly supports single selection.",
5610
+ "text": "Exports the currently selected object in the requested format and triggers a file download.\r\nOnly supports single selection.",
5574
5611
  "tags": []
5575
5612
  }
5576
5613
  },
@@ -5591,7 +5628,7 @@ export class KritzelEngine {
5591
5628
  "return": "Promise<string>"
5592
5629
  },
5593
5630
  "docs": {
5594
- "text": "Exports the current workspace and all its objects as a JSON string.\nThe exported data includes workspace metadata (id, name, viewport) and all canvas objects.",
5631
+ "text": "Exports the current workspace and all its objects as a JSON string.\r\nThe exported data includes workspace metadata (id, name, viewport) and all canvas objects.",
5595
5632
  "tags": [{
5596
5633
  "name": "returns",
5597
5634
  "text": "A JSON string representing the complete workspace state."
@@ -5625,7 +5662,7 @@ export class KritzelEngine {
5625
5662
  "return": "Promise<void>"
5626
5663
  },
5627
5664
  "docs": {
5628
- "text": "Imports a workspace from a JSON string into a new workspace.\nCreates a new workspace with the imported data and automatically switches to it.",
5665
+ "text": "Imports a workspace from a JSON string into a new workspace.\r\nCreates a new workspace with the imported data and automatically switches to it.",
5629
5666
  "tags": [{
5630
5667
  "name": "param",
5631
5668
  "text": "json - A JSON string containing workspace data (from exportAsJson)."
@@ -5662,7 +5699,7 @@ export class KritzelEngine {
5662
5699
  "return": "Promise<number>"
5663
5700
  },
5664
5701
  "docs": {
5665
- "text": "Loads objects from a workspace JSON string into the current workspace.\nUnlike importFromJson, this does not create a new workspace - it adds objects to the existing one.\nUseful for initializing a workspace with pre-existing content after the editor is ready.",
5702
+ "text": "Loads objects from a workspace JSON string into the current workspace.\r\nUnlike importFromJson, this does not create a new workspace - it adds objects to the existing one.\r\nUseful for initializing a workspace with pre-existing content after the editor is ready.",
5666
5703
  "tags": [{
5667
5704
  "name": "param",
5668
5705
  "text": "json - A JSON string containing workspace data (from exportAsJson)."
@@ -5722,7 +5759,7 @@ export class KritzelEngine {
5722
5759
  "return": "Promise<void>"
5723
5760
  },
5724
5761
  "docs": {
5725
- "text": "Opens a file picker dialog and imports the selected JSON file into the workspace.\nThis method creates a hidden file input, triggers the browser's file chooser,\nreads the selected JSON file, and imports it using importFromJson.",
5762
+ "text": "Opens a file picker dialog and imports the selected JSON file into the workspace.\r\nThis method creates a hidden file input, triggers the browser's file chooser,\r\nreads the selected JSON file, and imports it using importFromJson.",
5726
5763
  "tags": [{
5727
5764
  "name": "returns",
5728
5765
  "text": "A promise that resolves when the import is complete or rejects on error/cancel."
@@ -5905,7 +5942,7 @@ export class KritzelEngine {
5905
5942
  "return": "Promise<void>"
5906
5943
  },
5907
5944
  "docs": {
5908
- "text": "Loads a shared workspace by token.\nIf the workspace exists locally, it switches to it.\nIf it doesn't exist, it adds it to the local workspaces list and then switches to it.",
5945
+ "text": "Loads a shared workspace by token.\r\nIf the workspace exists locally, it switches to it.\r\nIf it doesn't exist, it adds it to the local workspaces list and then switches to it.",
5909
5946
  "tags": [{
5910
5947
  "name": "param",
5911
5948
  "text": "token - The connection token identifying the shared workspace"
@@ -5925,7 +5962,7 @@ export class KritzelEngine {
5925
5962
  "return": "Promise<void>"
5926
5963
  },
5927
5964
  "docs": {
5928
- "text": "Reinitializes sync by performing a full teardown and re-initialization.\nDestroys the current Yjs documents and providers, then rebuilds everything\nfrom the current syncConfig. Data reloads from IndexedDB nearly instantly.\nCall this after updating the syncConfig prop (e.g. after authentication state changes).",
5965
+ "text": "Reinitializes sync by performing a full teardown and re-initialization.\r\nDestroys the current Yjs documents and providers, then rebuilds everything\r\nfrom the current syncConfig. Data reloads from IndexedDB nearly instantly.\r\nCall this after updating the syncConfig prop (e.g. after authentication state changes).",
5929
5966
  "tags": []
5930
5967
  }
5931
5968
  },
@@ -6188,7 +6225,7 @@ export class KritzelEngine {
6188
6225
  "return": "Promise<Partial<Record<keyof KritzelTerms, string>>>"
6189
6226
  },
6190
6227
  "docs": {
6191
- "text": "Resolves every known term key for the active locale into a flat map.\nUseful for UI layers that need to localize many strings at once.",
6228
+ "text": "Resolves every known term key for the active locale into a flat map.\r\nUseful for UI layers that need to localize many strings at once.",
6192
6229
  "tags": []
6193
6230
  }
6194
6231
  }
@@ -1,29 +1,29 @@
1
- :host {
2
- position: absolute;
3
- bottom: var(--kritzel-watermark-offset-bottom, 12px);
4
- right: var(--kritzel-watermark-offset-right, 12px);
5
- z-index: 10000;
6
- pointer-events: none;
7
- }
8
-
9
- .watermark-link {
10
- pointer-events: auto;
11
- display: inline-flex;
12
- align-items: center;
13
- padding: 4px 8px;
14
- border-radius: var(--kritzel-watermark-border-radius, 6px);
15
- font-family: var(--kritzel-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);
16
- font-size: var(--kritzel-watermark-font-size, 11px);
17
- line-height: 1;
18
- text-decoration: none;
19
- color: var(--kritzel-watermark-color, rgba(60, 60, 60, 0.75));
20
- background-color: var(--kritzel-watermark-background, rgba(255, 255, 255, 0.6));
21
- box-shadow: var(--kritzel-watermark-box-shadow, 0 1px 2px rgba(0, 0, 0, 0.12));
22
- opacity: var(--kritzel-watermark-opacity, 0.85);
23
- transition: opacity 150ms ease;
24
- user-select: none;
25
- }
26
-
27
- .watermark-link:hover {
28
- opacity: 1;
29
- }
1
+ :host {
2
+ position: absolute;
3
+ bottom: var(--kritzel-watermark-offset-bottom, 12px);
4
+ right: var(--kritzel-watermark-offset-right, 12px);
5
+ z-index: 10000;
6
+ pointer-events: none;
7
+ }
8
+
9
+ .watermark-link {
10
+ pointer-events: auto;
11
+ display: inline-flex;
12
+ align-items: center;
13
+ padding: 4px 8px;
14
+ border-radius: var(--kritzel-watermark-border-radius, 6px);
15
+ font-family: var(--kritzel-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);
16
+ font-size: var(--kritzel-watermark-font-size, 11px);
17
+ line-height: 1;
18
+ text-decoration: none;
19
+ color: var(--kritzel-watermark-color, rgba(60, 60, 60, 0.75));
20
+ background-color: var(--kritzel-watermark-background, rgba(255, 255, 255, 0.6));
21
+ box-shadow: var(--kritzel-watermark-box-shadow, 0 1px 2px rgba(0, 0, 0, 0.12));
22
+ opacity: var(--kritzel-watermark-opacity, 0.85);
23
+ transition: opacity 150ms ease;
24
+ user-select: none;
25
+ }
26
+
27
+ .watermark-link:hover {
28
+ opacity: 1;
29
+ }
@@ -19,7 +19,7 @@ export class KritzelWatermark {
19
19
  label;
20
20
  render() {
21
21
  const label = this.label ?? this.core.localizationManager.translate('watermark.poweredBy');
22
- return (h(Host, { key: 'ae00d98f16912afcb7a90d47a9fc4d55fc7468f0' }, h("a", { key: '8781f94c9efe44b0e7a7a8c20a119160cb9feb8e', class: "watermark-link", href: KRITZEL_WEBSITE_URL, target: "_blank", rel: "noopener noreferrer", part: "watermark", onPointerDown: (ev) => ev.stopPropagation(), onPointerUp: (ev) => ev.stopPropagation() }, label)));
22
+ return (h(Host, { key: 'de81b568421f5517fe19897bd4a4a5d58d1f622d' }, h("a", { key: '6278f78180869650afc181aac5c37aa401c09040', class: "watermark-link", href: KRITZEL_WEBSITE_URL, target: "_blank", rel: "noopener noreferrer", part: "watermark", onPointerDown: (ev) => ev.stopPropagation(), onPointerUp: (ev) => ev.stopPropagation() }, label)));
23
23
  }
24
24
  static get is() { return "kritzel-watermark"; }
25
25
  static get encapsulation() { return "shadow"; }
@@ -71,7 +71,7 @@ export class KritzelWatermark {
71
71
  "optional": true,
72
72
  "docs": {
73
73
  "tags": [],
74
- "text": "Resolved \"Powered by Kritzel\" label. Passed in by the engine so the badge\nre-renders when the active locale changes. Falls back to resolving the term\nfrom the core when not provided."
74
+ "text": "Resolved \"Powered by Kritzel\" label. Passed in by the engine so the badge\r\nre-renders when the active locale changes. Falls back to resolving the term\r\nfrom the core when not provided."
75
75
  },
76
76
  "getter": false,
77
77
  "setter": false,