@atlaskit/react-ufo 3.6.7 → 3.8.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 (50) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/config/index.js +0 -9
  3. package/dist/cjs/create-payload/index.js +6 -4
  4. package/dist/cjs/interaction-metrics/index.js +57 -17
  5. package/dist/cjs/interaction-metrics-init/index.js +11 -0
  6. package/dist/cjs/interactions-performance-observer/index.js +51 -0
  7. package/dist/cjs/segment/segment.js +0 -8
  8. package/dist/cjs/vc/vc-observer/observers/index.js +4 -18
  9. package/dist/cjs/vc/vc-observer/revisions/fy25_01.js +1 -1
  10. package/dist/es2019/config/index.js +0 -8
  11. package/dist/es2019/create-payload/index.js +5 -1
  12. package/dist/es2019/interaction-metrics/index.js +30 -0
  13. package/dist/es2019/interaction-metrics-init/index.js +11 -0
  14. package/dist/es2019/interactions-performance-observer/index.js +30 -0
  15. package/dist/es2019/segment/segment.js +0 -8
  16. package/dist/es2019/vc/vc-observer/observers/index.js +0 -15
  17. package/dist/es2019/vc/vc-observer/revisions/fy25_01.js +1 -1
  18. package/dist/esm/config/index.js +0 -8
  19. package/dist/esm/create-payload/index.js +6 -4
  20. package/dist/esm/interaction-metrics/index.js +55 -16
  21. package/dist/esm/interaction-metrics-init/index.js +11 -0
  22. package/dist/esm/interactions-performance-observer/index.js +44 -0
  23. package/dist/esm/segment/segment.js +0 -8
  24. package/dist/esm/vc/vc-observer/observers/index.js +4 -18
  25. package/dist/esm/vc/vc-observer/revisions/fy25_01.js +1 -1
  26. package/dist/types/common/common/types.d.ts +7 -0
  27. package/dist/types/common/vc/types.d.ts +1 -1
  28. package/dist/types/config/index.d.ts +0 -2
  29. package/dist/types/create-payload/index.d.ts +256 -0
  30. package/dist/types/interaction-metrics/index.d.ts +2 -0
  31. package/dist/types/interactions-performance-observer/index.d.ts +2 -0
  32. package/dist/types/vc/vc-observer/observers/index.d.ts +0 -1
  33. package/dist/types-ts4.5/common/common/types.d.ts +7 -0
  34. package/dist/types-ts4.5/common/vc/types.d.ts +1 -1
  35. package/dist/types-ts4.5/config/index.d.ts +0 -2
  36. package/dist/types-ts4.5/create-payload/index.d.ts +256 -0
  37. package/dist/types-ts4.5/interaction-metrics/index.d.ts +2 -0
  38. package/dist/types-ts4.5/interactions-performance-observer/index.d.ts +2 -0
  39. package/dist/types-ts4.5/vc/vc-observer/observers/index.d.ts +0 -1
  40. package/package.json +5 -5
  41. package/dist/cjs/vc/vc-observer/observers/editor-lnv/index.js +0 -186
  42. package/dist/cjs/vc/vc-observer/observers/editor-lnv/test-utils.js +0 -68
  43. package/dist/es2019/vc/vc-observer/observers/editor-lnv/index.js +0 -140
  44. package/dist/es2019/vc/vc-observer/observers/editor-lnv/test-utils.js +0 -41
  45. package/dist/esm/vc/vc-observer/observers/editor-lnv/index.js +0 -180
  46. package/dist/esm/vc/vc-observer/observers/editor-lnv/test-utils.js +0 -58
  47. package/dist/types/vc/vc-observer/observers/editor-lnv/index.d.ts +0 -24
  48. package/dist/types/vc/vc-observer/observers/editor-lnv/test-utils.d.ts +0 -35
  49. package/dist/types-ts4.5/vc/vc-observer/observers/editor-lnv/index.d.ts +0 -24
  50. package/dist/types-ts4.5/vc/vc-observer/observers/editor-lnv/test-utils.d.ts +0 -35
