@atlaskit/editor-common 96.1.0 → 96.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 (30) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/cjs/element-browser/components/ElementList/ElementList.js +31 -8
  3. package/dist/cjs/element-browser/components/StatelessElementBrowser.js +7 -2
  4. package/dist/cjs/element-browser/hooks/use-select-and-focus-on-arrow-navigation.js +102 -19
  5. package/dist/cjs/extensibility/ExtensionComponent.js +29 -18
  6. package/dist/cjs/insert/index.js +19 -0
  7. package/dist/cjs/monitoring/error.js +1 -1
  8. package/dist/cjs/preset/core-plugin/index.js +1 -1
  9. package/dist/cjs/ui/DropList/index.js +1 -1
  10. package/dist/es2019/element-browser/components/ElementList/ElementList.js +31 -8
  11. package/dist/es2019/element-browser/components/StatelessElementBrowser.js +7 -2
  12. package/dist/es2019/element-browser/hooks/use-select-and-focus-on-arrow-navigation.js +97 -14
  13. package/dist/es2019/extensibility/ExtensionComponent.js +30 -19
  14. package/dist/es2019/insert/index.js +18 -0
  15. package/dist/es2019/monitoring/error.js +1 -1
  16. package/dist/es2019/preset/core-plugin/index.js +1 -1
  17. package/dist/es2019/ui/DropList/index.js +1 -1
  18. package/dist/esm/element-browser/components/ElementList/ElementList.js +31 -8
  19. package/dist/esm/element-browser/components/StatelessElementBrowser.js +7 -2
  20. package/dist/esm/element-browser/hooks/use-select-and-focus-on-arrow-navigation.js +102 -20
  21. package/dist/esm/extensibility/ExtensionComponent.js +30 -19
  22. package/dist/esm/insert/index.js +18 -0
  23. package/dist/esm/monitoring/error.js +1 -1
  24. package/dist/esm/preset/core-plugin/index.js +1 -1
  25. package/dist/esm/ui/DropList/index.js +1 -1
  26. package/dist/types/element-browser/hooks/use-select-and-focus-on-arrow-navigation.d.ts +1 -1
  27. package/dist/types/insert/index.d.ts +6 -0
  28. package/dist/types-ts4.5/element-browser/hooks/use-select-and-focus-on-arrow-navigation.d.ts +1 -1
  29. package/dist/types-ts4.5/insert/index.d.ts +6 -0
  30. package/package.json +6 -3
@@ -19,7 +19,7 @@ import memoizeOne from 'memoize-one';
19
19
  import { NodeSelection } from '@atlaskit/editor-prosemirror/state';
20
20
  import { fg } from '@atlaskit/platform-feature-flags';
21
21
  import { getExtensionModuleNodePrivateProps, getNodeRenderer } from '../extensions';
22
- import { getExtensionRenderer, nodeToJSON } from '../utils';
22
+ import { getExtensionRenderer, nodeToJSON, toJSON } from '../utils';
23
23
  import Extension from './Extension/Extension';
24
24
  import InlineExtension from './Extension/InlineExtension';
25
25
  import MultiBodiedExtension from './MultiBodiedExtension';
@@ -41,6 +41,13 @@ var isEmptyBodiedMacro = function isEmptyBodiedMacro(node) {
41
41
  var isEmptyWithNoContent = !firstGrandChildNode && node.childCount === 1;
42
42
  return isEmptyWithPlacholder || isEmptyWithNoContent;
43
43
  };
