@procore/text-editor 1.1.0 → 1.2.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.
Files changed (50) hide show
  1. package/.jest/ckeditorMock.js +1 -0
  2. package/.jest/setupTests.js +1 -2
  3. package/CHANGELOG.md +17 -0
  4. package/README.md +15 -0
  5. package/dist/TextEditor/CKTextEditor.js +7 -3
  6. package/dist/TextEditor/CKTextEditor.js.map +1 -1
  7. package/dist/TextEditor/TextEditor.styles.d.ts +15 -7
  8. package/dist/TextEditor/TextEditor.styles.js +6 -6
  9. package/dist/TextEditor/TextEditor.styles.js.map +1 -1
  10. package/dist/TextEditor/TextEditor.types.d.ts +28 -8
  11. package/dist/TextEditor/TextEditor.types.js.map +1 -1
  12. package/dist/TextEditor/TinyMCETextEditor.js +2 -1
  13. package/dist/TextEditor/TinyMCETextEditor.js.map +1 -1
  14. package/dist/TextEditor/plugins/ProcoreImageUploadPlugin/ProcoreImageUploadPlugin.d.ts +6 -0
  15. package/dist/TextEditor/plugins/ProcoreImageUploadPlugin/ProcoreImageUploadPlugin.js +114 -14
  16. package/dist/TextEditor/plugins/ProcoreImageUploadPlugin/ProcoreImageUploadPlugin.js.map +1 -1
  17. package/dist/TextEditor/utils/config.js +3 -3
  18. package/dist/TextEditor/utils/config.js.map +1 -1
  19. package/dist/TextEditor/utils/richTextEditorHandlers.d.ts +4 -1
  20. package/dist/TextEditor/utils/richTextEditorHandlers.js +79 -21
  21. package/dist/TextEditor/utils/richTextEditorHandlers.js.map +1 -1
  22. package/dist/TextEditorOutput/TextEditorOutput.styles.d.ts +3 -1
  23. package/dist/TextEditorOutput/TextEditorOutput.styles.js +2 -2
  24. package/dist/TextEditorOutput/TextEditorOutput.styles.js.map +1 -1
  25. package/dist/TextEditorOutput/TextEditorOutput.utils.js +7 -3
  26. package/dist/TextEditorOutput/TextEditorOutput.utils.js.map +1 -1
  27. package/dist/_typedoc/TextEditor/TextEditor.types.json +323 -49
  28. package/dist/_typedoc/TextEditor/TextEditorProvider.types.json +2 -2
  29. package/dist/_typedoc/TextEditorOutput/TextEditorOutput.types.json +3 -3
  30. package/dist/_typedoc/deprecations.json +1 -1
  31. package/dist/locales/de-DE.json +1 -0
  32. package/dist/locales/en-AU.json +1 -0
  33. package/dist/locales/en-CA.json +1 -0
  34. package/dist/locales/en-GB.json +1 -0
  35. package/dist/locales/en.json +1 -0
  36. package/dist/locales/es-ES.json +1 -0
  37. package/dist/locales/es.json +1 -0
  38. package/dist/locales/fr-CA.json +1 -0
  39. package/dist/locales/fr-FR.json +1 -0
  40. package/dist/locales/is-IS.json +1 -0
  41. package/dist/locales/it-IT.json +1 -0
  42. package/dist/locales/ja-JP.json +1 -0
  43. package/dist/locales/nb-NO.json +1 -0
  44. package/dist/locales/pl-PL.json +1 -0
  45. package/dist/locales/pt-BR.json +1 -0
  46. package/dist/locales/pt-PT.json +1 -0
  47. package/dist/locales/th-TH.json +1 -0
  48. package/dist/locales/zh-SG.json +1 -0
  49. package/dist/locales/zh-TW.json +1 -0
  50. package/package.json +10 -10
@@ -8,14 +8,10 @@ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present,
8
8
  function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
9
9
  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
10
10
  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
11
- var IMAGE_UPLOAD_FAILED_MESSAGE = 'Image upload failed.';
12
- var defaultFetcher = function defaultFetcher() {
13
- return fetch.apply(void 0, arguments);
14
- };
15
11
  var _ref = require('@procore/core-http'),
16
12
  requestJSON = _ref.requestJSON;
17
13
  var fetcherRequestJSON = /*#__PURE__*/function () {
18
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(fetcher, url, init) {
14
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(fetcher, url, init, i18n) {
19
15
  var response, _t, _t2;
20
16
  return _regenerator().w(function (_context) {
21
17
  while (1) switch (_context.n) {
@@ -30,7 +26,7 @@ var fetcherRequestJSON = /*#__PURE__*/function () {
30
26
  }
31
27
  _t = Error;
32
28
  _context.n = 2;
33
- return errorMessageFromResponse(response, IMAGE_UPLOAD_FAILED_MESSAGE);
29
+ return errorMessageFromResponse(response, i18n.t('textEditor.imageUpload.failed'));
34
30
  case 2:
35
31
  _t2 = _context.v;
36
32
  throw new _t(_t2);
@@ -42,13 +38,13 @@ var fetcherRequestJSON = /*#__PURE__*/function () {
42
38
  }
43
39
  }, _callee);
44
40
  }));
45
- return function fetcherRequestJSON(_x, _x2, _x3) {
41
+ return function fetcherRequestJSON(_x, _x2, _x3, _x4) {
46
42
  return _ref2.apply(this, arguments);
47
43
  };
48
44
  }();
49
- var procoreRequestJSON = function procoreRequestJSON(url, init, fetcher) {
45
+ var procoreRequestJSON = function procoreRequestJSON(url, init, i18n, fetcher) {
50
46
  if (fetcher) {
51
- return fetcherRequestJSON(fetcher, url, init);
47
+ return fetcherRequestJSON(fetcher, url, init, i18n);
52
48
  }
53
49
  return requestJSON(url, init);
54
50
  };
@@ -76,7 +72,7 @@ var errorMessageFromResponse = /*#__PURE__*/function () {
76
72
  }
77
73
  }, _callee2, null, [[0, 2]]);
78
74
  }));
79
- return function errorMessageFromResponse(_x4, _x5) {
75
+ return function errorMessageFromResponse(_x5, _x6) {
80
76
  return _ref3.apply(this, arguments);
81
77
  };
82
78
  }();
@@ -92,7 +88,7 @@ var uploadEndpoint = function uploadEndpoint(_ref5) {
92
88
  return projectId ? "/rest/v1.1/projects/".concat(projectId, "/uploads") : "/rest/v1.1/companies/".concat(companyId, "/uploads");
93
89
  };
