Initial YakPanel commit
This commit is contained in:
81
YakPanel/static/build/addons/fit/fit.js
Normal file
81
YakPanel/static/build/addons/fit/fit.js
Normal file
@@ -0,0 +1,81 @@
|
||||
/**
|
||||
* Copyright (c) 2014 The xterm.js authors. All rights reserved.
|
||||
* @license MIT
|
||||
*
|
||||
* Fit terminal columns and rows to the dimensions of its DOM element.
|
||||
*
|
||||
* ## Approach
|
||||
*
|
||||
* Rows: Truncate the division of the terminal parent element height by the
|
||||
* terminal row height.
|
||||
* Columns: Truncate the division of the terminal parent element width by the
|
||||
* terminal character width (apply display: inline at the terminal
|
||||
* row and truncate its width with the current number of columns).
|
||||
*/
|
||||
|
||||
(function (fit) {
|
||||
if (typeof exports === 'object' && typeof module === 'object') {
|
||||
/*
|
||||
* CommonJS environment
|
||||
*/
|
||||
module.exports = fit(require('../../Terminal').Terminal);
|
||||
} else if (typeof define == 'function') {
|
||||
/*
|
||||
* Require.js is available
|
||||
*/
|
||||
define(['../../xterm'], fit);
|
||||
} else {
|
||||
/*
|
||||
* Plain browser environment
|
||||
*/
|
||||
fit(window.Terminal);
|
||||
}
|
||||
})(function (Terminal) {
|
||||
var exports = {};
|
||||
|
||||
exports.proposeGeometry = function (term) {
|
||||
if (!term.element.parentElement) {
|
||||
return null;
|
||||
}
|
||||
var parentElementStyle = window.getComputedStyle(term.element.parentElement);
|
||||
var parentElementHeight = parseInt(parentElementStyle.getPropertyValue('height'));
|
||||
var parentElementWidth = Math.max(0, parseInt(parentElementStyle.getPropertyValue('width')) - 17);
|
||||
var elementStyle = window.getComputedStyle(term.element);
|
||||
var elementPaddingVer = parseInt(elementStyle.getPropertyValue('padding-top')) + parseInt(elementStyle.getPropertyValue('padding-bottom'));
|
||||
var elementPaddingHor = parseInt(elementStyle.getPropertyValue('padding-right')) + parseInt(elementStyle.getPropertyValue('padding-left'));
|
||||
var availableHeight = parentElementHeight - elementPaddingVer;
|
||||
var availableWidth = parentElementWidth - elementPaddingHor;
|
||||
var geometry = {
|
||||
cols: Math.floor(availableWidth / term.charMeasure.width),
|
||||
rows: Math.floor(availableHeight / Math.floor(term.charMeasure.height * term.getOption('lineHeight')))
|
||||
};
|
||||
|
||||
return geometry;
|
||||
};
|
||||
|
||||
exports.fit = function (term) {
|
||||
// Wrap fit in a setTimeout as charMeasure needs time to get initialized
|
||||
// after calling Terminal.open
|
||||
setTimeout(function () {
|
||||
var geometry = exports.proposeGeometry(term);
|
||||
|
||||
if (geometry) {
|
||||
// Force a full render
|
||||
if (term.rows !== geometry.rows || term.cols !== geometry.cols) {
|
||||
term.renderer.clear();
|
||||
term.resize(geometry.cols, geometry.rows);
|
||||
}
|
||||
}
|
||||
}, 0);
|
||||
};
|
||||
|
||||
Terminal.prototype.proposeGeometry = function () {
|
||||
return exports.proposeGeometry(this);
|
||||
};
|
||||
|
||||
Terminal.prototype.fit = function () {
|
||||
return exports.fit(this);
|
||||
};
|
||||
|
||||
return exports;
|
||||
});
|
||||
1
YakPanel/static/build/addons/fit/fit.min.js
vendored
Normal file
1
YakPanel/static/build/addons/fit/fit.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).fit=e()}}(function(){return function i(l,u,f){function p(t,e){if(!u[t]){if(!l[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(a)return a(t,!0);var o=new Error("Cannot find module '"+t+"'");throw o.code="MODULE_NOT_FOUND",o}var n=u[t]={exports:{}};l[t][0].call(n.exports,function(e){return p(l[t][1][e]||e)},n,n.exports,i,l,u,f)}return u[t].exports}for(var a="function"==typeof require&&require,e=0;e<f.length;e++)p(f[e]);return p}({1:[function(e,t,r){"use strict";function o(e){if(!e.element.parentElement)return null;var t=window.getComputedStyle(e.element.parentElement),r=parseInt(t.getPropertyValue("height")),o=Math.max(0,parseInt(t.getPropertyValue("width"))),n=window.getComputedStyle(e.element),i=r-(parseInt(n.getPropertyValue("padding-top"))+parseInt(n.getPropertyValue("padding-bottom"))),l=o-(parseInt(n.getPropertyValue("padding-right"))+parseInt(n.getPropertyValue("padding-left")))-e._core.viewport.scrollBarWidth;return{cols:Math.floor(l/e._core._renderCoordinator.dimensions.actualCellWidth),rows:Math.floor(i/e._core._renderCoordinator.dimensions.actualCellHeight)}}function n(e){var t=o(e);t&&(e.rows===t.rows&&e.cols===t.cols||(e._core._renderCoordinator.clear(),e.resize(t.cols,t.rows)))}Object.defineProperty(r,"__esModule",{value:!0}),r.proposeGeometry=o,r.fit=n,r.apply=function(e){e.prototype.proposeGeometry=function(){return o(this)},e.prototype.fit=function(){n(this)}}},{}]},{},[1])(1)});
|
||||
5
YakPanel/static/build/addons/fit/package.json
Normal file
5
YakPanel/static/build/addons/fit/package.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"name": "xterm.fit",
|
||||
"main": "fit.js",
|
||||
"private": true
|
||||
}
|
||||
Reference in New Issue
Block a user