@peteai/presentation-editor 0.0.6 → 0.0.8

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 (330) hide show
  1. package/README.md +38 -38
  2. package/dist/components/editor/active-layers-buttons.svelte +56 -0
  3. package/dist/components/editor/active-layers.svelte +237 -0
  4. package/dist/components/editor/active-layers.svelte.d.ts +8 -0
  5. package/dist/components/{presentation-editor/cognition-slides.d.ts → editor/cognition-pages.d.ts} +1 -1
  6. package/dist/components/{presentation-editor/cognition-slides.js → editor/cognition-pages.js} +1 -1
  7. package/dist/components/{presentation-editor → editor}/cursor-tooltip.svelte +6 -2
  8. package/dist/components/editor/cursor-tooltip.svelte.d.ts +7 -0
  9. package/dist/components/{presentation-editor → editor}/dragged.svelte +7 -3
  10. package/dist/components/editor/dragged.svelte.d.ts +7 -0
  11. package/dist/components/{presentation-editor/presentation-editor.svelte → editor/editor.svelte} +64 -61
  12. package/dist/components/editor/editor.svelte.d.ts +4 -0
  13. package/dist/components/editor/editor.svelte.js +1169 -0
  14. package/dist/components/editor/header.svelte +62 -0
  15. package/dist/components/editor/header.svelte.d.ts +7 -0
  16. package/dist/components/{presentation-editor → editor}/hotkeys.svelte +48 -16
  17. package/dist/components/editor/index.d.ts +3 -0
  18. package/dist/components/editor/index.js +3 -0
  19. package/dist/components/{presentation-editor → editor}/layers/active-background-border.svelte +2 -2
  20. package/dist/components/{presentation-editor → editor}/layers/active-layer-border.svelte +5 -8
  21. package/dist/components/editor/layers/buttons/border-button/border-button-colors.svelte +59 -0
  22. package/dist/components/editor/layers/buttons/border-button/border-button-colors.svelte.d.ts +9 -0
  23. package/dist/components/{presentation-editor → editor}/layers/buttons/border-button/border-button.svelte +47 -65
  24. package/dist/components/{presentation-editor → editor}/layers/buttons/corner-radius-button/corner-radius-button.svelte +24 -28
  25. package/dist/components/{presentation-editor → editor}/layers/buttons/flip-button/flip-button.svelte +11 -12
  26. package/dist/components/{presentation-editor → editor}/layers/buttons/opacity-button/opacity-button.svelte +33 -44
  27. package/dist/components/{presentation-editor → editor}/layers/controls/corner-scale-control/corner-scale-control.svelte +27 -32
  28. package/dist/components/editor/layers/controls/group-resize-control/group-resize-control.svelte +418 -0
  29. package/dist/components/{presentation-editor → editor}/layers/controls/rotate-control/rotate-control.svelte +33 -34
  30. package/dist/components/editor/layers/controls/rotate-control/rotate-control.svelte.d.ts +6 -0
  31. package/dist/components/{presentation-editor → editor}/layers/controls/side-resize-control/side-resize-control.svelte +22 -26
  32. package/dist/components/{presentation-editor → editor}/layers/controls/side-scale-control/side-scale-control.svelte +13 -15
  33. package/dist/components/{presentation-editor → editor}/layers/controls/side-scale-control/side-scale-control.svelte.d.ts +2 -2
  34. package/dist/components/editor/layers/index.d.ts +10 -0
  35. package/dist/components/{presentation-editor → editor}/layers/index.js +8 -5
  36. package/dist/components/{presentation-editor → editor}/layers/layer-button.svelte +14 -8
  37. package/dist/components/{presentation-editor → editor}/layers/layer-thumb-wrapper.svelte +5 -6
  38. package/dist/components/{presentation-editor → editor}/layers/layer-wrapper.svelte +46 -57
  39. package/dist/components/editor/layers/types/background/background-content-image.svelte +36 -0
  40. package/dist/components/{presentation-editor → editor}/layers/types/background/background-layer-buttons.svelte +6 -6
  41. package/dist/components/editor/layers/types/background/background-layer-content.svelte +21 -0
  42. package/dist/components/{presentation-editor → editor}/layers/types/background/background-layer-content.svelte.d.ts +2 -2
  43. package/dist/components/{presentation-editor → editor}/layers/types/background/background-layer.svelte +7 -9
  44. package/dist/components/editor/layers/types/group/group-child-wrapper.svelte +44 -0
  45. package/dist/components/editor/layers/types/group/group-child-wrapper.svelte.d.ts +9 -0
  46. package/dist/components/editor/layers/types/group/group-layer-content.svelte +45 -0
  47. package/dist/components/editor/layers/types/group/group-layer-content.svelte.d.ts +9 -0
  48. package/dist/components/editor/layers/types/group/group-layer.svelte +33 -0
  49. package/dist/components/editor/layers/types/group/group-layer.svelte.d.ts +8 -0
  50. package/dist/components/editor/layers/types/group/index.d.ts +3 -0
  51. package/dist/components/editor/layers/types/group/index.js +3 -0
  52. package/dist/components/editor/layers/types/image/controls/image-rotate-control/image-rotate-control.svelte +120 -0
  53. package/dist/components/editor/layers/types/image/controls/image-rotate-control/image-rotate-control.svelte.d.ts +8 -0
  54. package/dist/components/editor/layers/types/image/controls/image-rotate-control/index.d.ts +2 -0
  55. package/dist/components/editor/layers/types/image/controls/image-rotate-control/index.js +4 -0
  56. package/dist/components/editor/layers/types/image/controls/image-scale-control/image-scale-control.svelte +154 -0
  57. package/dist/components/editor/layers/types/image/controls/image-scale-control/image-scale-control.svelte.d.ts +91 -0
  58. package/dist/components/editor/layers/types/image/controls/image-scale-control/index.d.ts +2 -0
  59. package/dist/components/editor/layers/types/image/controls/image-scale-control/index.js +4 -0
  60. package/dist/components/{presentation-editor → editor}/layers/types/image/image-layer-active.svelte +10 -13
  61. package/dist/components/{presentation-editor → editor}/layers/types/image/image-layer-content.svelte +15 -12
  62. package/dist/components/editor/layers/types/image/image-layer-crop.svelte +182 -0
  63. package/dist/components/editor/layers/types/image/image-layer-crop.svelte.d.ts +10 -0
  64. package/dist/components/{presentation-editor → editor}/layers/types/image/image-layer.svelte +24 -14
  65. package/dist/components/editor/layers/types/image/index.d.ts +4 -0
  66. package/dist/components/editor/layers/types/image/index.js +4 -0
  67. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/alignment-button/alignment-button.svelte +13 -14
  68. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/alignment-button/alignment-button.svelte.d.ts +2 -2
  69. package/dist/components/editor/layers/types/text/buttons/bold-button/bold-button.svelte +65 -0
  70. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/bold-button/bold-button.svelte.d.ts +2 -2
  71. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/case-button/case-button.svelte +24 -30
  72. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/case-button/case-button.svelte.d.ts +2 -2
  73. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/color-button/color-button.svelte +4 -4
  74. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/color-button/color-button.svelte.d.ts +2 -2
  75. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/font-family-button/font-family-button.svelte +4 -4
  76. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/font-family-button/font-family-button.svelte.d.ts +2 -2
  77. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/font-size-button/font-size-button.svelte +33 -40
  78. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/font-size-button/font-size-button.svelte.d.ts +2 -2
  79. package/dist/components/editor/layers/types/text/buttons/italic-button/italic-button.svelte +65 -0
  80. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/italic-button/italic-button.svelte.d.ts +2 -2
  81. package/dist/components/editor/layers/types/text/buttons/list-button/list-button.svelte +113 -0
  82. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/list-button/list-button.svelte.d.ts +2 -2
  83. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/strikethrough-button/strikethrough-button.svelte +10 -11
  84. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/strikethrough-button/strikethrough-button.svelte.d.ts +2 -2
  85. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/underline-button/underline-button.svelte +10 -11
  86. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/underline-button/underline-button.svelte.d.ts +2 -2
  87. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/editor/utils.d.ts +2 -0
  88. package/dist/components/editor/layers/types/text/editor/utils.js +166 -0
  89. package/dist/components/editor/layers/types/text/extensions/list/index.d.ts +3 -0
  90. package/dist/components/editor/layers/types/text/extensions/list/index.js +3 -0
  91. package/dist/components/editor/layers/types/text/extensions/list/list.d.ts +67 -0
  92. package/dist/components/editor/layers/types/text/extensions/list/list.js +237 -0
  93. package/dist/components/editor/layers/types/text/extensions/list-item/index.d.ts +3 -0
  94. package/dist/components/editor/layers/types/text/extensions/list-item/index.js +3 -0
  95. package/dist/components/editor/layers/types/text/extensions/list-item/list-item.d.ts +13 -0
  96. package/dist/components/editor/layers/types/text/extensions/list-item/list-item.js +262 -0
  97. package/dist/components/editor/layers/types/text/extensions/list-item-paragraph/index.d.ts +3 -0
  98. package/dist/components/editor/layers/types/text/extensions/list-item-paragraph/index.js +3 -0
  99. package/dist/components/editor/layers/types/text/extensions/list-item-paragraph/list-item-paragraph.d.ts +14 -0
  100. package/dist/components/editor/layers/types/text/extensions/list-item-paragraph/list-item-paragraph.js +27 -0
  101. package/dist/components/editor/layers/types/text/extensions/paragraph/index.d.ts +3 -0
  102. package/dist/components/editor/layers/types/text/extensions/paragraph/index.js +3 -0
  103. package/dist/components/editor/layers/types/text/extensions/paragraph/paragraph.d.ts +6 -0
  104. package/dist/components/editor/layers/types/text/extensions/paragraph/paragraph.js +28 -0
  105. package/dist/components/editor/layers/types/text/extensions/preserve-formatting-on-clear/index.d.ts +3 -0
  106. package/dist/components/editor/layers/types/text/extensions/preserve-formatting-on-clear/index.js +3 -0
  107. package/dist/components/editor/layers/types/text/extensions/preserve-formatting-on-clear/preserve-formatting-on-clear.d.ts +2 -0
  108. package/dist/components/editor/layers/types/text/extensions/preserve-formatting-on-clear/preserve-formatting-on-clear.js +74 -0
  109. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions/text-transform/text-transform.js +1 -4
  110. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions.js +13 -23
  111. package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/html-content.svelte +0 -9
  112. package/dist/components/editor/layers/types/text/index.d.ts +5 -0
  113. package/dist/components/editor/layers/types/text/index.js +5 -0
  114. package/dist/components/{presentation-editor/layers/types/html/html-layer-content.svelte → editor/layers/types/text/text-layer-content.svelte} +2 -2
  115. package/dist/components/editor/layers/types/text/text-layer-content.svelte.d.ts +9 -0
  116. package/dist/components/editor/layers/types/text/text-layer-edit.svelte +114 -0
  117. package/dist/components/editor/layers/types/text/text-layer-edit.svelte.d.ts +9 -0
  118. package/dist/components/editor/layers/types/text/text-layer.svelte +125 -0
  119. package/dist/components/editor/layers/types/text/text-layer.svelte.d.ts +7 -0
  120. package/dist/components/{presentation-editor → editor}/layers/utils.d.ts +32 -24
  121. package/dist/components/{presentation-editor → editor}/layers/utils.js +152 -102
  122. package/dist/components/{presentation-editor → editor}/menu/background-menu-content.svelte +24 -24
  123. package/dist/components/{presentation-editor → editor}/menu/background-menu-content.svelte.d.ts +4 -4
  124. package/dist/components/{presentation-editor → editor}/menu/layer-menu-content.svelte +62 -38
  125. package/dist/components/{presentation-editor/menu/slide-menu-content.svelte → editor/menu/page-menu-content.svelte} +19 -19
  126. package/dist/components/editor/menu/page-menu-content.svelte.d.ts +9 -0
  127. package/dist/components/{presentation-editor/slide-editor.svelte → editor/page-editor.svelte} +30 -25
  128. package/dist/components/editor/page-editor.svelte.d.ts +7 -0
  129. package/dist/components/{presentation-editor/slide-inner.svelte → editor/page-inner.svelte} +5 -5
  130. package/dist/components/{presentation-editor/sidebar/sidebar.svelte.d.ts → editor/page-inner.svelte.d.ts} +3 -3
  131. package/dist/components/editor/page.svelte +69 -0
  132. package/dist/components/editor/page.svelte.d.ts +4 -0
  133. package/dist/components/editor/pages-navigation/page-preview.svelte +36 -0
  134. package/dist/components/editor/pages-navigation/page-preview.svelte.d.ts +8 -0
  135. package/dist/components/{presentation-editor/slides-navigation/slide-preview.svelte → editor/pages-navigation/pages-navigation-item.svelte} +21 -41
  136. package/dist/components/editor/pages-navigation/pages-navigation-item.svelte.d.ts +11 -0
  137. package/dist/components/{presentation-editor/slides-navigation/slides-navigation.svelte → editor/pages-navigation/pages-navigation.svelte} +26 -21
  138. package/dist/components/editor/pages-navigation/pages-navigation.svelte.d.ts +7 -0
  139. package/dist/components/{presentation-editor → editor}/sidebar/color-sidebar/color-sidebar-color.svelte +1 -1
  140. package/dist/components/{presentation-editor → editor}/sidebar/color-sidebar/color-sidebar-gradient-picker.svelte +2 -2
  141. package/dist/components/{presentation-editor → editor}/sidebar/color-sidebar/color-sidebar.svelte +92 -89
  142. package/dist/components/{presentation-editor → editor}/sidebar/font-sidebar/font-sidebar-button.svelte +3 -3
  143. package/dist/components/{presentation-editor → editor}/sidebar/font-sidebar/font-sidebar.svelte +34 -39
  144. package/dist/components/editor/sidebar/image-crop-sidebar.svelte +112 -0
  145. package/dist/components/editor/sidebar/image-crop-sidebar.svelte.d.ts +7 -0
  146. package/dist/components/{presentation-editor/sidebar/position-slidebar.svelte → editor/sidebar/position-sidebar.svelte} +26 -20
  147. package/dist/components/editor/sidebar/position-sidebar.svelte.d.ts +3 -0
  148. package/dist/components/{presentation-editor → editor}/sidebar/sidebar-text-tab-button.svelte +5 -5
  149. package/dist/components/{presentation-editor → editor}/sidebar/sidebar-text-tab.svelte +5 -5
  150. package/dist/components/{presentation-editor → editor}/sidebar/sidebar-uploads-tab.svelte +4 -4
  151. package/dist/components/{presentation-editor → editor}/sidebar/sidebar-wrapper.svelte +6 -4
  152. package/dist/components/{presentation-editor → editor}/sidebar/sidebar.svelte +17 -10
  153. package/dist/components/editor/sidebar/sidebar.svelte.d.ts +7 -0
  154. package/dist/components/{presentation-editor → editor}/sidebar/uploads-image.svelte +3 -3
  155. package/dist/components/editor/types.d.ts +283 -0
  156. package/dist/components/{presentation-editor → editor}/utils.d.ts +14 -6
  157. package/dist/components/{presentation-editor → editor}/utils.js +98 -63
  158. package/dist/components/ui/color-picker/color-picker.svelte +2 -2
  159. package/dist/components/ui/context-menu/context-menu-checkbox-item.svelte +2 -2
  160. package/dist/components/ui/context-menu/context-menu-radio-item.svelte +1 -1
  161. package/dist/components/ui/context-menu/context-menu-sub-trigger.svelte +1 -1
  162. package/dist/components/ui/dialog/dialog-content.svelte +3 -3
  163. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +3 -3
  164. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +2 -2
  165. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +1 -1
  166. package/dist/components/ui/dropdown-menu/index.d.ts +1 -0
  167. package/dist/components/ui/slider/slider.svelte +28 -20
  168. package/dist/index.d.ts +12 -6
  169. package/dist/index.js +5 -3
  170. package/package.json +42 -38
  171. package/dist/components/presentation-editor/active-layers-buttons.svelte +0 -53
  172. package/dist/components/presentation-editor/active-layers.svelte +0 -181
  173. package/dist/components/presentation-editor/active-layers.svelte.d.ts +0 -3
  174. package/dist/components/presentation-editor/cursor-tooltip.svelte.d.ts +0 -18
  175. package/dist/components/presentation-editor/dragged.svelte.d.ts +0 -18
  176. package/dist/components/presentation-editor/header.svelte +0 -54
  177. package/dist/components/presentation-editor/header.svelte.d.ts +0 -18
  178. package/dist/components/presentation-editor/index.d.ts +0 -2
  179. package/dist/components/presentation-editor/index.js +0 -2
  180. package/dist/components/presentation-editor/layers/controls/group-resize-control/group-resize-control.svelte +0 -337
  181. package/dist/components/presentation-editor/layers/controls/rotate-control/rotate-control.svelte.d.ts +0 -3
  182. package/dist/components/presentation-editor/layers/index.d.ts +0 -9
  183. package/dist/components/presentation-editor/layers/types/background/background-content-image.svelte +0 -41
  184. package/dist/components/presentation-editor/layers/types/background/background-layer-content.svelte +0 -19
  185. package/dist/components/presentation-editor/layers/types/html/buttons/bold-button/bold-button.svelte +0 -71
  186. package/dist/components/presentation-editor/layers/types/html/buttons/italic-button/italic-button.svelte +0 -71
  187. package/dist/components/presentation-editor/layers/types/html/buttons/list-button/list-button.svelte +0 -90
  188. package/dist/components/presentation-editor/layers/types/html/editor/utils.js +0 -88
  189. package/dist/components/presentation-editor/layers/types/html/extensions/unstyled-list/index.d.ts +0 -3
  190. package/dist/components/presentation-editor/layers/types/html/extensions/unstyled-list/index.js +0 -3
  191. package/dist/components/presentation-editor/layers/types/html/extensions/unstyled-list/unstyled-list.d.ts +0 -47
  192. package/dist/components/presentation-editor/layers/types/html/extensions/unstyled-list/unstyled-list.js +0 -74
  193. package/dist/components/presentation-editor/layers/types/html/html-layer-content.svelte.d.ts +0 -9
  194. package/dist/components/presentation-editor/layers/types/html/html-layer-edit.svelte +0 -103
  195. package/dist/components/presentation-editor/layers/types/html/html-layer-edit.svelte.d.ts +0 -8
  196. package/dist/components/presentation-editor/layers/types/html/html-layer.svelte +0 -105
  197. package/dist/components/presentation-editor/layers/types/html/html-layer.svelte.d.ts +0 -7
  198. package/dist/components/presentation-editor/layers/types/html/index.d.ts +0 -5
  199. package/dist/components/presentation-editor/layers/types/html/index.js +0 -5
  200. package/dist/components/presentation-editor/layers/types/image/index.d.ts +0 -3
  201. package/dist/components/presentation-editor/layers/types/image/index.js +0 -3
  202. package/dist/components/presentation-editor/menu/slide-menu-content.svelte.d.ts +0 -9
  203. package/dist/components/presentation-editor/presentation-editor.svelte.d.ts +0 -4
  204. package/dist/components/presentation-editor/presentation-editor.svelte.js +0 -813
  205. package/dist/components/presentation-editor/sidebar/position-slidebar.svelte.d.ts +0 -18
  206. package/dist/components/presentation-editor/slide-editor.svelte.d.ts +0 -7
  207. package/dist/components/presentation-editor/slide-inner.svelte.d.ts +0 -18
  208. package/dist/components/presentation-editor/slides-navigation/slide-preview.svelte.d.ts +0 -11
  209. package/dist/components/presentation-editor/slides-navigation/slides-navigation.svelte.d.ts +0 -3
  210. package/dist/components/presentation-editor/types.d.ts +0 -158
  211. /package/dist/components/{presentation-editor → editor}/active-layers-buttons.svelte.d.ts +0 -0
  212. /package/dist/components/{presentation-editor → editor}/color-indicator/color-indicator-gradient-def.svelte +0 -0
  213. /package/dist/components/{presentation-editor → editor}/color-indicator/color-indicator-gradient-def.svelte.d.ts +0 -0
  214. /package/dist/components/{presentation-editor → editor}/color-indicator/color-indicator-gradient.svelte +0 -0
  215. /package/dist/components/{presentation-editor → editor}/color-indicator/color-indicator-gradient.svelte.d.ts +0 -0
  216. /package/dist/components/{presentation-editor → editor}/color-indicator/color-indicator.svelte +0 -0
  217. /package/dist/components/{presentation-editor → editor}/color-indicator/color-indicator.svelte.d.ts +0 -0
  218. /package/dist/components/{presentation-editor → editor}/color-indicator/index.d.ts +0 -0
  219. /package/dist/components/{presentation-editor → editor}/color-indicator/index.js +0 -0
  220. /package/dist/components/{presentation-editor → editor}/fonts.d.ts +0 -0
  221. /package/dist/components/{presentation-editor → editor}/fonts.js +0 -0
  222. /package/dist/components/{presentation-editor → editor}/hotkeys.svelte.d.ts +0 -0
  223. /package/dist/components/{presentation-editor → editor}/layers/active-background-border.svelte.d.ts +0 -0
  224. /package/dist/components/{presentation-editor → editor}/layers/active-layer-border.svelte.d.ts +0 -0
  225. /package/dist/components/{presentation-editor → editor}/layers/buttons/border-button/border-button.svelte.d.ts +0 -0
  226. /package/dist/components/{presentation-editor → editor}/layers/buttons/border-button/index.d.ts +0 -0
  227. /package/dist/components/{presentation-editor → editor}/layers/buttons/border-button/index.js +0 -0
  228. /package/dist/components/{presentation-editor → editor}/layers/buttons/corner-radius-button/corner-radius-button.svelte.d.ts +0 -0
  229. /package/dist/components/{presentation-editor → editor}/layers/buttons/corner-radius-button/index.d.ts +0 -0
  230. /package/dist/components/{presentation-editor → editor}/layers/buttons/corner-radius-button/index.js +0 -0
  231. /package/dist/components/{presentation-editor → editor}/layers/buttons/flip-button/flip-button.svelte.d.ts +0 -0
  232. /package/dist/components/{presentation-editor → editor}/layers/buttons/flip-button/index.d.ts +0 -0
  233. /package/dist/components/{presentation-editor → editor}/layers/buttons/flip-button/index.js +0 -0
  234. /package/dist/components/{presentation-editor → editor}/layers/buttons/opacity-button/index.d.ts +0 -0
  235. /package/dist/components/{presentation-editor → editor}/layers/buttons/opacity-button/index.js +0 -0
  236. /package/dist/components/{presentation-editor → editor}/layers/buttons/opacity-button/opacity-button.svelte.d.ts +0 -0
  237. /package/dist/components/{presentation-editor → editor}/layers/controls/corner-scale-control/corner-scale-control.svelte.d.ts +0 -0
  238. /package/dist/components/{presentation-editor → editor}/layers/controls/corner-scale-control/index.d.ts +0 -0
  239. /package/dist/components/{presentation-editor → editor}/layers/controls/corner-scale-control/index.js +0 -0
  240. /package/dist/components/{presentation-editor → editor}/layers/controls/group-resize-control/group-resize-control.svelte.d.ts +0 -0
  241. /package/dist/components/{presentation-editor → editor}/layers/controls/group-resize-control/index.d.ts +0 -0
  242. /package/dist/components/{presentation-editor → editor}/layers/controls/group-resize-control/index.js +0 -0
  243. /package/dist/components/{presentation-editor → editor}/layers/controls/rotate-control/index.d.ts +0 -0
  244. /package/dist/components/{presentation-editor → editor}/layers/controls/rotate-control/index.js +0 -0
  245. /package/dist/components/{presentation-editor → editor}/layers/controls/side-resize-control/index.d.ts +0 -0
  246. /package/dist/components/{presentation-editor → editor}/layers/controls/side-resize-control/index.js +0 -0
  247. /package/dist/components/{presentation-editor → editor}/layers/controls/side-resize-control/side-resize-control.svelte.d.ts +0 -0
  248. /package/dist/components/{presentation-editor → editor}/layers/controls/side-scale-control/index.d.ts +0 -0
  249. /package/dist/components/{presentation-editor → editor}/layers/controls/side-scale-control/index.js +0 -0
  250. /package/dist/components/{presentation-editor → editor}/layers/layer-button.svelte.d.ts +0 -0
  251. /package/dist/components/{presentation-editor → editor}/layers/layer-thumb-wrapper.svelte.d.ts +0 -0
  252. /package/dist/components/{presentation-editor → editor}/layers/layer-wrapper.svelte.d.ts +0 -0
  253. /package/dist/components/{presentation-editor → editor}/layers/types/background/background-content-image.svelte.d.ts +0 -0
  254. /package/dist/components/{presentation-editor → editor}/layers/types/background/background-layer-buttons.svelte.d.ts +0 -0
  255. /package/dist/components/{presentation-editor → editor}/layers/types/background/background-layer.svelte.d.ts +0 -0
  256. /package/dist/components/{presentation-editor → editor}/layers/types/background/index.d.ts +0 -0
  257. /package/dist/components/{presentation-editor → editor}/layers/types/background/index.js +0 -0
  258. /package/dist/components/{presentation-editor → editor}/layers/types/image/image-layer-active.svelte.d.ts +0 -0
  259. /package/dist/components/{presentation-editor → editor}/layers/types/image/image-layer-content.svelte.d.ts +0 -0
  260. /package/dist/components/{presentation-editor → editor}/layers/types/image/image-layer.svelte.d.ts +0 -0
  261. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/alignment-button/index.d.ts +0 -0
  262. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/alignment-button/index.js +0 -0
  263. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/bold-button/index.d.ts +0 -0
  264. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/bold-button/index.js +0 -0
  265. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/case-button/index.d.ts +0 -0
  266. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/case-button/index.js +0 -0
  267. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/color-button/index.d.ts +0 -0
  268. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/color-button/index.js +0 -0
  269. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/font-family-button/index.d.ts +0 -0
  270. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/font-family-button/index.js +0 -0
  271. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/font-size-button/index.d.ts +0 -0
  272. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/font-size-button/index.js +0 -0
  273. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/italic-button/index.d.ts +0 -0
  274. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/italic-button/index.js +0 -0
  275. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/list-button/index.d.ts +0 -0
  276. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/list-button/index.js +0 -0
  277. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/strikethrough-button/index.d.ts +0 -0
  278. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/strikethrough-button/index.js +0 -0
  279. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/underline-button/index.d.ts +0 -0
  280. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/buttons/underline-button/index.js +0 -0
  281. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/editor/Editor.d.ts +0 -0
  282. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/editor/Editor.js +0 -0
  283. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/editor/createEditor.d.ts +0 -0
  284. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/editor/createEditor.js +0 -0
  285. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/editor/editor-content.svelte +0 -0
  286. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/editor/editor-content.svelte.d.ts +0 -0
  287. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/editor/index.d.ts +0 -0
  288. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/editor/index.js +0 -0
  289. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/editor/types.d.ts +0 -0
  290. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/editor/types.js +0 -0
  291. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/editor.css +0 -0
  292. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions/font-family/font-family.d.ts +0 -0
  293. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions/font-family/font-family.js +0 -0
  294. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions/font-family/index.d.ts +0 -0
  295. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions/font-family/index.js +0 -0
  296. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions/font-size/font-size.d.ts +0 -0
  297. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions/font-size/font-size.js +0 -0
  298. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions/font-size/index.d.ts +0 -0
  299. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions/font-size/index.js +0 -0
  300. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions/line-height/index.d.ts +0 -0
  301. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions/line-height/index.js +0 -0
  302. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions/line-height/line-height.d.ts +0 -0
  303. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions/line-height/line-height.js +0 -0
  304. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions/selection/index.d.ts +0 -0
  305. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions/selection/index.js +0 -0
  306. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions/selection/selection.d.ts +0 -0
  307. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions/selection/selection.js +0 -0
  308. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions/text-transform/index.d.ts +0 -0
  309. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions/text-transform/index.js +0 -0
  310. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions/text-transform/text-transform.d.ts +0 -0
  311. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/extensions.d.ts +0 -0
  312. /package/dist/components/{presentation-editor/layers/types/html → editor/layers/types/text}/html-content.svelte.d.ts +0 -0
  313. /package/dist/components/{presentation-editor → editor}/menu/layer-menu-content.svelte.d.ts +0 -0
  314. /package/dist/components/{presentation-editor → editor}/sidebar/color-sidebar/color-sidebar-color.svelte.d.ts +0 -0
  315. /package/dist/components/{presentation-editor → editor}/sidebar/color-sidebar/color-sidebar-gradient-picker.svelte.d.ts +0 -0
  316. /package/dist/components/{presentation-editor → editor}/sidebar/color-sidebar/color-sidebar.svelte.d.ts +0 -0
  317. /package/dist/components/{presentation-editor → editor}/sidebar/color-sidebar/index.d.ts +0 -0
  318. /package/dist/components/{presentation-editor → editor}/sidebar/color-sidebar/index.js +0 -0
  319. /package/dist/components/{presentation-editor → editor}/sidebar/font-sidebar/font-sidebar-button.svelte.d.ts +0 -0
  320. /package/dist/components/{presentation-editor → editor}/sidebar/font-sidebar/font-sidebar.svelte.d.ts +0 -0
  321. /package/dist/components/{presentation-editor → editor}/sidebar/font-sidebar/index.d.ts +0 -0
  322. /package/dist/components/{presentation-editor → editor}/sidebar/font-sidebar/index.js +0 -0
  323. /package/dist/components/{presentation-editor → editor}/sidebar/sidebar-text-tab-button.svelte.d.ts +0 -0
  324. /package/dist/components/{presentation-editor → editor}/sidebar/sidebar-text-tab.svelte.d.ts +0 -0
  325. /package/dist/components/{presentation-editor → editor}/sidebar/sidebar-uploads-tab.svelte.d.ts +0 -0
  326. /package/dist/components/{presentation-editor → editor}/sidebar/sidebar-wrapper.svelte.d.ts +0 -0
  327. /package/dist/components/{presentation-editor → editor}/sidebar/uploads-image.svelte.d.ts +0 -0
  328. /package/dist/components/{presentation-editor → editor}/snapping-guides.svelte +0 -0
  329. /package/dist/components/{presentation-editor → editor}/snapping-guides.svelte.d.ts +0 -0
  330. /package/dist/components/{presentation-editor → editor}/types.js +0 -0