94
90
  var uploadFileToStorage = /*#__PURE__*/function () {
95
- var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(uploadInstructions, file, signal, fetcher) {
91
+ var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(uploadInstructions, file, signal, i18n, fetcher, onProgress) {
96
92
  var _uploadInstructions$f;
97
93
  var body, uploadResponse;
98
94
  return _regenerator().w(function (_context3) {
@@ -102,7 +98,7 @@ var uploadFileToStorage = /*#__PURE__*/function () {
102
98
  _context3.n = 1;
103
99
  break;
104
100
  }
105
- throw new Error('Image upload did not return storage instructions.');
101
+ throw new Error(i18n.t('textEditor.imageUpload.missingStorageInstructions'));
106
102
  case 1:
107
103
  body = new FormData();
108
104
  Object.entries((_uploadInstructions$f = uploadInstructions.fields) !== null && _uploadInstructions$f !== void 0 ? _uploadInstructions$f : {}).forEach(function (_ref7) {
@@ -112,6 +108,10 @@ var uploadFileToStorage = /*#__PURE__*/function () {
112
108
  body.append(key, value);
113
109
  });
114
110
  body.append('file', file);
111
+ if (!fetcher) {
112
+ _context3.n = 4;
113
+ break;
114
+ }
115
115
  _context3.n = 2;
116
116
  return fetcher(uploadInstructions.url, {
117
117
  method: 'POST',
@@ -124,24 +124,79 @@ var uploadFileToStorage = /*#__PURE__*/function () {
124
124
  _context3.n = 3;
125
125
  break;
126
126
  }
127
- throw new Error(IMAGE_UPLOAD_FAILED_MESSAGE);
127
+ throw new Error(i18n.t('textEditor.imageUpload.failed'));
128
128
  case 3:
129
+ onProgress === null || onProgress === void 0 || onProgress(file.size);
130
+ return _context3.a(2);
131
+ case 4:
132
+ _context3.n = 5;
133
+ return uploadFileToStorageWithProgress(uploadInstructions.url, body, file, signal, i18n, onProgress);
134
+ case 5:
129
135
  return _context3.a(2);
130
136
  }
131
137
  }, _callee3);
132
138
  }));
133
- return function uploadFileToStorage(_x6, _x7, _x8, _x9) {
139
+ return function uploadFileToStorage(_x7, _x8, _x9, _x0, _x1, _x10) {
134
140
  return _ref6.apply(this, arguments);
135
141
  };
136
142
  }();
143
+ var uploadFileToStorageWithProgress = function uploadFileToStorageWithProgress(url, body, file, signal, i18n, onProgress) {
144
+ return new Promise(function (resolve, reject) {
145
+ var abortError = function abortError() {
146
+ return new DOMException('The operation was aborted.', 'AbortError');
147
+ };
148
+ if (signal.aborted) {
149
+ reject(abortError());
150
+ return;
151
+ }
152
+ var xhr = new XMLHttpRequest();
153
+ var abort = function abort() {
154
+ return xhr.abort();
155
+ };
156
+ signal.addEventListener('abort', abort, {
157
+ once: true
158
+ });
159
+ var settle = function settle(fn) {
160
+ signal.removeEventListener('abort', abort);
161
+ fn();
162
+ };
163
+ xhr.upload.onprogress = function (event) {
164
+ if (event.lengthComputable && event.total > 0) {
165
+ onProgress === null || onProgress === void 0 || onProgress(Math.min(file.size, event.loaded / event.total * file.size));
166
+ }
167
+ };
168
+ xhr.onload = function () {
169
+ return settle(function () {
170
+ if (xhr.status === 204 && xhr.status < 300) {
171
+ resolve();
172
+ } else {
173
+ reject(new Error(i18n.t('textEditor.imageUpload.failed')));
174
+ }
175
+ });
176
+ };
177
+ xhr.onerror = function () {
178
+ return settle(function () {
179
+ return reject(new Error(i18n.t('textEditor.imageUpload.failed')));
180
+ });
181
+ };
182
+ xhr.onabort = function () {
183
+ return settle(function () {
184
+ return reject(abortError());
185
+ });
186
+ };
187
+ xhr.open('POST', url);
188
+ xhr.send(body);
189
+ });
190
+ };
137
191
  export var richTextEditorUploadHandler = function richTextEditorUploadHandler(_ref9) {
138
192
  var companyId = _ref9.companyId,
139
193
  projectId = _ref9.projectId,
140
194
  toolName = _ref9.toolName,
195
+ i18n = _ref9.i18n,
141
196
  fetcher = _ref9.fetcher;
142
197
  return /*#__PURE__*/function () {
143
198
  var _ref0 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(file, context, callbacks) {
144
- var _callbacks$onProgress, _callbacks$onProgress2;
199
+ var _callbacks$onProgress, _callbacks$onProgress3;
145
200
  var uploadInstructions, createBody, prostoreFileId, urls, _t4;
146
201
  return _regenerator().w(function (_context4) {
147
202
  while (1) switch (_context4.n) {
@@ -163,11 +218,14 @@ export var richTextEditorUploadHandler = function richTextEditorUploadHandler(_r
163
218
  response_filename: file.name,
164
219
  size: file.size
165
220
  })
166
- }, fetcher);
221
+ }, i18n, fetcher);
167
222
  case 1:
168
223
  uploadInstructions = _context4.v;
169
224
  _context4.n = 2;
170
- return uploadFileToStorage(uploadInstructions, file, context.signal, fetcher !== null && fetcher !== void 0 ? fetcher : defaultFetcher);
225
+ return uploadFileToStorage(uploadInstructions, file, context.signal, i18n, fetcher, function (uploadedBytes) {
226
+ var _callbacks$onProgress2;
227
+ return (_callbacks$onProgress2 = callbacks.onProgress) === null || _callbacks$onProgress2 === void 0 ? void 0 : _callbacks$onProgress2.call(callbacks, uploadedBytes, file.size);
228
+ });
171
229
  case 2:
172
230
  _t4 = bodyFromResponse;
173
231
  _context4.n = 3;
@@ -186,7 +244,7 @@ export var richTextEditorUploadHandler = function richTextEditorUploadHandler(_r
186
244
  filename: file.name,
187
245
  tool_name: toolName
188
246
  })
189
- }, fetcher);
247
+ }, i18n, fetcher);
190
248
  case 3:
191
249
  createBody = _t4(_context4.v);
192
250
  prostoreFileId = createBody.prostore_file_id;
@@ -195,9 +253,9 @@ export var richTextEditorUploadHandler = function richTextEditorUploadHandler(_r
195
253
  _context4.n = 4;
196
254
  break;
197
255
  }
198
- throw new Error('Image upload did not return a Prostore file ID and URL.');
256
+ throw new Error(i18n.t('textEditor.imageUpload.invalidProstoreFileId'));
199
257
  case 4:
200
- (_callbacks$onProgress2 = callbacks.onProgress) === null || _callbacks$onProgress2 === void 0 || _callbacks$onProgress2.call(callbacks, file.size, file.size);
258
+ (_callbacks$onProgress3 = callbacks.onProgress) === null || _callbacks$onProgress3 === void 0 || _callbacks$onProgress3.call(callbacks, file.size, file.size);
201
259
  return _context4.a(2, {
202
260
  urls: urls,
203
261
  prostoreFileId: prostoreFileId,
@@ -207,7 +265,7 @@ export var richTextEditorUploadHandler = function richTextEditorUploadHandler(_r
207
265
  }
208
266
  }, _callee4);
209
267
  }));
210
- return function (_x0, _x1, _x10) {
268
+ return function (_x11, _x12, _x13) {
211
269
  return _ref0.apply(this, arguments);
212
270
  };
213
271
  }();
