kritzel-stencil 0.4.23 → 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 -238
  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 -72
  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-Cb-xlpsJ.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-EijwLEZx.js → p-DwEYMvIn.js} +175 -186
  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 -238
  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-9e38407e.entry.js → p-ce6d432e.entry.js} +198 -238
  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);
1867
1894
  return;
1868
1895
  }
1869
- this.isSyncing = isSyncing;
1870
- this.syncingChange.emit(isSyncing);
1896
+ this.clearSyncingShowTimeout();
1897
+ if (!this.isSyncing) {
1898
+ return;
1899
+ }
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,45 +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
- // The network provider may have already applied remote changes between
2255
- // object-map initialization and this subscription (e.g. an already-connected
2256
- // shared socket resolves the sync handshake almost immediately). Without this
2257
- // check that update is missed entirely and the indicator never appears.
2258
- if (initializedObjects.hasAppliedRemoteChanges) {
2259
- this.syncSyncingState(true);
2260
- }
2261
- }
2262
- else {
2263
- // Custom providers without an update origin cannot be diffed, so fall back to reporting the whole handshake.
2264
- this.syncSyncingState(true);
2265
- }
2266
- void initializedObjects.whenNetworkSynced().finally(() => {
2267
- if (this.core.store.objects !== initializedObjects) {
2268
- return;
2269
- }
2270
- this.clearRemoteChangesSubscription();
2271
- this.syncSyncingState(false);
2272
- });
2273
- }
2274
2304
  emitObjectsChange() {
2275
2305
  const objectsMap = this.core.store.objects;
2276
2306
  if (!objectsMap) {
@@ -3026,7 +3056,7 @@ export class KritzelEngine {
3026
3056
  "optional": true,
3027
3057
  "docs": {
3028
3058
  "tags": [],
3029
- "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`."
3030
3060
  },
3031
3061
  "getter": false,
3032
3062
  "setter": false
@@ -3894,7 +3924,7 @@ export class KritzelEngine {
3894
3924
  "composed": true,
3895
3925
  "docs": {
3896
3926
  "tags": [],
3897
- "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."
3898
3928
  },
3899
3929
  "complexType": {
3900
3930
  "original": "boolean",
@@ -4455,7 +4485,7 @@ export class KritzelEngine {
4455
4485
  "return": "Promise<void>"
4456
4486
  },
4457
4487
  "docs": {
4458
- "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.",
4459
4489
  "tags": [{
4460
4490
  "name": "param",
4461
4491
  "text": "options.x - The X position in world (canvas) coordinates."
@@ -4565,7 +4595,7 @@ export class KritzelEngine {
4565
4595
  "return": "Promise<T[]>"
4566
4596
  },
4567
4597
  "docs": {
4568
- "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).",
4569
4599
  "tags": [{
4570
4600
  "name": "param",
4571
4601
  "text": "predicate - A filter function called for each object. Return `true` to include."
@@ -4574,7 +4604,7 @@ export class KritzelEngine {
4574
4604
  "text": "An array of matching objects."
4575
4605
  }, {
4576
4606
  "name": "example",
4577
- "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```"
4578
4608
  }]
4579
4609
  }
4580
4610
  },
@@ -4707,7 +4737,7 @@ export class KritzelEngine {
4707
4737
  "return": "Promise<T[]>"
4708
4738
  },
4709
4739
  "docs": {
4710
- "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.",
4711
4741
  "tags": [{
4712
4742
  "name": "param",
4713
4743
  "text": "objects - The object instances to add."
@@ -4829,7 +4859,7 @@ export class KritzelEngine {
4829
4859
  "return": "Promise<T[]>"
4830
4860
  },
4831
4861
  "docs": {
4832
- "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.",
4833
4863
  "tags": [{
4834
4864
  "name": "param",
4835
4865
  "text": "objects - The objects to remove."
@@ -5017,7 +5047,7 @@ export class KritzelEngine {
5017
5047
  "return": "Promise<void>"
5018
5048
  },
5019
5049
  "docs": {
5020
- "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.",
5021
5051
  "tags": [{
5022
5052
  "name": "param",
5023
5053
  "text": "object - The object whose center the viewport should pan to."
@@ -5037,7 +5067,7 @@ export class KritzelEngine {
5037
5067
  "return": "Promise<boolean>"
5038
5068
  },
5039
5069
  "docs": {
5040
- "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.",
5041
5071
  "tags": [{
5042
5072
  "name": "returns",
5043
5073
  "text": "`true` if content was found and the viewport was adjusted, `false` otherwise."
@@ -5061,7 +5091,7 @@ export class KritzelEngine {
5061
5091
  "return": "Promise<boolean>"
5062
5092
  },
5063
5093
  "docs": {
5064
- "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.",
5065
5095
  "tags": [{
5066
5096
  "name": "param",
5067
5097
  "text": "animate - Whether to animate the viewport transition (default: true)."
@@ -5098,7 +5128,7 @@ export class KritzelEngine {
5098
5128
  "return": "Promise<boolean>"
5099
5129
  },
5100
5130
  "docs": {
5101
- "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.",
5102
5132
  "tags": [{
5103
5133
  "name": "param",
5104
5134
  "text": "objects - The objects to center and fit in the viewport."
@@ -5205,7 +5235,7 @@ export class KritzelEngine {
5205
5235
  "return": "Promise<void>"
5206
5236
  },
5207
5237
  "docs": {
5208
- "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.",
5209
5239
  "tags": [{
5210
5240
  "name": "param",
5211
5241
  "text": "scale - Target scale level."
@@ -5523,7 +5553,7 @@ export class KritzelEngine {
5523
5553
  "return": "Promise<KritzelObjectExportFormat[]>"
5524
5554
  },
5525
5555
  "docs": {
5526
- "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.",
5527
5557
  "tags": []
5528
5558
  }
5529
5559
  },
@@ -5550,7 +5580,7 @@ export class KritzelEngine {
5550
5580
  "return": "Promise<boolean>"
5551
5581
  },
5552
5582
  "docs": {
5553
- "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.",
5554
5584
  "tags": []
5555
5585
  }
5556
5586
  },
@@ -5577,7 +5607,7 @@ export class KritzelEngine {
5577
5607
  "return": "Promise<void>"
5578
5608
  },
5579
5609
  "docs": {
5580
- "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.",
5581
5611
  "tags": []
5582
5612
  }
5583
5613
  },
@@ -5598,7 +5628,7 @@ export class KritzelEngine {
5598
5628
  "return": "Promise<string>"
5599
5629
  },
5600
5630
  "docs": {
5601
- "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.",
5602
5632
  "tags": [{
5603
5633
  "name": "returns",
5604
5634
  "text": "A JSON string representing the complete workspace state."
@@ -5632,7 +5662,7 @@ export class KritzelEngine {
5632
5662
  "return": "Promise<void>"
5633
5663
  },
5634
5664
  "docs": {
5635
- "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.",
5636
5666
  "tags": [{
5637
5667
  "name": "param",
5638
5668
  "text": "json - A JSON string containing workspace data (from exportAsJson)."
@@ -5669,7 +5699,7 @@ export class KritzelEngine {
5669
5699
  "return": "Promise<number>"
5670
5700
  },
5671
5701
  "docs": {
5672
- "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.",
5673
5703
  "tags": [{
5674
5704
  "name": "param",
5675
5705
  "text": "json - A JSON string containing workspace data (from exportAsJson)."
@@ -5729,7 +5759,7 @@ export class KritzelEngine {
5729
5759
  "return": "Promise<void>"
5730
5760
  },
5731
5761
  "docs": {
5732
- "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.",
5733
5763
  "tags": [{
5734
5764
  "name": "returns",
5735
5765
  "text": "A promise that resolves when the import is complete or rejects on error/cancel."
@@ -5912,7 +5942,7 @@ export class KritzelEngine {
5912
5942
  "return": "Promise<void>"
5913
5943
  },
5914
5944
  "docs": {
5915
- "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.",
5916
5946
  "tags": [{
5917
5947
  "name": "param",
5918
5948
  "text": "token - The connection token identifying the shared workspace"
@@ -5932,7 +5962,7 @@ export class KritzelEngine {
5932
5962
  "return": "Promise<void>"
5933
5963
  },
5934
5964
  "docs": {
5935
- "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).",
5936
5966
  "tags": []
5937
5967
  }
5938
5968
  },
@@ -6195,7 +6225,7 @@ export class KritzelEngine {
6195
6225
  "return": "Promise<Partial<Record<keyof KritzelTerms, string>>>"
6196
6226
  },
6197
6227
  "docs": {
6198
- "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.",
6199
6229
  "tags": []
6200
6230
  }
6201
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,