-
Notifications
You must be signed in to change notification settings - Fork 314
Expand file tree
/
Copy pathmakeDomController.js
More file actions
51 lines (41 loc) · 1.22 KB
/
Copy pathmakeDomController.js
File metadata and controls
51 lines (41 loc) · 1.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
module.exports = makeDomController;
module.exports.canAttach = isDomElement;
function makeDomController(domElement, options) {
var elementValid = isDomElement(domElement);
if (!elementValid) {
throw new Error('panzoom requires DOM element to be attached to the DOM tree');
}
var owner = domElement.parentElement;
domElement.scrollTop = 0;
if (!options.disableKeyboardInteraction) {
owner.setAttribute('tabindex', 0);
}
var api = {
getBBox: getBBox,
getOwner: getOwner,
applyTransform: applyTransform,
};
return api;
function getOwner() {
return owner;
}
function getBBox() {
// TODO: We should probably cache this?
return {
left: 0,
top: 0,
width: domElement.clientWidth,
height: domElement.clientHeight
};
}
function applyTransform(transform) {
// TODO: Should we cache this?
domElement.style.transformOrigin = '0 0 0';
domElement.style.setProperty('transform', 'matrix(var(--pz-transform))');
domElement.style.setProperty('--pz-transform',
`${transform.scale}, 0, 0, ${transform.scale}, ${transform.x}, ${transform.y}`);
}
}
function isDomElement(element) {
return element && element.parentElement && element.style;
}