@atlaskit/editor-common 105.8.0 → 105.8.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 (33) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/afm-jira/tsconfig.json +3 -0
  3. package/dist/cjs/ai-messages/ai.js +5 -0
  4. package/dist/cjs/extensions/combine-extension-providers.js +57 -0
  5. package/dist/cjs/extensions/default-extension-provider.js +94 -33
  6. package/dist/cjs/extensions/extension-handlers.js +63 -29
  7. package/dist/cjs/monitoring/error.js +1 -1
  8. package/dist/cjs/ui/DropList/index.js +1 -1
  9. package/dist/es2019/ai-messages/ai.js +5 -0
  10. package/dist/es2019/extensions/combine-extension-providers.js +23 -0
  11. package/dist/es2019/extensions/default-extension-provider.js +27 -1
  12. package/dist/es2019/extensions/extension-handlers.js +38 -4
  13. package/dist/es2019/monitoring/error.js +1 -1
  14. package/dist/es2019/ui/DropList/index.js +1 -1
  15. package/dist/esm/ai-messages/ai.js +5 -0
  16. package/dist/esm/extensions/combine-extension-providers.js +56 -0
  17. package/dist/esm/extensions/default-extension-provider.js +94 -33
  18. package/dist/esm/extensions/extension-handlers.js +62 -30
  19. package/dist/esm/monitoring/error.js +1 -1
  20. package/dist/esm/ui/DropList/index.js +1 -1
  21. package/dist/types/ai-messages/ai.d.ts +5 -0
  22. package/dist/types/extensions/default-extension-provider.d.ts +4 -0
  23. package/dist/types/extensions/extension-handlers.d.ts +3 -2
  24. package/dist/types/extensions/types/extension-manifest.d.ts +4 -0
  25. package/dist/types/extensions/types/extension-provider.d.ts +2 -0
  26. package/dist/types/extensions.d.ts +2 -1
  27. package/dist/types-ts4.5/ai-messages/ai.d.ts +5 -0
  28. package/dist/types-ts4.5/extensions/default-extension-provider.d.ts +4 -0
  29. package/dist/types-ts4.5/extensions/extension-handlers.d.ts +3 -2
  30. package/dist/types-ts4.5/extensions/types/extension-manifest.d.ts +4 -0
  31. package/dist/types-ts4.5/extensions/types/extension-provider.d.ts +2 -0
  32. package/dist/types-ts4.5/extensions.d.ts +2 -1
  33. package/package.json +6 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @atlaskit/editor-common
2
2
 
3
+ ## 105.8.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#159107](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/159107)
8
+ [`d1effcf832537`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/d1effcf832537) -
9
+ [EDITOR-786] Fixed placeholder text + added experimental tooltip + selection based opening the
10
+ - [#158624](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/158624)
11
+ [`8c86d5ce564ac`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/8c86d5ce564ac) -
12
+ Allow extension provider and manifest node to be preloaded and called synchronously
13
+ - Updated dependencies
14
+
3
15
  ## 105.8.0
4
16
 
5
17
  ### Minor Changes
@@ -74,6 +74,9 @@
74
74
  {
75
75
  "path": "../../../design-system/icon-object/afm-jira/tsconfig.json"
76
76
  },
77
+ {
78
+ "path": "../../../design-system/link/afm-jira/tsconfig.json"
79
+ },
77
80
  {
78
81
  "path": "../../../linking-platform/link-datasource/afm-jira/tsconfig.json"
79
82
  },
@@ -43,6 +43,11 @@ var aiMessages = exports.aiMessages = (0, _reactIntlNext.defineMessages)({
43
43
  defaultMessage: 'Open Atlassian Intelligence',
44
44
  description: 'Tooltip text for an option to use Atlassian Intellgience'
45
45
  },
46
+ askAIToolbarIconTooltipQuickCommand: {
47
+ id: 'fabric.editor.ai.toolbar.tryAI.tooltip.quickCommand',
48
+ defaultMessage: "Ask AI {key}+'",
49
+ description: 'Tooltip text for an option to use Atlassian Intellgience with quick command'
50
+ },
46
51
  tryAIToolbarIconTitle: {
47
52
  id: 'fabric.editor.ai.toolbar.tryAI.title',
48
53
  defaultMessage: 'Try AI',
@@ -1,15 +1,22 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.default = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
7
10
  var _providerHelpers = require("../provider-helpers");
11
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
12
+ 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; } }
13
+ 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; }
8
14
  /**
9
15
  * Allow to run methods from the `ExtensionProvider` interface across all providers seamlessly.
10
16
  * This handles promise racing and discards rejected promises safely.
11
17
  */
