@canva/design 2.6.0 → 2.6.1

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.
package/index.d.ts CHANGED
@@ -1792,6 +1792,15 @@ export declare namespace DesignEditing {
1792
1792
  | EmbedElement
1793
1793
  | TextElement
1794
1794
  | UnsupportedElement;
1795
+ /**
1796
+ * @public
1797
+ * An element state that can be inserted into a page.
1798
+ */
1799
+ export type InsertableElementState =
1800
+ | RectElementState
1801
+ | ShapeElementState
1802
+ | EmbedElementState
1803
+ | TextElementState;
1795
1804
  /**
1796
1805
  * @public
1797
1806
  * A list of elements.
@@ -1816,6 +1825,10 @@ export declare namespace DesignEditing {
1816
1825
  ref: AbsoluteElement | undefined,
1817
1826
  state: RectElementState,
1818
1827
  ): RectElement;
1828
+ insertBefore(
1829
+ ref: AbsoluteElement | undefined,
1830
+ state: InsertableElementState,
1831
+ ): AbsoluteElement;
1819
1832
  insertAfter(
1820
1833
  ref: AbsoluteElement | undefined,
1821
1834
  state: EmbedElementState,
@@ -1832,6 +1845,10 @@ export declare namespace DesignEditing {
1832
1845
  ref: AbsoluteElement | undefined,
1833
1846
  state: RectElementState,
1834
1847
  ): RectElement;
1848
+ insertAfter(
1849
+ ref: AbsoluteElement | undefined,
1850
+ state: InsertableElementState,
1851
+ ): AbsoluteElement;
1835
1852
  }
1836
1853
 
1837
1854
  /**
@@ -112,7 +112,21 @@ class FakeDesignInteractionClient {
112
112
  });
113
113
  }
114
114
  async openDesign(options, callback) {
115
- throw new Error('Not yet implemented');
115
+ await this.delay();
116
+ await callback({
117
+ page: fakePage,
118
+ sync: async ()=>{
119
+ await this.delay();
120
+ },
121
+ helpers: {
122
+ elementStateBuilder: fakeElementStateBuilder,
123
+ group: fakeAsyncOperations.group,
124
+ ungroup: fakeAsyncOperations.ungroup,
125
+ snapshot: ()=>{
126
+ return {};
127
+ }
128
+ }
129
+ });
116
130
  }
117
131
  constructor(delay){
118
132
  this.delay = delay;
@@ -160,3 +174,193 @@ const fakePageDimensions = {
160
174
  width: 800,
161
175
  height: 600
162
176
  };
177
+ const fakeFill = {
178
+ mediaContainer: {
179
+ ref: undefined,
180
+ set (state) {}
181
+ },
182
+ colorContainer: {
183
+ ref: {
184
+ type: 'solid',
185
+ color: '#000000'
186
+ },
187
+ set (state) {}
188
+ }
189
+ };
190
+ const fakeColorContainer = {
191
+ ref: {
192
+ type: 'solid',
193
+ color: '#000000'
194
+ },
195
+ set (state) {}
196
+ };
197
+ const fakeElementList = {
198
+ forEach (callback) {},
199
+ delete (item) {},
200
+ moveAfter (ref, item) {},
201
+ moveBefore (ref, item) {},
202
+ toArray () {
203
+ return [
204
+ fakeRectElement,
205
+ fakeShapeElement
206
+ ];
207
+ },
208
+ count () {
209
+ return 0;
210
+ },
211
+ filter (filter) {},
212
+ insertAfter (ref, state) {
213
+ return fakeRectElement;
214
+ },
215
+ insertBefore (ref, state) {
216
+ return fakeRectElement;
217
+ }
218
+ };
219
+ const fakePage = {
220
+ type: 'absolute',
221
+ locked: false,
222
+ dimensions: fakePageDimensions,
223
+ background: fakeFill,
224
+ elements: fakeElementList
225
+ };
226
+ const fakeElement = {
227
+ top: 0,
228
+ left: 0,
229
+ rotation: 0,
230
+ transparency: 0,
231
+ locked: true,
232
+ width: 100,
233
+ height: 100
234
+ };
235
+ const fakeRectElement = {
236
+ ...fakeElement,
237
+ type: 'rect',
238
+ fill: fakeFill,
239
+ stroke: {
240
+ weight: 10,
241
+ colorContainer: fakeColorContainer
242
+ }
243
+ };
244
+ const fakeShapeElement = {
245
+ ...fakeElement,
246
+ type: 'shape',
247
+ viewBox: {
248
+ top: 0,
249
+ left: 0,
250
+ width: 100,
251
+ height: 100
252
+ },
253
+ paths: {
254
+ count: ()=>0,
255
+ toArray: ()=>[],
256
+ forEach: (callback)=>{},
257
+ filter: (filter)=>[]
258
+ }
259
+ };
260
+ const fakeEmbedElement = {
261
+ ...fakeElement,
262
+ type: 'embed',
263
+ url: 'https://canva.dev/docs/apps/testing/'
264
+ };
265
+ const fakeTextElement = {
266
+ ...fakeElement,
267
+ type: 'text',
268
+ text: fakeRichtextRange
269
+ };
270
+ const fakeElementStateBuilder = {
271
+ createEmbedElement (opts) {
272
+ return fakeEmbedElement;
273
+ },
274
+ createRectElement (opts) {
275
+ return {
276
+ ...fakeRectElement,
277
+ fill: {
278
+ colorContainer: {
279
+ type: 'solid',
280
+ color: '#000000'
281
+ },
282
+ mediaContainer: undefined
283
+ },
284
+ stroke: {
285
+ weight: 10,
286
+ colorContainer: {
287
+ type: 'solid',
288
+ color: '#000000'
289
+ }
290
+ }
291
+ };
292
+ },
293
+ createRichtextRange () {
294
+ return fakeRichtextRange;
295
+ },
296
+ createShapeElement (opts) {
297
+ return {
298
+ ...fakeShapeElement,
299
+ paths: []
300
+ };
301
+ },
302
+ createTextElement (opts) {
303
+ return {
304
+ ...fakeTextElement,
305
+ text: {
306
+ regions: []
307
+ }
308
+ };
309
+ }
310
+ };
311
+ const fakeAsyncOperations = {
312
+ async group () {
313
+ const fakeGroupElement = {
314
+ top: 0,
315
+ left: 0,
316
+ width: 100,
317
+ height: 100,
318
+ locked: false,
319
+ rotation: 0,
320
+ transparency: 0,
321
+ type: 'group',
322
+ contents: {
323
+ count: ()=>0,
324
+ toArray: ()=>[],
325
+ forEach: (callback)=>{},
326
+ filter: (filter)=>[]
327
+ }
328
+ };
329
+ return fakeGroupElement;
330
+ },
331
+ async ungroup () {
332
+ const fakeRectElement = {
333
+ top: 0,
334
+ left: 0,
335
+ width: 100,
336
+ height: 100,
337
+ locked: false,
338
+ rotation: 0,
339
+ transparency: 0,
340
+ type: 'rect',
341
+ fill: {
342
+ mediaContainer: {
343
+ set () {},
344
+ ref: undefined
345
+ },
346
+ colorContainer: {
347
+ set () {},
348
+ ref: undefined
349
+ }
350
+ },
351
+ stroke: {
352
+ weight: 10,
353
+ colorContainer: {
354
+ set () {},
355
+ ref: {
356
+ type: 'solid',
357
+ color: '#000000'
358
+ }
359
+ }
360
+ }
361
+ };
362
+ return [
363
+ fakeRectElement
364
+ ];
365
+ }
366
+ };
@@ -17,4 +17,4 @@ function _export_star(from, to) {
17
17
  return from;
18
18
  }
19
19
  var _window___canva___sdkRegistration, _window___canva__;
20
- (_window___canva__ = window.__canva__) === null || _window___canva__ === void 0 ? void 0 : (_window___canva___sdkRegistration = _window___canva__.sdkRegistration) === null || _window___canva___sdkRegistration === void 0 ? void 0 : _window___canva___sdkRegistration.registerPackageVersion('design', '2.6.0', 'ga');
20
+ (_window___canva__ = window.__canva__) === null || _window___canva__ === void 0 ? void 0 : (_window___canva___sdkRegistration = _window___canva__.sdkRegistration) === null || _window___canva___sdkRegistration === void 0 ? void 0 : _window___canva___sdkRegistration.registerPackageVersion('design', '2.6.1', 'ga');
@@ -102,7 +102,21 @@ export class FakeDesignInteractionClient {
102
102
  });
103
103
  }
104
104
  async openDesign(options, callback) {
105
- throw new Error('Not yet implemented');
105
+ await this.delay();
106
+ await callback({
107
+ page: fakePage,
108
+ sync: async ()=>{
109
+ await this.delay();
110
+ },
111
+ helpers: {
112
+ elementStateBuilder: fakeElementStateBuilder,
113
+ group: fakeAsyncOperations.group,
114
+ ungroup: fakeAsyncOperations.ungroup,
115
+ snapshot: ()=>{
116
+ return {};
117
+ }
118
+ }
119
+ });
106
120
  }
107
121
  constructor(delay){
108
122
  this.delay = delay;
@@ -150,3 +164,193 @@ const fakePageDimensions = {
150
164
  width: 800,
151
165
  height: 600
152
166
  };
167
+ const fakeFill = {
168
+ mediaContainer: {
169
+ ref: undefined,
170
+ set (state) {}
171
+ },
172
+ colorContainer: {
173
+ ref: {
174
+ type: 'solid',
175
+ color: '#000000'
176
+ },
177
+ set (state) {}
178
+ }
179
+ };
180
+ const fakeColorContainer = {
181
+ ref: {
182
+ type: 'solid',
183
+ color: '#000000'
184
+ },
185
+ set (state) {}
186
+ };
187
+ const fakeElementList = {
188
+ forEach (callback) {},
189
+ delete (item) {},
190
+ moveAfter (ref, item) {},
191
+ moveBefore (ref, item) {},
192
+ toArray () {
193
+ return [
194
+ fakeRectElement,
195
+ fakeShapeElement
196
+ ];
197
+ },
198
+ count () {
199
+ return 0;
200
+ },
201
+ filter (filter) {},
202
+ insertAfter (ref, state) {
203
+ return fakeRectElement;
204
+ },
205
+ insertBefore (ref, state) {
206
+ return fakeRectElement;
207
+ }
208
+ };
209
+ const fakePage = {
210
+ type: 'absolute',
211
+ locked: false,
212
+ dimensions: fakePageDimensions,
213
+ background: fakeFill,
214
+ elements: fakeElementList
215
+ };
216
+ const fakeElement = {
217
+ top: 0,
218
+ left: 0,
219
+ rotation: 0,
220
+ transparency: 0,
221
+ locked: true,
222
+ width: 100,
223
+ height: 100
224
+ };
225
+ const fakeRectElement = {
226
+ ...fakeElement,
227
+ type: 'rect',
228
+ fill: fakeFill,
229
+ stroke: {
230
+ weight: 10,
231
+ colorContainer: fakeColorContainer
232
+ }
233
+ };
234
+ const fakeShapeElement = {
235
+ ...fakeElement,
236
+ type: 'shape',
237
+ viewBox: {
238
+ top: 0,
239
+ left: 0,
240
+ width: 100,
241
+ height: 100
242
+ },
243
+ paths: {
244
+ count: ()=>0,
245
+ toArray: ()=>[],
246
+ forEach: (callback)=>{},
247
+ filter: (filter)=>[]
248
+ }
249
+ };
250
+ const fakeEmbedElement = {
251
+ ...fakeElement,
252
+ type: 'embed',
253
+ url: 'https://canva.dev/docs/apps/testing/'
254
+ };
255
+ const fakeTextElement = {
256
+ ...fakeElement,
257
+ type: 'text',
258
+ text: fakeRichtextRange
259
+ };
260
+ const fakeElementStateBuilder = {
261
+ createEmbedElement (opts) {
262
+ return fakeEmbedElement;
263
+ },
264
+ createRectElement (opts) {
265
+ return {
266
+ ...fakeRectElement,
267
+ fill: {
268
+ colorContainer: {
269
+ type: 'solid',
270
+ color: '#000000'
271
+ },
272
+ mediaContainer: undefined
273
+ },
274
+ stroke: {
275
+ weight: 10,
276
+ colorContainer: {
277
+ type: 'solid',
278
+ color: '#000000'
279
+ }
280
+ }
281
+ };
282
+ },
283
+ createRichtextRange () {
284
+ return fakeRichtextRange;
285
+ },
286
+ createShapeElement (opts) {
287
+ return {
288
+ ...fakeShapeElement,
289
+ paths: []
290
+ };
291
+ },
292
+ createTextElement (opts) {
293
+ return {
294
+ ...fakeTextElement,
295
+ text: {
296
+ regions: []
297
+ }
298
+ };
299
+ }
300
+ };
301
+ const fakeAsyncOperations = {
302
+ async group () {
303
+ const fakeGroupElement = {
304
+ top: 0,
305
+ left: 0,
306
+ width: 100,
307
+ height: 100,
308
+ locked: false,
309
+ rotation: 0,
310
+ transparency: 0,
311
+ type: 'group',
312
+ contents: {
313
+ count: ()=>0,
314
+ toArray: ()=>[],
315
+ forEach: (callback)=>{},
316
+ filter: (filter)=>[]
317
+ }
318
+ };
319
+ return fakeGroupElement;
320
+ },
321
+ async ungroup () {
322
+ const fakeRectElement = {
323
+ top: 0,
324
+ left: 0,
325
+ width: 100,
326
+ height: 100,
327
+ locked: false,
328
+ rotation: 0,
329
+ transparency: 0,
330
+ type: 'rect',
331
+ fill: {
332
+ mediaContainer: {
333
+ set () {},
334
+ ref: undefined
335
+ },
336
+ colorContainer: {
337
+ set () {},
338
+ ref: undefined
339
+ }
340
+ },
341
+ stroke: {
342
+ weight: 10,
343
+ colorContainer: {
344
+ set () {},
345
+ ref: {
346
+ type: 'solid',
347
+ color: '#000000'
348
+ }
349
+ }
350
+ }
351
+ };
352
+ return [
353
+ fakeRectElement
354
+ ];
355
+ }
356
+ };
@@ -1,3 +1,3 @@
1
1
  var _window___canva___sdkRegistration, _window___canva__;
2
2
  export * from './public';
3
- (_window___canva__ = window.__canva__) === null || _window___canva__ === void 0 ? void 0 : (_window___canva___sdkRegistration = _window___canva__.sdkRegistration) === null || _window___canva___sdkRegistration === void 0 ? void 0 : _window___canva___sdkRegistration.registerPackageVersion('design', '2.6.0', 'ga');
3
+ (_window___canva__ = window.__canva__) === null || _window___canva__ === void 0 ? void 0 : (_window___canva___sdkRegistration = _window___canva__.sdkRegistration) === null || _window___canva___sdkRegistration === void 0 ? void 0 : _window___canva___sdkRegistration.registerPackageVersion('design', '2.6.1', 'ga');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@canva/design",
3
- "version": "2.6.0",
3
+ "version": "2.6.1",
4
4
  "description": "The Canva Apps SDK design library",
5
5
  "author": "Canva Pty Ltd.",
6
6
  "license": "SEE LICENSE IN LICENSE.md FILE",