@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,29 +1,29 @@
1
1
  <script lang="ts">
2
- import CopyIcon from 'lucide-svelte/icons/copy';
3
- import PasteIcon from 'lucide-svelte/icons/clipboard';
4
- import DuplicateIcon from 'lucide-svelte/icons/copy-plus';
5
- import AddIcon from 'lucide-svelte/icons/file-plus-2';
6
- import TrashIcon from 'lucide-svelte/icons/trash-2';
7
- import LockIcon from 'lucide-svelte/icons/lock-keyhole';
8
- import UnlockIcon from 'lucide-svelte/icons/lock-keyhole-open';
2
+ import CopyIcon from '@lucide/svelte/icons/copy';
3
+ import PasteIcon from '@lucide/svelte/icons/clipboard';
4
+ import DuplicateIcon from '@lucide/svelte/icons/copy-plus';
5
+ import AddIcon from '@lucide/svelte/icons/file-plus-2';
6
+ import TrashIcon from '@lucide/svelte/icons/trash-2';
7
+ import LockIcon from '@lucide/svelte/icons/lock-keyhole';
8
+ import UnlockIcon from '@lucide/svelte/icons/lock-keyhole-open';
9
9
  import * as DropdownMenu from '../../ui/dropdown-menu/index.js';
10
- import type { PresentationEditor } from '../presentation-editor.svelte.js';
11
- import type { Slide } from '../types.js';
10
+ import type { Editor } from '../editor.svelte.js';
11
+ import type { Page } from '../types.js';
12
12
  import { checkIfMac } from '../../../utils.js';
13
13
 
14
14
  interface Props {
15
- editor: PresentationEditor;
16
- slide: Slide;
15
+ editor: Editor;
16
+ page: Page;
17
17
  }
18
18
 
19
- let { editor, slide }: Props = $props();
19
+ let { editor, page }: Props = $props();
20
20
 
21
- const locked = $derived(slide.locked);
21
+ const locked = $derived(page.locked);
22
22
 
23
23
  const isMac = checkIfMac();
24
24
  </script>
25
25
 
26
- <DropdownMenu.Item onclick={() => editor.copySlide(slide.id)}>
26
+ <DropdownMenu.Item onclick={() => editor.copyPage(page.id)}>
27
27
  <CopyIcon />
28
28
  Copy
29
29
  <DropdownMenu.Shortcut>{isMac ? '⌘C' : 'Ctrl+C'}</DropdownMenu.Shortcut>
@@ -35,19 +35,19 @@
35
35
  <DropdownMenu.Shortcut>{isMac ? '⌘V' : 'Ctrl+V'}</DropdownMenu.Shortcut>
36
36
  </DropdownMenu.Item>
37
37
 
38
- <DropdownMenu.Item onclick={() => editor.addSlide()}>
38
+ <DropdownMenu.Item onclick={() => editor.addPage()}>
39
39
  <AddIcon />
40
40
  Add page
41
41
  <DropdownMenu.Shortcut>{isMac ? '⌘⏎' : 'Ctrl+⏎'}</DropdownMenu.Shortcut>
42
42
  </DropdownMenu.Item>
43
43
 
44
- <DropdownMenu.Item onclick={() => editor.duplicateSlide(slide)}>
44
+ <DropdownMenu.Item onclick={() => editor.duplicatePage(page)}>
45
45
  <DuplicateIcon />
46
46
  Duplicate page
47
47
  <DropdownMenu.Shortcut>{isMac ? '⌘D' : 'Ctrl+D'}</DropdownMenu.Shortcut>
48
48
  </DropdownMenu.Item>
49
49
 
50
- <DropdownMenu.Item onclick={() => editor.removeSlide(slide.id)} disabled={locked}>
50
+ <DropdownMenu.Item onclick={() => editor.removePage(page.id)} disabled={locked}>
51
51
  <TrashIcon />
52
52
  Delete page
53
53
  <DropdownMenu.Shortcut>DELETE</DropdownMenu.Shortcut>
@@ -55,8 +55,8 @@
55
55
 
56
56
  <DropdownMenu.Separator />
57
57
 
