@procore/text-editor 0.5.1 → 1.0.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 (72) hide show
  1. package/.jest/ckeditorMock.js +47 -23
  2. package/CHANGELOG.md +34 -0
  3. package/README.md +96 -7
  4. package/dist/TextEditor/CKTextEditor.d.ts +3 -0
  5. package/dist/TextEditor/CKTextEditor.js +318 -0
  6. package/dist/TextEditor/CKTextEditor.js.map +1 -0
  7. package/dist/TextEditor/Providers/FeatureFlagProvider.d.ts +5 -0
  8. package/dist/TextEditor/Providers/FeatureFlagProvider.js +34 -0
  9. package/dist/TextEditor/Providers/FeatureFlagProvider.js.map +1 -0
  10. package/dist/TextEditor/TextEditor.d.ts +1 -1
  11. package/dist/TextEditor/TextEditor.js +16 -232
  12. package/dist/TextEditor/TextEditor.js.map +1 -1
  13. package/dist/TextEditor/TextEditor.styles.d.ts +14 -1
  14. package/dist/TextEditor/TextEditor.styles.js +18 -5
  15. package/dist/TextEditor/TextEditor.styles.js.map +1 -1
  16. package/dist/TextEditor/TextEditor.types.d.ts +82 -1
  17. package/dist/TextEditor/TextEditor.types.js.map +1 -1
  18. package/dist/TextEditor/TextEditorI18nProvider.d.ts +2 -0
  19. package/dist/TextEditor/TextEditorI18nProvider.js +27 -0
  20. package/dist/TextEditor/TextEditorI18nProvider.js.map +1 -0
  21. package/dist/TextEditor/TinyMCETextEditor.d.ts +3 -0
  22. package/dist/TextEditor/TinyMCETextEditor.js +63 -0
  23. package/dist/TextEditor/TinyMCETextEditor.js.map +1 -0
  24. package/dist/TextEditor/plugins/ProcoreImageUploadPlugin/ProcoreImageUploadPlugin.d.ts +48 -0
  25. package/dist/TextEditor/plugins/ProcoreImageUploadPlugin/ProcoreImageUploadPlugin.js +441 -0
  26. package/dist/TextEditor/plugins/ProcoreImageUploadPlugin/ProcoreImageUploadPlugin.js.map +1 -0
  27. package/dist/TextEditor/plugins/ProcoreImageUploadPlugin/index.d.ts +1 -0
  28. package/dist/TextEditor/plugins/ProcoreImageUploadPlugin/index.js +2 -0
  29. package/dist/TextEditor/plugins/ProcoreImageUploadPlugin/index.js.map +1 -0
  30. package/dist/TextEditor/utils/config.d.ts +6 -1
  31. package/dist/TextEditor/utils/config.js +23 -9
  32. package/dist/TextEditor/utils/config.js.map +1 -1
  33. package/dist/TextEditor/utils/imageAttributes.d.ts +6 -0
  34. package/dist/TextEditor/utils/imageAttributes.js +17 -0
  35. package/dist/TextEditor/utils/imageAttributes.js.map +1 -0
  36. package/dist/TextEditor/utils/imageUrls.d.ts +2 -0
  37. package/dist/TextEditor/utils/imageUrls.js +36 -0
  38. package/dist/TextEditor/utils/imageUrls.js.map +1 -0
  39. package/dist/TextEditor/utils/richTextEditorHandlers.d.ts +9 -0
  40. package/dist/TextEditor/utils/richTextEditorHandlers.js +234 -0
  41. package/dist/TextEditor/utils/richTextEditorHandlers.js.map +1 -0
  42. package/dist/TextEditorOutput/TextEditorOutput.styles.js +2 -2
  43. package/dist/TextEditorOutput/TextEditorOutput.styles.js.map +1 -1
  44. package/dist/TextEditorOutput/TextEditorOutput.utils.d.ts +1 -1
  45. package/dist/TextEditorOutput/TextEditorOutput.utils.js +158 -6
  46. package/dist/TextEditorOutput/TextEditorOutput.utils.js.map +1 -1
  47. package/dist/_typedoc/TextEditor/TextEditor.types.json +215 -17
  48. package/dist/_typedoc/TextEditor/TextEditorProvider.types.json +2 -2
  49. package/dist/_typedoc/TextEditorOutput/TextEditorOutput.types.json +3 -3
  50. package/dist/ckeditor5-premium-features.d.js +2 -0
  51. package/dist/ckeditor5-premium-features.d.js.map +1 -0
  52. package/dist/locales/de-DE.json +17 -0
  53. package/dist/locales/en-AU.json +17 -0
  54. package/dist/locales/en-CA.json +17 -0
  55. package/dist/locales/en-GB.json +17 -0
  56. package/dist/locales/en.json +17 -0
  57. package/dist/locales/es-ES.json +17 -0
  58. package/dist/locales/es.json +17 -0
  59. package/dist/locales/fr-CA.json +17 -0
  60. package/dist/locales/fr-FR.json +17 -0
  61. package/dist/locales/is-IS.json +17 -0
  62. package/dist/locales/it-IT.json +17 -0
  63. package/dist/locales/ja-JP.json +17 -0
  64. package/dist/locales/nb-NO.json +17 -0
  65. package/dist/locales/pl-PL.json +17 -0
  66. package/dist/locales/pseudo.json +17 -0
  67. package/dist/locales/pt-BR.json +17 -0
  68. package/dist/locales/pt-PT.json +17 -0
  69. package/dist/locales/th-TH.json +17 -0
  70. package/dist/locales/zh-SG.json +17 -0
  71. package/dist/locales/zh-TW.json +17 -0
  72. package/package.json +8 -3
