@procore/text-editor 1.0.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/.jest/ckeditorMock.js +3 -0
  2. package/.jest/ckeditorUtilsMock.js +14 -0
  3. package/.jest/setupTests.js +1 -2
  4. package/CHANGELOG.md +24 -0
  5. package/README.md +15 -0
  6. package/dist/DebouncedTextEditor/DebouncedTextEditor.js +1 -1
  7. package/dist/DebouncedTextEditor/DebouncedTextEditor.js.map +1 -1
  8. package/dist/DebouncedTextEditor/index.js.map +1 -1
  9. package/dist/TextEditor/CKTextEditor.js +12 -8
  10. package/dist/TextEditor/CKTextEditor.js.map +1 -1
  11. package/dist/TextEditor/EditorError.js.map +1 -1
  12. package/dist/TextEditor/Providers/FeatureFlagProvider.js.map +1 -1
  13. package/dist/TextEditor/StickyToolbar/index.js.map +1 -1
  14. package/dist/TextEditor/StickyToolbar/useStickyToolbar.js.map +1 -1
  15. package/dist/TextEditor/StickyToolbar/useStickyToolbar.types.js.map +1 -1
  16. package/dist/TextEditor/TextEditor.js.map +1 -1
  17. package/dist/TextEditor/TextEditor.styles.d.ts +7 -8
  18. package/dist/TextEditor/TextEditor.styles.js +6 -6
  19. package/dist/TextEditor/TextEditor.styles.js.map +1 -1
  20. package/dist/TextEditor/TextEditor.types.d.ts +29 -9
  21. package/dist/TextEditor/TextEditor.types.js.map +1 -1
  22. package/dist/TextEditor/TextEditorI18nProvider.js.map +1 -1
  23. package/dist/TextEditor/TextEditorProvider.js.map +1 -1
  24. package/dist/TextEditor/TextEditorProvider.types.d.ts +1 -1
  25. package/dist/TextEditor/TextEditorProvider.types.js.map +1 -1
  26. package/dist/TextEditor/TinyMCETextEditor.js +2 -1
  27. package/dist/TextEditor/TinyMCETextEditor.js.map +1 -1
  28. package/dist/TextEditor/index.d.ts +1 -1
  29. package/dist/TextEditor/index.js +0 -1
  30. package/dist/TextEditor/index.js.map +1 -1
  31. package/dist/TextEditor/license_key.js.map +1 -1
  32. package/dist/TextEditor/plugins/CutPlugin/CutCommand.js +21 -29
  33. package/dist/TextEditor/plugins/CutPlugin/CutCommand.js.map +1 -1
  34. package/dist/TextEditor/plugins/CutPlugin/CutPlugin.js +2 -2
  35. package/dist/TextEditor/plugins/CutPlugin/CutPlugin.js.map +1 -1
  36. package/dist/TextEditor/plugins/CutPlugin/index.js.map +1 -1
  37. package/dist/TextEditor/plugins/IndentPaddingToMarginPlugin/IndentPaddingToMarginPlugin.js.map +1 -1
  38. package/dist/TextEditor/plugins/IndentPaddingToMarginPlugin/index.js.map +1 -1
  39. package/dist/TextEditor/plugins/NormalizeTableWidthPlugin/NormalizeTableWidthPlugin.js.map +1 -1
  40. package/dist/TextEditor/plugins/NormalizeTableWidthPlugin/index.js.map +1 -1
  41. package/dist/TextEditor/plugins/PasteAsTextPlugin/PasteAsTextCommand.js +20 -28
  42. package/dist/TextEditor/plugins/PasteAsTextPlugin/PasteAsTextCommand.js.map +1 -1
  43. package/dist/TextEditor/plugins/PasteAsTextPlugin/PasteAsTextPlugin.js +2 -2
  44. package/dist/TextEditor/plugins/PasteAsTextPlugin/PasteAsTextPlugin.js.map +1 -1
  45. package/dist/TextEditor/plugins/PasteAsTextPlugin/index.js.map +1 -1
  46. package/dist/TextEditor/plugins/PastePlugin/PasteCommand.js +54 -62
  47. package/dist/TextEditor/plugins/PastePlugin/PasteCommand.js.map +1 -1
  48. package/dist/TextEditor/plugins/PastePlugin/PastePlugin.js +2 -2
  49. package/dist/TextEditor/plugins/PastePlugin/PastePlugin.js.map +1 -1
  50. package/dist/TextEditor/plugins/PastePlugin/index.js.map +1 -1
  51. package/dist/TextEditor/plugins/ProcoreImageUploadPlugin/ProcoreImageUploadPlugin.d.ts +7 -1
  52. package/dist/TextEditor/plugins/ProcoreImageUploadPlugin/ProcoreImageUploadPlugin.js +162 -71
  53. package/dist/TextEditor/plugins/ProcoreImageUploadPlugin/ProcoreImageUploadPlugin.js.map +1 -1
  54. package/dist/TextEditor/plugins/ProcoreImageUploadPlugin/index.js.map +1 -1
  55. package/dist/TextEditor/plugins/TabSpacesPlugin/TabSpacesPlugin.js.map +1 -1
  56. package/dist/TextEditor/plugins/TabSpacesPlugin/index.js.map +1 -1
  57. package/dist/TextEditor/textEditorTheming/icons.js.map +1 -1
  58. package/dist/TextEditor/textEditorTheming/index.js.map +1 -1
  59. package/dist/TextEditor/textEditorTheming/textEditorTheming.styles.d.ts +0 -1
  60. package/dist/TextEditor/textEditorTheming/textEditorTheming.styles.js.map +1 -1
  61. package/dist/TextEditor/useCKEditorCss.js.map +1 -1
  62. package/dist/TextEditor/useCKEditorFocusScope.js.map +1 -1
  63. package/dist/TextEditor/useTabAsNavigation.js.map +1 -1
  64. package/dist/TextEditor/utils/config.js +30 -5
  65. package/dist/TextEditor/utils/config.js.map +1 -1
  66. package/dist/TextEditor/utils/imageAttributes.js.map +1 -1
  67. package/dist/TextEditor/utils/imageUrls.js.map +1 -1
  68. package/dist/TextEditor/utils/index.js.map +1 -1
  69. package/dist/TextEditor/utils/locale.js +12 -1
  70. package/dist/TextEditor/utils/locale.js.map +1 -1
  71. package/dist/TextEditor/utils/richTextEditorHandlers.d.ts +5 -2
  72. package/dist/TextEditor/utils/richTextEditorHandlers.js +138 -99
  73. package/dist/TextEditor/utils/richTextEditorHandlers.js.map +1 -1
  74. package/dist/TextEditorOutput/TextEditorOutput.js.map +1 -1
  75. package/dist/TextEditorOutput/TextEditorOutput.styles.d.ts +0 -1
  76. package/dist/TextEditorOutput/TextEditorOutput.styles.js +2 -2
  77. package/dist/TextEditorOutput/TextEditorOutput.styles.js.map +1 -1
  78. package/dist/TextEditorOutput/TextEditorOutput.types.d.ts +0 -1
  79. package/dist/TextEditorOutput/TextEditorOutput.types.js.map +1 -1
  80. package/dist/TextEditorOutput/TextEditorOutput.utils.js +1 -1
  81. package/dist/TextEditorOutput/TextEditorOutput.utils.js.map +1 -1
  82. package/dist/TextEditorOutput/index.js.map +1 -1
  83. package/dist/_storyHelpers/constants.js.map +1 -1
  84. package/dist/_typedoc/TextEditor/TextEditor.types.json +432 -158
  85. package/dist/_typedoc/TextEditor/TextEditorProvider.types.json +4 -4
  86. package/dist/_typedoc/TextEditorOutput/TextEditorOutput.types.json +9 -9
  87. package/dist/_typedoc/deprecations.json +1 -1
  88. package/dist/_utils/propsTypedoc.d.ts +3 -3
  89. package/dist/_utils/propsTypedoc.js +1 -3
  90. package/dist/_utils/propsTypedoc.js.map +1 -1
  91. package/dist/ckeditor5-premium-features.d.js.map +1 -1
  92. package/dist/index.js.map +1 -1
  93. package/dist/locales/en.json +1 -0
  94. package/dist/stories/util.js.map +1 -1
  95. package/dist/utils/debounce.js +1 -1
  96. package/dist/utils/debounce.js.map +1 -1
  97. package/jestConfig.js +0 -2
  98. package/package.json +49 -47
  99. package/.jest/translationMock.js +0 -12
@@ -6,15 +6,8 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
6
6
  function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
7
7
  function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
8
8
  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