58
- <DropdownMenu.Item onclick={() => editor.toggleSlideLocked(slide.id)}>
59
- {#if slide.locked}
58
+ <DropdownMenu.Item onclick={() => editor.togglePageLocked(page.id)}>
59
+ {#if page.locked}
60
60
  <UnlockIcon />
61
61
  Unlock page
62
62
  {:else}
@@ -0,0 +1,9 @@
1
+ import type { Editor } from '../editor.svelte.js';
2
+ import type { Page } from '../types.js';
3
+ interface Props {
4
+ editor: Editor;
5
+ page: Page;
6
+ }
7
+ declare const PageMenuContent: import("svelte").Component<Props, {}, "">;
8
+ type PageMenuContent = ReturnType<typeof PageMenuContent>;
9
+ export default PageMenuContent;
@@ -5,13 +5,14 @@
5
5
  ActiveLayerBorder,
6
6
  LayerWrapper,
7
7
  BackgroundLayer,
8
- HtmlLayer,
8
+ TextLayer,
9
9
  ImageLayer,
10
10
  ActiveBackgroundBorder,
11
+ GroupLayer,
11
12
  } from './layers/index.js';
12
13
  import type { ActiveLayerGuide } from './types.js';
13
- import { getPresentationEditorContext } from './presentation-editor.svelte.js';
14
- import SlideInner from './slide-inner.svelte';
14
+ import { getEditorContext } from './editor.svelte.js';
15
+ import PageInner from './page-inner.svelte';
15
16
  import ActiveLayers from './active-layers.svelte';
16
17
  import SnappingGuides from './snapping-guides.svelte';
17
18
 
@@ -22,7 +23,9 @@
22
23
 
23
24
  let { viewportRef = $bindable(null), wrapperRef = $bindable(null) }: Props = $props();
24
25
 
25
- const editor = getPresentationEditorContext();
26
+ const editor = getEditorContext();
27
+
28
+ let pageRef: HTMLDivElement | null = $state(null);
26
29
 
27
30
  let activeLayerGuides: ActiveLayerGuide[] = $state([]);
28
31
 
@@ -37,7 +40,7 @@
37
40
  <div class="flex min-h-full flex-1">
38
41
  <div class="box-border flex w-full shrink-0 items-center justify-center p-0">
39
42
  <div bind:this={wrapperRef} class="translate-x-0 translate-y-0 p-4 transition-transform">
40
- <div class="relative flex flex-col items-center" data-slide-container>
43
+ <div bind:this={pageRef} class="relative flex flex-col items-center">
41
44
  <div
42
45
  class="m-0 overflow-hidden shadow-xl"
43
46
  style:width="{scaledWidth}px"
@@ -55,17 +58,15 @@
55
58
  style:height="{editor.height}px"
56
59
  >
57
60
  <BackgroundLayer bind:hoveredLayerId />
58
- <SlideInner />
59
- {#each editor.activeSlide.layers as layer, i (layer.id)}
60
- <LayerWrapper
61
- bind:layer={editor.activeSlide.layers[i]}
62
- bind:hoveredLayerId
63
- bind:activeLayerGuides
64
- >
65
- {#if editor.activeSlide.layers[i].type === 'html'}
66
- <HtmlLayer bind:layer={editor.activeSlide.layers[i]} />
67
- {:else if editor.activeSlide.layers[i].type === 'image'}
68
- <ImageLayer bind:layer={editor.activeSlide.layers[i]} />
61
+ <PageInner />
62
+ {#each editor.rootLayers as layer (layer.id)}
63
+ <LayerWrapper {layer} bind:hoveredLayerId bind:activeLayerGuides>
64
+ {#if layer.type === 'text'}
65
+ <TextLayer {layer} />
66
+ {:else if layer.type === 'image'}
67
+ <ImageLayer {layer} />
68
+ {:else if layer.type === 'group'}
69
+ <GroupLayer page={editor.activePage} {layer} />
69
70
  {/if}
70
71
  </LayerWrapper>
71
72
  {/each}
@@ -77,18 +78,22 @@
77
78
  style:width="{scaledWidth}px"
78
79
  style:height="{scaledHeight}px"
79
80
  >
80
- {#if hoveredLayerId === 'background'}
81
- {#if !editor.activeBackground}
82
- <ActiveBackgroundBorder />
83
- {/if}
84
- {:else if hoveredLayerId && !editor.activeLayerIds.has(hoveredLayerId)}
85
- {@const layer = editor.activeSlide.layers.find(({ id }) => id === hoveredLayerId)}
86
- {#if layer}
87
- <ActiveLayerBorder {layer} />
81
+ {#if hoveredLayerId}
82
+ {#if hoveredLayerId === 'background'}
83
+ {#if editor.activeSelection.type !== 'background'}
84
+ <ActiveBackgroundBorder />
85
+ {/if}
86
+ {:else if !editor.activeLayers.find((l) => l.id === hoveredLayerId)}
87
+ {@const layer = editor.rootLayers.find(({ id }) => id === hoveredLayerId)}
88
+ {#if layer}
89
+ <ActiveLayerBorder {layer} />
90
+ {/if}
88
91
  {/if}
89
92
  {/if}
90
93
 
91
- <ActiveLayers />
94
+ {#if viewportRef && pageRef}
95
+ <ActiveLayers {viewportRef} {wrapperRef} {pageRef} />
96
+ {/if}
92
97
 
93
98
  <SnappingGuides zoom={editor.zoom} guides={activeLayerGuides} />
94
99
  </div>
@@ -0,0 +1,7 @@
1
+ interface Props {
2
+ viewportRef: HTMLDivElement | null;
3
+ wrapperRef: HTMLDivElement | null;
4
+ }
5
+ declare const PageEditor: import("svelte").Component<Props, {}, "viewportRef" | "wrapperRef">;
6
+ type PageEditor = ReturnType<typeof PageEditor>;
7
+ export default PageEditor;
@@ -1,13 +1,13 @@
1
1
  <script lang="ts">
2
2
  import { cn } from '../../utils.js';
3
- import { getPresentationEditorContext } from './presentation-editor.svelte.js';
3
+ import { getEditorContext } from './editor.svelte.js';
4
4
 
5
- const editor = getPresentationEditorContext();
5
+ const editor = getEditorContext();
6
6
 
7
7
  const inset = Math.round(Math.min(editor.width, editor.height) / 10);
8
8
 
9
9
  const onDragEnter = (e: DragEvent) => {
10
- console.log('dragenter slide inner', e);
10
+ console.log('dragenter page inner', e);
11
11
 
12
12
  if (editor.dragged) {
13
13
  e.preventDefault();
@@ -23,7 +23,7 @@
23
23
  };
24
24
 
25
25
  const onDragOver = (e: DragEvent) => {
26
- // console.log('dragover slide inner', e);
26
+ // console.log('dragover page inner', e);
27
27
  if (editor.dragged) {
28
28
  e.preventDefault();
29
29
  e.stopPropagation();
@@ -31,7 +31,7 @@
31
31
  };
32
32
 
33
33
  const onDrop = (e: DragEvent) => {
34
- console.log('drop slide inner', e);
34
+ console.log('drop page inner', e);
35
35
 
36
36
  const { dragged } = editor;
37
37
  if (dragged) {
@@ -11,8 +11,8 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
11
11
  };
12
12
  z_$$bindings?: Bindings;
13
13
  }
14
- declare const Sidebar: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
14
+ declare const PageInner: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
15
  [evt: string]: CustomEvent<any>;
16
16
  }, {}, {}, string>;
17
- type Sidebar = InstanceType<typeof Sidebar>;
18
- export default Sidebar;
17
+ type PageInner = InstanceType<typeof PageInner>;
18
+ export default PageInner;
@@ -0,0 +1,69 @@
1
+ <script lang="ts">
2
+ import { BROWSER } from 'esm-env';
3
+ import { onMount } from 'svelte';
4
+ import type { PageOptions } from './types.js';
5
+ import { extractNodeFonts } from './layers/types/text/editor/utils.js';
6
+ import { defaultFonts } from './fonts.js';
7
+ import PagePreview from './pages-navigation/page-preview.svelte';
8
+
9
+ const {
10
+ page,
11
+ thumbScale = 1,
12
+ fonts = defaultFonts,
13
+ loadFont = async (family: string) => {
14
+ const font = fonts[family];
15
+ if (!font) return;
16
+ const WebFont = await import('webfontloader');
17
+ return new Promise((resolve, reject) => {
18
+ WebFont.load({
19
+ [font.type]: { families: [family] },
20
+ active: () => resolve(),
21
+ inactive: reject,
22
+ });
23
+ });
24
+ },
25
+ class: className,
26
+ ...restProps
27
+ }: PageOptions = $props();
28
+
29
+ if (BROWSER) {
30
+ const fontFamilies = page.layers
31
+ .filter((layer) => layer.type === 'text')
32
+ .flatMap((layer) => extractNodeFonts(layer.html));
33
+ Promise.all(fontFamilies.map(loadFont));
34
+ }
35
+
36
+ let element: HTMLDivElement | null = $state(null);
37
+
38
+ let width = 1920 * thumbScale;
39
+ let height = 1080 * thumbScale;
40
+
41
+ let scale = $state(1);
42
+
43
+ onMount(() => {
44
+ const observer = new ResizeObserver((entries) => {
45
+ for (const entry of entries) {
46
+ const scaleX = entry.contentRect.width / width;
47
+ const scaleY = entry.contentRect.height / height;
48
+ scale = Math.min(scaleX, scaleY); // preserve aspect ratio
49
+ }
50
+ });
51
+
52
+ if (element) observer.observe(element);
53
+
54
+ return () => observer.disconnect();
55
+ });
56
+ </script>
57
+
58
+ <div class={className} {...restProps}>
59
+ <div bind:this={element} class="h-full w-full">
60
+ <div
61
+ class="relative origin-top-left"
62
+ style:width="{width}px"
63
+ style:height="{height}px"
64
+ style:transform="scale({scale})"
65
+ >
66
+ <PagePreview {page} {thumbScale} />
67
+ </div>
68
+ </div>
69
+ </div>
@@ -0,0 +1,4 @@
1
+ import type { PageOptions } from './types.js';
2
+ declare const Page: import("svelte").Component<PageOptions, {}, "">;
3
+ type Page = ReturnType<typeof Page>;
4
+ export default Page;
@@ -0,0 +1,36 @@
1
+ <script lang="ts">
2
+ import {
3
+ BackgroundLayerContent,
4
+ LayerThumbWrapper,
5
+ TextLayerContent,
6
+ ImageLayerContent,
7
+ GroupLayerContent,
8
+ } from '../layers/index.js';
9
+ import type { Page } from '../types.js';
10
+
11
+ interface Props {
12
+ page: Page;
13
+ thumbScale: number;
14
+ }
15
+
16
+ let { page, thumbScale }: Props = $props();
17
+
18
+ let rootLayers = $derived(page.layers.filter((l) => l.type === 'group' || !l.groupId));
19
+ </script>
20
+
21
+ <div class="absolute inset-0 overflow-hidden">
22
+ <BackgroundLayerContent {page} {thumbScale} />
23
+ </div>
24
+ {#each rootLayers as layer (layer.id)}
25
+ <LayerThumbWrapper {layer} thumb={thumbScale}>
26
+ {#snippet children({ thumbScale })}
27
+ {#if layer.type === 'text'}
28
+ <TextLayerContent {layer} {thumbScale} />
29
+ {:else if layer.type === 'image'}
30
+ <ImageLayerContent {layer} {thumbScale} />
31
+ {:else if layer.type === 'group'}
32
+ <GroupLayerContent {page} {layer} {thumbScale} />
33
+ {/if}
34
+ {/snippet}
35
+ </LayerThumbWrapper>
36
+ {/each}
@@ -0,0 +1,8 @@
1
+ import type { Page } from '../types.js';
2
+ interface Props {
3
+ page: Page;
4
+ thumbScale: number;
5
+ }
6
+ declare const PagePreview: import("svelte").Component<Props, {}, "">;
7
+ type PagePreview = ReturnType<typeof PagePreview>;
8
+ export default PagePreview;
@@ -1,30 +1,25 @@
1
1
  <script lang="ts">
2
2
  import { dragHandle } from 'svelte-dnd-action';
3
- import PlusIcon from 'lucide-svelte/icons/plus';
4
- import EllipsisIcon from 'lucide-svelte/icons/ellipsis';
5
- import IconLocked from 'lucide-svelte/icons/lock-keyhole';
3
+ import PlusIcon from '@lucide/svelte/icons/plus';
4
+ import EllipsisIcon from '@lucide/svelte/icons/ellipsis';
5
+ import IconLocked from '@lucide/svelte/icons/lock-keyhole';
6
6
  import { Button, buttonVariants } from '../../ui/button/index.js';
7
7
  import * as ContextMenu from '../../ui/context-menu/index.js';
8
8
  import * as DropdownMenu from '../../ui/dropdown-menu/index.js';
9
- import {
10
- BackgroundLayerContent,
11
- HtmlLayerContent,
12
- ImageLayerContent,
13
- LayerThumbWrapper,
14
- } from '../layers/index.js';
15
9
  import { cn } from '../../../utils.js';
16
- import type { PresentationEditor } from '../presentation-editor.svelte.js';
17
- import type { Slide } from '../types.js';
18
- import SlidePreviewMenuContent from '../menu/slide-menu-content.svelte';
10
+ import type { Editor } from '../editor.svelte.js';
11
+ import type { Page } from '../types.js';
12
+ import PagePreviewMenuContent from '../menu/page-menu-content.svelte';
13
+ import PagePreview from './page-preview.svelte';
19
14
 
20
15
  interface Props {
21
- editor: PresentationEditor;
22
- slide: Slide;
16
+ editor: Editor;
17
+ page: Page;
23
18
  index: number;
24
19
  thumbScale: number;
25
20
  }
26
21
 
27
- let { editor, slide, index, thumbScale }: Props = $props();
22
+ let { editor, page, index, thumbScale }: Props = $props();
28
23
 
29
24
  let menuOpen = $state(false);
30
25
  </script>
@@ -43,7 +38,7 @@
43
38
  variant="outline"
44
39
  size="icon-xs"
45
40
  class="my-1 h-6 w-6 rounded-full"
46
- onclick={() => editor.addSlide({ index })}
41
+ onclick={() => editor.addPage({ index })}
47
42
  >
48
43
  <PlusIcon class="h-4 w-4" />
49
44
  </Button>
@@ -52,7 +47,7 @@
52
47
  </div>
53
48
  <div class="group relative mx-2 my-1 transition-transform">
54
49
  <div use:dragHandle role="none">
55
- <button class="block" onclick={() => editor.setActiveSlide(slide.id)}>
50
+ <button class="block" onclick={() => editor.setActivePage(page.id)}>
56
51
  <ContextMenu.Root>
57
52
  <ContextMenu.Trigger>
58
53
  <div
@@ -60,40 +55,25 @@
60
55
  'relative',
61
56
  {
62
57
  'after:absolute after:inset-0 after:rounded-xl after:border-2':
63
- editor.activeSlide.id === slide.id,
58
+ editor.activePage.id === page.id,
64
59
  },
65
- editor.slideSelected ? 'after:border-primary' : 'after:border-gray-400',
60
+ editor.pageSelected ? 'after:border-primary' : 'after:border-gray-400',
66
61
  )}
67
62
  >
68
63
  <div
69
64
  class="relative overflow-hidden rounded-lg bg-white"
70
- style:clip-path={editor.activeSlide.id === slide.id
65
+ style:clip-path={editor.activePage.id === page.id
71
66
  ? 'inset(5px round 8px)'
72
67
  : 'inset(0px round 10px)'}
73
68
  style:width="{editor.width * thumbScale}px"
74
69
  style:height="{editor.height * thumbScale}px"
75
70
  >
76
- <div class="absolute inset-0 overflow-hidden">
77
- <div class="h-full w-full">
78
- <BackgroundLayerContent {slide} {thumbScale} />
79
- </div>
80
- </div>
81
- {#each slide.layers as layer (layer.id)}
82
- <LayerThumbWrapper {layer} thumb={thumbScale}>
83
- {#snippet children({ thumbScale })}
84
- {#if layer.type === 'html'}
85
- <HtmlLayerContent {layer} {thumbScale} />
86
- {:else if layer.type === 'image'}
87
- <ImageLayerContent {layer} {thumbScale} />
88
- {/if}
89
- {/snippet}
90
- </LayerThumbWrapper>
91
- {/each}
71
+ <PagePreview {page} {thumbScale} />
92
72
  </div>
93
73
  </div>
94
74
  </ContextMenu.Trigger>
95
75
  <ContextMenu.Content class="w-72">
96
- <SlidePreviewMenuContent {editor} {slide} />
76
+ <PagePreviewMenuContent {editor} {page} />
97
77
  </ContextMenu.Content>
98
78
  </ContextMenu.Root>
99
79
  </button>
@@ -102,15 +82,15 @@
102
82
  class={cn(
103
83
  'pointer-events-none absolute z-10 flex flex-col-reverse flex-wrap overflow-hidden',
104
84
  )}
105
- style:inset={editor.activeSlide.id === slide.id ? '5px' : '0'}
106
- style:border-radius={editor.activeSlide.id === slide.id ? '8px' : '10px'}
85
+ style:inset={editor.activePage.id === page.id ? '5px' : '0'}
86
+ style:border-radius={editor.activePage.id === page.id ? '8px' : '10px'}
107
87
  >
108
88
  <div
109
89
  class="flex h-8 min-h-5 w-fit max-w-full items-end overflow-hidden rounded-bl-md rounded-br-md"
110
90
  style:background={`radial-gradient(100% 120% at 0% 120%, rgba(255, 255, 255, 0.8) 55%, rgba(0, 0, 0, 0))`}
111
91
  >
112
92
  <div class="relative flex h-5 items-center px-2">
113
- {#if slide.locked}
93
+ {#if page.locked}
114
94
  <IconLocked class="mr-1 size-4" />
115
95
  {/if}
116
96
  <p class="text-xs font-semibold">{index + 1}</p>
@@ -135,7 +115,7 @@
135
115
  </DropdownMenu.Trigger>
136
116
 
137
117
  <DropdownMenu.Content class="w-72" side="top" align="start" trapFocus={false}>
138
- <SlidePreviewMenuContent {editor} {slide} />
118
+ <PagePreviewMenuContent {editor} {page} />
139
119
  </DropdownMenu.Content>
140
120
  </DropdownMenu.Root>
141
121
  </div>
@@ -0,0 +1,11 @@
1
+ import type { Editor } from '../editor.svelte.js';
2
+ import type { Page } from '../types.js';
3
+ interface Props {
4
+ editor: Editor;
5
+ page: Page;
6
+ index: number;
7
+ thumbScale: number;
8
+ }
9
+ declare const PagesNavigationItem: import("svelte").Component<Props, {}, "">;
10
+ type PagesNavigationItem = ReturnType<typeof PagesNavigationItem>;
11
+ export default PagesNavigationItem;
@@ -1,33 +1,38 @@
1
1
  <script lang="ts">
2
2
  import { flip } from 'svelte/animate';
3
- import { dragHandleZone } from 'svelte-dnd-action';
4
- import PlusIcon from 'lucide-svelte/icons/plus';
5
- import { getPresentationEditorContext } from '../presentation-editor.svelte.js';
6
- import SlidePreview from './slide-preview.svelte';
3
+ import { dragHandleZone, type DndEvent } from 'svelte-dnd-action';
4
+ import PlusIcon from '@lucide/svelte/icons/plus';
5
+ import type { Editor } from '../editor.svelte.js';
6
+ import type { Page } from '../types.js';
7
+ import PagesNavigationItem from './pages-navigation-item.svelte';
7
8
 
8
- const editor = getPresentationEditorContext();
9
+ interface Props {
10
+ editor: Editor;
11
+ }
12
+
13
+ const { editor }: Props = $props();
9
14
 
10
15
  const height = 72;
11
16
 
12
17
  let thumbScale = $derived(height / editor.height);
13
18
 
14
19
  const flipDurationMs = 300;
15
- const otherOptions = { flipDurationMs, type: 'slides', dropTargetStyle: {} };
20
+ const otherOptions = { flipDurationMs, type: 'pages', dropTargetStyle: {} };
16
21
 
17
- function handleDndConsider(e) {
18
- editor.slides = e.detail.items;
22
+ function handleDndConsider(e: CustomEvent<DndEvent<Page>>) {
23
+ editor.sortedPages = e.detail.items;
19
24
  }
20
25
 
21
- async function handleDndFinalize(e) {
26
+ async function handleDndFinalize(e: CustomEvent<DndEvent<Page>>) {
22
27
  console.log('handleDndFinalize', e);
23
28
 
24
- editor.slides = e.detail.items;
29
+ editor.sortedPages = e.detail.items;
25
30
 
26
- const index = editor.findSlideIndex(e.detail.info.id);
27
- const item = editor.slides[index];
31
+ const index = e.detail.items.findIndex((item) => item.id === e.detail.info.id);
32
+ const item = e.detail.items[index];
28
33
 
29
- const prev = editor.slides[index - 1];
30
- const next = editor.slides[index + 1];
34
+ const prev = e.detail.items[index - 1];
35
+ const next = e.detail.items[index + 1];
31
36
 
32
37
  // const index = e.detail.items.findIndex((item) => item.id === e.detail.info.id);
33
38
  // const item = e.detail.items[index];
@@ -51,8 +56,8 @@
51
56
 
52
57
  if (redo) {
53
58
  editor.historyPush({
54
- type: 'slide',
55
- slideId: item.id,
59
+ type: 'pageUpdate',
60
+ pageId: item.id,
56
61
  undo: { sortOrder: item.sortOrder },
57
62
  redo,
58
63
  });
@@ -64,18 +69,18 @@
64
69
  <div class="flex w-fit max-w-full overflow-x-auto">
65
70
  <section
66
71
  class="flex"
67
- aria-label="Slides"
68
- use:dragHandleZone={{ items: editor.slides, ...otherOptions }}
72
+ aria-label="Pages"
73
+ use:dragHandleZone={{ items: editor.sortedPages, ...otherOptions }}
69
74
  onconsider={handleDndConsider}
70
75
  onfinalize={handleDndFinalize}
71
76
  >
72
- {#each editor.slides as slide, index (slide.id)}
77
+ {#each editor.sortedPages as page, index (page.id)}
73
78
  <div
74
79
  class="relative py-2"
75
80
  aria-label="Page {index + 1}"
76
81
  animate:flip={{ duration: flipDurationMs }}
77
82
  >
78
- <SlidePreview {editor} {slide} {index} {thumbScale} />
83
+ <PagesNavigationItem {editor} {page} {index} {thumbScale} />
79
84
  </div>
80
85
  {/each}
81
86
  </section>
@@ -83,7 +88,7 @@
83
88
  <button
84
89
  class="mx-2 my-1 rounded-xl"
85
90
  aria-label="New Page"
86
- onclick={() => editor.addSlide({ index: editor.slides.length })}
91
+ onclick={() => editor.addPage({ index: editor.pages.length })}
87
92
  >
88
93
  <div
89
94
  class="relative flex items-center justify-center overflow-hidden rounded-lg bg-gray-400"
@@ -0,0 +1,7 @@
1
+ import type { Editor } from '../editor.svelte.js';
2
+ interface Props {
3
+ editor: Editor;
4
+ }
5
+ declare const PagesNavigation: import("svelte").Component<Props, {}, "">;
6
+ type PagesNavigation = ReturnType<typeof PagesNavigation>;
7
+ export default PagesNavigation;
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">
2
- import SettingsIcon from 'lucide-svelte/icons/settings-2';
2
+ import SettingsIcon from '@lucide/svelte/icons/settings-2';
3
3
  import type { HTMLAttributes } from 'svelte/elements';
4
4
  import { ColorIndicator } from '../../color-indicator/index.js';
5
5
  import { ColorPickerAlphaGrid } from '../../../ui/color-picker/index.js';
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
- import XIcon from 'lucide-svelte/icons/x';
3
- import PlusIcon from 'lucide-svelte/icons/plus';
2
+ import XIcon from '@lucide/svelte/icons/x';
3
+ import PlusIcon from '@lucide/svelte/icons/plus';
4
4
  import { Button, buttonVariants } from '../../../ui/button/index.js';
5
5
  import { ColorIndicator } from '../../color-indicator/index.js';
6
6
  import { ColorPicker, ColorPickerAlphaGrid } from '../../../ui/color-picker/index.js';