digital-tools 2.1.1 → 2.3.0

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 (293) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +2 -0
  3. package/dist/client.d.ts +109 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +69 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/define.d.ts +2 -2
  8. package/dist/define.d.ts.map +1 -1
  9. package/dist/define.js +22 -20
  10. package/dist/define.js.map +1 -1
  11. package/dist/function-ref.d.ts +229 -0
  12. package/dist/function-ref.d.ts.map +1 -0
  13. package/dist/function-ref.js +28 -0
  14. package/dist/function-ref.js.map +1 -0
  15. package/dist/function-sugar.d.ts +57 -0
  16. package/dist/function-sugar.d.ts.map +1 -0
  17. package/dist/function-sugar.js +79 -0
  18. package/dist/function-sugar.js.map +1 -0
  19. package/dist/index.d.ts +10 -3
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +24 -4
  22. package/dist/index.js.map +1 -1
  23. package/dist/providers/analytics/mixpanel.d.ts.map +1 -1
  24. package/dist/providers/analytics/mixpanel.js +21 -18
  25. package/dist/providers/analytics/mixpanel.js.map +1 -1
  26. package/dist/providers/calendar/cal-com.d.ts.map +1 -1
  27. package/dist/providers/calendar/cal-com.js +10 -10
  28. package/dist/providers/calendar/cal-com.js.map +1 -1
  29. package/dist/providers/calendar/google-calendar.d.ts.map +1 -1
  30. package/dist/providers/calendar/google-calendar.js +4 -4
  31. package/dist/providers/calendar/google-calendar.js.map +1 -1
  32. package/dist/providers/crm/hubspot.d.ts.map +1 -1
  33. package/dist/providers/crm/hubspot.js +107 -85
  34. package/dist/providers/crm/hubspot.js.map +1 -1
  35. package/dist/providers/development/github.d.ts.map +1 -1
  36. package/dist/providers/development/github.js +40 -43
  37. package/dist/providers/development/github.js.map +1 -1
  38. package/dist/providers/ecommerce/shopify.d.ts.map +1 -1
  39. package/dist/providers/ecommerce/shopify.js +79 -62
  40. package/dist/providers/ecommerce/shopify.js.map +1 -1
  41. package/dist/providers/email/resend.d.ts.map +1 -1
  42. package/dist/providers/email/resend.js +20 -16
  43. package/dist/providers/email/resend.js.map +1 -1
  44. package/dist/providers/email/sendgrid.d.ts.map +1 -1
  45. package/dist/providers/email/sendgrid.js +12 -9
  46. package/dist/providers/email/sendgrid.js.map +1 -1
  47. package/dist/providers/finance/stripe.d.ts.map +1 -1
  48. package/dist/providers/finance/stripe.js +44 -42
  49. package/dist/providers/finance/stripe.js.map +1 -1
  50. package/dist/providers/forms/typeform.d.ts.map +1 -1
  51. package/dist/providers/forms/typeform.js +68 -58
  52. package/dist/providers/forms/typeform.js.map +1 -1
  53. package/dist/providers/knowledge/notion.d.ts.map +1 -1
  54. package/dist/providers/knowledge/notion.js +75 -41
  55. package/dist/providers/knowledge/notion.js.map +1 -1
  56. package/dist/providers/marketing/mailchimp.d.ts.map +1 -1
  57. package/dist/providers/marketing/mailchimp.js +74 -61
  58. package/dist/providers/marketing/mailchimp.js.map +1 -1
  59. package/dist/providers/media/cloudinary.d.ts.map +1 -1
  60. package/dist/providers/media/cloudinary.js +30 -28
  61. package/dist/providers/media/cloudinary.js.map +1 -1
  62. package/dist/providers/messaging/slack.d.ts.map +1 -1
  63. package/dist/providers/messaging/slack.js +75 -58
  64. package/dist/providers/messaging/slack.js.map +1 -1
  65. package/dist/providers/messaging/twilio-sms.d.ts.map +1 -1
  66. package/dist/providers/messaging/twilio-sms.js +33 -15
  67. package/dist/providers/messaging/twilio-sms.js.map +1 -1
  68. package/dist/providers/project-management/linear.d.ts.map +1 -1
  69. package/dist/providers/project-management/linear.js +31 -27
  70. package/dist/providers/project-management/linear.js.map +1 -1
  71. package/dist/providers/spreadsheet/google-sheets.d.ts.map +1 -1
  72. package/dist/providers/spreadsheet/google-sheets.js +21 -18
  73. package/dist/providers/spreadsheet/google-sheets.js.map +1 -1
  74. package/dist/providers/spreadsheet/xlsx.d.ts.map +1 -1
  75. package/dist/providers/spreadsheet/xlsx.js +4 -4
  76. package/dist/providers/spreadsheet/xlsx.js.map +1 -1
  77. package/dist/providers/storage/index.js +1 -0
  78. package/dist/providers/storage/index.js.map +1 -1
  79. package/dist/providers/storage/s3.d.ts.map +1 -1
  80. package/dist/providers/storage/s3.js +36 -27
  81. package/dist/providers/storage/s3.js.map +1 -1
  82. package/dist/providers/support/zendesk.d.ts.map +1 -1
  83. package/dist/providers/support/zendesk.js +24 -25
  84. package/dist/providers/support/zendesk.js.map +1 -1
  85. package/dist/providers/tasks/todoist.d.ts.map +1 -1
  86. package/dist/providers/tasks/todoist.js +18 -18
  87. package/dist/providers/tasks/todoist.js.map +1 -1
  88. package/dist/providers/video-conferencing/google-meet.d.ts.map +1 -1
  89. package/dist/providers/video-conferencing/google-meet.js +11 -11
  90. package/dist/providers/video-conferencing/google-meet.js.map +1 -1
  91. package/dist/providers/video-conferencing/jitsi.js +14 -14
  92. package/dist/providers/video-conferencing/jitsi.js.map +1 -1
  93. package/dist/providers/video-conferencing/teams.d.ts.map +1 -1
  94. package/dist/providers/video-conferencing/teams.js +9 -7
  95. package/dist/providers/video-conferencing/teams.js.map +1 -1
  96. package/dist/providers/video-conferencing/zoom.d.ts.map +1 -1
  97. package/dist/providers/video-conferencing/zoom.js +26 -24
  98. package/dist/providers/video-conferencing/zoom.js.map +1 -1
  99. package/dist/tools/data.d.ts.map +1 -1
  100. package/dist/tools/data.js +5 -12
  101. package/dist/tools/data.js.map +1 -1
  102. package/dist/tools/index.d.ts +1 -0
  103. package/dist/tools/index.d.ts.map +1 -1
  104. package/dist/tools/index.js +1 -0
  105. package/dist/tools/index.js.map +1 -1
  106. package/dist/tools/system.d.ts +289 -0
  107. package/dist/tools/system.d.ts.map +1 -0
  108. package/dist/tools/system.js +752 -0
  109. package/dist/tools/system.js.map +1 -0
  110. package/dist/tools/web.d.ts.map +1 -1
  111. package/dist/tools/web.js +22 -10
  112. package/dist/tools/web.js.map +1 -1
  113. package/dist/track-record.d.ts +101 -0
  114. package/dist/track-record.d.ts.map +1 -0
  115. package/dist/track-record.js +17 -0
  116. package/dist/track-record.js.map +1 -0
  117. package/dist/types.d.ts +210 -9
  118. package/dist/types.d.ts.map +1 -1
  119. package/dist/verb-registration.d.ts +122 -0
  120. package/dist/verb-registration.d.ts.map +1 -0
  121. package/dist/verb-registration.js +176 -0
  122. package/dist/verb-registration.js.map +1 -0
  123. package/dist/worker.d.ts +93 -0
  124. package/dist/worker.d.ts.map +1 -0
  125. package/dist/worker.js +315 -0
  126. package/dist/worker.js.map +1 -0
  127. package/dist/wrap.d.ts +89 -0
  128. package/dist/wrap.d.ts.map +1 -0
  129. package/dist/wrap.js +225 -0
  130. package/dist/wrap.js.map +1 -0
  131. package/package.json +21 -4
  132. package/src/client.ts +136 -0
  133. package/src/define.ts +31 -37
  134. package/src/function-ref.ts +264 -0
  135. package/src/function-sugar.ts +134 -0
  136. package/src/index.ts +132 -10
  137. package/src/providers/analytics/mixpanel.ts +19 -18
  138. package/src/providers/calendar/cal-com.ts +29 -18
  139. package/src/providers/calendar/google-calendar.ts +20 -14
  140. package/src/providers/crm/hubspot.ts +225 -99
  141. package/src/providers/development/github.ts +206 -135
  142. package/src/providers/ecommerce/shopify.ts +250 -89
  143. package/src/providers/email/resend.ts +101 -28
  144. package/src/providers/email/sendgrid.ts +12 -9
  145. package/src/providers/finance/stripe.ts +128 -49
  146. package/src/providers/forms/typeform.ts +74 -58
  147. package/src/providers/knowledge/notion.ts +340 -88
  148. package/src/providers/marketing/mailchimp.ts +86 -70
  149. package/src/providers/media/cloudinary.ts +99 -41
  150. package/src/providers/messaging/slack.ts +283 -85
  151. package/src/providers/messaging/twilio-sms.ts +35 -15
  152. package/src/providers/project-management/linear.ts +143 -55
  153. package/src/providers/spreadsheet/google-sheets.ts +222 -56
  154. package/src/providers/spreadsheet/xlsx.ts +47 -16
  155. package/src/providers/storage/s3.ts +119 -47
  156. package/src/providers/support/zendesk.ts +196 -46
  157. package/src/providers/tasks/todoist.ts +20 -26
  158. package/src/providers/video-conferencing/google-meet.ts +17 -20
  159. package/src/providers/video-conferencing/jitsi.ts +14 -14
  160. package/src/providers/video-conferencing/teams.ts +14 -13
  161. package/src/providers/video-conferencing/zoom.ts +54 -49
  162. package/src/tools/data.ts +6 -16
  163. package/src/tools/index.ts +1 -0
  164. package/src/tools/system.ts +887 -0
  165. package/src/tools/web.ts +22 -10
  166. package/src/track-record.ts +106 -0
  167. package/src/types.ts +241 -13
  168. package/src/verb-registration.ts +197 -0
  169. package/src/worker.ts +370 -0
  170. package/src/wrap.ts +260 -0
  171. package/test/client.test.ts +146 -0
  172. package/test/communication-tools-extended.test.ts +734 -0
  173. package/test/data-tools-extended.test.ts +743 -0
  174. package/test/define-extended.test.ts +819 -0
  175. package/test/define.test.ts +150 -41
  176. package/test/entities.test.ts +623 -0
  177. package/test/extended-entities.test.ts +1228 -0
  178. package/test/provider-implementations.test.ts +725 -0
  179. package/test/provider-registry-extended.test.ts +583 -0
  180. package/test/providers/google-sheets.test.ts +851 -0
  181. package/test/providers/helpers.ts +554 -0
  182. package/test/providers/hubspot.test.ts +576 -0
  183. package/test/providers/slack.test.ts +932 -0
  184. package/test/providers/stripe.test.ts +701 -0
  185. package/test/providers.test.ts +578 -0
  186. package/test/system-tools-extended.test.ts +632 -0
  187. package/test/system.test.ts +673 -0
  188. package/test/tools.test.ts +15 -11
  189. package/test/types.test.ts +402 -0
  190. package/test/verb-registration.test.ts +395 -0
  191. package/test/web-tools.test.ts +553 -0
  192. package/test/worker-extended.test.ts +699 -0
  193. package/test/worker.test.ts +576 -0
  194. package/test/wrap.test.ts +366 -0
  195. package/tsconfig.json +3 -13
  196. package/vitest.config.ts +37 -0
  197. package/wrangler.jsonc +9 -0
  198. package/.turbo/turbo-build.log +0 -5
  199. package/dist/providers/voice/vapi.d.ts +0 -27
  200. package/dist/providers/voice/vapi.d.ts.map +0 -1
  201. package/dist/providers/voice/vapi.js +0 -440
  202. package/dist/providers/voice/vapi.js.map +0 -1
  203. package/src/define.js +0 -267
  204. package/src/entities/advertising.js +0 -999
  205. package/src/entities/ai.js +0 -756
  206. package/src/entities/analytics.js +0 -1588
  207. package/src/entities/automation.js +0 -601
  208. package/src/entities/communication.js +0 -1150
  209. package/src/entities/crm.js +0 -1386
  210. package/src/entities/design.js +0 -546
  211. package/src/entities/development.js +0 -2212
  212. package/src/entities/document.js +0 -874
  213. package/src/entities/ecommerce.js +0 -1429
  214. package/src/entities/experiment.js +0 -1039
  215. package/src/entities/finance.js +0 -3478
  216. package/src/entities/forms.js +0 -1892
  217. package/src/entities/hr.js +0 -661
  218. package/src/entities/identity.js +0 -997
  219. package/src/entities/index.js +0 -282
  220. package/src/entities/infrastructure.js +0 -1153
  221. package/src/entities/knowledge.js +0 -1438
  222. package/src/entities/marketing.js +0 -1610
  223. package/src/entities/media.js +0 -1634
  224. package/src/entities/notification.js +0 -1199
  225. package/src/entities/presentation.js +0 -1274
  226. package/src/entities/productivity.js +0 -1317
  227. package/src/entities/project-management.js +0 -1136
  228. package/src/entities/recruiting.js +0 -736
  229. package/src/entities/shipping.js +0 -509
  230. package/src/entities/signature.js +0 -1102
  231. package/src/entities/site.js +0 -222
  232. package/src/entities/spreadsheet.js +0 -1341
  233. package/src/entities/storage.js +0 -1198
  234. package/src/entities/support.js +0 -1166
  235. package/src/entities/video-conferencing.js +0 -1750
  236. package/src/entities/video.js +0 -950
  237. package/src/entities.js +0 -1663
  238. package/src/index.js +0 -74
  239. package/src/providers/analytics/index.js +0 -17
  240. package/src/providers/analytics/mixpanel.js +0 -255
  241. package/src/providers/calendar/cal-com.js +0 -303
  242. package/src/providers/calendar/google-calendar.js +0 -335
  243. package/src/providers/calendar/index.js +0 -20
  244. package/src/providers/crm/hubspot.js +0 -566
  245. package/src/providers/crm/index.js +0 -17
  246. package/src/providers/development/github.js +0 -472
  247. package/src/providers/development/index.js +0 -17
  248. package/src/providers/ecommerce/index.js +0 -17
  249. package/src/providers/ecommerce/shopify.js +0 -378
  250. package/src/providers/email/index.js +0 -20
  251. package/src/providers/email/resend.js +0 -258
  252. package/src/providers/email/sendgrid.js +0 -161
  253. package/src/providers/finance/index.js +0 -17
  254. package/src/providers/finance/stripe.js +0 -549
  255. package/src/providers/forms/index.js +0 -17
  256. package/src/providers/forms/typeform.js +0 -500
  257. package/src/providers/index.js +0 -123
  258. package/src/providers/knowledge/index.js +0 -17
  259. package/src/providers/knowledge/notion.js +0 -389
  260. package/src/providers/marketing/index.js +0 -17
  261. package/src/providers/marketing/mailchimp.js +0 -443
  262. package/src/providers/media/cloudinary.js +0 -318
  263. package/src/providers/media/index.js +0 -17
  264. package/src/providers/messaging/index.js +0 -20
  265. package/src/providers/messaging/slack.js +0 -393
  266. package/src/providers/messaging/twilio-sms.js +0 -249
  267. package/src/providers/project-management/index.js +0 -17
  268. package/src/providers/project-management/linear.js +0 -575
  269. package/src/providers/registry.js +0 -86
  270. package/src/providers/spreadsheet/google-sheets.js +0 -375
  271. package/src/providers/spreadsheet/index.js +0 -20
  272. package/src/providers/spreadsheet/xlsx.js +0 -423
  273. package/src/providers/storage/index.js +0 -24
  274. package/src/providers/storage/s3.js +0 -419
  275. package/src/providers/support/index.js +0 -17
  276. package/src/providers/support/zendesk.js +0 -373
  277. package/src/providers/tasks/index.js +0 -17
  278. package/src/providers/tasks/todoist.js +0 -286
  279. package/src/providers/types.js +0 -9
  280. package/src/providers/video-conferencing/google-meet.js +0 -286
  281. package/src/providers/video-conferencing/index.js +0 -31
  282. package/src/providers/video-conferencing/jitsi.js +0 -254
  283. package/src/providers/video-conferencing/teams.js +0 -270
  284. package/src/providers/video-conferencing/zoom.js +0 -332
  285. package/src/registry.js +0 -128
  286. package/src/tools/communication.js +0 -184
  287. package/src/tools/data.js +0 -205
  288. package/src/tools/index.js +0 -11
  289. package/src/tools/web.js +0 -137
  290. package/src/types.js +0 -10
  291. package/test/define.test.js +0 -306
  292. package/test/registry.test.js +0 -357
  293. package/test/tools.test.js +0 -363