9
- function _regeneratorRuntime() { "use strict"; var r = _regenerator(), e = r.m(_regeneratorRuntime), t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor; function n(r) { var e = "function" == typeof r && r.constructor; return !!e && (e === t || "GeneratorFunction" === (e.displayName || e.name)); } var o = { "throw": 1, "return": 2, "break": 3, "continue": 3 }; function a(r) { var e, t; return function (n) { e || (e = { stop: function stop() { return t(n.a, 2); }, "catch": function _catch() { return n.v; }, abrupt: function abrupt(r, e) { return t(n.a, o[r], e); }, delegateYield: function delegateYield(r, o, a) { return e.resultName = o, t(n.d, _regeneratorValues(r), a); }, finish: function finish(r) { return t(n.f, r); } }, t = function t(r, _t, o) { n.p = e.prev, n.n = e.next; try { return r(_t, o); } finally { e.next = n.n; } }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n; try { return r.call(this, e); } finally { n.p = e.prev, n.n = e.next; } }; } return (_regeneratorRuntime = function _regeneratorRuntime() { return { wrap: function wrap(e, t, n, o) { return r.w(a(e), t, n, o && o.reverse()); }, isGeneratorFunction: n, mark: r.m, awrap: function awrap(r, e) { return new _OverloadYield(r, e); }, AsyncIterator: _regeneratorAsyncIterator, async: function async(r, e, t, o, u) { return (n(e) ? _regeneratorAsyncGen : _regeneratorAsync)(a(r), e, t, o, u); }, keys: _regeneratorKeys, values: _regeneratorValues }; })(); }
10
- function _regeneratorValues(e) { if (null != e) { var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"], r = 0; if (t) return t.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) return { next: function next() { return e && r >= e.length && (e = void 0), { value: e && e[r++], done: !e }; } }; } throw new TypeError(_typeof(e) + " is not iterable"); }
11
- function _regeneratorKeys(e) { var n = Object(e), r = []; for (var t in n) r.unshift(t); return function e() { for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e; return e.done = !0, e; }; }
12
- function _regeneratorAsync(n, e, r, t, o) { var a = _regeneratorAsyncGen(n, e, r, t, o); return a.next().then(function (n) { return n.done ? n.value : a.next(); }); }
13
- function _regeneratorAsyncGen(r, e, t, o, n) { return new _regeneratorAsyncIterator(_regenerator().w(r, e, t, o), n || Promise); }
14
- function _regeneratorAsyncIterator(t, e) { function n(r, o, i, f) { try { var c = t[r](o), u = c.value; return u instanceof _OverloadYield ? e.resolve(u.v).then(function (t) { n("next", t, i, f); }, function (t) { n("throw", t, i, f); }) : e.resolve(u).then(function (t) { c.value = t, i(c); }, function (t) { return n("throw", t, i, f); }); } catch (t) { f(t); } } var r; this.next || (_regeneratorDefine2(_regeneratorAsyncIterator.prototype), _regeneratorDefine2(_regeneratorAsyncIterator.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function () { return this; })), _regeneratorDefine2(this, "_invoke", function (t, o, i) { function f() { return new e(function (e, r) { n(t, i, e, r); }); } return r = r ? r.then(f, f) : f(); }, !0); }
15
9
  function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
16
- function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o("next", 0), o("throw", 1), o("return", 2); } }, _regeneratorDefine2(e, r, n, t); }
17
- function _OverloadYield(e, d) { this.v = e, this.k = d; }
10
+ 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); }
18
11
  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); }
19
12
  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); }); }; }
20
13
  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