@@ -1 +1 @@
1
- {"version":3,"file":"richTextEditorHandlers.js","names":["e","t","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","Object","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","length","l","TypeError","call","done","value","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","defineProperty","_regeneratorDefine","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","IMAGE_UPLOAD_FAILED_MESSAGE","defaultFetcher","fetch","_ref","require","requestJSON","fetcherRequestJSON","_ref2","_callee","fetcher","url","init","response","_t","_t2","_context","ok","Error","errorMessageFromResponse","json","_x","_x2","_x3","procoreRequestJSON","bodyFromResponse","data","_ref3","_callee2","fallbackMessage","_body$error","_body$errors","body","_t3","_context2","error","message","errors","find","_x4","_x5","richTextEditorEndpoint","_ref4","companyId","projectId","projectPath","concat","uploadEndpoint","_ref5","uploadFileToStorage","_ref6","_callee3","uploadInstructions","file","signal","_uploadInstructions$f","uploadResponse","_context3","uuid","FormData","entries","fields","forEach","_ref7","_ref8","_slicedToArray","key","append","method","_x6","_x7","_x8","_x9","richTextEditorUploadHandler","_ref9","toolName","_ref0","_callee4","context","callbacks","_callbacks$onProgress","_callbacks$onProgress2","createBody","prostoreFileId","urls","_t4","_context4","onProgress","size","credentials","headers","JSON","stringify","response_content_type","type","response_filename","name","upload_uuid","filename","tool_name","prostore_file_id","width","height","_x0","_x1","_x10"],"sources":["../../../src/TextEditor/utils/richTextEditorHandlers.ts"],"sourcesContent":["import type {\n TextEditorImageUploadHandlers,\n TextEditorImageUploadResult,\n} from '../TextEditor.types'\n\ntype CreateRichTextEditorUploadResponseBody = {\n prostore_file_id?: number | string\n urls?: TextEditorImageUploadResult['urls']\n width?: number\n height?: number\n}\n\ntype CreateUploadResponseBody = {\n uuid?: string\n url?: string\n fields?: Record<string, string>\n}\n\ntype CreateRichTextEditorUploadResponse =\n | CreateRichTextEditorUploadResponseBody\n | { data: CreateRichTextEditorUploadResponseBody }\n\ntype ErrorResponseBody = {\n error?: {\n message?: string\n }\n errors?: Array<{\n message?: string\n }>\n message?: string\n}\n\ntype RichTextEditorHandlerOptions = {\n companyId: number | string\n projectId?: number | string\n toolName: string\n fetcher?: typeof fetch\n}\n\nconst IMAGE_UPLOAD_FAILED_MESSAGE = 'Image upload failed.'\n\nconst defaultFetcher: typeof fetch = (...args) => fetch(...args)\nconst { requestJSON } = require('@procore/core-http') as {\n requestJSON: <T>(url: string, init?: RequestInit) => Promise<T>\n}\n\nconst fetcherRequestJSON = async <T extends object>(\n fetcher: typeof fetch,\n url: string,\n init: RequestInit\n) => {\n const response = await fetcher(url, init)\n\n if (!response.ok) {\n throw new Error(\n await errorMessageFromResponse(response, IMAGE_UPLOAD_FAILED_MESSAGE)\n )\n }\n\n return (await response.json()) as T\n}\n\nconst procoreRequestJSON = <T extends object>(\n url: string,\n init: RequestInit,\n fetcher?: typeof fetch\n) => {\n if (fetcher) {\n return fetcherRequestJSON<T>(fetcher, url, init)\n }\n\n return requestJSON<T>(url, init)\n}\n\nconst bodyFromResponse = <T extends object>(response: T | { data: T }) =>\n 'data' in response ? response.data : response\n\nconst errorMessageFromResponse = async (\n response: Response,\n fallbackMessage: string\n) => {\n try {\n const body = (await response.json()) as ErrorResponseBody\n\n return (\n body.error?.message ||\n body.errors?.find((error) => error.message)?.message ||\n body.message ||\n fallbackMessage\n )\n } catch (_error) {\n return fallbackMessage\n }\n}\n\nconst richTextEditorEndpoint = ({\n companyId,\n projectId,\n}: {\n companyId: number | string\n projectId?: number | string\n}) => {\n const projectPath = projectId ? `/projects/${projectId}` : ''\n\n return `/rest/v2.0/companies/${companyId}${projectPath}/rich_text_editor/images`\n}\n\nconst uploadEndpoint = ({\n companyId,\n projectId,\n}: {\n companyId: number | string\n projectId?: number | string\n}) => {\n return projectId\n ? `/rest/v1.1/projects/${projectId}/uploads`\n : `/rest/v1.1/companies/${companyId}/uploads`\n}\n\nconst uploadFileToStorage = async (\n uploadInstructions: CreateUploadResponseBody,\n file: File,\n signal: AbortSignal,\n fetcher: typeof fetch\n) => {\n if (!uploadInstructions.uuid || !uploadInstructions.url) {\n throw new Error('Image upload did not return storage instructions.')\n }\n\n const body = new FormData()\n\n Object.entries(uploadInstructions.fields ?? {}).forEach(([key, value]) => {\n body.append(key, value)\n })\n body.append('file', file)\n\n const uploadResponse = await fetcher(uploadInstructions.url, {\n method: 'POST',\n signal,\n body,\n })\n\n if (!uploadResponse.ok) {\n throw new Error(IMAGE_UPLOAD_FAILED_MESSAGE)\n }\n}\n\nexport const richTextEditorUploadHandler = ({\n companyId,\n projectId,\n toolName,\n fetcher,\n}: RichTextEditorHandlerOptions): TextEditorImageUploadHandlers['upload'] => {\n return async (file, context, callbacks) => {\n callbacks.onProgress?.(0, file.size)\n\n const uploadInstructions =\n await procoreRequestJSON<CreateUploadResponseBody>(\n uploadEndpoint({ companyId, projectId }),\n {\n method: 'POST',\n credentials: 'same-origin',\n signal: context.signal,\n headers: {\n 'content-type': 'application/json',\n },\n body: JSON.stringify({\n response_content_type: file.type,\n response_filename: file.name,\n size: file.size,\n }),\n },\n fetcher\n )\n\n await uploadFileToStorage(\n uploadInstructions,\n file,\n context.signal,\n fetcher ?? defaultFetcher\n )\n\n const createBody = bodyFromResponse(\n await procoreRequestJSON<CreateRichTextEditorUploadResponse>(\n richTextEditorEndpoint({ companyId, projectId }),\n {\n method: 'POST',\n credentials: 'same-origin',\n signal: context.signal,\n headers: {\n 'content-type': 'application/json',\n },\n body: JSON.stringify({\n upload_uuid: uploadInstructions.uuid,\n filename: file.name,\n tool_name: toolName,\n }),\n },\n fetcher\n )\n )\n const prostoreFileId = createBody.prostore_file_id\n const urls = createBody.urls\n\n if (!prostoreFileId || !urls?.default) {\n throw new Error('Image upload did not return a Prostore file ID and URL.')\n }\n\n callbacks.onProgress?.(file.size, file.size)\n\n return {\n urls,\n prostoreFileId,\n width: createBody.width,\n height: createBody.height,\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"richTextEditorHandlers.js","names":["e","t","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","Object","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","length","l","TypeError","call","done","value","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","defineProperty","_regeneratorDefine","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","_ref","require","requestJSON","fetcherRequestJSON","_ref2","_callee","fetcher","url","init","i18n","response","_t","_t2","_context","ok","Error","errorMessageFromResponse","json","_x","_x2","_x3","_x4","procoreRequestJSON","bodyFromResponse","data","_ref3","_callee2","fallbackMessage","_body$error","_body$errors","body","_t3","_context2","error","message","errors","find","_x5","_x6","richTextEditorEndpoint","_ref4","companyId","projectId","projectPath","concat","uploadEndpoint","_ref5","uploadFileToStorage","_ref6","_callee3","uploadInstructions","file","signal","onProgress","_uploadInstructions$f","uploadResponse","_context3","uuid","FormData","entries","fields","forEach","_ref7","_ref8","_slicedToArray","key","append","method","size","uploadFileToStorageWithProgress","_x7","_x8","_x9","_x0","_x1","_x10","reject","abortError","DOMException","aborted","xhr","XMLHttpRequest","abort","addEventListener","once","settle","fn","removeEventListener","upload","onprogress","event","lengthComputable","total","Math","min","loaded","onload","status","onerror","onabort","open","send","richTextEditorUploadHandler","_ref9","toolName","_ref0","_callee4","context","callbacks","_callbacks$onProgress","_callbacks$onProgress3","createBody","prostoreFileId","urls","_t4","_context4","credentials","headers","JSON","stringify","response_content_type","type","response_filename","name","uploadedBytes","_callbacks$onProgress2","upload_uuid","filename","tool_name","prostore_file_id","width","height","_x11","_x12","_x13"],"sources":["../../../src/TextEditor/utils/richTextEditorHandlers.ts"],"sourcesContent":["import type { I18njs } from '@procore/core-i18n-js'\nimport type {\n TextEditorImageUploadHandlers,\n TextEditorImageUploadResult,\n} from '../TextEditor.types'\n\ntype TextEditorI18n = Pick<I18njs, 't'>\n\ntype CreateRichTextEditorUploadResponseBody = {\n prostore_file_id?: number | string\n urls?: TextEditorImageUploadResult['urls']\n width?: number\n height?: number\n}\n\ntype CreateUploadResponseBody = {\n uuid?: string\n url?: string\n fields?: Record<string, string>\n}\n\ntype CreateRichTextEditorUploadResponse =\n | CreateRichTextEditorUploadResponseBody\n | { data: CreateRichTextEditorUploadResponseBody }\n\ntype ErrorResponseBody = {\n error?: {\n message?: string\n }\n errors?: Array<{\n message?: string\n }>\n message?: string\n}\n\ntype RichTextEditorHandlerOptions = {\n companyId: number | string\n projectId?: number | string\n toolName: string\n i18n: TextEditorI18n\n fetcher?: typeof fetch\n}\n\nconst { requestJSON } = require('@procore/core-http') as {\n requestJSON: <T>(url: string, init?: RequestInit) => Promise<T>\n}\n\nconst fetcherRequestJSON = async <T extends object>(\n fetcher: typeof fetch,\n url: string,\n init: RequestInit,\n i18n: TextEditorI18n\n) => {\n const response = await fetcher(url, init)\n\n if (!response.ok) {\n throw new Error(\n await errorMessageFromResponse(\n response,\n i18n.t('textEditor.imageUpload.failed')\n )\n )\n }\n\n return (await response.json()) as T\n}\n\nconst procoreRequestJSON = <T extends object>(\n url: string,\n init: RequestInit,\n i18n: TextEditorI18n,\n fetcher?: typeof fetch\n) => {\n if (fetcher) {\n return fetcherRequestJSON<T>(fetcher, url, init, i18n)\n }\n\n return requestJSON<T>(url, init)\n}\n\nconst bodyFromResponse = <T extends object>(response: T | { data: T }) =>\n 'data' in response ? response.data : response\n\nconst errorMessageFromResponse = async (\n response: Response,\n fallbackMessage: string\n) => {\n try {\n const body = (await response.json()) as ErrorResponseBody\n\n return (\n body.error?.message ||\n body.errors?.find((error) => error.message)?.message ||\n body.message ||\n fallbackMessage\n )\n } catch (_error) {\n return fallbackMessage\n }\n}\n\nconst richTextEditorEndpoint = ({\n companyId,\n projectId,\n}: {\n companyId: number | string\n projectId?: number | string\n}) => {\n const projectPath = projectId ? `/projects/${projectId}` : ''\n\n return `/rest/v2.0/companies/${companyId}${projectPath}/rich_text_editor/images`\n}\n\nconst uploadEndpoint = ({\n companyId,\n projectId,\n}: {\n companyId: number | string\n projectId?: number | string\n}) => {\n return projectId\n ? `/rest/v1.1/projects/${projectId}/uploads`\n : `/rest/v1.1/companies/${companyId}/uploads`\n}\n\ntype StorageUploadProgress = (uploadedBytes: number) => void\n\nconst uploadFileToStorage = async (\n uploadInstructions: CreateUploadResponseBody,\n file: File,\n signal: AbortSignal,\n i18n: TextEditorI18n,\n fetcher: typeof fetch | undefined,\n onProgress?: StorageUploadProgress\n) => {\n if (!uploadInstructions.uuid || !uploadInstructions.url) {\n throw new Error(i18n.t('textEditor.imageUpload.missingStorageInstructions'))\n }\n\n const body = new FormData()\n\n Object.entries(uploadInstructions.fields ?? {}).forEach(([key, value]) => {\n body.append(key, value)\n })\n body.append('file', file)\n\n if (fetcher) {\n const uploadResponse = await fetcher(uploadInstructions.url, {\n method: 'POST',\n signal,\n body,\n })\n\n if (!uploadResponse.ok) {\n throw new Error(i18n.t('textEditor.imageUpload.failed'))\n }\n\n onProgress?.(file.size)\n\n return\n }\n\n await uploadFileToStorageWithProgress(\n uploadInstructions.url,\n body,\n file,\n signal,\n i18n,\n onProgress\n )\n}\n\nconst uploadFileToStorageWithProgress = (\n url: string,\n body: FormData,\n file: File,\n signal: AbortSignal,\n i18n: TextEditorI18n,\n onProgress?: StorageUploadProgress\n) =>\n new Promise<void>((resolve, reject) => {\n const abortError = () =>\n new DOMException('The operation was aborted.', 'AbortError')\n\n if (signal.aborted) {\n reject(abortError())\n\n return\n }\n\n const xhr = new XMLHttpRequest()\n const abort = () => xhr.abort()\n\n signal.addEventListener('abort', abort, { once: true })\n\n const settle = (fn: () => void) => {\n signal.removeEventListener('abort', abort)\n fn()\n }\n\n xhr.upload.onprogress = (event) => {\n if (event.lengthComputable && event.total > 0) {\n onProgress?.(\n Math.min(file.size, (event.loaded / event.total) * file.size)\n )\n }\n }\n\n xhr.onload = () =>\n settle(() => {\n if (xhr.status === 204 && xhr.status < 300) {\n resolve()\n } else {\n reject(new Error(i18n.t('textEditor.imageUpload.failed')))\n }\n })\n xhr.onerror = () =>\n settle(() => reject(new Error(i18n.t('textEditor.imageUpload.failed'))))\n xhr.onabort = () => settle(() => reject(abortError()))\n\n xhr.open('POST', url)\n xhr.send(body)\n })\n\nexport const richTextEditorUploadHandler = ({\n companyId,\n projectId,\n toolName,\n i18n,\n fetcher,\n}: RichTextEditorHandlerOptions): TextEditorImageUploadHandlers['upload'] => {\n return async (file, context, callbacks) => {\n callbacks.onProgress?.(0, file.size)\n\n const uploadInstructions =\n await procoreRequestJSON<CreateUploadResponseBody>(\n uploadEndpoint({ companyId, projectId }),\n {\n method: 'POST',\n credentials: 'same-origin',\n signal: context.signal,\n headers: {\n 'content-type': 'application/json',\n },\n body: JSON.stringify({\n response_content_type: file.type,\n response_filename: file.name,\n size: file.size,\n }),\n },\n i18n,\n fetcher\n )\n\n await uploadFileToStorage(\n uploadInstructions,\n file,\n context.signal,\n i18n,\n fetcher,\n (uploadedBytes) => callbacks.onProgress?.(uploadedBytes, file.size)\n )\n\n const createBody = bodyFromResponse(\n await procoreRequestJSON<CreateRichTextEditorUploadResponse>(\n richTextEditorEndpoint({ companyId, projectId }),\n {\n method: 'POST',\n credentials: 'same-origin',\n signal: context.signal,\n headers: {\n 'content-type': 'application/json',\n },\n body: JSON.stringify({\n upload_uuid: uploadInstructions.uuid,\n filename: file.name,\n tool_name: toolName,\n }),\n },\n i18n,\n fetcher\n )\n )\n const prostoreFileId = createBody.prostore_file_id\n const urls = createBody.urls\n\n if (!prostoreFileId || !urls?.default) {\n throw new Error(i18n.t('textEditor.imageUpload.invalidProstoreFileId'))\n }\n\n callbacks.onProgress?.(file.size, file.size)\n\n return {\n urls,\n prostoreFileId,\n width: createBody.width,\n height: createBody.height,\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1,3 @@
1
- export declare const StyledEditor: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
1
+ export declare const StyledEditor: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
2
+ style?: import("react").CSSProperties | import("styled-components/dist/types").CSSPropertiesWithVars | undefined;
3
+ }> & string;
@@ -1,6 +1,6 @@
1
1
  import styled from 'styled-components';
2
2
  export var StyledEditor = /*#__PURE__*/styled.div.withConfig({
3
3
  displayName: "StyledEditor",
4
- componentId: "text-editor-1_1_0__sc-1oujb2g-0"
5
- })([".ck-editor__top{height:0 !important;}.ck-content{border:none !important;padding:0 !important;overflow-x:auto;--ck-content-font-family:Inter,'Noto Sans JP','Noto Sans KR','Noto Sans SC','Noto Sans TC',sans-serif;--ck-content-font-size:14px;--ck-content-word-break:break-word;--ck-content-overflow-wrap:break-word;--ck-content-line-height:1.4;p{margin:0;}img{margin-left:auto;margin-right:auto;max-width:100%;height:auto;}figure.table{display:table;margin-top:0.9em;margin-bottom:0.9em;}figure.table table,table{width:100%;border:1px double #b3b3b3;border-collapse:collapse;border-spacing:0;th{text-align:left;}& > thead,& > tbody{& > tr > td,& > tr > th{border:1px solid #bfbfbf;min-width:2em;padding:0.4em;}& > tr > th{background:rgba(0,0,0,0.05);font-weight:700;}}}}"]);
4
+ componentId: "text-editor-1_2_1__sc-1oujb2g-0"
5
+ })([".ck-editor__top{height:0 !important;}.ck-content{border:none !important;padding:0 !important;overflow-x:auto;--ck-content-font-family:Inter,'Noto Sans JP','Noto Sans KR','Noto Sans SC','Noto Sans TC',sans-serif;--ck-content-font-size:14px;--ck-content-word-break:break-word;--ck-content-overflow-wrap:break-word;--ck-content-line-height:1.4;p{margin:0;}li.ck-list-marker-bold::marker{font-weight:bold;}li.ck-list-marker-italic::marker{font-style:italic;}li.ck-list-marker-color::marker{color:var(--ck-content-list-marker-color);}li.ck-list-marker-font-family::marker{font-family:var(--ck-content-list-marker-font-family);}li.ck-list-marker-font-size::marker{font-size:var(--ck-content-list-marker-font-size);}img{margin-left:auto;margin-right:auto;max-width:100%;height:auto;}.image-style-align-left{float:left;margin-right:1.5em;}.image-style-align-right{float:right;margin-left:1.5em;}.image-style-side{float:right;margin-left:1.5em;max-width:50%;}.image-style-block-align-left{margin-left:0;margin-right:auto;}.image-style-block-align-right{margin-left:auto;margin-right:0;}figure.image{display:table;clear:both;margin:0 auto;&.image-style-align-left,&.image-style-align-right,&.image-style-side{clear:none;}&.image-style-align-left{margin:0 1.5em 0 0;}&.image-style-align-right,&.image-style-side{margin:0 0 0 1.5em;}&.image-style-block-align-left{margin-left:0;margin-right:auto;}&.image-style-block-align-right{margin-left:auto;margin-right:0;}}img.image-style-align-left,img.image-style-align-right,img.image-style-side{margin-left:0;margin-right:0;}img.image-style-align-left{margin-right:1.5em;}img.image-style-align-right,img.image-style-side{margin-left:1.5em;}figure.table{display:table;margin-top:0.9em;margin-bottom:0.9em;}figure.table table,table{width:100%;border:1px double #b3b3b3;border-collapse:collapse;border-spacing:0;th{text-align:left;}& > thead,& > tbody{& > tr > td,& > tr > th{border:1px solid #bfbfbf;min-width:2em;padding:0.4em;}& > tr > th{background:rgba(0,0,0,0.05);font-weight:700;}}}}"]);
6
6
  //# sourceMappingURL=TextEditorOutput.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextEditorOutput.styles.js","names":["styled","StyledEditor","div","withConfig","displayName","componentId"],"sources":["../../src/TextEditorOutput/TextEditorOutput.styles.ts"],"sourcesContent":["import styled from 'styled-components'\n\nexport const StyledEditor = styled.div`\n .ck-editor__top {\n height: 0 !important;\n }\n\n .ck-content {\n border: none !important;\n padding: 0 !important;\n overflow-x: auto;\n --ck-content-font-family: Inter, 'Noto Sans JP', 'Noto Sans KR',\n 'Noto Sans SC', 'Noto Sans TC', sans-serif;\n --ck-content-font-size: 14px;\n --ck-content-word-break: break-word;\n --ck-content-overflow-wrap: break-word;\n --ck-content-line-height: 1.4;\n\n p {\n margin: 0;\n }\n\n img {\n margin-left: auto;\n margin-right: auto;\n max-width: 100%;\n height: auto;\n }\n\n figure.table {\n display: table;\n margin-top: 0.9em;\n margin-bottom: 0.9em;\n }\n\n figure.table table,\n table {\n width: 100%;\n border: 1px double #b3b3b3;\n border-collapse: collapse;\n border-spacing: 0;\n\n th {\n text-align: left;\n }\n\n & > thead,\n & > tbody {\n & > tr > td,\n & > tr > th {\n border: 1px solid #bfbfbf;\n min-width: 2em;\n padding: 0.4em;\n }\n\n & > tr > th {\n background: rgba(0, 0, 0, 0.05);\n font-weight: 700;\n }\n }\n }\n }\n`\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,mBAAmB;AAEtC,OAAO,IAAMC,YAAY,gBAAGD,MAAM,CAACE,GAAG,CAAAC,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,uwBA4DrC","ignoreList":[]}
1
+ {"version":3,"file":"TextEditorOutput.styles.js","names":["styled","StyledEditor","div","withConfig","displayName","componentId"],"sources":["../../src/TextEditorOutput/TextEditorOutput.styles.ts"],"sourcesContent":["import styled from 'styled-components'\n\nexport const StyledEditor = styled.div`\n .ck-editor__top {\n height: 0 !important;\n }\n\n .ck-content {\n border: none !important;\n padding: 0 !important;\n overflow-x: auto;\n --ck-content-font-family: Inter, 'Noto Sans JP', 'Noto Sans KR',\n 'Noto Sans SC', 'Noto Sans TC', sans-serif;\n --ck-content-font-size: 14px;\n --ck-content-word-break: break-word;\n --ck-content-overflow-wrap: break-word;\n --ck-content-line-height: 1.4;\n\n p {\n margin: 0;\n }\n\n li.ck-list-marker-bold::marker {\n font-weight: bold;\n }\n\n li.ck-list-marker-italic::marker {\n font-style: italic;\n }\n\n li.ck-list-marker-color::marker {\n color: var(--ck-content-list-marker-color);\n }\n\n li.ck-list-marker-font-family::marker {\n font-family: var(--ck-content-list-marker-font-family);\n }\n\n li.ck-list-marker-font-size::marker {\n font-size: var(--ck-content-list-marker-font-size);\n }\n\n img {\n margin-left: auto;\n margin-right: auto;\n max-width: 100%;\n height: auto;\n }\n\n .image-style-align-left {\n float: left;\n margin-right: 1.5em;\n }\n\n .image-style-align-right {\n float: right;\n margin-left: 1.5em;\n }\n\n .image-style-side {\n float: right;\n margin-left: 1.5em;\n max-width: 50%;\n }\n\n .image-style-block-align-left {\n margin-left: 0;\n margin-right: auto;\n }\n\n .image-style-block-align-right {\n margin-left: auto;\n margin-right: 0;\n }\n\n figure.image {\n display: table;\n clear: both;\n margin: 0 auto;\n\n &.image-style-align-left,\n &.image-style-align-right,\n &.image-style-side {\n clear: none;\n }\n\n &.image-style-align-left {\n margin: 0 1.5em 0 0;\n }\n\n &.image-style-align-right,\n &.image-style-side {\n margin: 0 0 0 1.5em;\n }\n\n &.image-style-block-align-left {\n margin-left: 0;\n margin-right: auto;\n }\n\n &.image-style-block-align-right {\n margin-left: auto;\n margin-right: 0;\n }\n }\n\n img.image-style-align-left,\n img.image-style-align-right,\n img.image-style-side {\n margin-left: 0;\n margin-right: 0;\n }\n\n img.image-style-align-left {\n margin-right: 1.5em;\n }\n\n img.image-style-align-right,\n img.image-style-side {\n margin-left: 1.5em;\n }\n\n figure.table {\n display: table;\n margin-top: 0.9em;\n margin-bottom: 0.9em;\n }\n\n figure.table table,\n table {\n width: 100%;\n border: 1px double #b3b3b3;\n border-collapse: collapse;\n border-spacing: 0;\n\n th {\n text-align: left;\n }\n\n & > thead,\n & > tbody {\n & > tr > td,\n & > tr > th {\n border: 1px solid #bfbfbf;\n min-width: 2em;\n padding: 0.4em;\n }\n\n & > tr > th {\n background: rgba(0, 0, 0, 0.05);\n font-weight: 700;\n }\n }\n }\n }\n`\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,mBAAmB;AAEtC,OAAO,IAAMC,YAAY,gBAAGD,MAAM,CAACE,GAAG,CAAAC,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,2+DAyJrC","ignoreList":[]}
@@ -19,6 +19,7 @@ import sanitizeHtml from 'sanitize-html';
19
19
  import { RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE } from '../TextEditor/utils/imageAttributes';
20
20
  import { canonicalizeTextEditorImageUrl } from '../TextEditor/utils/imageUrls';
21
21
  export { isAllowedTextEditorImageUrl } from '../TextEditor/utils/imageUrls';
22
+ var COLOR_VALUES = [/^#[0-9a-fA-F]{3,6}$/, /^rgb\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*\)$/, /^rgba\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*,\s*[\d.]+\s*\)$/];
22
23
  var CKEDITOR_IMAGE_CLASSES = new Set(['image', 'image-inline', 'image_resized', 'image-style-align-left', 'image-style-align-right', 'image-style-block-align-left', 'image-style-block-align-right', 'image-style-side',
23
24
  // Keep as-is: the figure transform runs on ALL figures, and this is the
24
25
  // table-figure marker (`<figure class="table">`). We can't filter it out
@@ -157,8 +158,8 @@ export var sanitizeTextEditorHtml = function sanitizeTextEditorHtml(html) {
157
158
  },
158
159
  allowedStyles: {
159
160
  '*': {
160
- color: [/^#[0-9a-fA-F]{3,6}$/, /^rgb\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*\)$/, /^rgba\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*,\s*[\d.]+\s*\)$/],
161
- 'background-color': [/^#[0-9a-fA-F]{3,6}$/, /^rgb\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*\)$/, /^rgba\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*,\s*[\d.]+\s*\)$/],
161
+ color: COLOR_VALUES,
162
+ 'background-color': COLOR_VALUES,
162
163
  'font-size': [/^\d+(?:px|pt|em|rem|%)$/],
163
164
  'font-weight': [/^(?:normal|bold|bolder|lighter|\d{1,3})$/],
164
165
  'font-style': [/^(?:normal|italic|oblique)$/],
@@ -187,10 +188,13 @@ export var sanitizeTextEditorHtml = function sanitizeTextEditorHtml(html) {
187
188
  'border-bottom': [/.*/],
188
189
  'border-left': [/.*/],
189
190
  'border-right': [/.*/],
190
- 'border-color': [/^#[0-9a-fA-F]{3,6}$/, /^rgb\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*\)$/, /^rgba\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*,\s*[\d.]+\s*\)$/],
191
+ 'border-color': COLOR_VALUES,
191
192
  'border-width': [/^\d+(?:px|pt|em|rem)?$/],
192
193
  'border-style': [/^(?:none|solid|dashed|dotted|double)$/],
193
194
  'list-style-type': [/.*/],
195
+ '--ck-content-list-marker-color': COLOR_VALUES,
196
+ '--ck-content-list-marker-font-size': [/^\d+(?:px|pt|em|rem|%)$/],
197
+ '--ck-content-list-marker-font-family': [/.*/],
194
198
  'vertical-align': [/.*/],
195
199
  'white-space': [/.*/],
196
200
  'aspect-ratio': [/^\d+(?:\.\d+)?(?:\s*\/\s*\d+(?:\.\d+)?)?$/],
@@ -1 +1 @@
1
- {"version":3,"file":"TextEditorOutput.utils.js","names":["sanitizeHtml","RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE","canonicalizeTextEditorImageUrl","isAllowedTextEditorImageUrl","CKEDITOR_IMAGE_CLASSES","Set","IMAGE_TAGS","sanitizeSrcset","srcset","candidates","split","map","candidate","trim","filter","Boolean","length","undefined","sanitizedCandidates","_candidate$split","_candidate$split2","_toArray","url","descriptors","_arrayLikeToArray","slice","canonicalUrl","some","descriptor","test","concat","_toConsumableArray","join","includes","TABLE_ALIGNMENT_CLASS","sanitizeImageClass","className","allowedClasses","name","has","sanitizeImageSizes","sizes","sanitizeProstoreFileId","id","SAFE_IMAGE_STYLE_PROPERTIES","filterImageStyle","style","safeDeclarations","declaration","_property$trim$toLowe","_declaration$split","_declaration$split2","_slicedToArray","property","toLowerCase","setOrDeleteAttribute","attributes","value","sanitizeImageTagAttributes","tagName","onclick","onload","sanitizeClassAttribute","sanitizeUrlAttribute","sanitize","sanitizeImageUrlAttributes","sanitizeProstoreFileIdAttribute","addLazyImageLoadingAttributes","src","loading","decoding","transformImageTag","attribs","sanitizedAttributes","_objectSpread","sanitizeTextEditorHtml","html","allowedTags","allowedAttributes","a","figure","picture","source","img","table","col","td","th","allowedStyles","color","width","height","margin","padding","border","allowedSchemes","allowedSchemesByTag","transformTags","figcaption","exclusiveFilter","frame","tag","allowedIframeHostnames"],"sources":["../../src/TextEditorOutput/TextEditorOutput.utils.ts"],"sourcesContent":["import sanitizeHtml from 'sanitize-html'\n\nimport { RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE } from '../TextEditor/utils/imageAttributes'\nimport { canonicalizeTextEditorImageUrl } from '../TextEditor/utils/imageUrls'\n\nexport { isAllowedTextEditorImageUrl } from '../TextEditor/utils/imageUrls'\n\ntype Attributes = Record<string, string>\n\nconst CKEDITOR_IMAGE_CLASSES = new Set([\n 'image',\n 'image-inline',\n 'image_resized',\n 'image-style-align-left',\n 'image-style-align-right',\n 'image-style-block-align-left',\n 'image-style-block-align-right',\n 'image-style-side',\n // Keep as-is: the figure transform runs on ALL figures, and this is the\n // table-figure marker (`<figure class=\"table\">`). We can't filter it out\n 'table',\n])\n\nconst IMAGE_TAGS = new Set(['figure', 'figcaption', 'picture', 'source', 'img'])\n\nconst sanitizeSrcset = (srcset: string) => {\n const candidates = srcset\n .split(',')\n .map((candidate) => candidate.trim())\n .filter(Boolean)\n\n if (candidates.length === 0) {\n return undefined\n }\n\n const sanitizedCandidates = candidates.map((candidate) => {\n const [url, ...descriptors] = candidate.split(/\\s+/)\n const canonicalUrl = canonicalizeTextEditorImageUrl(url)\n\n if (\n !canonicalUrl ||\n descriptors.some(\n (descriptor) => !/^(?:\\d+w|\\d+(?:\\.\\d+)?x)$/.test(descriptor)\n )\n ) {\n return undefined\n }\n\n return [canonicalUrl, ...descriptors].join(' ')\n })\n\n if (sanitizedCandidates.includes(undefined)) {\n return undefined\n }\n\n return sanitizedCandidates.join(', ')\n}\n\n// Keep it as-is — we can't filter it out or the output loses the table's\n// alignment and always falls back to the default (centered).\nconst TABLE_ALIGNMENT_CLASS = /^table-style-(block-)?align-(left|center|right)$/\n\nconst sanitizeImageClass = (className?: string) => {\n const allowedClasses = className\n ?.split(/\\s+/)\n .filter(\n (name) =>\n CKEDITOR_IMAGE_CLASSES.has(name) || TABLE_ALIGNMENT_CLASS.test(name)\n )\n\n return allowedClasses?.length ? allowedClasses.join(' ') : undefined\n}\n\nconst sanitizeImageSizes = (sizes?: string) => {\n if (!sizes || /url\\(|javascript:|data:/i.test(sizes)) {\n return undefined\n }\n\n return /^[\\w\\s().,:+\\-/%]+$/.test(sizes) ? sizes : undefined\n}\n\nconst sanitizeProstoreFileId = (id?: string) =>\n id && /^[\\w-]+$/.test(id) ? id : undefined\n\n// ImageResize writes inline `width: X%` (and occasionally `height`) on the\n// containing <figure>/<img>. Keep only those declarations so resized images\n// render at the user's chosen size, `allowedStyles` further validates the values.\nconst SAFE_IMAGE_STYLE_PROPERTIES = new Set(['width', 'height', 'aspect-ratio'])\n\nconst filterImageStyle = (style?: string) => {\n if (!style) {\n return undefined\n }\n\n const safeDeclarations = style\n .split(';')\n .map((declaration) => declaration.trim())\n .filter(Boolean)\n .filter((declaration) => {\n const [property] = declaration.split(':', 1)\n return SAFE_IMAGE_STYLE_PROPERTIES.has(\n property?.trim().toLowerCase() ?? ''\n )\n })\n\n return safeDeclarations.length ? `${safeDeclarations.join('; ')};` : undefined\n}\n\nconst setOrDeleteAttribute = (\n attributes: Attributes,\n name: string,\n value?: string\n) => {\n if (value) {\n attributes[name] = value\n } else {\n delete attributes[name]\n }\n}\n\nconst sanitizeImageTagAttributes = (\n tagName: string,\n attributes: Attributes\n) => {\n if (!IMAGE_TAGS.has(tagName)) {\n return\n }\n\n setOrDeleteAttribute(attributes, 'style', filterImageStyle(attributes.style))\n delete attributes.onclick\n delete attributes.onload\n}\n\nconst sanitizeClassAttribute = (attributes: Attributes) => {\n setOrDeleteAttribute(\n attributes,\n 'class',\n sanitizeImageClass(attributes.class)\n )\n}\n\nconst sanitizeUrlAttribute = (\n attributes: Attributes,\n name: string,\n sanitize: (value: string) => string | undefined\n) => {\n if (attributes[name]) {\n setOrDeleteAttribute(attributes, name, sanitize(attributes[name]))\n }\n}\n\nconst sanitizeImageUrlAttributes = (attributes: Attributes) => {\n sanitizeUrlAttribute(attributes, 'src', canonicalizeTextEditorImageUrl)\n sanitizeUrlAttribute(attributes, 'srcset', sanitizeSrcset)\n sanitizeUrlAttribute(attributes, 'sizes', sanitizeImageSizes)\n}\n\nconst sanitizeProstoreFileIdAttribute = (attributes: Attributes) => {\n setOrDeleteAttribute(\n attributes,\n RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE,\n sanitizeProstoreFileId(attributes[RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE])\n )\n}\n\nconst addLazyImageLoadingAttributes = (\n tagName: string,\n attributes: Attributes\n) => {\n if (tagName === 'img' && attributes.src) {\n attributes.loading = 'lazy'\n attributes.decoding = 'async'\n }\n}\n\nconst transformImageTag = (tagName: string, attribs: Attributes) => {\n const sanitizedAttributes: Attributes = { ...attribs }\n\n sanitizeImageTagAttributes(tagName, sanitizedAttributes)\n sanitizeClassAttribute(sanitizedAttributes)\n sanitizeImageUrlAttributes(sanitizedAttributes)\n sanitizeProstoreFileIdAttribute(sanitizedAttributes)\n addLazyImageLoadingAttributes(tagName, sanitizedAttributes)\n\n return {\n tagName,\n attribs: sanitizedAttributes,\n }\n}\n\nexport const sanitizeTextEditorHtml = (html: string) => {\n if (!html) {\n return ''\n }\n\n return sanitizeHtml(html, {\n allowedTags: [\n 'p',\n 'br',\n 'strong',\n 'b',\n 'em',\n 'i',\n 'u',\n 's',\n 'span',\n 'div',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'ul',\n 'ol',\n 'li',\n 'a',\n 'figure',\n 'figcaption',\n 'table',\n 'colgroup',\n 'col',\n 'thead',\n 'tbody',\n 'tr',\n 'td',\n 'th',\n 'blockquote',\n 'pre',\n 'code',\n 'hr',\n 'img',\n 'picture',\n 'source',\n 'sub',\n 'sup',\n ],\n allowedAttributes: {\n '*': ['style', 'class'],\n a: ['href', 'title', 'target', 'rel'],\n figure: ['class', RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE],\n picture: ['class', RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE],\n source: ['srcset', 'sizes', 'type', 'media'],\n img: [\n 'src',\n 'srcset',\n 'sizes',\n 'alt',\n 'title',\n 'width',\n 'height',\n 'loading',\n 'decoding',\n 'class',\n RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE,\n ],\n table: ['border', 'cellpadding', 'cellspacing'],\n col: ['span'],\n td: ['colspan', 'rowspan'],\n th: ['colspan', 'rowspan', 'scope'],\n },\n allowedStyles: {\n '*': {\n color: [\n /^#[0-9a-fA-F]{3,6}$/,\n /^rgb\\(\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*\\)$/,\n /^rgba\\(\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*[\\d.]+\\s*\\)$/,\n ],\n 'background-color': [\n /^#[0-9a-fA-F]{3,6}$/,\n /^rgb\\(\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*\\)$/,\n /^rgba\\(\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*[\\d.]+\\s*\\)$/,\n ],\n 'font-size': [/^\\d+(?:px|pt|em|rem|%)$/],\n 'font-weight': [/^(?:normal|bold|bolder|lighter|\\d{1,3})$/],\n 'font-style': [/^(?:normal|italic|oblique)$/],\n 'font-family': [/.*/],\n 'text-decoration': [/^(?:none|underline|line-through|overline)$/],\n 'text-align': [/^(?:left|right|center|justify)$/],\n 'line-height': [/^\\d+(?:\\.\\d+)?(?:px|pt|em|rem|%)?$/],\n width: [/^\\d+(?:\\.\\d+)?(?:px|pt|em|rem|%)$/],\n 'min-width': [/^\\d+(?:\\.\\d+)?(?:px|pt|em|rem|%)$/],\n 'max-width': [/^\\d+(?:\\.\\d+)?(?:px|pt|em|rem|%)$/],\n height: [/^\\d+(?:\\.\\d+)?(?:px|pt|em|rem|%)$/],\n 'min-height': [/^\\d+(?:\\.\\d+)?(?:px|pt|em|rem|%)$/],\n 'max-height': [/^\\d+(?:\\.\\d+)?(?:px|pt|em|rem|%)$/],\n margin: [/^\\d+(?:px|pt|em|rem|%)?(?:\\s+\\d+(?:px|pt|em|rem|%)?)*$/],\n 'margin-top': [/^\\d+(?:px|pt|em|rem|%)?$/],\n 'margin-bottom': [/^\\d+(?:px|pt|em|rem|%)?$/],\n 'margin-left': [/^\\d+(?:px|pt|em|rem|%)?$/],\n 'margin-right': [/^\\d+(?:px|pt|em|rem|%)?$/],\n padding: [/^\\d+(?:px|pt|em|rem|%)?(?:\\s+\\d+(?:px|pt|em|rem|%)?)*$/],\n 'padding-top': [/^\\d+(?:px|pt|em|rem|%)?$/],\n 'padding-bottom': [/^\\d+(?:px|pt|em|rem|%)?$/],\n 'padding-left': [/^\\d+(?:px|pt|em|rem|%)?$/],\n 'padding-right': [/^\\d+(?:px|pt|em|rem|%)?$/],\n border: [/.*/],\n 'border-top': [/.*/],\n 'border-bottom': [/.*/],\n 'border-left': [/.*/],\n 'border-right': [/.*/],\n 'border-color': [\n /^#[0-9a-fA-F]{3,6}$/,\n /^rgb\\(\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*\\)$/,\n /^rgba\\(\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*[\\d.]+\\s*\\)$/,\n ],\n 'border-width': [/^\\d+(?:px|pt|em|rem)?$/],\n 'border-style': [/^(?:none|solid|dashed|dotted|double)$/],\n 'list-style-type': [/.*/],\n 'vertical-align': [/.*/],\n 'white-space': [/.*/],\n 'aspect-ratio': [/^\\d+(?:\\.\\d+)?(?:\\s*\\/\\s*\\d+(?:\\.\\d+)?)?$/],\n float: [/^(?:left|right|none)$/],\n },\n },\n allowedSchemes: ['http', 'https', 'mailto', 'tel'],\n allowedSchemesByTag: {\n img: ['http', 'https'],\n source: ['http', 'https'],\n },\n transformTags: {\n figure: transformImageTag,\n figcaption: transformImageTag,\n picture: transformImageTag,\n source: transformImageTag,\n img: transformImageTag,\n },\n exclusiveFilter: (frame) =>\n (frame.tag === 'img' && !frame.attribs.src) ||\n (frame.tag === 'source' && !frame.attribs.srcset),\n allowedIframeHostnames: [],\n })\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"TextEditorOutput.utils.js","names":["sanitizeHtml","RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE","canonicalizeTextEditorImageUrl","isAllowedTextEditorImageUrl","COLOR_VALUES","CKEDITOR_IMAGE_CLASSES","Set","IMAGE_TAGS","sanitizeSrcset","srcset","candidates","split","map","candidate","trim","filter","Boolean","length","undefined","sanitizedCandidates","_candidate$split","_candidate$split2","_toArray","url","descriptors","_arrayLikeToArray","slice","canonicalUrl","some","descriptor","test","concat","_toConsumableArray","join","includes","TABLE_ALIGNMENT_CLASS","sanitizeImageClass","className","allowedClasses","name","has","sanitizeImageSizes","sizes","sanitizeProstoreFileId","id","SAFE_IMAGE_STYLE_PROPERTIES","filterImageStyle","style","safeDeclarations","declaration","_property$trim$toLowe","_declaration$split","_declaration$split2","_slicedToArray","property","toLowerCase","setOrDeleteAttribute","attributes","value","sanitizeImageTagAttributes","tagName","onclick","onload","sanitizeClassAttribute","sanitizeUrlAttribute","sanitize","sanitizeImageUrlAttributes","sanitizeProstoreFileIdAttribute","addLazyImageLoadingAttributes","src","loading","decoding","transformImageTag","attribs","sanitizedAttributes","_objectSpread","sanitizeTextEditorHtml","html","allowedTags","allowedAttributes","a","figure","picture","source","img","table","col","td","th","allowedStyles","color","width","height","margin","padding","border","allowedSchemes","allowedSchemesByTag","transformTags","figcaption","exclusiveFilter","frame","tag","allowedIframeHostnames"],"sources":["../../src/TextEditorOutput/TextEditorOutput.utils.ts"],"sourcesContent":["import sanitizeHtml from 'sanitize-html'\n\nimport { RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE } from '../TextEditor/utils/imageAttributes'\nimport { canonicalizeTextEditorImageUrl } from '../TextEditor/utils/imageUrls'\n\nexport { isAllowedTextEditorImageUrl } from '../TextEditor/utils/imageUrls'\n\ntype Attributes = Record<string, string>\n\nconst COLOR_VALUES = [\n /^#[0-9a-fA-F]{3,6}$/,\n /^rgb\\(\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*\\)$/,\n /^rgba\\(\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*[\\d.]+\\s*\\)$/,\n]\n\nconst CKEDITOR_IMAGE_CLASSES = new Set([\n 'image',\n 'image-inline',\n 'image_resized',\n 'image-style-align-left',\n 'image-style-align-right',\n 'image-style-block-align-left',\n 'image-style-block-align-right',\n 'image-style-side',\n // Keep as-is: the figure transform runs on ALL figures, and this is the\n // table-figure marker (`<figure class=\"table\">`). We can't filter it out\n 'table',\n])\n\nconst IMAGE_TAGS = new Set(['figure', 'figcaption', 'picture', 'source', 'img'])\n\nconst sanitizeSrcset = (srcset: string) => {\n const candidates = srcset\n .split(',')\n .map((candidate) => candidate.trim())\n .filter(Boolean)\n\n if (candidates.length === 0) {\n return undefined\n }\n\n const sanitizedCandidates = candidates.map((candidate) => {\n const [url, ...descriptors] = candidate.split(/\\s+/)\n const canonicalUrl = canonicalizeTextEditorImageUrl(url)\n\n if (\n !canonicalUrl ||\n descriptors.some(\n (descriptor) => !/^(?:\\d+w|\\d+(?:\\.\\d+)?x)$/.test(descriptor)\n )\n ) {\n return undefined\n }\n\n return [canonicalUrl, ...descriptors].join(' ')\n })\n\n if (sanitizedCandidates.includes(undefined)) {\n return undefined\n }\n\n return sanitizedCandidates.join(', ')\n}\n\n// Keep it as-is — we can't filter it out or the output loses the table's\n// alignment and always falls back to the default (centered).\nconst TABLE_ALIGNMENT_CLASS = /^table-style-(block-)?align-(left|center|right)$/\n\nconst sanitizeImageClass = (className?: string) => {\n const allowedClasses = className\n ?.split(/\\s+/)\n .filter(\n (name) =>\n CKEDITOR_IMAGE_CLASSES.has(name) || TABLE_ALIGNMENT_CLASS.test(name)\n )\n\n return allowedClasses?.length ? allowedClasses.join(' ') : undefined\n}\n\nconst sanitizeImageSizes = (sizes?: string) => {\n if (!sizes || /url\\(|javascript:|data:/i.test(sizes)) {\n return undefined\n }\n\n return /^[\\w\\s().,:+\\-/%]+$/.test(sizes) ? sizes : undefined\n}\n\nconst sanitizeProstoreFileId = (id?: string) =>\n id && /^[\\w-]+$/.test(id) ? id : undefined\n\n// ImageResize writes inline `width: X%` (and occasionally `height`) on the\n// containing <figure>/<img>. Keep only those declarations so resized images\n// render at the user's chosen size, `allowedStyles` further validates the values.\nconst SAFE_IMAGE_STYLE_PROPERTIES = new Set(['width', 'height', 'aspect-ratio'])\n\nconst filterImageStyle = (style?: string) => {\n if (!style) {\n return undefined\n }\n\n const safeDeclarations = style\n .split(';')\n .map((declaration) => declaration.trim())\n .filter(Boolean)\n .filter((declaration) => {\n const [property] = declaration.split(':', 1)\n return SAFE_IMAGE_STYLE_PROPERTIES.has(\n property?.trim().toLowerCase() ?? ''\n )\n })\n\n return safeDeclarations.length ? `${safeDeclarations.join('; ')};` : undefined\n}\n\nconst setOrDeleteAttribute = (\n attributes: Attributes,\n name: string,\n value?: string\n) => {\n if (value) {\n attributes[name] = value\n } else {\n delete attributes[name]\n }\n}\n\nconst sanitizeImageTagAttributes = (\n tagName: string,\n attributes: Attributes\n) => {\n if (!IMAGE_TAGS.has(tagName)) {\n return\n }\n\n setOrDeleteAttribute(attributes, 'style', filterImageStyle(attributes.style))\n delete attributes.onclick\n delete attributes.onload\n}\n\nconst sanitizeClassAttribute = (attributes: Attributes) => {\n setOrDeleteAttribute(\n attributes,\n 'class',\n sanitizeImageClass(attributes.class)\n )\n}\n\nconst sanitizeUrlAttribute = (\n attributes: Attributes,\n name: string,\n sanitize: (value: string) => string | undefined\n) => {\n if (attributes[name]) {\n setOrDeleteAttribute(attributes, name, sanitize(attributes[name]))\n }\n}\n\nconst sanitizeImageUrlAttributes = (attributes: Attributes) => {\n sanitizeUrlAttribute(attributes, 'src', canonicalizeTextEditorImageUrl)\n sanitizeUrlAttribute(attributes, 'srcset', sanitizeSrcset)\n sanitizeUrlAttribute(attributes, 'sizes', sanitizeImageSizes)\n}\n\nconst sanitizeProstoreFileIdAttribute = (attributes: Attributes) => {\n setOrDeleteAttribute(\n attributes,\n RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE,\n sanitizeProstoreFileId(attributes[RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE])\n )\n}\n\nconst addLazyImageLoadingAttributes = (\n tagName: string,\n attributes: Attributes\n) => {\n if (tagName === 'img' && attributes.src) {\n attributes.loading = 'lazy'\n attributes.decoding = 'async'\n }\n}\n\nconst transformImageTag = (tagName: string, attribs: Attributes) => {\n const sanitizedAttributes: Attributes = { ...attribs }\n\n sanitizeImageTagAttributes(tagName, sanitizedAttributes)\n sanitizeClassAttribute(sanitizedAttributes)\n sanitizeImageUrlAttributes(sanitizedAttributes)\n sanitizeProstoreFileIdAttribute(sanitizedAttributes)\n addLazyImageLoadingAttributes(tagName, sanitizedAttributes)\n\n return {\n tagName,\n attribs: sanitizedAttributes,\n }\n}\n\nexport const sanitizeTextEditorHtml = (html: string) => {\n if (!html) {\n return ''\n }\n\n return sanitizeHtml(html, {\n allowedTags: [\n 'p',\n 'br',\n 'strong',\n 'b',\n 'em',\n 'i',\n 'u',\n 's',\n 'span',\n 'div',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'ul',\n 'ol',\n 'li',\n 'a',\n 'figure',\n 'figcaption',\n 'table',\n 'colgroup',\n 'col',\n 'thead',\n 'tbody',\n 'tr',\n 'td',\n 'th',\n 'blockquote',\n 'pre',\n 'code',\n 'hr',\n 'img',\n 'picture',\n 'source',\n 'sub',\n 'sup',\n ],\n allowedAttributes: {\n '*': ['style', 'class'],\n a: ['href', 'title', 'target', 'rel'],\n figure: ['class', RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE],\n picture: ['class', RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE],\n source: ['srcset', 'sizes', 'type', 'media'],\n img: [\n 'src',\n 'srcset',\n 'sizes',\n 'alt',\n 'title',\n 'width',\n 'height',\n 'loading',\n 'decoding',\n 'class',\n RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE,\n ],\n table: ['border', 'cellpadding', 'cellspacing'],\n col: ['span'],\n td: ['colspan', 'rowspan'],\n th: ['colspan', 'rowspan', 'scope'],\n },\n allowedStyles: {\n '*': {\n color: COLOR_VALUES,\n 'background-color': COLOR_VALUES,\n 'font-size': [/^\\d+(?:px|pt|em|rem|%)$/],\n 'font-weight': [/^(?:normal|bold|bolder|lighter|\\d{1,3})$/],\n 'font-style': [/^(?:normal|italic|oblique)$/],\n 'font-family': [/.*/],\n 'text-decoration': [/^(?:none|underline|line-through|overline)$/],\n 'text-align': [/^(?:left|right|center|justify)$/],\n 'line-height': [/^\\d+(?:\\.\\d+)?(?:px|pt|em|rem|%)?$/],\n width: [/^\\d+(?:\\.\\d+)?(?:px|pt|em|rem|%)$/],\n 'min-width': [/^\\d+(?:\\.\\d+)?(?:px|pt|em|rem|%)$/],\n 'max-width': [/^\\d+(?:\\.\\d+)?(?:px|pt|em|rem|%)$/],\n height: [/^\\d+(?:\\.\\d+)?(?:px|pt|em|rem|%)$/],\n 'min-height': [/^\\d+(?:\\.\\d+)?(?:px|pt|em|rem|%)$/],\n 'max-height': [/^\\d+(?:\\.\\d+)?(?:px|pt|em|rem|%)$/],\n margin: [/^\\d+(?:px|pt|em|rem|%)?(?:\\s+\\d+(?:px|pt|em|rem|%)?)*$/],\n 'margin-top': [/^\\d+(?:px|pt|em|rem|%)?$/],\n 'margin-bottom': [/^\\d+(?:px|pt|em|rem|%)?$/],\n 'margin-left': [/^\\d+(?:px|pt|em|rem|%)?$/],\n 'margin-right': [/^\\d+(?:px|pt|em|rem|%)?$/],\n padding: [/^\\d+(?:px|pt|em|rem|%)?(?:\\s+\\d+(?:px|pt|em|rem|%)?)*$/],\n 'padding-top': [/^\\d+(?:px|pt|em|rem|%)?$/],\n 'padding-bottom': [/^\\d+(?:px|pt|em|rem|%)?$/],\n 'padding-left': [/^\\d+(?:px|pt|em|rem|%)?$/],\n 'padding-right': [/^\\d+(?:px|pt|em|rem|%)?$/],\n border: [/.*/],\n 'border-top': [/.*/],\n 'border-bottom': [/.*/],\n 'border-left': [/.*/],\n 'border-right': [/.*/],\n 'border-color': COLOR_VALUES,\n 'border-width': [/^\\d+(?:px|pt|em|rem)?$/],\n 'border-style': [/^(?:none|solid|dashed|dotted|double)$/],\n 'list-style-type': [/.*/],\n '--ck-content-list-marker-color': COLOR_VALUES,\n '--ck-content-list-marker-font-size': [/^\\d+(?:px|pt|em|rem|%)$/],\n '--ck-content-list-marker-font-family': [/.*/],\n 'vertical-align': [/.*/],\n 'white-space': [/.*/],\n 'aspect-ratio': [/^\\d+(?:\\.\\d+)?(?:\\s*\\/\\s*\\d+(?:\\.\\d+)?)?$/],\n float: [/^(?:left|right|none)$/],\n },\n },\n allowedSchemes: ['http', 'https', 'mailto', 'tel'],\n allowedSchemesByTag: {\n img: ['http', 'https'],\n source: ['http', 'https'],\n },\n transformTags: {\n figure: transformImageTag,\n figcaption: transformImageTag,\n picture: transformImageTag,\n source: transformImageTag,\n img: transformImageTag,\n },\n exclusiveFilter: (frame) =>\n (frame.tag === 'img' && !frame.attribs.src) ||\n (frame.tag === 'source' && !frame.attribs.srcset),\n allowedIframeHostnames: [],\n })\n}\n"],"mappings":"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","ignoreList":[]}