UNPKG

@launchmenu/core

Version:

An environment for visual keyboard controlled applets

65 lines 3.75 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Content = void 0; const react_1 = __importDefault(require("react")); const model_react_1 = require("model-react"); /** * A standard content class to handle keyboard scrolling concerns */ class Content { /** * Creates a new content instance * @param view The content to be shown */ constructor(view = react_1.default.createElement(react_1.default.Fragment, null)) { this.scrollPercentage = new model_react_1.Field(0); this.scrollHeight = new model_react_1.Field(0); this.view = view; } /** * Sets the number of pixels that can be scrolled * @param height The available height that can be scrolled (difference between container and child height) */ setScrollHeight(height) { this.scrollHeight.set(height); } /** * Retrieves the scroll height * @param hook The hook to subscribe to changes * @returns The scroll height */ getScrollHeight(hook) { return this.scrollHeight.get(hook); } /** * Sets the percentage of the area scrolled so far (between 0 and 1) * @param percentage The new scroll percentage */ setScrollPercentage(percentage) { this.scrollPercentage.set(Math.max(0, Math.min(percentage, 1))); } /** * Retrieves the percentage of the area scrolled so far (between 0 and 1) * @param hook The hook to subscribe to changes * @returns The scroll percentage */ getScrollPercentage(hook) { return this.scrollPercentage.get(hook); } /** * Retrieves the number of pixels scrolled so far * @param scrollHeight The available height to scroll (defaults to the amount set on this content) * @param hook The hook to subscribe to changes * @returns The total scroll offset */ getScrollOffset(scrollHeight, hook) { if (scrollHeight === undefined) scrollHeight = this.getScrollHeight(hook); return this.getScrollPercentage(hook) * scrollHeight; } } exports.Content = Content; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZW50L0NvbnRlbnQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUMxQiw2Q0FBNkM7QUFJN0M7O0dBRUc7QUFDSCxNQUFhLE9BQU87SUFNaEI7OztPQUdHO0lBQ0gsWUFBbUIsT0FBMkIsNkRBQUs7UUFQekMscUJBQWdCLEdBQUcsSUFBSSxtQkFBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLGlCQUFZLEdBQUcsSUFBSSxtQkFBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBT2xDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxlQUFlLENBQUMsTUFBYztRQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGVBQWUsQ0FBQyxJQUFnQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxtQkFBbUIsQ0FBQyxVQUFrQjtRQUN6QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLG1CQUFtQixDQUFDLElBQWdCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxlQUFlLENBQUMsWUFBcUIsRUFBRSxJQUFnQjtRQUMxRCxJQUFJLFlBQVksS0FBSyxTQUFTO1lBQUUsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUUsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDO0lBQ3pELENBQUM7Q0FDSjtBQTFERCwwQkEwREMifQ==