![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/libs/absol-acomp/out/ |
Upload File : |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>JSDoc: Source: TextArea2.js</title> <script src="scripts/prettify/prettify.js"> </script> <script src="scripts/prettify/lang-css.js"> </script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> </head> <body> <div id="main"> <h1 class="page-title">Source: TextArea2.js</h1> <section> <article> <pre class="prettyprint source linenums"><code>import '../css/textarea2.css'; import ACore from "../ACore"; import SelectMenu from "./SelectMenu"; import OOP from "absol/src/HTML5/OOP"; var _ = ACore._; var $ = ACore.$; function TextArea2() { this.on('keydown', this.eventHandler.keydown); this.on('paste', this.eventHandler.paste); this.on('cut', this.eventHandler.paste); } TextArea2.tag = 'TextArea2'.toLowerCase(); TextArea2.render = function () { return _('textarea.absol-textarea2'); }; TextArea2.getRenderPre = function () { if (!TextArea2.$preSpace) { TextArea2.$preSpace = _('textarea').addStyle({ 'overflow': 'hidden', 'height': '12px', 'resize': 'none' }).addTo(SelectMenu.getRenderSpace()); } return TextArea2.$preSpace; }; TextArea2.eventHandler = {}; TextArea2.eventHandler.keydown = function (event) { if (event.altKey || event.ctrlKey) return; var key = event.key; var selectPost = this.getInputSelection(); var leftText = this.value.substring(0, selectPost.start); var rightText = this.value.substring(selectPost.end); var middText = ''; if (key == 'Enter') { middText = '\n'; } else if (key == 'Backspace') { if (leftText.length > 0) { leftText = leftText.substring(0, leftText.length - 1); } } else if (key == 'Delete') { if (selectPost.start < selectPost.end) { middText = ''; } else if (rightText.length > 0) { rightText = rightText.substring(1); } } else if (key.length == 1) {//char middText = key; } else { return; } var newText = leftText + middText + rightText; var heightSyle = this._measureHeight(newText); this.addStyle('height', heightSyle); }; TextArea2.eventHandler.paste = function (event) { // var text = var cl = event.clipboardData || window.clipboardData; var middText = cl.getData('Text') || ''; var selectPost = this.getInputSelection(); var leftText = this.value.substring(0, selectPost.start); var rightText = this.value.substring(selectPost.end); var newText = leftText + middText + rightText; var heightSyle = this._measureHeight(newText); this.addStyle('height', heightSyle); }; TextArea2.eventHandler.cut = function (event) { // var text = var cl = event.clipboardData || window.clipboardData; var selectPost = this.getInputSelection(); var leftText = this.value.substring(0, selectPost.start); var rightText = this.value.substring(selectPost.end); var newText = leftText + rightText; var heightSyle = this._measureHeight(newText); this.addStyle('height', heightSyle); }; TextArea2.prototype._measureHeight = function (text) { var pre = TextArea2.getRenderPre(); pre.addStyle('padding-left', this.getComputedStyleValue('padding-left')) pre.addStyle('padding-right', this.getComputedStyleValue('padding-right')) pre.addStyle('padding-top', this.getComputedStyleValue('padding-top')) pre.addStyle('padding-bottom', this.getComputedStyleValue('padding-bottom')); pre.addStyle('width', this.getComputedStyleValue('width')); pre.addStyle('height', this.getFontSize() + 'px'); pre.addStyle('boder', this.getComputedStyleValue('boder')); pre.addStyle('font-size', this.getComputedStyleValue('font-size')); pre.addStyle('font-family', this.getComputedStyleValue('font-family')); pre.value = text; var result = pre.scrollHeight + 'px'; return result; }; /** * Return an object with the selection range or cursor position (if both have the same value) * @param {DOMElement} el A dom element of a textarea or input text. * @return {Object} reference Object with 2 properties (start and end) with the identifier of the location of the cursor and selected text. **/ TextArea2.prototype.getInputSelection = function () { var start = 0, end = 0, normalizedValue, range, textInputRange, len, endRange; if (typeof this.selectionStart == "number" && typeof this.selectionEnd == "number") { start = this.selectionStart; end = this.selectionEnd; } else { range = document.selection.createRange(); if (range && range.parentElement() == this) { len = this.value.length; normalizedValue = this.value.replace(/\r\n/g, "\n"); // Create a working TextRange that lives only in the input textInputRange = this.createTextRange(); textInputRange.moveToBookmark(range.getBookmark()); // Check if the start and end of the selection are at the very end // of the input, since moveStart/moveEnd doesn't return what we want // in those cases endRange = this.createTextRange(); endRange.collapse(false); if (textInputRange.compareEndPoints("StartToEnd", endRange) > -1) { start = end = len; } else { start = -textInputRange.moveStart("character", -len); start += normalizedValue.slice(0, start).split("\n").length - 1; if (textInputRange.compareEndPoints("EndToEnd", endRange) > -1) { end = len; } else { end = -textInputRange.moveEnd("character", -len); end += normalizedValue.slice(0, end).split("\n").length - 1; } } } } return { start: start, end: end }; } ACore.install(TextArea2); export default TextArea2;</code></pre> </article> </section> </div> <nav> <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="CalendarInput.html">CalendarInput</a></li><li><a href="CandyBoxButton.html">CandyBoxButton</a></li><li><a href="ChromeCalendar.html">ChromeCalendar</a></li><li><a href="CircleSectionLabel.html">CircleSectionLabel</a></li><li><a href="Cluster.html">Cluster</a></li><li><a href="ClusterIconInfo.html">ClusterIconInfo</a></li><li><a href="ClusterIconStyle.html">ClusterIconStyle</a></li><li><a href="ContextCaptor.html">ContextCaptor</a></li><li><a href="DateInput.html">DateInput</a></li><li><a href="DateInput2.html">DateInput2</a></li><li><a href="DropPanel.html">DropPanel</a></li><li><a href="DropPanelStack.html">DropPanelStack</a></li><li><a href="FlexiconButton.html">FlexiconButton</a></li><li><a href="MarkerClusterer.html">MarkerClusterer</a></li><li><a href="MarkerClustererOptions.html">MarkerClustererOptions</a></li><li><a href="SearchTextInput.html">SearchTextInput</a></li><li><a href="Sprite.html">Sprite</a></li><li><a href="Time24Input.html">Time24Input</a></li></ul><h3>Events</h3><ul><li><a href="MarkerClusterer.html#event:click">click</a></li><li><a href="MarkerClusterer.html#event:clusteringbegin">clusteringbegin</a></li><li><a href="MarkerClusterer.html#event:clusteringend">clusteringend</a></li><li><a href="MarkerClusterer.html#event:mouseout">mouseout</a></li><li><a href="MarkerClusterer.html#event:mouseover">mouseover</a></li></ul><h3>Global</h3><ul><li><a href="global.html#$windowTitleText">$windowTitleText</a></li><li><a href="global.html#AddIcon">AddIcon</a></li><li><a href="global.html#calcMinHMTime">calcMinHMTime</a></li><li><a href="global.html#cleanMenuItemProperty">cleanMenuItemProperty</a></li><li><a href="global.html#preventNotNumberInput">preventNotNumberInput</a></li><li><a href="global.html#vScrollIntoView">vScrollIntoView</a></li></ul> </nav> <br class="clear"> <footer> Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.0</a> on Wed Jan 04 2023 18:18:58 GMT+0700 (Indochina Time) </footer> <script> prettyPrint(); </script> <script src="scripts/linenumber.js"> </script> </body> </html>