@uploadcare/file-uploader 1.20.0-rc.2 → 1.20.1-alpha.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 (224) hide show
  1. package/abstract/Block.d.ts +2 -11
  2. package/abstract/Block.d.ts.map +1 -1
  3. package/abstract/Block.js +3 -29
  4. package/abstract/CTX.d.ts +2 -2
  5. package/abstract/CTX.d.ts.map +1 -1
  6. package/abstract/CTX.js +1 -1
  7. package/abstract/{managers/LocaleManager.d.ts → LocaleManager.d.ts} +8 -8
  8. package/abstract/{managers/LocaleManager.d.ts.map → LocaleManager.d.ts.map} +1 -1
  9. package/abstract/{managers/LocaleManager.js → LocaleManager.js} +8 -8
  10. package/abstract/{managers/ModalManager.d.ts → ModalManager.d.ts} +7 -7
  11. package/abstract/{managers/ModalManager.d.ts.map → ModalManager.d.ts.map} +1 -1
  12. package/abstract/{managers/ModalManager.js → ModalManager.js} +3 -3
  13. package/abstract/SecureUploadsManager.d.ts +22 -0
  14. package/abstract/{managers/SecureUploadsManager.d.ts.map → SecureUploadsManager.d.ts.map} +1 -1
  15. package/abstract/{managers/SecureUploadsManager.js → SecureUploadsManager.js} +5 -5
  16. package/abstract/SolutionBlock.d.ts +1 -1
  17. package/abstract/UploaderBlock.d.ts +8 -4
  18. package/abstract/UploaderBlock.d.ts.map +1 -1
  19. package/abstract/UploaderBlock.js +50 -13
  20. package/abstract/{managers/ValidationManager.d.ts → ValidationManager.d.ts} +7 -7
  21. package/abstract/{managers/ValidationManager.d.ts.map → ValidationManager.d.ts.map} +1 -1
  22. package/abstract/{managers/ValidationManager.js → ValidationManager.js} +14 -14
  23. package/abstract/{managers/a11y.d.ts → a11y.d.ts} +2 -2
  24. package/abstract/a11y.d.ts.map +1 -0
  25. package/abstract/{managers/a11y.js → a11y.js} +1 -1
  26. package/abstract/l10nProcessor.js +1 -1
  27. package/blocks/CameraSource/CameraSource.d.ts +1 -1
  28. package/blocks/CloudImageEditor/src/CloudImageEditorBlock.d.ts +1 -0
  29. package/blocks/CloudImageEditor/src/CloudImageEditorBlock.d.ts.map +1 -1
  30. package/blocks/CloudImageEditor/src/CloudImageEditorBlock.js +19 -5
  31. package/blocks/CloudImageEditor/src/CropFrame.js +3 -3
  32. package/blocks/CloudImageEditor/src/EditorAspectRatioButtonControl.d.ts +11 -0
  33. package/blocks/CloudImageEditor/src/EditorAspectRatioButtonControl.d.ts.map +1 -0
  34. package/blocks/CloudImageEditor/src/EditorAspectRatioButtonControl.js +130 -0
  35. package/blocks/CloudImageEditor/src/EditorButtonControl.js +1 -1
  36. package/blocks/CloudImageEditor/src/EditorCropButtonControl.d.ts.map +1 -1
  37. package/blocks/CloudImageEditor/src/EditorCropButtonControl.js +2 -8
  38. package/blocks/CloudImageEditor/src/EditorFilterControl.d.ts.map +1 -1
  39. package/blocks/CloudImageEditor/src/EditorFilterControl.js +1 -7
  40. package/blocks/CloudImageEditor/src/EditorImageCropper.d.ts.map +1 -1
  41. package/blocks/CloudImageEditor/src/EditorImageCropper.js +2 -3
  42. package/blocks/CloudImageEditor/src/EditorOperationControl.d.ts +1 -1
  43. package/blocks/CloudImageEditor/src/EditorOperationControl.d.ts.map +1 -1
  44. package/blocks/CloudImageEditor/src/EditorOperationControl.js +3 -9
  45. package/blocks/CloudImageEditor/src/EditorToolbar.d.ts +15 -8
  46. package/blocks/CloudImageEditor/src/EditorToolbar.d.ts.map +1 -1
  47. package/blocks/CloudImageEditor/src/EditorToolbar.js +68 -25
  48. package/blocks/CloudImageEditor/src/css/common.css +39 -7
  49. package/blocks/CloudImageEditor/src/index.d.ts +1 -0
  50. package/blocks/CloudImageEditor/src/index.js +1 -0
  51. package/blocks/CloudImageEditor/src/lib/parseCropPreset.d.ts +2 -1
  52. package/blocks/CloudImageEditor/src/lib/parseCropPreset.d.ts.map +1 -1
  53. package/blocks/CloudImageEditor/src/lib/parseCropPreset.js +74 -8
  54. package/blocks/CloudImageEditor/src/lib/parseCropPreset.test.d.ts +2 -0
  55. package/blocks/CloudImageEditor/src/lib/parseCropPreset.test.d.ts.map +1 -0
  56. package/blocks/CloudImageEditor/src/lib/parseCropPreset.test.js +35 -0
  57. package/blocks/CloudImageEditor/src/state.d.ts +1 -1
  58. package/blocks/CloudImageEditor/src/state.d.ts.map +1 -1
  59. package/blocks/CloudImageEditor/src/state.js +2 -2
  60. package/blocks/CloudImageEditor/src/svg-sprite.d.ts +1 -1
  61. package/blocks/CloudImageEditor/src/svg-sprite.d.ts.map +1 -1
  62. package/blocks/CloudImageEditor/src/svg-sprite.js +1 -1
  63. package/blocks/CloudImageEditor/src/toolbar-constants.d.ts +0 -1
  64. package/blocks/CloudImageEditor/src/toolbar-constants.d.ts.map +1 -1
  65. package/blocks/CloudImageEditor/src/toolbar-constants.js +0 -2
  66. package/blocks/CloudImageEditor/src/types.d.ts +2 -0
  67. package/blocks/CloudImageEditor/src/types.d.ts.map +1 -1
  68. package/blocks/CloudImageEditor/src/types.js +9 -1
  69. package/blocks/Config/initialConfig.d.ts.map +1 -1
  70. package/blocks/Config/initialConfig.js +0 -2
  71. package/blocks/Config/normalizeConfigValue.d.ts.map +1 -1
  72. package/blocks/Config/normalizeConfigValue.js +0 -2
  73. package/blocks/DropArea/DropArea.d.ts +1 -1
  74. package/blocks/ExternalSource/ExternalSource.d.ts +1 -1
  75. package/blocks/FileItem/FileItem.d.ts +1 -1
  76. package/blocks/FileItem/FileItem.d.ts.map +1 -1
  77. package/blocks/FileItem/FileItem.js +0 -16
  78. package/blocks/Modal/Modal.d.ts +6 -6
  79. package/blocks/Modal/Modal.d.ts.map +1 -1
  80. package/blocks/Modal/Modal.js +12 -10
  81. package/blocks/SimpleBtn/SimpleBtn.d.ts +1 -1
  82. package/blocks/SourceBtn/SourceBtn.d.ts +1 -1
  83. package/blocks/Thumb/Thumb.d.ts +1 -1
  84. package/blocks/UploadCtxProvider/EventEmitter.d.ts +4 -17
  85. package/blocks/UploadCtxProvider/EventEmitter.d.ts.map +1 -1
  86. package/blocks/UploadCtxProvider/EventEmitter.js +2 -14
  87. package/blocks/UploadList/UploadList.d.ts +1 -1
  88. package/blocks/themes/uc-basic/svg-sprite.d.ts +1 -1
  89. package/blocks/themes/uc-basic/svg-sprite.d.ts.map +1 -1
  90. package/blocks/themes/uc-basic/svg-sprite.js +1 -1
  91. package/env.d.ts +1 -1
  92. package/env.js +1 -1
  93. package/index.d.ts +1 -1
  94. package/index.js +1 -1
  95. package/index.ssr.d.ts +17 -3
  96. package/index.ssr.d.ts.map +1 -1
  97. package/index.ssr.js +35 -11
  98. package/locales/file-uploader/ar.d.ts +4 -0
  99. package/locales/file-uploader/ar.js +5 -0
  100. package/locales/file-uploader/az.d.ts +4 -0
  101. package/locales/file-uploader/az.js +5 -0
  102. package/locales/file-uploader/ca.d.ts +4 -0
  103. package/locales/file-uploader/ca.js +6 -0
  104. package/locales/file-uploader/cs.d.ts +4 -0
  105. package/locales/file-uploader/cs.js +6 -0
  106. package/locales/file-uploader/da.d.ts +4 -0
  107. package/locales/file-uploader/da.js +6 -0
  108. package/locales/file-uploader/de.d.ts +4 -0
  109. package/locales/file-uploader/de.js +6 -0
  110. package/locales/file-uploader/el.d.ts +4 -0
  111. package/locales/file-uploader/el.js +6 -0
  112. package/locales/file-uploader/en.d.ts +4 -0
  113. package/locales/file-uploader/en.js +5 -0
  114. package/locales/file-uploader/es.d.ts +4 -0
  115. package/locales/file-uploader/es.js +6 -0
  116. package/locales/file-uploader/et.d.ts +4 -0
  117. package/locales/file-uploader/et.js +6 -0
  118. package/locales/file-uploader/fi.d.ts +4 -0
  119. package/locales/file-uploader/fi.js +6 -0
  120. package/locales/file-uploader/fr.d.ts +4 -0
  121. package/locales/file-uploader/fr.js +6 -0
  122. package/locales/file-uploader/he.d.ts +4 -0
  123. package/locales/file-uploader/he.js +6 -0
  124. package/locales/file-uploader/hy.d.ts +4 -0
  125. package/locales/file-uploader/hy.js +5 -0
  126. package/locales/file-uploader/is.d.ts +4 -0
  127. package/locales/file-uploader/is.js +6 -0
  128. package/locales/file-uploader/it.d.ts +4 -0
  129. package/locales/file-uploader/it.js +6 -0
  130. package/locales/file-uploader/ja.d.ts +4 -0
  131. package/locales/file-uploader/ja.js +6 -0
  132. package/locales/file-uploader/ka.d.ts +4 -0
  133. package/locales/file-uploader/ka.js +6 -0
  134. package/locales/file-uploader/kk.d.ts +4 -0
  135. package/locales/file-uploader/kk.js +6 -0
  136. package/locales/file-uploader/ko.d.ts +4 -0
  137. package/locales/file-uploader/ko.js +6 -0
  138. package/locales/file-uploader/lv.d.ts +4 -0
  139. package/locales/file-uploader/lv.js +6 -0
  140. package/locales/file-uploader/nb.d.ts +4 -0
  141. package/locales/file-uploader/nb.js +6 -0
  142. package/locales/file-uploader/nl.d.ts +4 -0
  143. package/locales/file-uploader/nl.js +6 -0
  144. package/locales/file-uploader/pl.d.ts +4 -0
  145. package/locales/file-uploader/pl.js +6 -0
  146. package/locales/file-uploader/pt.d.ts +4 -0
  147. package/locales/file-uploader/pt.js +6 -0
  148. package/locales/file-uploader/ro.d.ts +4 -0
  149. package/locales/file-uploader/ro.js +6 -0
  150. package/locales/file-uploader/ru.d.ts +4 -0
  151. package/locales/file-uploader/ru.js +6 -0
  152. package/locales/file-uploader/sk.d.ts +4 -0
  153. package/locales/file-uploader/sk.js +6 -0
  154. package/locales/file-uploader/sr.d.ts +4 -0
  155. package/locales/file-uploader/sr.js +6 -0
  156. package/locales/file-uploader/sv.d.ts +4 -0
  157. package/locales/file-uploader/sv.js +6 -0
  158. package/locales/file-uploader/tr.d.ts +4 -0
  159. package/locales/file-uploader/tr.js +6 -0
  160. package/locales/file-uploader/uk.d.ts +4 -0
  161. package/locales/file-uploader/uk.js +6 -0
  162. package/locales/file-uploader/vi.d.ts +4 -0
  163. package/locales/file-uploader/vi.js +6 -0
  164. package/locales/file-uploader/zh-TW.d.ts +4 -0
  165. package/locales/file-uploader/zh-TW.js +6 -0
  166. package/locales/file-uploader/zh.d.ts +4 -0
  167. package/locales/file-uploader/zh.js +6 -0
  168. package/package.json +3 -6
  169. package/solutions/cloud-image-editor/CloudImageEditor.d.ts +0 -34
  170. package/solutions/cloud-image-editor/CloudImageEditor.d.ts.map +1 -1
  171. package/solutions/cloud-image-editor/CloudImageEditor.js +0 -12
  172. package/solutions/file-uploader/inline/FileUploaderInline.d.ts +1 -2
  173. package/solutions/file-uploader/inline/FileUploaderInline.d.ts.map +1 -1
  174. package/solutions/file-uploader/inline/FileUploaderInline.js +0 -4
  175. package/solutions/file-uploader/minimal/FileUploaderMinimal.d.ts +9 -10
  176. package/solutions/file-uploader/minimal/FileUploaderMinimal.d.ts.map +1 -1
  177. package/solutions/file-uploader/minimal/FileUploaderMinimal.js +3 -7
  178. package/solutions/file-uploader/regular/FileUploaderRegular.d.ts +1 -2
  179. package/solutions/file-uploader/regular/FileUploaderRegular.d.ts.map +1 -1
  180. package/solutions/file-uploader/regular/FileUploaderRegular.js +0 -4
  181. package/types/events.d.ts +1 -1
  182. package/types/exported.d.ts +52 -54
  183. package/types/jsx.d.ts +2 -0
  184. package/utils/parseCdnUrl.d.ts.map +1 -1
  185. package/utils/parseCdnUrl.js +4 -1
  186. package/utils/parseCdnUrl.test.js +13 -0
  187. package/utils/validators/collection/validateCollectionUploadError.d.ts +2 -2
  188. package/utils/validators/collection/validateCollectionUploadError.d.ts.map +1 -1
  189. package/utils/validators/collection/validateCollectionUploadError.js +1 -1
  190. package/utils/validators/collection/validateMultiple.d.ts +2 -2
  191. package/utils/validators/collection/validateMultiple.d.ts.map +1 -1
  192. package/utils/validators/collection/validateMultiple.js +1 -1
  193. package/utils/validators/file/validateFileType.d.ts +2 -2
  194. package/utils/validators/file/validateFileType.d.ts.map +1 -1
  195. package/utils/validators/file/validateFileType.js +1 -1
  196. package/utils/validators/file/validateIsImage.d.ts +2 -2
  197. package/utils/validators/file/validateIsImage.d.ts.map +1 -1
  198. package/utils/validators/file/validateIsImage.js +1 -1
  199. package/utils/validators/file/validateMaxSizeLimit.d.ts +2 -2
  200. package/utils/validators/file/validateMaxSizeLimit.d.ts.map +1 -1
  201. package/utils/validators/file/validateMaxSizeLimit.js +1 -1
  202. package/utils/validators/file/validateUploadError.d.ts +2 -2
  203. package/utils/validators/file/validateUploadError.d.ts.map +1 -1
  204. package/utils/validators/file/validateUploadError.js +1 -1
  205. package/web/file-uploader.iife.min.js +4 -4
  206. package/web/file-uploader.min.js +4 -4
  207. package/web/uc-basic.min.css +1 -1
  208. package/web/uc-cloud-image-editor.min.css +1 -1
  209. package/web/uc-cloud-image-editor.min.js +4 -4
  210. package/web/uc-file-uploader-inline.min.css +1 -1
  211. package/web/uc-file-uploader-inline.min.js +4 -4
  212. package/web/uc-file-uploader-minimal.min.css +1 -1
  213. package/web/uc-file-uploader-minimal.min.js +4 -4
  214. package/web/uc-file-uploader-regular.min.css +1 -1
  215. package/web/uc-file-uploader-regular.min.js +4 -4
  216. package/web/uc-img.min.js +1 -1
  217. package/abstract/managers/SecureUploadsManager.d.ts +0 -22
  218. package/abstract/managers/TelemetryManager.d.ts +0 -66
  219. package/abstract/managers/TelemetryManager.d.ts.map +0 -1
  220. package/abstract/managers/TelemetryManager.js +0 -202
  221. package/abstract/managers/a11y.d.ts.map +0 -1
  222. package/blocks/CloudImageEditor/src/utils/parseFilterValue.d.ts +0 -11
  223. package/blocks/CloudImageEditor/src/utils/parseFilterValue.d.ts.map +0 -1
  224. package/blocks/CloudImageEditor/src/utils/parseFilterValue.js +0 -11