@@ -1,13 +1,8 @@
1
1
  <script lang="ts">
2
2
  import * as ContextMenu from '../../ui/context-menu/index.js';
3
3
  import type { ActiveLayerGuide, BoxLayerGuide, Layer, LineLayerGuide } from '../types.js';
4
- import { getPresentationEditorContext } from '../presentation-editor.svelte.js';
5
- import {
6
- calculateBoundingBox,
7
- calculateGroupRotatedBoundingBox,
8
- calculateLayerTransform,
9
- type Transform,
10
- } from './utils.js';
4
+ import { getEditorContext } from '../editor.svelte.js';
5
+ import { calculateBoundingBox, calculateGroupRotatedBoundingBox } from './utils.js';
11
6
  import { generateId } from '../../../utils.js';
12
7
  import LayerMenuContent from '../menu/layer-menu-content.svelte';
13
8
 
@@ -25,18 +20,21 @@
25
20
  children,
26
21
  }: Props = $props();
27
22
 
28
- const editor = getPresentationEditorContext();
23
+ const editor = getEditorContext();
29
24
 
30
25
  let initial: {
31
26
  clientX: number;
32
27
  clientY: number;
33
- bbox: Transform;
28
+ bbox: { x: number; y: number; width: number; height: number };
34
29
  layers: (Layer & { state: Layer })[];
35
30
  } | null = null;
