@lvl99dotcom/paintcanvas 0.7.0 → 0.8.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 (89) hide show
  1. package/README.md +1 -0
  2. package/dist/lib/assets/index.d.ts +92 -0
  3. package/dist/lib/assets/index.js +106 -0
  4. package/dist/lib/assets/schema.d.ts +151 -0
  5. package/dist/lib/assets/schema.js +76 -0
  6. package/dist/lib/brushes/presetFile/index.d.ts +6 -27
  7. package/dist/lib/brushes/presetFile/index.js +34 -47
  8. package/dist/lib/brushes/types/index.d.ts +2 -11
  9. package/dist/lib/classes/AssetSync/index.d.ts +45 -0
  10. package/dist/lib/classes/AssetSync/index.js +80 -0
  11. package/dist/lib/classes/ColourPalettes/index.d.ts +83 -0
  12. package/dist/lib/classes/ColourPalettes/index.js +165 -0
  13. package/dist/lib/classes/CustomPresets/index.d.ts +14 -15
  14. package/dist/lib/classes/CustomPresets/index.js +25 -10
  15. package/dist/lib/classes/LayerAutosave/index.d.ts +9 -2
  16. package/dist/lib/classes/LayerAutosave/index.js +16 -6
  17. package/dist/lib/classes/PaintCanvas/index.d.ts +111 -23
  18. package/dist/lib/classes/PaintCanvas/index.js +219 -58
  19. package/dist/lib/classes/Palette/index.d.ts +3 -2
  20. package/dist/lib/classes/Palette/index.js +3 -2
  21. package/dist/lib/classes/ProfileGraphs/index.d.ts +13 -2
  22. package/dist/lib/classes/ProfileGraphs/index.js +22 -2
  23. package/dist/lib/classes/RemoteDocumentAutosave/index.d.ts +73 -0
  24. package/dist/lib/classes/RemoteDocumentAutosave/index.js +119 -0
  25. package/dist/lib/classes/SettingsAutosave/index.d.ts +7 -3
  26. package/dist/lib/classes/SettingsAutosave/index.js +28 -7
  27. package/dist/lib/classes/SettingsExtensions/index.d.ts +67 -0
  28. package/dist/lib/classes/SettingsExtensions/index.js +88 -0
  29. package/dist/lib/document/index.d.ts +61 -4
  30. package/dist/lib/document/index.js +173 -4
  31. package/dist/lib/document/schema.d.ts +154 -39
  32. package/dist/lib/document/schema.js +91 -25
  33. package/dist/lib/messages/schema.d.ts +176 -74
  34. package/dist/lib/messages/schema.js +2 -1
  35. package/dist/lib/palette/index.d.ts +8 -42
  36. package/dist/lib/palette/index.js +26 -59
  37. package/dist/lib/palette/schema.d.ts +111 -22
  38. package/dist/lib/palette/schema.js +51 -26
  39. package/dist/lib/presets/index.d.ts +1 -9
  40. package/dist/lib/presets/index.js +4 -10
  41. package/dist/lib/presets/schema.d.ts +118 -73
  42. package/dist/lib/presets/schema.js +28 -60
  43. package/dist/lib/profiles/profileFile/index.d.ts +10 -0
  44. package/dist/lib/profiles/profileFile/index.js +19 -0
  45. package/dist/lib/profiles/schema.d.ts +96 -3
  46. package/dist/lib/profiles/schema.js +31 -7
  47. package/dist/lib/schemas/index.d.ts +42 -0
  48. package/dist/lib/schemas/index.js +60 -0
  49. package/dist/lib/settings/index.d.ts +37 -22
  50. package/dist/lib/settings/index.js +78 -37
  51. package/dist/lib/settings/schema.d.ts +198 -76
  52. package/dist/lib/settings/schema.js +92 -86
  53. package/dist/lib/storage/index.d.ts +82 -3
  54. package/dist/lib/storage/index.js +82 -5
  55. package/dist/lib/validation/validators.generated.d.ts +19 -8
  56. package/dist/lib/validation/validators.generated.js +44716 -18900
  57. package/dist/lib/version/index.js +1 -1
  58. package/dist/locales/en-GB.js +23 -5
  59. package/dist/locales/en-US.js +23 -5
  60. package/dist/locales/fr.js +23 -5
  61. package/dist/locales/ja.js +23 -5
  62. package/dist/locales/ko.js +23 -5
  63. package/dist/locales/zh-Hans.js +23 -5
  64. package/dist/locales/zh-Hant.js +23 -5
  65. package/dist/package.js +1 -1
  66. package/dist/testing/app.d.ts +6 -2
  67. package/dist/testing/app.js +7 -2
  68. package/dist/testing/documentStore.d.ts +26 -0
  69. package/dist/testing/documentStore.js +31 -0
  70. package/dist/ui/elements/PaintCanvas/index.d.ts +6 -2
  71. package/dist/ui/elements/PaintCanvas/index.js +20 -6
  72. package/dist/ui/elements/PcAppSettings/index.d.ts +5 -6
  73. package/dist/ui/elements/PcAppSettings/index.js +17 -27
  74. package/dist/ui/elements/PcPanelBrushes/index.d.ts +1 -1
  75. package/dist/ui/elements/PcPanelBrushes/index.js +22 -28
  76. package/dist/ui/elements/PcPanelBrushes/style.js +1 -1
  77. package/dist/ui/elements/PcPanelColours/index.d.ts +56 -19
  78. package/dist/ui/elements/PcPanelColours/index.js +251 -104
  79. package/dist/ui/elements/PcPanelColours/style.js +1 -1
  80. package/dist/ui/elements/PcStats/index.d.ts +8 -4
  81. package/dist/ui/elements/PcStats/index.js +39 -5
  82. package/locales/en-GB.json +23 -5
  83. package/locales/en-US.json +23 -5
  84. package/locales/fr.json +23 -5
  85. package/locales/ja.json +23 -5
  86. package/locales/ko.json +23 -5
  87. package/locales/zh-Hans.json +23 -5
  88. package/locales/zh-Hant.json +23 -5
  89. package/package.json +2 -1
@@ -21,7 +21,7 @@ var readCommit = (read) => {
21
21
  }
22
22
  };
23
23
  /** The short hash of the commit PaintCanvas was built from, e.g. `ac12a0d` (`unknown` when it can't be told) */
24
- var PAINTCANVAS_COMMIT = readCommit(() => "9f00978");
24
+ var PAINTCANVAS_COMMIT = readCommit(() => "7bc3cab");
25
25
  /** Where PaintCanvas's source code is */