@@ -6,6 +6,8 @@ import PostInteractionLog from './post-interaction-log';
6
6
  export type { InteractionMetrics, LifecycleMarkType, Span, Mark, MarkType, InteractionType, AbortReasonType, ReactProfilerTiming, RequestInfo, ApdexType, CustomData, CustomTiming, InteractionError, };
7
7
  export declare const postInteractionLog: PostInteractionLog;
8
8
  export declare function getActiveInteraction(): InteractionMetrics | undefined;
9
+ export declare const getPerformanceObserver: () => PerformanceObserver;
10
+ export declare const setInteractionPerformanceEvent: (entry: PerformanceEventTiming) => void;
9
11
  export declare function remove(interactionId: string): void;
10
12
  export declare function updatePageLoadInteractionName(ufoName: string, routeName?: string | null | undefined): void;
11
13
  export declare function addMetadata(interactionId: string, data: Record<string, unknown>): void;
@@ -0,0 +1,2 @@
1
+ export declare const getPerformanceObserver: () => PerformanceObserver;
2
+ export declare const setInteractionPerformanceEvent: (entry: PerformanceEventTiming) => void;
@@ -19,7 +19,6 @@ export declare class Observers implements BrowserObservers {
19
19
  private totalTime;
20
20
  private _startMeasureTimestamp;
21
21
  private ssrPlaceholderHandler;
22
- private editorLnvHandler;
23
22
  private ssr;
24
23
  private selectorConfig;
25
24
  constructor(opts: ConstructorOptions);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/react-ufo",
3
- "version": "3.6.7",
3
+ "version": "3.8.0",
4
4
  "description": "Parts of React UFO that are publicly available",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -86,7 +86,7 @@
86
86
  "react": "^18.2.0"
87
87
  },
88
88
  "devDependencies": {
89
- "@af/integration-testing": "^0.5.0",
89
+ "@af/integration-testing": "workspace:^",
90
90
  "@testing-library/react": "^13.4.0",
91
91
  "@types/is-ci": "^3.0.0",
92
92
  "is-ci": "^3.0.1"
@@ -154,9 +154,6 @@
154
154
  "platform_ufo_no_vc_on_aborted": {
155
155
  "type": "boolean"
156
156
  },
157
- "platform_ufo_segment_list_mode": {
158
- "type": "boolean"
159
- },
160
157
  "ufo_payload_use_idle_callback": {
161
158
  "type": "boolean"
162
159
  },
@@ -171,6 +168,9 @@
171
168
  },
172
169
  "platform_ufo_self_timings": {
173
170
  "type": "boolean"
171
+ },
172
+ "platform_ufo_enable_events_observer": {
173
+ "type": "boolean"
174
174
  }
175
175
  }
176
176
  }