12
18
  var _default = exports.default = function _default(extensionProviders) {
19
+ var providersCache = [];
13
20
  var _combineProviders = (0, _providerHelpers.combineProviders)(extensionProviders),
14
21
  invokeSingle = _combineProviders.invokeSingle,
15
22
  invokeList = _combineProviders.invokeList;
@@ -17,6 +24,56 @@ var _default = exports.default = function _default(extensionProviders) {
17
24
  getExtensions: function getExtensions() {
18
25
  return invokeList('getExtensions');
19
26
  },
27
+ preload: function preload() {
28
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
29
+ return _regenerator.default.wrap(function _callee$(_context) {
30
+ while (1) switch (_context.prev = _context.next) {
31
+ case 0:
32
+ if (!(providersCache.length === 0)) {
33
+ _context.next = 4;
34
+ break;
35
+ }
36
+ _context.next = 3;
37
+ return Promise.all(extensionProviders.map(function (provider) {
38
+ return Promise.resolve(provider);
39
+ }));
40
+ case 3:
41
+ providersCache = _context.sent;
42
+ case 4:
43
+ _context.next = 6;
44
+ return Promise.all(providersCache.map(function (provider) {
45
+ var _provider$preload;
46
+ return provider === null || provider === void 0 || (_provider$preload = provider.preload) === null || _provider$preload === void 0 ? void 0 : _provider$preload.call(provider);
47
+ }));
48
+ case 6:
49
+ case "end":
50
+ return _context.stop();
51
+ }
52
+ }, _callee);
53
+ }))();
54
+ },
55
+ getPreloadedExtension: function getPreloadedExtension(type, key) {
56
+ if (providersCache.length === 0) {
57
+ // preload() has not been called yet
58
+ return;
59
+ }
60
+ var _iterator = _createForOfIteratorHelper(providersCache),
61
+ _step;
62
+ try {
63
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
64
+ var _provider$getPreloade;
65
+ var provider = _step.value;
66
+ var result = provider === null || provider === void 0 || (_provider$getPreloade = provider.getPreloadedExtension) === null || _provider$getPreloade === void 0 ? void 0 : _provider$getPreloade.call(provider, type, key);
67
+ if (result) {
68
+ return result;
69
+ }
70
+ }
71
+ } catch (err) {
72
+ _iterator.e(err);
73
+ } finally {
74
+ _iterator.f();
75
+ }
76
+ },
20
77
  getExtension: function getExtension(type, key) {
21
78
  return invokeSingle('getExtension', [type, key]);
22
79
  },
@@ -9,7 +9,11 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
13
  var _moduleHelpers = require("./module-helpers");