@@ -0,0 +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","enumerable","configurable","writable","_invoke","_OverloadYield","k","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","IMAGE_UPLOAD_FAILED_MESSAGE","defaultFetcher","fetch","_ref","require","requestJSON","fetcherRequestJSON","_ref2","_regeneratorRuntime","mark","_callee","fetcher","url","init","response","wrap","_callee$","_context","prev","next","sent","ok","t0","Error","errorMessageFromResponse","t1","json","abrupt","stop","_x","_x2","_x3","procoreRequestJSON","bodyFromResponse","data","_ref3","_callee2","fallbackMessage","_body$error","_body$errors","_body$errors$find","body","_callee2$","_context2","error","message","errors","find","_x4","_x5","richTextEditorEndpoint","_ref4","companyId","projectId","projectPath","concat","uploadEndpoint","_ref5","uploadFileToStorage","_ref6","_callee3","uploadInstructions","file","signal","_uploadInstructions$f","uploadResponse","_callee3$","_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","_callee4$","_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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"}
@@ -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-0_5_1__sc-1oujb2g-0"
5
- })([".ck-editor__top{height:0 !important;}.ck-content{border:none !important;padding:0 !important;--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;}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_0_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;}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;}}}}"]);
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 --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 }\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,4tBAyDrC"}
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"}
@@ -1,2 +1,2 @@
1
- /** Sanitize HTML content while preserving custom styling */
1
+ export { isAllowedTextEditorImageUrl } from '../TextEditor/utils/imageUrls';
2
2
  export declare const sanitizeTextEditorHtml: (html: string) => string;
@@ -1,16 +1,155 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
8
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
9
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
10
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
11
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
12
+ function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }
13
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
14
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
15
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
16
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
17
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1
18
  import sanitizeHtml from 'sanitize-html';