44
+ var getBodiedExtensionContent = function getBodiedExtensionContent(node) {
45
+ var bodiedExtensionContent = [];
46
+ node.content.forEach(function (childNode) {
47
+ bodiedExtensionContent.push(nodeToJSON(childNode));
48
+ });
49
+ return !!bodiedExtensionContent.length ? bodiedExtensionContent : node.attrs.text;
50
+ };
44
51
  export var ExtensionComponentOld = /*#__PURE__*/function (_Component) {
45
52
  _inherits(ExtensionComponentOld, _Component);
46
53
  var _super = _createSuper(ExtensionComponentOld);
@@ -126,7 +133,8 @@ export var ExtensionComponentOld = /*#__PURE__*/function (_Component) {
126
133
  var _pmNode$marks;
127
134
  var _this$props = _this.props,
128
135
  extensionHandlers = _this$props.extensionHandlers,
129
- editorView = _this$props.editorView;
136
+ editorView = _this$props.editorView,
137
+ rendererExtensionHandlers = _this$props.rendererExtensionHandlers;
130
138
  var showBodiedExtensionRendererView = _this.state.showBodiedExtensionRendererView; // State will only be true if the gate is on and meets requirements
131
139
  var _pmNode$attrs = pmNode.attrs,
132
140
  extensionType = _pmNode$attrs.extensionType,
@@ -140,22 +148,23 @@ export var ExtensionComponentOld = /*#__PURE__*/function (_Component) {
140
148
  var fragmentLocalId = pmNode === null || pmNode === void 0 || (_pmNode$marks = pmNode.marks) === null || _pmNode$marks === void 0 || (_pmNode$marks = _pmNode$marks.find(function (m) {
141
149
  return m.type.name === 'fragment';
142
150
  })) === null || _pmNode$marks === void 0 || (_pmNode$marks = _pmNode$marks.attrs) === null || _pmNode$marks === void 0 ? void 0 : _pmNode$marks.localId;
143
- var nodeContent = [];
144
- if (isBodiedExtension) {
145
- var _pmNode$content;
146
- pmNode === null || pmNode === void 0 || (_pmNode$content = pmNode.content) === null || _pmNode$content === void 0 || _pmNode$content.forEach(function (childNode) {
147
- nodeContent.push(childNode);
148
- });
149
- }
151
+ var content = isBodiedExtension ? getBodiedExtensionContent(pmNode) : text;
150
152
  var node = {
151
153
  type: pmNode.type.name,
152
154
  extensionType: extensionType,
153
155
  extensionKey: extensionKey,
154
156
  parameters: parameters,
155
- content: isBodiedExtension ? nodeContent.length ? nodeContent : text : text,
157
+ content: content,
156
158
  localId: pmNode.attrs.localId,
157
159
  fragmentLocalId: fragmentLocalId
158
160
  };
161
+ if (isBodiedExtension) {
162
+ var rendererExtensionHandler = rendererExtensionHandlers === null || rendererExtensionHandlers === void 0 ? void 0 : rendererExtensionHandlers[extensionType];
163
+ if (!rendererExtensionHandler) {
164
+ return null;
165
+ }
166
+ return getExtensionRenderer(rendererExtensionHandler)(node, toJSON(editorView.state.doc));
167
+ }
159
168
  var result;
160
169
  if (extensionHandlers && extensionHandlers[extensionType]) {
161
170
  var render = getExtensionRenderer(extensionHandlers[extensionType]);
@@ -423,7 +432,8 @@ var ExtensionComponentInner = /*#__PURE__*/function (_Component2) {
423
432
  var _this2$props = _this2.props,
424
433
  extensionHandlers = _this2$props.extensionHandlers,
425
434
  editorView = _this2$props.editorView,
426
- showBodiedExtensionRendererView = _this2$props.showBodiedExtensionRendererView;
435
+ showBodiedExtensionRendererView = _this2$props.showBodiedExtensionRendererView,
436
+ rendererExtensionHandlers = _this2$props.rendererExtensionHandlers;
427
437
  var _pmNode$attrs2 = pmNode.attrs,
428
438
  extensionType = _pmNode$attrs2.extensionType,
429
439
  extensionKey = _pmNode$attrs2.extensionKey,
@@ -436,22 +446,23 @@ var ExtensionComponentInner = /*#__PURE__*/function (_Component2) {
436
446
  var fragmentLocalId = pmNode === null || pmNode === void 0 || (_pmNode$marks2 = pmNode.marks) === null || _pmNode$marks2 === void 0 || (_pmNode$marks2 = _pmNode$marks2.find(function (m) {
437
447
  return m.type.name === 'fragment';
438
448
  })) === null || _pmNode$marks2 === void 0 || (_pmNode$marks2 = _pmNode$marks2.attrs) === null || _pmNode$marks2 === void 0 ? void 0 : _pmNode$marks2.localId;
439
- var nodeContent = [];
440
- if (isBodiedExtension) {
441
- var _pmNode$content2;
442
- pmNode === null || pmNode === void 0 || (_pmNode$content2 = pmNode.content) === null || _pmNode$content2 === void 0 || _pmNode$content2.forEach(function (childNode) {
443
- nodeContent.push(childNode);
444
- });
445
- }
449
+ var content = isBodiedExtension ? getBodiedExtensionContent(pmNode) : text;
446
450
  var node = {
447
451
  type: pmNode.type.name,
448
452
  extensionType: extensionType,
449
453
  extensionKey: extensionKey,
450
454
  parameters: parameters,
451
- content: isBodiedExtension ? nodeContent.length ? nodeContent : text : text,
455
+ content: content,
452
456
  localId: pmNode.attrs.localId,
453
457
  fragmentLocalId: fragmentLocalId
454
458
  };
459
+ if (isBodiedExtension) {
460
+ var rendererExtensionHandler = rendererExtensionHandlers === null || rendererExtensionHandlers === void 0 ? void 0 : rendererExtensionHandlers[extensionType];
461
+ if (!rendererExtensionHandler) {
462
+ return null;
463
+ }
464
+ return getExtensionRenderer(rendererExtensionHandler)(node, toJSON(editorView.state.doc));
465
+ }
455
466
  var result;
456
467
  if (extensionHandlers && extensionHandlers[extensionType]) {
457
468
  var render = getExtensionRenderer(extensionHandlers[extensionType]);
@@ -302,6 +302,24 @@ export function contentAllowedInCodeBlock(state) {
302
302
  return isAllowedChild;
303
303
  }
304
304
 
305
+ /**
306
+ * Check if a fragment contains a particular node by iterating through all the nodes in the fragment.
307
+ * If the node type is found will stop looking and return true.
308
+ * If the node type is not found, it will return false.
309
+ */
310
+ export function fragmentContainsNodeType(fragment, nodeType) {
311
+ var doesContainNodeType = false;
312
+ fragment.descendants(function (node) {
313
+ if (node.type === nodeType) {
314
+ doesContainNodeType = true;
315
+ // Stop looking
316
+ return false;
317
+ }
318
+ return true;
319
+ });
320
+ return doesContainNodeType;
321
+ }
322
+
305
323
  // For platform_editor_element_level_templates experiment only
306
324
  // clean up ticket ED-24873
307
325
  var insertTemplateFragment = function insertTemplateFragment(_ref3) {
@@ -7,7 +7,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
7
7
  import { isFedRamp } from './environment';
8
8
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
9
9
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
10
- var packageVersion = "96.1.0";
10
+ var packageVersion = "96.2.0";
11
11
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
12
12
  // Remove URL as it has UGC
13
13
  // TODO: Sanitise the URL instead of just removing it
@@ -1,4 +1,4 @@
1
- import { processRawFragmentValue, processRawValue } from '../../../src/utils/processRawValue';
1
+ import { processRawFragmentValue, processRawValue } from '../../utils/processRawValue';
2
2
  import { editorCommandToPMCommand } from '../editor-commands';
3
3
  import { scheduleDocumentRequest } from './requestDocument';
4
4
 
@@ -21,7 +21,7 @@ import withAnalyticsContext from '@atlaskit/analytics-next/withAnalyticsContext'
21
21
  import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
22
22
  import Layer from '../Layer';
23
23
  var packageName = "@atlaskit/editor-common";
24
- var packageVersion = "96.1.0";
24
+ var packageVersion = "96.2.0";
25
25
  var halfFocusRing = 1;
26
26
  var dropOffset = '0, 8';
27
27
  var DropList = /*#__PURE__*/function (_Component) {
@@ -70,6 +70,6 @@ export type useSelectAndFocusReturnType = {
70
70
  setFocusedCategoryIndex: (index?: number) => void;
71
71
  setFocusOnSearch: () => void;
72
72
  };
73
- declare function useSelectAndFocusOnArrowNavigation(listSize: number, step: number, canFocusViewMore: boolean, isFocusSearch?: boolean): useSelectAndFocusReturnType;
73
+ declare function useSelectAndFocusOnArrowNavigation(listSize: number, step: number, canFocusViewMore: boolean, itemIsDisabled: (index: number) => boolean, isFocusSearch?: boolean): useSelectAndFocusReturnType;
74
74
  export declare const ensureSafeIndex: (index: number, listSize: number) => number;
75
75
  export default useSelectAndFocusOnArrowNavigation;
@@ -30,3 +30,9 @@ export declare const shouldSplitSelectedNodeOnNodeInsertion: ({ parentNodeType,
30
30
  * as we extract their text content.
31
31
  */
32
32
  export declare function contentAllowedInCodeBlock(state: EditorState): boolean;
33
+ /**
34
+ * Check if a fragment contains a particular node by iterating through all the nodes in the fragment.
35
+ * If the node type is found will stop looking and return true.
36
+ * If the node type is not found, it will return false.
37
+ */
38
+ export declare function fragmentContainsNodeType(fragment: Fragment, nodeType: NodeType): boolean;
@@ -70,6 +70,6 @@ export type useSelectAndFocusReturnType = {
70
70
  setFocusedCategoryIndex: (index?: number) => void;
71
71
  setFocusOnSearch: () => void;
72
72
  };
73
- declare function useSelectAndFocusOnArrowNavigation(listSize: number, step: number, canFocusViewMore: boolean, isFocusSearch?: boolean): useSelectAndFocusReturnType;
73
+ declare function useSelectAndFocusOnArrowNavigation(listSize: number, step: number, canFocusViewMore: boolean, itemIsDisabled: (index: number) => boolean, isFocusSearch?: boolean): useSelectAndFocusReturnType;
74
74
  export declare const ensureSafeIndex: (index: number, listSize: number) => number;
75
75
  export default useSelectAndFocusOnArrowNavigation;
@@ -30,3 +30,9 @@ export declare const shouldSplitSelectedNodeOnNodeInsertion: ({ parentNodeType,
30
30
  * as we extract their text content.
31
31
  */
32
32
  export declare function contentAllowedInCodeBlock(state: EditorState): boolean;
33
+ /**
34
+ * Check if a fragment contains a particular node by iterating through all the nodes in the fragment.
35
+ * If the node type is found will stop looking and return true.
36
+ * If the node type is not found, it will return false.
37
+ */
38
+ export declare function fragmentContainsNodeType(fragment: Fragment, nodeType: NodeType): boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-common",
3
- "version": "96.1.0",
3
+ "version": "96.2.0",
4
4
  "description": "A package that contains common classes and components for editor and renderer",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -152,8 +152,8 @@
152
152
  "@atlaskit/smart-user-picker": "^6.11.0",
153
153
  "@atlaskit/spinner": "^16.3.0",
154
154
  "@atlaskit/task-decision": "^17.11.0",
155
- "@atlaskit/textfield": "^6.6.0",
156
- "@atlaskit/tmp-editor-statsig": "^2.22.0",
155
+ "@atlaskit/textfield": "^6.7.0",
156
+ "@atlaskit/tmp-editor-statsig": "^2.23.0",
157
157
  "@atlaskit/tokens": "^2.4.0",
158
158
  "@atlaskit/tooltip": "^18.9.0",
159
159
  "@atlaskit/width-detector": "^4.3.0",
@@ -261,6 +261,9 @@
261
261
  "platform_editor_react18_extension_component_v2": {
262
262
  "type": "boolean"
263
263
  },
264
+ "platform_editor_is_disabled_state_element_browser": {
265
+ "type": "boolean"
266
+ },
264
267
  "platform-datasources-enable-two-way-sync": {
265
268
  "type": "boolean"
266
269
  },