14
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
15
+ 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; } }
16
+ 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; }
13
17
  var DefaultExtensionProvider = exports.default = /*#__PURE__*/function () {
14
18
  function DefaultExtensionProvider(manifests,
15
19
  /**
@@ -20,6 +24,7 @@ var DefaultExtensionProvider = exports.default = /*#__PURE__*/function () {
20
24
  */
21
25
  autoConvertHandlers) {
22
26
  (0, _classCallCheck2.default)(this, DefaultExtensionProvider);
27
+ (0, _defineProperty2.default)(this, "manifestsCache", []);
23
28
  this.manifestsPromise = Promise.resolve(manifests);
24
29
  this.autoConvertHandlers = autoConvertHandlers;
25
30
  }
@@ -29,57 +34,113 @@ var DefaultExtensionProvider = exports.default = /*#__PURE__*/function () {
29
34
  return this.manifestsPromise;
30
35
  }
31
36
  }, {
32
- key: "getExtension",
37
+ key: "preload",
33
38
  value: function () {
34
- var _getExtension = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(type, key) {
35
- var extension;
39
+ var _preload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
40
+ var preloadCalls, _iterator, _step, _manifest$modules, manifest, nodes;
36
41
  return _regenerator.default.wrap(function _callee$(_context) {
37
42
  while (1) switch (_context.prev = _context.next) {
38
43
  case 0:
39
44
  _context.next = 2;
40
45
  return this.manifestsPromise;
41
46
  case 2:
42
- extension = _context.sent.find(function (manifest) {
43
- return manifest.type === type && manifest.key === key;
44
- });
45
- if (extension) {
46
- _context.next = 5;
47
- break;
47
+ this.manifestsCache = _context.sent;
48
+ preloadCalls = [];
49
+ _iterator = _createForOfIteratorHelper(this.manifestsCache);
50
+ try {
51
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
52
+ manifest = _step.value;
53
+ nodes = manifest === null || manifest === void 0 || (_manifest$modules = manifest.modules) === null || _manifest$modules === void 0 ? void 0 : _manifest$modules.nodes;
54
+ if (nodes) {
55
+ Object.values(nodes).forEach(function (node) {
56
+ var _preloadRender, _ref;
57
+ preloadCalls.push(node === null || node === void 0 || (_preloadRender = (_ref = node).preloadRender) === null || _preloadRender === void 0 ? void 0 : _preloadRender.call(_ref));
58
+ });
59
+ }
60
+ }
61
+ } catch (err) {
62
+ _iterator.e(err);
63
+ } finally {
64
+ _iterator.f();
48
65
  }
49
- throw new Error("Extension with type \"".concat(type, "\" and key \"").concat(key, "\" not found!"));
50
- case 5:
51
- return _context.abrupt("return", extension);
52
- case 6:
66
+ _context.next = 8;
67
+ return Promise.allSettled(preloadCalls);
68
+ case 8:
53
69
  case "end":
54
70
  return _context.stop();
55
71
  }
56
72
  }, _callee, this);
57
73
  }));
74
+ function preload() {
75
+ return _preload.apply(this, arguments);
76
+ }
77
+ return preload;
78
+ }()
79
+ }, {
80
+ key: "getPreloadedExtension",
81
+ value: function getPreloadedExtension(type, key) {
82
+ if (!this.manifestsCache) {
83
+ return;
84
+ }
85
+ return this.getExtensionFromManifest(this.manifestsCache, type, key);
86
+ }
87
+ }, {
88
+ key: "getExtension",
89
+ value: function () {
90
+ var _getExtension = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(type, key) {
91
+ return _regenerator.default.wrap(function _callee2$(_context2) {
92
+ while (1) switch (_context2.prev = _context2.next) {
93
+ case 0:
94
+ _context2.t0 = this;
95
+ _context2.next = 3;
96
+ return this.manifestsPromise;
97
+ case 3:
98
+ _context2.t1 = _context2.sent;
99
+ _context2.t2 = type;
100
+ _context2.t3 = key;
101
+ return _context2.abrupt("return", _context2.t0.getExtensionFromManifest.call(_context2.t0, _context2.t1, _context2.t2, _context2.t3));
102
+ case 7:
103
+ case "end":
104
+ return _context2.stop();
105
+ }
106
+ }, _callee2, this);
107
+ }));
58
108
  function getExtension(_x, _x2) {
59
109
  return _getExtension.apply(this, arguments);
60
110
  }
61
111
  return getExtension;
62
112
  }()