19
+ import { RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE } from '../TextEditor/utils/imageAttributes';
20
+ import { canonicalizeTextEditorImageUrl } from '../TextEditor/utils/imageUrls';
21
+ export { isAllowedTextEditorImageUrl } from '../TextEditor/utils/imageUrls';
22
+ 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
+ // Keep as-is: the figure transform runs on ALL figures, and this is the
24
+ // table-figure marker (`<figure class="table">`). We can't filter it out
25
+ 'table']);
26
+ var IMAGE_TAGS = new Set(['figure', 'figcaption', 'picture', 'source', 'img']);
27
+ var sanitizeSrcset = function sanitizeSrcset(srcset) {
28
+ var candidates = srcset.split(',').map(function (candidate) {
29
+ return candidate.trim();
30
+ }).filter(Boolean);
31
+ if (candidates.length === 0) {
32
+ return undefined;
33
+ }
34
+ var sanitizedCandidates = candidates.map(function (candidate) {
35
+ var _candidate$split = candidate.split(/\s+/),
36
+ _candidate$split2 = _toArray(_candidate$split),
37
+ url = _candidate$split2[0],
38
+ descriptors = _candidate$split2.slice(1);
39
+ var canonicalUrl = canonicalizeTextEditorImageUrl(url);
40
+ if (!canonicalUrl || descriptors.some(function (descriptor) {
41
+ return !/^(?:\d+w|\d+(?:\.\d+)?x)$/.test(descriptor);
42
+ })) {
43
+ return undefined;
44
+ }
45
+ return [canonicalUrl].concat(_toConsumableArray(descriptors)).join(' ');
46
+ });
47
+ if (sanitizedCandidates.includes(undefined)) {
48
+ return undefined;
49
+ }
50
+ return sanitizedCandidates.join(', ');
51
+ };
52
+
53
+ // Keep it as-is — we can't filter it out or the output loses the table's
54
+ // alignment and always falls back to the default (centered).
55
+ var TABLE_ALIGNMENT_CLASS = /^table-style-(block-)?align-(left|center|right)$/;
56
+ var sanitizeImageClass = function sanitizeImageClass(className) {
57
+ var allowedClasses = className === null || className === void 0 ? void 0 : className.split(/\s+/).filter(function (name) {
58
+ return CKEDITOR_IMAGE_CLASSES.has(name) || TABLE_ALIGNMENT_CLASS.test(name);
59
+ });
60
+ return allowedClasses !== null && allowedClasses !== void 0 && allowedClasses.length ? allowedClasses.join(' ') : undefined;
61
+ };
62
+ var sanitizeImageSizes = function sanitizeImageSizes(sizes) {
63
+ if (!sizes || /url\(|javascript:|data:/i.test(sizes)) {
64
+ return undefined;
65
+ }
66
+ return /^[\w\s().,:+\-/%]+$/.test(sizes) ? sizes : undefined;
67
+ };
68
+ var sanitizeProstoreFileId = function sanitizeProstoreFileId(id) {
69
+ return id && /^[\w-]+$/.test(id) ? id : undefined;
70
+ };
2
71
 
3
- /** Sanitize HTML content while preserving custom styling */
72
+ // ImageResize writes inline `width: X%` (and occasionally `height`) on the
73
+ // containing <figure>/<img>. Keep only those declarations so resized images
74
+ // render at the user's chosen size, `allowedStyles` further validates the values.
75
+ var SAFE_IMAGE_STYLE_PROPERTIES = new Set(['width', 'height', 'aspect-ratio']);
76
+ var filterImageStyle = function filterImageStyle(style) {
77
+ if (!style) {
78
+ return undefined;
79
+ }
80
+ var safeDeclarations = style.split(';').map(function (declaration) {
81
+ return declaration.trim();
82
+ }).filter(Boolean).filter(function (declaration) {
83
+ var _property$trim$toLowe;
84
+ var _declaration$split = declaration.split(':', 1),
85
+ _declaration$split2 = _slicedToArray(_declaration$split, 1),
86
+ property = _declaration$split2[0];
87
+ return SAFE_IMAGE_STYLE_PROPERTIES.has((_property$trim$toLowe = property === null || property === void 0 ? void 0 : property.trim().toLowerCase()) !== null && _property$trim$toLowe !== void 0 ? _property$trim$toLowe : '');
88
+ });
89
+ return safeDeclarations.length ? "".concat(safeDeclarations.join('; '), ";") : undefined;
90
+ };
91
+ var setOrDeleteAttribute = function setOrDeleteAttribute(attributes, name, value) {
92
+ if (value) {
93
+ attributes[name] = value;
94
+ } else {
95
+ delete attributes[name];
96
+ }
97
+ };
98
+ var sanitizeImageTagAttributes = function sanitizeImageTagAttributes(tagName, attributes) {
99
+ if (!IMAGE_TAGS.has(tagName)) {
100
+ return;
101
+ }
102
+ setOrDeleteAttribute(attributes, 'style', filterImageStyle(attributes.style));
103
+ delete attributes.onclick;
104
+ delete attributes.onload;
105
+ };
106
+ var sanitizeClassAttribute = function sanitizeClassAttribute(attributes) {
107
+ setOrDeleteAttribute(attributes, 'class', sanitizeImageClass(attributes["class"]));
108
+ };
109
+ var sanitizeUrlAttribute = function sanitizeUrlAttribute(attributes, name, sanitize) {
110
+ if (attributes[name]) {
111
+ setOrDeleteAttribute(attributes, name, sanitize(attributes[name]));
112
+ }
113
+ };
114
+ var sanitizeImageUrlAttributes = function sanitizeImageUrlAttributes(attributes) {
115
+ sanitizeUrlAttribute(attributes, 'src', canonicalizeTextEditorImageUrl);
116
+ sanitizeUrlAttribute(attributes, 'srcset', sanitizeSrcset);
117
+ sanitizeUrlAttribute(attributes, 'sizes', sanitizeImageSizes);
118
+ };
119
+ var sanitizeProstoreFileIdAttribute = function sanitizeProstoreFileIdAttribute(attributes) {
120
+ setOrDeleteAttribute(attributes, RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE, sanitizeProstoreFileId(attributes[RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE]));
121
+ };
122
+ var addLazyImageLoadingAttributes = function addLazyImageLoadingAttributes(tagName, attributes) {
123
+ if (tagName === 'img' && attributes.src) {
124
+ attributes.loading = 'lazy';
125
+ attributes.decoding = 'async';
126
+ }
127
+ };
128
+ var transformImageTag = function transformImageTag(tagName, attribs) {
129
+ var sanitizedAttributes = _objectSpread({}, attribs);
130
+ sanitizeImageTagAttributes(tagName, sanitizedAttributes);
131
+ sanitizeClassAttribute(sanitizedAttributes);
132
+ sanitizeImageUrlAttributes(sanitizedAttributes);
133
+ sanitizeProstoreFileIdAttribute(sanitizedAttributes);
134
+ addLazyImageLoadingAttributes(tagName, sanitizedAttributes);
135
+ return {
136
+ tagName: tagName,
137
+ attribs: sanitizedAttributes
138
+ };
139
+ };
4
140
  export var sanitizeTextEditorHtml = function sanitizeTextEditorHtml(html) {
5
141
  if (!html) {
6
142
  return '';
7
143
  }
8
144
  return sanitizeHtml(html, {
9
- allowedTags: ['p', 'br', 'strong', 'b', 'em', 'i', 'u', 's', 'span', 'div', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'li', 'a', 'figure', 'figcaption', 'table', 'colgroup', 'col', 'thead', 'tbody', 'tr', 'td', 'th', 'blockquote', 'pre', 'code', 'hr', 'img', 'sub', 'sup'],
145
+ allowedTags: ['p', 'br', 'strong', 'b', 'em', 'i', 'u', 's', 'span', 'div', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'li', 'a', 'figure', 'figcaption', 'table', 'colgroup', 'col', 'thead', 'tbody', 'tr', 'td', 'th', 'blockquote', 'pre', 'code', 'hr', 'img', 'picture', 'source', 'sub', 'sup'],
10
146
  allowedAttributes: {
11
- '*': ['style', 'class', 'data-*'],
147
+ '*': ['style', 'class'],
12
148
  a: ['href', 'title', 'target', 'rel'],
13
- img: ['src', 'alt', 'title', 'width', 'height'],
149
+ figure: ['class', RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE],
150
+ picture: ['class', RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE],
151
+ source: ['srcset', 'sizes', 'type', 'media'],
152
+ img: ['src', 'srcset', 'sizes', 'alt', 'title', 'width', 'height', 'loading', 'decoding', 'class', RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE],
14
153
  table: ['border', 'cellpadding', 'cellspacing'],
15
154
  col: ['span'],
16
155
  td: ['colspan', 'rowspan'],
@@ -53,12 +192,25 @@ export var sanitizeTextEditorHtml = function sanitizeTextEditorHtml(html) {
53
192
  'border-style': [/^(?:none|solid|dashed|dotted|double)$/],
54
193
  'list-style-type': [/.*/],
55
194
  'vertical-align': [/.*/],
56
- 'white-space': [/.*/]
195
+ 'white-space': [/.*/],
196
+ 'aspect-ratio': [/^\d+(?:\.\d+)?(?:\s*\/\s*\d+(?:\.\d+)?)?$/],
197
+ "float": [/^(?:left|right|none)$/]
57
198
  }
58
199
  },
59
200
  allowedSchemes: ['http', 'https', 'mailto', 'tel'],
60
201
  allowedSchemesByTag: {
61
- img: ['data', 'http', 'https']
202
+ img: ['http', 'https'],
203
+ source: ['http', 'https']
204
+ },
205
+ transformTags: {
206
+ figure: transformImageTag,
207
+ figcaption: transformImageTag,
208
+ picture: transformImageTag,
209
+ source: transformImageTag,
210
+ img: transformImageTag
211
+ },
212
+ exclusiveFilter: function exclusiveFilter(frame) {
213
+ return frame.tag === 'img' && !frame.attribs.src || frame.tag === 'source' && !frame.attribs.srcset;
62
214
  },
63
215
  allowedIframeHostnames: []
64
216
  });
@@ -1 +1 @@
1
- {"version":3,"file":"TextEditorOutput.utils.js","names":["sanitizeHtml","sanitizeTextEditorHtml","html","allowedTags","allowedAttributes","a","img","table","col","td","th","allowedStyles","color","width","height","margin","padding","border","allowedSchemes","allowedSchemesByTag","allowedIframeHostnames"],"sources":["../../src/TextEditorOutput/TextEditorOutput.utils.ts"],"sourcesContent":["import sanitizeHtml from 'sanitize-html'\n\n/** Sanitize HTML content while preserving custom styling */\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 'sub',\n 'sup',\n ],\n allowedAttributes: {\n '*': ['style', 'class', 'data-*'],\n a: ['href', 'title', 'target', 'rel'],\n img: ['src', 'alt', 'title', 'width', 'height'],\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 },\n },\n allowedSchemes: ['http', 'https', 'mailto', 'tel'],\n allowedSchemesByTag: {\n img: ['data', 'http', 'https'],\n },\n allowedIframeHostnames: [],\n })\n}\n"],"mappings":"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"}
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","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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"}