@atlaskit/page-layout 1.2.4 → 1.2.5

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,11 @@
1
1
  # @atlaskit/page-layout
2
2
 
3
+ ## 1.2.5
4
+
5
+ ### Patch Changes
6
+
7
+ - [`e4b612d1c48`](https://bitbucket.org/atlassian/atlassian-frontend/commits/e4b612d1c48) - Internal migration to bind-event-listener for safer DOM Event cleanup
8
+
3
9
  ## 1.2.4
4
10
 
5
11
  ### Patch Changes
@@ -17,6 +17,8 @@ var _react = require("react");
17
17
 
18
18
  var _core = require("@emotion/core");
19
19
 
20
+ var _bindEventListener = require("bind-event-listener");
21
+
20
22
  var _rafSchd = _interopRequireDefault(require("raf-schd"));
21
23
 
22
24
  var _constants = require("../../common/constants");
@@ -75,6 +77,8 @@ var ResizeControl = function ResizeControl(_ref) {
75
77
  isGrabAreaFocused = _useState2[0],
76
78
  setIsGrabAreaFocused = _useState2[1];
77
79
 
80
+ var unbindEvents = (0, _react.useRef)(null);
81
+
78
82
  var toggleSideBar = function toggleSideBar(e) {
79
83
  if (isResizing) {
80
84
  return;
@@ -101,8 +105,13 @@ var ResizeControl = function ResizeControl(_ref) {
101
105
  }
102
106
 
103
107
  offset.current = event.clientX - leftSidebarState[_constants.VAR_LEFT_SIDEBAR_WIDTH] - (0, _utils.getLeftPanelWidth)();
104
- document.addEventListener('mousemove', onMouseMove);
105
- document.addEventListener('mouseup', onMouseUp);
108
+ unbindEvents.current = (0, _bindEventListener.bindAll)(document, [{
109
+ type: 'mousemove',
110
+ listener: onMouseMove
111
+ }, {
112
+ type: 'mouseup',
113
+ listener: onMouseUp
114
+ }]);
106
115
  document.documentElement.setAttribute(_constants.IS_SIDEBAR_DRAGGING, 'true');
107
116
 
108
117
  var newLeftbarState = _objectSpread(_objectSpread({}, leftSidebarState), {}, {
@@ -114,9 +123,11 @@ var ResizeControl = function ResizeControl(_ref) {
114
123
  };
115
124
 
116
125
  var cancelDrag = function cancelDrag(shouldCollapse) {
126
+ var _unbindEvents$current;
127
+
117
128
  onMouseMove.cancel();
118
- document.removeEventListener('mousemove', onMouseMove);
119
- document.removeEventListener('mouseup', onMouseUp);
129
+ (_unbindEvents$current = unbindEvents.current) === null || _unbindEvents$current === void 0 ? void 0 : _unbindEvents$current.call(unbindEvents);
130
+ unbindEvents.current = null;
120
131
  document.documentElement.removeAttribute(_constants.IS_SIDEBAR_DRAGGING);
121
132
  offset.current = 0;
122
133
  collapseLeftSidebar(undefined, true);
@@ -139,10 +150,12 @@ var ResizeControl = function ResizeControl(_ref) {
139
150
  });
140
151
 
141
152
  var cleanupAfterResize = function cleanupAfterResize() {
153
+ var _unbindEvents$current2;
154
+
142
155
  x.current = 0;
143
156
  offset.current = 0;
144
- document.removeEventListener('mousemove', onMouseMove);
145
- document.removeEventListener('mouseup', onMouseUp);
157
+ (_unbindEvents$current2 = unbindEvents.current) === null || _unbindEvents$current2 === void 0 ? void 0 : _unbindEvents$current2.call(unbindEvents);
158
+ unbindEvents.current = null;
146
159
  };
147
160
 
148
161
  var updatedLeftSidebarState = {};
@@ -60,6 +60,7 @@ var SidebarResizeController = function SidebarResizeController(_ref) {
60
60
  var $leftSidebarResizeController = document.querySelector("[".concat(_constants.GRAB_AREA_SELECTOR, "]"));
61
61
  var isCollapsed = !!$leftSidebarResizeController && $leftSidebarResizeController.hasAttribute('disabled');
62
62
  handleDataAttributesAndCb(isCollapsed ? onCollapse : onExpand, isCollapsed, leftSidebarState); // Make sure multiple event handlers do not get attached
63
+ // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
63
64
 
64
65
  document.querySelector(leftSidebarSelector).removeEventListener('transitionend', transitionEventHandler);
65
66
  } // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -69,6 +70,7 @@ var SidebarResizeController = function SidebarResizeController(_ref) {
69
70
  var $leftSidebar = document.querySelector(leftSidebarSelector);
70
71
 
71
72
  if ($leftSidebar && !(0, _motion.isReducedMotion)()) {
73
+ // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
72
74
  $leftSidebar.addEventListener('transitionend', transitionEventHandler);
73
75
  }
74
76
  }, [isLeftSidebarCollapsed, leftSidebarSelector, leftSidebarState, onCollapse, onExpand, transitionEventHandler]);
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/page-layout",
3
- "version": "1.2.4",
3
+ "version": "1.2.5",
4
4
  "sideEffects": false
5
5
  }
@@ -3,6 +3,7 @@ import _extends from "@babel/runtime/helpers/extends";
3
3
  /** @jsx jsx */
4
4
  import { useCallback, useContext, useMemo, useRef, useState } from 'react';
5
5
  import { css, jsx } from '@emotion/core';
6
+ import { bindAll } from 'bind-event-listener';
6
7
  import rafSchd from 'raf-schd';
7
8
  import { COLLAPSED_LEFT_SIDEBAR_WIDTH, DEFAULT_LEFT_SIDEBAR_WIDTH, IS_SIDEBAR_DRAGGING, MIN_LEFT_SIDEBAR_DRAG_THRESHOLD, RESIZE_BUTTON_SELECTOR, RESIZE_CONTROL_SELECTOR, VAR_LEFT_SIDEBAR_WIDTH } from '../../common/constants';
8
9
  import { getLeftPanelWidth, getLeftSidebarPercentage } from '../../common/utils';
@@ -49,6 +50,7 @@ const ResizeControl = ({
49
50
  const offset = useRef(0);
50
51
  const keyboardEventTimeout = useRef();
51
52
  const [isGrabAreaFocused, setIsGrabAreaFocused] = useState(false);
53
+ const unbindEvents = useRef(null);
52
54
 
53
55
  const toggleSideBar = e => {
54
56
  if (isResizing) {
@@ -75,8 +77,13 @@ const ResizeControl = ({
75
77
  }
76
78
 
77
79
  offset.current = event.clientX - leftSidebarState[VAR_LEFT_SIDEBAR_WIDTH] - getLeftPanelWidth();
78
- document.addEventListener('mousemove', onMouseMove);
79
- document.addEventListener('mouseup', onMouseUp);
80
+ unbindEvents.current = bindAll(document, [{
81
+ type: 'mousemove',
82
+ listener: onMouseMove
83
+ }, {
84
+ type: 'mouseup',
85
+ listener: onMouseUp
86
+ }]);
80
87
  document.documentElement.setAttribute(IS_SIDEBAR_DRAGGING, 'true');
81
88
  const newLeftbarState = { ...leftSidebarState,
82
89
  isResizing: true
@@ -86,9 +93,11 @@ const ResizeControl = ({
86
93
  };
87
94
 
88
95
  const cancelDrag = shouldCollapse => {
96
+ var _unbindEvents$current;
97
+
89
98
  onMouseMove.cancel();
90
- document.removeEventListener('mousemove', onMouseMove);
91
- document.removeEventListener('mouseup', onMouseUp);
99
+ (_unbindEvents$current = unbindEvents.current) === null || _unbindEvents$current === void 0 ? void 0 : _unbindEvents$current.call(unbindEvents);
100
+ unbindEvents.current = null;
92
101
  document.documentElement.removeAttribute(IS_SIDEBAR_DRAGGING);
93
102
  offset.current = 0;
94
103
  collapseLeftSidebar(undefined, true);
@@ -113,10 +122,12 @@ const ResizeControl = ({
113
122
  });
114
123
 
115
124
  const cleanupAfterResize = () => {
125
+ var _unbindEvents$current2;
126
+
116
127
  x.current = 0;
117
128
  offset.current = 0;
118
- document.removeEventListener('mousemove', onMouseMove);
119
- document.removeEventListener('mouseup', onMouseUp);
129
+ (_unbindEvents$current2 = unbindEvents.current) === null || _unbindEvents$current2 === void 0 ? void 0 : _unbindEvents$current2.call(unbindEvents);
130
+ unbindEvents.current = null;
120
131
  };
121
132
 
122
133
  let updatedLeftSidebarState = {};
@@ -1,3 +1,5 @@
1
+ /* eslint-disable @repo/internal/dom-events/no-unsafe-event-listeners */
2
+
1
3
  /** @jsx jsx */
2
4
  import { css, jsx } from '@emotion/core';
3
5
  import { easeOut, prefersReducedMotion } from '@atlaskit/motion';
@@ -1,3 +1,5 @@
1
+ /* eslint-disable @repo/internal/dom-events/no-unsafe-event-listeners */
2
+
1
3
  /** @jsx jsx */
2
4
  import { useContext, useEffect, useRef } from 'react';
3
5
  import { jsx } from '@emotion/core';
@@ -34,6 +34,7 @@ export const SidebarResizeController = ({
34
34
  const $leftSidebarResizeController = document.querySelector(`[${GRAB_AREA_SELECTOR}]`);
35
35
  const isCollapsed = !!$leftSidebarResizeController && $leftSidebarResizeController.hasAttribute('disabled');
36
36
  handleDataAttributesAndCb(isCollapsed ? onCollapse : onExpand, isCollapsed, leftSidebarState); // Make sure multiple event handlers do not get attached
37
+ // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
37
38
 
38
39
  document.querySelector(leftSidebarSelector).removeEventListener('transitionend', transitionEventHandler);
39
40
  } // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -43,6 +44,7 @@ export const SidebarResizeController = ({
43
44
  const $leftSidebar = document.querySelector(leftSidebarSelector);
44
45
 
45
46
  if ($leftSidebar && !isReducedMotion()) {
47
+ // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
46
48
  $leftSidebar.addEventListener('transitionend', transitionEventHandler);
47
49
  }
48
50
  }, [isLeftSidebarCollapsed, leftSidebarSelector, leftSidebarState, onCollapse, onExpand, transitionEventHandler]);
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/page-layout",
3
- "version": "1.2.4",
3
+ "version": "1.2.5",
4
4
  "sideEffects": false
5
5
  }
@@ -9,6 +9,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
9
9
  /** @jsx jsx */
10
10
  import { useCallback, useContext, useMemo, useRef, useState } from 'react';
11
11
  import { css, jsx } from '@emotion/core';
12
+ import { bindAll } from 'bind-event-listener';
12
13
  import rafSchd from 'raf-schd';
13
14
  import { COLLAPSED_LEFT_SIDEBAR_WIDTH, DEFAULT_LEFT_SIDEBAR_WIDTH, IS_SIDEBAR_DRAGGING, MIN_LEFT_SIDEBAR_DRAG_THRESHOLD, RESIZE_BUTTON_SELECTOR, RESIZE_CONTROL_SELECTOR, VAR_LEFT_SIDEBAR_WIDTH } from '../../common/constants';
14
15
  import { getLeftPanelWidth, getLeftSidebarPercentage } from '../../common/utils';
@@ -60,6 +61,8 @@ var ResizeControl = function ResizeControl(_ref) {
60
61
  isGrabAreaFocused = _useState2[0],
61
62
  setIsGrabAreaFocused = _useState2[1];
62
63
 
64
+ var unbindEvents = useRef(null);
65
+
63
66
  var toggleSideBar = function toggleSideBar(e) {
64
67
  if (isResizing) {
65
68
  return;
@@ -86,8 +89,13 @@ var ResizeControl = function ResizeControl(_ref) {
86
89
  }
87
90
 
88
91
  offset.current = event.clientX - leftSidebarState[VAR_LEFT_SIDEBAR_WIDTH] - getLeftPanelWidth();
89
- document.addEventListener('mousemove', onMouseMove);
90
- document.addEventListener('mouseup', onMouseUp);
92
+ unbindEvents.current = bindAll(document, [{
93
+ type: 'mousemove',
94
+ listener: onMouseMove
95
+ }, {
96
+ type: 'mouseup',
97
+ listener: onMouseUp
98
+ }]);
91
99
  document.documentElement.setAttribute(IS_SIDEBAR_DRAGGING, 'true');
92
100
 
93
101
  var newLeftbarState = _objectSpread(_objectSpread({}, leftSidebarState), {}, {
@@ -99,9 +107,11 @@ var ResizeControl = function ResizeControl(_ref) {
99
107
  };
100
108
 
101
109
  var cancelDrag = function cancelDrag(shouldCollapse) {
110
+ var _unbindEvents$current;
111
+
102
112
  onMouseMove.cancel();
103
- document.removeEventListener('mousemove', onMouseMove);
104
- document.removeEventListener('mouseup', onMouseUp);
113
+ (_unbindEvents$current = unbindEvents.current) === null || _unbindEvents$current === void 0 ? void 0 : _unbindEvents$current.call(unbindEvents);
114
+ unbindEvents.current = null;
105
115
  document.documentElement.removeAttribute(IS_SIDEBAR_DRAGGING);
106
116
  offset.current = 0;
107
117
  collapseLeftSidebar(undefined, true);
@@ -124,10 +134,12 @@ var ResizeControl = function ResizeControl(_ref) {
124
134
  });
125
135
 
126
136
  var cleanupAfterResize = function cleanupAfterResize() {
137
+ var _unbindEvents$current2;
138
+
127
139
  x.current = 0;
128
140
  offset.current = 0;
129
- document.removeEventListener('mousemove', onMouseMove);
130
- document.removeEventListener('mouseup', onMouseUp);
141
+ (_unbindEvents$current2 = unbindEvents.current) === null || _unbindEvents$current2 === void 0 ? void 0 : _unbindEvents$current2.call(unbindEvents);
142
+ unbindEvents.current = null;
131
143
  };
132
144
 
133
145
  var updatedLeftSidebarState = {};
@@ -5,6 +5,8 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
5
5
 
6
6
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7
7
 
8
+ /* eslint-disable @repo/internal/dom-events/no-unsafe-event-listeners */
9
+
8
10
  /** @jsx jsx */
9
11
  import { css, jsx } from '@emotion/core';
10
12
  import { easeOut, prefersReducedMotion } from '@atlaskit/motion';
@@ -4,6 +4,8 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
4
4
 
5
5
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
6
 
7
+ /* eslint-disable @repo/internal/dom-events/no-unsafe-event-listeners */
8
+
7
9
  /** @jsx jsx */
8
10
  import { useContext, useEffect, useRef } from 'react';
9
11
  import { jsx } from '@emotion/core';
@@ -40,6 +40,7 @@ export var SidebarResizeController = function SidebarResizeController(_ref) {
40
40
  var $leftSidebarResizeController = document.querySelector("[".concat(GRAB_AREA_SELECTOR, "]"));
41
41
  var isCollapsed = !!$leftSidebarResizeController && $leftSidebarResizeController.hasAttribute('disabled');
42
42
  handleDataAttributesAndCb(isCollapsed ? onCollapse : onExpand, isCollapsed, leftSidebarState); // Make sure multiple event handlers do not get attached
43
+ // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
43
44
 
44
45
  document.querySelector(leftSidebarSelector).removeEventListener('transitionend', transitionEventHandler);
45
46
  } // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -49,6 +50,7 @@ export var SidebarResizeController = function SidebarResizeController(_ref) {
49
50
  var $leftSidebar = document.querySelector(leftSidebarSelector);
50
51
 
51
52
  if ($leftSidebar && !isReducedMotion()) {
53
+ // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
52
54
  $leftSidebar.addEventListener('transitionend', transitionEventHandler);
53
55
  }
54
56
  }, [isLeftSidebarCollapsed, leftSidebarSelector, leftSidebarState, onCollapse, onExpand, transitionEventHandler]);
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/page-layout",
3
- "version": "1.2.4",
3
+ "version": "1.2.5",
4
4
  "sideEffects": false
5
5
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/page-layout",
3
- "version": "1.2.4",
3
+ "version": "1.2.5",
4
4
  "description": "A collection of components which let you compose an application's page layout.",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -19,7 +19,8 @@
19
19
  "deprecatedAutoEntryPoints": true,
20
20
  "releaseModel": "scheduled",
21
21
  "website": {
22
- "name": "Page layout"
22
+ "name": "Page layout",
23
+ "category": "Components"
23
24
  }
24
25
  },
25
26
  "homepage": "https://atlassian.design/components/page-layout/",
@@ -30,6 +31,7 @@
30
31
  "@atlaskit/tokens": "^0.10.0",
31
32
  "@babel/runtime": "^7.0.0",
32
33
  "@emotion/core": "^10.0.9",
34
+ "bind-event-listener": "^2.1.0",
33
35
  "raf-schd": "^4.0.3"
34
36
  },
35
37
  "peerDependencies": {
@@ -75,6 +77,7 @@
75
77
  "import-structure": "atlassian-conventions"
76
78
  },
77
79
  "@repo/internal": {
80
+ "dom-events": "use-bind-event-listener",
78
81
  "ui-components": [
79
82
  "lite-mode"
80
83
  ],