@atlaskit/editor-plugin-layout 11.1.7 → 12.0.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 (35) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/cjs/layoutPlugin.js +7 -10
  3. package/dist/cjs/pm-plugins/actions.js +82 -49
  4. package/dist/cjs/pm-plugins/consts.js +2 -1
  5. package/dist/cjs/pm-plugins/keymap.js +19 -5
  6. package/dist/cjs/pm-plugins/main.js +28 -0
  7. package/dist/cjs/pm-plugins/utils/layout-column-selection.js +2 -1
  8. package/dist/cjs/ui/LayoutColumnMenu/DeleteColumnDropdownItem.js +4 -1
  9. package/dist/cjs/ui/LayoutColumnMenu/InsertColumnDropdownItem.js +5 -1
  10. package/dist/cjs/ui/LayoutColumnMenu/VerticalAlignDropdownItem.js +3 -1
  11. package/dist/es2019/layoutPlugin.js +8 -11
  12. package/dist/es2019/pm-plugins/actions.js +42 -14
  13. package/dist/es2019/pm-plugins/consts.js +1 -0
  14. package/dist/es2019/pm-plugins/keymap.js +19 -5
  15. package/dist/es2019/pm-plugins/main.js +30 -0
  16. package/dist/es2019/pm-plugins/utils/layout-column-selection.js +2 -1
  17. package/dist/es2019/ui/LayoutColumnMenu/DeleteColumnDropdownItem.js +4 -1
  18. package/dist/es2019/ui/LayoutColumnMenu/InsertColumnDropdownItem.js +5 -1
  19. package/dist/es2019/ui/LayoutColumnMenu/VerticalAlignDropdownItem.js +3 -1
  20. package/dist/esm/layoutPlugin.js +8 -11
  21. package/dist/esm/pm-plugins/actions.js +84 -51
  22. package/dist/esm/pm-plugins/consts.js +1 -0
  23. package/dist/esm/pm-plugins/keymap.js +19 -5
  24. package/dist/esm/pm-plugins/main.js +28 -0
  25. package/dist/esm/pm-plugins/utils/layout-column-selection.js +2 -1
  26. package/dist/esm/ui/LayoutColumnMenu/DeleteColumnDropdownItem.js +4 -1
  27. package/dist/esm/ui/LayoutColumnMenu/InsertColumnDropdownItem.js +5 -1
  28. package/dist/esm/ui/LayoutColumnMenu/VerticalAlignDropdownItem.js +3 -1
  29. package/dist/types/layoutPluginType.d.ts +4 -5
  30. package/dist/types/pm-plugins/actions.d.ts +15 -4
  31. package/dist/types/pm-plugins/consts.d.ts +2 -0
  32. package/dist/types-ts4.5/layoutPluginType.d.ts +4 -5
  33. package/dist/types-ts4.5/pm-plugins/actions.d.ts +15 -4
  34. package/dist/types-ts4.5/pm-plugins/consts.d.ts +2 -0
  35. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # @atlaskit/editor-plugin-layout
2
2
 
3
+ ## 12.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [`19c2b7d1cbc13`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/19c2b7d1cbc13) -
8
+ Add analytics for layout column menu interactions
9
+
10
+ ### Minor Changes
11
+
12
+ - [`f95240aab2e55`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/f95240aab2e55) -
13
+ Promote layout column vertical alignment in ADF schema
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies
18
+
19
+ ## 11.1.10
20
+
21
+ ### Patch Changes
22
+
23
+ - Updated dependencies
24
+
25
+ ## 11.1.9
26
+
27
+ ### Patch Changes
28
+
29
+ - Updated dependencies
30
+
31
+ ## 11.1.8
32
+
33
+ ### Patch Changes
34
+
35
+ - Updated dependencies
36
+
3
37
  ## 11.1.7
4
38
 
5
39
  ### Patch Changes
@@ -96,10 +96,7 @@ var layoutPlugin = exports.layoutPlugin = function layoutPlugin(_ref) {
96
96
  node: (0, _experiments.editorExperiment)('advanced_layouts', true) ? (0, _platformFeatureFlags.fg)('platform_editor_adf_with_localid') ? _schema.layoutSectionWithSingleColumnLocalId : _schema.layoutSectionWithSingleColumn : (0, _platformFeatureFlags.fg)('platform_editor_adf_with_localid') ? _adfSchema.layoutSectionWithLocalId : _adfSchema.layoutSection
97
97
  }, {
98
98
  name: 'layoutColumn',
99
- node: (0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_layout_column_menu', 'isEnabled', true) ?
100
- // `layoutColumnStage0` includes both `valign` and `localId` attrs, so it remains
101
- // compatible with `platform_editor_adf_with_localid` when both flags are enabled.
102
- _adfSchema.layoutColumnStage0 : (0, _platformFeatureFlags.fg)('platform_editor_adf_with_localid') ? _adfSchema.layoutColumnWithLocalId : _adfSchema.layoutColumn
99
+ node: (0, _platformFeatureFlags.fg)('platform_editor_adf_with_localid') ? _adfSchema.layoutColumnWithLocalId : _adfSchema.layoutColumn
103
100
  }];
104
101
  },