@@ -1,186 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.EditorLnvHandler = void 0;
8
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
- var placeholderDataKey = 'editorLnvPlaceholder'; // data-editor-lnv-placeholder
12
- var replaceDataKey = 'editorLnvPlaceholderReplace'; // data-editor-lnv-placeholder-replace
13
- var EditorLnvHandler = exports.EditorLnvHandler = /*#__PURE__*/function () {
14
- function EditorLnvHandler() {
15
- var _this = this;
16
- (0, _classCallCheck2.default)(this, EditorLnvHandler);
17
- (0, _defineProperty2.default)(this, "placeholders", new Map());
18
- (0, _defineProperty2.default)(this, "getSizeCallbacks", new Map());
19
- (0, _defineProperty2.default)(this, "isAddedPlaceholderMatchingSizeCallbacks", new Map());
20
- (0, _defineProperty2.default)(this, "isAddedReplaceMatchingSizeCallbacks", new Map());
21
- (0, _defineProperty2.default)(this, "intersectionObserverCallback", function (_ref) {
22
- var _target$dataset, _target$dataset2;
23
- var target = _ref.target,
24
- boundingClientRect = _ref.boundingClientRect;
25
- _this.intersectionObserver.unobserve(target);
26
- if (!(target instanceof HTMLElement)) {
27
- return;
28
- }
29
- var placeholderId = (_target$dataset = target.dataset) === null || _target$dataset === void 0 ? void 0 : _target$dataset[placeholderDataKey];
30
- if (placeholderId && _this.getSizeCallbacks.has(placeholderId)) {
31
- var _resolve = _this.getSizeCallbacks.get(placeholderId);
32
- _this.getSizeCallbacks.delete(placeholderId);
33
- if (!_resolve) {
34
- return;
35
- }
36
- _resolve({
37
- x: boundingClientRect.x,
38
- y: boundingClientRect.y,
39
- width: boundingClientRect.width,
40
- height: boundingClientRect.height
41
- });
42
- return;
43
- }
44
- if (placeholderId && _this.isAddedPlaceholderMatchingSizeCallbacks.has(placeholderId)) {
45
- var _resolve2 = _this.isAddedPlaceholderMatchingSizeCallbacks.get(placeholderId);
46
- _this.isAddedPlaceholderMatchingSizeCallbacks.delete(placeholderId);
47
- if (!_resolve2) {
48
- return;
49
- }
50
- var placeholder = _this.placeholders.get(placeholderId);
51
- if (!placeholder) {
52
- _resolve2(false);
53
- return;
54
- }
55
- _resolve2(_this.areRectsSameSize(placeholder, boundingClientRect));
56
- return;
57
- }
58
- var replaceId = (_target$dataset2 = target.dataset) === null || _target$dataset2 === void 0 ? void 0 : _target$dataset2[replaceDataKey];
59
- if (replaceId && _this.isAddedReplaceMatchingSizeCallbacks.has(replaceId)) {
60
- var _resolve3 = _this.isAddedReplaceMatchingSizeCallbacks.get(replaceId);
61
- _this.isAddedReplaceMatchingSizeCallbacks.delete(replaceId);
62
- if (!_resolve3) {
63
- return;
64
- }
65
- var _placeholder = _this.placeholders.get(replaceId);
66
- if (!_placeholder) {
67
- _resolve3(false);
68
- return;
69
- }
70
- _this.placeholders.delete(replaceId);
71
- _resolve3(_this.areRectsSameSize(_placeholder, boundingClientRect));
72
- return;
73
- }
74
- });
75
- this.intersectionObserver = new IntersectionObserver(function (entries) {
76
- return entries.filter(function (entry) {
77
- return entry.intersectionRatio > 0;
78
- }).forEach(_this.intersectionObserverCallback);
79
- });
80
- }
81
- return (0, _createClass2.default)(EditorLnvHandler, [{
82
- key: "shouldHandleAddedNode",
83
- value: function shouldHandleAddedNode(el) {
84
- var _el$dataset, _el$dataset2;
85
- return ((_el$dataset = el.dataset) === null || _el$dataset === void 0 ? void 0 : _el$dataset[placeholderDataKey]) || ((_el$dataset2 = el.dataset) === null || _el$dataset2 === void 0 ? void 0 : _el$dataset2[replaceDataKey]);
86
- }
87
- }, {
88
- key: "handleAddedNode",
89
- value: function handleAddedNode(el) {
90
- var _el$dataset3, _el$dataset4;
91
- // If it placeholder does not already exist, add it to the map
92
- var placeholderId = (_el$dataset3 = el.dataset) === null || _el$dataset3 === void 0 ? void 0 : _el$dataset3[placeholderDataKey];
93
- if (placeholderId) {
94
- return this.handleAddedPlaceholderNode(el, placeholderId);
95
- }
96
- var replaceId = (_el$dataset4 = el.dataset) === null || _el$dataset4 === void 0 ? void 0 : _el$dataset4[replaceDataKey];
97
- if (replaceId) {
98
- return this.handleAddedReplaceNode(el, replaceId);
99
- }
100
- return Promise.resolve({
101
- shouldIgnore: false
102
- });
103
- }
104
- }, {
105
- key: "clear",
106
- value: function clear() {
107
- this.placeholders.clear();
108
- this.intersectionObserver.disconnect();
109
- }
110
- }, {
111
- key: "handleAddedPlaceholderNode",
112
- value: function handleAddedPlaceholderNode(el, placeholderId) {
113
- if (this.isExistingPlaceholder(placeholderId)) {
114
- return this.isAddedPlaceholderMatchingSize(el, placeholderId).then(function (isMatching) {
115
- return {
116
- shouldIgnore: isMatching
117
- };
118
- });
119
- }
120
- return this.registerPlaceholder(el, placeholderId).then(function () {
121
- return {
122
- shouldIgnore: false
123
- };
124
- });
125
- }
126
- }, {
127
- key: "handleAddedReplaceNode",
128
- value: function handleAddedReplaceNode(el, placeholderId) {
129
- if (this.isExistingPlaceholder(placeholderId)) {
130
- return this.isAddedReplaceMatchingSize(el, placeholderId).then(function (isMatching) {
131
- return {
132
- shouldIgnore: isMatching
133
- };
134
- });
135
- }
136
- return Promise.resolve({
137
- shouldIgnore: false
138
- });
139
- }
140
- }, {
141
- key: "isExistingPlaceholder",
142
- value: function isExistingPlaceholder(placeholderId) {
143
- return this.placeholders.has(placeholderId);
144
- }
145
- }, {
146
- key: "registerPlaceholder",
147
- value: function registerPlaceholder(el, placeholderId) {
148
- var _this2 = this;
149
- return this.getSize(el, placeholderId).then(function (size) {
150
- _this2.placeholders.set(placeholderId, size);
151
- });
152
- }
153
- }, {
154
- key: "getSize",
155
- value: function getSize(el, placeholderId) {
156
- var _this3 = this;
157
- return new Promise(function (resolve) {
158
- _this3.getSizeCallbacks.set(placeholderId, resolve);
159
- _this3.intersectionObserver.observe(el);
160
- });
161
- }
162
- }, {
163
- key: "isAddedPlaceholderMatchingSize",
164
- value: function isAddedPlaceholderMatchingSize(el, placeholderId) {
165
- var _this4 = this;
166
- return new Promise(function (resolve) {
167
- _this4.isAddedPlaceholderMatchingSizeCallbacks.set(placeholderId, resolve);
168
- _this4.intersectionObserver.observe(el);
169
- });
170
- }
171
- }, {
172
- key: "isAddedReplaceMatchingSize",
173
- value: function isAddedReplaceMatchingSize(el, placeholderId) {
174
- var _this5 = this;
175
- return new Promise(function (resolve) {
176
- _this5.isAddedReplaceMatchingSizeCallbacks.set(placeholderId, resolve);
177
- _this5.intersectionObserver.observe(el);
178
- });
179
- }
180
- }, {
181
- key: "areRectsSameSize",
182
- value: function areRectsSameSize(a, b) {
183
- return Math.abs(a.width - b.width) < 1 && Math.abs(a.height - b.height) < 1;
184
- }
185
- }]);
186
- }();
@@ -1,68 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.createMockIntersectionObserver = createMockIntersectionObserver;
8
- exports.createPlaceholderElement = createPlaceholderElement;
9
- exports.createReplaceElement = createReplaceElement;
10
- exports.handleElements = handleElements;
11
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
14
- var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray"));
15
- 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; }
16
- 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; }
17
- function createPlaceholderElement(id) {
18
- var el = document.createElement('div');
19
- el.dataset.editorLnvPlaceholder = id;
20
- return el;
21
- }
22
- function createReplaceElement(id) {
23
- var el = document.createElement('div');
24
- el.dataset.editorLnvPlaceholderReplace = id;
25
- return el;
26
- }
27
- function handleElements(elements, handler, observerCallback, callback) {
28
- var _elements = (0, _toArray2.default)(elements),
29
- first = _elements[0],
30
- rest = _elements.slice(1);
31
- handler.handleAddedNode(first.element).then(function (result) {
32
- if (!rest.length) {
33
- // Recursion terminating condition
34
- callback(result);
35
- } else {
36
- // Recursively handle the rest of the elements
37
- handleElements(rest, handler, observerCallback, callback);
38
- }
39
- });
40
- observerCallback([{
41
- target: first.element,
42
- boundingClientRect: first.rect
43
- }]);
44
- }
45
- function createMockIntersectionObserver(cbRef) {
46
- return /*#__PURE__*/function () {
47
- function _class(fn) {
48
- (0, _classCallCheck2.default)(this, _class);
49
- cbRef.current = function (entries) {
50
- return fn(entries.map(function (entry) {
51
- return _objectSpread(_objectSpread({}, entry), {}, {
52
- intersectionRatio: 1
53
- });
54
- }));
55
- };
56
- }
57
- return (0, _createClass2.default)(_class, [{
58
- key: "observe",
59
- value: function observe() {}
60
- }, {
61
- key: "unobserve",
62
- value: function unobserve() {}
63
- }, {
64
- key: "disconnect",
65
- value: function disconnect() {}
66
- }]);
67
- }();
68
- }
@@ -1,140 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- const placeholderDataKey = 'editorLnvPlaceholder'; // data-editor-lnv-placeholder
3
- const replaceDataKey = 'editorLnvPlaceholderReplace'; // data-editor-lnv-placeholder-replace
4
-
5
- export class EditorLnvHandler {
6
- constructor() {
7
- _defineProperty(this, "placeholders", new Map());
8
- _defineProperty(this, "getSizeCallbacks", new Map());
9
- _defineProperty(this, "isAddedPlaceholderMatchingSizeCallbacks", new Map());
10
- _defineProperty(this, "isAddedReplaceMatchingSizeCallbacks", new Map());
11
- _defineProperty(this, "intersectionObserverCallback", ({
12
- target,
13
- boundingClientRect
14
- }) => {
15
- var _target$dataset, _target$dataset2;
16
- this.intersectionObserver.unobserve(target);
17
- if (!(target instanceof HTMLElement)) {
18
- return;
19
- }
20
- const placeholderId = (_target$dataset = target.dataset) === null || _target$dataset === void 0 ? void 0 : _target$dataset[placeholderDataKey];
21
- if (placeholderId && this.getSizeCallbacks.has(placeholderId)) {
22
- const resolve = this.getSizeCallbacks.get(placeholderId);
23
- this.getSizeCallbacks.delete(placeholderId);
24
- if (!resolve) {
25
- return;
26
- }
27
- resolve({
28
- x: boundingClientRect.x,
29
- y: boundingClientRect.y,
30
- width: boundingClientRect.width,
31
- height: boundingClientRect.height
32
- });
33
- return;
34
- }
35
- if (placeholderId && this.isAddedPlaceholderMatchingSizeCallbacks.has(placeholderId)) {
36
- const resolve = this.isAddedPlaceholderMatchingSizeCallbacks.get(placeholderId);
37
- this.isAddedPlaceholderMatchingSizeCallbacks.delete(placeholderId);
38
- if (!resolve) {
39
- return;
40
- }
41
- const placeholder = this.placeholders.get(placeholderId);
42
- if (!placeholder) {
43
- resolve(false);
44
- return;
45
- }
46
- resolve(this.areRectsSameSize(placeholder, boundingClientRect));
47
- return;
48
- }
49
- const replaceId = (_target$dataset2 = target.dataset) === null || _target$dataset2 === void 0 ? void 0 : _target$dataset2[replaceDataKey];
50
- if (replaceId && this.isAddedReplaceMatchingSizeCallbacks.has(replaceId)) {
51
- const resolve = this.isAddedReplaceMatchingSizeCallbacks.get(replaceId);
52
- this.isAddedReplaceMatchingSizeCallbacks.delete(replaceId);
53
- if (!resolve) {
54
- return;
55
- }
56
- const placeholder = this.placeholders.get(replaceId);
57
- if (!placeholder) {
58
- resolve(false);
59
- return;
60
- }
61
- this.placeholders.delete(replaceId);
62
- resolve(this.areRectsSameSize(placeholder, boundingClientRect));
63
- return;
64
- }
65
- });
66
- this.intersectionObserver = new IntersectionObserver(entries => entries.filter(entry => entry.intersectionRatio > 0).forEach(this.intersectionObserverCallback));
67
- }
68
- shouldHandleAddedNode(el) {
69
- var _el$dataset, _el$dataset2;
70
- return ((_el$dataset = el.dataset) === null || _el$dataset === void 0 ? void 0 : _el$dataset[placeholderDataKey]) || ((_el$dataset2 = el.dataset) === null || _el$dataset2 === void 0 ? void 0 : _el$dataset2[replaceDataKey]);
71
- }
72
- handleAddedNode(el) {
73
- var _el$dataset3, _el$dataset4;
74
- // If it placeholder does not already exist, add it to the map
75
- const placeholderId = (_el$dataset3 = el.dataset) === null || _el$dataset3 === void 0 ? void 0 : _el$dataset3[placeholderDataKey];
76
- if (placeholderId) {
77
- return this.handleAddedPlaceholderNode(el, placeholderId);
78
- }
79
- const replaceId = (_el$dataset4 = el.dataset) === null || _el$dataset4 === void 0 ? void 0 : _el$dataset4[replaceDataKey];
80
- if (replaceId) {
81
- return this.handleAddedReplaceNode(el, replaceId);
82
- }
83
- return Promise.resolve({
84
- shouldIgnore: false
85
- });
86
- }
87
- clear() {
88
- this.placeholders.clear();
89
- this.intersectionObserver.disconnect();
90
- }
91
- handleAddedPlaceholderNode(el, placeholderId) {
92
- if (this.isExistingPlaceholder(placeholderId)) {
93
- return this.isAddedPlaceholderMatchingSize(el, placeholderId).then(isMatching => ({
94
- shouldIgnore: isMatching
95
- }));
96
- }
97
- return this.registerPlaceholder(el, placeholderId).then(() => ({
98
- shouldIgnore: false
99
- }));
100
- }
101
- handleAddedReplaceNode(el, placeholderId) {
102
- if (this.isExistingPlaceholder(placeholderId)) {
103
- return this.isAddedReplaceMatchingSize(el, placeholderId).then(isMatching => ({
104
- shouldIgnore: isMatching
105
- }));
106
- }
107
- return Promise.resolve({
108
- shouldIgnore: false
109
- });
110
- }
111
- isExistingPlaceholder(placeholderId) {
112
- return this.placeholders.has(placeholderId);
113
- }
114
- registerPlaceholder(el, placeholderId) {
115
- return this.getSize(el, placeholderId).then(size => {
116
- this.placeholders.set(placeholderId, size);
117
- });
118
- }
119
- getSize(el, placeholderId) {
120
- return new Promise(resolve => {
121
- this.getSizeCallbacks.set(placeholderId, resolve);
122
- this.intersectionObserver.observe(el);
123
- });
124
- }
125
- isAddedPlaceholderMatchingSize(el, placeholderId) {
126
- return new Promise(resolve => {
127
- this.isAddedPlaceholderMatchingSizeCallbacks.set(placeholderId, resolve);
128
- this.intersectionObserver.observe(el);
129
- });
130
- }
131
- isAddedReplaceMatchingSize(el, placeholderId) {
132
- return new Promise(resolve => {
133
- this.isAddedReplaceMatchingSizeCallbacks.set(placeholderId, resolve);
134
- this.intersectionObserver.observe(el);
135
- });
136
- }
137
- areRectsSameSize(a, b) {
138
- return Math.abs(a.width - b.width) < 1 && Math.abs(a.height - b.height) < 1;
139
- }
140
- }
@@ -1,41 +0,0 @@
1
- export function createPlaceholderElement(id) {
2
- const el = document.createElement('div');
3
- el.dataset.editorLnvPlaceholder = id;
4
- return el;
5
- }
6
- export function createReplaceElement(id) {
7
- const el = document.createElement('div');
8
- el.dataset.editorLnvPlaceholderReplace = id;
9
- return el;
10
- }
11
- export function handleElements(elements, handler, observerCallback, callback) {
12
- const [first, ...rest] = elements;
13
- handler.handleAddedNode(first.element).then(result => {
14
- if (!rest.length) {
15
- // Recursion terminating condition
16
- callback(result);
17
- } else {
18
- // Recursively handle the rest of the elements
19
- handleElements(rest, handler, observerCallback, callback);
20
- }
21
- });
22
- observerCallback([{
23
- target: first.element,
24
- boundingClientRect: first.rect
25
- }]);
26
- }
27
- export function createMockIntersectionObserver(cbRef) {
28
- return class {
29
- constructor(fn) {
30
- cbRef.current = entries => fn(entries.map(entry => {
31
- return {
32
- ...entry,
33
- intersectionRatio: 1
34
- };
35
- }));
36
- }
37
- observe() {}
38
- unobserve() {}
39
- disconnect() {}
40
- };
41
- }
@@ -1,180 +0,0 @@
1
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
- import _createClass from "@babel/runtime/helpers/createClass";
3
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
- var placeholderDataKey = 'editorLnvPlaceholder'; // data-editor-lnv-placeholder
5
- var replaceDataKey = 'editorLnvPlaceholderReplace'; // data-editor-lnv-placeholder-replace
6
-
7
- export var EditorLnvHandler = /*#__PURE__*/function () {
8
- function EditorLnvHandler() {
9
- var _this = this;
10
- _classCallCheck(this, EditorLnvHandler);
11
- _defineProperty(this, "placeholders", new Map());
12
- _defineProperty(this, "getSizeCallbacks", new Map());
13
- _defineProperty(this, "isAddedPlaceholderMatchingSizeCallbacks", new Map());
14
- _defineProperty(this, "isAddedReplaceMatchingSizeCallbacks", new Map());
15
- _defineProperty(this, "intersectionObserverCallback", function (_ref) {
16
- var _target$dataset, _target$dataset2;
17
- var target = _ref.target,
18
- boundingClientRect = _ref.boundingClientRect;
19
- _this.intersectionObserver.unobserve(target);
20
- if (!(target instanceof HTMLElement)) {
21
- return;
22
- }
23
- var placeholderId = (_target$dataset = target.dataset) === null || _target$dataset === void 0 ? void 0 : _target$dataset[placeholderDataKey];
24
- if (placeholderId && _this.getSizeCallbacks.has(placeholderId)) {
25
- var _resolve = _this.getSizeCallbacks.get(placeholderId);
26
- _this.getSizeCallbacks.delete(placeholderId);
27
- if (!_resolve) {
28
- return;
29
- }
30
- _resolve({
31
- x: boundingClientRect.x,
32
- y: boundingClientRect.y,
33
- width: boundingClientRect.width,
34
- height: boundingClientRect.height
35
- });
36
- return;
37
- }
38
- if (placeholderId && _this.isAddedPlaceholderMatchingSizeCallbacks.has(placeholderId)) {
39
- var _resolve2 = _this.isAddedPlaceholderMatchingSizeCallbacks.get(placeholderId);
40
- _this.isAddedPlaceholderMatchingSizeCallbacks.delete(placeholderId);
41
- if (!_resolve2) {
42
- return;
43
- }
44
- var placeholder = _this.placeholders.get(placeholderId);
45
- if (!placeholder) {
46
- _resolve2(false);
47
- return;
48
- }
49
- _resolve2(_this.areRectsSameSize(placeholder, boundingClientRect));
50
- return;
51
- }
52
- var replaceId = (_target$dataset2 = target.dataset) === null || _target$dataset2 === void 0 ? void 0 : _target$dataset2[replaceDataKey];
53
- if (replaceId && _this.isAddedReplaceMatchingSizeCallbacks.has(replaceId)) {
54
- var _resolve3 = _this.isAddedReplaceMatchingSizeCallbacks.get(replaceId);
55
- _this.isAddedReplaceMatchingSizeCallbacks.delete(replaceId);
56
- if (!_resolve3) {
57
- return;
58
- }
59
- var _placeholder = _this.placeholders.get(replaceId);
60
- if (!_placeholder) {
61
- _resolve3(false);
62
- return;
63
- }
64
- _this.placeholders.delete(replaceId);
65
- _resolve3(_this.areRectsSameSize(_placeholder, boundingClientRect));
66
- return;
67
- }
68
- });
69
- this.intersectionObserver = new IntersectionObserver(function (entries) {
70
- return entries.filter(function (entry) {
71
- return entry.intersectionRatio > 0;
72
- }).forEach(_this.intersectionObserverCallback);
73
- });
74
- }
75
- return _createClass(EditorLnvHandler, [{
76
- key: "shouldHandleAddedNode",
77
- value: function shouldHandleAddedNode(el) {
78
- var _el$dataset, _el$dataset2;
79
- return ((_el$dataset = el.dataset) === null || _el$dataset === void 0 ? void 0 : _el$dataset[placeholderDataKey]) || ((_el$dataset2 = el.dataset) === null || _el$dataset2 === void 0 ? void 0 : _el$dataset2[replaceDataKey]);
80
- }
81
- }, {
82
- key: "handleAddedNode",
83
- value: function handleAddedNode(el) {
84
- var _el$dataset3, _el$dataset4;
85
- // If it placeholder does not already exist, add it to the map
86
- var placeholderId = (_el$dataset3 = el.dataset) === null || _el$dataset3 === void 0 ? void 0 : _el$dataset3[placeholderDataKey];
87
- if (placeholderId) {
88
- return this.handleAddedPlaceholderNode(el, placeholderId);
89
- }
90
- var replaceId = (_el$dataset4 = el.dataset) === null || _el$dataset4 === void 0 ? void 0 : _el$dataset4[replaceDataKey];
91
- if (replaceId) {
92
- return this.handleAddedReplaceNode(el, replaceId);
93
- }
94
- return Promise.resolve({
95
- shouldIgnore: false
96
- });
97
- }
98
- }, {
99
- key: "clear",
100
- value: function clear() {
101
- this.placeholders.clear();
102
- this.intersectionObserver.disconnect();
103
- }
104
- }, {
105
- key: "handleAddedPlaceholderNode",
106
- value: function handleAddedPlaceholderNode(el, placeholderId) {
107
- if (this.isExistingPlaceholder(placeholderId)) {
108
- return this.isAddedPlaceholderMatchingSize(el, placeholderId).then(function (isMatching) {
109
- return {
110
- shouldIgnore: isMatching
111
- };
112
- });
113
- }
114
- return this.registerPlaceholder(el, placeholderId).then(function () {
115
- return {
116
- shouldIgnore: false
117
- };
118
- });
119
- }
120
- }, {
121
- key: "handleAddedReplaceNode",
122
- value: function handleAddedReplaceNode(el, placeholderId) {
123
- if (this.isExistingPlaceholder(placeholderId)) {
124
- return this.isAddedReplaceMatchingSize(el, placeholderId).then(function (isMatching) {
125
- return {
126
- shouldIgnore: isMatching
127
- };
128
- });
129
- }
130
- return Promise.resolve({
131
- shouldIgnore: false
132
- });
133
- }
134
- }, {
135
- key: "isExistingPlaceholder",
136
- value: function isExistingPlaceholder(placeholderId) {
137
- return this.placeholders.has(placeholderId);
138
- }
139
- }, {
140
- key: "registerPlaceholder",
141
- value: function registerPlaceholder(el, placeholderId) {
142
- var _this2 = this;
143
- return this.getSize(el, placeholderId).then(function (size) {
144
- _this2.placeholders.set(placeholderId, size);
145
- });
146
- }
147
- }, {
148
- key: "getSize",
149
- value: function getSize(el, placeholderId) {
150
- var _this3 = this;
151
- return new Promise(function (resolve) {
152
- _this3.getSizeCallbacks.set(placeholderId, resolve);
153
- _this3.intersectionObserver.observe(el);
154
- });
155
- }
156
- }, {
157
- key: "isAddedPlaceholderMatchingSize",
158
- value: function isAddedPlaceholderMatchingSize(el, placeholderId) {
159
- var _this4 = this;
160
- return new Promise(function (resolve) {
161
- _this4.isAddedPlaceholderMatchingSizeCallbacks.set(placeholderId, resolve);
162
- _this4.intersectionObserver.observe(el);
163
- });
164
- }
165
- }, {
166
- key: "isAddedReplaceMatchingSize",
167
- value: function isAddedReplaceMatchingSize(el, placeholderId) {
168
- var _this5 = this;
169
- return new Promise(function (resolve) {
170
- _this5.isAddedReplaceMatchingSizeCallbacks.set(placeholderId, resolve);
171
- _this5.intersectionObserver.observe(el);
172
- });
173
- }
174
- }, {
175
- key: "areRectsSameSize",
176
- value: function areRectsSameSize(a, b) {
177
- return Math.abs(a.width - b.width) < 1 && Math.abs(a.height - b.height) < 1;
178
- }
179
- }]);
180
- }();