@@ -1,29 +1,29 @@
1
1
  // @ts-check
2
- import { EventType } from '../../blocks/UploadCtxProvider/EventEmitter.js';
2
+ import { EventType } from '../blocks/UploadCtxProvider/EventEmitter.js';
3
3
  import {
4
4
  validateIsImage,
5
5
  validateFileType,
6
6
  validateMaxSizeLimit,
7
7
  validateUploadError,
8
- } from '../../utils/validators/file/index.js';
9
- import { validateMultiple, validateCollectionUploadError } from '../../utils/validators/collection/index.js';
8
+ } from '../utils/validators/file/index.js';
9
+ import { validateMultiple, validateCollectionUploadError } from '../utils/validators/collection/index.js';
10
10
 
11
11
  /**
12
12
  * @typedef {(
13
- * outputEntry: import('../../types/index.js').OutputFileEntry,
14
- * api: import('../UploaderPublicApi.js').UploaderPublicApi,
15
- * ) => undefined | import('../../types/index.js').OutputErrorFile} FuncFileValidator
13
+ * outputEntry: import('../types').OutputFileEntry,
14
+ * api: import('./UploaderPublicApi.js').UploaderPublicApi,
15
+ * ) => undefined | import('../types').OutputErrorFile} FuncFileValidator
16
16
  */
