@atlaskit/editor-plugin-breakout 1.1.0 → 1.1.2

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @atlaskit/editor-plugin-breakout
2
2
 
3
+ ## 1.1.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#94901](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/94901) [`da964fcdc828`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/da964fcdc828) - [ED-23097] Bump ADF schema to version 35.12.1
8
+ - [#94398](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/94398) [`4df808e35fda`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/4df808e35fda) - [ux] [ED-23108] Solve bug where single player expands would lose their expanded state when adding breakout marks. Single player expands are only used when `platform.editor.single-player-expand` FF AND live page are both enabled.
9
+
10
+ ## 1.1.1
11
+
12
+ ### Patch Changes
13
+
14
+ - [#93689](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/93689) [`5ba5d2b4a9ac`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/5ba5d2b4a9ac) - Updating adf-schema version to 35.10.0
15
+
3
16
  ## 1.1.0
4
17
 
5
18
  ### Minor Changes
@@ -6,7 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.removeBreakout = removeBreakout;
7
7
  var _state = require("@atlaskit/editor-prosemirror/state");
8
8
  var _findBreakoutNode = require("../utils/find-breakout-node");
9
- function removeBreakout() {
9
+ var _singlePlayerExpand = require("../utils/single-player-expand");
10
+ function removeBreakout(isLivePage) {
10
11
  return function (state, dispatch) {
11
12
  var node = (0, _findBreakoutNode.findSupportedNodeForBreakout)(state.selection);
12
13
  if (!node) {
@@ -16,6 +17,7 @@ function removeBreakout() {
16
17
  return m.type.name !== 'breakout';
17
18
  });
18
19
  var tr = state.tr.setNodeMarkup(node.pos, node.node.type, node.node.attrs, marks);
20
+ (0, _singlePlayerExpand.updateExpandedState)(tr, node, isLivePage);
19
21
  tr.setMeta('scrollIntoView', false);
20
22
  if (state.selection instanceof _state.NodeSelection) {
21
23
  if (state.selection.$anchor.pos === node.pos) {
@@ -6,7 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.setBreakoutMode = setBreakoutMode;
7
7
  var _state = require("@atlaskit/editor-prosemirror/state");
8
8
  var _findBreakoutNode = require("../utils/find-breakout-node");
9
- function setBreakoutMode(mode) {
9
+ var _singlePlayerExpand = require("../utils/single-player-expand");
10
+ function setBreakoutMode(mode, isLivePage) {
10
11
  return function (state, dispatch) {
11
12
  var node = (0, _findBreakoutNode.findSupportedNodeForBreakout)(state.selection);
12
13
  if (!node) {
@@ -15,6 +16,7 @@ function setBreakoutMode(mode) {
15
16
  var tr = state.tr.setNodeMarkup(node.pos, node.node.type, node.node.attrs, [state.schema.marks.breakout.create({
16
17
  mode: mode
17
18
  })]);
19
+ (0, _singlePlayerExpand.updateExpandedState)(tr, node, isLivePage);
18
20
  tr.setMeta('scrollIntoView', false);
19
21
  if (state.selection instanceof _state.NodeSelection) {
20
22
  if (state.selection.$anchor.pos === node.pos) {
@@ -160,12 +160,14 @@ var LayoutButtonWrapper = function LayoutButtonWrapper(_ref3) {
160
160
  breakoutState = _useSharedPluginState.breakoutState,
161
161
  editorViewModeState = _useSharedPluginState.editorViewModeState;
162
162
  var isViewMode = (editorViewModeState === null || editorViewModeState === void 0 ? void 0 : editorViewModeState.mode) === 'view';
163
+ var isEditMode = (editorViewModeState === null || editorViewModeState === void 0 ? void 0 : editorViewModeState.mode) === 'edit';
163
164
  return !isViewMode ? /*#__PURE__*/_react.default.createElement(_LayoutButton.default, {
164
165
  editorView: editorView,
165
166
  mountPoint: mountPoint,
166
167
  boundariesElement: boundariesElement,
167
168
  scrollableElement: scrollableElement,
168
- node: (_breakoutState$breako = breakoutState === null || breakoutState === void 0 || (_breakoutState$breako2 = breakoutState.breakoutNode) === null || _breakoutState$breako2 === void 0 ? void 0 : _breakoutState$breako2.node) !== null && _breakoutState$breako !== void 0 ? _breakoutState$breako : null
169
+ node: (_breakoutState$breako = breakoutState === null || breakoutState === void 0 || (_breakoutState$breako2 = breakoutState.breakoutNode) === null || _breakoutState$breako2 === void 0 ? void 0 : _breakoutState$breako2.node) !== null && _breakoutState$breako !== void 0 ? _breakoutState$breako : null,
170
+ isLivePage: isEditMode
169
171
  }) : null;
170
172
  };
171
173
  var breakoutPlugin = exports.breakoutPlugin = function breakoutPlugin(_ref4) {
@@ -52,16 +52,17 @@ var LayoutButton = function LayoutButton(_ref) {
52
52
  boundariesElement = _ref.boundariesElement,
53
53
  scrollableElement = _ref.scrollableElement,
54
54
  editorView = _ref.editorView,
55
- node = _ref.node;
55
+ node = _ref.node,
56
+ isLivePage = _ref.isLivePage;
56
57
  var handleClick = (0, _react.useCallback)(function (breakoutMode) {
57
58
  var state = editorView.state,
58
59
  dispatch = editorView.dispatch;
59
60
  if (['wide', 'full-width'].indexOf(breakoutMode) !== -1) {
60
- (0, _setBreakoutMode.setBreakoutMode)(breakoutMode)(state, dispatch);
61
+ (0, _setBreakoutMode.setBreakoutMode)(breakoutMode, isLivePage)(state, dispatch);
61
62
  } else {
62
- (0, _removeBreakout.removeBreakout)()(state, dispatch);
63
+ (0, _removeBreakout.removeBreakout)(isLivePage)(state, dispatch);
63
64
  }
64
- }, [editorView]);
65
+ }, [editorView, isLivePage]);
65
66
  var state = editorView.state;
66
67
  if (!node || !(0, _isBreakoutMarkAllowed.isBreakoutMarkAllowed)(state)) {
67
68
  return null;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.updateExpandedState = void 0;
7
+ var _expand = require("@atlaskit/editor-common/expand");
8
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
9
+ var updateExpandedState = exports.updateExpandedState = function updateExpandedState(tr, node, isLivePage) {
10
+ if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.single-player-expand') && isLivePage) {
11
+ var wasExpandExpanded = _expand.expandedState.get(node.node);
12
+ var newExpand = tr.doc.nodeAt(node.pos);
13
+ if (wasExpandExpanded !== undefined && newExpand) {
14
+ _expand.expandedState.set(newExpand, wasExpandExpanded);
15
+ }
16
+ }
17
+ };
@@ -1,6 +1,7 @@
1
1
  import { NodeSelection } from '@atlaskit/editor-prosemirror/state';
2
2
  import { findSupportedNodeForBreakout } from '../utils/find-breakout-node';
3
- export function removeBreakout() {
3
+ import { updateExpandedState } from '../utils/single-player-expand';
4
+ export function removeBreakout(isLivePage) {
4
5
  return (state, dispatch) => {
5
6
  const node = findSupportedNodeForBreakout(state.selection);
6
7
  if (!node) {
@@ -8,6 +9,7 @@ export function removeBreakout() {
8
9
  }
9
10
  const marks = node.node.marks.filter(m => m.type.name !== 'breakout');
10
11
  const tr = state.tr.setNodeMarkup(node.pos, node.node.type, node.node.attrs, marks);
12
+ updateExpandedState(tr, node, isLivePage);
11
13
  tr.setMeta('scrollIntoView', false);
12
14
  if (state.selection instanceof NodeSelection) {
13
15
  if (state.selection.$anchor.pos === node.pos) {
@@ -1,6 +1,7 @@
1
1
  import { NodeSelection } from '@atlaskit/editor-prosemirror/state';
2
2
  import { findSupportedNodeForBreakout } from '../utils/find-breakout-node';
3
- export function setBreakoutMode(mode) {
3
+ import { updateExpandedState } from '../utils/single-player-expand';
4
+ export function setBreakoutMode(mode, isLivePage) {
4
5
  return (state, dispatch) => {
5
6
  const node = findSupportedNodeForBreakout(state.selection);
6
7
  if (!node) {
@@ -9,6 +10,7 @@ export function setBreakoutMode(mode) {
9
10
  const tr = state.tr.setNodeMarkup(node.pos, node.node.type, node.node.attrs, [state.schema.marks.breakout.create({
10
11
  mode
11
12
  })]);
13
+ updateExpandedState(tr, node, isLivePage);
12
14
  tr.setMeta('scrollIntoView', false);
13
15
  if (state.selection instanceof NodeSelection) {
14
16
  if (state.selection.$anchor.pos === node.pos) {
@@ -151,12 +151,14 @@ const LayoutButtonWrapper = ({
151
151
  editorViewModeState
152
152
  } = useSharedPluginState(api, ['width', 'breakout', 'editorViewMode']);
153
153
  const isViewMode = (editorViewModeState === null || editorViewModeState === void 0 ? void 0 : editorViewModeState.mode) === 'view';
154
+ const isEditMode = (editorViewModeState === null || editorViewModeState === void 0 ? void 0 : editorViewModeState.mode) === 'edit';
154
155
  return !isViewMode ? /*#__PURE__*/React.createElement(LayoutButton, {
155
156
  editorView: editorView,
156
157
  mountPoint: mountPoint,
157
158
  boundariesElement: boundariesElement,
158
159
  scrollableElement: scrollableElement,
159
- node: (_breakoutState$breako = breakoutState === null || breakoutState === void 0 ? void 0 : (_breakoutState$breako2 = breakoutState.breakoutNode) === null || _breakoutState$breako2 === void 0 ? void 0 : _breakoutState$breako2.node) !== null && _breakoutState$breako !== void 0 ? _breakoutState$breako : null
160
+ node: (_breakoutState$breako = breakoutState === null || breakoutState === void 0 ? void 0 : (_breakoutState$breako2 = breakoutState.breakoutNode) === null || _breakoutState$breako2 === void 0 ? void 0 : _breakoutState$breako2.node) !== null && _breakoutState$breako !== void 0 ? _breakoutState$breako : null,
161
+ isLivePage: isEditMode
160
162
  }) : null;
161
163
  };
162
164
  export const breakoutPlugin = ({
@@ -46,7 +46,8 @@ const LayoutButton = ({
46
46
  boundariesElement,
47
47
  scrollableElement,
48
48
  editorView,
49
- node
49
+ node,
50
+ isLivePage
50
51
  }) => {
51
52
  const handleClick = useCallback(breakoutMode => {
52
53
  const {
@@ -54,11 +55,11 @@ const LayoutButton = ({
54
55
  dispatch
55
56
  } = editorView;
56
57
  if (['wide', 'full-width'].indexOf(breakoutMode) !== -1) {
57
- setBreakoutMode(breakoutMode)(state, dispatch);
58
+ setBreakoutMode(breakoutMode, isLivePage)(state, dispatch);
58
59
  } else {
59
- removeBreakout()(state, dispatch);
60
+ removeBreakout(isLivePage)(state, dispatch);
60
61
  }
61
- }, [editorView]);
62
+ }, [editorView, isLivePage]);
62
63
  const {
63
64
  state
64
65
  } = editorView;
@@ -0,0 +1,11 @@
1
+ import { expandedState } from '@atlaskit/editor-common/expand';
2
+ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
3
+ export const updateExpandedState = (tr, node, isLivePage) => {
4
+ if (getBooleanFF('platform.editor.single-player-expand') && isLivePage) {
5
+ const wasExpandExpanded = expandedState.get(node.node);
6
+ const newExpand = tr.doc.nodeAt(node.pos);
7
+ if (wasExpandExpanded !== undefined && newExpand) {
8
+ expandedState.set(newExpand, wasExpandExpanded);
9
+ }
10
+ }
11
+ };
@@ -1,6 +1,7 @@
1
1
  import { NodeSelection } from '@atlaskit/editor-prosemirror/state';
2
2
  import { findSupportedNodeForBreakout } from '../utils/find-breakout-node';
3
- export function removeBreakout() {
3
+ import { updateExpandedState } from '../utils/single-player-expand';
4
+ export function removeBreakout(isLivePage) {
4
5
  return function (state, dispatch) {
5
6
  var node = findSupportedNodeForBreakout(state.selection);
6
7
  if (!node) {
@@ -10,6 +11,7 @@ export function removeBreakout() {
10
11
  return m.type.name !== 'breakout';
11
12
  });
12
13
  var tr = state.tr.setNodeMarkup(node.pos, node.node.type, node.node.attrs, marks);
14
+ updateExpandedState(tr, node, isLivePage);
13
15
  tr.setMeta('scrollIntoView', false);
14
16
  if (state.selection instanceof NodeSelection) {
15
17
  if (state.selection.$anchor.pos === node.pos) {
@@ -1,6 +1,7 @@
1
1
  import { NodeSelection } from '@atlaskit/editor-prosemirror/state';
2
2
  import { findSupportedNodeForBreakout } from '../utils/find-breakout-node';
3
- export function setBreakoutMode(mode) {
3
+ import { updateExpandedState } from '../utils/single-player-expand';
4
+ export function setBreakoutMode(mode, isLivePage) {
4
5
  return function (state, dispatch) {
5
6
  var node = findSupportedNodeForBreakout(state.selection);
6
7
  if (!node) {
@@ -9,6 +10,7 @@ export function setBreakoutMode(mode) {
9
10
  var tr = state.tr.setNodeMarkup(node.pos, node.node.type, node.node.attrs, [state.schema.marks.breakout.create({
10
11
  mode: mode
11
12
  })]);
13
+ updateExpandedState(tr, node, isLivePage);
12
14
  tr.setMeta('scrollIntoView', false);
13
15
  if (state.selection instanceof NodeSelection) {
14
16
  if (state.selection.$anchor.pos === node.pos) {
@@ -153,12 +153,14 @@ var LayoutButtonWrapper = function LayoutButtonWrapper(_ref3) {
153
153
  breakoutState = _useSharedPluginState.breakoutState,
154
154
  editorViewModeState = _useSharedPluginState.editorViewModeState;
155
155
  var isViewMode = (editorViewModeState === null || editorViewModeState === void 0 ? void 0 : editorViewModeState.mode) === 'view';
156
+ var isEditMode = (editorViewModeState === null || editorViewModeState === void 0 ? void 0 : editorViewModeState.mode) === 'edit';
156
157
  return !isViewMode ? /*#__PURE__*/React.createElement(LayoutButton, {
157
158
  editorView: editorView,
158
159
  mountPoint: mountPoint,
159
160
  boundariesElement: boundariesElement,
160
161
  scrollableElement: scrollableElement,
161
- node: (_breakoutState$breako = breakoutState === null || breakoutState === void 0 || (_breakoutState$breako2 = breakoutState.breakoutNode) === null || _breakoutState$breako2 === void 0 ? void 0 : _breakoutState$breako2.node) !== null && _breakoutState$breako !== void 0 ? _breakoutState$breako : null
162
+ node: (_breakoutState$breako = breakoutState === null || breakoutState === void 0 || (_breakoutState$breako2 = breakoutState.breakoutNode) === null || _breakoutState$breako2 === void 0 ? void 0 : _breakoutState$breako2.node) !== null && _breakoutState$breako !== void 0 ? _breakoutState$breako : null,
163
+ isLivePage: isEditMode
162
164
  }) : null;
163
165
  };
164
166
  export var breakoutPlugin = function breakoutPlugin(_ref4) {
@@ -44,16 +44,17 @@ var LayoutButton = function LayoutButton(_ref) {
44
44
  boundariesElement = _ref.boundariesElement,
45
45
  scrollableElement = _ref.scrollableElement,
46
46
  editorView = _ref.editorView,
47
- node = _ref.node;
47
+ node = _ref.node,
48
+ isLivePage = _ref.isLivePage;
48
49
  var handleClick = useCallback(function (breakoutMode) {
49
50
  var state = editorView.state,
50
51
  dispatch = editorView.dispatch;
51
52
  if (['wide', 'full-width'].indexOf(breakoutMode) !== -1) {
52
- setBreakoutMode(breakoutMode)(state, dispatch);
53
+ setBreakoutMode(breakoutMode, isLivePage)(state, dispatch);
53
54
  } else {
54
- removeBreakout()(state, dispatch);
55
+ removeBreakout(isLivePage)(state, dispatch);
55
56
  }
56
- }, [editorView]);
57
+ }, [editorView, isLivePage]);
57
58
  var state = editorView.state;
58
59
  if (!node || !isBreakoutMarkAllowed(state)) {
59
60
  return null;
@@ -0,0 +1,11 @@
1
+ import { expandedState } from '@atlaskit/editor-common/expand';
2
+ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
3
+ export var updateExpandedState = function updateExpandedState(tr, node, isLivePage) {
4
+ if (getBooleanFF('platform.editor.single-player-expand') && isLivePage) {
5
+ var wasExpandExpanded = expandedState.get(node.node);
6
+ var newExpand = tr.doc.nodeAt(node.pos);
7
+ if (wasExpandExpanded !== undefined && newExpand) {
8
+ expandedState.set(newExpand, wasExpandExpanded);
9
+ }
10
+ }
11
+ };
@@ -1,2 +1,2 @@
1
1
  import type { Command } from '@atlaskit/editor-common/types';
2
- export declare function removeBreakout(): Command;
2
+ export declare function removeBreakout(isLivePage?: boolean): Command;
@@ -1,2 +1,2 @@
1
1
  import type { BreakoutMode, Command } from '@atlaskit/editor-common/types';
2
- export declare function setBreakoutMode(mode: BreakoutMode): Command;
2
+ export declare function setBreakoutMode(mode: BreakoutMode, isLivePage?: boolean): Command;
@@ -9,6 +9,7 @@ export interface Props {
9
9
  boundariesElement?: HTMLElement;
10
10
  scrollableElement?: HTMLElement;
11
11
  handleClick?: Function;
12
+ isLivePage?: boolean;
12
13
  }
13
14
  declare const _default: import("react").FC<import("react-intl-next").WithIntlProps<Props & WrappedComponentProps>> & {
14
15
  WrappedComponent: import("react").ComponentType<Props & WrappedComponentProps>;
@@ -0,0 +1,3 @@
1
+ import type { Transaction } from '@atlaskit/editor-prosemirror/dist/types/state';
2
+ import type { ContentNodeWithPos } from '@atlaskit/editor-prosemirror/dist/types/utils';
3
+ export declare const updateExpandedState: (tr: Transaction, node: ContentNodeWithPos, isLivePage?: boolean) => void;
@@ -1,2 +1,2 @@
1
1
  import type { Command } from '@atlaskit/editor-common/types';
2
- export declare function removeBreakout(): Command;
2
+ export declare function removeBreakout(isLivePage?: boolean): Command;
@@ -1,2 +1,2 @@
1
1
  import type { BreakoutMode, Command } from '@atlaskit/editor-common/types';
2
- export declare function setBreakoutMode(mode: BreakoutMode): Command;
2
+ export declare function setBreakoutMode(mode: BreakoutMode, isLivePage?: boolean): Command;
@@ -9,6 +9,7 @@ export interface Props {
9
9
  boundariesElement?: HTMLElement;
10
10
  scrollableElement?: HTMLElement;
11
11
  handleClick?: Function;
12
+ isLivePage?: boolean;
12
13
  }
13
14
  declare const _default: import("react").FC<import("react-intl-next").WithIntlProps<Props & WrappedComponentProps>> & {
14
15
  WrappedComponent: import("react").ComponentType<Props & WrappedComponentProps>;
@@ -0,0 +1,3 @@
1
+ import type { Transaction } from '@atlaskit/editor-prosemirror/dist/types/state';
2
+ import type { ContentNodeWithPos } from '@atlaskit/editor-prosemirror/dist/types/utils';
3
+ export declare const updateExpandedState: (tr: Transaction, node: ContentNodeWithPos, isLivePage?: boolean) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-breakout",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "description": "Breakout plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -31,15 +31,16 @@
31
31
  ".": "./src/index.ts"
32
32
  },
33
33
  "dependencies": {
34
- "@atlaskit/adf-schema": "^35.9.2",
35
- "@atlaskit/editor-common": "^78.31.0",
34
+ "@atlaskit/adf-schema": "^35.12.1",
35
+ "@atlaskit/editor-common": "^78.36.0",
36
36
  "@atlaskit/editor-plugin-editor-viewmode": "^1.1.0",
37
37
  "@atlaskit/editor-plugin-width": "^1.1.0",
38
38
  "@atlaskit/editor-prosemirror": "4.0.0",
39
- "@atlaskit/editor-shared-styles": "^2.9.0",
39
+ "@atlaskit/editor-shared-styles": "^2.10.0",
40
40
  "@atlaskit/icon": "^22.1.0",
41
+ "@atlaskit/platform-feature-flags": "^0.2.0",
41
42
  "@atlaskit/theme": "^12.7.0",
42
- "@atlaskit/tokens": "^1.43.0",
43
+ "@atlaskit/tokens": "^1.44.0",
43
44
  "@babel/runtime": "^7.0.0",
44
45
  "@emotion/react": "^11.7.1"
45
46
  },
@@ -94,5 +95,10 @@
94
95
  ]
95
96
  }
96
97
  },
97
- "prettier": "@atlassian/atlassian-frontend-prettier-config-1.0.0"
98
+ "prettier": "@atlassian/atlassian-frontend-prettier-config-1.0.0",
99
+ "platform-feature-flags": {
100
+ "platform.editor.single-player-expand": {
101
+ "type": "boolean"
102
+ }
103
+ }
98
104
  }