26
26
  var PAINTCANVAS_REPOSITORY_URL = "https://github.com/lvl99/paintcanvas";
27
27
  /**
@@ -67,8 +67,8 @@ var en_GB_default = {
67
67
  "paintCanvas.palette.hue": "Hue",
68
68
  "paintCanvas.palette.saturation": "Saturation",
69
69
  "paintCanvas.palette.lightness": "Lightness",
70
- "paintCanvas.palette.saved": "Saved colours",
71
- "paintCanvas.palette.add": "Save {colour} to the palette",
70
+ "paintCanvas.palette.saved": "Colour palettes",
71
+ "paintCanvas.palette.add": "Save {colour} to {name}",
72
72
  "paintCanvas.palette.colourActions": "{colour} actions",
73
73
  "paintCanvas.palette.deleteColour": "Delete colour",
74
74
  "paintCanvas.palette.deleteMessage": "Do you want to delete this colour?",
@@ -76,11 +76,24 @@ var en_GB_default = {
76
76
  "paintCanvas.palette.import": "Import",
77
77
  "paintCanvas.palette.export": "Export",
78
78
  "paintCanvas.palette.importFile": "Import colour palette file",
79
- "paintCanvas.palette.imported.one": "Added {count} colour",
80
- "paintCanvas.palette.imported.other": "Added {count} colours",
79
+ "paintCanvas.palette.imported.one": "Imported {count} colour palette",
80
+ "paintCanvas.palette.imported.other": "Imported {count} colour palettes",
81
81
  "paintCanvas.palette.fileIncompatible": "Colour palette JSON file not compatible",
82
+ "paintCanvas.palette.fileUnsupported": "Unsupported colour palettes file version",
82
83
  "paintCanvas.palette.fileReadFailed": "Failed to read colour palette JSON file",
83
84
  "paintCanvas.palette.exportFailed": "Error exporting colour palette JSON file",
85
+ "paintCanvas.palette.newPalette": "New palette",
86
+ "paintCanvas.palette.newPaletteHeading": "New colour palette",
87
+ "paintCanvas.palette.name": "Name",
88
+ "paintCanvas.palette.defaultName": "My palette",
89
+ "paintCanvas.palette.renameHeading": "Rename colour palette",
90
+ "paintCanvas.palette.paletteActions": "{name} actions",
91
+ "paintCanvas.palette.renamePalette": "Rename…",
92
+ "paintCanvas.palette.exportPalette": "Export",
93
+ "paintCanvas.palette.deletePalette": "Delete…",
94
+ "paintCanvas.palette.deletePaletteHeading": "Delete colour palette",
95
+ "paintCanvas.palette.deletePaletteConfirm": "Delete \"{name}\"? This can't be undone.",
96
+ "paintCanvas.palette.nothingToExport": "No colour palettes to export",
84
97
  "paintCanvas.toolbar.label": "Tools",
85
98
  "paintCanvas.toolbar.layers": "Layers",
86
99
  "paintCanvas.toolbar.menu": "Menu",
@@ -109,7 +122,7 @@ var en_GB_default = {
109
122
  "paintCanvas.brushMenu.size": "{tool} size",
110
123
  "paintCanvas.numberSlider.hint": "Drag sideways to change, or tap to type",
111
124
  "paintCanvas.brushMenu.newPreset": "New preset",
112
- "paintCanvas.brushMenu.create": "Create",
125
+ "paintCanvas.brushMenu.create": "New brush",
113
126
  "paintCanvas.brushMenu.import": "Import",
114
127
  "paintCanvas.brushMenu.export": "Export",
115
128
  "paintCanvas.presets.myPresets": "My presets",
@@ -126,6 +139,7 @@ var en_GB_default = {
126
139
  "paintCanvas.presets.imported.one": "Imported {count} brush preset",
127
140
  "paintCanvas.presets.imported.other": "Imported {count} brush presets",
128
141
  "paintCanvas.presets.fileIncompatible": "Brush preset JSON file not compatible",
142
+ "paintCanvas.presets.fileUnsupported": "Unsupported brush presets file version",
129
143
  "paintCanvas.presets.fileReadFailed": "Failed to read brush preset JSON file",
130
144
  "paintCanvas.presets.exportFailed": "Error exporting brush preset JSON file",
131
145
  "paintCanvas.presets.nothingToExport": "No brush presets to export",
@@ -291,6 +305,7 @@ var en_GB_default = {
291
305
  "paintCanvas.settings.importFile": "Import settings file",
292
306
  "paintCanvas.settings.imported": "Settings imported",
293
307
  "paintCanvas.settings.fileIncompatible": "Settings JSON file not compatible",
308
+ "paintCanvas.settings.fileUnsupported": "Unsupported settings file version",
294
309
  "paintCanvas.settings.fileReadFailed": "Failed to read settings JSON file",
295
310
  "paintCanvas.settings.exportFailed": "Error exporting settings JSON file",
296
311
  "paintCanvas.settings.gpu": "Draw with the GPU",
@@ -301,6 +316,9 @@ var en_GB_default = {
301
316
  "paintCanvas.stats.zoom": "Zoom: {zoom}",
302
317
  "paintCanvas.stats.colour": "Colour: {colour}",
303
318
  "paintCanvas.stats.stored": "Stored: {size}",
319
+ "paintCanvas.stats.remoteSaving": "Saving to {store}…",
320
+ "paintCanvas.stats.remoteFailed": "Couldn't save to {store}",
321
+ "paintCanvas.stats.remoteStore": "the cloud",
304
322
  "paintCanvas.theme.label": "Theme",
305
323
  "paintCanvas.theme.light": "Light",
306
324
  "paintCanvas.theme.dark": "Dark",
@@ -67,8 +67,8 @@ var en_US_default = {
67
67
  "paintCanvas.palette.hue": "Hue",
68
68
  "paintCanvas.palette.saturation": "Saturation",
69
69
  "paintCanvas.palette.lightness": "Lightness",
70
- "paintCanvas.palette.saved": "Saved colors",
71
- "paintCanvas.palette.add": "Save {colour} to the palette",
70
+ "paintCanvas.palette.saved": "Color palettes",
71
+ "paintCanvas.palette.add": "Save {colour} to {name}",
72
72
  "paintCanvas.palette.colourActions": "{colour} actions",
73
73
  "paintCanvas.palette.deleteColour": "Delete color",
74
74
  "paintCanvas.palette.deleteMessage": "Do you want to delete this color?",
@@ -76,11 +76,24 @@ var en_US_default = {
76
76
  "paintCanvas.palette.import": "Import",
77
77
  "paintCanvas.palette.export": "Export",
78
78
  "paintCanvas.palette.importFile": "Import color palette file",
79
- "paintCanvas.palette.imported.one": "Added {count} color",
80
- "paintCanvas.palette.imported.other": "Added {count} colors",
79
+ "paintCanvas.palette.imported.one": "Imported {count} color palette",
80
+ "paintCanvas.palette.imported.other": "Imported {count} color palettes",
81
81
  "paintCanvas.palette.fileIncompatible": "Color palette JSON file not compatible",
82
+ "paintCanvas.palette.fileUnsupported": "Unsupported color palettes file version",
82
83
  "paintCanvas.palette.fileReadFailed": "Failed to read color palette JSON file",
83
84
  "paintCanvas.palette.exportFailed": "Error exporting color palette JSON file",
85
+ "paintCanvas.palette.newPalette": "New palette",
86
+ "paintCanvas.palette.newPaletteHeading": "New color palette",
87
+ "paintCanvas.palette.name": "Name",
88
+ "paintCanvas.palette.defaultName": "My palette",
89
+ "paintCanvas.palette.renameHeading": "Rename color palette",
90
+ "paintCanvas.palette.paletteActions": "{name} actions",
91
+ "paintCanvas.palette.renamePalette": "Rename…",
92
+ "paintCanvas.palette.exportPalette": "Export",
93
+ "paintCanvas.palette.deletePalette": "Delete…",
94
+ "paintCanvas.palette.deletePaletteHeading": "Delete color palette",
95
+ "paintCanvas.palette.deletePaletteConfirm": "Delete \"{name}\"? This can't be undone.",
96
+ "paintCanvas.palette.nothingToExport": "No color palettes to export",
84
97
  "paintCanvas.toolbar.label": "Tools",
85
98
  "paintCanvas.toolbar.layers": "Layers",
86
99
  "paintCanvas.toolbar.menu": "Menu",
@@ -109,7 +122,7 @@ var en_US_default = {
109
122
  "paintCanvas.brushMenu.size": "{tool} size",
110
123
  "paintCanvas.numberSlider.hint": "Drag sideways to change, or tap to type",
111
124
  "paintCanvas.brushMenu.newPreset": "New preset",
112
- "paintCanvas.brushMenu.create": "Create",
125
+ "paintCanvas.brushMenu.create": "New brush",
113
126
  "paintCanvas.brushMenu.import": "Import",
114
127
  "paintCanvas.brushMenu.export": "Export",
115
128
  "paintCanvas.presets.myPresets": "My presets",
@@ -126,6 +139,7 @@ var en_US_default = {
126
139
  "paintCanvas.presets.imported.one": "Imported {count} brush preset",
127
140
  "paintCanvas.presets.imported.other": "Imported {count} brush presets",
128
141
  "paintCanvas.presets.fileIncompatible": "Brush preset JSON file not compatible",
142
+ "paintCanvas.presets.fileUnsupported": "Unsupported brush presets file version",
129
143
  "paintCanvas.presets.fileReadFailed": "Failed to read brush preset JSON file",
130
144
  "paintCanvas.presets.exportFailed": "Error exporting brush preset JSON file",
131
145
  "paintCanvas.presets.nothingToExport": "No brush presets to export",
@@ -291,6 +305,7 @@ var en_US_default = {
291
305
  "paintCanvas.settings.importFile": "Import settings file",
292
306
  "paintCanvas.settings.imported": "Settings imported",
293
307
  "paintCanvas.settings.fileIncompatible": "Settings JSON file not compatible",
308
+ "paintCanvas.settings.fileUnsupported": "Unsupported settings file version",
294
309
  "paintCanvas.settings.fileReadFailed": "Failed to read settings JSON file",
295
310
  "paintCanvas.settings.exportFailed": "Error exporting settings JSON file",
296
311
  "paintCanvas.settings.gpu": "Draw with the GPU",
@@ -301,6 +316,9 @@ var en_US_default = {
301
316
  "paintCanvas.stats.zoom": "Zoom: {zoom}",
302
317
  "paintCanvas.stats.colour": "Color: {colour}",
303
318
  "paintCanvas.stats.stored": "Stored: {size}",
319
+ "paintCanvas.stats.remoteSaving": "Saving to {store}…",
320
+ "paintCanvas.stats.remoteFailed": "Couldn't save to {store}",
321
+ "paintCanvas.stats.remoteStore": "the cloud",
304
322
  "paintCanvas.theme.label": "Theme",
305
323
  "paintCanvas.theme.light": "Light",
306
324
  "paintCanvas.theme.dark": "Dark",
@@ -67,8 +67,8 @@ var fr_default = {
67
67
  "paintCanvas.palette.hue": "Teinte",
68
68
  "paintCanvas.palette.saturation": "Saturation",
69
69
  "paintCanvas.palette.lightness": "Luminosité",
70
- "paintCanvas.palette.saved": "Couleurs enregistrées",
71
- "paintCanvas.palette.add": "Enregistrer {colour} dans la palette",
70
+ "paintCanvas.palette.saved": "Palettes de couleurs",
71
+ "paintCanvas.palette.add": "Enregistrer {colour} dans {name}",
72
72
  "paintCanvas.palette.colourActions": "Actions pour {colour}",
73
73
  "paintCanvas.palette.deleteColour": "Supprimer la couleur",
74
74
  "paintCanvas.palette.deleteMessage": "Voulez-vous supprimer cette couleur ?",
@@ -76,11 +76,24 @@ var fr_default = {
76
76
  "paintCanvas.palette.import": "Importer",
77
77
  "paintCanvas.palette.export": "Exporter",
78
78
  "paintCanvas.palette.importFile": "Importer un fichier de palette de couleurs",
79
- "paintCanvas.palette.imported.one": "{count} couleur ajoutée",
80
- "paintCanvas.palette.imported.other": "{count} couleurs ajoutées",
79
+ "paintCanvas.palette.imported.one": "{count} palette de couleurs importée",
80
+ "paintCanvas.palette.imported.other": "{count} palettes de couleurs importées",
81
81
  "paintCanvas.palette.fileIncompatible": "Fichier JSON de palette de couleurs incompatible",
82
+ "paintCanvas.palette.fileUnsupported": "Version de fichier de palettes de couleurs non prise en charge",
82
83
  "paintCanvas.palette.fileReadFailed": "Échec de la lecture du fichier JSON de palette de couleurs",
83
84
  "paintCanvas.palette.exportFailed": "Erreur lors de l'exportation du fichier JSON de palette de couleurs",
85
+ "paintCanvas.palette.newPalette": "Nouvelle palette",
86
+ "paintCanvas.palette.newPaletteHeading": "Nouvelle palette de couleurs",
87
+ "paintCanvas.palette.name": "Nom",
88
+ "paintCanvas.palette.defaultName": "Ma palette",
89
+ "paintCanvas.palette.renameHeading": "Renommer la palette de couleurs",
90
+ "paintCanvas.palette.paletteActions": "Actions de {name}",
91
+ "paintCanvas.palette.renamePalette": "Renommer…",
92
+ "paintCanvas.palette.exportPalette": "Exporter",
93
+ "paintCanvas.palette.deletePalette": "Supprimer…",
94
+ "paintCanvas.palette.deletePaletteHeading": "Supprimer la palette de couleurs",
95
+ "paintCanvas.palette.deletePaletteConfirm": "Supprimer « {name} » ? Cette action est irréversible.",
96
+ "paintCanvas.palette.nothingToExport": "Aucune palette de couleurs à exporter",
84
97
  "paintCanvas.toolbar.label": "Outils",
85
98
  "paintCanvas.toolbar.layers": "Calques",
86
99
  "paintCanvas.toolbar.menu": "Menu",
@@ -109,7 +122,7 @@ var fr_default = {
109
122
  "paintCanvas.brushMenu.size": "Taille\xA0: {tool}",
110
123
  "paintCanvas.numberSlider.hint": "Faire glisser latéralement pour modifier, ou toucher pour saisir",
111
124
  "paintCanvas.brushMenu.newPreset": "Nouveau préréglage",
112
- "paintCanvas.brushMenu.create": "Créer",
125
+ "paintCanvas.brushMenu.create": "Nouveau pinceau",
113
126
  "paintCanvas.brushMenu.import": "Importer",
114
127
  "paintCanvas.brushMenu.export": "Exporter",
115
128
  "paintCanvas.presets.myPresets": "Mes préréglages",
@@ -126,6 +139,7 @@ var fr_default = {
126
139
  "paintCanvas.presets.imported.one": "{count} préréglage de pinceau importé",
127
140
  "paintCanvas.presets.imported.other": "{count} préréglages de pinceau importés",
128
141
  "paintCanvas.presets.fileIncompatible": "Fichier JSON de préréglages de pinceau incompatible",
142
+ "paintCanvas.presets.fileUnsupported": "Version de fichier de préréglages de pinceau non prise en charge",
129
143
  "paintCanvas.presets.fileReadFailed": "Échec de la lecture du fichier JSON de préréglages de pinceau",
130
144
  "paintCanvas.presets.exportFailed": "Erreur lors de l’exportation du fichier JSON de préréglages de pinceau",
131
145
  "paintCanvas.presets.nothingToExport": "Aucun préréglage de pinceau à exporter",
@@ -291,6 +305,7 @@ var fr_default = {
291
305
  "paintCanvas.settings.importFile": "Importer un fichier de réglages",
292
306
  "paintCanvas.settings.imported": "Réglages importés",
293
307
  "paintCanvas.settings.fileIncompatible": "Fichier JSON de réglages incompatible",
308
+ "paintCanvas.settings.fileUnsupported": "Version de fichier de paramètres non prise en charge",
294
309
  "paintCanvas.settings.fileReadFailed": "Échec de la lecture du fichier JSON de réglages",
295
310
  "paintCanvas.settings.exportFailed": "Erreur lors de l'exportation du fichier JSON de réglages",
296
311
  "paintCanvas.settings.gpu": "Dessiner avec le GPU",
@@ -301,6 +316,9 @@ var fr_default = {
301
316
  "paintCanvas.stats.zoom": "Zoom\xA0: {zoom}",
302
317
  "paintCanvas.stats.colour": "Couleur\xA0: {colour}",
303
318
  "paintCanvas.stats.stored": "Stocké\xA0: {size}",
319
+ "paintCanvas.stats.remoteSaving": "Enregistrement dans {store}…",
320
+ "paintCanvas.stats.remoteFailed": "Impossible d'enregistrer dans {store}",
321
+ "paintCanvas.stats.remoteStore": "le cloud",
304
322
  "paintCanvas.theme.label": "Thème",
305
323
  "paintCanvas.theme.light": "Clair",
306
324
  "paintCanvas.theme.dark": "Sombre",
@@ -67,8 +67,8 @@ var ja_default = {
67
67
  "paintCanvas.palette.hue": "色相",
68
68
  "paintCanvas.palette.saturation": "彩度",
69
69
  "paintCanvas.palette.lightness": "明度",
70
- "paintCanvas.palette.saved": "保存した色",
71
- "paintCanvas.palette.add": "{colour}をパレットに保存",
70
+ "paintCanvas.palette.saved": "カラーパレット一覧",
71
+ "paintCanvas.palette.add": "{colour}を{name}に保存",
72
72
  "paintCanvas.palette.colourActions": "{colour}の操作",
73
73
  "paintCanvas.palette.deleteColour": "色を削除",
74
74
  "paintCanvas.palette.deleteMessage": "この色を削除しますか?",
@@ -76,11 +76,24 @@ var ja_default = {
76
76
  "paintCanvas.palette.import": "読み込み",
77
77
  "paintCanvas.palette.export": "書き出し",
78
78
  "paintCanvas.palette.importFile": "カラーパレットのファイルを読み込む",
79
- "paintCanvas.palette.imported.one": "{count}色を追加しました",
80
- "paintCanvas.palette.imported.other": "{count}色を追加しました",
79
+ "paintCanvas.palette.imported.one": "{count}個のカラーパレットを読み込みました",
80
+ "paintCanvas.palette.imported.other": "{count}個のカラーパレットを読み込みました",
81
81
  "paintCanvas.palette.fileIncompatible": "このカラーパレットのJSONファイルには対応していません",
82
+ "paintCanvas.palette.fileUnsupported": "サポートされていないカラーパレットファイルのバージョンです",
82
83
  "paintCanvas.palette.fileReadFailed": "カラーパレットのJSONファイルを読み込めませんでした",
83
84
  "paintCanvas.palette.exportFailed": "カラーパレットのJSONファイルを書き出せませんでした",
85
+ "paintCanvas.palette.newPalette": "新しいパレット",
86
+ "paintCanvas.palette.newPaletteHeading": "新しいカラーパレット",
87
+ "paintCanvas.palette.name": "名前",
88
+ "paintCanvas.palette.defaultName": "マイパレット",
89
+ "paintCanvas.palette.renameHeading": "カラーパレットの名前を変更",
90
+ "paintCanvas.palette.paletteActions": "{name}の操作",
91
+ "paintCanvas.palette.renamePalette": "名前を変更…",
92
+ "paintCanvas.palette.exportPalette": "書き出し",
93
+ "paintCanvas.palette.deletePalette": "削除…",
94
+ "paintCanvas.palette.deletePaletteHeading": "カラーパレットを削除",
95
+ "paintCanvas.palette.deletePaletteConfirm": "「{name}」を削除しますか?元に戻せません。",
96
+ "paintCanvas.palette.nothingToExport": "書き出すカラーパレットがありません",
84
97
  "paintCanvas.toolbar.label": "ツール",
85
98
  "paintCanvas.toolbar.layers": "レイヤー",
86
99
  "paintCanvas.toolbar.menu": "メニュー",
@@ -109,7 +122,7 @@ var ja_default = {
109
122
  "paintCanvas.brushMenu.size": "{tool}のサイズ",
110
123
  "paintCanvas.numberSlider.hint": "左右にドラッグして変更、タップして入力",
111
124
  "paintCanvas.brushMenu.newPreset": "新しいプリセット",
112
- "paintCanvas.brushMenu.create": "作成",
125
+ "paintCanvas.brushMenu.create": "新しいブラシ",
113
126
  "paintCanvas.brushMenu.import": "読み込み",
114
127
  "paintCanvas.brushMenu.export": "書き出し",
115
128
  "paintCanvas.presets.myPresets": "マイプリセット",
@@ -126,6 +139,7 @@ var ja_default = {
126
139
  "paintCanvas.presets.imported.one": "ブラシプリセットを{count}件読み込みました",
127
140
  "paintCanvas.presets.imported.other": "ブラシプリセットを{count}件読み込みました",
128
141
  "paintCanvas.presets.fileIncompatible": "このブラシプリセットのJSONファイルには対応していません",
142
+ "paintCanvas.presets.fileUnsupported": "サポートされていないブラシプリセットファイルのバージョンです",
129
143
  "paintCanvas.presets.fileReadFailed": "ブラシプリセットのJSONファイルを読み込めませんでした",
130
144
  "paintCanvas.presets.exportFailed": "ブラシプリセットのJSONファイルを書き出せませんでした",
131
145
  "paintCanvas.presets.nothingToExport": "書き出すブラシプリセットがありません",
@@ -291,6 +305,7 @@ var ja_default = {
291
305
  "paintCanvas.settings.importFile": "設定ファイルを読み込む",
292
306
  "paintCanvas.settings.imported": "設定を読み込みました",
293
307
  "paintCanvas.settings.fileIncompatible": "この設定のJSONファイルには対応していません",
308
+ "paintCanvas.settings.fileUnsupported": "サポートされていない設定ファイルのバージョンです",
294
309
  "paintCanvas.settings.fileReadFailed": "設定のJSONファイルを読み込めませんでした",
295
310
  "paintCanvas.settings.exportFailed": "設定のJSONファイルを書き出せませんでした",
296
311
  "paintCanvas.settings.gpu": "GPU で描画する",
@@ -301,6 +316,9 @@ var ja_default = {
301
316
  "paintCanvas.stats.zoom": "ズーム: {zoom}",
302
317
  "paintCanvas.stats.colour": "色: {colour}",
303
318
  "paintCanvas.stats.stored": "保存済み: {size}",
319
+ "paintCanvas.stats.remoteSaving": "{store}に保存中…",
320
+ "paintCanvas.stats.remoteFailed": "{store}に保存できませんでした",
321
+ "paintCanvas.stats.remoteStore": "クラウド",
304
322
  "paintCanvas.theme.label": "テーマ",
305
323
  "paintCanvas.theme.light": "ライト",
306
324
  "paintCanvas.theme.dark": "ダーク",
@@ -67,8 +67,8 @@ var ko_default = {
67
67
  "paintCanvas.palette.hue": "색조",
68
68
  "paintCanvas.palette.saturation": "채도",
69
69
  "paintCanvas.palette.lightness": "명도",
70
- "paintCanvas.palette.saved": "저장된 색상",
71
- "paintCanvas.palette.add": "{colour}을(를) 팔레트에 저장",
70
+ "paintCanvas.palette.saved": "색상 팔레트 목록",
71
+ "paintCanvas.palette.add": "{colour}을(를) {name}에 저장",
72
72
  "paintCanvas.palette.colourActions": "{colour} 작업",
73
73
  "paintCanvas.palette.deleteColour": "색상 삭제",
74
74
  "paintCanvas.palette.deleteMessage": "이 색상을 삭제할까요?",
@@ -76,11 +76,24 @@ var ko_default = {
76
76
  "paintCanvas.palette.import": "가져오기",
77
77
  "paintCanvas.palette.export": "내보내기",
78
78
  "paintCanvas.palette.importFile": "색상 팔레트 파일 가져오기",
79
- "paintCanvas.palette.imported.one": "색상 {count}개를 추가했습니다",
80
- "paintCanvas.palette.imported.other": "색상 {count}개를 추가했습니다",
79
+ "paintCanvas.palette.imported.one": "색상 팔레트 {count}개를 가져왔습니다",
80
+ "paintCanvas.palette.imported.other": "색상 팔레트 {count}개를 가져왔습니다",
81
81
  "paintCanvas.palette.fileIncompatible": "호환되지 않는 색상 팔레트 JSON 파일입니다",
82
+ "paintCanvas.palette.fileUnsupported": "지원되지 않는 색상 팔레트 파일 버전입니다",
82
83
  "paintCanvas.palette.fileReadFailed": "색상 팔레트 JSON 파일을 읽지 못했습니다",
83
84
  "paintCanvas.palette.exportFailed": "색상 팔레트 JSON 파일을 내보내지 못했습니다",
85
+ "paintCanvas.palette.newPalette": "새 팔레트",
86
+ "paintCanvas.palette.newPaletteHeading": "새 색상 팔레트",
87
+ "paintCanvas.palette.name": "이름",
88
+ "paintCanvas.palette.defaultName": "내 팔레트",
89
+ "paintCanvas.palette.renameHeading": "색상 팔레트 이름 바꾸기",
90
+ "paintCanvas.palette.paletteActions": "{name} 작업",
91
+ "paintCanvas.palette.renamePalette": "이름 바꾸기…",
92
+ "paintCanvas.palette.exportPalette": "내보내기",
93
+ "paintCanvas.palette.deletePalette": "삭제…",
94
+ "paintCanvas.palette.deletePaletteHeading": "색상 팔레트 삭제",
95
+ "paintCanvas.palette.deletePaletteConfirm": "\"{name}\"을(를) 삭제할까요? 되돌릴 수 없습니다.",
96
+ "paintCanvas.palette.nothingToExport": "내보낼 색상 팔레트가 없습니다",
84
97
  "paintCanvas.toolbar.label": "도구",
85
98
  "paintCanvas.toolbar.layers": "레이어",
86
99
  "paintCanvas.toolbar.menu": "메뉴",
@@ -109,7 +122,7 @@ var ko_default = {
109
122
  "paintCanvas.brushMenu.size": "{tool} 크기",
110
123
  "paintCanvas.numberSlider.hint": "좌우로 드래그해 변경, 탭해 입력",
111
124
  "paintCanvas.brushMenu.newPreset": "새 프리셋",
112
- "paintCanvas.brushMenu.create": "만들기",
125
+ "paintCanvas.brushMenu.create": "새 브러시",
113
126
  "paintCanvas.brushMenu.import": "가져오기",
114
127
  "paintCanvas.brushMenu.export": "내보내기",
115
128
  "paintCanvas.presets.myPresets": "내 프리셋",
@@ -126,6 +139,7 @@ var ko_default = {
126
139
  "paintCanvas.presets.imported.one": "브러시 프리셋 {count}개를 가져왔습니다",
127
140
  "paintCanvas.presets.imported.other": "브러시 프리셋 {count}개를 가져왔습니다",
128
141
  "paintCanvas.presets.fileIncompatible": "호환되지 않는 브러시 프리셋 JSON 파일입니다",
142
+ "paintCanvas.presets.fileUnsupported": "지원되지 않는 브러시 프리셋 파일 버전입니다",
129
143
  "paintCanvas.presets.fileReadFailed": "브러시 프리셋 JSON 파일을 읽지 못했습니다",
130
144
  "paintCanvas.presets.exportFailed": "브러시 프리셋 JSON 파일을 내보내지 못했습니다",
131
145
  "paintCanvas.presets.nothingToExport": "내보낼 브러시 프리셋이 없습니다",
@@ -291,6 +305,7 @@ var ko_default = {
291
305
  "paintCanvas.settings.importFile": "설정 파일 가져오기",
292
306
  "paintCanvas.settings.imported": "설정을 가져왔습니다",
293
307
  "paintCanvas.settings.fileIncompatible": "호환되지 않는 설정 JSON 파일입니다",
308
+ "paintCanvas.settings.fileUnsupported": "지원되지 않는 설정 파일 버전입니다",
294
309
  "paintCanvas.settings.fileReadFailed": "설정 JSON 파일을 읽지 못했습니다",
295
310
  "paintCanvas.settings.exportFailed": "설정 JSON 파일을 내보내지 못했습니다",
296
311
  "paintCanvas.settings.gpu": "GPU로 그리기",
@@ -301,6 +316,9 @@ var ko_default = {
301
316
  "paintCanvas.stats.zoom": "확대/축소: {zoom}",
302
317
  "paintCanvas.stats.colour": "색상: {colour}",
303
318
  "paintCanvas.stats.stored": "저장됨: {size}",
319
+ "paintCanvas.stats.remoteSaving": "{store}에 저장 중…",
320
+ "paintCanvas.stats.remoteFailed": "{store}에 저장하지 못했습니다",
321
+ "paintCanvas.stats.remoteStore": "클라우드",
304
322
  "paintCanvas.theme.label": "테마",
305
323
  "paintCanvas.theme.light": "라이트",
306
324
  "paintCanvas.theme.dark": "다크",
@@ -67,8 +67,8 @@ var zh_Hans_default = {
67
67
  "paintCanvas.palette.hue": "色相",
68
68
  "paintCanvas.palette.saturation": "饱和度",
69
69
  "paintCanvas.palette.lightness": "亮度",
70
- "paintCanvas.palette.saved": "已保存的颜色",
71
- "paintCanvas.palette.add": "将 {colour} 保存到调色板",
70
+ "paintCanvas.palette.saved": "调色板列表",
71
+ "paintCanvas.palette.add": "将 {colour} 保存到 {name}",
72
72
  "paintCanvas.palette.colourActions": "{colour} 的操作",
73
73
  "paintCanvas.palette.deleteColour": "删除颜色",
74
74
  "paintCanvas.palette.deleteMessage": "要删除这个颜色吗?",
@@ -76,11 +76,24 @@ var zh_Hans_default = {
76
76
  "paintCanvas.palette.import": "导入",
77
77
  "paintCanvas.palette.export": "导出",
78
78
  "paintCanvas.palette.importFile": "导入调色板文件",
79
- "paintCanvas.palette.imported.one": "已添加 {count} 个颜色",
80
- "paintCanvas.palette.imported.other": "已添加 {count} 个颜色",
79
+ "paintCanvas.palette.imported.one": "已导入 {count} 个调色板",
80
+ "paintCanvas.palette.imported.other": "已导入 {count} 个调色板",
81
81
  "paintCanvas.palette.fileIncompatible": "不兼容的调色板 JSON 文件",
82
+ "paintCanvas.palette.fileUnsupported": "不支持的调色板文件版本",
82
83
  "paintCanvas.palette.fileReadFailed": "无法读取调色板 JSON 文件",
83
84
  "paintCanvas.palette.exportFailed": "导出调色板 JSON 文件时出错",
85
+ "paintCanvas.palette.newPalette": "新建调色板",
86
+ "paintCanvas.palette.newPaletteHeading": "新建调色板",
87
+ "paintCanvas.palette.name": "名称",
88
+ "paintCanvas.palette.defaultName": "我的调色板",
89
+ "paintCanvas.palette.renameHeading": "重命名调色板",
90
+ "paintCanvas.palette.paletteActions": "{name} 操作",
91
+ "paintCanvas.palette.renamePalette": "重命名…",
92
+ "paintCanvas.palette.exportPalette": "导出",
93
+ "paintCanvas.palette.deletePalette": "删除…",
94
+ "paintCanvas.palette.deletePaletteHeading": "删除调色板",
95
+ "paintCanvas.palette.deletePaletteConfirm": "删除“{name}”?此操作无法撤销。",
96
+ "paintCanvas.palette.nothingToExport": "没有可导出的调色板",
84
97
  "paintCanvas.toolbar.label": "工具",
85
98
  "paintCanvas.toolbar.layers": "图层",
86
99
  "paintCanvas.toolbar.menu": "菜单",
@@ -109,7 +122,7 @@ var zh_Hans_default = {
109
122
  "paintCanvas.brushMenu.size": "{tool}大小",
110
123
  "paintCanvas.numberSlider.hint": "左右拖动以更改,轻点以输入",
111
124
  "paintCanvas.brushMenu.newPreset": "新预设",
112
- "paintCanvas.brushMenu.create": "创建",
125
+ "paintCanvas.brushMenu.create": "新建画笔",
113
126
  "paintCanvas.brushMenu.import": "导入",
114
127
  "paintCanvas.brushMenu.export": "导出",
115
128
  "paintCanvas.presets.myPresets": "我的预设",
@@ -126,6 +139,7 @@ var zh_Hans_default = {
126
139
  "paintCanvas.presets.imported.one": "已导入 {count} 个画笔预设",
127
140
  "paintCanvas.presets.imported.other": "已导入 {count} 个画笔预设",
128
141
  "paintCanvas.presets.fileIncompatible": "不兼容的画笔预设 JSON 文件",
142
+ "paintCanvas.presets.fileUnsupported": "不支持的画笔预设文件版本",
129
143
  "paintCanvas.presets.fileReadFailed": "无法读取画笔预设 JSON 文件",
130
144
  "paintCanvas.presets.exportFailed": "导出画笔预设 JSON 文件时出错",
131
145
  "paintCanvas.presets.nothingToExport": "没有可导出的画笔预设",
@@ -291,6 +305,7 @@ var zh_Hans_default = {
291
305
  "paintCanvas.settings.importFile": "导入设置文件",
292
306
  "paintCanvas.settings.imported": "已导入设置",
293
307
  "paintCanvas.settings.fileIncompatible": "不兼容的设置 JSON 文件",
308
+ "paintCanvas.settings.fileUnsupported": "不支持的设置文件版本",
294
309
  "paintCanvas.settings.fileReadFailed": "无法读取设置 JSON 文件",
295
310
  "paintCanvas.settings.exportFailed": "导出设置 JSON 文件时出错",
296
311
  "paintCanvas.settings.gpu": "使用 GPU 绘制",
@@ -301,6 +316,9 @@ var zh_Hans_default = {
301
316
  "paintCanvas.stats.zoom": "缩放:{zoom}",
302
317
  "paintCanvas.stats.colour": "颜色:{colour}",
303
318
  "paintCanvas.stats.stored": "已存储:{size}",
319
+ "paintCanvas.stats.remoteSaving": "正在保存到{store}…",
320
+ "paintCanvas.stats.remoteFailed": "无法保存到{store}",
321
+ "paintCanvas.stats.remoteStore": "云端",
304
322
  "paintCanvas.theme.label": "主题",
305
323
  "paintCanvas.theme.light": "浅色",
306
324
  "paintCanvas.theme.dark": "深色",
@@ -67,8 +67,8 @@ var zh_Hant_default = {
67
67
  "paintCanvas.palette.hue": "色相",
68
68
  "paintCanvas.palette.saturation": "飽和度",
69
69
  "paintCanvas.palette.lightness": "亮度",
70
- "paintCanvas.palette.saved": "已儲存的顏色",
71
- "paintCanvas.palette.add": "將 {colour} 儲存到調色盤",
70
+ "paintCanvas.palette.saved": "調色盤列表",
71
+ "paintCanvas.palette.add": "將 {colour} 儲存到 {name}",
72
72
  "paintCanvas.palette.colourActions": "{colour} 的操作",
73
73
  "paintCanvas.palette.deleteColour": "刪除顏色",
74
74
  "paintCanvas.palette.deleteMessage": "要刪除這個顏色嗎?",
@@ -76,11 +76,24 @@ var zh_Hant_default = {
76
76
  "paintCanvas.palette.import": "匯入",
77
77
  "paintCanvas.palette.export": "匯出",
78
78
  "paintCanvas.palette.importFile": "匯入調色盤檔案",
79
- "paintCanvas.palette.imported.one": "已新增 {count} 個顏色",
80
- "paintCanvas.palette.imported.other": "已新增 {count} 個顏色",
79
+ "paintCanvas.palette.imported.one": "已匯入 {count} 個調色盤",
80
+ "paintCanvas.palette.imported.other": "已匯入 {count} 個調色盤",
81
81
  "paintCanvas.palette.fileIncompatible": "不相容的調色盤 JSON 檔案",
82
+ "paintCanvas.palette.fileUnsupported": "不支援的調色盤檔案版本",
82
83
  "paintCanvas.palette.fileReadFailed": "無法讀取調色盤 JSON 檔案",
83
84
  "paintCanvas.palette.exportFailed": "匯出調色盤 JSON 檔案時發生錯誤",
85
+ "paintCanvas.palette.newPalette": "新增調色盤",
86
+ "paintCanvas.palette.newPaletteHeading": "新增調色盤",
87
+ "paintCanvas.palette.name": "名稱",
88
+ "paintCanvas.palette.defaultName": "我的調色盤",
89
+ "paintCanvas.palette.renameHeading": "重新命名調色盤",
90
+ "paintCanvas.palette.paletteActions": "{name} 動作",
91
+ "paintCanvas.palette.renamePalette": "重新命名…",
92
+ "paintCanvas.palette.exportPalette": "匯出",
93
+ "paintCanvas.palette.deletePalette": "刪除…",
94
+ "paintCanvas.palette.deletePaletteHeading": "刪除調色盤",
95
+ "paintCanvas.palette.deletePaletteConfirm": "刪除「{name}」?此動作無法復原。",
96
+ "paintCanvas.palette.nothingToExport": "沒有可匯出的調色盤",
84
97
  "paintCanvas.toolbar.label": "工具",
85
98
  "paintCanvas.toolbar.layers": "圖層",
86
99
  "paintCanvas.toolbar.menu": "選單",
@@ -109,7 +122,7 @@ var zh_Hant_default = {
109
122
  "paintCanvas.brushMenu.size": "{tool}大小",
110
123
  "paintCanvas.numberSlider.hint": "左右拖曳以變更,點一下以輸入",
111
124
  "paintCanvas.brushMenu.newPreset": "新預設",
112
- "paintCanvas.brushMenu.create": "建立",
125
+ "paintCanvas.brushMenu.create": "新增筆刷",
113
126
  "paintCanvas.brushMenu.import": "匯入",
114
127
  "paintCanvas.brushMenu.export": "匯出",
115
128
  "paintCanvas.presets.myPresets": "我的預設",
@@ -126,6 +139,7 @@ var zh_Hant_default = {
126
139
  "paintCanvas.presets.imported.one": "已匯入 {count} 個筆刷預設",
127
140
  "paintCanvas.presets.imported.other": "已匯入 {count} 個筆刷預設",
128
141
  "paintCanvas.presets.fileIncompatible": "不相容的筆刷預設 JSON 檔案",
142
+ "paintCanvas.presets.fileUnsupported": "不支援的筆刷預設檔案版本",
129
143
  "paintCanvas.presets.fileReadFailed": "無法讀取筆刷預設 JSON 檔案",
130
144
  "paintCanvas.presets.exportFailed": "匯出筆刷預設 JSON 檔案時發生錯誤",
131
145
  "paintCanvas.presets.nothingToExport": "沒有可匯出的筆刷預設",
@@ -291,6 +305,7 @@ var zh_Hant_default = {
291
305
  "paintCanvas.settings.importFile": "匯入設定檔",
292
306
  "paintCanvas.settings.imported": "已匯入設定",
293
307
  "paintCanvas.settings.fileIncompatible": "不相容的設定 JSON 檔案",
308
+ "paintCanvas.settings.fileUnsupported": "不支援的設定檔案版本",
294
309
  "paintCanvas.settings.fileReadFailed": "無法讀取設定 JSON 檔案",
295
310
  "paintCanvas.settings.exportFailed": "匯出設定 JSON 檔案時發生錯誤",
296
311
  "paintCanvas.settings.gpu": "使用 GPU 繪製",
@@ -301,6 +316,9 @@ var zh_Hant_default = {
301
316
  "paintCanvas.stats.zoom": "縮放:{zoom}",
302
317
  "paintCanvas.stats.colour": "顏色:{colour}",
303
318
  "paintCanvas.stats.stored": "已儲存:{size}",
319
+ "paintCanvas.stats.remoteSaving": "正在儲存到{store}…",
320
+ "paintCanvas.stats.remoteFailed": "無法儲存到{store}",
321
+ "paintCanvas.stats.remoteStore": "雲端",
304
322
  "paintCanvas.theme.label": "主題",
305
323
  "paintCanvas.theme.light": "淺色",
306
324
  "paintCanvas.theme.dark": "深色",
package/dist/package.js CHANGED
@@ -1,3 +1,3 @@
1
1
  // package.json
2
- var version = "0.7.0";
2
+ var version = "0.8.0";
3
3
  export { version };
@@ -1,7 +1,11 @@
1
- import PaintCanvas from "../lib/classes/PaintCanvas";
1
+ import PaintCanvas, { type PaintCanvasOptions } from "../lib/classes/PaintCanvas";
2
2
  /** The handle of the author of presets made in apps from `createApp` */