36
31
  const actionId = editor.generateId();
37
32
 
38
- let scale = $derived(layer.scale || 1);
39
- let rotate = $derived(layer.rotate || 0);
33
+ const onClick = (e: MouseEvent) => {
34
+ console.log('click', layer.id, e);
35
+ if (e.shiftKey) return;
36
+ editor.setActiveLayers(layer.id);
37
+ };
40
38
 
41
39
  const tryToDeselect = () => {
42
40
  removeEventListener('mouseup', tryToDeselect);
@@ -46,31 +44,21 @@
46
44
 
47
45
  const onMouseDown = (e: MouseEvent) => {
48
46
  console.log('mousedown', layer.id, e);
49
- if (!editor.activeLayerIds.has(layer.id)) {
47
+ if (editor.activeAction) return;
48
+ if (!editor.activeLayers.find((l) => l.id === layer.id)) {
50
49
  editor.setActiveLayers(layer.id, e.shiftKey ? 'add' : undefined);
51
50
  } else if (e.shiftKey) {
52
51
  addEventListener('mouseup', tryToDeselect);
53
52
  }
54
- if (
55
- !editor.activeSlide.locked &&
56
- !editor.activeLayers.some((l) => l.locked) &&
57
- !editor.activeAction &&
58
- e.button === 0
59
- ) {
53
+ if (!editor.activePage.locked && !editor.activeLayers.some((l) => l.locked) && e.button === 0) {
60
54
  initial = {
61
55
  clientX: e.clientX,
62
56
  clientY: e.clientY,
63
- bbox: {
64
- ...calculateBoundingBox(
65
- editor.activeLayers.length === 1
66
- ? calculateLayerTransform(editor.activeLayers[0])
67
- : calculateGroupRotatedBoundingBox(
68
- editor.activeLayers.map(calculateLayerTransform),
69
- editor.activeGroupRotate,
70
- ),
71
- ),
72
- rotate: 0,
73
- },
57
+ bbox: calculateBoundingBox(
58
+ editor.activeLayers.length === 1
59
+ ? editor.activeLayers[0]
60
+ : calculateGroupRotatedBoundingBox(editor.activeLayers, editor.activeGroupRotate),
61
+ ),
74
62
  layers: editor.activeLayers.map((layer) => ({ ...layer, state: layer })),
75
63
  };
76
64
  addEventListener('mousemove', onMouseMove);
@@ -88,27 +76,26 @@
88
76
  editor.activeAction = null;
89
77
  if (!initial || (initial.clientX === e.clientX && initial.clientY === e.clientY)) return;
90
78
 
91
- editor.historyPush({
92
- type: 'layersGroup',
93
- actions: initial.layers.map((layerWithState) => {
79
+ editor.historyPush(
80
+ initial.layers.map((layerWithState) => {
94
81
  const { state, ...layer } = layerWithState;
95
82
  if (editor.isLayerOutOfBounds(state)) {
96
83
  return {
97
- type: 'layersRemove',
98
- slideId: editor.activeSlide.id,
99
- layers: [layer],
84
+ type: 'layerRemove',
85
+ pageId: editor.activePage.id,
86
+ layer,
100
87
  };
101
88
  } else {
102
89
  return {
103
- type: 'layer',
104
- slideId: editor.activeSlide.id,
90
+ type: 'layerUpdate',
91
+ pageId: editor.activePage.id,
105
92
  layer: { id: layer.id, type: layer.type },
106
93
  undo: { x: layer.x, y: layer.y },
107
94
  redo: { x: state.x, y: state.y },
108
95
  };
109
96
  }
110
97
  }),
111
- });
98
+ );
112
99
  initial = null;
113
100
  };
114
101
 
@@ -147,9 +134,9 @@
147
134
 
148
135
  let snappingGrid: LineLayerGuide[][] = [];
149
136
  const buildSnappingGrid = () =>
150
- editor.activeSlide.layers
151
- .filter((l) => !editor.activeLayerIds.has(l.id))
152
- .map((l) => calculateBoundingBox(calculateLayerTransform(l)))
137
+ editor.rootLayers
138
+ .filter((layer) => !editor.activeLayers.find((l) => l.id === layer.id))
139
+ .map((layer) => calculateBoundingBox(layer))
153
140
  .map(({ x, y, width, height }) => {
154
141
  const verticalPositions = [x, x + width / 2, x + width];
155
142
  const horizontalPositions = [y, y + height / 2, y + height];
@@ -187,11 +174,11 @@
187
174
 
188
175
  if (!initial || editor.activeAction?.id !== actionId) return;
189
176
 
190
- let xDiff = (e.clientX - initial.clientX) / editor.zoom;
191
- let yDiff = (e.clientY - initial.clientY) / editor.zoom;
192
- let x = initial.bbox.x + xDiff;
193
- let y = initial.bbox.y + yDiff;
194
- const { width, height } = initial.bbox;
177
+ const { clientX, clientY, bbox } = initial;
178
+ let xDiff = (e.clientX - clientX) / editor.zoom;
179
+ let yDiff = (e.clientY - clientY) / editor.zoom;
180
+ let x = bbox.x + xDiff;
181
+ let y = bbox.y + yDiff;
195
182
 
196
183
  const guides: {
197
184
  xDiff?: number;
@@ -205,7 +192,7 @@
205
192
  let minYDiff: number = Infinity;
206
193
  const xSnappingCheck = (coords: number[]) => {
207
194
  for (let i = 0; i < coords.length; i++) {
208
- const coordsForCheck = [coords[i], coords[i] - width / 2, coords[i] - width];
195
+ const coordsForCheck = [coords[i], coords[i] - bbox.width / 2, coords[i] - bbox.width];
209
196
  for (let j = 0; j < coordsForCheck.length; j++) {
210
197
  const xDiff = x - coordsForCheck[j];
211
198
  const xDiffAbs = Math.abs(xDiff);
@@ -221,7 +208,7 @@
221
208
  };
222
209
  const ySnappingCheck = (coords: number[]) => {
223
210
  for (let i = 0; i < coords.length; i++) {
224
- const coordsForCheck = [coords[i], coords[i] - height / 2, coords[i] - height];
211
+ const coordsForCheck = [coords[i], coords[i] - bbox.height / 2, coords[i] - bbox.height];
225
212
  for (let j = 0; j < coordsForCheck.length; j++) {
226
213
  const yDiff = y - coordsForCheck[j];
227
214
  const yDiffAbs = Math.abs(yDiff);
@@ -256,13 +243,13 @@
256
243
  }
257
244
  };
258
245
 
259
- // slide padding
246
+ // page padding
260
247
  checkBoxSnapping(paddingGuide);
261
248
 
262
- // slide edges
249
+ // page edges
263
250
  edgeGuides.forEach(checkLineSnapping);
264
251
 
265
- // rest of the slides
252
+ // rest of the pages
266
253
  snappingGrid.forEach((layerGuides) => {
267
254
  layerGuides.forEach(checkLineSnapping);
268
255
  });
@@ -281,11 +268,11 @@
281
268
  .map(({ guide }) => {
282
269
  if (guide.type === 'horizontal') {
283
270
  const minX = Math.min(x, guide.x);
284
- const length = Math.max(x + width, guide.x + guide.length) - minX;
271
+ const length = Math.max(x + bbox.width, guide.x + guide.length) - minX;
285
272
  return { ...guide, x: minX, length };
286
273
  } else if (guide.type === 'vertical') {
287
274
  const minY = Math.min(y, guide.y);
288
- const length = Math.max(y + height, guide.y + guide.length) - minY;
275
+ const length = Math.max(y + bbox.height, guide.y + guide.length) - minY;
289
276
  return { ...guide, y: minY, length };
290
277
  }
291
278
 
@@ -316,14 +303,16 @@
316
303
 
317
304
  <ContextMenu.Root>
318
305
  <ContextMenu.Trigger>
306
+ <!-- svelte-ignore a11y_click_events_have_key_events -->
319
307
  <!-- svelte-ignore a11y_mouse_events_have_key_events -->
320
308
  <!-- svelte-ignore a11y_no_static_element_interactions -->
321
309
  <div
322
310
  class="absolute select-none"
323
- style:width="{layer.width * scale}px"
324
- style:height="{layer.height * scale}px"
325
- style:transform={`translate(${layer.x}px, ${layer.y}px) rotate(${rotate}deg)`}
326
- style:opacity={layer.opacity ?? null}
311
+ style:width="{layer.width * layer.scale}px"
312
+ style:height="{layer.height * layer.scale}px"
313
+ style:transform={`translate(${layer.x}px, ${layer.y}px) rotate(${layer.rotate}deg)`}
314
+ style:opacity={layer.opacity}
315
+ onclick={onClick}
327
316
  onmousedown={onMouseDown}
328
317
  onmouseover={onMouseOver}
329
318
  onmouseleave={onMouseLeave}
@@ -0,0 +1,36 @@
1
+ <script lang="ts">
2
+ import type { BackgroundImage } from '../../../types.js';
3
+
4
+ interface Props {
5
+ backgroundImage: BackgroundImage;
6
+ thumbScale?: number;
7
+ }
8
+
9
+ let { backgroundImage, thumbScale = 1 }: Props = $props();
10
+
11
+ let scale = $derived(backgroundImage.scale * thumbScale);
12
+
13
+ let flipTransform = $derived(
14
+ backgroundImage.flipX || backgroundImage.flipY
15
+ ? `scale(${backgroundImage.flipX ? -1 : 1}, ${backgroundImage.flipY ? -1 : 1})`
16
+ : '',
17
+ );
18
+ </script>
19
+
20
+ <div class="h-full w-full transition-transform" style:transform={flipTransform}>
21
+ <div
22
+ class="relative"
23
+ style:width="{backgroundImage.image.width * scale}px"
24
+ style:height="{backgroundImage.image.height * scale}px"
25
+ style:transform={`translate(${backgroundImage.offsetX * scale}px, ${backgroundImage.offsetY * scale}px) rotate(${backgroundImage.imageRotate}deg)`}
26
+ style:opacity={backgroundImage.opacity}
27
+ >
28
+ <img
29
+ src={backgroundImage.image.src}
30
+ alt=""
31
+ crossorigin="anonymous"
32
+ class="pointer-events-none absolute h-full w-full object-fill"
33
+ draggable={false}
34
+ />
35
+ </div>
36
+ </div>
@@ -1,15 +1,15 @@
1
1
  <script lang="ts">
2
2
  import { Separator } from '../../../../ui/separator/index.js';
3
3
  import { Button } from '../../../../ui/button/index.js';
4
- import { getPresentationEditorContext } from '../../../presentation-editor.svelte.js';
4
+ import { getEditorContext } from '../../../editor.svelte.js';
5
5
  import { ColorIndicator } from '../../../color-indicator/index.js';
6
6
  import { ColorPickerAlphaGrid } from '../../../../ui/color-picker/index.js';
7
7
  import { FlipButton } from '../../buttons/flip-button/index.js';
8
8
  import { OpacityButton } from '../../buttons/opacity-button/index.js';
9
9
 
10
- const editor = getPresentationEditorContext();
10
+ const editor = getEditorContext();
11
11
 
12
- let backgroundColor = $derived(editor.activeSlide.backgroundColor || '#ffffff');
12
+ let backgroundColor = $derived(editor.activePage.backgroundColor || '#ffffff');
13
13
  </script>
14
14
 
15
15
  <Separator orientation="vertical" />
@@ -27,9 +27,9 @@
27
27
  </ColorPickerAlphaGrid>
28
28
  </div>
29
29
  </Button>
30
- {#if editor.activeSlide.backgroundImage}
30
+ {#if editor.activePage.backgroundImage}
31
31
  <Separator orientation="vertical" />
32
- <FlipButton bind:layers={editor.activeSlide.backgroundImage} />
32
+ <FlipButton bind:layers={editor.activePage.backgroundImage} />
33
33
  <Separator orientation="vertical" />
34
- <OpacityButton bind:layers={editor.activeSlide.backgroundImage} />
34
+ <OpacityButton bind:layers={editor.activePage.backgroundImage} />
35
35
  {/if}
@@ -0,0 +1,21 @@
1
+ <script lang="ts">
2
+ import type { Page } from '../../../types.js';
3
+ import { ColorIndicator } from '../../../color-indicator/index.js';
4
+ import BackgroundContentImage from './background-content-image.svelte';
5
+
6
+ interface Props {
7
+ page: Page;
8
+ thumbScale?: number;
9
+ }
10
+
11
+ let { page, thumbScale }: Props = $props();
12
+
13
+ let backgroundColor = $derived(page.backgroundColor || '#ffffff');
14
+ </script>
15
+
16
+ <div class="h-full w-full">
17
+ <ColorIndicator color={backgroundColor} />
18
+ {#if page.backgroundImage}
19
+ <BackgroundContentImage backgroundImage={page.backgroundImage} {thumbScale} />
20
+ {/if}
21
+ </div>
@@ -1,6 +1,6 @@
1
- import type { Slide } from '../../../types.js';
1
+ import type { Page } from '../../../types.js';
2
2
  interface Props {
3
- slide: Slide;
3
+ page: Page;
4
4
  thumbScale?: number;
5
5
  }
6
6
  declare const BackgroundLayerContent: import("svelte").Component<Props, {}, "">;
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  import * as ContextMenu from '../../../../ui/context-menu/index.js';
3
- import { getPresentationEditorContext } from '../../../presentation-editor.svelte.js';
3
+ import { getEditorContext } from '../../../editor.svelte.js';
4
4
  import BackgroundMenuContent from '../../../menu/background-menu-content.svelte';
5
5
  import { BackgroundLayerContent } from './index.js';
6
6
  import { calculateImageCover } from '../../utils.js';
@@ -13,7 +13,7 @@
13
13
 
14
14
  let ref: HTMLDivElement;
15
15
 
16
- const editor = getPresentationEditorContext();
16
+ const editor = getEditorContext();
17
17
 
18
18
  const onMouseDown = (e: MouseEvent) => {
19
19
  console.log('mousedown', 'background', e);
@@ -44,8 +44,8 @@
44
44
  hidden: false,
45
45
  customScale: scale,
46
46
  sticky: false,
47
- x: rect.left + editor.dragged.offsetX - offsetX * scale,
48
- y: rect.top + editor.dragged.offsetY - offsetY * scale,
47
+ x: rect.left + editor.dragged.offsetX + offsetX * scale,
48
+ y: rect.top + editor.dragged.offsetY + offsetY * scale,
49
49
  };
50
50
  } else {
51
51
  editor.dragged = { ...editor.dragged, inside: true };
@@ -75,7 +75,7 @@
75
75
  ...calculateImageCover(dragged.image, { width: editor.width, height: editor.height }),
76
76
  image: dragged.image,
77
77
  });
78
- editor.addLayers(editor.activeSlide.id, layer, 0);
78
+ editor.addLayers(editor.activePage.id, layer, 0);
79
79
  } else {
80
80
  const rect = ref.getBoundingClientRect();
81
81
  const x = (e.clientX - rect.left - dragged.offsetX) / editor.zoom;
@@ -100,12 +100,10 @@
100
100
  ondragover={onDragOver}
101
101
  ondrop={onDrop}
102
102
  >
103
- <div class="h-full w-full">
104
- <BackgroundLayerContent slide={editor.activeSlide} />
105
- </div>
103
+ <BackgroundLayerContent page={editor.activePage} />
106
104
  </div>
107
105
  </ContextMenu.Trigger>
108
106
  <ContextMenu.Content class="w-80">
109
- <BackgroundMenuContent {editor} slide={editor.activeSlide} />
107
+ <BackgroundMenuContent {editor} page={editor.activePage} />
110
108
  </ContextMenu.Content>
111
109
  </ContextMenu.Root>
@@ -0,0 +1,44 @@
1
+ <script lang="ts">
2
+ import { getEditorContext } from '../../../editor.svelte.js';
3
+ import type { GroupLayer, SimpleLayer } from '../../../types.js';
4
+
5
+ interface Props {
6
+ groupLayer: GroupLayer;
7
+ layer: SimpleLayer;
8
+ children?: import('svelte').Snippet;
9
+ }
10
+
11
+ let { groupLayer, layer = $bindable(), children }: Props = $props();
12
+
13
+ const editor = getEditorContext();
14
+
15
+ const onClick = (e: MouseEvent) => {
16
+ console.log('click', layer.id, e);
17
+ if (editor.activeAction) return;
18
+ if (e.shiftKey) return;
19
+ e.stopPropagation();
20
+ editor.setActiveGroupChild(layer.id);
21
+ };
22
+
23
+ const onMouseDown = (e: MouseEvent) => {
24
+ console.log('mousedown', layer.id, e);
25
+ if (editor.activeAction) return;
26
+ if (editor.activeLayers.find((l) => l.id === groupLayer.id)) return;
27
+ if (e.shiftKey) return;
28
+ editor.setActiveGroupChild(layer.id);
29
+ };
30
+ </script>
31
+
32
+ <!-- svelte-ignore a11y_click_events_have_key_events -->
33
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
34
+ <div
35
+ class="absolute select-none"
36
+ style:width="{layer.width * layer.scale}px"
37
+ style:height="{layer.height * layer.scale}px"
38
+ style:transform={`translate(${layer.x}px, ${layer.y}px) rotate(${layer.rotate}deg)`}
39
+ style:opacity={layer.opacity}
40
+ onclick={onClick}
41
+ onmousedown={onMouseDown}
42
+ >
43
+ {@render children?.()}
44
+ </div>
@@ -0,0 +1,9 @@
1
+ import type { GroupLayer, SimpleLayer } from '../../../types.js';
2
+ interface Props {
3
+ groupLayer: GroupLayer;
4
+ layer: SimpleLayer;
5
+ children?: import('svelte').Snippet;
6
+ }
7
+ declare const GroupChildWrapper: import("svelte").Component<Props, {}, "layer">;
8
+ type GroupChildWrapper = ReturnType<typeof GroupChildWrapper>;
9
+ export default GroupChildWrapper;
@@ -0,0 +1,45 @@
1
+ <script lang="ts">
2
+ import type { Page, GroupLayer } from '../../../types.js';
3
+ import { TextLayerContent } from '../text/index.js';
4
+ import { ImageLayerContent } from '../image/index.js';
5
+
6
+ interface Props {
7
+ page: Page;
8
+ layer: GroupLayer;
9
+ thumbScale?: number;
10
+ }
11
+
12
+ let { page, layer: groupLayer, thumbScale = 1 }: Props = $props();
13
+
14
+ let children = $derived(
15
+ page.layers
16
+ .filter((l) => l.type !== 'group')
17
+ .filter((l) => l.groupId === groupLayer.id)
18
+ .toSorted((a, b) => a.sortOrder - b.sortOrder),
19
+ );
20
+
21
+ let scale = $derived(groupLayer.scale * thumbScale);
22
+ </script>
23
+
24
+ <div
25
+ class="origin-top-left"
26
+ style:width="{groupLayer.width / groupLayer.scale}px"
27
+ style:height="{groupLayer.height / groupLayer.scale}px"
28
+ style:transform={scale !== 1 ? `scale(${scale})` : null}
29
+ >
30
+ {#each children as layer (layer.id)}
31
+ <div
32
+ class="absolute select-none"
33
+ style:width="{layer.width * layer.scale}px"
34
+ style:height="{layer.height * layer.scale}px"
35
+ style:transform={`translate(${layer.x}px, ${layer.y}px) rotate(${layer.rotate}deg)`}
36
+ style:opacity={layer.opacity}
37
+ >
38
+ {#if layer.type === 'text'}
39
+ <TextLayerContent {layer} />
40
+ {:else if layer.type === 'image'}
41
+ <ImageLayerContent {layer} />
42
+ {/if}
43
+ </div>
44
+ {/each}
45
+ </div>
@@ -0,0 +1,9 @@
1
+ import type { Page, GroupLayer } from '../../../types.js';
2
+ interface Props {
3
+ page: Page;
4
+ layer: GroupLayer;
5
+ thumbScale?: number;
6
+ }
7
+ declare const GroupLayerContent: import("svelte").Component<Props, {}, "">;
8
+ type GroupLayerContent = ReturnType<typeof GroupLayerContent>;
9
+ export default GroupLayerContent;
@@ -0,0 +1,33 @@
1
+ <script lang="ts">
2
+ import { getEditorContext } from '../../../editor.svelte.js';
3
+ import type { Page, GroupLayer } from '../../../types.js';
4
+ import GroupChildWrapper from './group-child-wrapper.svelte';
5
+ import { ImageLayer } from '../image/index.js';
6
+ import { TextLayer } from '../text/index.js';
7
+
8
+ interface Props {
9
+ page: Page;
10
+ layer: GroupLayer;
11
+ }
12
+
13
+ let { page, layer: groupLayer }: Props = $props();
14
+
15
+ const editor = getEditorContext();
16
+ </script>
17
+
18
+ <div
19
+ class="origin-top-left"
20
+ style:width="{groupLayer.width / groupLayer.scale}px"
21
+ style:height="{groupLayer.height / groupLayer.scale}px"
22
+ style:transform={groupLayer.scale !== 1 ? `scale(${groupLayer.scale})` : null}
23
+ >
24
+ {#each editor.findGroupChildren(page, groupLayer.id) as layer (layer.id)}
25
+ <GroupChildWrapper {groupLayer} {layer}>
26
+ {#if layer.type === 'text'}
27
+ <TextLayer {layer} />
28
+ {:else if layer.type === 'image'}
29
+ <ImageLayer {layer} />
30
+ {/if}
31
+ </GroupChildWrapper>
32
+ {/each}
33
+ </div>
@@ -0,0 +1,8 @@
1
+ import type { Page, GroupLayer } from '../../../types.js';
2
+ interface Props {
3
+ page: Page;
4
+ layer: GroupLayer;
5
+ }
6
+ declare const GroupLayer: import("svelte").Component<Props, {}, "">;
7
+ type GroupLayer = ReturnType<typeof GroupLayer>;
8
+ export default GroupLayer;
@@ -0,0 +1,3 @@
1
+ import Root from './group-layer.svelte';
2
+ import GroupLayerContent from './group-layer-content.svelte';
3
+ export { Root, Root as GroupLayer, GroupLayerContent };
@@ -0,0 +1,3 @@
1
+ import Root from './group-layer.svelte';
2
+ import GroupLayerContent from './group-layer-content.svelte';
3
+ export { Root, Root as GroupLayer, GroupLayerContent };
@@ -0,0 +1,120 @@
1
+ <script lang="ts">
2
+ import RotateIcon from '@lucide/svelte/icons/refresh-cw';
3
+ import { getEditorContext } from '../../../../../editor.svelte.js';
4
+ import {
5
+ calculateImageLayerPropsForImageRotate,
6
+ degToRad,
7
+ rotatePoint,
8
+ } from '../../../../utils.js';
9
+ import type { ImageLayer } from '../../../../../types.js';
10
+
11
+ interface Props {
12
+ pageRef: HTMLDivElement;
13
+ layer: ImageLayer;
14
+ }
15
+
16
+ const { pageRef, layer }: Props = $props();
17
+
18
+ const type = 'rotate';
19
+
20
+ const editor = getEditorContext();
21
+
22
+ let initial: {
23
+ clientX: number;
24
+ clientY: number;
25
+ layer: ImageLayer;
26
+ } | null = null;
27
+
28
+ /**
29
+ * Normalize the rotation angle to be between -180 and 180 degrees.
30
+ *
31
+ * @param rotate - The rotation angle in degrees.
32
+ * @returns The normalized rotation angle.
33
+ */
34
+ const normalizeRotation = (rotate: number) => {
35
+ // Adjust the rotation to be within the range of 0 to 360 degrees
36
+ const adjustedRotate = (rotate + 360) % 360;
37
+ // If the adjusted rotation is greater than or equal to 180, subtract 360 to bring it within the range of -180 to 180
38
+ return adjustedRotate >= 180 ? adjustedRotate - 360 : adjustedRotate;
39
+ };
40
+
41
+ const onMouseDown = (e: MouseEvent) => {
42
+ if (e.button !== 0) return;
43
+ e.preventDefault();
44
+ e.stopPropagation();
45
+ console.log(type, 'mousedown', e);
46
+
47
+ initial = {
48
+ clientX: e.clientX,
49
+ clientY: e.clientY,
50
+ layer: $state.snapshot(layer),
51
+ };
52
+ addEventListener('mousemove', onMouseMove);
53
+ addEventListener('mouseup', onMouseUp);
54
+ };
55
+
56
+ const onMouseUp = (e: MouseEvent) => {
57
+ console.log(type, 'mouseup', e);
58
+ removeEventListener('mousemove', onMouseMove);
59
+ removeEventListener('mouseup', onMouseUp);
60
+ initial = null;
61
+ };
62
+
63
+ const onMouseMove = (e: MouseEvent) => {
64
+ if (!initial) return;
65
+
66
+ const pageRect = pageRef.getBoundingClientRect();
67
+ if (!pageRect) return;
68
+
69
+ const { x: pageX, y: pageY } = pageRect;
70
+
71
+ const { x, y, width, height, scale, rotate, image, offsetX, offsetY } = initial.layer;
72
+
73
+ const relativeImageCenter = rotatePoint(degToRad(rotate), {
74
+ x: image.width / 2 + offsetX - width / 2,
75
+ y: image.height / 2 + offsetY - height / 2,
76
+ });
77
+
78
+ // Calculate the center of the layer image
79
+ const clientX = pageX + (x + (width / 2 + relativeImageCenter.x) * scale) * editor.zoom;
80
+ const clientY = pageY + (y + (height / 2 + relativeImageCenter.y) * scale) * editor.zoom;
81
+
82
+ // Calculate the current angle based on the current mouse position relative to the center of the layer
83
+ const currentAngle = Math.atan2(
84
+ (e.clientY - clientY) / editor.zoom,
85
+ (e.clientX - clientX) / editor.zoom,
86
+ );
87
+
88
+ // Convert the current angle from radians to degrees and adjust to make 0 degrees the initial position
89
+ let currentRotate = (currentAngle * 180) / Math.PI - 90 - rotate;
90
+
91
+ // Add snapping
92
+ const snapThreshold = 1;
93
+ const remainder = Math.abs(currentRotate) % 45;
94
+ if (remainder < snapThreshold || remainder > 45 - snapThreshold) {
95
+ currentRotate = Math.round(currentRotate / 45) * 45;
96
+ }
97
+
98
+ currentRotate = normalizeRotation(currentRotate);
99
+
100
+ const props = calculateImageLayerPropsForImageRotate(initial.layer, currentRotate);
101
+ Object.assign(layer, props);
102
+ };
103
+ </script>
104
+
105
+ <!-- <div class="absolute top-full flex p-6"> -->
106
+ <!-- <div class="group pointer-events-none relative m-1 flex h-8 w-8 items-center justify-center"> -->
107
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
108
+ <div
109
+ class="group pointer-events-none absolute -bottom-9 left-1/2 -m-2 h-6 w-6 cursor-grab rounded-full bg-white"
110
+ onmousedown={onMouseDown}
111
+ >
112
+ <div
113
+ class="group-hover:bg-primary group-active:bg-primary group-hover:text-primary-foreground group-active:text-primary-foreground flex h-6 w-6 items-center justify-center rounded-full bg-white transition-colors after:pointer-events-auto after:absolute after:inset-0 after:rounded-full"
114
+ style:box-shadow="0 0 4px 1px rgba(57,76,96,.15), 0 0 0 1px rgba(43,59,74,.3)"
115
+ >
116
+ <RotateIcon class="h-4 w-4" />
117
+ </div>
118
+ </div>
119
+ <!-- </div> -->
120
+ <!-- </div> -->
@@ -0,0 +1,8 @@
1
+ import type { ImageLayer } from '../../../../../types.js';
2
+ interface Props {
3
+ pageRef: HTMLDivElement;
4
+ layer: ImageLayer;
5
+ }
6
+ declare const ImageRotateControl: import("svelte").Component<Props, {}, "">;
7
+ type ImageRotateControl = ReturnType<typeof ImageRotateControl>;
8
+ export default ImageRotateControl;
@@ -0,0 +1,2 @@
1
+ import Root from './image-rotate-control.svelte';
2
+ export { Root, Root as ImageRotateControl, };