'use strict';

var createProjectionNode = require('./create-projection-node.js');
var DocumentProjectionNode = require('./DocumentProjectionNode.js');

const rootProjectionNode = {
    current: undefined,
};
const HTMLProjectionNode = createProjectionNode.createProjectionNode({
    measureScroll: (instance) => ({
        x: instance.scrollLeft,
        y: instance.scrollTop,
    }),
    defaultParent: () => {
        if (!rootProjectionNode.current) {
            const documentNode = new DocumentProjectionNode.DocumentProjectionNode({});
            documentNode.mount(window);
            documentNode.setOptions({ layoutScroll: true });
            rootProjectionNode.current = documentNode;
        }
        return rootProjectionNode.current;
    },
    resetTransform: (instance, value) => {
        instance.style.transform = value !== undefined ? value : "none";
    },
    checkIsScrollRoot: (instance) => Boolean(window.getComputedStyle(instance).position === "fixed"),
});

exports.HTMLProjectionNode = HTMLProjectionNode;
exports.rootProjectionNode = rootProjectionNode;