3
3
  export declare const TEST_HANDLE = "ada.example";
4
4
  /**
5
5
  * Create a canvas whose canvases record drawing calls (jsdom cannot draw), with "Ada" as the author of new presets.
6
+ * Other options are passed on.
7
+ *
8
+ * @example
9
+ * const app = createApp({ stores: { brushes: myStore } });
6
10
  */
7
- export declare const createApp: () => PaintCanvas;
11
+ export declare const createApp: (options?: PaintCanvasOptions) => PaintCanvas;
@@ -5,12 +5,17 @@ import { createRecordingCanvasFactory } from "./recordingCanvas.js";
5
5
  var TEST_HANDLE = "ada.example";
6
6
  /**
7
7
  * Create a canvas whose canvases record drawing calls (jsdom cannot draw), with "Ada" as the author of new presets.
8
+ * Other options are passed on.
9
+ *
10
+ * @example
11
+ * const app = createApp({ stores: { brushes: myStore } });
8
12
  */
9
- var createApp = () => new PaintCanvas({
13
+ var createApp = (options = {}) => new PaintCanvas({
10
14
  createCanvas: createRecordingCanvasFactory().factory,
11
15
  presetAuthor: () => ({
12
16
  name: "Ada",
13
17
  handle: TEST_HANDLE
14
- })
18
+ }),
19
+ ...options
15
20
  });