105
102
  pmPlugins: function pmPlugins() {
@@ -390,22 +387,22 @@ var layoutPlugin = exports.layoutPlugin = function layoutPlugin(_ref) {
390
387
  return _pluginKey.pluginKey.getState(editorState);
391
388
  },
392
389
  commands: {
393
- deleteLayoutColumn: function deleteLayoutColumn(inputMethod) {
390
+ deleteLayoutColumn: function deleteLayoutColumn(options) {
394
391
  var _api$analytics5;
395
- return (0, _actions.deleteLayoutColumn)(api === null || api === void 0 || (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions, api, inputMethod);
392
+ return (0, _actions.deleteLayoutColumn)(options, api === null || api === void 0 || (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions, api);
396
393
  },
397
394
  distributeLayoutColumns: function distributeLayoutColumns(options) {
398
395
  var _api$analytics6;
399
396
  return (0, _actions.distributeLayoutColumns)(api === null || api === void 0 || (_api$analytics6 = api.analytics) === null || _api$analytics6 === void 0 ? void 0 : _api$analytics6.actions, api)(options);
400
397
  },
401
- insertLayoutColumn: function insertLayoutColumn(side, inputMethod) {
398
+ insertLayoutColumn: function insertLayoutColumn(options) {
402
399
  var _api$analytics7;
403
- return (0, _actions.insertLayoutColumn)(side, api === null || api === void 0 || (_api$analytics7 = api.analytics) === null || _api$analytics7 === void 0 ? void 0 : _api$analytics7.actions, api, inputMethod);
400
+ return (0, _actions.insertLayoutColumn)(options, api === null || api === void 0 || (_api$analytics7 = api.analytics) === null || _api$analytics7 === void 0 ? void 0 : _api$analytics7.actions, api);
404
401
  },
405
402
  setLayoutColumnDangerPreview: _actions.setLayoutColumnDangerPreview,
406
- setLayoutColumnValign: function setLayoutColumnValign(valign) {
403
+ setLayoutColumnValign: function setLayoutColumnValign(options) {
407
404
  var _api$analytics8;
408
- return (0, _actions.setLayoutColumnValign)(valign, api === null || api === void 0 || (_api$analytics8 = api.analytics) === null || _api$analytics8 === void 0 ? void 0 : _api$analytics8.actions, api);
405
+ return (0, _actions.setLayoutColumnValign)(options, api === null || api === void 0 || (_api$analytics8 = api.analytics) === null || _api$analytics8 === void 0 ? void 0 : _api$analytics8.actions, api);
409
406
  },
410
407
  toggleLayoutColumnMenu: _actions.toggleLayoutColumnMenu
411
408
  }
@@ -554,6 +554,18 @@ var formatLayoutName = function formatLayoutName(layout) {
554
554
  }
555
555
  };
556
556
  var LAYOUT_COLUMN_INSERT_META = exports.LAYOUT_COLUMN_INSERT_META = 'layoutColumnInsert';
557
+ var getPreviousLayoutColumnValign = function getPreviousLayoutColumnValign(selectedLayoutColumns) {
558
+ var _selectedLayoutColumn;
559
+ var firstValign = (0, _layoutColumnSelection.getLayoutColumnValign)((_selectedLayoutColumn = selectedLayoutColumns[0]) === null || _selectedLayoutColumn === void 0 ? void 0 : _selectedLayoutColumn.node);
560
+ var hasMixedValign = selectedLayoutColumns.some(function (_ref4) {
561
+ var node = _ref4.node;
562
+ return (0, _layoutColumnSelection.getLayoutColumnValign)(node) !== firstValign;
563
+ });
564
+ return hasMixedValign ? 'mixed' : firstValign !== null && firstValign !== void 0 ? firstValign : _consts.DEFAULT_LAYOUT_COLUMN_VALIGN;
565
+ };
566
+ var hasLayoutColumnContent = function hasLayoutColumnContent(node) {
567
+ return !(0, _utils.isEmptyDocument)(node);
568
+ };
557
569
  var mapLayoutColumnPreservedSelection = function mapLayoutColumnPreservedSelection(tr, api) {
558
570
  var insertMeta = tr.getMeta(LAYOUT_COLUMN_INSERT_META);
559
571
  if (insertMeta) {
@@ -582,8 +594,8 @@ function getEffectiveMaxLayoutColumns() {
582
594
  }
583
595
  var insertLayoutColumnAt = function insertLayoutColumnAt(side, editorAnalyticsAPI) {
584
596
  var inputMethod = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _analytics.INPUT_METHOD.LAYOUT_COLUMN_MENU;
585
- return function (_ref4) {
586
- var tr = _ref4.tr;
597
+ return function (_ref5) {
598
+ var tr = _ref5.tr;
587
599
  if (!(0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_layout_column_menu', 'isEnabled', true)) {
588
600
  return null;
589
601
  }
@@ -645,9 +657,10 @@ var insertLayoutColumnAt = function insertLayoutColumnAt(side, editorAnalyticsAP
645
657
  actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
646
658
  actionSubjectId: _analytics.ACTION_SUBJECT_ID.LAYOUT_COLUMN,
647
659
  attributes: {
648
- columnCount: redistributedWidths.length,
649
660
  endIndex: endIndex,
650
661
  inputMethod: inputMethod,
662
+ newColumnCount: redistributedWidths.length,
663
+ previousColumnCount: layoutSectionNode.childCount,
651
664
  selectedCount: selectedColumnCount,
652
665
  side: side,
653
666
  startIndex: startIndex
@@ -658,10 +671,12 @@ var insertLayoutColumnAt = function insertLayoutColumnAt(side, editorAnalyticsAP
658
671
  return tr;
659
672
  };
660
673
  };
661
- var insertLayoutColumn = exports.insertLayoutColumn = function insertLayoutColumn(side, editorAnalyticsAPI, api) {
662
- var inputMethod = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _analytics.INPUT_METHOD.LAYOUT_COLUMN_MENU;
663
- return function (_ref5) {
664
- var tr = _ref5.tr;
674
+ var insertLayoutColumn = exports.insertLayoutColumn = function insertLayoutColumn(_ref6, editorAnalyticsAPI, api) {
675
+ var side = _ref6.side,
676
+ _ref6$inputMethod = _ref6.inputMethod,
677
+ inputMethod = _ref6$inputMethod === void 0 ? _analytics.INPUT_METHOD.LAYOUT_COLUMN_MENU : _ref6$inputMethod;
678
+ return function (_ref7) {
679
+ var tr = _ref7.tr;
665
680
  var result = insertLayoutColumnAt(side, editorAnalyticsAPI, inputMethod)({
666
681
  tr: tr
667
682
  });
@@ -671,9 +686,12 @@ var insertLayoutColumn = exports.insertLayoutColumn = function insertLayoutColum
671
686
  return result;
672
687
  };
673
688
  };
674
- var setLayoutColumnValign = exports.setLayoutColumnValign = function setLayoutColumnValign(valign, editorAnalyticsAPI, api) {
675
- return function (_ref6) {
676
- var tr = _ref6.tr;
689
+ var setLayoutColumnValign = exports.setLayoutColumnValign = function setLayoutColumnValign(_ref8, editorAnalyticsAPI, api) {
690
+ var valign = _ref8.valign,
691
+ _ref8$inputMethod = _ref8.inputMethod,
692
+ inputMethod = _ref8$inputMethod === void 0 ? _analytics.INPUT_METHOD.LAYOUT_COLUMN_MENU : _ref8$inputMethod;
693
+ return function (_ref9) {
694
+ var tr = _ref9.tr;
677
695
  if (!(0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_layout_column_menu', 'isEnabled', true)) {
678
696
  return null;
679
697
  }
@@ -681,20 +699,22 @@ var setLayoutColumnValign = exports.setLayoutColumnValign = function setLayoutCo
681
699
  if (!selectedLayoutColumnsResult) {
682
700
  return null;
683
701
  }
684
- var startIndex = selectedLayoutColumnsResult.startIndex,
702
+ var layoutSectionNode = selectedLayoutColumnsResult.layoutSectionNode,
703
+ startIndex = selectedLayoutColumnsResult.startIndex,
685
704
  endIndex = selectedLayoutColumnsResult.endIndex,
686
705
  selectedLayoutColumns = selectedLayoutColumnsResult.selectedLayoutColumns;
687
- var columnsToUpdate = selectedLayoutColumns.filter(function (_ref7) {
688
- var node = _ref7.node;
689
- return node.attrs.valign !== valign;
706
+ var previousValign = getPreviousLayoutColumnValign(selectedLayoutColumns);
707
+ var columnsToUpdate = selectedLayoutColumns.filter(function (_ref0) {
708
+ var node = _ref0.node;
709
+ return (0, _layoutColumnSelection.getLayoutColumnValign)(node) !== valign;
690
710
  });
691
711
  if (columnsToUpdate.length === 0) {
692
712
  return null;
693
713
  }
694
714
  var updatedColumnCount = columnsToUpdate.length;
695
- columnsToUpdate.forEach(function (_ref8) {
696
- var node = _ref8.node,
697
- pos = _ref8.pos;
715
+ columnsToUpdate.forEach(function (_ref1) {
716
+ var node = _ref1.node,
717
+ pos = _ref1.pos;
698
718
  tr.setNodeMarkup(pos, node.type, _objectSpread(_objectSpread({}, node.attrs), {}, {
699
719
  valign: valign
700
720
  }));
@@ -704,8 +724,10 @@ var setLayoutColumnValign = exports.setLayoutColumnValign = function setLayoutCo
704
724
  actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
705
725
  actionSubjectId: _analytics.ACTION_SUBJECT_ID.LAYOUT_COLUMN,
706
726
  attributes: {
727
+ columnCount: layoutSectionNode.childCount,
707
728
  endIndex: endIndex,
708
- inputMethod: _analytics.INPUT_METHOD.LAYOUT_COLUMN_MENU,
729
+ inputMethod: inputMethod,
730
+ previousValign: previousValign,
709
731
  selectedCount: selectedLayoutColumns.length,
710
732
  startIndex: startIndex,
711
733
  updatedCount: updatedColumnCount,
@@ -720,13 +742,13 @@ var setLayoutColumnValign = exports.setLayoutColumnValign = function setLayoutCo
720
742
  };
721
743
  var distributeLayoutColumns = exports.distributeLayoutColumns = function distributeLayoutColumns(editorAnalyticsAPI, api) {
722
744
  return function () {
723
- var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
724
- _ref9$inputMethod = _ref9.inputMethod,
725
- inputMethod = _ref9$inputMethod === void 0 ? _analytics.INPUT_METHOD.LAYOUT_COLUMN_MENU : _ref9$inputMethod,
726
- _ref9$target = _ref9.target,
727
- target = _ref9$target === void 0 ? 'selectedColumns' : _ref9$target;
728
- return function (_ref0) {
729
- var tr = _ref0.tr;
745
+ var _ref10 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
746
+ _ref10$inputMethod = _ref10.inputMethod,
747
+ inputMethod = _ref10$inputMethod === void 0 ? _analytics.INPUT_METHOD.LAYOUT_COLUMN_MENU : _ref10$inputMethod,
748
+ _ref10$target = _ref10.target,
749
+ target = _ref10$target === void 0 ? 'selectedColumns' : _ref10$target;
750
+ return function (_ref11) {
751
+ var tr = _ref11.tr;
730
752
  if (!(0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_layout_column_menu', 'isEnabled', true)) {
731
753
  return null;
732
754
  }
@@ -741,8 +763,8 @@ var distributeLayoutColumns = exports.distributeLayoutColumns = function distrib
741
763
  var existingWidths = (0, _utils.mapChildren)(layoutSectionNode, function (column) {
742
764
  return column.attrs.width;
743
765
  });
744
- var selectedWidths = selectedLayoutColumns.map(function (_ref1) {
745
- var node = _ref1.node;
766
+ var selectedWidths = selectedLayoutColumns.map(function (_ref12) {
767
+ var node = _ref12.node;
746
768
  return node.attrs.width;
747
769
  });
748
770
  var distribution = (0, _layoutColumnDistribution.calculateDistribution)(selectedWidths);
@@ -774,9 +796,9 @@ var distributeLayoutColumns = exports.distributeLayoutColumns = function distrib
774
796
  });
775
797
 
776
798
  // Apply widths via setNodeMarkup per selected column — keeps nodes in place (preserves identity, marks, decorations)
777
- selectedLayoutColumns.forEach(function (_ref10, i) {
778
- var node = _ref10.node,
779
- pos = _ref10.pos;
799
+ selectedLayoutColumns.forEach(function (_ref13, i) {
800
+ var node = _ref13.node,
801
+ pos = _ref13.pos;
780
802
  var colIdx = startIndex + i;
781
803
  tr.setNodeMarkup(pos, node.type, _objectSpread(_objectSpread({}, node.attrs), {}, {
782
804
  width: newWidths[colIdx]
@@ -791,7 +813,8 @@ var distributeLayoutColumns = exports.distributeLayoutColumns = function distrib
791
813
  endIndex: endIndex,
792
814
  inputMethod: inputMethod,
793
815
  selectedCount: selectedLayoutColumns.length,
794
- startIndex: startIndex
816
+ startIndex: startIndex,
817
+ target: target
795
818
  },
796
819
  eventType: _analytics.EVENT_TYPE.TRACK
797
820
  })(tr);
@@ -801,12 +824,12 @@ var distributeLayoutColumns = exports.distributeLayoutColumns = function distrib
801
824
  };
802
825
  };
803
826
  };
804
- var toggleLayoutColumnMenu = exports.toggleLayoutColumnMenu = function toggleLayoutColumnMenu(_ref11) {
805
- var anchorPos = _ref11.anchorPos,
806
- isOpen = _ref11.isOpen,
807
- openedViaKeyboard = _ref11.openedViaKeyboard;
808
- return function (_ref12) {
809
- var tr = _ref12.tr;
827
+ var toggleLayoutColumnMenu = exports.toggleLayoutColumnMenu = function toggleLayoutColumnMenu(_ref14) {
828
+ var anchorPos = _ref14.anchorPos,
829
+ isOpen = _ref14.isOpen,
830
+ openedViaKeyboard = _ref14.openedViaKeyboard;
831
+ return function (_ref15) {
832
+ var tr = _ref15.tr;
810
833
  tr.setMeta('toggleLayoutColumnMenu', {
811
834
  anchorPos: anchorPos,
812
835
  isOpen: isOpen,
@@ -817,25 +840,29 @@ var toggleLayoutColumnMenu = exports.toggleLayoutColumnMenu = function toggleLay
817
840
  };
818
841
  };
819
842
  var setLayoutColumnDangerPreview = exports.setLayoutColumnDangerPreview = function setLayoutColumnDangerPreview(show) {
820
- return function (_ref13) {
821
- var _selectedLayoutColumn;
822
- var tr = _ref13.tr;
843
+ return function (_ref16) {
844
+ var _selectedLayoutColumn2;
845
+ var tr = _ref16.tr;
823
846
  var selectedLayoutColumnsResult = (0, _layoutColumnSelection.getSelectedLayoutColumnsFromSelection)(tr.selection);
824
- var positions = show ? (_selectedLayoutColumn = selectedLayoutColumnsResult === null || selectedLayoutColumnsResult === void 0 ? void 0 : selectedLayoutColumnsResult.selectedLayoutColumns.map(function (_ref14) {
825
- var pos = _ref14.pos;
847
+ var positions = show ? (_selectedLayoutColumn2 = selectedLayoutColumnsResult === null || selectedLayoutColumnsResult === void 0 ? void 0 : selectedLayoutColumnsResult.selectedLayoutColumns.map(function (_ref17) {
848
+ var pos = _ref17.pos;
826
849
  return pos;
827
- })) !== null && _selectedLayoutColumn !== void 0 ? _selectedLayoutColumn : [] : null;
850
+ })) !== null && _selectedLayoutColumn2 !== void 0 ? _selectedLayoutColumn2 : [] : null;
828
851
  tr.setMeta('layoutColumnDangerPreview', positions);
829
852
  tr.setMeta('addToHistory', false);
830
853
  tr.setMeta('scrollIntoView', false);
831
854
  return tr;
832
855
  };
833
856
  };
834
- var deleteLayoutColumn = exports.deleteLayoutColumn = function deleteLayoutColumn(editorAnalyticsAPI, api) {
835
- var inputMethod = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _analytics.INPUT_METHOD.LAYOUT_COLUMN_MENU;
836
- return function (_ref15) {
857
+ var deleteLayoutColumn = exports.deleteLayoutColumn = function deleteLayoutColumn() {
858
+ var _ref18 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
859
+ _ref18$inputMethod = _ref18.inputMethod,
860
+ inputMethod = _ref18$inputMethod === void 0 ? _analytics.INPUT_METHOD.LAYOUT_COLUMN_MENU : _ref18$inputMethod;
861
+ var editorAnalyticsAPI = arguments.length > 1 ? arguments[1] : undefined;
862
+ var api = arguments.length > 2 ? arguments[2] : undefined;
863
+ return function (_ref19) {
837
864
  var _api$blockControls4;
838
- var tr = _ref15.tr;
865
+ var tr = _ref19.tr;
839
866
  if (!(0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_layout_column_menu', 'isEnabled', true)) {
840
867
  return null;
841
868
  }
@@ -848,15 +875,21 @@ var deleteLayoutColumn = exports.deleteLayoutColumn = function deleteLayoutColum
848
875
  selectedLayoutColumns = selectedLayoutColumnsResult.selectedLayoutColumns,
849
876
  startIndex = selectedLayoutColumnsResult.startIndex,
850
877
  endIndex = selectedLayoutColumnsResult.endIndex;
851
- var emitDeleteColumnAnalytics = function emitDeleteColumnAnalytics(columnCount) {
878
+ var hadContent = selectedLayoutColumns.some(function (_ref20) {
879
+ var node = _ref20.node;
880
+ return hasLayoutColumnContent(node);
881
+ });
882
+ var emitDeleteColumnAnalytics = function emitDeleteColumnAnalytics(newColumnCount) {
852
883
  editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent({
853
884
  action: _analytics.ACTION.DELETED,
854
885
  actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
855
886
  actionSubjectId: _analytics.ACTION_SUBJECT_ID.LAYOUT_COLUMN,
856
887
  attributes: {
857
- columnCount: columnCount,
858
888
  endIndex: endIndex,
889
+ hadContent: hadContent,
859
890
  inputMethod: inputMethod,
891
+ newColumnCount: newColumnCount,
892
+ previousColumnCount: layoutSectionNode.childCount,
860
893
  selectedCount: selectedLayoutColumns.length,
861
894
  startIndex: startIndex
862
895
  },
@@ -3,10 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.MIN_LAYOUT_COLUMN_WIDTH_PERCENT = exports.MAX_STANDARD_LAYOUT_COLUMNS = exports.MAX_LAYOUT_COLUMNS = exports.EVEN_DISTRIBUTED_COL_WIDTHS = void 0;
6
+ exports.MIN_LAYOUT_COLUMN_WIDTH_PERCENT = exports.MAX_STANDARD_LAYOUT_COLUMNS = exports.MAX_LAYOUT_COLUMNS = exports.EVEN_DISTRIBUTED_COL_WIDTHS = exports.DEFAULT_LAYOUT_COLUMN_VALIGN = void 0;
7
7
  var MAX_STANDARD_LAYOUT_COLUMNS = exports.MAX_STANDARD_LAYOUT_COLUMNS = 3;
8
8
  var MAX_LAYOUT_COLUMNS = exports.MAX_LAYOUT_COLUMNS = 5;
9
9
  var MIN_LAYOUT_COLUMN_WIDTH_PERCENT = exports.MIN_LAYOUT_COLUMN_WIDTH_PERCENT = 5;
10
+ var DEFAULT_LAYOUT_COLUMN_VALIGN = exports.DEFAULT_LAYOUT_COLUMN_VALIGN = 'top';
10
11
  var EVEN_DISTRIBUTED_COL_WIDTHS = exports.EVEN_DISTRIBUTED_COL_WIDTHS = {
11
12
  1: 100,
12
13
  2: 50,
@@ -21,11 +21,25 @@ function keymapPlugin(_ref) {
21
21
  var _api$analytics, _api$analytics2, _api$analytics3, _api$analytics4, _api$analytics5;
22
22
  var api = _ref.api;
23
23
  var list = {};
24
- bindLayoutColumnShortcut(_keymaps.addColumnBefore.common, (0, _actions.insertLayoutColumn)('left', api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions, api, _analytics.INPUT_METHOD.KEYBOARD), list);
25
- bindLayoutColumnShortcut(_keymaps.addColumnBeforeVO.common, (0, _actions.insertLayoutColumn)('left', api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions, api, _analytics.INPUT_METHOD.KEYBOARD), list);
26
- bindLayoutColumnShortcut(_keymaps.addColumnAfter.common, (0, _actions.insertLayoutColumn)('right', api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions, api, _analytics.INPUT_METHOD.KEYBOARD), list);
27
- bindLayoutColumnShortcut(_keymaps.addColumnAfterVO.common, (0, _actions.insertLayoutColumn)('right', api === null || api === void 0 || (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions, api, _analytics.INPUT_METHOD.KEYBOARD), list);
28
- bindLayoutColumnShortcut(_keymaps.deleteColumn.common, (0, _actions.deleteLayoutColumn)(api === null || api === void 0 || (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions, api, _analytics.INPUT_METHOD.KEYBOARD), list);
24
+ bindLayoutColumnShortcut(_keymaps.addColumnBefore.common, (0, _actions.insertLayoutColumn)({
25
+ side: 'left',
26
+ inputMethod: _analytics.INPUT_METHOD.SHORTCUT
27
+ }, api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions, api), list);
28
+ bindLayoutColumnShortcut(_keymaps.addColumnBeforeVO.common, (0, _actions.insertLayoutColumn)({
29
+ side: 'left',
30
+ inputMethod: _analytics.INPUT_METHOD.SHORTCUT
31
+ }, api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions, api), list);
32
+ bindLayoutColumnShortcut(_keymaps.addColumnAfter.common, (0, _actions.insertLayoutColumn)({
33
+ side: 'right',
34
+ inputMethod: _analytics.INPUT_METHOD.SHORTCUT
35
+ }, api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions, api), list);
36
+ bindLayoutColumnShortcut(_keymaps.addColumnAfterVO.common, (0, _actions.insertLayoutColumn)({
37
+ side: 'right',
38
+ inputMethod: _analytics.INPUT_METHOD.SHORTCUT
39
+ }, api === null || api === void 0 || (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions, api), list);
40
+ bindLayoutColumnShortcut(_keymaps.deleteColumn.common, (0, _actions.deleteLayoutColumn)({
41
+ inputMethod: _analytics.INPUT_METHOD.SHORTCUT
42
+ }, api === null || api === void 0 || (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions, api), list);
29
43
  return (0, _keymaps.keymap)(list);
30
44
  }
31
45
  var _default = exports.default = keymapPlugin;
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = exports.DEFAULT_LAYOUT = void 0;
8
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _analytics = require("@atlaskit/editor-common/analytics");
10
11
  var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
11
12
  var _selection = require("@atlaskit/editor-common/selection");
12
13
  var _utils = require("@atlaskit/editor-common/utils");
@@ -22,6 +23,7 @@ var _consts = require("./consts");
22
23
  var _pluginKey = require("./plugin-key");
23
24
  var _resizing = require("./resizing");
24
25
  var _utils3 = require("./utils");
26
+ var _layoutColumnSelection = require("./utils/layout-column-selection");
25
27
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26
28
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
27
29
  var DEFAULT_LAYOUT = exports.DEFAULT_LAYOUT = 'two_equal';
@@ -91,6 +93,28 @@ var getInitialPluginState = function getInitialPluginState(options, state) {
91
93
  dangerPreviewLayoutColumnPositions: undefined
92
94
  };
93
95
  };
96
+ var fireLayoutColumnMenuOpenedAnalytics = function fireLayoutColumnMenuOpenedAnalytics(editorAnalyticsAPI, state, openedViaKeyboard) {
97
+ var selectedLayoutColumnsResult = (0, _layoutColumnSelection.getSelectedLayoutColumnsFromSelection)(state.selection);
98
+ if (!selectedLayoutColumnsResult) {
99
+ return;
100
+ }
101
+ var layoutSectionNode = selectedLayoutColumnsResult.layoutSectionNode,
102
+ selectedLayoutColumns = selectedLayoutColumnsResult.selectedLayoutColumns,
103
+ startIndex = selectedLayoutColumnsResult.startIndex,
104
+ endIndex = selectedLayoutColumnsResult.endIndex;
105
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.fireAnalyticsEvent({
106
+ action: _analytics.ACTION.OPENED,
107
+ actionSubject: _analytics.ACTION_SUBJECT.LAYOUT_COLUMN_MENU,
108
+ attributes: {
109
+ columnCount: layoutSectionNode.childCount,
110
+ endIndex: endIndex,
111
+ inputMethod: openedViaKeyboard ? _analytics.INPUT_METHOD.KEYBOARD : _analytics.INPUT_METHOD.MOUSE,
112
+ selectedCount: selectedLayoutColumns.length,
113
+ startIndex: startIndex
114
+ },
115
+ eventType: _analytics.EVENT_TYPE.UI
116
+ });
117
+ };
94
118
  var reduceLayoutColumnMenuState = function reduceLayoutColumnMenuState(pluginState, action) {
95
119
  switch (action.type) {
96
120
  case 'toggleLayoutColumnMenu':
@@ -183,10 +207,14 @@ var _default = exports.default = function _default(options, editorAnalyticsAPI)
183
207
  var columnMenuMeta = tr.getMeta('toggleLayoutColumnMenu');
184
208
  var dangerPreviewMeta = tr.getMeta('layoutColumnDangerPreview');
185
209
  if (columnMenuMeta) {
210
+ var wasLayoutColumnMenuOpen = nextPluginState.isLayoutColumnMenuOpen;
186
211
  nextPluginState = reduceLayoutColumnMenuState(nextPluginState, {
187
212
  meta: columnMenuMeta,
188
213
  type: 'toggleLayoutColumnMenu'
189
214
  });
215
+ if (!wasLayoutColumnMenuOpen && nextPluginState.isLayoutColumnMenuOpen) {
216
+ fireLayoutColumnMenuOpenedAnalytics(editorAnalyticsAPI, newState, columnMenuMeta.openedViaKeyboard);
217
+ }
190
218
  }
191
219
  if (tr.getMeta('layoutColumnDangerPreview') !== undefined) {
192
220
  nextPluginState = reduceLayoutColumnMenuState(nextPluginState, {
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getSelectedLayoutColumnsFromSelection = exports.getLayoutColumnsFromContentSelection = exports.getLayoutColumnValign = exports.getLayoutColumnMenuAnchorPos = exports.getAllLayoutColumnsFromSelection = void 0;
7
7
  var _state = require("@atlaskit/editor-prosemirror/state");
8
8
  var _utils = require("@atlaskit/editor-prosemirror/utils");
9
+ var _consts = require("../consts");
9
10
  var findLayoutSectionFromSelection = function findLayoutSectionFromSelection(selection) {
10
11
  var layoutSection = selection.$from.doc.type.schema.nodes.layoutSection;
11
12
  // NodeSelection on the layoutSection node itself
@@ -104,7 +105,7 @@ var getAllLayoutColumnsFromSelection = exports.getAllLayoutColumnsFromSelection
104
105
  };
105
106
  var getLayoutColumnValign = exports.getLayoutColumnValign = function getLayoutColumnValign(layoutColumn) {
106
107
  var _ref4;
107
- return layoutColumn ? (_ref4 = layoutColumn.attrs.valign) !== null && _ref4 !== void 0 ? _ref4 : 'top' : undefined;
108
+ return layoutColumn ? (_ref4 = layoutColumn.attrs.valign) !== null && _ref4 !== void 0 ? _ref4 : _consts.DEFAULT_LAYOUT_COLUMN_VALIGN : undefined;
108
109
  };
109
110
  var getLayoutColumnMenuAnchorPos = exports.getLayoutColumnMenuAnchorPos = function getLayoutColumnMenuAnchorPos(selection, anchorPosFromHandle) {
110
111
  var _clickedSelectedColum, _selectedLayoutColumn;
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.DeleteColumnDropdownItem = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _reactIntl = require("react-intl");
10
+ var _analytics = require("@atlaskit/editor-common/analytics");
10
11
  var _keymaps = require("@atlaskit/editor-common/keymaps");
11
12
  var _messages = require("@atlaskit/editor-common/messages");
12
13
  var _editorToolbar = require("@atlaskit/editor-toolbar");
@@ -30,7 +31,9 @@ var DeleteColumnDropdownItem = exports.DeleteColumnDropdownItem = function Delet
30
31
  }, [setDangerPreview]);
31
32
  var onClick = (0, _react.useCallback)(function () {
32
33
  var _api$layout2, _api$core2;
33
- var deleteCommand = api === null || api === void 0 || (_api$layout2 = api.layout) === null || _api$layout2 === void 0 ? void 0 : _api$layout2.commands.deleteLayoutColumn();
34
+ var deleteCommand = api === null || api === void 0 || (_api$layout2 = api.layout) === null || _api$layout2 === void 0 ? void 0 : _api$layout2.commands.deleteLayoutColumn({
35
+ inputMethod: _analytics.INPUT_METHOD.LAYOUT_COLUMN_MENU
36
+ });
34
37
  api === null || api === void 0 || (_api$core2 = api.core) === null || _api$core2 === void 0 || _api$core2.actions.execute(function (props) {
35
38
  var _api$layout3;
36
39
  var tr = deleteCommand === null || deleteCommand === void 0 ? void 0 : deleteCommand(props);
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.InsertColumnDropdownItem = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _reactIntl = require("react-intl");
10
+ var _analytics = require("@atlaskit/editor-common/analytics");
10
11
  var _keymaps = require("@atlaskit/editor-common/keymaps");
11
12
  var _messages = require("@atlaskit/editor-common/messages");
12
13
  var _editorToolbar = require("@atlaskit/editor-toolbar");
@@ -41,7 +42,10 @@ var InsertColumnDropdownItem = exports.InsertColumnDropdownItem = function Inser
41
42
  var canInsertColumn = selectedLayoutColumns !== undefined && columnCount < maxColumnCount;
42
43
  var onClick = (0, _react.useCallback)(function () {
43
44
  var _api$layout, _api$core;
44
- var insertCommand = api === null || api === void 0 || (_api$layout = api.layout) === null || _api$layout === void 0 ? void 0 : _api$layout.commands.insertLayoutColumn(side);
45
+ var insertCommand = api === null || api === void 0 || (_api$layout = api.layout) === null || _api$layout === void 0 ? void 0 : _api$layout.commands.insertLayoutColumn({
46
+ side: side,
47
+ inputMethod: _analytics.INPUT_METHOD.LAYOUT_COLUMN_MENU
48
+ });
45
49
  api === null || api === void 0 || (_api$core = api.core) === null || _api$core === void 0 || _api$core.actions.execute(function (props) {
46
50
  var _api$layout2;
47
51
  var tr = insertCommand === null || insertCommand === void 0 ? void 0 : insertCommand(props);
@@ -27,7 +27,9 @@ var VerticalAlignDropdownItem = exports.VerticalAlignDropdownItem = function Ver
27
27
  var Icon = _verticalAlignIcons.VERTICAL_ALIGN_ICONS[value];
28
28
  var onClick = (0, _react.useCallback)(function () {
29
29
  var _api$core, _api$layout;
30
- api === null || api === void 0 || (_api$core = api.core) === null || _api$core === void 0 || _api$core.actions.execute(api === null || api === void 0 || (_api$layout = api.layout) === null || _api$layout === void 0 ? void 0 : _api$layout.commands.setLayoutColumnValign(value));
30
+ api === null || api === void 0 || (_api$core = api.core) === null || _api$core === void 0 || _api$core.actions.execute(api === null || api === void 0 || (_api$layout = api.layout) === null || _api$layout === void 0 ? void 0 : _api$layout.commands.setLayoutColumnValign({
31
+ valign: value
32
+ }));
31
33
  }, [api, value]);
32
34
  return /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarDropdownItem, {
33
35
  elemBefore: /*#__PURE__*/_react.default.createElement(Icon, {
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { layoutColumn, layoutColumnStage0, layoutColumnWithLocalId, layoutSection, layoutSectionWithLocalId } from '@atlaskit/adf-schema';
2
+ import { layoutColumn, layoutColumnWithLocalId, layoutSection, layoutSectionWithLocalId } from '@atlaskit/adf-schema';
3
3
  import { layoutSectionWithSingleColumn, layoutSectionWithSingleColumnLocalId } from '@atlaskit/adf-schema/schema';
4
4
  import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
5
5
  import { TRANSFORM_STRUCTURE_LAYOUT_MENU_ITEM, TRANSFORM_STRUCTURE_MENU_SECTION, TRANSFORM_STRUCTURE_MENU_SECTION_RANK } from '@atlaskit/editor-common/block-menu';
@@ -88,10 +88,7 @@ export const layoutPlugin = ({
88
88
  node: editorExperiment('advanced_layouts', true) ? fg('platform_editor_adf_with_localid') ? layoutSectionWithSingleColumnLocalId : layoutSectionWithSingleColumn : fg('platform_editor_adf_with_localid') ? layoutSectionWithLocalId : layoutSection
89
89
  }, {
90
90
  name: 'layoutColumn',
91
- node: expValEqualsNoExposure('platform_editor_layout_column_menu', 'isEnabled', true) ?
92
- // `layoutColumnStage0` includes both `valign` and `localId` attrs, so it remains
93
- // compatible with `platform_editor_adf_with_localid` when both flags are enabled.
94
- layoutColumnStage0 : fg('platform_editor_adf_with_localid') ? layoutColumnWithLocalId : layoutColumn
91
+ node: fg('platform_editor_adf_with_localid') ? layoutColumnWithLocalId : layoutColumn
95
92
  }];
96
93
  },
97
94
  pmPlugins() {
@@ -362,22 +359,22 @@ export const layoutPlugin = ({
362
359
  return pluginKey.getState(editorState);
363
360
  },
364
361
  commands: {
365
- deleteLayoutColumn: inputMethod => {
362
+ deleteLayoutColumn: options => {
366
363
  var _api$analytics5;
367
- return deleteLayoutColumn(api === null || api === void 0 ? void 0 : (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions, api, inputMethod);
364
+ return deleteLayoutColumn(options, api === null || api === void 0 ? void 0 : (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions, api);
368
365
  },
369
366
  distributeLayoutColumns: options => {
370
367
  var _api$analytics6;
371
368
  return distributeLayoutColumns(api === null || api === void 0 ? void 0 : (_api$analytics6 = api.analytics) === null || _api$analytics6 === void 0 ? void 0 : _api$analytics6.actions, api)(options);
372
369
  },
373
- insertLayoutColumn: (side, inputMethod) => {
370
+ insertLayoutColumn: options => {
374
371
  var _api$analytics7;
375
- return insertLayoutColumn(side, api === null || api === void 0 ? void 0 : (_api$analytics7 = api.analytics) === null || _api$analytics7 === void 0 ? void 0 : _api$analytics7.actions, api, inputMethod);
372
+ return insertLayoutColumn(options, api === null || api === void 0 ? void 0 : (_api$analytics7 = api.analytics) === null || _api$analytics7 === void 0 ? void 0 : _api$analytics7.actions, api);
376
373
  },
377
374
  setLayoutColumnDangerPreview,
378
- setLayoutColumnValign: valign => {
375
+ setLayoutColumnValign: options => {
379
376
  var _api$analytics8;
380
- return setLayoutColumnValign(valign, api === null || api === void 0 ? void 0 : (_api$analytics8 = api.analytics) === null || _api$analytics8 === void 0 ? void 0 : _api$analytics8.actions, api);
377
+ return setLayoutColumnValign(options, api === null || api === void 0 ? void 0 : (_api$analytics8 = api.analytics) === null || _api$analytics8 === void 0 ? void 0 : _api$analytics8.actions, api);
381
378
  },
382
379
  toggleLayoutColumnMenu
383
380
  }