HTMLProjectionNode.mjs 986 B

123456789101112131415161718192021222324252627
  1. import { createProjectionNode } from './create-projection-node.mjs';
  2. import { DocumentProjectionNode } from './DocumentProjectionNode.mjs';
  3. const rootProjectionNode = {
  4. current: undefined,
  5. };
  6. const HTMLProjectionNode = createProjectionNode({
  7. measureScroll: (instance) => ({
  8. x: instance.scrollLeft,
  9. y: instance.scrollTop,
  10. }),
  11. defaultParent: () => {
  12. if (!rootProjectionNode.current) {
  13. const documentNode = new DocumentProjectionNode({});
  14. documentNode.mount(window);
  15. documentNode.setOptions({ layoutScroll: true });
  16. rootProjectionNode.current = documentNode;
  17. }
  18. return rootProjectionNode.current;
  19. },
  20. resetTransform: (instance, value) => {
  21. instance.style.transform = value !== undefined ? value : "none";
  22. },
  23. checkIsScrollRoot: (instance) => Boolean(window.getComputedStyle(instance).position === "fixed"),
  24. });
  25. export { HTMLProjectionNode, rootProjectionNode };