16
21
  export { TEST_HANDLE, createApp };
@@ -0,0 +1,26 @@
1
+ import type { DocumentStoreLike } from "../lib/storage";
2
+ import type { DrawingDocument } from "../lib/document/schema";
3
+ /** Options for `MemoryDocumentStore` */
4
+ export interface MemoryDocumentStoreOptions {
5
+ /** Names the store for the user */
6
+ label?: string;
7
+ /** How long each save takes (milliseconds), reporting progress in 4 steps, e.g. to try out a saving indicator */
8
+ delayMs?: number;
9
+ }
10
+ /**
11
+ * A document store kept in memory (e.g. for tests, or to try out remote saving), recording each save.
12
+ *
13
+ * @example
14
+ * canvas.useRemoteDocumentStore(new MemoryDocumentStore({ label: "Test", delayMs: 2000 }));
15
+ */
16
+ export declare class MemoryDocumentStore implements DocumentStoreLike {
17
+ readonly label?: string;
18
+ /** The saved documents, by ID */
19
+ readonly documents: Map<string, DrawingDocument>;
20
+ /** Each save, in order */
21
+ readonly saves: DrawingDocument[];
22
+ private readonly delayMs;
23
+ constructor({ label, delayMs }?: MemoryDocumentStoreOptions);
24
+ save(document: DrawingDocument, onProgress?: (done: number) => void): Promise<void>;
25
+ load(id: string): Promise<DrawingDocument | undefined>;
26
+ }
@@ -0,0 +1,31 @@
1
+ // src/testing/documentStore.ts
2
+ /**
3
+ * A document store kept in memory (e.g. for tests, or to try out remote saving), recording each save.
4
+ *
5
+ * @example
6
+ * canvas.useRemoteDocumentStore(new MemoryDocumentStore({ label: "Test", delayMs: 2000 }));
7
+ */
8
+ var MemoryDocumentStore = class {
9
+ label;
10
+ /** The saved documents, by ID */
11
+ documents = /* @__PURE__ */ new Map();
12
+ /** Each save, in order */
13
+ saves = [];
14
+ delayMs;
15
+ constructor({ label, delayMs = 0 } = {}) {
16
+ this.label = label;
17
+ this.delayMs = delayMs;
18
+ }
19
+ async save(document, onProgress) {
20
+ for (let step = 1; step <= 4; step++) {
21
+ if (this.delayMs > 0) await new Promise((resolve) => setTimeout(resolve, this.delayMs / 4));
22
+ onProgress?.(step / 4);
23
+ }
24
+ this.saves.push(document);
25
+ this.documents.set(document.id, document);
26
+ }
27
+ async load(id) {
28
+ return this.documents.get(id);
29
+ }
30
+ };
31
+ export { MemoryDocumentStore };