17
17
 
18
18
  /**
19
19
  * @typedef {(
20
20
  * collection: ReturnType<
21
- * typeof import('../buildOutputCollectionState.js').buildOutputCollectionState<
22
- * import('../../types/index.js').OutputCollectionStatus
21
+ * typeof import('./buildOutputCollectionState.js').buildOutputCollectionState<
22
+ * import('../types').OutputCollectionStatus
23
23
  * >
24
24
  * >,
25
- * api: import('../UploaderPublicApi.js').UploaderPublicApi,
26
- * ) => undefined | import('../../types/index.js').OutputErrorCollection} FuncCollectionValidator
25
+ * api: import('./UploaderPublicApi.js').UploaderPublicApi,
26
+ * ) => undefined | import('../types').OutputErrorCollection} FuncCollectionValidator
27
27
  */
28
28
 
29
29
  const LOGGER = {
@@ -35,7 +35,7 @@ const LOGGER = {
35
35
  export class ValidationManager {
36
36
  /**
37
37
  * @private
38
- * @type {import('../UploaderBlock.js').UploaderBlock}
38
+ * @type {import('./UploaderBlock.js').UploaderBlock}
39
39
  */
40
40
  _blockInstance;
41
41
 
@@ -45,7 +45,7 @@ export class ValidationManager {
45
45
  /** @type {FuncCollectionValidator[]} */
46
46
  _collectionValidators = [validateMultiple, validateCollectionUploadError];
47
47
 
48
- /** @param {import('../UploaderBlock.js').UploaderBlock} blockInstance */
48
+ /** @param {import('./UploaderBlock.js').UploaderBlock} blockInstance */
49
49
  constructor(blockInstance) {
50
50
  this._blockInstance = blockInstance;
51
51
 
@@ -106,7 +106,7 @@ export class ValidationManager {
106
106
  this._blockInstance.emit(
107
107
  EventType.COMMON_UPLOAD_FAILED,
108
108
  () =>
109
- /** @type {import('../../types/index.js').OutputCollectionState<'failed'>} */ (
109
+ /** @type {import('../types').OutputCollectionState<'failed'>} */ (
110
110
  this._blockInstance.api.getOutputCollectionState()
111
111
  ),
112
112
  { debounce: true },
@@ -116,7 +116,7 @@ export class ValidationManager {
116
116
 
117
117
  /**
118
118
  * @private
119
- * @param {import('../TypedData.js').TypedData<typeof import('../uploadEntrySchema.js').uploadEntrySchema>} entry
119
+ * @param {import('./TypedData.js').TypedData<typeof import('./uploadEntrySchema.js').uploadEntrySchema>} entry
120
120
  */
121
121
  _runFileValidatorsForEntry(entry) {
122
122
  const outputEntry = this._blockInstance.api.getOutputItem(entry.uid);
@@ -9,8 +9,8 @@ export class A11y {
9
9
  * @type {ScopedMinimalWindow}
10
10
  */
11
11
  private _scopedWindow;
12
- /** @param {import('../Block.js').Block} scope */
13
- registerBlock(scope: import("../Block.js").Block): void;
12
+ /** @param {import('./Block.js').Block} scope */
13
+ registerBlock(scope: import("./Block.js").Block): void;
14
14
  destroy(): void;
15
15
  }
16
16
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a11y.d.ts","sourceRoot":"","sources":["a11y.js"],"names":[],"mappings":"AAqFA;IACE;;;OAGG;IACH,sBAAc;IAEd;;;OAGG;IACH,sBAAc;IAYd,gDAAgD;IAChD,qBADY,OAAO,YAAY,EAAE,KAAK,QAGrC;IAED,gBAGC;CACF;;;;4BA/GY,UAAU,CAAC,OAAO,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC"}
@@ -106,7 +106,7 @@ export class A11y {
106
106
  ]);
107
107
  }
108
108
 
109
- /** @param {import('../Block.js').Block} scope */
109
+ /** @param {import('./Block.js').Block} scope */
110
110
  registerBlock(scope) {
111
111
  this._scopedWindow.registerScope(scope);
112
112
  }
@@ -1,6 +1,6 @@
1
1
  // @ts-check
2
2
 
3
- import { localeStateKey } from './managers/LocaleManager.js';
3
+ import { localeStateKey } from './LocaleManager.js';
4
4
 
5
5
  /**
6
6
  * @template {import('./Block.js').Block} T
@@ -68,7 +68,7 @@ export class CameraSource extends UploaderBlock {
68
68
  '*collectionState': import("../../index.js").OutputCollectionState | null;
69
69
  '*groupInfo': import("@uploadcare/upload-client").UploadcareGroup | null;
70
70
  '*uploadTrigger': Set<string>;
71
- '*secureUploadsManager': import("../../abstract/managers/SecureUploadsManager.js").SecureUploadsManager | null;
71
+ '*secureUploadsManager': import("../../abstract/SecureUploadsManager.js").SecureUploadsManager | null;
72
72
  '*currentActivity': null;
73
73
  '*currentActivityParams': {};
74
74
  '*history': never[];
@@ -9,6 +9,7 @@ export class CloudImageEditorBlock extends Block {
9
9
  '*imageSize': null;
10
10
  '*editorTransformations': import("./types.js").Transformations;
11
11
  '*cropPresetList': import("./types.js").CropPresetList;
12
+ '*currentAspectRatio': null;
12
13
  '*tabList': ("crop" | "tuning" | "filters")[];
13
14
  '*tabId': "crop";
14
15
  entry: null;
@@ -1 +1 @@
1
- {"version":3,"file":"CloudImageEditorBlock.d.ts","sourceRoot":"","sources":["CloudImageEditorBlock.js"],"names":[],"mappings":"AAmBA;IAOI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAGC;IAGH,eAAe;IACf,6BAAkE;IAElE;;;OAGG;IACH,oBAEC;IAED;;;;;OAKG;IACH,qBAeC;IAYD,6BAkDC;IAED,4BA0FC;IA9EG,iCAAwB;CA+E7B;;;;sBA1NqB,4BAA4B;yBAezB,eAAe"}
1
+ {"version":3,"file":"CloudImageEditorBlock.d.ts","sourceRoot":"","sources":["CloudImageEditorBlock.js"],"names":[],"mappings":"AAmBA;IAOI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAGC;IAGH,eAAe;IACf,6BAAkE;IAElE;;;OAGG;IACH,oBAEC;IAED;;;;;OAKG;IACH,qBAeC;IAYD,6BAkDC;IAED,4BAwGC;IA5FG,iCAAwB;CA6F7B;;;;sBAxOqB,4BAA4B;yBAezB,eAAe"}
@@ -10,7 +10,7 @@ import {
10
10
  import { TRANSPARENT_PIXEL_SRC } from '../../../utils/transparentPixelSrc.js';
11
11
  import { debounce } from '../../utils/debounce.js';
12
12
  import { classNames } from './lib/classNames.js';
13
- import { parseCropPreset } from './lib/parseCropPreset.js';
13
+ import { getClosestAspectRatio, parseCropPreset } from './lib/parseCropPreset.js';
14
14
  import { parseTabs } from './lib/parseTabs.js';
15
15
  import { operationsToTransformations, transformationsToOperations } from './lib/transformationUtils.js';
16
16
  import { initState } from './state.js';
@@ -161,10 +161,6 @@ export class CloudImageEditorBlock extends Block {
161
161
  }
162
162
  });
163
163
 
164
- this.sub('cropPreset', (val) => {
165
- this.$['*cropPresetList'] = parseCropPreset(val);
166
- });
167
-
168
164
  this.sub(
169
165
  'tabs',
170
166
  /** @param {string} val */ (val) => {
@@ -216,6 +212,24 @@ export class CloudImageEditorBlock extends Block {
216
212
 
217
213
  this.sub('uuid', (val) => val && this.updateImage());
218
214
  this.sub('cdnUrl', (val) => val && this.updateImage());
215
+
216
+ this.sub('cropPreset', (val) => {
217
+ const list = parseCropPreset(val);
218
+ let closest = null;
219
+
220
+ if (this.$.cdnUrl) {
221
+ const operations = extractOperations(this.$.cdnUrl);
222
+ const transformations = operationsToTransformations(operations);
223
+
224
+ if (Array.isArray(transformations?.crop?.dimensions)) {
225
+ const [w, h] = transformations?.crop?.dimensions;
226
+ closest = getClosestAspectRatio(w, h, list, 0.1);
227
+ }
228
+ }
229
+
230
+ this.$['*cropPresetList'] = list;
231
+ this.$['*currentAspectRatio'] = closest ?? list?.[0] ?? null;
232
+ });
219
233
  }
220
234
  }
221
235
 
@@ -394,8 +394,8 @@ export class CropFrame extends Block {
394
394
  /** @type {import('./types.js').Rectangle} */
395
395
  let imageBox = this.$['*imageBox'];
396
396
  let rect = /** @type {import('./types.js').Rectangle} */ (this._dragStartCrop) ?? this.$['*cropBox'];
397
- /** @type {import('./types.js').CropPresetList[0]} */
398
- const cropPreset = this.$['*cropPresetList']?.[0];
397
+
398
+ const cropPreset = this.$['*currentAspectRatio'];
399
399
  const aspectRatio = cropPreset ? cropPreset.width / cropPreset.height : undefined;
400
400
 
401
401
  if (direction === '') {
@@ -518,7 +518,7 @@ export class CropFrame extends Block {
518
518
  this._createBackdrop();
519
519
  this._createFrame();
520
520
 
521
- this.sub('*imageBox', () => {
521
+ this.sub('*imageBox', (value) => {
522
522
  this._resizeBackdrop();
523
523
  window.requestAnimationFrame(() => {
524
524
  this._render();
@@ -0,0 +1,11 @@
1
+ export class EditorFreeformButtonControl extends EditorButtonControl {
2
+ handleClick(): void;
3
+ }
4
+ export class EditorAspectRatioButtonControl extends EditorButtonControl {
5
+ _aspectRatio: import("./types.js").CropAspectRatio | undefined;
6
+ handleClick(): void;
7
+ /** @param {import('./types.js').CropAspectRatio} value */
8
+ _renderRectBasedOnAspectRatio(value: import("./types.js").CropAspectRatio): void;
9
+ }
10
+ import { EditorButtonControl } from './EditorButtonControl.js';
11
+ //# sourceMappingURL=EditorAspectRatioButtonControl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditorAspectRatioButtonControl.d.ts","sourceRoot":"","sources":["EditorAspectRatioButtonControl.js"],"names":[],"mappings":"AAyBA;IAoBE,oBAEC;CACF;AAED;IA4BQ,+DAAyB;IAqB/B,oBAMC;IAED,0DAA0D;IAC1D,qCADY,OAAO,YAAY,EAAE,eAAe,QAqB/C;CACF;oCA9HmC,0BAA0B"}
@@ -0,0 +1,130 @@
1
+ //@ts-check
2
+
3
+ import { createSvgNode } from './crop-utils.js';
4
+ import { EditorButtonControl } from './EditorButtonControl.js';
5
+
6
+ const SIZE_RECT_FIXED = 12;
7
+ const SIZE_SVG_WRAPPER = 16;
8
+
9
+ /** @param {import('./types.js').CropAspectRatio} value */
10
+ const getAdjustResolutions = (value) => {
11
+ let width = 12;
12
+ let height = 12;
13
+ const adjustResolutions = value.width / value.height;
14
+
15
+ if (adjustResolutions >= 1) {
16
+ width = SIZE_RECT_FIXED;
17
+ height = Math.round((SIZE_RECT_FIXED * value.height) / value.width);
18
+ } else {
19
+ height = SIZE_RECT_FIXED;
20
+ width = Math.round((SIZE_RECT_FIXED * value.width) / value.height);
21
+ }
22
+
23
+ return { width, height };
24
+ };
25
+
26
+ export class EditorFreeformButtonControl extends EditorButtonControl {
27
+ constructor() {
28
+ super();
29
+ }
30
+
31
+ initCallback() {
32
+ super.initCallback();
33
+
34
+ this.$['icon'] = 'freeform';
35
+ this.$['on.click'] = this.handleClick.bind(this);
36
+ this.$.active = !!this.$['*currentAspectRatio'];
37
+
38
+ this.sub('*currentAspectRatio', (opt) => {
39
+ const value = opt.hasFreeform ? this.l10n('custom') : `${opt.width}:${opt.height}`;
40
+ this.$['title'] = this.l10n('crop-to-shape', { value });
41
+
42
+ this.bindL10n('title-prop', () => this.$['title']);
43
+ });
44
+ }
45
+
46
+ handleClick() {
47
+ this.$['*showListAspectRatio'] = true;
48
+ }
49
+ }
50
+
51
+ export class EditorAspectRatioButtonControl extends EditorButtonControl {
52
+ constructor() {
53
+ super();
54
+
55
+ this.init$ = {
56
+ ...this.init$,
57
+ active: false,
58
+ once: false,
59
+ };
60
+ }
61
+ initCallback() {
62
+ super.initCallback();
63
+
64
+ this.defineAccessor(
65
+ 'aspectRatio',
66
+ /** @param {import('./types.js').CropAspectRatio} value */ (value) => {
67
+ if (!value) return;
68
+
69
+ const isFreeform = !!value.hasFreeform;
70
+ const name = this.l10n(isFreeform ? 'custom' : value.type).toLowerCase();
71
+
72
+ this.$['icon'] = isFreeform ? 'freeform' : value.type;
73
+ this.$['title'] = isFreeform ? this.l10n('custom') : `${value.width}:${value.height}`;
74
+
75
+ if (!isFreeform) {
76
+ this._renderRectBasedOnAspectRatio(value);
77
+ }
78
+
79
+ this._aspectRatio = value;
80
+
81
+ this.bindL10n('title-prop', () => {
82
+ const val = isFreeform ? '' : `${value.width}:${value.height}`;
83
+ return this.l10n('a11y-cloud-editor-apply-aspect-ratio', {
84
+ name,
85
+ value: val,
86
+ });
87
+ });
88
+ },
89
+ );
90
+
91
+ this.sub('*currentAspectRatio', (opt) => {
92
+ this.$.active =
93
+ (opt && opt.id === this._aspectRatio?.id) ||
94
+ (opt?.width === this._aspectRatio?.width && opt?.height === this._aspectRatio?.height);
95
+ });
96
+
97
+ this.$['on.click'] = this.handleClick.bind(this);
98
+ }
99
+
100
+ handleClick() {
101
+ if (this.$['*currentAspectRatio']?.id === this._aspectRatio?.id) {
102
+ return;
103
+ }
104
+
105
+ this.$['*currentAspectRatio'] = this._aspectRatio;
106
+ }
107
+
108
+ /** @param {import('./types.js').CropAspectRatio} value */
109
+ _renderRectBasedOnAspectRatio(value) {
110
+ const { width, height } = getAdjustResolutions(value);
111
+
112
+ const rect = createSvgNode('rect', {
113
+ 'stroke-linejoin': 'round',
114
+ fill: 'none',
115
+ stroke: 'currentColor',
116
+ 'stroke-width': 1.2,
117
+ 'fill-rule': 'evenodd',
118
+ x: (SIZE_SVG_WRAPPER - width) / 2,
119
+ y: (SIZE_SVG_WRAPPER - height) / 2,
120
+ width,
121
+ height,
122
+ });
123
+
124
+ const svgEl = this.ref['icon-el']?.ref?.svg;
125
+
126
+ if (!svgEl) return;
127
+ svgEl.innerHTML = '';
128
+ svgEl.appendChild(rect);
129
+ }
130
+ }
@@ -39,7 +39,7 @@ export class EditorButtonControl extends Block {
39
39
 
40
40
  EditorButtonControl.template = /* HTML */ `
41
41
  <button role="option" type="button" set="@aria-label:title-prop;" l10n="@title:title-prop;">
42
- <uc-icon set="@name: icon;"></uc-icon>
42
+ <uc-icon ref="icon-el" set="@name: icon;"></uc-icon>
43
43
  <div class="uc-title" ref="title-el">{{title}}</div>
44
44
  </button>
45
45
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"EditorCropButtonControl.d.ts","sourceRoot":"","sources":["EditorCropButtonControl.js"],"names":[],"mappings":"AAkBA;IASM,eAAe;IACf,mBAA2B;CAsBhC;oCAlDmC,0BAA0B"}
1
+ {"version":3,"file":"EditorCropButtonControl.d.ts","sourceRoot":"","sources":["EditorCropButtonControl.js"],"names":[],"mappings":"AAkBA;IASM,eAAe;IACf,mBAA2B;CAgBhC;oCA5CmC,0BAA0B"}
@@ -28,6 +28,7 @@ export class EditorCropButtonControl extends EditorButtonControl {
28
28
  /** @private */
29
29
  this._operation = operation;
30
30
  this.$['icon'] = operation;
31
+
31
32
  this.bindL10n('title-prop', () =>
32
33
  this.l10n('a11y-cloud-editor-apply-crop', {
33
34
  name: this.l10n(operation).toLowerCase(),
@@ -35,16 +36,9 @@ export class EditorCropButtonControl extends EditorButtonControl {
35
36
  );
36
37
  });
37
38
 
38
- this.$['on.click'] = (e) => {
39
+ this.$['on.click'] = () => {
39
40
  let prev = this.$['*cropperEl'].getValue(this._operation);
40
41
  let next = nextValue(this._operation, prev);
41
-
42
- this.telemetryManager.sendEventCloudImageEditor(e, this.$['*tabId'], {
43
- operation: this._operation,
44
- next,
45
- prev,
46
- });
47
-
48
42
  this.$['*cropperEl'].setValue(this._operation, next);
49
43
  };
50
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EditorFilterControl.d.ts","sourceRoot":"","sources":["EditorFilterControl.js"],"names":[],"mappings":"AAQA;IAeE,sBA2BC;IAED;;;OAGG;IACH,2BAHW,yBAAyB,EAAE,YAC3B,oBAAoB,iBAuB9B;IAfG,yCAA4B;IAyC1B,+BAA0B;IAC1B,4BAAqB;IAYzB,4CAEE;IAGF,kBAA+B;CAgDlC;;;;oCAvKmC,0BAA0B"}
1
+ {"version":3,"file":"EditorFilterControl.d.ts","sourceRoot":"","sources":["EditorFilterControl.js"],"names":[],"mappings":"AAOA;IAeE,sBA2BC;IAED;;;OAGG;IACH,2BAHW,yBAAyB,EAAE,YAC3B,oBAAoB,iBAuB9B;IAfG,yCAA4B;IAoC1B,+BAA0B;IAC1B,4BAAqB;IAYzB,4CAEE;IAGF,kBAA+B;CAgDlC;;;;oCAjKmC,0BAA0B"}
@@ -4,7 +4,6 @@ import { EditorButtonControl } from './EditorButtonControl.js';
4
4
  import { FAKE_ORIGINAL_FILTER } from './EditorSlider.js';
5
5
  import { COMMON_OPERATIONS, transformationsToOperations } from './lib/transformationUtils.js';
6
6
  import { preloadImage } from '../../utils/preloadImage.js';
7
- import { parseFilterValue } from './utils/parseFilterValue.js';
8
7
 
9
8
  export class EditorFilterControl extends EditorButtonControl {
10
9
  constructor() {
@@ -80,8 +79,7 @@ export class EditorFilterControl extends EditorButtonControl {
80
79
  initCallback() {
81
80
  super.initCallback();
82
81
 
83
- /** @param {MouseEvent} e */
84
- this.$['on.click'] = (e) => {
82
+ this.$['on.click'] = () => {
85
83
  if (!this.$.active) {
86
84
  this.$['*sliderEl'].setOperation(this._operation, this._filter);
87
85
  this.$['*sliderEl'].apply();
@@ -90,10 +88,6 @@ export class EditorFilterControl extends EditorButtonControl {
90
88
  this.$['*showSlider'] = true;
91
89
  }
92
90
 
93
- this.telemetryManager.sendEventCloudImageEditor(e, this.$['*tabId'], {
94
- operation: parseFilterValue(this.$['*operationTooltip']),
95
- });
96
-
97
91
  this.$['*currentFilter'] = this._filter;
98
92
  };
99
93
 
@@ -1 +1 @@
1
- {"version":3,"file":"EditorImageCropper.d.ts","sourceRoot":"","sources":["EditorImageCropper.js"],"names":[],"mappings":"AA2CA;IAKI;;;QAIE,yBAAyB;uBAAd,UAAU;QAMrB,6CAA6C;qBAAlC,OAAO,YAAY,EAAE,SAAS;QAOzC,6CAA6C;oBAAlC,OAAO,YAAY,EAAE,SAAS;MAO1C;IAED,eAAe;IACf,yBAA8D;IAE9D,eAAe;IACf,+BAA0E;IAE1E;;;MAAyC;IAG3C,eAAe;IACf,sBASC;IAED,eAAe;IACf,6BAKC;IAED,eAAe;IACf,oBAgBC;IAFC,uCAAqB;IACrB,kDAAe;IAGjB,eAAe;IACf,oBAuCC;IAED,eAAe;IACf,mBAqDC;IAED,eAAe;IACf,mBAcC;IAED,eAAe;IACf,cAUC;IAED;;;OAGG;IACH,mBAYC;IAED;;;OAGG;IACH,2BAkBC;IAED;;;OAGG;IACH,+BA8BC;IAED,eAAe;IACf,gBAkBC;IAED;;;;OAIG;IACH,4CAFa,IAAI,CAehB;IAED;;;OAGG;IACH,oBAHW,MAAM,UAAU,GACd,SAAS,OAAO,CAI5B;IAED;;;OAGG;IACH,oBAHW,OAAO,YAAY,EAAE,SAAS,mBAC9B;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,iBAyBlC;IAnBC,+BAAqB;IAYrB,sCAKE;IAGJ;;aAkBC;IAED,eAAe;IACf,0BAYC;IAED,eAAe;IACf,2BAMC;IAED,eAAe;IACf,eAKC;IAED;;;;;OAKG;IACH,sBAyBC;IATC,yCAA4B;IAW9B;;;;OAIG;IACH,4BAkBC;CAgCF;;;;;UA5gBa,OAAO;YACP,OAAO;;;sBApBC,4BAA4B"}
1
+ {"version":3,"file":"EditorImageCropper.d.ts","sourceRoot":"","sources":["EditorImageCropper.js"],"names":[],"mappings":"AA2CA;IAKI;;;QAIE,yBAAyB;uBAAd,UAAU;QAMrB,6CAA6C;qBAAlC,OAAO,YAAY,EAAE,SAAS;QAOzC,6CAA6C;oBAAlC,OAAO,YAAY,EAAE,SAAS;MAO1C;IAED,eAAe;IACf,yBAA8D;IAE9D,eAAe;IACf,+BAA0E;IAE1E;;;MAAyC;IAG3C,eAAe;IACf,sBASC;IAED,eAAe;IACf,6BAKC;IAED,eAAe;IACf,oBAgBC;IAFC,uCAAqB;IACrB,kDAAe;IAGjB,eAAe;IACf,oBAuCC;IAED,eAAe;IACf,mBAoDC;IAED,eAAe;IACf,mBAcC;IAED,eAAe;IACf,cAUC;IAED;;;OAGG;IACH,mBAYC;IAED;;;OAGG;IACH,2BAkBC;IAED;;;OAGG;IACH,+BA8BC;IAED,eAAe;IACf,gBAkBC;IAED;;;;OAIG;IACH,4CAFa,IAAI,CAehB;IAED;;;OAGG;IACH,oBAHW,MAAM,UAAU,GACd,SAAS,OAAO,CAI5B;IAED;;;OAGG;IACH,oBAHW,OAAO,YAAY,EAAE,SAAS,mBAC9B;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,iBAyBlC;IAnBC,+BAAqB;IAYrB,sCAKE;IAGJ;;aAkBC;IAED,eAAe;IACf,0BAYC;IAED,eAAe;IACf,2BAMC;IAED,eAAe;IACf,eAKC;IAED;;;;;OAKG;IACH,sBAyBC;IATC,yCAA4B;IAW9B;;;;OAIG;IACH,4BAkBC;CAgCF;;;;;UA3gBa,OAAO;YACP,OAAO;;;sBApBC,4BAA4B"}
@@ -189,8 +189,7 @@ export class EditorImageCropper extends Block {
189
189
  );
190
190
  }
191
191
 
192
- /** @type {import('./types.js').CropPresetList[0] | undefined} */
193
- const cropPreset = this.$['*cropPresetList']?.[0];
192
+ const cropPreset = this.$['*currentAspectRatio'];
194
193
  const cropAspectRatio = cropPreset ? cropPreset.width / cropPreset.height : undefined;
195
194
 
196
195
  if (
@@ -526,7 +525,7 @@ export class EditorImageCropper extends Block {
526
525
  }
527
526
  });
528
527
 
529
- this.sub('*cropPresetList', () => {
528
+ this.sub('*currentAspectRatio', () => {
530
529
  this._alignCrop();
531
530
  });
532
531
 
@@ -1,7 +1,7 @@
1
1
  export class EditorOperationControl extends EditorButtonControl {
2
2
  /**
3
3
  * @private
4
- * @type {import('./toolbar-constants.js').ColorOperation | ''}
4
+ * @type {String}
5
5
  */
6
6
  private _operation;
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EditorOperationControl.d.ts","sourceRoot":"","sources":["EditorOperationControl.js"],"names":[],"mappings":"AAKA;IACE;;;OAGG;IACH,mBAAgB;CAuCjB;oCAhDmC,0BAA0B"}
1
+ {"version":3,"file":"EditorOperationControl.d.ts","sourceRoot":"","sources":["EditorOperationControl.js"],"names":[],"mappings":"AAGA;IACE;;;OAGG;IACH,mBAAgB;CAmCjB;oCA3CmC,0BAA0B"}
@@ -1,29 +1,23 @@
1
- //@ts-check
2
1
  import { EditorButtonControl } from './EditorButtonControl.js';
3
2
  import { COLOR_OPERATIONS_CONFIG } from './toolbar-constants.js';
4
- import { parseFilterValue } from './utils/parseFilterValue.js';
5
3
 
6
4
  export class EditorOperationControl extends EditorButtonControl {
7
5
  /**
8
6
  * @private
9
- * @type {import('./toolbar-constants.js').ColorOperation | ''}
7
+ * @type {String}
10
8
  */
11
9
  _operation = '';
12
10
 
13
11
  initCallback() {
14
12
  super.initCallback();
15
13
 
16
- this.$['on.click'] = (/** @type {MouseEvent} */ e) => {
14
+ this.$['on.click'] = (e) => {
17
15
  this.$['*sliderEl'].setOperation(this._operation);
18
16
  this.$['*showSlider'] = true;
19
17
  this.$['*currentOperation'] = this._operation;
20
-
21
- this.telemetryManager.sendEventCloudImageEditor(e, this.$['*tabId'], {
22
- operation: parseFilterValue(this.$['*operationTooltip']),
23
- });
24
18
  };
25
19
 
26
- this.defineAccessor('operation', (/** @type {import('./toolbar-constants.js').ColorOperation} */ operation) => {
20
+ this.defineAccessor('operation', (operation) => {
27
21
  if (operation) {
28
22
  this._operation = operation;
29
23
  this.$['icon'] = operation;
@@ -1,9 +1,12 @@
1
1
  export class EditorToolbar extends Block {
2
2
  init$: {
3
3
  '*sliderEl': null;
4
+ '*listAspectRatioEl': null;
4
5
  /** @type {import('./types.js').LoadingOperations} */
5
6
  '*loadingOperations': import("./types.js").LoadingOperations;
6
7
  '*showSlider': boolean;
8
+ '*showListAspectRatio': boolean;
9
+ hideSliderOrList: boolean;
7
10
  '*currentFilter': string;
8
11
  '*currentOperation': null;
9
12
  showLoader: boolean;
@@ -40,14 +43,10 @@ export class EditorToolbar extends Block {
40
43
  hidden: string;
41
44
  visible: string;
42
45
  };
43
- /** @param {MouseEvent} e */
44
- 'on.cancel': (e: MouseEvent) => void;
45
- /** @param {MouseEvent} e */
46
- 'on.apply': (e: MouseEvent) => void;
47
- /** @param {MouseEvent} e */
48
- 'on.applySlider': (e: MouseEvent) => void;
49
- /** @param {MouseEvent} e */
50
- 'on.cancelSlider': (e: MouseEvent) => void;
46
+ 'on.cancel': () => void;
47
+ 'on.apply': () => void;
48
+ 'on.applySlider': () => void;
49
+ 'on.cancelSlider': () => void;
51
50
  /** @param {MouseEvent} e */
52
51
  'on.clickTab': (e: MouseEvent) => void;
53
52
  tab_role: string;
@@ -76,6 +75,13 @@ export class EditorToolbar extends Block {
76
75
  * @param {String} operation
77
76
  */
78
77
  private _createToggleControl;
78
+ /**
79
+ * @private
80
+ * @param {import('./types.js').CropAspectRatio} config
81
+ */
82
+ private _createAspectRatioConrol;
83
+ _createFreeformConrol(): EditorFreeformButtonControl;
84
+ _clearListAspectRatio(): void;
79
85
  /**
80
86
  * @private
81
87
  * @param {String} tabId
@@ -110,4 +116,5 @@ export namespace EditorToolbar {
110
116
  let template: string;
111
117
  }
112
118
  import { Block } from '../../../abstract/Block.js';
119
+ import { EditorFreeformButtonControl } from './EditorAspectRatioButtonControl.js';
113
120
  //# sourceMappingURL=EditorToolbar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditorToolbar.d.ts","sourceRoot":"","sources":["EditorToolbar.js"],"names":[],"mappings":"AA4DA;IAII;;QAGE,qDAAqD;8BAA1C,OAAO,YAAY,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAwCjD,4BAA4B;yBAAhB,UAAU;QAStB,4BAA4B;wBAAhB,UAAU;QAOtB,4BAA4B;8BAAhB,UAAU;QAStB,4BAA4B;+BAAhB,UAAU;QAQtB,4BAA4B;2BAAhB,UAAU;;;;;;;MAiBvB;IAED,eAAe;IAEf,6BAAsE;IAGxE,eAAe;IACf,uBAKC;IAED;;;OAGG;IACH,gCAKC;IAED;;;OAGG;IACH,6BAKC;IAED;;;OAGG;IACH,6BAKC;IAED;;;OAGG;IACH,4BAoCC;IAED;;;;OAIG;IACH,qBAyBC;IAED;;;OAGG;IACH,4BAKC;IAED,eAAe;IACf,0BAIC;IAED,eAAe;IACf,4BAWC;IALG,oBAGC;IAIL;;;OAGG;IACH,oBAEC;IAED;;MAwBM;CAqFP;;;;sBA1aqB,4BAA4B"}
1
+ {"version":3,"file":"EditorToolbar.d.ts","sourceRoot":"","sources":["EditorToolbar.js"],"names":[],"mappings":"AA4DA;IAII;;;QAIE,qDAAqD;8BAA1C,OAAO,YAAY,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAyDjD,4BAA4B;2BAAhB,UAAU;;;;;;;MAgBvB;IAED,eAAe;IAEf,6BAAsE;IAGxE,eAAe;IACf,uBAUC;IAED;;;OAGG;IACH,gCAKC;IAED;;;OAGG;IACH,6BAKC;IAED;;;OAGG;IACH,6BAKC;IAED;;;OAGG;IACH,iCAKC;IAED,qDAGC;IAED,8BAEC;IAED;;;OAGG;IACH,4BAwDC;IAED;;;;OAIG;IACH,qBAyBC;IAED;;;OAGG;IACH,4BAKC;IAED,eAAe;IACf,0BAIC;IAED,eAAe;IACf,4BAWC;IALG,oBAGC;IAIL;;;OAGG;IACH,oBAEC;IAED;;MAwBM;CA+FP;;;;sBAjdqB,4BAA4B;4CAE0B,qCAAqC"}