UNPKG

@teamsparta/blog-system

Version:
57 lines 2.73 kB
"use strict"; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = require("react"); var lodash_throttle_1 = __importDefault(require("lodash.throttle")); var logs_1 = require("../logs"); function useScrollRecording(serviceType, contents, percentages, sendLog) { var _a = (0, react_1.useState)(0), scrollPercentage = _a[0], setScrollPercentage = _a[1]; var _b = (0, react_1.useState)([]), triggeredEvents = _b[0], setTriggeredEvents = _b[1]; var sendLogStatusObj = { 20: false, 40: false, 60: false, 80: false, 100: false, }; var content_title = contents.content_title, content_tag = contents.content_tag; (0, react_1.useEffect)(function () { var handleScroll = (0, lodash_throttle_1.default)(function () { var scrollPosition = window.pageYOffset; var pageHeight = document.documentElement.scrollHeight; var windowHeight = window.innerHeight; var scrollableHeight = pageHeight - windowHeight; var currentScrollPercentage = (scrollPosition / scrollableHeight) * 100; var untriggeredEvents = percentages.filter(function (percentage) { return currentScrollPercentage >= percentage && !triggeredEvents.includes(percentage); }); if (untriggeredEvents.length > 0 && !sendLogStatusObj[untriggeredEvents[0]]) { var newPercentage = untriggeredEvents[0]; setScrollPercentage(newPercentage); setTriggeredEvents(__spreadArray(__spreadArray([], triggeredEvents, true), [newPercentage], false)); sendLogStatusObj[newPercentage] = true; (0, logs_1.sendScrollDetailPageLog)(serviceType, content_title, content_tag, newPercentage, sendLog); } }, 400); window.addEventListener("scroll", handleScroll); return function () { window.removeEventListener("scroll", handleScroll); }; }, [percentages, scrollPercentage, triggeredEvents]); return scrollPercentage; } exports.default = useScrollRecording; //# sourceMappingURL=useScrollPercentage.js.map