113
+ }, {
114
+ key: "getExtensionFromManifest",
115
+ value: function getExtensionFromManifest(manifests, type, key) {
116
+ var extension = manifests.find(function (manifest) {
117
+ return manifest.type === type && manifest.key === key;
118
+ });
119
+ if (!extension) {
120
+ throw new Error("Extension with type \"".concat(type, "\" and key \"").concat(key, "\" not found!"));
121
+ }
122
+ return extension;
123
+ }
63
124
  }, {
64
125
  key: "search",
65
126
  value: function () {
66
- var _search = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(keyword) {
127
+ var _search = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(keyword) {
67
128
  var extensions;
68
- return _regenerator.default.wrap(function _callee2$(_context2) {
69
- while (1) switch (_context2.prev = _context2.next) {
129
+ return _regenerator.default.wrap(function _callee3$(_context3) {
130
+ while (1) switch (_context3.prev = _context3.next) {
70
131
  case 0:
71
- _context2.next = 2;
132
+ _context3.next = 2;
72
133
  return this.manifestsPromise;
73
134
  case 2:
74
- extensions = _context2.sent.filter(function (manifest) {
135
+ extensions = _context3.sent.filter(function (manifest) {
75
136
  return manifest.title.toLowerCase().includes(keyword.toLowerCase());
76
137
  });
77
- return _context2.abrupt("return", extensions);
138
+ return _context3.abrupt("return", extensions);
78
139
  case 4:
79
140
  case "end":
80
- return _context2.stop();
141
+ return _context3.stop();
81
142
  }
82
- }, _callee2, this);
143
+ }, _callee3, this);
83
144
  }));
84
145
  function search(_x3) {
85
146
  return _search.apply(this, arguments);
@@ -89,29 +150,29 @@ var DefaultExtensionProvider = exports.default = /*#__PURE__*/function () {
89
150
  }, {
90
151
  key: "getAutoConverter",
91
152
  value: function () {
92
- var _getAutoConverter = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
153
+ var _getAutoConverter = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
93
154
  var autoConverters;
94
- return _regenerator.default.wrap(function _callee3$(_context3) {
95
- while (1) switch (_context3.prev = _context3.next) {
155
+ return _regenerator.default.wrap(function _callee4$(_context4) {
156
+ while (1) switch (_context4.prev = _context4.next) {
96
157
  case 0:
97
158
  if (!this.autoConvertHandlers) {
98
- _context3.next = 2;
159
+ _context4.next = 2;
99
160
  break;
100
161
  }
101
- return _context3.abrupt("return", this.autoConvertHandlers);
162
+ return _context4.abrupt("return", this.autoConvertHandlers);
102
163
  case 2:
103
- _context3.t0 = _moduleHelpers.getAutoConvertPatternsFromModule;
104
- _context3.next = 5;
164
+ _context4.t0 = _moduleHelpers.getAutoConvertPatternsFromModule;
165
+ _context4.next = 5;
105
166
  return this.manifestsPromise;
106
167
  case 5:
107
- _context3.t1 = _context3.sent;
108
- autoConverters = (0, _context3.t0)(_context3.t1);
109
- return _context3.abrupt("return", autoConverters);
168
+ _context4.t1 = _context4.sent;
169
+ autoConverters = (0, _context4.t0)(_context4.t1);
170
+ return _context4.abrupt("return", autoConverters);
110
171
  case 8:
111
172
  case "end":
112
- return _context3.stop();
173
+ return _context4.stop();
113
174
  }
114
- }, _callee3, this);
175
+ }, _callee4, this);
115
176
  }));
116
177
  function getAutoConverter() {
117
178
  return _getAutoConverter.apply(this, arguments);
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.getExtensionModuleNode = getExtensionModuleNode;
8
+ exports.getExtensionModuleNodeMaybePreloaded = getExtensionModuleNodeMaybePreloaded;
8
9
  exports.getExtensionModuleNodePrivateProps = getExtensionModuleNodePrivateProps;
9
10
  exports.getNodeRenderer = getNodeRenderer;
10
11
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
@@ -12,45 +13,39 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
12
13
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
14
  var _react = _interopRequireDefault(require("react"));
14
15
  var _reactLoadable = _interopRequireDefault(require("react-loadable"));
16
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
15
17
  var _manifestHelpers = require("./manifest-helpers");
18
+ function getNodeFromManifest(
19
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
+ manifest, extKey, nodeKey, extensionType, extensionKey) {
21
+ if (!manifest) {
22
+ throw new Error("Extension with key \"".concat(extKey, "\" and type \"").concat(extensionType, "\" not found!"));
23
+ }
24
+ if (!manifest.modules.nodes) {
25
+ throw new Error("Couldn't find any node for extension type \"".concat(extensionType, "\" and key \"").concat(extensionKey, "\"!"));
26
+ }
27
+ var node = manifest.modules.nodes[nodeKey];
28
+ if (!node) {
29
+ throw new Error("Node with key \"".concat(extensionKey, "\" not found on manifest for extension type \"").concat(extensionType, "\" and key \"").concat(extensionKey, "\"!"));
30
+ }
31
+ return node;
32
+ }
16
33
  function getExtensionModuleNode(_x, _x2, _x3) {
17
34
  return _getExtensionModuleNode.apply(this, arguments);
18
35
  }
19
- /**
20
- * Gets `__` prefixed properties from an extension node module definition
21
- */
22
36
  function _getExtensionModuleNode() {
23
37
  _getExtensionModuleNode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(extensionProvider, extensionType, extensionKey) {
24
- var _getExtensionKeyAndNo, _getExtensionKeyAndNo2, extKey, nodeKey, manifest, node;
38
+ var _getExtensionKeyAndNo3, _getExtensionKeyAndNo4, extKey, nodeKey, manifest;
25
39
  return _regenerator.default.wrap(function _callee$(_context) {
26
40
  while (1) switch (_context.prev = _context.next) {
27
41
  case 0:
28
- _getExtensionKeyAndNo = (0, _manifestHelpers.getExtensionKeyAndNodeKey)(extensionKey, extensionType), _getExtensionKeyAndNo2 = (0, _slicedToArray2.default)(_getExtensionKeyAndNo, 2), extKey = _getExtensionKeyAndNo2[0], nodeKey = _getExtensionKeyAndNo2[1];
42
+ _getExtensionKeyAndNo3 = (0, _manifestHelpers.getExtensionKeyAndNodeKey)(extensionKey, extensionType), _getExtensionKeyAndNo4 = (0, _slicedToArray2.default)(_getExtensionKeyAndNo3, 2), extKey = _getExtensionKeyAndNo4[0], nodeKey = _getExtensionKeyAndNo4[1];
29
43
  _context.next = 3;
30
44
  return extensionProvider.getExtension(extensionType, extKey);
31
45
  case 3:
32
46
  manifest = _context.sent;
33
- if (manifest) {
34
- _context.next = 6;
35
- break;
36
- }
37
- throw new Error("Extension with key \"".concat(extKey, "\" and type \"").concat(extensionType, "\" not found!"));
38
- case 6:
39
- if (manifest.modules.nodes) {
40
- _context.next = 8;
41
- break;
42
- }
43
- throw new Error("Couldn't find any node for extension type \"".concat(extensionType, "\" and key \"").concat(extensionKey, "\"!"));
44
- case 8:
45
- node = manifest.modules.nodes[nodeKey];
46
- if (node) {
47
- _context.next = 11;
48
- break;
49
- }
50
- throw new Error("Node with key \"".concat(extensionKey, "\" not found on manifest for extension type \"").concat(extensionType, "\" and key \"").concat(extensionKey, "\"!"));
51
- case 11:
52
- return _context.abrupt("return", node);
53
- case 12:
47
+ return _context.abrupt("return", getNodeFromManifest(manifest, extKey, nodeKey, extensionType, extensionKey));
48
+ case 5:
54
49
  case "end":
55
50
  return _context.stop();
56
51
  }
@@ -58,6 +53,27 @@ function _getExtensionModuleNode() {
58
53
  }));
59
54
  return _getExtensionModuleNode.apply(this, arguments);
60
55
  }
56
+ function getExtensionModuleNodeMaybePreloaded(extensionProvider, extensionType, extensionKey
57
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
58
+ ) {
59
+ var _extensionProvider$ge;
60
+ var _getExtensionKeyAndNo = (0, _manifestHelpers.getExtensionKeyAndNodeKey)(extensionKey, extensionType),
61
+ _getExtensionKeyAndNo2 = (0, _slicedToArray2.default)(_getExtensionKeyAndNo, 2),
62
+ extKey = _getExtensionKeyAndNo2[0],
63
+ nodeKey = _getExtensionKeyAndNo2[1];
64
+ var manifest = extensionProvider === null || extensionProvider === void 0 || (_extensionProvider$ge = extensionProvider.getPreloadedExtension) === null || _extensionProvider$ge === void 0 ? void 0 : _extensionProvider$ge.call(extensionProvider, extensionType, extKey);
65
+ if (manifest) {
66
+ return getNodeFromManifest(manifest, extKey, nodeKey, extensionType, extensionKey);
67
+ } else {
68
+ return extensionProvider.getExtension(extensionType, extKey).then(function (manifest) {
69
+ return getNodeFromManifest(manifest, extKey, nodeKey, extensionType, extensionKey);
70
+ });
71
+ }
72
+ }
73
+
74
+ /**
75
+ * Gets `__` prefixed properties from an extension node module definition
76
+ */
61
77
  function getExtensionModuleNodePrivateProps(_x4, _x5, _x6) {
62
78
  return _getExtensionModuleNodePrivateProps.apply(this, arguments);
63
79
  }
@@ -99,9 +115,27 @@ function ExtensionLoading(props) {
99
115
  function getNodeRenderer(extensionProvider, extensionType, extensionKey) {
100
116
  return (0, _reactLoadable.default)({
101
117
  loader: function loader() {
102
- return getExtensionModuleNode(extensionProvider, extensionType, extensionKey).then(function (node) {
103
- return (0, _manifestHelpers.resolveImport)(node.render());
104
- });
118
+ if ((0, _platformFeatureFlags.fg)('confluence_preload_extension_providers')) {
119
+ // Logic here is specific to Confluence because it doesn't use the original react-loadable.
120
+ // The library is replaced with a custom one that supports synchronous return value from loader.
121
+ var maybePromise = getExtensionModuleNodeMaybePreloaded(extensionProvider, extensionType, extensionKey);
122
+ if (maybePromise instanceof Promise) {
123
+ return maybePromise.then(function (node) {
124
+ return (0, _manifestHelpers.resolveImport)(node.render());
125
+ });
126
+ } else {
127
+ var _renderSync, _ref;
128
+ // maybePromise is sync here
129
+ var preloaded = maybePromise === null || maybePromise === void 0 || (_renderSync = (_ref = maybePromise).renderSync) === null || _renderSync === void 0 ? void 0 : _renderSync.call(_ref);
130
+ // Note resolveImport is still async but we are not waiting on a already-fulfilled value.
131
+ // It is fast enough to not flip back to loading.
132
+ return (0, _manifestHelpers.resolveImport)(preloaded ? preloaded : maybePromise.render());
133
+ }
134
+ } else {
135
+ return getExtensionModuleNode(extensionProvider, extensionType, extensionKey).then(function (node) {
136
+ return (0, _manifestHelpers.resolveImport)(node.render());
137
+ });
138
+ }
105
139
  },
106
140
  loading: ExtensionLoading
107
141
  });
@@ -17,7 +17,7 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
17
17
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
18
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
19
19
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
20
- var packageVersion = "105.8.0";
20
+ var packageVersion = "105.8.1";
21
21
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
22
22
  // Remove URL as it has UGC
23
23
  // Ignored via go/ees007
@@ -23,7 +23,7 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
23
23
  * @jsx jsx
24
24
  */ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
25
25
  var packageName = "@atlaskit/editor-common";
26
- var packageVersion = "105.8.0";
26
+ var packageVersion = "105.8.1";
27
27
  var halfFocusRing = 1;
28
28
  var dropOffset = '0, 8';
29
29
  // Ignored via go/ees005
@@ -37,6 +37,11 @@ export const aiMessages = defineMessages({
37
37
  defaultMessage: 'Open Atlassian Intelligence',
38
38
  description: 'Tooltip text for an option to use Atlassian Intellgience'
39
39
  },
40
+ askAIToolbarIconTooltipQuickCommand: {
41
+ id: 'fabric.editor.ai.toolbar.tryAI.tooltip.quickCommand',
42
+ defaultMessage: "Ask AI {key}+'",
43
+ description: 'Tooltip text for an option to use Atlassian Intellgience with quick command'
44
+ },
40
45
  tryAIToolbarIconTitle: {
41
46
  id: 'fabric.editor.ai.toolbar.tryAI.title',
42
47
  defaultMessage: 'Try AI',
@@ -4,6 +4,7 @@ import { combineProviders } from '../provider-helpers';
4
4
  * This handles promise racing and discards rejected promises safely.
5
5
  */
6
6
  export default (extensionProviders => {
7
+ let providersCache = [];
7
8
  const {
8
9
  invokeSingle,
9
10
  invokeList
@@ -12,6 +13,28 @@ export default (extensionProviders => {
12
13
  getExtensions() {
13
14
  return invokeList('getExtensions');
14
15
  },
16
+ async preload() {
17
+ if (providersCache.length === 0) {
18
+ providersCache = await Promise.all(extensionProviders.map(provider => Promise.resolve(provider)));
19
+ }
20
+ await Promise.all(providersCache.map(provider => {
21
+ var _provider$preload;
22
+ return provider === null || provider === void 0 ? void 0 : (_provider$preload = provider.preload) === null || _provider$preload === void 0 ? void 0 : _provider$preload.call(provider);
23
+ }));
24
+ },
25
+ getPreloadedExtension(type, key) {
26
+ if (providersCache.length === 0) {
27
+ // preload() has not been called yet
28
+ return;
29
+ }
30
+ for (const provider of providersCache) {
31
+ var _provider$getPreloade;
32
+ const result = provider === null || provider === void 0 ? void 0 : (_provider$getPreloade = provider.getPreloadedExtension) === null || _provider$getPreloade === void 0 ? void 0 : _provider$getPreloade.call(provider, type, key);
33
+ if (result) {
34
+ return result;
35
+ }
36
+ }
37
+ },
15
38
  getExtension(type, key) {
16
39
  return invokeSingle('getExtension', [type, key]);
17
40
  },
@@ -1,3 +1,4 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
1
2
  import { getAutoConvertPatternsFromModule } from './module-helpers';
2
3
  export default class DefaultExtensionProvider {
3
4
  constructor(manifests,
@@ -8,14 +9,39 @@ export default class DefaultExtensionProvider {
8
9
  * Warning: If this attribute is passed, this provider will ignore auto convert patterns from the manifests.
9
10
  */
10
11
  autoConvertHandlers) {
12
+ _defineProperty(this, "manifestsCache", []);
11
13
  this.manifestsPromise = Promise.resolve(manifests);
12
14
  this.autoConvertHandlers = autoConvertHandlers;
13
15
  }
14
16
  getExtensions() {
15
17
  return this.manifestsPromise;
16
18
  }
19
+ async preload() {
20
+ this.manifestsCache = await this.manifestsPromise;
21
+ const preloadCalls = [];
22
+ for (const manifest of this.manifestsCache) {
23
+ var _manifest$modules;
24
+ const nodes = manifest === null || manifest === void 0 ? void 0 : (_manifest$modules = manifest.modules) === null || _manifest$modules === void 0 ? void 0 : _manifest$modules.nodes;
25
+ if (nodes) {
26
+ Object.values(nodes).forEach(node => {
27
+ var _preloadRender, _ref;
28
+ preloadCalls.push(node === null || node === void 0 ? void 0 : (_preloadRender = (_ref = node).preloadRender) === null || _preloadRender === void 0 ? void 0 : _preloadRender.call(_ref));
29
+ });
30
+ }
31
+ }
32
+ await Promise.allSettled(preloadCalls);
33
+ }
34
+ getPreloadedExtension(type, key) {
35
+ if (!this.manifestsCache) {
36
+ return;
37
+ }
38
+ return this.getExtensionFromManifest(this.manifestsCache, type, key);
39
+ }
17
40
  async getExtension(type, key) {
18
- const extension = (await this.manifestsPromise).find(manifest => manifest.type === type && manifest.key === key);
41
+ return this.getExtensionFromManifest(await this.manifestsPromise, type, key);
42
+ }
43
+ getExtensionFromManifest(manifests, type, key) {
44
+ const extension = manifests.find(manifest => manifest.type === type && manifest.key === key);
19
45
  if (!extension) {
20
46
  throw new Error(`Extension with type "${type}" and key "${key}" not found!`);
21
47
  }
@@ -1,9 +1,10 @@
1
1
  import React from 'react';
2
2
  import Loadable from 'react-loadable';
3
+ import { fg } from '@atlaskit/platform-feature-flags';
3
4
  import { getExtensionKeyAndNodeKey, resolveImport } from './manifest-helpers';
4
- export async function getExtensionModuleNode(extensionProvider, extensionType, extensionKey) {
5
- const [extKey, nodeKey] = getExtensionKeyAndNodeKey(extensionKey, extensionType);
6
- const manifest = await extensionProvider.getExtension(extensionType, extKey);
5
+ function getNodeFromManifest(
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+ manifest, extKey, nodeKey, extensionType, extensionKey) {
7
8
  if (!manifest) {
8
9
  throw new Error(`Extension with key "${extKey}" and type "${extensionType}" not found!`);
9
10
  }
@@ -16,6 +17,23 @@ export async function getExtensionModuleNode(extensionProvider, extensionType, e
16
17
  }
17
18
  return node;
18
19
  }
20
+ export async function getExtensionModuleNode(extensionProvider, extensionType, extensionKey) {
21
+ const [extKey, nodeKey] = getExtensionKeyAndNodeKey(extensionKey, extensionType);
22
+ const manifest = await extensionProvider.getExtension(extensionType, extKey);
23
+ return getNodeFromManifest(manifest, extKey, nodeKey, extensionType, extensionKey);
24
+ }
25
+ export function getExtensionModuleNodeMaybePreloaded(extensionProvider, extensionType, extensionKey
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
+ ) {
28
+ var _extensionProvider$ge;
29
+ const [extKey, nodeKey] = getExtensionKeyAndNodeKey(extensionKey, extensionType);
30
+ const manifest = extensionProvider === null || extensionProvider === void 0 ? void 0 : (_extensionProvider$ge = extensionProvider.getPreloadedExtension) === null || _extensionProvider$ge === void 0 ? void 0 : _extensionProvider$ge.call(extensionProvider, extensionType, extKey);
31
+ if (manifest) {
32
+ return getNodeFromManifest(manifest, extKey, nodeKey, extensionType, extensionKey);
33
+ } else {
34
+ return extensionProvider.getExtension(extensionType, extKey).then(manifest => getNodeFromManifest(manifest, extKey, nodeKey, extensionType, extensionKey));
35
+ }
36
+ }
19
37
 
20
38
  /**
21
39
  * Gets `__` prefixed properties from an extension node module definition
@@ -41,7 +59,23 @@ function ExtensionLoading(props) {
41
59
  export function getNodeRenderer(extensionProvider, extensionType, extensionKey) {
42
60
  return Loadable({
43
61
  loader: () => {
44
- return getExtensionModuleNode(extensionProvider, extensionType, extensionKey).then(node => resolveImport(node.render()));
62
+ if (fg('confluence_preload_extension_providers')) {
63
+ // Logic here is specific to Confluence because it doesn't use the original react-loadable.
64
+ // The library is replaced with a custom one that supports synchronous return value from loader.
65
+ const maybePromise = getExtensionModuleNodeMaybePreloaded(extensionProvider, extensionType, extensionKey);
66
+ if (maybePromise instanceof Promise) {
67
+ return maybePromise.then(node => resolveImport(node.render()));
68
+ } else {
69
+ var _renderSync, _ref;
70
+ // maybePromise is sync here
71
+ const preloaded = maybePromise === null || maybePromise === void 0 ? void 0 : (_renderSync = (_ref = maybePromise).renderSync) === null || _renderSync === void 0 ? void 0 : _renderSync.call(_ref);
72
+ // Note resolveImport is still async but we are not waiting on a already-fulfilled value.
73
+ // It is fast enough to not flip back to loading.
74
+ return resolveImport(preloaded ? preloaded : maybePromise.render());
75
+ }
76
+ } else {
77
+ return getExtensionModuleNode(extensionProvider, extensionType, extensionKey).then(node => resolveImport(node.render()));
78
+ }
45
79
  },
46
80
  loading: ExtensionLoading
47
81
  });
@@ -1,7 +1,7 @@
1
1
  import { isFedRamp } from './environment';
2
2
  const SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
3
3
  const packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
4
- const packageVersion = "105.8.0";
4
+ const packageVersion = "105.8.1";
5
5
  const sanitiseSentryEvents = (data, _hint) => {
6
6
  // Remove URL as it has UGC
7
7
  // Ignored via go/ees007