@dreamcommerce/aurora 2.9.0-14 → 2.9.0-16
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/build/cjs/packages/aurora/src/components/scroll_sync/context/scroll_sync_provider.js +0 -70
- package/build/cjs/packages/aurora/src/components/scroll_sync/context/scroll_sync_provider.js.map +1 -1
- package/build/cjs/packages/aurora/src/components/scroll_sync/context/scroll_syncer_service.js +77 -0
- package/build/cjs/packages/aurora/src/components/scroll_sync/context/scroll_syncer_service.js.map +1 -0
- package/build/cjs/packages/aurora/src/components/scroll_sync/context/setup_scroll_syncer.js +2 -2
- package/build/cjs/packages/aurora/src/components/tree/index.js +4 -3
- package/build/cjs/packages/aurora/src/components/tree/index.js.map +1 -1
- package/build/esm/packages/aurora/src/components/scroll_sync/context/scroll_sync_provider.d.ts +0 -19
- package/build/esm/packages/aurora/src/components/scroll_sync/context/scroll_sync_provider.js +1 -70
- package/build/esm/packages/aurora/src/components/scroll_sync/context/scroll_sync_provider.js.map +1 -1
- package/build/esm/packages/aurora/src/components/scroll_sync/context/scroll_syncer_service.d.ts +18 -0
- package/build/esm/packages/aurora/src/components/scroll_sync/context/scroll_syncer_service.js +73 -0
- package/build/esm/packages/aurora/src/components/scroll_sync/context/scroll_syncer_service.js.map +1 -0
- package/build/esm/packages/aurora/src/components/scroll_sync/context/setup_scroll_syncer.d.ts +2 -2
- package/build/esm/packages/aurora/src/components/scroll_sync/context/setup_scroll_syncer.js +2 -2
- package/build/esm/packages/aurora/src/components/tree/index.d.ts +6 -3
- package/build/esm/packages/aurora/src/components/tree/index.js +4 -3
- package/build/esm/packages/aurora/src/components/tree/index.js.map +1 -1
- package/package.json +1 -1
package/build/cjs/packages/aurora/src/components/scroll_sync/context/scroll_sync_provider.js
CHANGED
|
@@ -11,75 +11,6 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
11
11
|
|
|
12
12
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
13
13
|
|
|
14
|
-
const SCROLL_CONTAINER_ID_ATTRIBUTE = 'data-scroll-sync-id';
|
|
15
|
-
class ScrollSyncer {
|
|
16
|
-
constructor() {
|
|
17
|
-
this.scrollContainers = [];
|
|
18
|
-
this.proportional = true;
|
|
19
|
-
this.vertical = true;
|
|
20
|
-
this.horizontal = true;
|
|
21
|
-
this.enabled = true;
|
|
22
|
-
this._addScrollEvent = (container) => {
|
|
23
|
-
container.$el.addEventListener('scroll', this._handleScrollEvent);
|
|
24
|
-
};
|
|
25
|
-
this._handleScrollEvent = (ev) => {
|
|
26
|
-
const $container = ev.target;
|
|
27
|
-
const containerId = $container.getAttribute(SCROLL_CONTAINER_ID_ATTRIBUTE);
|
|
28
|
-
if (!containerId)
|
|
29
|
-
return;
|
|
30
|
-
const container = this._getContentContainer(containerId);
|
|
31
|
-
if (!container)
|
|
32
|
-
return;
|
|
33
|
-
window.requestAnimationFrame(() => this._syncScrollPositions(container));
|
|
34
|
-
};
|
|
35
|
-
this._removeScrollEvent = (container) => {
|
|
36
|
-
container.$el.removeEventListener('scroll', this._handleScrollEvent);
|
|
37
|
-
};
|
|
38
|
-
this._syncScrollPosition = (containerToSync, scrolledContainer) => {
|
|
39
|
-
const $scrolledContainerEl = scrolledContainer.$el;
|
|
40
|
-
const { scrollTop, scrollHeight, clientHeight, scrollLeft, scrollWidth, clientWidth } = $scrolledContainerEl;
|
|
41
|
-
const scrollTopOffset = scrollHeight - clientHeight;
|
|
42
|
-
const scrollLeftOffset = scrollWidth - clientWidth;
|
|
43
|
-
const paneHeight = containerToSync.$el.scrollHeight - clientHeight;
|
|
44
|
-
const paneWidth = containerToSync.$el.scrollWidth - clientWidth;
|
|
45
|
-
if (this.vertical && scrollTopOffset > 0) {
|
|
46
|
-
containerToSync.$el.scrollTop = this.proportional ? (paneHeight * scrollTop) / scrollTopOffset : scrollTop;
|
|
47
|
-
}
|
|
48
|
-
if (this.horizontal && scrollLeftOffset > 0) {
|
|
49
|
-
containerToSync.$el.scrollLeft = this.proportional ? (paneWidth * scrollLeft) / scrollLeftOffset : scrollLeft;
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
this._syncScrollPositions = (scrolledContainer) => {
|
|
53
|
-
this.scrollContainers.forEach((containerToSync) => {
|
|
54
|
-
if (containerToSync.id !== scrolledContainer.id) {
|
|
55
|
-
this._syncScrollPosition(containerToSync, scrolledContainer);
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
};
|
|
59
|
-
this._getContentContainer = (id) => {
|
|
60
|
-
return this.scrollContainers.find((currContainer) => currContainer.id === id);
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
registerContainer(container) {
|
|
64
|
-
container.$el.setAttribute(SCROLL_CONTAINER_ID_ATTRIBUTE, container.id);
|
|
65
|
-
this.scrollContainers.push(container);
|
|
66
|
-
this._addScrollEvent(container);
|
|
67
|
-
}
|
|
68
|
-
unregisterContainer(id) {
|
|
69
|
-
const container = this._getContentContainer(id);
|
|
70
|
-
if (!container)
|
|
71
|
-
return;
|
|
72
|
-
this.scrollContainers = this.scrollContainers.filter((currContainer) => container.id !== currContainer.id);
|
|
73
|
-
container.$el.removeAttribute(SCROLL_CONTAINER_ID_ATTRIBUTE);
|
|
74
|
-
this._removeScrollEvent(container);
|
|
75
|
-
}
|
|
76
|
-
hasContainer(id) {
|
|
77
|
-
return !!this.scrollContainers.find((container) => container.id === id);
|
|
78
|
-
}
|
|
79
|
-
dispose() {
|
|
80
|
-
// unregister all events
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
14
|
const ScrollSyncProvider = ({ children }) => {
|
|
84
15
|
const scrollSyncerSetup = use_lazy_ref.useLazyRef(() => setup_scroll_syncer.setupScrollSyncer());
|
|
85
16
|
const value = {
|
|
@@ -97,5 +28,4 @@ const ScrollSyncProvider = ({ children }) => {
|
|
|
97
28
|
};
|
|
98
29
|
|
|
99
30
|
exports.ScrollSyncProvider = ScrollSyncProvider;
|
|
100
|
-
exports.ScrollSyncer = ScrollSyncer;
|
|
101
31
|
//# sourceMappingURL=scroll_sync_provider.js.map
|
package/build/cjs/packages/aurora/src/components/scroll_sync/context/scroll_sync_provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const SCROLL_CONTAINER_ID_ATTRIBUTE = 'data-scroll-sync-id';
|
|
6
|
+
class ScrollSyncerService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.scrollContainers = [];
|
|
9
|
+
this.proportional = true;
|
|
10
|
+
this.vertical = true;
|
|
11
|
+
this.horizontal = true;
|
|
12
|
+
this.enabled = true;
|
|
13
|
+
this._addScrollEvent = (container) => {
|
|
14
|
+
container.$el.addEventListener('scroll', this._handleScrollEvent);
|
|
15
|
+
};
|
|
16
|
+
this._handleScrollEvent = (ev) => {
|
|
17
|
+
const $container = ev.target;
|
|
18
|
+
const containerId = $container.getAttribute(SCROLL_CONTAINER_ID_ATTRIBUTE);
|
|
19
|
+
if (!containerId)
|
|
20
|
+
return;
|
|
21
|
+
const container = this._getContentContainer(containerId);
|
|
22
|
+
if (!container)
|
|
23
|
+
return;
|
|
24
|
+
window.requestAnimationFrame(() => this._syncScrollPositions(container));
|
|
25
|
+
};
|
|
26
|
+
this._removeScrollEvent = (container) => {
|
|
27
|
+
container.$el.removeEventListener('scroll', this._handleScrollEvent);
|
|
28
|
+
};
|
|
29
|
+
this._syncScrollPosition = (containerToSync, scrolledContainer) => {
|
|
30
|
+
const $scrolledContainerEl = scrolledContainer.$el;
|
|
31
|
+
const { scrollTop, scrollHeight, clientHeight, scrollLeft, scrollWidth, clientWidth } = $scrolledContainerEl;
|
|
32
|
+
const scrollTopOffset = scrollHeight - clientHeight;
|
|
33
|
+
const scrollLeftOffset = scrollWidth - clientWidth;
|
|
34
|
+
const paneHeight = containerToSync.$el.scrollHeight - clientHeight;
|
|
35
|
+
const paneWidth = containerToSync.$el.scrollWidth - clientWidth;
|
|
36
|
+
if (this.vertical && scrollTopOffset > 0) {
|
|
37
|
+
containerToSync.$el.scrollTop = this.proportional ? (paneHeight * scrollTop) / scrollTopOffset : scrollTop;
|
|
38
|
+
}
|
|
39
|
+
if (this.horizontal && scrollLeftOffset > 0) {
|
|
40
|
+
containerToSync.$el.scrollLeft = this.proportional ? (paneWidth * scrollLeft) / scrollLeftOffset : scrollLeft;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
this._syncScrollPositions = (scrolledContainer) => {
|
|
44
|
+
this.scrollContainers.forEach((containerToSync) => {
|
|
45
|
+
if (containerToSync.id !== scrolledContainer.id) {
|
|
46
|
+
this._syncScrollPosition(containerToSync, scrolledContainer);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
this._getContentContainer = (id) => {
|
|
51
|
+
return this.scrollContainers.find((currContainer) => currContainer.id === id);
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
registerContainer(container) {
|
|
55
|
+
container.$el.setAttribute(SCROLL_CONTAINER_ID_ATTRIBUTE, container.id);
|
|
56
|
+
this.scrollContainers.push(container);
|
|
57
|
+
this._addScrollEvent(container);
|
|
58
|
+
}
|
|
59
|
+
unregisterContainer(id) {
|
|
60
|
+
const container = this._getContentContainer(id);
|
|
61
|
+
if (!container)
|
|
62
|
+
return;
|
|
63
|
+
//TODO dokonczyc scroll na iframe
|
|
64
|
+
// if (container.$el instanceof HTMLIFrameElement) {
|
|
65
|
+
// container.$el = container.$el.contentWindow;
|
|
66
|
+
// }
|
|
67
|
+
this.scrollContainers = this.scrollContainers.filter((currContainer) => container.id !== currContainer.id);
|
|
68
|
+
container.$el.removeAttribute(SCROLL_CONTAINER_ID_ATTRIBUTE);
|
|
69
|
+
this._removeScrollEvent(container);
|
|
70
|
+
}
|
|
71
|
+
hasContainer(id) {
|
|
72
|
+
return !!this.scrollContainers.find((container) => container.id === id);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
exports.ScrollSyncerService = ScrollSyncerService;
|
|
77
|
+
//# sourceMappingURL=scroll_syncer_service.js.map
|
package/build/cjs/packages/aurora/src/components/scroll_sync/context/scroll_syncer_service.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var scroll_syncer_service = require('./scroll_syncer_service.js');
|
|
6
6
|
|
|
7
7
|
const setupScrollSyncer = () => {
|
|
8
|
-
return { scrollSyncerApi: new
|
|
8
|
+
return { scrollSyncerApi: new scroll_syncer_service.ScrollSyncerService() };
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
exports.setupScrollSyncer = setupScrollSyncer;
|
|
@@ -13,10 +13,11 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
13
13
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
14
14
|
var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
// eslint-disable-next-line react/display-name
|
|
17
|
+
const Tree = React__default['default'].forwardRef(({ children, cssClassNames, cssStyles, onMouseEnter, onMouseLeave }, ref) => {
|
|
17
18
|
return (React__default['default'].createElement(tree_provider.TreeProvider, null,
|
|
18
|
-
React__default['default'].createElement("ul", { ref: ref, className: classnames__default['default'](main_module['default'][css_classes.TREE_CSS_CLASSES.tree], css_classes.TREE_CSS_CLASSES.tree, cssClassNames) }, children)));
|
|
19
|
-
};
|
|
19
|
+
React__default['default'].createElement("ul", { onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, ref: ref, style: cssStyles, className: classnames__default['default'](main_module['default'][css_classes.TREE_CSS_CLASSES.tree], css_classes.TREE_CSS_CLASSES.tree, cssClassNames) }, children)));
|
|
20
|
+
});
|
|
20
21
|
|
|
21
22
|
exports.Tree = Tree;
|
|
22
23
|
exports.default = Tree;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
package/build/esm/packages/aurora/src/components/scroll_sync/context/scroll_sync_provider.d.ts
CHANGED
|
@@ -1,21 +1,2 @@
|
|
|
1
1
|
import { PropsWithChildren } from 'react';
|
|
2
|
-
import { TScrollSyncContainer } from "./scroll_sync_context";
|
|
3
|
-
export declare class ScrollSyncer {
|
|
4
|
-
private scrollContainers;
|
|
5
|
-
proportional: boolean;
|
|
6
|
-
vertical: boolean;
|
|
7
|
-
horizontal: boolean;
|
|
8
|
-
enabled: boolean;
|
|
9
|
-
constructor();
|
|
10
|
-
registerContainer(container: TScrollSyncContainer): void;
|
|
11
|
-
unregisterContainer(id: string): void;
|
|
12
|
-
private _addScrollEvent;
|
|
13
|
-
private _handleScrollEvent;
|
|
14
|
-
private _removeScrollEvent;
|
|
15
|
-
private _syncScrollPosition;
|
|
16
|
-
private _syncScrollPositions;
|
|
17
|
-
private _getContentContainer;
|
|
18
|
-
hasContainer(id: string): boolean;
|
|
19
|
-
dispose(): void;
|
|
20
|
-
}
|
|
21
2
|
export declare const ScrollSyncProvider: ({ children }: PropsWithChildren<{}>) => JSX.Element;
|
package/build/esm/packages/aurora/src/components/scroll_sync/context/scroll_sync_provider.js
CHANGED
|
@@ -3,75 +3,6 @@ import { useLazyRef } from '../../../hooks/use_lazy_ref.js';
|
|
|
3
3
|
import { ScrollSyncContextProvider } from './scroll_sync_context.js';
|
|
4
4
|
import { setupScrollSyncer } from './setup_scroll_syncer.js';
|
|
5
5
|
|
|
6
|
-
const SCROLL_CONTAINER_ID_ATTRIBUTE = 'data-scroll-sync-id';
|
|
7
|
-
class ScrollSyncer {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.scrollContainers = [];
|
|
10
|
-
this.proportional = true;
|
|
11
|
-
this.vertical = true;
|
|
12
|
-
this.horizontal = true;
|
|
13
|
-
this.enabled = true;
|
|
14
|
-
this._addScrollEvent = (container) => {
|
|
15
|
-
container.$el.addEventListener('scroll', this._handleScrollEvent);
|
|
16
|
-
};
|
|
17
|
-
this._handleScrollEvent = (ev) => {
|
|
18
|
-
const $container = ev.target;
|
|
19
|
-
const containerId = $container.getAttribute(SCROLL_CONTAINER_ID_ATTRIBUTE);
|
|
20
|
-
if (!containerId)
|
|
21
|
-
return;
|
|
22
|
-
const container = this._getContentContainer(containerId);
|
|
23
|
-
if (!container)
|
|
24
|
-
return;
|
|
25
|
-
window.requestAnimationFrame(() => this._syncScrollPositions(container));
|
|
26
|
-
};
|
|
27
|
-
this._removeScrollEvent = (container) => {
|
|
28
|
-
container.$el.removeEventListener('scroll', this._handleScrollEvent);
|
|
29
|
-
};
|
|
30
|
-
this._syncScrollPosition = (containerToSync, scrolledContainer) => {
|
|
31
|
-
const $scrolledContainerEl = scrolledContainer.$el;
|
|
32
|
-
const { scrollTop, scrollHeight, clientHeight, scrollLeft, scrollWidth, clientWidth } = $scrolledContainerEl;
|
|
33
|
-
const scrollTopOffset = scrollHeight - clientHeight;
|
|
34
|
-
const scrollLeftOffset = scrollWidth - clientWidth;
|
|
35
|
-
const paneHeight = containerToSync.$el.scrollHeight - clientHeight;
|
|
36
|
-
const paneWidth = containerToSync.$el.scrollWidth - clientWidth;
|
|
37
|
-
if (this.vertical && scrollTopOffset > 0) {
|
|
38
|
-
containerToSync.$el.scrollTop = this.proportional ? (paneHeight * scrollTop) / scrollTopOffset : scrollTop;
|
|
39
|
-
}
|
|
40
|
-
if (this.horizontal && scrollLeftOffset > 0) {
|
|
41
|
-
containerToSync.$el.scrollLeft = this.proportional ? (paneWidth * scrollLeft) / scrollLeftOffset : scrollLeft;
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
this._syncScrollPositions = (scrolledContainer) => {
|
|
45
|
-
this.scrollContainers.forEach((containerToSync) => {
|
|
46
|
-
if (containerToSync.id !== scrolledContainer.id) {
|
|
47
|
-
this._syncScrollPosition(containerToSync, scrolledContainer);
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
};
|
|
51
|
-
this._getContentContainer = (id) => {
|
|
52
|
-
return this.scrollContainers.find((currContainer) => currContainer.id === id);
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
registerContainer(container) {
|
|
56
|
-
container.$el.setAttribute(SCROLL_CONTAINER_ID_ATTRIBUTE, container.id);
|
|
57
|
-
this.scrollContainers.push(container);
|
|
58
|
-
this._addScrollEvent(container);
|
|
59
|
-
}
|
|
60
|
-
unregisterContainer(id) {
|
|
61
|
-
const container = this._getContentContainer(id);
|
|
62
|
-
if (!container)
|
|
63
|
-
return;
|
|
64
|
-
this.scrollContainers = this.scrollContainers.filter((currContainer) => container.id !== currContainer.id);
|
|
65
|
-
container.$el.removeAttribute(SCROLL_CONTAINER_ID_ATTRIBUTE);
|
|
66
|
-
this._removeScrollEvent(container);
|
|
67
|
-
}
|
|
68
|
-
hasContainer(id) {
|
|
69
|
-
return !!this.scrollContainers.find((container) => container.id === id);
|
|
70
|
-
}
|
|
71
|
-
dispose() {
|
|
72
|
-
// unregister all events
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
6
|
const ScrollSyncProvider = ({ children }) => {
|
|
76
7
|
const scrollSyncerSetup = useLazyRef(() => setupScrollSyncer());
|
|
77
8
|
const value = {
|
|
@@ -88,5 +19,5 @@ const ScrollSyncProvider = ({ children }) => {
|
|
|
88
19
|
return React.createElement(ScrollSyncContextProvider, { value: value }, children);
|
|
89
20
|
};
|
|
90
21
|
|
|
91
|
-
export { ScrollSyncProvider
|
|
22
|
+
export { ScrollSyncProvider };
|
|
92
23
|
//# sourceMappingURL=scroll_sync_provider.js.map
|
package/build/esm/packages/aurora/src/components/scroll_sync/context/scroll_sync_provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
package/build/esm/packages/aurora/src/components/scroll_sync/context/scroll_syncer_service.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { TScrollSyncContainer } from "./scroll_sync_context";
|
|
2
|
+
export declare class ScrollSyncerService {
|
|
3
|
+
private scrollContainers;
|
|
4
|
+
proportional: boolean;
|
|
5
|
+
vertical: boolean;
|
|
6
|
+
horizontal: boolean;
|
|
7
|
+
enabled: boolean;
|
|
8
|
+
constructor();
|
|
9
|
+
registerContainer(container: TScrollSyncContainer): void;
|
|
10
|
+
unregisterContainer(id: string): void;
|
|
11
|
+
private _addScrollEvent;
|
|
12
|
+
private _handleScrollEvent;
|
|
13
|
+
private _removeScrollEvent;
|
|
14
|
+
private _syncScrollPosition;
|
|
15
|
+
private _syncScrollPositions;
|
|
16
|
+
private _getContentContainer;
|
|
17
|
+
hasContainer(id: string): boolean;
|
|
18
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
const SCROLL_CONTAINER_ID_ATTRIBUTE = 'data-scroll-sync-id';
|
|
2
|
+
class ScrollSyncerService {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.scrollContainers = [];
|
|
5
|
+
this.proportional = true;
|
|
6
|
+
this.vertical = true;
|
|
7
|
+
this.horizontal = true;
|
|
8
|
+
this.enabled = true;
|
|
9
|
+
this._addScrollEvent = (container) => {
|
|
10
|
+
container.$el.addEventListener('scroll', this._handleScrollEvent);
|
|
11
|
+
};
|
|
12
|
+
this._handleScrollEvent = (ev) => {
|
|
13
|
+
const $container = ev.target;
|
|
14
|
+
const containerId = $container.getAttribute(SCROLL_CONTAINER_ID_ATTRIBUTE);
|
|
15
|
+
if (!containerId)
|
|
16
|
+
return;
|
|
17
|
+
const container = this._getContentContainer(containerId);
|
|
18
|
+
if (!container)
|
|
19
|
+
return;
|
|
20
|
+
window.requestAnimationFrame(() => this._syncScrollPositions(container));
|
|
21
|
+
};
|
|
22
|
+
this._removeScrollEvent = (container) => {
|
|
23
|
+
container.$el.removeEventListener('scroll', this._handleScrollEvent);
|
|
24
|
+
};
|
|
25
|
+
this._syncScrollPosition = (containerToSync, scrolledContainer) => {
|
|
26
|
+
const $scrolledContainerEl = scrolledContainer.$el;
|
|
27
|
+
const { scrollTop, scrollHeight, clientHeight, scrollLeft, scrollWidth, clientWidth } = $scrolledContainerEl;
|
|
28
|
+
const scrollTopOffset = scrollHeight - clientHeight;
|
|
29
|
+
const scrollLeftOffset = scrollWidth - clientWidth;
|
|
30
|
+
const paneHeight = containerToSync.$el.scrollHeight - clientHeight;
|
|
31
|
+
const paneWidth = containerToSync.$el.scrollWidth - clientWidth;
|
|
32
|
+
if (this.vertical && scrollTopOffset > 0) {
|
|
33
|
+
containerToSync.$el.scrollTop = this.proportional ? (paneHeight * scrollTop) / scrollTopOffset : scrollTop;
|
|
34
|
+
}
|
|
35
|
+
if (this.horizontal && scrollLeftOffset > 0) {
|
|
36
|
+
containerToSync.$el.scrollLeft = this.proportional ? (paneWidth * scrollLeft) / scrollLeftOffset : scrollLeft;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
this._syncScrollPositions = (scrolledContainer) => {
|
|
40
|
+
this.scrollContainers.forEach((containerToSync) => {
|
|
41
|
+
if (containerToSync.id !== scrolledContainer.id) {
|
|
42
|
+
this._syncScrollPosition(containerToSync, scrolledContainer);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
this._getContentContainer = (id) => {
|
|
47
|
+
return this.scrollContainers.find((currContainer) => currContainer.id === id);
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
registerContainer(container) {
|
|
51
|
+
container.$el.setAttribute(SCROLL_CONTAINER_ID_ATTRIBUTE, container.id);
|
|
52
|
+
this.scrollContainers.push(container);
|
|
53
|
+
this._addScrollEvent(container);
|
|
54
|
+
}
|
|
55
|
+
unregisterContainer(id) {
|
|
56
|
+
const container = this._getContentContainer(id);
|
|
57
|
+
if (!container)
|
|
58
|
+
return;
|
|
59
|
+
//TODO dokonczyc scroll na iframe
|
|
60
|
+
// if (container.$el instanceof HTMLIFrameElement) {
|
|
61
|
+
// container.$el = container.$el.contentWindow;
|
|
62
|
+
// }
|
|
63
|
+
this.scrollContainers = this.scrollContainers.filter((currContainer) => container.id !== currContainer.id);
|
|
64
|
+
container.$el.removeAttribute(SCROLL_CONTAINER_ID_ATTRIBUTE);
|
|
65
|
+
this._removeScrollEvent(container);
|
|
66
|
+
}
|
|
67
|
+
hasContainer(id) {
|
|
68
|
+
return !!this.scrollContainers.find((container) => container.id === id);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export { ScrollSyncerService };
|
|
73
|
+
//# sourceMappingURL=scroll_syncer_service.js.map
|
package/build/esm/packages/aurora/src/components/scroll_sync/context/scroll_syncer_service.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ScrollSyncerService } from './scroll_syncer_service.js';
|
|
2
2
|
|
|
3
3
|
const setupScrollSyncer = () => {
|
|
4
|
-
return { scrollSyncerApi: new
|
|
4
|
+
return { scrollSyncerApi: new ScrollSyncerService() };
|
|
5
5
|
};
|
|
6
6
|
|
|
7
7
|
export { setupScrollSyncer };
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { TPropsWithChildren } from "../../typings/general";
|
|
3
2
|
declare type TTreeProps = {
|
|
4
3
|
cssClassNames?: string;
|
|
5
|
-
|
|
4
|
+
cssStyles?: React.CSSProperties;
|
|
5
|
+
onMouseEnter?: (event: React.MouseEvent<HTMLUListElement, MouseEvent>) => void;
|
|
6
|
+
onMouseLeave?: (event: React.MouseEvent<HTMLUListElement, MouseEvent>) => void;
|
|
6
7
|
};
|
|
7
|
-
export declare const Tree:
|
|
8
|
+
export declare const Tree: React.ForwardRefExoticComponent<TTreeProps & {
|
|
9
|
+
children?: React.ReactNode;
|
|
10
|
+
} & React.RefAttributes<HTMLUListElement>>;
|
|
8
11
|
export default Tree;
|
|
@@ -4,10 +4,11 @@ import { TreeProvider } from './context/tree_provider.js';
|
|
|
4
4
|
import { TREE_CSS_CLASSES } from './css_classes.js';
|
|
5
5
|
import cssClasses from '../../css/tree/main.module.less.js';
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
// eslint-disable-next-line react/display-name
|
|
8
|
+
const Tree = React.forwardRef(({ children, cssClassNames, cssStyles, onMouseEnter, onMouseLeave }, ref) => {
|
|
8
9
|
return (React.createElement(TreeProvider, null,
|
|
9
|
-
React.createElement("ul", { ref: ref, className: classnames(cssClasses[TREE_CSS_CLASSES.tree], TREE_CSS_CLASSES.tree, cssClassNames) }, children)));
|
|
10
|
-
};
|
|
10
|
+
React.createElement("ul", { onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, ref: ref, style: cssStyles, className: classnames(cssClasses[TREE_CSS_CLASSES.tree], TREE_CSS_CLASSES.tree, cssClassNames) }, children)));
|
|
11
|
+
});
|
|
11
12
|
|
|
12
13
|
export default Tree;
|
|
13
14
|
export { Tree };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|