@launchmenu/core
Version:
An environment for visual keyboard controlled applets
65 lines • 3.75 kB
JavaScript
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==
;