@@ -1,1274 +0,0 @@
1
- /**
2
- * Presentation Entity Types (Nouns)
3
- *
4
- * Semantic type definitions for presentations that support
5
- * Google Slides, Microsoft PowerPoint/PPTX, and Reveal.js/MDX formats.
6
- * Each entity defines:
7
- * - Properties: The data fields
8
- * - Actions: Operations that can be performed (Verbs)
9
- * - Events: State changes that occur
10
- *
11
- * @packageDocumentation
12
- */
13
- // =============================================================================
14
- // Presentation
15
- // =============================================================================
16
- /**
17
- * Presentation entity
18
- *
19
- * Represents a slide presentation for creating and delivering visual content.
20
- * Supports Google Slides, PowerPoint/PPTX, and Reveal.js/MDX formats.
21
- */
22
- export const Presentation = {
23
- singular: 'presentation',
24
- plural: 'presentations',
25
- description: 'A slide presentation for creating and delivering visual content',
26
- properties: {
27
- // Identity
28
- title: {
29
- type: 'string',
30
- description: 'Presentation title',
31
- },
32
- slug: {
33
- type: 'string',
34
- optional: true,
35
- description: 'URL-friendly identifier',
36
- },
37
- description: {
38
- type: 'string',
39
- optional: true,
40
- description: 'Presentation description or summary',
41
- },
42
- subtitle: {
43
- type: 'string',
44
- optional: true,
45
- description: 'Presentation subtitle',
46
- },
47
- // Format
48
- format: {
49
- type: 'string',
50
- description: 'Presentation format: pptx, gslides, revealjs, mdx, pdf',
51
- examples: ['pptx', 'gslides', 'revealjs', 'mdx', 'pdf', 'keynote'],
52
- },
53
- aspectRatio: {
54
- type: 'string',
55
- optional: true,
56
- description: 'Slide aspect ratio: 16:9, 4:3, 16:10',
57
- examples: ['16:9', '4:3', '16:10'],
58
- },
59
- slideSize: {
60
- type: 'json',
61
- optional: true,
62
- description: 'Custom slide dimensions',
63
- },
64
- // Status
65
- status: {
66
- type: 'string',
67
- description: 'Presentation status: draft, in-review, ready, presented, archived',
68
- examples: ['draft', 'in-review', 'ready', 'presented', 'archived'],
69
- },
70
- visibility: {
71
- type: 'string',
72
- description: 'Visibility: private, internal, public',
73
- examples: ['private', 'internal', 'public'],
74
- },
75
- // Structure
76
- slideCount: {
77
- type: 'number',
78
- optional: true,
79
- description: 'Total number of slides',
80
- },
81
- duration: {
82
- type: 'number',
83
- optional: true,
84
- description: 'Estimated presentation duration in minutes',
85
- },
86
- // Theme and styling
87
- theme: {
88
- type: 'string',
89
- optional: true,
90
- description: 'Presentation theme name',
91
- },
92
- themeConfig: {
93
- type: 'json',
94
- optional: true,
95
- description: 'Theme configuration and customization',
96
- },
97
- masterSlides: {
98
- type: 'json',
99
- optional: true,
100
- description: 'Master slide layouts',
101
- },
102
- colorScheme: {
103
- type: 'json',
104
- optional: true,
105
- description: 'Color scheme configuration',
106
- },
107
- fontScheme: {
108
- type: 'json',
109
- optional: true,
110
- description: 'Font scheme configuration',
111
- },
112
- // Transitions and animations
113
- defaultTransition: {
114
- type: 'string',
115
- optional: true,
116
- description: 'Default slide transition effect',
117
- examples: ['none', 'fade', 'slide', 'zoom', 'flip', 'cube', 'wipe'],
118
- },
119
- transitionSpeed: {
120
- type: 'string',
121
- optional: true,
122
- description: 'Transition speed: slow, default, fast',
123
- examples: ['slow', 'default', 'fast'],
124
- },
125
- // Presenter features
126
- hasNotes: {
127
- type: 'boolean',
128
- optional: true,
129
- description: 'Whether presentation includes speaker notes',
130
- },
131
- hasTimings: {
132
- type: 'boolean',
133
- optional: true,
134
- description: 'Whether slides have timing information',
135
- },
136
- autoAdvance: {
137
- type: 'boolean',
138
- optional: true,
139
- description: 'Whether slides auto-advance',
140
- },
141
- autoAdvanceDelay: {
142
- type: 'number',
143
- optional: true,
144
- description: 'Auto-advance delay in seconds',
145
- },
146
- loop: {
147
- type: 'boolean',
148
- optional: true,
149
- description: 'Whether presentation loops',
150
- },
151
- // Collaboration
152
- allowComments: {
153
- type: 'boolean',
154
- optional: true,
155
- description: 'Whether comments are enabled',
156
- },
157
- shareMode: {
158
- type: 'string',
159
- optional: true,
160
- description: 'Sharing mode: view, comment, edit, present',
161
- examples: ['view', 'comment', 'edit', 'present'],
162
- },
163
- allowDownload: {
164
- type: 'boolean',
165
- optional: true,
166
- description: 'Whether download is allowed',
167
- },
168
- // Templates
169
- isTemplate: {
170
- type: 'boolean',
171
- optional: true,
172
- description: 'Whether this is a template',
173
- },
174
- templateId: {
175
- type: 'string',
176
- optional: true,
177
- description: 'ID of template this was created from',
178
- },
179
- templateCategory: {
180
- type: 'string',
181
- optional: true,
182
- description: 'Template category',
183
- examples: ['business', 'education', 'pitch-deck', 'report', 'training'],
184
- },
185
- // Publishing
186
- published: {
187
- type: 'boolean',
188
- optional: true,
189
- description: 'Whether presentation is published',
190
- },
191
- publishedUrl: {
192
- type: 'url',
193
- optional: true,
194
- description: 'Published presentation URL',
195
- },
196
- publishedAt: {
197
- type: 'datetime',
198
- optional: true,
199
- description: 'Publication timestamp',
200
- },
201
- embedCode: {
202
- type: 'string',
203
- optional: true,
204
- description: 'HTML embed code',
205
- },
206
- // Presentation sessions
207
- lastPresentedAt: {
208
- type: 'datetime',
209
- optional: true,
210
- description: 'Last presentation timestamp',
211
- },
212
- presentationCount: {
213
- type: 'number',
214
- optional: true,
215
- description: 'Number of times presented',
216
- },
217
- // Integration
218
- externalId: {
219
- type: 'string',
220
- optional: true,
221
- description: 'External system ID (Google Slides ID, OneDrive ID, etc.)',
222
- },
223
- externalUrl: {
224
- type: 'url',
225
- optional: true,
226
- description: 'URL in external system',
227
- },
228
- syncEnabled: {
229
- type: 'boolean',
230
- optional: true,
231
- description: 'Whether sync is enabled',
232
- },
233
- lastSyncedAt: {
234
- type: 'datetime',
235
- optional: true,
236
- description: 'Last sync timestamp',
237
- },
238
- // Metadata
239
- language: {
240
- type: 'string',
241
- optional: true,
242
- description: 'Presentation language code',
243
- },
244
- author: {
245
- type: 'string',
246
- optional: true,
247
- description: 'Presentation author name',
248
- },
249
- company: {
250
- type: 'string',
251
- optional: true,
252
- description: 'Company or organization',
253
- },
254
- tags: {
255
- type: 'string',
256
- array: true,
257
- optional: true,
258
- description: 'Tags for categorization',
259
- },
260
- category: {
261
- type: 'string',
262
- optional: true,
263
- description: 'Presentation category',
264
- },
265
- folder: {
266
- type: 'string',
267
- optional: true,
268
- description: 'Folder or workspace path',
269
- },
270
- customMetadata: {
271
- type: 'json',
272
- optional: true,
273
- description: 'Custom metadata fields',
274
- },
275
- // Analytics
276
- viewCount: {
277
- type: 'number',
278
- optional: true,
279
- description: 'Number of views',
280
- },
281
- downloadCount: {
282
- type: 'number',
283
- optional: true,
284
- description: 'Number of downloads',
285
- },
286
- lastViewedAt: {
287
- type: 'datetime',
288
- optional: true,
289
- description: 'Last view timestamp',
290
- },
291
- lastEditedAt: {
292
- type: 'datetime',
293
- optional: true,
294
- description: 'Last edit timestamp',
295
- },
296
- },
297
- relationships: {
298
- owner: {
299
- type: 'Contact',
300
- description: 'Presentation owner',
301
- },
302
- creator: {
303
- type: 'Contact',
304
- description: 'User who created the presentation',
305
- },
306
- lastEditor: {
307
- type: 'Contact',
308
- required: false,
309
- description: 'User who last edited',
310
- },
311
- slides: {
312
- type: 'Slide[]',
313
- backref: 'presentation',
314
- description: 'Slides in this presentation',
315
- },
316
- collaborators: {
317
- type: 'Contact[]',
318
- description: 'Users with access',
319
- },
320
- },
321
- actions: [
322
- 'create',
323
- 'open',
324
- 'edit',
325
- 'save',
326
- 'saveAs',
327
- 'duplicate',
328
- 'rename',
329
- 'delete',
330
- 'restore',
331
- 'export',
332
- 'download',
333
- 'print',
334
- 'share',
335
- 'unshare',
336
- 'publish',
337
- 'unpublish',
338
- 'archive',
339
- 'unarchive',
340
- 'move',
341
- 'copy',
342
- 'present',
343
- 'startPresentation',
344
- 'endPresentation',
345
- 'addSlide',
346
- 'removeSlide',
347
- 'reorderSlides',
348
- 'duplicateSlide',
349
- 'makeTemplate',
350
- 'createFromTemplate',
351
- 'applyTheme',
352
- 'changeAspectRatio',
353
- 'setTransitions',
354
- 'addAnimation',
355
- 'recordPresentation',
356
- 'embedPresentation',
357
- ],
358
- events: [
359
- 'created',
360
- 'opened',
361
- 'edited',
362
- 'saved',
363
- 'renamed',
364
- 'deleted',
365
- 'restored',
366
- 'exported',
367
- 'downloaded',
368
- 'printed',
369
- 'shared',
370
- 'unshared',
371
- 'published',
372
- 'unpublished',
373
- 'archived',
374
- 'unarchived',
375
- 'moved',
376
- 'copied',
377
- 'presented',
378
- 'presentationStarted',
379
- 'presentationEnded',
380
- 'slideAdded',
381
- 'slideRemoved',
382
- 'slidesReordered',
383
- 'slideDuplicated',
384
- 'themeApplied',
385
- 'aspectRatioChanged',
386
- 'transitionsSet',
387
- 'animationAdded',
388
- 'recorded',
389
- 'embedded',
390
- 'collaboratorAdded',
391
- 'collaboratorRemoved',
392
- 'permissionChanged',
393
- 'synced',
394
- 'viewed',
395
- ],
396
- };
397
- // =============================================================================
398
- // Slide
399
- // =============================================================================
400
- /**
401
- * Slide entity
402
- *
403
- * Represents a single slide within a presentation.
404
- */
405
- export const Slide = {
406
- singular: 'slide',
407
- plural: 'slides',
408
- description: 'A single slide within a presentation',
409
- properties: {
410
- // Identity
411
- title: {
412
- type: 'string',
413
- optional: true,
414
- description: 'Slide title',
415
- },
416
- index: {
417
- type: 'number',
418
- description: 'Slide position in presentation (0-based)',
419
- },
420
- slideId: {
421
- type: 'string',
422
- optional: true,
423
- description: 'Internal slide identifier',
424
- },
425
- // Layout
426
- layout: {
427
- type: 'string',
428
- optional: true,
429
- description: 'Slide layout type',
430
- examples: [
431
- 'title',
432
- 'title-content',
433
- 'section-header',
434
- 'two-column',
435
- 'comparison',
436
- 'blank',
437
- 'content',
438
- 'title-only',
439
- 'picture',
440
- ],
441
- },
442
- masterSlideId: {
443
- type: 'string',
444
- optional: true,
445
- description: 'Master slide/layout reference',
446
- },
447
- // Background
448
- backgroundColor: {
449
- type: 'string',
450
- optional: true,
451
- description: 'Background color (hex)',
452
- },
453
- backgroundImage: {
454
- type: 'url',
455
- optional: true,
456
- description: 'Background image URL',
457
- },
458
- backgroundType: {
459
- type: 'string',
460
- optional: true,
461
- description: 'Background type: solid, gradient, image, video',
462
- examples: ['solid', 'gradient', 'image', 'video'],
463
- },
464
- backgroundGradient: {
465
- type: 'json',
466
- optional: true,
467
- description: 'Gradient configuration',
468
- },
469
- // Transition
470
- transition: {
471
- type: 'string',
472
- optional: true,
473
- description: 'Slide transition effect',
474
- examples: ['none', 'fade', 'slide', 'zoom', 'flip', 'cube', 'wipe', 'dissolve'],
475
- },
476
- transitionDuration: {
477
- type: 'number',
478
- optional: true,
479
- description: 'Transition duration in milliseconds',
480
- },
481
- transitionDirection: {
482
- type: 'string',
483
- optional: true,
484
- description: 'Transition direction',
485
- examples: ['left', 'right', 'up', 'down'],
486
- },
487
- // Timing
488
- duration: {
489
- type: 'number',
490
- optional: true,
491
- description: 'Slide display duration in seconds',
492
- },
493
- autoAdvance: {
494
- type: 'boolean',
495
- optional: true,
496
- description: 'Whether slide auto-advances',
497
- },
498
- advanceAfter: {
499
- type: 'number',
500
- optional: true,
501
- description: 'Seconds before auto-advance',
502
- },
503
- // Content
504
- hasContent: {
505
- type: 'boolean',
506
- optional: true,
507
- description: 'Whether slide has content elements',
508
- },
509
- elementCount: {
510
- type: 'number',
511
- optional: true,
512
- description: 'Number of elements on slide',
513
- },
514
- // Notes
515
- notes: {
516
- type: 'string',
517
- optional: true,
518
- description: 'Speaker notes for this slide',
519
- },
520
- hasNotes: {
521
- type: 'boolean',
522
- optional: true,
523
- description: 'Whether slide has speaker notes',
524
- },
525
- // Visibility
526
- hidden: {
527
- type: 'boolean',
528
- optional: true,
529
- description: 'Whether slide is hidden',
530
- },
531
- // Section
532
- sectionTitle: {
533
- type: 'string',
534
- optional: true,
535
- description: 'Section this slide belongs to',
536
- },
537
- isSection: {
538
- type: 'boolean',
539
- optional: true,
540
- description: 'Whether this is a section divider',
541
- },
542
- // Animations
543
- hasAnimations: {
544
- type: 'boolean',
545
- optional: true,
546
- description: 'Whether slide has animations',
547
- },
548
- animationCount: {
549
- type: 'number',
550
- optional: true,
551
- description: 'Number of animations',
552
- },
553
- // Thumbnail
554
- thumbnail: {
555
- type: 'url',
556
- optional: true,
557
- description: 'Slide thumbnail URL',
558
- },
559
- // Metadata
560
- metadata: {
561
- type: 'json',
562
- optional: true,
563
- description: 'Custom metadata',
564
- },
565
- },
566
- relationships: {
567
- presentation: {
568
- type: 'Presentation',
569
- backref: 'slides',
570
- description: 'Parent presentation',
571
- },
572
- elements: {
573
- type: 'SlideElement[]',
574
- backref: 'slide',
575
- description: 'Elements on this slide',
576
- },
577
- speakerNotes: {
578
- type: 'SpeakerNotes',
579
- required: false,
580
- description: 'Detailed speaker notes',
581
- },
582
- animations: {
583
- type: 'Animation[]',
584
- backref: 'slide',
585
- description: 'Animations on this slide',
586
- },
587
- },
588
- actions: [
589
- 'create',
590
- 'edit',
591
- 'delete',
592
- 'duplicate',
593
- 'move',
594
- 'hide',
595
- 'unhide',
596
- 'setLayout',
597
- 'setBackground',
598
- 'setTransition',
599
- 'addElement',
600
- 'removeElement',
601
- 'reorderElements',
602
- 'addNotes',
603
- 'editNotes',
604
- 'addAnimation',
605
- 'preview',
606
- 'present',
607
- 'export',
608
- 'generateThumbnail',
609
- 'createSection',
610
- ],
611
- events: [
612
- 'created',
613
- 'edited',
614
- 'deleted',
615
- 'duplicated',
616
- 'moved',
617
- 'hidden',
618
- 'unhidden',
619
- 'layoutSet',
620
- 'backgroundSet',
621
- 'transitionSet',
622
- 'elementAdded',
623
- 'elementRemoved',
624
- 'elementsReordered',
625
- 'notesAdded',
626
- 'notesEdited',
627
- 'animationAdded',
628
- 'presented',
629
- 'exported',
630
- 'thumbnailGenerated',
631
- 'sectionCreated',
632
- ],
633
- };
634
- // =============================================================================
635
- // SlideElement
636
- // =============================================================================
637
- /**
638
- * SlideElement entity
639
- *
640
- * Represents a content element on a slide (text, image, shape, chart, etc.).
641
- */
642
- export const SlideElement = {
643
- singular: 'slide element',
644
- plural: 'slide elements',
645
- description: 'A content element on a slide (text, image, shape, chart, video, etc.)',
646
- properties: {
647
- // Identity
648
- elementId: {
649
- type: 'string',
650
- optional: true,
651
- description: 'Unique element identifier',
652
- },
653
- name: {
654
- type: 'string',
655
- optional: true,
656
- description: 'Element name or label',
657
- },
658
- // Type
659
- type: {
660
- type: 'string',
661
- description: 'Element type',
662
- examples: [
663
- 'text',
664
- 'textbox',
665
- 'image',
666
- 'shape',
667
- 'chart',
668
- 'table',
669
- 'video',
670
- 'audio',
671
- 'embed',
672
- 'line',
673
- 'arrow',
674
- 'group',
675
- 'smartart',
676
- ],
677
- },
678
- subtype: {
679
- type: 'string',
680
- optional: true,
681
- description: 'Element subtype (shape type, chart type, etc.)',
682
- },
683
- // Position and size
684
- x: {
685
- type: 'number',
686
- description: 'X position in slide coordinates',
687
- },
688
- y: {
689
- type: 'number',
690
- description: 'Y position in slide coordinates',
691
- },
692
- width: {
693
- type: 'number',
694
- description: 'Element width',
695
- },
696
- height: {
697
- type: 'number',
698
- description: 'Element height',
699
- },
700
- rotation: {
701
- type: 'number',
702
- optional: true,
703
- description: 'Rotation angle in degrees',
704
- },
705
- zIndex: {
706
- type: 'number',
707
- optional: true,
708
- description: 'Z-index for layering',
709
- },
710
- // Content (varies by type)
711
- content: {
712
- type: 'string',
713
- optional: true,
714
- description: 'Element content (text, URL, etc.)',
715
- },
716
- richContent: {
717
- type: 'json',
718
- optional: true,
719
- description: 'Rich formatted content',
720
- },
721
- // Text-specific
722
- text: {
723
- type: 'string',
724
- optional: true,
725
- description: 'Text content',
726
- },
727
- fontFamily: {
728
- type: 'string',
729
- optional: true,
730
- description: 'Font family',
731
- },
732
- fontSize: {
733
- type: 'number',
734
- optional: true,
735
- description: 'Font size in points',
736
- },
737
- fontWeight: {
738
- type: 'string',
739
- optional: true,
740
- description: 'Font weight: normal, bold',
741
- examples: ['normal', 'bold'],
742
- },
743
- fontStyle: {
744
- type: 'string',
745
- optional: true,
746
- description: 'Font style: normal, italic',
747
- examples: ['normal', 'italic'],
748
- },
749
- textAlign: {
750
- type: 'string',
751
- optional: true,
752
- description: 'Text alignment: left, center, right, justify',
753
- examples: ['left', 'center', 'right', 'justify'],
754
- },
755
- textColor: {
756
- type: 'string',
757
- optional: true,
758
- description: 'Text color (hex)',
759
- },
760
- lineHeight: {
761
- type: 'number',
762
- optional: true,
763
- description: 'Line height multiplier',
764
- },
765
- bulletStyle: {
766
- type: 'string',
767
- optional: true,
768
- description: 'Bullet list style',
769
- },
770
- // Image-specific
771
- imageUrl: {
772
- type: 'url',
773
- optional: true,
774
- description: 'Image URL',
775
- },
776
- imageSource: {
777
- type: 'string',
778
- optional: true,
779
- description: 'Image source or attribution',
780
- },
781
- imageAlt: {
782
- type: 'string',
783
- optional: true,
784
- description: 'Image alt text',
785
- },
786
- // Video-specific
787
- videoUrl: {
788
- type: 'url',
789
- optional: true,
790
- description: 'Video URL',
791
- },
792
- videoProvider: {
793
- type: 'string',
794
- optional: true,
795
- description: 'Video provider: youtube, vimeo, etc.',
796
- examples: ['youtube', 'vimeo', 'local'],
797
- },
798
- autoplay: {
799
- type: 'boolean',
800
- optional: true,
801
- description: 'Whether video autoplays',
802
- },
803
- loop: {
804
- type: 'boolean',
805
- optional: true,
806
- description: 'Whether video loops',
807
- },
808
- // Shape-specific
809
- shapeType: {
810
- type: 'string',
811
- optional: true,
812
- description: 'Shape type',
813
- examples: ['rectangle', 'circle', 'triangle', 'star', 'arrow', 'callout'],
814
- },
815
- fillColor: {
816
- type: 'string',
817
- optional: true,
818
- description: 'Fill color (hex)',
819
- },
820
- strokeColor: {
821
- type: 'string',
822
- optional: true,
823
- description: 'Stroke/border color (hex)',
824
- },
825
- strokeWidth: {
826
- type: 'number',
827
- optional: true,
828
- description: 'Stroke width in points',
829
- },
830
- // Chart-specific
831
- chartType: {
832
- type: 'string',
833
- optional: true,
834
- description: 'Chart type',
835
- examples: ['line', 'bar', 'pie', 'scatter', 'area'],
836
- },
837
- chartData: {
838
- type: 'json',
839
- optional: true,
840
- description: 'Chart data and configuration',
841
- },
842
- // Table-specific
843
- tableData: {
844
- type: 'json',
845
- optional: true,
846
- description: 'Table data as 2D array',
847
- },
848
- tableRows: {
849
- type: 'number',
850
- optional: true,
851
- description: 'Number of table rows',
852
- },
853
- tableColumns: {
854
- type: 'number',
855
- optional: true,
856
- description: 'Number of table columns',
857
- },
858
- // Styling
859
- backgroundColor: {
860
- type: 'string',
861
- optional: true,
862
- description: 'Background color (hex)',
863
- },
864
- opacity: {
865
- type: 'number',
866
- optional: true,
867
- description: 'Opacity (0-1)',
868
- },
869
- shadow: {
870
- type: 'json',
871
- optional: true,
872
- description: 'Shadow configuration',
873
- },
874
- border: {
875
- type: 'json',
876
- optional: true,
877
- description: 'Border configuration',
878
- },
879
- // Interactions
880
- link: {
881
- type: 'url',
882
- optional: true,
883
- description: 'Hyperlink URL',
884
- },
885
- linkType: {
886
- type: 'string',
887
- optional: true,
888
- description: 'Link type: url, slide, file',
889
- examples: ['url', 'slide', 'file', 'email'],
890
- },
891
- linkedSlideIndex: {
892
- type: 'number',
893
- optional: true,
894
- description: 'Linked slide index for navigation',
895
- },
896
- // Animation
897
- hasAnimation: {
898
- type: 'boolean',
899
- optional: true,
900
- description: 'Whether element has animation',
901
- },
902
- // Grouping
903
- isGrouped: {
904
- type: 'boolean',
905
- optional: true,
906
- description: 'Whether element is part of a group',
907
- },
908
- groupId: {
909
- type: 'string',
910
- optional: true,
911
- description: 'Group identifier',
912
- },
913
- // Visibility
914
- hidden: {
915
- type: 'boolean',
916
- optional: true,
917
- description: 'Whether element is hidden',
918
- },
919
- locked: {
920
- type: 'boolean',
921
- optional: true,
922
- description: 'Whether element is locked from editing',
923
- },
924
- // Metadata
925
- metadata: {
926
- type: 'json',
927
- optional: true,
928
- description: 'Custom metadata',
929
- },
930
- },
931
- relationships: {
932
- slide: {
933
- type: 'Slide',
934
- backref: 'elements',
935
- description: 'Parent slide',
936
- },
937
- animations: {
938
- type: 'Animation[]',
939
- backref: 'element',
940
- description: 'Animations applied to this element',
941
- },
942
- },
943
- actions: [
944
- 'create',
945
- 'edit',
946
- 'delete',
947
- 'duplicate',
948
- 'move',
949
- 'resize',
950
- 'rotate',
951
- 'bringToFront',
952
- 'sendToBack',
953
- 'bringForward',
954
- 'sendBackward',
955
- 'align',
956
- 'distribute',
957
- 'group',
958
- 'ungroup',
959
- 'lock',
960
- 'unlock',
961
- 'hide',
962
- 'unhide',
963
- 'setStyle',
964
- 'addLink',
965
- 'removeLink',
966
- 'addAnimation',
967
- 'copy',
968
- 'paste',
969
- 'cut',
970
- ],
971
- events: [
972
- 'created',
973
- 'edited',
974
- 'deleted',
975
- 'duplicated',
976
- 'moved',
977
- 'resized',
978
- 'rotated',
979
- 'reordered',
980
- 'aligned',
981
- 'distributed',
982
- 'grouped',
983
- 'ungrouped',
984
- 'locked',
985
- 'unlocked',
986
- 'hidden',
987
- 'unhidden',
988
- 'styled',
989
- 'linkAdded',
990
- 'linkRemoved',
991
- 'animationAdded',
992
- 'copied',
993
- 'pasted',
994
- ],
995
- };
996
- // =============================================================================
997
- // SpeakerNotes
998
- // =============================================================================
999
- /**
1000
- * SpeakerNotes entity
1001
- *
1002
- * Represents detailed speaker notes for a slide.
1003
- */
1004
- export const SpeakerNotes = {
1005
- singular: 'speaker notes',
1006
- plural: 'speaker notes',
1007
- description: 'Detailed speaker notes for a presentation slide',
1008
- properties: {
1009
- // Content
1010
- text: {
1011
- type: 'string',
1012
- description: 'Notes text content',
1013
- },
1014
- richText: {
1015
- type: 'json',
1016
- optional: true,
1017
- description: 'Rich formatted notes',
1018
- },
1019
- // Formatting
1020
- fontSize: {
1021
- type: 'number',
1022
- optional: true,
1023
- description: 'Font size for display',
1024
- },
1025
- // Timing
1026
- estimatedTime: {
1027
- type: 'number',
1028
- optional: true,
1029
- description: 'Estimated time for this slide in seconds',
1030
- },
1031
- actualTime: {
1032
- type: 'number',
1033
- optional: true,
1034
- description: 'Actual time spent on slide during presentation',
1035
- },
1036
- // Cues
1037
- cuePoints: {
1038
- type: 'json',
1039
- optional: true,
1040
- description: 'Timing cues or reminders',
1041
- },
1042
- // Structure
1043
- keyPoints: {
1044
- type: 'string',
1045
- array: true,
1046
- optional: true,
1047
- description: 'Key points to cover',
1048
- },
1049
- questions: {
1050
- type: 'string',
1051
- array: true,
1052
- optional: true,
1053
- description: 'Questions to ask audience',
1054
- },
1055
- // Visibility
1056
- visibleToAudience: {
1057
- type: 'boolean',
1058
- optional: true,
1059
- description: 'Whether notes are visible to audience',
1060
- },
1061
- // Metadata
1062
- metadata: {
1063
- type: 'json',
1064
- optional: true,
1065
- description: 'Custom metadata',
1066
- },
1067
- },
1068
- relationships: {
1069
- slide: {
1070
- type: 'Slide',
1071
- description: 'Associated slide',
1072
- },
1073
- },
1074
- actions: [
1075
- 'create',
1076
- 'edit',
1077
- 'delete',
1078
- 'clear',
1079
- 'format',
1080
- 'addCue',
1081
- 'removeCue',
1082
- 'setTiming',
1083
- 'addKeyPoint',
1084
- 'addQuestion',
1085
- 'print',
1086
- 'export',
1087
- ],
1088
- events: [
1089
- 'created',
1090
- 'edited',
1091
- 'deleted',
1092
- 'cleared',
1093
- 'formatted',
1094
- 'cueAdded',
1095
- 'cueRemoved',
1096
- 'timingSet',
1097
- 'keyPointAdded',
1098
- 'questionAdded',
1099
- 'printed',
1100
- 'exported',
1101
- ],
1102
- };
1103
- // =============================================================================
1104
- // Animation
1105
- // =============================================================================
1106
- /**
1107
- * Animation entity
1108
- *
1109
- * Represents an animation effect applied to a slide or element.
1110
- */
1111
- export const Animation = {
1112
- singular: 'animation',
1113
- plural: 'animations',
1114
- description: 'An animation effect applied to a slide or element',
1115
- properties: {
1116
- // Type
1117
- type: {
1118
- type: 'string',
1119
- description: 'Animation type: entrance, emphasis, exit, motion',
1120
- examples: ['entrance', 'emphasis', 'exit', 'motion'],
1121
- },
1122
- effect: {
1123
- type: 'string',
1124
- description: 'Animation effect name',
1125
- examples: [
1126
- 'fade',
1127
- 'fly',
1128
- 'wipe',
1129
- 'split',
1130
- 'shape',
1131
- 'wheel',
1132
- 'zoom',
1133
- 'bounce',
1134
- 'spin',
1135
- 'grow',
1136
- 'shrink',
1137
- 'pulse',
1138
- ],
1139
- },
1140
- variant: {
1141
- type: 'string',
1142
- optional: true,
1143
- description: 'Effect variant or direction',
1144
- examples: ['left', 'right', 'up', 'down', 'in', 'out'],
1145
- },
1146
- // Timing
1147
- trigger: {
1148
- type: 'string',
1149
- description: 'Animation trigger: on-click, with-previous, after-previous, auto',
1150
- examples: ['on-click', 'with-previous', 'after-previous', 'auto'],
1151
- },
1152
- order: {
1153
- type: 'number',
1154
- description: 'Animation sequence order',
1155
- },
1156
- delay: {
1157
- type: 'number',
1158
- optional: true,
1159
- description: 'Delay before animation starts in milliseconds',
1160
- },
1161
- duration: {
1162
- type: 'number',
1163
- optional: true,
1164
- description: 'Animation duration in milliseconds',
1165
- },
1166
- // Easing
1167
- easing: {
1168
- type: 'string',
1169
- optional: true,
1170
- description: 'Easing function',
1171
- examples: ['linear', 'ease', 'ease-in', 'ease-out', 'ease-in-out', 'bounce', 'elastic'],
1172
- },
1173
- // Motion path (for motion animations)
1174
- motionPath: {
1175
- type: 'json',
1176
- optional: true,
1177
- description: 'Motion path configuration',
1178
- },
1179
- // Options
1180
- reverse: {
1181
- type: 'boolean',
1182
- optional: true,
1183
- description: 'Whether animation plays in reverse',
1184
- },
1185
- rewind: {
1186
- type: 'boolean',
1187
- optional: true,
1188
- description: 'Whether element rewinds after animation',
1189
- },
1190
- loop: {
1191
- type: 'boolean',
1192
- optional: true,
1193
- description: 'Whether animation loops',
1194
- },
1195
- loopCount: {
1196
- type: 'number',
1197
- optional: true,
1198
- description: 'Number of times to loop',
1199
- },
1200
- // Sound
1201
- soundEffect: {
1202
- type: 'url',
1203
- optional: true,
1204
- description: 'Sound effect URL',
1205
- },
1206
- // Metadata
1207
- metadata: {
1208
- type: 'json',
1209
- optional: true,
1210
- description: 'Custom metadata',
1211
- },
1212
- },
1213
- relationships: {
1214
- slide: {
1215
- type: 'Slide',
1216
- backref: 'animations',
1217
- description: 'Parent slide',
1218
- },
1219
- element: {
1220
- type: 'SlideElement',
1221
- backref: 'animations',
1222
- required: false,
1223
- description: 'Element being animated',
1224
- },
1225
- },
1226
- actions: [
1227
- 'create',
1228
- 'edit',
1229
- 'delete',
1230
- 'duplicate',
1231
- 'reorder',
1232
- 'play',
1233
- 'pause',
1234
- 'stop',
1235
- 'reset',
1236
- 'preview',
1237
- 'setTiming',
1238
- 'setEffect',
1239
- 'setTrigger',
1240
- ],
1241
- events: [
1242
- 'created',
1243
- 'edited',
1244
- 'deleted',
1245
- 'duplicated',
1246
- 'reordered',
1247
- 'played',
1248
- 'paused',
1249
- 'stopped',
1250
- 'reset',
1251
- 'timingSet',
1252
- 'effectSet',
1253
- 'triggerSet',
1254
- ],
1255
- };
1256
- // =============================================================================
1257
- // Export all entities as a schema
1258
- // =============================================================================
1259
- /**
1260
- * All presentation entity types
1261
- */
1262
- export const PresentationEntities = {
1263
- Presentation,
1264
- Slide,
1265
- SlideElement,
1266
- SpeakerNotes,
1267
- Animation,
1268
- };
1269
- /**
1270
- * Entity categories for organization
1271
- */
1272
- export const PresentationCategories = {
1273
- presentations: ['Presentation', 'Slide', 'SlideElement', 'SpeakerNotes', 'Animation'],
1274
- };