@@ -40,49 +33,48 @@ export var ProcoreImageUploadAdapter = /*#__PURE__*/function () {
40
33
  return _createClass(ProcoreImageUploadAdapter, [{
41
34
  key: "upload",
42
35
  value: function () {
43
- var _upload = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
44
- var file, result;
45
- return _regeneratorRuntime().wrap(function _callee$(_context) {
46
- while (1) switch (_context.prev = _context.next) {
36
+ var _upload = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
37
+ var file, result, _t;
38
+ return _regenerator().w(function (_context) {
39
+ while (1) switch (_context.p = _context.n) {
47
40
  case 0:
48
41
  this.abortController = new AbortController();
49
- _context.prev = 1;
50
- _context.next = 4;
42
+ _context.p = 1;
43
+ _context.n = 2;
51
44
  return this.loader.file;
52
- case 4:
53
- file = _context.sent;
45
+ case 2:
46
+ file = _context.v;
54
47
  if (file) {
55
- _context.next = 7;
48
+ _context.n = 3;
56
49
  break;
57
50
  }
58
51
  throw this.fail(this.i18n.t('textEditor.imageUpload.noFile'));
59
- case 7:
52
+ case 3:
60
53
  this.validateFile(file);
61
54
  this.warnPdfUnsupportedFile(file);
62
- _context.next = 11;
55
+ _context.n = 4;
63
56
  return this.validateReadableImage(file);
64
- case 11:
57
+ case 4:
65
58
  this.validateImageCount();
66
- _context.next = 14;
59
+ _context.n = 5;
67
60
  return this.uploadFile(file);
68
- case 14:
69
- result = _context.sent;
61
+ case 5:
62
+ result = _context.v;
70
63
  if (!this.abortController.signal.aborted) {
71
- _context.next = 17;
64
+ _context.n = 6;
72
65
  break;
73
66
  }
74
67
  throw this.fail(this.i18n.t('textEditor.imageUpload.aborted'));
75
- case 17:
76
- return _context.abrupt("return", this.toCkEditorResponse(result));
77
- case 20:
78
- _context.prev = 20;
79
- _context.t0 = _context["catch"](1);
80
- throw this.toSilentUploadError(_context.t0);
81
- case 23:
82
- case "end":
83
- return _context.stop();
68
+ case 6:
69
+ return _context.a(2, this.toCkEditorResponse(result));
70
+ case 7:
71
+ _context.p = 7;
72
+ _t = _context.v;
73
+ throw this.toSilentUploadError(_t);
74
+ case 8:
75
+ return _context.a(2);
84
76
  }
85
- }, _callee, this, [[1, 20]]);
77
+ }, _callee, this, [[1, 7]]);
86
78
  }));
87
79
  function upload() {
88
80
  return _upload.apply(this, arguments);
@@ -93,8 +85,8 @@ export var ProcoreImageUploadAdapter = /*#__PURE__*/function () {
93
85
  key: "abort",
94
86
  value: function abort() {
95
87
  var _this$abortController, _this$abortUpload;
96
- (_this$abortController = this.abortController) === null || _this$abortController === void 0 ? void 0 : _this$abortController.abort();
97
- (_this$abortUpload = this.abortUpload) === null || _this$abortUpload === void 0 ? void 0 : _this$abortUpload.call(this);
88
+ (_this$abortController = this.abortController) === null || _this$abortController === void 0 || _this$abortController.abort();
89
+ (_this$abortUpload = this.abortUpload) === null || _this$abortUpload === void 0 || _this$abortUpload.call(this);
98
90
  }
99
91
  }, {
100
92
  key: "validateFile",
@@ -115,22 +107,22 @@ export var ProcoreImageUploadAdapter = /*#__PURE__*/function () {
115
107
  if (!PDF_UNSUPPORTED_MIME_TYPES.has(file.type)) {
116
108
  return;
117
109
  }
118
- (_this$imageUpload$onW = (_this$imageUpload = this.imageUpload).onWarning) === null || _this$imageUpload$onW === void 0 ? void 0 : _this$imageUpload$onW.call(_this$imageUpload, this.i18n.t('textEditor.imageUpload.pdfUnsupportedType', {
110
+ (_this$imageUpload$onW = (_this$imageUpload = this.imageUpload).onWarning) === null || _this$imageUpload$onW === void 0 || _this$imageUpload$onW.call(_this$imageUpload, this.i18n.t('textEditor.imageUpload.pdfUnsupportedType', {
119
111
  type: this.fileTypeLabel(file)
120
112
  }));
121
113
  }
122
114
  }, {
123
115
  key: "validateReadableImage",
124
116
  value: function () {
125
- var _validateReadableImage = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(file) {
126
- var url, image;
127
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
128
- while (1) switch (_context2.prev = _context2.next) {
117
+ var _validateReadableImage = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(file) {
118
+ var url, image, _t2;
119
+ return _regenerator().w(function (_context2) {
120
+ while (1) switch (_context2.p = _context2.n) {
129
121
  case 0:
130
122
  url = URL.createObjectURL(file);
131
- _context2.prev = 1;
123
+ _context2.p = 1;
132
124
  image = new Image();
133
- _context2.next = 5;
125
+ _context2.n = 2;
134
126
  return new Promise(function (resolve, reject) {
135
127
  image.onload = function () {
136
128
  return resolve();
@@ -140,22 +132,21 @@ export var ProcoreImageUploadAdapter = /*#__PURE__*/function () {
140
132
  };
141
133
  image.src = url;
142
134
  });
143
- case 5:
144
- _context2.next = 10;
135
+ case 2:
136
+ _context2.n = 4;
145
137
  break;
146
- case 7:
147
- _context2.prev = 7;
148
- _context2.t0 = _context2["catch"](1);
138
+ case 3:
139
+ _context2.p = 3;
140
+ _t2 = _context2.v;
149
141
  throw this.fail(this.i18n.t('textEditor.imageUpload.unreadable'));
150
- case 10:
151
- _context2.prev = 10;
142
+ case 4:
143
+ _context2.p = 4;
152
144
  URL.revokeObjectURL(url);
153
- return _context2.finish(10);
154
- case 13:
155
- case "end":
156
- return _context2.stop();
145
+ return _context2.f(4);
146
+ case 5:
147
+ return _context2.a(2);
157
148
  }
158
- }, _callee2, this, [[1, 7, 10, 13]]);
149
+ }, _callee2, this, [[1, 3, 4, 5]]);
159
150
  }));
160
151
  function validateReadableImage(_x) {
161
152
  return _validateReadableImage.apply(this, arguments);
@@ -227,7 +218,7 @@ export var ProcoreImageUploadAdapter = /*#__PURE__*/function () {
227
218
  key: "fail",
228
219
  value: function fail(message) {
229
220
  var _this$imageUpload$onE, _this$imageUpload2;
230
- (_this$imageUpload$onE = (_this$imageUpload2 = this.imageUpload).onError) === null || _this$imageUpload$onE === void 0 ? void 0 : _this$imageUpload$onE.call(_this$imageUpload2, message);
221
+ (_this$imageUpload$onE = (_this$imageUpload2 = this.imageUpload).onError) === null || _this$imageUpload$onE === void 0 || _this$imageUpload$onE.call(_this$imageUpload2, message);
231
222
  return REPORTED_UPLOAD_ERROR;
232
223
  }
233
224
  }, {
@@ -259,16 +250,77 @@ export var ProcoreImageUploadPlugin = /*#__PURE__*/function (_Plugin) {
259
250
  this.configureProstoreFileIdConversion();
260
251
  this.configureUploadAdapter(imageUpload);
261
252
  this.configureUnsupportedFileDrop(imageUpload);
253
+ this.configurePastedImageFileOverExternalHtml(imageUpload);
262
254
  this.configurePastedImageLimit(imageUpload);
263
255
  }
256
+
257
+ /**
258
+ * "Copy Image" puts both the image bytes and HTML with the external URL on
259
+ * the clipboard. CKEditor prefers the HTML, but the backend strips external
260
+ * image URLs — so upload the bytes instead.
261
+ */
262
+ }, {
263
+ key: "configurePastedImageFileOverExternalHtml",
264
+ value: function configurePastedImageFileOverExternalHtml(imageUpload) {
265
+ var _this2 = this;
266
+ this.listenTo(this.editor.editing.view.document, 'clipboardInput', function (evt, data) {
267
+ var dataTransfer = data.dataTransfer;
268
+ var files = Array.from(dataTransfer.files);
269
+ var imageFiles = files.filter(function (file) {
270
+ return file.type.startsWith('image/');
271
+ });
272
+ var html = dataTransfer.getData('text/html');
273
+ var isImageOnlyPaste = Boolean(html) && isImageOnlyHtml(html);
274
+ var clipboardHasImageBytes = imageFiles.length > 0;
275
+ if (!isImageOnlyPaste) {
276
+ return;
277
+ }
278
+
279
+ // The clipboard carries only an image URL, no bytes to upload (e.g.
280
+ // "Copy Image" on an SVG). Show an error for clearly unsupported
281
+ // extensions; otherwise let the default clipboard flow handle it.
282
+ if (!clipboardHasImageBytes) {
283
+ var unsupportedExtension = unsupportedPastedImageExtension(html);
284
+ if (unsupportedExtension) {
285
+ var _imageUpload$onError;
286
+ evt.stop();
287
+ (_imageUpload$onError = imageUpload.onError) === null || _imageUpload$onError === void 0 || _imageUpload$onError.call(imageUpload, imageUpload.i18n.t('textEditor.imageUpload.unsupportedType', {
288
+ type: "".concat(unsupportedExtension, " ")
289
+ }));
290
+ }
291
+ return;
292
+ }
293
+ evt.stop();
294
+
295
+ // Unsupported types already got a toast from the unsupported-file
296
+ // drop handler, which runs before this listener.
297
+ var tooLargeFile = imageFiles.find(function (file) {
298
+ return DEFAULT_ALLOWED_MIME_TYPES.has(file.type) && file.size > MAX_IMAGE_UPLOAD_FILE_SIZE_BYTES;
299
+ });
300
+ if (tooLargeFile) {
301
+ var _imageUpload$onError2;
302
+ (_imageUpload$onError2 = imageUpload.onError) === null || _imageUpload$onError2 === void 0 || _imageUpload$onError2.call(imageUpload, imageUpload.i18n.t('textEditor.imageUpload.fileTooLarge'));
303
+ }
304
+ var uploadableFiles = imageFiles.filter(function (file) {
305
+ return DEFAULT_ALLOWED_MIME_TYPES.has(file.type) && file.size <= MAX_IMAGE_UPLOAD_FILE_SIZE_BYTES;
306
+ });
307
+ if (uploadableFiles.length > 0) {
308
+ _this2.editor.execute('uploadImage', {
309
+ file: uploadableFiles
310
+ });
311
+ }
312
+ }, {
313
+ priority: 'high'
314
+ });
315
+ }
264
316
  }, {
265
317
  key: "configureUploadAdapter",
266
318
  value: function configureUploadAdapter(imageUpload) {
267
- var _this2 = this;
319
+ var _this3 = this;
268
320
  var fileRepository = this.editor.plugins.get(FileRepository);
269
321
  fileRepository.createUploadAdapter = function (loader) {
270
322
  return new ProcoreImageUploadAdapter(loader, imageUpload, function () {
271
- return _this2.currentEmbeddedImageCountOrUndefined();
323
+ return _this3.currentEmbeddedImageCountOrUndefined();
272
324
  });
273
325
  };
274
326
  var imageUploadEditing = this.editor.plugins.get(ImageUploadEditing);
@@ -279,7 +331,7 @@ export var ProcoreImageUploadPlugin = /*#__PURE__*/function (_Plugin) {
279
331
  return;
280
332
  }
281
333
  var prostoreFileId = String(data.prostoreFileId);
282
- _this2.editor.model.change(function (writer) {
334
+ _this3.editor.model.change(function (writer) {
283
335
  writer.setAttribute('prostoreFileId', prostoreFileId, imageElement);
284
336
  });
285
337
  });
@@ -287,11 +339,11 @@ export var ProcoreImageUploadPlugin = /*#__PURE__*/function (_Plugin) {
287
339
  }, {
288
340
  key: "configureProstoreFileIdConversion",
289
341
  value: function configureProstoreFileIdConversion() {
290
- var _this3 = this;
342
+ var _this4 = this;
291
343
  var imageModelNames = ['imageBlock', 'imageInline'];
292
344
  imageModelNames.forEach(function (imageModelName) {
293
- if (_this3.canExtendSchemaElement(imageModelName)) {
294
- _this3.editor.model.schema.extend(imageModelName, {
345
+ if (_this4.canExtendSchemaElement(imageModelName)) {
346
+ _this4.editor.model.schema.extend(imageModelName, {
295
347
  allowAttributes: ['prostoreFileId']
296
348
  });
297
349
  }
@@ -323,18 +375,18 @@ export var ProcoreImageUploadPlugin = /*#__PURE__*/function (_Plugin) {
323
375
  }, {
324
376
  key: "configurePastedImageLimit",
325
377
  value: function configurePastedImageLimit(imageUpload) {
326
- var _this4 = this;
378
+ var _this5 = this;
327
379
  var clipboardPipeline = this.editor.plugins.get(ClipboardPipeline);
328
380
  clipboardPipeline.on('inputTransformation', function (event, data) {
329
- var currentImageCount = _this4.currentEmbeddedImageCountOrUndefined();
381
+ var currentImageCount = _this5.currentEmbeddedImageCountOrUndefined();
330
382
  if (currentImageCount === undefined) {
331
383
  return;
332
384
  }
333
385
  var pastedImageCount = countImages(data.content);
334
386
  if (exceedsImageLimit(currentImageCount, pastedImageCount)) {
335
- var _event$stop, _imageUpload$onError;
336
- (_event$stop = event.stop) === null || _event$stop === void 0 ? void 0 : _event$stop.call(event);
337
- (_imageUpload$onError = imageUpload.onError) === null || _imageUpload$onError === void 0 ? void 0 : _imageUpload$onError.call(imageUpload, imageUpload.i18n.t('textEditor.imageUpload.imageLimit', {
387
+ var _event$stop, _imageUpload$onError3;
388
+ (_event$stop = event.stop) === null || _event$stop === void 0 || _event$stop.call(event);
389
+ (_imageUpload$onError3 = imageUpload.onError) === null || _imageUpload$onError3 === void 0 || _imageUpload$onError3.call(imageUpload, imageUpload.i18n.t('textEditor.imageUpload.imageLimit', {
338
390
  count: MAX_RICH_TEXT_IMAGES
339
391
  }));
340
392
  }
@@ -344,7 +396,7 @@ export var ProcoreImageUploadPlugin = /*#__PURE__*/function (_Plugin) {
344
396
  key: "configureUnsupportedFileDrop",
345
397
  value: function configureUnsupportedFileDrop(imageUpload) {
346
398
  this.listenTo(this.editor.editing.view.document, 'clipboardInput', function (event, data) {
347
- var _imageUpload$onError2;
399
+ var _imageUpload$onError4;
348
400
  var files = data.dataTransfer.files;
349
401
  if (files.length === 0) {
350
402
  return;
@@ -355,7 +407,7 @@ export var ProcoreImageUploadPlugin = /*#__PURE__*/function (_Plugin) {
355
407
  if (!unsupportedFile) {
356
408
  return;
357
409
  }
358
- (_imageUpload$onError2 = imageUpload.onError) === null || _imageUpload$onError2 === void 0 ? void 0 : _imageUpload$onError2.call(imageUpload, imageUpload.i18n.t('textEditor.imageUpload.unsupportedType', {
410
+ (_imageUpload$onError4 = imageUpload.onError) === null || _imageUpload$onError4 === void 0 || _imageUpload$onError4.call(imageUpload, imageUpload.i18n.t('textEditor.imageUpload.unsupportedType', {
359
411
  type: _fileTypeLabel(unsupportedFile)
360
412
  }));
361
413
  if (files.every(function (file) {
@@ -376,10 +428,10 @@ export var ProcoreImageUploadPlugin = /*#__PURE__*/function (_Plugin) {
376
428
  }, {
377
429
  key: "currentEmbeddedImageCountOrUndefined",
378
430
  value: function currentEmbeddedImageCountOrUndefined() {
379
- var _this5 = this;
431
+ var _this6 = this;
380
432
  try {
381
433
  return this.editor.model.document.getRootNames().reduce(function (total, rootName) {
382
- var root = _this5.editor.model.document.getRoot(rootName);
434
+ var root = _this6.editor.model.document.getRoot(rootName);
383
435
  return root ? total + countModelImages(root) : total;
384
436
  }, 0);
385
437
  } catch (_error) {
@@ -398,6 +450,45 @@ export var ProcoreImageUploadPlugin = /*#__PURE__*/function (_Plugin) {
398
450
  }
399
451
  }]);
400
452
  }(Plugin);
453
+
454
+ // "Copy Image" shape: an image with no meaningful text. Rich pastes mixing
455
+ // text and images keep the default clipboard handling.
456
+ function isImageOnlyHtml(html) {
457
+ var _doc$body$textContent;
458
+ var doc = new DOMParser().parseFromString(html, 'text/html');
459
+ return doc.body.querySelector('img') !== null && !((_doc$body$textContent = doc.body.textContent) !== null && _doc$body$textContent !== void 0 && _doc$body$textContent.trim());
460
+ }
461
+
462
+ // Uppercase extension (e.g. "SVG") when every pasted image URL clearly has an
463
+ // unsupported extension; undefined when supported, unknown, or inline data.
464
+ function unsupportedPastedImageExtension(html) {
465
+ var doc = new DOMParser().parseFromString(html, 'text/html');
466
+ var extensions = Array.from(doc.body.querySelectorAll('img')).map(function (img) {
467
+ var _img$getAttribute;
468
+ return imageUrlExtension((_img$getAttribute = img.getAttribute('src')) !== null && _img$getAttribute !== void 0 ? _img$getAttribute : '');
469
+ });
470
+ return extensions.every(isUnsupportedImageExtension) ? extensions[0] : undefined;
471
+ }
472
+
473
+ // "https://site.com/logo.svg?w=64" -> "SVG"; undefined for inline data or
474
+ // URLs without a file extension.
475
+ function imageUrlExtension(src) {
476
+ var _path$split$pop;
477
+ if (src.startsWith('data:') || src.startsWith('blob:')) {
478
+ return undefined;
479
+ }
480
+ var path = src.split(/[?#]/)[0];
481
+ var fileName = (_path$split$pop = path.split('/').pop()) !== null && _path$split$pop !== void 0 ? _path$split$pop : '';
482
+ return fileExtensionLabel(fileName);
483
+ }
484
+ function isUnsupportedImageExtension(extension) {
485
+ if (!extension) {
486
+ return false;
487
+ }
488
+ var lower = extension.toLowerCase();
489
+ var mimeType = "image/".concat(lower === 'jpg' ? 'jpeg' : lower);
490
+ return !DEFAULT_ALLOWED_MIME_TYPES.has(mimeType);
491
+ }
401
492
  function countImages(node) {
402
493
  if (!node.is('element') && !node.is('documentFragment')) {
403
494
  return 0;
@@ -1 +1 @@
1
- {"version":3,"file":"ProcoreImageUploadPlugin.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","_classCallCheck","_defineProperties","_toPropertyKey","key","_createClass","_toPrimitive","_typeof","toPrimitive","String","Number","ClipboardPipeline","FileRepository","ImageUploadEditing","Plugin","DEFAULT_ALLOWED_MIME_TYPES","IMAGE_TYPE_LABELS","MAX_IMAGE_UPLOAD_FILE_SIZE_BYTES","MAX_RICH_TEXT_IMAGES","PDF_UNSUPPORTED_MIME_TYPES","RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE","canonicalizeTextEditorImageUrl","REPORTED_UPLOAD_ERROR","exceedsImageLimit","currentImageCount","newImageCount","undefined","ProcoreImageUploadAdapter","loader","imageUpload","getEmbeddedImageCount","_upload","_regeneratorRuntime","mark","_callee","file","result","wrap","_callee$","_context","prev","next","abortController","AbortController","sent","fail","i18n","validateFile","warnPdfUnsupportedFile","validateReadableImage","validateImageCount","uploadFile","signal","aborted","abrupt","toCkEditorResponse","t0","toSilentUploadError","stop","upload","abort","_this$abortController","_this$abortUpload","abortUpload","has","type","fileTypeLabel","size","_this$imageUpload$onW","_this$imageUpload","onWarning","_validateReadableImage","_callee2","url","image","_callee2$","_context2","URL","createObjectURL","Image","reject","onload","onerror","Error","src","revokeObjectURL","finish","_x","_this$getEmbeddedImag","embeddedImageCount","count","prostoreFileId","test","defaultUrl","urls","response","width","height","get","_this","onProgress","uploaded","total","uploadTotal","message","_this$imageUpload$onE","_this$imageUpload2","onError","error","ProcoreImageUploadPlugin","_Plugin","_callSuper","_inherits","init","editor","config","configureProstoreFileIdConversion","configureUploadAdapter","configureUnsupportedFileDrop","configurePastedImageLimit","_this2","fileRepository","plugins","createUploadAdapter","currentEmbeddedImageCountOrUndefined","imageUploadEditing","on","_event","_ref","data","imageElement","model","change","writer","setAttribute","_this3","imageModelNames","forEach","imageModelName","canExtendSchemaElement","schema","extend","allowAttributes","conversion","attributeToAttribute","view","name","_this4","clipboardPipeline","event","pastedImageCount","countImages","content","_event$stop","_imageUpload$onError","listenTo","editing","document","_imageUpload$onError2","files","dataTransfer","unsupportedFile","find","every","priority","isRegistered","_this5","getRootNames","reduce","rootName","root","getRoot","countModelImages","_error","node","is","imageCount","_i","_Array$from","Array","from","getChildren","child","isImageModelElement","_i2","_Array$from2","item","_IMAGE_TYPE_LABELS$fi","fileType","fileExtensionLabel","concat","fileName","extension","split","pop","toUpperCase"],"sources":["../../../../src/TextEditor/plugins/ProcoreImageUploadPlugin/ProcoreImageUploadPlugin.ts"],"sourcesContent":["import type {\n ClipboardInputTransformationData,\n EventInfo,\n ImageUploadCompleteData,\n ModelElement,\n ModelItem,\n UploadAdapter,\n ViewDocumentClipboardInputEvent,\n ViewDocumentFragment,\n ViewNode,\n} from 'ckeditor5'\nimport {\n ClipboardPipeline,\n FileRepository,\n ImageUploadEditing,\n Plugin,\n} from 'ckeditor5'\n\nimport type {\n TextEditorImageUploadHandlers,\n TextEditorImageUploadResult,\n} from '../../TextEditor.types'\nimport {\n DEFAULT_ALLOWED_MIME_TYPES,\n IMAGE_TYPE_LABELS,\n MAX_IMAGE_UPLOAD_FILE_SIZE_BYTES,\n MAX_RICH_TEXT_IMAGES,\n PDF_UNSUPPORTED_MIME_TYPES,\n RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE,\n} from '../../utils/imageAttributes'\nimport { canonicalizeTextEditorImageUrl } from '../../utils/imageUrls'\n\nconst REPORTED_UPLOAD_ERROR = ''\n\nconst exceedsImageLimit = (currentImageCount: number, newImageCount = 0) =>\n currentImageCount + newImageCount > MAX_RICH_TEXT_IMAGES\n\ninterface UploadLoader {\n file: Promise<File | null>\n uploaded?: number\n uploadTotal?: number | null\n}\n\ntype ClipboardCallback = (\n event: EventInfo<'inputTransformation', unknown>,\n data: ClipboardInputTransformationData\n) => void\n\ntype CkEditorUploadResponse = {\n urls: {\n default: string\n }\n prostoreFileId: number | string\n width?: number\n height?: number\n}\n\nexport class ProcoreImageUploadAdapter implements UploadAdapter {\n private abortController?: AbortController\n private abortUpload?: () => void\n\n constructor(\n private readonly loader: UploadLoader,\n private readonly imageUpload: TextEditorImageUploadHandlers,\n private readonly getEmbeddedImageCount?: () => number | undefined\n ) {}\n\n async upload(): Promise<CkEditorUploadResponse> {\n this.abortController = new AbortController()\n\n try {\n const file = await this.loader.file\n\n if (!file) {\n throw this.fail(this.i18n.t('textEditor.imageUpload.noFile'))\n }\n\n this.validateFile(file)\n this.warnPdfUnsupportedFile(file)\n await this.validateReadableImage(file)\n this.validateImageCount()\n\n const result = await this.uploadFile(file)\n\n if (this.abortController.signal.aborted) {\n throw this.fail(this.i18n.t('textEditor.imageUpload.aborted'))\n }\n\n return this.toCkEditorResponse(result)\n } catch (error) {\n throw this.toSilentUploadError(error)\n }\n }\n\n abort() {\n this.abortController?.abort()\n this.abortUpload?.()\n }\n\n private validateFile(file: File) {\n if (!DEFAULT_ALLOWED_MIME_TYPES.has(file.type)) {\n throw this.fail(\n this.i18n.t('textEditor.imageUpload.unsupportedType', {\n type: this.fileTypeLabel(file),\n })\n )\n }\n\n if (file.size > MAX_IMAGE_UPLOAD_FILE_SIZE_BYTES) {\n throw this.fail(this.i18n.t('textEditor.imageUpload.fileTooLarge'))\n }\n }\n\n private warnPdfUnsupportedFile(file: File) {\n if (!PDF_UNSUPPORTED_MIME_TYPES.has(file.type)) {\n return\n }\n\n this.imageUpload.onWarning?.(\n this.i18n.t('textEditor.imageUpload.pdfUnsupportedType', {\n type: this.fileTypeLabel(file),\n })\n )\n }\n\n private async validateReadableImage(file: File) {\n const url = URL.createObjectURL(file)\n\n try {\n const image = new Image()\n\n await new Promise<void>((resolve, reject) => {\n image.onload = () => resolve()\n image.onerror = () => reject(new Error())\n image.src = url\n })\n } catch (_error) {\n throw this.fail(this.i18n.t('textEditor.imageUpload.unreadable'))\n } finally {\n URL.revokeObjectURL(url)\n }\n }\n\n private validateImageCount() {\n const embeddedImageCount = this.getEmbeddedImageCount?.()\n\n if (\n embeddedImageCount !== undefined &&\n exceedsImageLimit(embeddedImageCount)\n ) {\n throw this.fail(\n this.i18n.t('textEditor.imageUpload.imageLimit', {\n count: MAX_RICH_TEXT_IMAGES,\n })\n )\n }\n }\n\n private toCkEditorResponse(\n result: TextEditorImageUploadResult\n ): CkEditorUploadResponse {\n if (\n !result.prostoreFileId ||\n !/^[\\w-]+$/.test(String(result.prostoreFileId))\n ) {\n throw this.fail(\n this.i18n.t('textEditor.imageUpload.invalidProstoreFileId')\n )\n }\n\n const defaultUrl = canonicalizeTextEditorImageUrl(result.urls.default)\n\n if (!defaultUrl) {\n throw this.fail(this.i18n.t('textEditor.imageUpload.invalidImageUrl'))\n }\n\n const response: CkEditorUploadResponse = {\n urls: {\n default: defaultUrl,\n },\n prostoreFileId: result.prostoreFileId,\n width: result.width,\n height: result.height,\n }\n\n return response\n }\n\n private get i18n() {\n return this.imageUpload.i18n\n }\n\n private fileTypeLabel(file: File) {\n return fileTypeLabel(file)\n }\n\n private uploadFile(file: File) {\n return new Promise<TextEditorImageUploadResult>((resolve, reject) => {\n this.abortUpload = () =>\n reject(this.fail(this.i18n.t('textEditor.imageUpload.aborted')))\n\n this.imageUpload\n .upload(\n file,\n { signal: this.abortController!.signal },\n {\n onProgress: (uploaded, total) => {\n this.loader.uploaded = uploaded\n\n if (total !== undefined) {\n this.loader.uploadTotal = total\n }\n },\n }\n )\n .then(resolve)\n .catch(reject)\n })\n }\n\n private fail(message: string) {\n this.imageUpload.onError?.(message)\n\n return REPORTED_UPLOAD_ERROR\n }\n\n private toSilentUploadError(error: unknown) {\n if (error === REPORTED_UPLOAD_ERROR) {\n return error\n }\n\n if (error instanceof Error && error.message) {\n return this.fail(error.message)\n }\n\n return this.fail(this.i18n.t('textEditor.imageUpload.failed'))\n }\n}\n\nexport class ProcoreImageUploadPlugin extends Plugin {\n static get pluginName() {\n return 'ProcoreImageUploadPlugin'\n }\n\n static get requires() {\n return [FileRepository, ImageUploadEditing]\n }\n\n init() {\n const imageUpload = this.editor.config.get('procoreImageUpload') as\n | TextEditorImageUploadHandlers\n | undefined\n\n if (!imageUpload) {\n return\n }\n\n this.configureProstoreFileIdConversion()\n this.configureUploadAdapter(imageUpload)\n this.configureUnsupportedFileDrop(imageUpload)\n this.configurePastedImageLimit(imageUpload)\n }\n\n private configureUploadAdapter(imageUpload: TextEditorImageUploadHandlers) {\n const fileRepository = this.editor.plugins.get(FileRepository)\n\n fileRepository.createUploadAdapter = (loader) =>\n new ProcoreImageUploadAdapter(loader, imageUpload, () =>\n this.currentEmbeddedImageCountOrUndefined()\n )\n\n const imageUploadEditing = this.editor.plugins.get(ImageUploadEditing)\n\n imageUploadEditing.on(\n 'uploadComplete',\n (_event, { data, imageElement }: ImageUploadCompleteData) => {\n if (!imageElement || !data?.prostoreFileId) {\n return\n }\n\n const prostoreFileId = String(data.prostoreFileId)\n\n this.editor.model.change((writer) => {\n writer.setAttribute('prostoreFileId', prostoreFileId, imageElement)\n })\n }\n )\n }\n\n private configureProstoreFileIdConversion() {\n const imageModelNames = ['imageBlock', 'imageInline']\n\n imageModelNames.forEach((imageModelName) => {\n if (this.canExtendSchemaElement(imageModelName)) {\n this.editor.model.schema.extend(imageModelName, {\n allowAttributes: ['prostoreFileId'],\n })\n }\n })\n\n this.editor.conversion.for('upcast').attributeToAttribute({\n view: {\n name: 'figure',\n key: RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE,\n },\n model: 'prostoreFileId',\n })\n\n this.editor.conversion.for('upcast').attributeToAttribute({\n view: {\n name: 'img',\n key: RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE,\n },\n model: 'prostoreFileId',\n })\n\n this.editor.conversion.for('downcast').attributeToAttribute({\n model: 'prostoreFileId',\n view: (value: unknown) => ({\n key: RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE,\n value: String(value),\n }),\n })\n }\n\n private configurePastedImageLimit(\n imageUpload: TextEditorImageUploadHandlers\n ) {\n const clipboardPipeline = this.editor.plugins.get(ClipboardPipeline)\n\n clipboardPipeline.on('inputTransformation', (event, data) => {\n const currentImageCount = this.currentEmbeddedImageCountOrUndefined()\n\n if (currentImageCount === undefined) {\n return\n }\n\n const pastedImageCount = countImages(data.content)\n\n if (exceedsImageLimit(currentImageCount, pastedImageCount)) {\n event.stop?.()\n imageUpload.onError?.(\n imageUpload.i18n.t('textEditor.imageUpload.imageLimit', {\n count: MAX_RICH_TEXT_IMAGES,\n })\n )\n }\n })\n }\n\n private configureUnsupportedFileDrop(\n imageUpload: TextEditorImageUploadHandlers\n ) {\n this.listenTo(\n this.editor.editing.view.document,\n 'clipboardInput',\n (event, data: ViewDocumentClipboardInputEvent['args'][0]) => {\n const files = data.dataTransfer.files\n\n if (files.length === 0) {\n return\n }\n\n const unsupportedFile = files.find(\n (file) => !DEFAULT_ALLOWED_MIME_TYPES.has(file.type)\n )\n\n if (!unsupportedFile) {\n return\n }\n\n imageUpload.onError?.(\n imageUpload.i18n.t('textEditor.imageUpload.unsupportedType', {\n type: fileTypeLabel(unsupportedFile),\n })\n )\n\n if (files.every((file) => !DEFAULT_ALLOWED_MIME_TYPES.has(file.type))) {\n event.stop()\n }\n },\n { priority: 'high' }\n )\n }\n\n private canExtendSchemaElement(imageModelName: string) {\n const { schema } = this.editor.model\n\n return typeof schema.isRegistered === 'function'\n ? schema.isRegistered(imageModelName)\n : true\n }\n\n private currentEmbeddedImageCountOrUndefined() {\n try {\n return this.editor.model.document\n .getRootNames()\n .reduce((total, rootName) => {\n const root = this.editor.model.document.getRoot(rootName)\n\n return root ? total + countModelImages(root) : total\n }, 0)\n } catch (_error) {\n return undefined\n }\n }\n}\n\nfunction countImages(node: ViewNode | ViewDocumentFragment): number {\n if (!node.is('element') && !node.is('documentFragment')) {\n return 0\n }\n\n let imageCount = 0\n\n for (const child of Array.from(node.getChildren())) {\n if (child.is('element', 'img')) {\n imageCount += 1\n continue\n }\n\n imageCount += countImages(child)\n }\n\n return imageCount\n}\n\nfunction countModelImages(node: ModelElement): number {\n let imageCount = isImageModelElement(node) ? 1 : 0\n\n for (const child of Array.from(node.getChildren())) {\n if (child.is('element')) {\n imageCount += countModelImages(child)\n }\n }\n\n return imageCount\n}\n\nfunction isImageModelElement(item: ModelItem): item is ModelElement {\n return item.is('element', 'imageBlock') || item.is('element', 'imageInline')\n}\n\nfunction fileTypeLabel(file: File) {\n const fileType = IMAGE_TYPE_LABELS[file.type] ?? fileExtensionLabel(file.name)\n\n return fileType ? `${fileType} ` : ''\n}\n\nfunction fileExtensionLabel(fileName: string) {\n const extension = fileName.split('.').pop()\n\n if (!extension || extension === fileName) {\n return undefined\n }\n\n return extension.toUpperCase()\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ProcoreImageUploadPlugin.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","_classCallCheck","_defineProperties","_toPropertyKey","key","_createClass","_toPrimitive","_typeof","toPrimitive","String","Number","ClipboardPipeline","FileRepository","ImageUploadEditing","Plugin","DEFAULT_ALLOWED_MIME_TYPES","IMAGE_TYPE_LABELS","MAX_IMAGE_UPLOAD_FILE_SIZE_BYTES","MAX_RICH_TEXT_IMAGES","PDF_UNSUPPORTED_MIME_TYPES","RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE","canonicalizeTextEditorImageUrl","REPORTED_UPLOAD_ERROR","exceedsImageLimit","currentImageCount","newImageCount","undefined","ProcoreImageUploadAdapter","loader","imageUpload","getEmbeddedImageCount","_upload","_callee","file","result","_t","_context","abortController","AbortController","fail","i18n","validateFile","warnPdfUnsupportedFile","validateReadableImage","validateImageCount","uploadFile","signal","aborted","toCkEditorResponse","toSilentUploadError","upload","abort","_this$abortController","_this$abortUpload","abortUpload","has","type","fileTypeLabel","size","_this$imageUpload$onW","_this$imageUpload","onWarning","_validateReadableImage","_callee2","url","image","_t2","_context2","URL","createObjectURL","Image","reject","onload","onerror","Error","src","revokeObjectURL","_x","_this$getEmbeddedImag","embeddedImageCount","count","prostoreFileId","test","defaultUrl","urls","response","width","height","get","_this","onProgress","uploaded","total","uploadTotal","message","_this$imageUpload$onE","_this$imageUpload2","onError","error","ProcoreImageUploadPlugin","_Plugin","_callSuper","_inherits","init","editor","config","configureProstoreFileIdConversion","configureUploadAdapter","configureUnsupportedFileDrop","configurePastedImageFileOverExternalHtml","configurePastedImageLimit","_this2","listenTo","editing","view","document","evt","data","dataTransfer","files","Array","from","imageFiles","filter","startsWith","html","getData","isImageOnlyPaste","Boolean","isImageOnlyHtml","clipboardHasImageBytes","unsupportedExtension","unsupportedPastedImageExtension","_imageUpload$onError","stop","concat","tooLargeFile","find","_imageUpload$onError2","uploadableFiles","execute","priority","_this3","fileRepository","plugins","createUploadAdapter","currentEmbeddedImageCountOrUndefined","imageUploadEditing","on","_event","_ref","imageElement","model","change","writer","setAttribute","_this4","imageModelNames","forEach","imageModelName","canExtendSchemaElement","schema","extend","allowAttributes","conversion","attributeToAttribute","name","_this5","clipboardPipeline","event","pastedImageCount","countImages","content","_event$stop","_imageUpload$onError3","_imageUpload$onError4","unsupportedFile","every","isRegistered","_this6","getRootNames","reduce","rootName","root","getRoot","countModelImages","_error","_doc$body$textContent","doc","DOMParser","parseFromString","body","querySelector","textContent","trim","extensions","querySelectorAll","map","img","_img$getAttribute","imageUrlExtension","getAttribute","isUnsupportedImageExtension","_path$split$pop","path","split","fileName","pop","fileExtensionLabel","extension","lower","toLowerCase","mimeType","node","is","imageCount","_i","_Array$from","getChildren","child","isImageModelElement","_i2","_Array$from2","item","_IMAGE_TYPE_LABELS$fi","fileType","toUpperCase"],"sources":["../../../../src/TextEditor/plugins/ProcoreImageUploadPlugin/ProcoreImageUploadPlugin.ts"],"sourcesContent":["import type {\n ClipboardInputTransformationData,\n EventInfo,\n ImageUploadCompleteData,\n ModelElement,\n ModelItem,\n UploadAdapter,\n ViewDocumentClipboardInputEvent,\n ViewDocumentFragment,\n ViewNode,\n} from 'ckeditor5'\nimport {\n ClipboardPipeline,\n FileRepository,\n ImageUploadEditing,\n Plugin,\n} from 'ckeditor5'\n\nimport type {\n TextEditorImageUploadHandlers,\n TextEditorImageUploadResult,\n} from '../../TextEditor.types'\nimport {\n DEFAULT_ALLOWED_MIME_TYPES,\n IMAGE_TYPE_LABELS,\n MAX_IMAGE_UPLOAD_FILE_SIZE_BYTES,\n MAX_RICH_TEXT_IMAGES,\n PDF_UNSUPPORTED_MIME_TYPES,\n RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE,\n} from '../../utils/imageAttributes'\nimport { canonicalizeTextEditorImageUrl } from '../../utils/imageUrls'\n\nconst REPORTED_UPLOAD_ERROR = ''\n\nconst exceedsImageLimit = (currentImageCount: number, newImageCount = 0) =>\n currentImageCount + newImageCount > MAX_RICH_TEXT_IMAGES\n\ninterface UploadLoader {\n file: Promise<File | null>\n uploaded?: number\n uploadTotal?: number | null\n}\n\ntype ClipboardCallback = (\n event: EventInfo<'inputTransformation', unknown>,\n data: ClipboardInputTransformationData\n) => void\n\ntype CkEditorUploadResponse = {\n urls: {\n default: string\n }\n prostoreFileId: number | string\n width?: number\n height?: number\n}\n\nexport class ProcoreImageUploadAdapter implements UploadAdapter {\n private abortController?: AbortController\n private abortUpload?: () => void\n\n constructor(\n private readonly loader: UploadLoader,\n private readonly imageUpload: TextEditorImageUploadHandlers,\n private readonly getEmbeddedImageCount?: () => number | undefined\n ) {}\n\n async upload(): Promise<CkEditorUploadResponse> {\n this.abortController = new AbortController()\n\n try {\n const file = await this.loader.file\n\n if (!file) {\n throw this.fail(this.i18n.t('textEditor.imageUpload.noFile'))\n }\n\n this.validateFile(file)\n this.warnPdfUnsupportedFile(file)\n await this.validateReadableImage(file)\n this.validateImageCount()\n\n const result = await this.uploadFile(file)\n\n if (this.abortController.signal.aborted) {\n throw this.fail(this.i18n.t('textEditor.imageUpload.aborted'))\n }\n\n return this.toCkEditorResponse(result)\n } catch (error) {\n throw this.toSilentUploadError(error)\n }\n }\n\n abort() {\n this.abortController?.abort()\n this.abortUpload?.()\n }\n\n private validateFile(file: File) {\n if (!DEFAULT_ALLOWED_MIME_TYPES.has(file.type)) {\n throw this.fail(\n this.i18n.t('textEditor.imageUpload.unsupportedType', {\n type: this.fileTypeLabel(file),\n })\n )\n }\n\n if (file.size > MAX_IMAGE_UPLOAD_FILE_SIZE_BYTES) {\n throw this.fail(this.i18n.t('textEditor.imageUpload.fileTooLarge'))\n }\n }\n\n private warnPdfUnsupportedFile(file: File) {\n if (!PDF_UNSUPPORTED_MIME_TYPES.has(file.type)) {\n return\n }\n\n this.imageUpload.onWarning?.(\n this.i18n.t('textEditor.imageUpload.pdfUnsupportedType', {\n type: this.fileTypeLabel(file),\n })\n )\n }\n\n private async validateReadableImage(file: File) {\n const url = URL.createObjectURL(file)\n\n try {\n const image = new Image()\n\n await new Promise<void>((resolve, reject) => {\n image.onload = () => resolve()\n image.onerror = () => reject(new Error())\n image.src = url\n })\n } catch (_error) {\n throw this.fail(this.i18n.t('textEditor.imageUpload.unreadable'))\n } finally {\n URL.revokeObjectURL(url)\n }\n }\n\n private validateImageCount() {\n const embeddedImageCount = this.getEmbeddedImageCount?.()\n\n if (\n embeddedImageCount !== undefined &&\n exceedsImageLimit(embeddedImageCount)\n ) {\n throw this.fail(\n this.i18n.t('textEditor.imageUpload.imageLimit', {\n count: MAX_RICH_TEXT_IMAGES,\n })\n )\n }\n }\n\n private toCkEditorResponse(\n result: TextEditorImageUploadResult\n ): CkEditorUploadResponse {\n if (\n !result.prostoreFileId ||\n !/^[\\w-]+$/.test(String(result.prostoreFileId))\n ) {\n throw this.fail(\n this.i18n.t('textEditor.imageUpload.invalidProstoreFileId')\n )\n }\n\n const defaultUrl = canonicalizeTextEditorImageUrl(result.urls.default)\n\n if (!defaultUrl) {\n throw this.fail(this.i18n.t('textEditor.imageUpload.invalidImageUrl'))\n }\n\n const response: CkEditorUploadResponse = {\n urls: {\n default: defaultUrl,\n },\n prostoreFileId: result.prostoreFileId,\n width: result.width,\n height: result.height,\n }\n\n return response\n }\n\n private get i18n() {\n return this.imageUpload.i18n\n }\n\n private fileTypeLabel(file: File) {\n return fileTypeLabel(file)\n }\n\n private uploadFile(file: File) {\n return new Promise<TextEditorImageUploadResult>((resolve, reject) => {\n this.abortUpload = () =>\n reject(this.fail(this.i18n.t('textEditor.imageUpload.aborted')))\n\n this.imageUpload\n .upload(\n file,\n { signal: this.abortController!.signal },\n {\n onProgress: (uploaded, total) => {\n this.loader.uploaded = uploaded\n\n if (total !== undefined) {\n this.loader.uploadTotal = total\n }\n },\n }\n )\n .then(resolve)\n .catch(reject)\n })\n }\n\n private fail(message: string) {\n this.imageUpload.onError?.(message)\n\n return REPORTED_UPLOAD_ERROR\n }\n\n private toSilentUploadError(error: unknown) {\n if (error === REPORTED_UPLOAD_ERROR) {\n return error\n }\n\n if (error instanceof Error && error.message) {\n return this.fail(error.message)\n }\n\n return this.fail(this.i18n.t('textEditor.imageUpload.failed'))\n }\n}\n\nexport class ProcoreImageUploadPlugin extends Plugin {\n static get pluginName() {\n return 'ProcoreImageUploadPlugin'\n }\n\n static get requires() {\n return [FileRepository, ImageUploadEditing]\n }\n\n init() {\n const imageUpload = this.editor.config.get('procoreImageUpload') as\n | TextEditorImageUploadHandlers\n | undefined\n\n if (!imageUpload) {\n return\n }\n\n this.configureProstoreFileIdConversion()\n this.configureUploadAdapter(imageUpload)\n this.configureUnsupportedFileDrop(imageUpload)\n this.configurePastedImageFileOverExternalHtml(imageUpload)\n this.configurePastedImageLimit(imageUpload)\n }\n\n /**\n * \"Copy Image\" puts both the image bytes and HTML with the external URL on\n * the clipboard. CKEditor prefers the HTML, but the backend strips external\n * image URLs — so upload the bytes instead.\n */\n private configurePastedImageFileOverExternalHtml(\n imageUpload: TextEditorImageUploadHandlers\n ) {\n this.listenTo(\n this.editor.editing.view.document,\n 'clipboardInput',\n (evt, data: ViewDocumentClipboardInputEvent['args'][0]) => {\n const dataTransfer = data.dataTransfer\n const files = Array.from(dataTransfer.files)\n const imageFiles = files.filter((file) =>\n file.type.startsWith('image/')\n )\n const html = dataTransfer.getData('text/html')\n const isImageOnlyPaste = Boolean(html) && isImageOnlyHtml(html)\n const clipboardHasImageBytes = imageFiles.length > 0\n\n if (!isImageOnlyPaste) {\n return\n }\n\n // The clipboard carries only an image URL, no bytes to upload (e.g.\n // \"Copy Image\" on an SVG). Show an error for clearly unsupported\n // extensions; otherwise let the default clipboard flow handle it.\n if (!clipboardHasImageBytes) {\n const unsupportedExtension = unsupportedPastedImageExtension(html)\n\n if (unsupportedExtension) {\n evt.stop()\n imageUpload.onError?.(\n imageUpload.i18n.t('textEditor.imageUpload.unsupportedType', {\n type: `${unsupportedExtension} `,\n })\n )\n }\n\n return\n }\n\n evt.stop()\n\n // Unsupported types already got a toast from the unsupported-file\n // drop handler, which runs before this listener.\n const tooLargeFile = imageFiles.find(\n (file) =>\n DEFAULT_ALLOWED_MIME_TYPES.has(file.type) &&\n file.size > MAX_IMAGE_UPLOAD_FILE_SIZE_BYTES\n )\n\n if (tooLargeFile) {\n imageUpload.onError?.(\n imageUpload.i18n.t('textEditor.imageUpload.fileTooLarge')\n )\n }\n\n const uploadableFiles = imageFiles.filter(\n (file) =>\n DEFAULT_ALLOWED_MIME_TYPES.has(file.type) &&\n file.size <= MAX_IMAGE_UPLOAD_FILE_SIZE_BYTES\n )\n\n if (uploadableFiles.length > 0) {\n this.editor.execute('uploadImage', { file: uploadableFiles })\n }\n },\n { priority: 'high' }\n )\n }\n\n private configureUploadAdapter(imageUpload: TextEditorImageUploadHandlers) {\n const fileRepository = this.editor.plugins.get(FileRepository)\n\n fileRepository.createUploadAdapter = (loader) =>\n new ProcoreImageUploadAdapter(loader, imageUpload, () =>\n this.currentEmbeddedImageCountOrUndefined()\n )\n\n const imageUploadEditing = this.editor.plugins.get(ImageUploadEditing)\n\n imageUploadEditing.on(\n 'uploadComplete',\n (_event, { data, imageElement }: ImageUploadCompleteData) => {\n if (!imageElement || !data?.prostoreFileId) {\n return\n }\n\n const prostoreFileId = String(data.prostoreFileId)\n\n this.editor.model.change((writer) => {\n writer.setAttribute('prostoreFileId', prostoreFileId, imageElement)\n })\n }\n )\n }\n\n private configureProstoreFileIdConversion() {\n const imageModelNames = ['imageBlock', 'imageInline']\n\n imageModelNames.forEach((imageModelName) => {\n if (this.canExtendSchemaElement(imageModelName)) {\n this.editor.model.schema.extend(imageModelName, {\n allowAttributes: ['prostoreFileId'],\n })\n }\n })\n\n this.editor.conversion.for('upcast').attributeToAttribute({\n view: {\n name: 'figure',\n key: RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE,\n },\n model: 'prostoreFileId',\n })\n\n this.editor.conversion.for('upcast').attributeToAttribute({\n view: {\n name: 'img',\n key: RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE,\n },\n model: 'prostoreFileId',\n })\n\n this.editor.conversion.for('downcast').attributeToAttribute({\n model: 'prostoreFileId',\n view: (value: unknown) => ({\n key: RICH_TEXT_EDITOR_FILE_ID_ATTRIBUTE,\n value: String(value),\n }),\n })\n }\n\n private configurePastedImageLimit(\n imageUpload: TextEditorImageUploadHandlers\n ) {\n const clipboardPipeline = this.editor.plugins.get(ClipboardPipeline)\n\n clipboardPipeline.on('inputTransformation', (event, data) => {\n const currentImageCount = this.currentEmbeddedImageCountOrUndefined()\n\n if (currentImageCount === undefined) {\n return\n }\n\n const pastedImageCount = countImages(data.content)\n\n if (exceedsImageLimit(currentImageCount, pastedImageCount)) {\n event.stop?.()\n imageUpload.onError?.(\n imageUpload.i18n.t('textEditor.imageUpload.imageLimit', {\n count: MAX_RICH_TEXT_IMAGES,\n })\n )\n }\n })\n }\n\n private configureUnsupportedFileDrop(\n imageUpload: TextEditorImageUploadHandlers\n ) {\n this.listenTo(\n this.editor.editing.view.document,\n 'clipboardInput',\n (event, data: ViewDocumentClipboardInputEvent['args'][0]) => {\n const files = data.dataTransfer.files\n\n if (files.length === 0) {\n return\n }\n\n const unsupportedFile = files.find(\n (file) => !DEFAULT_ALLOWED_MIME_TYPES.has(file.type)\n )\n\n if (!unsupportedFile) {\n return\n }\n\n imageUpload.onError?.(\n imageUpload.i18n.t('textEditor.imageUpload.unsupportedType', {\n type: fileTypeLabel(unsupportedFile),\n })\n )\n\n if (files.every((file) => !DEFAULT_ALLOWED_MIME_TYPES.has(file.type))) {\n event.stop()\n }\n },\n { priority: 'high' }\n )\n }\n\n private canExtendSchemaElement(imageModelName: string) {\n const { schema } = this.editor.model\n\n return typeof schema.isRegistered === 'function'\n ? schema.isRegistered(imageModelName)\n : true\n }\n\n private currentEmbeddedImageCountOrUndefined() {\n try {\n return this.editor.model.document\n .getRootNames()\n .reduce((total, rootName) => {\n const root = this.editor.model.document.getRoot(rootName)\n\n return root ? total + countModelImages(root) : total\n }, 0)\n } catch (_error) {\n return undefined\n }\n }\n}\n\n// \"Copy Image\" shape: an image with no meaningful text. Rich pastes mixing\n// text and images keep the default clipboard handling.\nfunction isImageOnlyHtml(html: string) {\n const doc = new DOMParser().parseFromString(html, 'text/html')\n\n return doc.body.querySelector('img') !== null && !doc.body.textContent?.trim()\n}\n\n// Uppercase extension (e.g. \"SVG\") when every pasted image URL clearly has an\n// unsupported extension; undefined when supported, unknown, or inline data.\nfunction unsupportedPastedImageExtension(html: string) {\n const doc = new DOMParser().parseFromString(html, 'text/html')\n const extensions = Array.from(doc.body.querySelectorAll('img')).map((img) =>\n imageUrlExtension(img.getAttribute('src') ?? '')\n )\n\n return extensions.every(isUnsupportedImageExtension)\n ? extensions[0]\n : undefined\n}\n\n// \"https://site.com/logo.svg?w=64\" -> \"SVG\"; undefined for inline data or\n// URLs without a file extension.\nfunction imageUrlExtension(src: string) {\n if (src.startsWith('data:') || src.startsWith('blob:')) {\n return undefined\n }\n\n const path = src.split(/[?#]/)[0]\n const fileName = path.split('/').pop() ?? ''\n\n return fileExtensionLabel(fileName)\n}\n\nfunction isUnsupportedImageExtension(extension: string | undefined) {\n if (!extension) {\n return false\n }\n\n const lower = extension.toLowerCase()\n const mimeType = `image/${lower === 'jpg' ? 'jpeg' : lower}`\n\n return !DEFAULT_ALLOWED_MIME_TYPES.has(mimeType)\n}\n\nfunction countImages(node: ViewNode | ViewDocumentFragment): number {\n if (!node.is('element') && !node.is('documentFragment')) {\n return 0\n }\n\n let imageCount = 0\n\n for (const child of Array.from(node.getChildren())) {\n if (child.is('element', 'img')) {\n imageCount += 1\n continue\n }\n\n imageCount += countImages(child)\n }\n\n return imageCount\n}\n\nfunction countModelImages(node: ModelElement): number {\n let imageCount = isImageModelElement(node) ? 1 : 0\n\n for (const child of Array.from(node.getChildren())) {\n if (child.is('element')) {\n imageCount += countModelImages(child)\n }\n }\n\n return imageCount\n}\n\nfunction isImageModelElement(item: ModelItem): item is ModelElement {\n return item.is('element', 'imageBlock') || item.is('element', 'imageInline')\n}\n\nfunction fileTypeLabel(file: File) {\n const fileType = IMAGE_TYPE_LABELS[file.type] ?? fileExtensionLabel(file.name)\n\n return fileType ? `${fileType} ` : ''\n}\n\nfunction fileExtensionLabel(fileName: string) {\n const extension = fileName.split('.').pop()\n\n if (!extension || extension === fileName) {\n return undefined\n }\n\n return extension.toUpperCase()\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["ProcoreImageUploadAdapter","ProcoreImageUploadPlugin"],"sources":["../../../../src/TextEditor/plugins/ProcoreImageUploadPlugin/index.ts"],"sourcesContent":["export {\n ProcoreImageUploadAdapter,\n ProcoreImageUploadPlugin,\n} from './ProcoreImageUploadPlugin'\n"],"mappings":"AAAA,SACEA,yBAAyB,EACzBC,wBAAwB,QACnB,4BAA4B"}
1
+ {"version":3,"file":"index.js","names":["ProcoreImageUploadAdapter","ProcoreImageUploadPlugin"],"sources":["../../../../src/TextEditor/plugins/ProcoreImageUploadPlugin/index.ts"],"sourcesContent":["export {\n ProcoreImageUploadAdapter,\n ProcoreImageUploadPlugin,\n} from './ProcoreImageUploadPlugin'\n"],"mappings":"AAAA,SACEA,yBAAyB,EACzBC,wBAAwB,QACnB,4BAA4B","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"TabSpacesPlugin.js","names":["Plugin","toWidget","viewToModelPositionOutsideModelElement","Widget","TabSpacesPlugin","_Plugin","_classCallCheck","_callSuper","arguments","_inherits","_createClass","key","value","init","editor","model","doc","document","schema","register","allowWhere","isInline","isObject","editing","mapper","on","viewElement","hasClass","conversion","elementToElement","view","modelItem","_ref","viewWriter","writer","span","createContainerElement","contenteditable","insert","createPositionAt","createText","label","_ref2","name","classes","keystrokes","set","evtData","cancel","change","tab","createElement","insertContent","selection","get"],"sources":["../../../../src/TextEditor/plugins/TabSpacesPlugin/TabSpacesPlugin.ts"],"sourcesContent":["import type { Editor } from 'ckeditor5'\nimport {\n Plugin,\n toWidget,\n viewToModelPositionOutsideModelElement,\n Widget,\n} from 'ckeditor5'\n\n// TODO - delete\nexport class TabSpacesPlugin extends Plugin {\n static get requires() {\n return [Widget]\n }\n\n static get pluginName() {\n return 'TabSpacesPlugin'\n }\n\n init(): void {\n const editor = this.editor as Editor\n const model = editor.model\n const doc = model.document\n\n model.schema.register('tab', {\n allowWhere: '$text',\n isInline: true,\n isObject: true,\n })\n\n editor.editing.mapper.on(\n 'viewToModelPosition',\n viewToModelPositionOutsideModelElement(model, (viewElement) =>\n viewElement.hasClass('ck-tab')\n )\n )\n\n editor.conversion.for('editingDowncast').elementToElement({\n model: 'tab',\n view: (modelItem, { writer: viewWriter }) => {\n const span = viewWriter.createContainerElement('span', {\n class: 'ck-tab',\n contenteditable: 'false',\n })\n viewWriter.insert(\n viewWriter.createPositionAt(span, 0),\n viewWriter.createText('\\u00A0\\u00A0\\u00A0')\n )\n\n return toWidget(span, viewWriter, { label: 'tab spaces' })\n },\n })\n\n editor.conversion.for('dataDowncast').elementToElement({\n model: 'tab',\n view: (modelItem, { writer: viewWriter }) => {\n const span = viewWriter.createContainerElement('span', {\n class: 'ck-tab',\n })\n viewWriter.insert(\n viewWriter.createPositionAt(span, 0),\n viewWriter.createText('\\u00A0\\u00A0\\u00A0')\n )\n return span\n },\n })\n\n editor.conversion.for('upcast').elementToElement({\n view: {\n name: 'span',\n classes: 'ck-tab',\n },\n model: 'tab',\n })\n\n editor.keystrokes.set('Tab', (evtData, cancel) => {\n model.change((writer) => {\n const tab = writer.createElement('tab')\n model.insertContent(tab, doc.selection)\n })\n cancel()\n })\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TabSpacesPlugin.js","names":["Plugin","toWidget","viewToModelPositionOutsideModelElement","Widget","TabSpacesPlugin","_Plugin","_classCallCheck","_callSuper","arguments","_inherits","_createClass","key","value","init","editor","model","doc","document","schema","register","allowWhere","isInline","isObject","editing","mapper","on","viewElement","hasClass","conversion","elementToElement","view","modelItem","_ref","viewWriter","writer","span","createContainerElement","contenteditable","insert","createPositionAt","createText","label","_ref2","name","classes","keystrokes","set","evtData","cancel","change","tab","createElement","insertContent","selection","get"],"sources":["../../../../src/TextEditor/plugins/TabSpacesPlugin/TabSpacesPlugin.ts"],"sourcesContent":["import type { Editor } from 'ckeditor5'\nimport {\n Plugin,\n toWidget,\n viewToModelPositionOutsideModelElement,\n Widget,\n} from 'ckeditor5'\n\n// TODO - delete\nexport class TabSpacesPlugin extends Plugin {\n static get requires() {\n return [Widget]\n }\n\n static get pluginName() {\n return 'TabSpacesPlugin'\n }\n\n init(): void {\n const editor = this.editor as Editor\n const model = editor.model\n const doc = model.document\n\n model.schema.register('tab', {\n allowWhere: '$text',\n isInline: true,\n isObject: true,\n })\n\n editor.editing.mapper.on(\n 'viewToModelPosition',\n viewToModelPositionOutsideModelElement(model, (viewElement) =>\n viewElement.hasClass('ck-tab')\n )\n )\n\n editor.conversion.for('editingDowncast').elementToElement({\n model: 'tab',\n view: (modelItem, { writer: viewWriter }) => {\n const span = viewWriter.createContainerElement('span', {\n class: 'ck-tab',\n contenteditable: 'false',\n })\n viewWriter.insert(\n viewWriter.createPositionAt(span, 0),\n viewWriter.createText('\\u00A0\\u00A0\\u00A0')\n )\n\n return toWidget(span, viewWriter, { label: 'tab spaces' })\n },\n })\n\n editor.conversion.for('dataDowncast').elementToElement({\n model: 'tab',\n view: (modelItem, { writer: viewWriter }) => {\n const span = viewWriter.createContainerElement('span', {\n class: 'ck-tab',\n })\n viewWriter.insert(\n viewWriter.createPositionAt(span, 0),\n viewWriter.createText('\\u00A0\\u00A0\\u00A0')\n )\n return span\n },\n })\n\n editor.conversion.for('upcast').elementToElement({\n view: {\n name: 'span',\n classes: 'ck-tab',\n },\n model: 'tab',\n })\n\n editor.keystrokes.set('Tab', (evtData, cancel) => {\n model.change((writer) => {\n const tab = writer.createElement('tab')\n model.insertContent(tab, doc.selection)\n })\n cancel()\n })\n }\n}\n"],"mappings":"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","ignoreList":[]}