Compare commits

...
519 Commits
Author SHA1 Message Date
Paris Kasidiaris fe3019765b Bump version to 3.0.2
Signed-off-by: Paris Kasidiaris <paris@sourcelair.com>
2018-01-16 17:12:15 +00:00
Paris Kasidiaris d1cf6854b5 Merge pull request #1212 from xtermjs/hotfix/3.0.2
Hotfix: 3.0.2
2018-01-16 19:10:17 +02:00
Daniel Imms 2eaa244907 Ensure renderer uses latest options at open
Fixes #1194
2018-01-16 16:01:32 +00:00
ficristo e1e5c1c44f Make addons UMD compatible 2018-01-16 15:30:53 +00:00
Paris Kasidiaris 45ed27d329 Bump version to 3.0.1
Signed-off-by: Paris Kasidiaris <paris@sourcelair.com>
2018-01-05 16:46:38 +00:00
Daniel Imms a490051dda Merge pull request #1190 from Tyriar/fix_typings
Publish typings dir to npm
2018-01-05 08:38:00 -08:00
Daniel Imms edc80acd4d Publish typings dir to npm 2018-01-05 08:32:07 -08:00
Paris Kasidiaris 6b98d0999b Bump version to 3.0.0
Signed-off-by: Paris Kasidiaris <paris@sourcelair.com>
2018-01-05 16:17:34 +00:00
Daniel Imms 57c4571204 Merge pull request #1186 from xtermjs/tyriar/merge_v3_to_master
Merge v3 into master
2018-01-05 06:54:10 -08:00
Daniel Imms 6580cdec6b Merge remote-tracking branch 'origin/master' into tyriar/merge_master_to_v3
This pulls in PR #933 which was merged in error to master not v3 and also 2.9.2
release stuff.
2018-01-04 12:36:46 -08:00
Daniel Imms 49b1b381a1 Merge pull request #1183 from xtermjs/Tyriar-patch-1
Fix travis badge
2018-01-04 11:45:00 -08:00
Daniel Imms e8b787d057 Fix travis badge
It points at sourcelair/xterm.js and doesn't redirect
2018-01-04 11:43:15 -08:00
Paris Kasidiaris 490e46ce0c Merge pull request #1178 from xtermjs/fix-fit-addon
Fix "exports" typo
2018-01-02 16:52:41 +02:00
Paris Kasidiaris bc3984a0bf Fix "exports" typo 2018-01-02 12:49:44 +02:00
Daniel Imms 478c054075 Merge pull request #1169 from npezza93/move-selection-event
Move selection event emission to the terminal object
2017-12-29 08:37:44 -08:00
npezza93 f65aeba684 Override MockTerminals emit to do nothing 2017-12-27 13:53:27 -05:00
npezza93 4d16c5e9e8 Move selection event emission to the terminal object 2017-12-27 11:36:05 -05:00
Daniel Imms 8c4e6b0e5b Merge pull request #1166 from Tyriar/1165_bellSound_exception
Prevent exception when setting bellSound before open
2017-12-27 06:15:14 -08:00
Daniel Imms 2660e0ecff Merge pull request #1163 from Tyriar/1018_applyaddon_types
Add applyAddon typings
2017-12-27 06:15:02 -08:00
Daniel Imms f24a94b341 Move syncBellSound after helperContainer init 2017-12-26 04:06:00 -08:00
Daniel Imms 5dc38008f3 Fix test 2017-12-26 02:43:28 -08:00
Daniel Imms 98d25607a9 Prevent exception when setting bellSound before open
Fixes #1165
2017-12-26 02:22:09 -08:00
Daniel Imms 55f885809e Improve doc 2017-12-21 15:18:03 -08:00
Daniel Imms 37a1220ee7 Add applyAddon typings
Part of #1018
See #1130
2017-12-21 13:59:27 -08:00
Daniel Imms 9518d20c4e Merge pull request #1160 from Tyriar/1159_linefeed
Make lineFeed event lowercase
2017-12-20 15:46:59 -08:00
Thomas Zilz b4e52b2334 Fix fit() sizing and also support letterSpacing, enhanced (#1157)
Fixes #1081

* Make sure character dimensions are available right after calling term.open()
* Do not assume var assignments are global anymore, webpack will isolate them
* Use DocumentFragment to build Viewport and helpers before attaching them to the DOM
* Shield term.focus call from crashing when used before term.open
2017-12-20 20:06:23 +01:00
Daniel Imms 0f7365999f Merge pull request #1156 from Tyriar/1155_visual_bell
Remove visual bell API until it's added back
2017-12-19 13:29:48 -08:00
Daniel Imms 83ef7668be Merge remote-tracking branch 'ups/v3' into 1159_linefeed 2017-12-19 13:26:48 -08:00
Daniel Imms aaf0991195 Make lineFeed event lowercase
Fixes #1159
2017-12-19 13:25:26 -08:00
Paris Kasidiaris 8263b5f0ba Merge pull request #1130 from xtermjs/applyaddon
New addon system: `applyAddon`
2017-12-18 21:44:00 +02:00
Daniel Imms c1d20afc64 Remove visual bell API until it's added back
Fixes #1155
2017-12-18 10:15:30 -08:00
Paris Kasidiaris da604ff69c Fix webpack task in Gulp and fit add-on 2017-12-16 11:29:12 +02:00
Daniel Imms eeda380b67 Merge pull request #1149 from flumm/proxmox
add proxmox ve to real-world uses
2017-12-15 06:44:12 -08:00
Dominik Csapak 41c2c07a74 add proxmox ve to real-world uses 2017-12-12 16:19:58 +01:00
Paris Kasidiaris 80450450e9 Export zmodemAttach 2017-12-12 10:50:18 +02:00
Paris Kasidiaris c9b672e0c6 Simplify fit addon 2017-12-12 10:47:58 +02:00
Paris Kasidiaris 8830820821 Update demo to use Webpack 2017-12-12 08:46:06 +00:00
Paris Kasidiaris e39d10e12f Fix exports 2017-12-12 08:46:06 +00:00
Paris Kasidiaris 6fec430e32 Fix tests 2017-12-12 08:46:06 +00:00
Paris Kasidiaris d81e304ce7 Export static methods wherever possible 2017-12-12 08:46:06 +00:00
Paris Kasidiaris 052dc15d55 Update README once more 2017-12-12 08:46:06 +00:00
Paris Kasidiaris 8d54735321 Fix README.md 2017-12-12 08:46:06 +00:00
Paris Kasidiaris 31cc0c30c1 Update README.md 2017-12-12 08:46:06 +00:00
Paris Kasidiaris 510de73996 Port addons to new applyAddon API and TypeScript 2017-12-12 08:46:06 +00:00
Paris Kasidiaris 2547858efb Remove "debugging" allowJs 2017-12-12 08:46:06 +00:00
Paris Kasidiaris 4c4684295e First PoC of .applyAddon 2017-12-12 08:46:06 +00:00
Daniel Imms 4f144dc6eb Merge pull request #1121 from Tyriar/841_remove_geometry
Remove geometry
2017-11-21 09:00:57 -08:00
Daniel Imms 3638eb2d4f Merge pull request #1125 from Tyriar/logo
Add new logo to README
2017-11-10 13:55:16 -08:00
Daniel Imms 0c81ec7e95 Add new logo to README 2017-11-10 13:01:01 -08:00
Daniel Imms bc424b2f37 Merge pull request #1097 from jdanbrown/pr-bracketedpaste
Support bracketed paste mode
2017-11-09 11:05:05 -08:00
Daniel Imms 0b90feab1e Remove geometry
Fixes #841
2017-11-09 10:02:28 -08:00
Daniel Imms b798463d27 Merge pull request #1113 from bmf-ribeiro/selection-event-1093
Expose a selection event
2017-11-07 13:56:07 -08:00
Bruno Ribeito fc7cf6b917 Adress feedback 2017-11-07 21:08:21 +00:00
Paris Kasidiaris a6899c74d8 Merge pull request #1076 from FGasper/zmodem
Zmodem addon
2017-11-07 16:44:01 +02:00
Daniel Imms 935e972348 Merge pull request #1112 from bmf-ribeiro/FIX_#800
Pull wcwidth into its own file
2017-11-06 21:16:50 -08:00
Bruno Ribeito 923bb05b8d Fix #1093 2017-11-06 21:02:53 +00:00
Bruno Ribeito 354b857bbe Fix spacing 2017-11-06 20:40:28 +00:00
Bruno Ribeito e18416a636 Fix #800 2017-11-06 20:11:23 +00:00
Daniel Imms b0020fc0ac Merge pull request #1106 from EmbeddedEnterprises/v3
Fix deleteChars not updating the view
2017-11-06 10:22:43 -08:00
Daniel Imms c90c24cecf Merge pull request #1109 from Tyriar/1029_fix_end_selection
Fix last column selection problems
2017-11-06 07:43:20 -08:00
Daniel Imms 0637191d77 Merge pull request #1108 from bmf-ribeiro/v3
Fix #948
2017-11-06 06:53:57 -08:00
Daniel Imms 95de0e83b9 Merge pull request #1105 from Tyriar/1080_interface_export
Export interfaces in typings
2017-11-05 17:08:10 -08:00
Bruno Ribeito 9c4ff54f22 Fix review comments 2017-11-05 21:13:54 +00:00
Daniel Imms 8478aa7a51 Fix selection on bottom right char when mouse goes outside viewport
Part of #1029
2017-11-05 12:18:59 -08:00
Daniel Imms dbec3a32f8 Fix selecting of last column
Fixes #1029
2017-11-05 12:06:25 -08:00
Bruno Ribeito b7438d57cf Fix #948 2017-11-05 15:11:02 +00:00
Martin Koppehel 4b46a777d7 Fix deleteChars not updating the view
When deleting a character in a line and moving the cursor to
another line afterwards, the deletion is not rendered.
This commit adds the line where the character was deleted
to the refresh range to enforce an update
2017-11-05 10:31:35 +01:00
Daniel Imms 3921457bf3 Merge pull request #1104 from Tyriar/902_scrollLines_api
Replace scrollDisp with the more descriptive scrollLines
2017-11-04 20:43:06 -07:00
Daniel Imms 86653f70a8 Export interfaces in typings
Fixes #1080
2017-11-04 20:41:03 -07:00
Felipe Gasper b96286be51 remove bundled zmodem.js and symlinked CSS 2017-11-04 08:36:51 -04:00
Daniel Imms 05cbe41d39 scrollDisp -> scrollLines
Fixes #902
2017-11-04 03:20:24 -07:00
Felipe Gasper 54f616623a cleaner syntax for start-zmodem 2017-11-02 19:07:43 -04:00
Felipe Gasper 6cefa13a4e Merge branch 'v3' into zmodem 2017-11-02 19:05:30 -04:00
Felipe Gasper e262ba473e include build 2017-11-02 19:03:52 -04:00
Felipe Gasper 280a100c12 revert changes to mainline demo; have separate addon demo 2017-11-02 18:33:00 -04:00
Daniel Imms d9e9fa3ff7 Merge pull request #1094 from Tyriar/1089_open_parent_visible
Clarify that parent needs to be visible when calling open
2017-11-01 08:47:53 -07:00
Daniel Imms aaa7e91855 Merge pull request #1091 from Tyriar/1090_force_selection
Don't send mouse events when selection is forced
2017-11-01 08:46:38 -07:00
Daniel Imms 3d9aefbb2d Merge pull request #1096 from Tyriar/winptyCompat
Add winptyCompat addon
2017-11-01 08:46:22 -07:00
Daniel Imms e2910ca5c8 Merge pull request #1088 from Tyriar/node-pty-upgrade
Upgrade node-pty to 0.7.2
2017-11-01 08:46:09 -07:00
Paris Kasidiaris 36a155dd1a Merge pull request #1065 from exsilium/iPadHWArrowsV3
Apple iPad - Smart Keyboard Arrows - v3
2017-10-31 12:12:12 +02:00
Daniel Imms 8cb410bd9c Merge pull request #1099 from Tyriar/1089_init_scaled_vars
Initialize scaled dimension variables
2017-10-30 12:37:37 -07:00
Daniel Imms 79cdaa8d3b Initialize scaled dimension variables
Fixes #1089
2017-10-30 11:21:22 -07:00
Dan Brown 1dbcf70cee Support bracketed paste mode
- As described in https://cirw.in/blog/bracketed-paste
- Example support in vim:
  - https://github.com/ConradIrwin/vim-bracketed-paste/blob/master/plugin/bracketed-paste.vim
  - http://vimdoc.sourceforge.net/htmldoc/term.html#raw-terminal-mode
- Required for e.g. ipython, via python-prompt-toolkit:
  - https://github.com/ipython/ipython
  - https://github.com/jonathanslenders/python-prompt-toolkit

Repro:
- Run `ipython` (version 6.2.1)
- Copy multiple lines of text and paste into ipython prompt, e.g.
```py
print(1)
print(2)
print(3)
```
- Before: first line would paste and run, and subsequent lines are lost
- After: all lines paste into single prompt
2017-10-30 00:26:50 -07:00
Felipe Gasper 29143baa3a a bit lighter: no submit 2017-10-29 17:26:23 -04:00
Felipe Gasper 11c9dd3288 revert changes, update to latest node-pty 2017-10-29 15:34:23 -05:00
Felipe Gasper 9a8916ff77 pare back changes 2017-10-29 15:25:06 -05:00
Felipe Gasper cb7c6151e8 compile zmodem extension in gulp 2017-10-29 15:21:22 -05:00
Daniel Imms aa5a9911de Base wrapped line on current width, not original width
Lines are never trimmed, so even if the term's size is reduced it
could contain empty lines at the end when wrapping is valid
2017-10-29 13:16:29 -07:00
Daniel Imms d7f6f96ba6 Add winptyCompat addon typings 2017-10-29 13:01:38 -07:00
Daniel Imms 2fbc0be98d Fix build issues 2017-10-29 12:45:37 -07:00
Daniel Imms 664c0f0f77 Clarify that parent needs to be visible when calling open
Fixes #1089
2017-10-28 17:44:15 -07:00
Felipe Gasper 0ca1318284 too much work … just find a way to concatenate 2017-10-27 21:10:23 -05:00
Felipe Gasper f2befc0c06 document the new opts/flag 2017-10-27 20:17:27 -05:00
Felipe Gasper 6c3af6e19a provide for better compatibility with attach.js 2017-10-27 20:14:18 -05:00
Daniel Imms d81df46453 Don't send mouse events when selection is forced
Fixes #1090
2017-10-27 16:48:00 -07:00
Felipe Gasper a90493a9af Merge branch 'v3' into zmodem 2017-10-27 17:58:01 -05:00
Felipe Gasper 5c81fe6cdc pare down some changes 2017-10-27 17:54:36 -05:00
Daniel Imms 59759c718b node-pty@0.7.2 2017-10-27 11:33:05 -07:00
Daniel Imms 700a10f3f4 Initial winptyCompat addon 2017-10-27 10:23:46 -07:00
Daniel Imms 8ece306dbe Merge pull request #1084 from Tyriar/1079_theme_exception
Fix exception when setting theme
2017-10-27 10:14:43 -07:00
Daniel Imms a27a4e627e Add test for not setting bg in theme 2017-10-25 21:28:19 -07:00
Daniel Imms 2fc723b3ac Fix exception when setting theme
Fixes #1079
2017-10-25 21:24:44 -07:00
Felipe Gasper 1586363b2e Merge branch 'v3' into zmodem 2017-10-25 07:30:04 -05:00
Daniel Imms c2b3853aa7 Merge pull request #1078 from Tyriar/vsc36328
Add null check in MouseZoneManager._findZoneEventAt
2017-10-24 10:19:55 -07:00
Daniel Imms 65afb34b8b Merge pull request #1072 from Tyriar/1071_typing_pollution
Move interfaces in types inside module
2017-10-23 13:36:05 -07:00
Daniel Imms ac71f13361 Add null check in MouseZoneManager._findZoneEventAt
See Microsoft/vscode#36328
2017-10-23 11:54:49 -07:00
Felipe Gasper 3d2687768f no abort; instead skip 2017-10-22 16:20:01 -05:00
Paris Kasidiaris d3b25364cc Merge pull request #1073 from LukasDrgon/patch-1
Add jsDelivr hits badge
2017-10-21 16:43:43 +03:00
Daniel Imms 5d49db54ee Move interfaces in types inside module
Fixes #1071
2017-10-20 17:28:34 -07:00
Daniel Imms 81b6469aad Merge pull request #1069 from Tyriar/1068_xterm_css_change
Use .xterm over .terminal in CSS
2017-10-20 16:56:38 -07:00
Daniel Imms 1d76cc921a Use .xterm over .terminal in CSS
Fixes #1068
2017-10-19 08:44:00 -07:00
Felipe Gasper 6026bd44c3 put ZMODEM auto-toggle into demo UI 2017-10-19 11:50:36 +02:00
Felipe Gasper 7bc7bb0ab9 no more text-encoding 2017-10-19 11:36:37 +02:00
Daniel Imms 2e8410da4b Merge pull request #1061 from Tyriar/1048_enableBold
Support enableBold option
2017-10-17 15:54:47 -07:00
Daniel Imms cf6c11db14 Merge remote-tracking branch 'origin/v3' into 1048_enableBold 2017-10-17 12:41:13 -07:00
Felipe Gasper ed6e2e5055 Reorder demo components, ensure we hide at end of receive. 2017-10-17 09:28:41 +02:00
Felipe Gasper 1ee6af2f82 Instructions in the demo for ZMODEM. 2017-10-17 08:57:18 +02:00
Felipe Gasper ef62b3bf55 Use zmodem.js from npm rather than a git submodule. 2017-10-17 08:39:43 +02:00
Felipe Gasper 76faad67d9 Merge branch 'v3' into zmodem 2017-10-17 08:21:33 +02:00
Felipe Gasper a4b06ea86e docs, prune 2017-10-17 08:20:25 +02:00
Felipe Gasper 355d5970a6 Allow attach.js to work 2017-10-16 16:30:29 +01:00
Felipe Gasper a53ca789ea also exclude Terminado 2017-10-16 15:32:46 +01:00
Felipe Gasper 6fa08d3cc0 Make zmodem work again 2017-10-16 15:26:09 +01:00
Felipe Gasper 73b804f42d update subrepo 2017-10-16 15:14:22 +01:00
Felipe Gasper 151eac6f4f prep for addon - find loop 2017-10-16 15:12:07 +01:00
Felipe Gasper a6efda6120 broken cuz moving to addon 2017-10-16 14:43:10 +01:00
Exile 822b31f7b7 Addressing linter errors 2017-10-16 08:02:03 +00:00
Exile 0684e05877 Smart Keyboard Arrows 2017-10-16 07:17:51 +00:00
Felipe Gasper 8346ab12be add missing dependency to package.json 2017-10-15 21:35:09 +01:00
Daniel Imms 00554390e1 Merge pull request #1045 from Tyriar/more_rendering_improvements
More rendering improvements
2017-10-14 23:55:33 -07:00
Lukas Drgon 5cdd1bee42 Add jsDelivr hits badge 2017-10-14 19:25:42 +02:00
Daniel Imms db6695435d Add letterSpacing typings and test 2017-10-13 13:38:28 -07:00
Daniel Imms 899929afc6 Add enableBold typings 2017-10-13 13:30:12 -07:00
Daniel Imms a1fcafd50c Fix default color with bold disabled 2017-10-13 13:20:22 -07:00
Daniel Imms a622b97a94 Support enableBold option 2017-10-13 13:13:38 -07:00
Daniel Imms e86aebaa41 Merge remote-tracking branch 'origin/v3' into more_rendering_improvements 2017-10-13 13:02:38 -07:00
Daniel Imms c1ec68091a Merge pull request #1058 from Tyriar/1057_remove_wcwidth_test
Remove long wcwidth test
2017-10-13 13:00:50 -07:00
Daniel Imms c1ad9dba2a Remove long wcwidth test
Fixes #1057
2017-10-11 22:46:08 -07:00
Daniel Imms b1449880be Merge pull request #1052 from Tyriar/1047_ansi_bright
Fix ansi bright text being bold without bold flag
2017-10-11 19:06:05 -07:00
Thomas Zilz b6c886837f Add support for dimmed characters (faint) (#1043)
* Add support for dimmed character style
2017-10-11 20:24:26 +02:00
Daniel Imms 5e639c75f7 Merge pull request #1051 from Tyriar/blurry_ldpi
Draw from charatlas without changing scale
2017-10-11 07:53:21 -07:00
Daniel Imms a56edd65a7 Fix ansi bright text being bold without bold flag
Fixes #1047
2017-10-10 22:37:13 -07:00
Daniel Imms 09c9cb4508 Draw from charatlas without changing scale
Fixes #1050
2017-10-10 22:19:48 -07:00
Daniel Imms 058de25977 Merge pull request #1030 from Tyriar/fix_selection_model_npe
Add a null check to areSelectionValuesReversed
2017-10-10 07:50:34 -07:00
Daniel Imms eb57cc3e9e Clip rows using the row's cell height, not char height 2017-10-09 20:10:13 -07:00
Daniel Imms 1b2bac7aef Add letterSpacing option
This provides an option for fonts to be more spaced out. This is particularly useful
for fonts that can seem crammed due to not allowing floating point numbers when
drawing, such as Monoid or Operator Mono.
2017-10-09 20:07:30 -07:00
Daniel Imms b06eb44c45 Merge pull request #1034 from Tyriar/1033_ie11_support
Add support back for IE11
2017-10-06 09:27:15 -07:00
Daniel Imms 5bf81934cd Merge pull request #1022 from Tyriar/1020_mouse_events_linkifier
Ensure linkifier cancels mouse event when being handled
2017-10-06 09:23:42 -07:00
Daniel Imms 635cf268d4 Merge pull request #1019 from Tyriar/null_check_cursor_char
Add null check before cursor is drawn
2017-10-06 09:23:17 -07:00
Daniel Imms 3c2614ade7 Merge pull request #1017 from Tyriar/1015_fix_emoji_selection
Fix several issues related to emojis
2017-10-06 09:23:03 -07:00
Daniel Imms 265057a716 Merge pull request #1038 from Tyriar/rendering_improvements
Rendering improvements
2017-10-06 09:09:37 -07:00
Daniel Imms 06b9f1db87 Always draw entire line and allow overlapping
State/diffing code is kept in comments as it may be reinstated soon.

Fixes #1035
Fixes #1036
Fixes #1032
Fixes #1037
2017-10-05 23:25:03 -07:00
Daniel Imms 356a14bb16 Fix non-default backgrounds on left cell of wide/overlapping chars
Fixes #1031
2017-10-05 20:30:09 -07:00
Daniel Imms be8ddb11db Add support back for IE11
Fixes #1033
2017-10-05 20:22:05 -07:00
Daniel Imms 108534a4fe Fix null pointer exception 2017-10-05 20:09:17 -07:00
Daniel Imms 0a08d6389a Fix sub-pixel anti-aliasing for uncached text
Fixes #1032
2017-10-05 19:31:07 -07:00
Daniel Imms f36ba01460 Add a null check to areSelectionValuesReversed
See Microsoft/vscode#35601
2017-10-05 11:15:46 -07:00
Daniel Imms 22af08d86e Merge pull request #1028 from Tyriar/1024_fix_windows_build_issue
Normalize tsconfig outDir
2017-10-05 08:35:43 -07:00
Daniel Imms 2ab06779f9 Merge pull request #1026 from Tyriar/1025_fix_link_application_range
Fix links sometimes not getting applied
2017-10-05 08:04:36 -07:00
Daniel Imms 0ac093e19c Merge pull request #1027 from jgillich/patch-1
remove import file extension
2017-10-05 07:58:00 -07:00
Daniel Imms e693c9e86b Normalize tsconfig outDir
It was coming out with the wrap path separators on Windows

Fixes #1024
2017-10-05 07:52:34 -07:00
Jakob Gillich 7cfc108fb4 remove import file extension 2017-10-05 01:35:34 +02:00
Daniel Imms 2a126cf1dc Fix links sometimes not getting applied
There was an incorrect comparison which occasionally caused links to
not be picked up.

Fixes #1025
2017-10-04 11:45:13 -07:00
Felipe Gasper 0e732a7d41 Make it work (as well as it may) in Edge 2017-10-03 23:16:12 -04:00
Daniel Imms 66688c19a6 Merge pull request #1023 from ricktbaker/patch-1
Update README.md
2017-10-02 11:37:57 -07:00
Rick Baker 966f5c1f32 Update README.md
Who would have thought that a name could have so much controversy.   I've renamed due to a bunch of flack about devops not logging into servers :)
2017-10-02 13:34:30 -05:00
Daniel Imms ea8bd8dc1c Merge pull request #910 from dcylabs/v3
Fixed selection issue when terminal is in nested scrolled elements
2017-10-02 11:15:45 -07:00
Daniel Imms 56da538ca0 Fix reference to document 2017-10-02 11:12:33 -07:00
Daniel Imms 42d5cb671e Merge remote-tracking branch 'ups/v3' into v3 2017-10-02 11:00:24 -07:00
Daniel Imms 95f68a41d7 Ensure linkifier cancels mouse event when being handled
The terminal mouse events handling code was being run before links were
being considered. This caused clicking link to have unexpected behavior
in mouse mode term apps.

Fixes #1020
2017-10-02 10:42:14 -07:00
Felipe Gasper 4c4c392479 update demo code for package-lock; make package.json build zmodem.js 2017-10-02 09:44:05 -04:00
Felipe Gasper 907d9de965 update demo for zmodemjs changes 2017-10-01 18:23:17 -04:00
Felipe Gasper 6f69207a67 Merge branch 'v3' into zmodem 2017-10-01 12:47:36 -04:00
Daniel Imms 29be4f6a92 Merge remote-tracking branch 'ups/v3' into 1015_fix_emoji_selection 2017-10-01 05:54:10 -07:00
Daniel Imms b1214063d2 Add more complex emoji selection tests 2017-09-30 10:00:18 -04:00
Daniel Imms da4e3e6e9f Improve documentation on word selection 2017-09-30 09:45:11 -04:00
Daniel Imms e0c28bc7d2 Fix selecting words containing ZWJ emojis 2017-09-30 09:32:33 -04:00
Daniel Imms 58259f8bd9 Fix select word on wide characters 2017-09-30 08:30:19 -04:00
Daniel Imms 4828c4a6fa Clean up logs/comments 2017-09-30 08:02:03 -04:00
Daniel Imms 3e29a03f87 Fix rendering issues for emojis that come out as wide chars
The fix is to disallow non-single cell width chars to be overlapping
2017-09-30 07:54:52 -04:00
Daniel Imms fa86f31f36 Fix copying emoji characters on the edge of selection
Fixes #1015
2017-09-30 06:30:14 -04:00
Daniel Imms feb2b958a4 Mostly emoji selection
Selection is not aware of characters that have a size greater than 1.

When the emoji is at the start of the selection it still doesn't work.

Fixes #1015
2017-09-30 06:13:58 -04:00
Daniel Imms e3d69d78a0 Merge pull request #1010 from Tyriar/vscode34466
Add null check when fetching line string
2017-09-30 05:37:11 -04:00
Daniel Imms ef5e393510 Merge pull request #1002 from Tyriar/990_fix_link_issues
Fix link clearing issues
2017-09-30 05:36:48 -04:00
Daniel Imms a9a131699f Merge pull request #1001 from Tyriar/1000_fix_horz_offset
Fix mouse coordinates
2017-09-29 16:17:50 -04:00
Daniel Imms 3813e3f6df Merge pull request #1012 from ricktbaker/patch-1
Update README.md
2017-09-29 16:11:10 -04:00
Rick Baker 499c8288eb Update README.md
Submitting an app for your list.
2017-09-29 14:54:33 -05:00
Daniel Imms 91d22e3d84 Add null check before cursor is drawn 2017-09-28 21:23:27 -04:00
Daniel Imms a8174398f5 Calculate mouse coordinates using correct char dimensions
Previously the Mouse class was using raw CSS pixels, we need CSS pixels based
on the amount of space the cells take up on the canvas

See Microsoft/vscode#35114
2017-09-28 17:23:45 -04:00
Daniel Imms 0dafd0a38b Merge branch 'v3' into 1000_fix_horz_offset 2017-09-28 17:21:37 -04:00
Daniel Imms 13d46476c8 Add null check when fetching line string
See Microsoft/vscode#34466
2017-09-28 14:52:56 -04:00
Felipe Gasper bc2dce7a50 Merge branch 'v3' into zmodem 2017-09-27 10:29:40 -04:00
Felipe Gasper 3f467b33e4 update demo to latest zmodem.js code 2017-09-26 10:31:24 -04:00
Daniel Imms 313d1e6fec Merge pull request #1005 from Tyriar/fix_validation_callback
Fix validation callback to use the uri, not whole row
2017-09-25 13:24:45 -07:00
Daniel Imms a4485b8c09 Merge pull request #999 from Tyriar/vscode34493
Only refresh char atlas when char dimensions are valid
2017-09-25 06:14:58 -07:00
Daniel Imms a2389d5c5b Fix validation callback to use the uri, not whole row 2017-09-24 10:59:38 -07:00
Daniel Imms 8243eef67c Properly clear links
MouzeZoneManager rows are not 0-based

Fixes #990
2017-09-20 12:54:20 +09:00
Daniel Imms 0b54df14e2 Remove unnecessary rounding 2017-09-20 12:16:27 +09:00
Daniel Imms 79c07d436e Fix selection horizontal offset
Fixes #1000
2017-09-20 11:53:19 +09:00
Daniel Imms 40fdd00b9e Correct if statement, ensure charAtlas exists 2017-09-20 09:02:21 +09:00
Felipe Gasper 65f5f1c38c deny() handling 2017-09-18 07:19:22 -04:00
Thomas Zilz c4da8325ac Allow all overflowing characters to extend to the next cell if followed by a space (Emojis etc) (#997)
* Measure characters and thread them if they are overlapping

* Fix whitespace

* Use charData and ctx.save/restore, code cleanup

* Fix trailing whitespace
2017-09-17 10:39:09 +02:00
Thomas Zilz c815310418 Fix inverted cells, make sure inverted cells are cleared correctly (#996)
* Corretly inverse foreground and background. Be more conservative when clearing

* add missing space

* Re-enable optimisation with better checks

* Fix insversed check
2017-09-16 20:36:55 +02:00
Daniel Imms 9b6c4e046f Only refresh char atlas when char dimensions are valid
See Microsoft/vscode#34493
2017-09-16 10:57:49 -07:00
Felipe Gasper 94586b669f update submodule 2017-09-15 03:45:23 -04:00
Felipe Gasper 5f62c7607d progress indicators for send 2017-09-15 03:30:51 -04:00
Felipe Gasper ce681fe481 demo: hide progress after receive 2017-09-15 03:26:54 -04:00
Felipe Gasper cdcedd6b34 updates to factor out more logic to library 2017-09-15 02:31:32 -04:00
Daniel Imms 1f49879298 Merge pull request #989 from Tyriar/986_selection_exception
Ensure mouse coordinates are always within rows/cols
2017-09-14 09:06:44 -07:00
Daniel Imms 691ab2b02c Merge remote-tracking branch 'ups/v3' into 986_selection_exception 2017-09-14 09:06:00 -07:00
Daniel Imms 0cf9f1d536 Fix tests 2017-09-14 09:05:50 -07:00
Daniel Imms 3d743e5bdb Merge pull request #964 from Tyriar/963_cursor_accent
Support theming cursor accent color
2017-09-14 09:03:54 -07:00
Daniel Imms bc824ad6a5 Fix tests 2017-09-14 09:03:41 -07:00
Daniel Imms b9872c9a67 Merge remote-tracking branch 'ups/v3' into 963_cursor_accent 2017-09-14 09:02:32 -07:00
Daniel Imms ea0c2285bc Merge remote-tracking branch 'ups/v3' into 963_cursor_accent 2017-09-14 09:02:00 -07:00
Daniel Imms a611fee7af Merge pull request #976 from Tyriar/975_mousezone_leave
Ensure leave is called when leaving a MouseZone
2017-09-14 09:01:28 -07:00
Daniel Imms c2502bf0b0 Merge pull request #978 from Tyriar/953_user_scrolling_fix
Improve scrolling while user has scrolled up
2017-09-14 09:01:13 -07:00
Daniel Imms e8d784a47d Merge pull request #991 from Tyriar/blurriness_fix
Support sub-pixel anti-aliasing and fix blurry text issues
2017-09-14 08:59:50 -07:00
Daniel Imms 8bdc8fb7a2 Remove log 2017-09-14 01:00:19 -07:00
Daniel Imms aca7ab63e8 Set background color on Renderer immediately
Prevents black flash on init
2017-09-14 00:22:57 -07:00
Daniel Imms c2b765f3ff Redraw background on text layer after a resize 2017-09-13 23:56:35 -07:00
Daniel Imms 068c0743a1 Support non-#000 background colors in char atlas 2017-09-13 23:54:45 -07:00
Daniel Imms 0a58628f74 Clear text layer to the background color on creation
Prevents a black flash before the first draw
2017-09-13 23:49:37 -07:00
Daniel Imms b225866c27 Clear cells properly for text layer 2017-09-13 23:21:24 -07:00
Daniel Imms 872c007a29 Finish merging bg and fg layers 2017-09-13 23:15:21 -07:00
Daniel Imms 402cebc76c Support bold in non cached text drawing
Fixes #987
2017-09-13 22:50:48 -07:00
Daniel Imms 3656617044 Start merging fg/bg layers, draw using SP-AA 2017-09-13 15:21:40 -07:00
Daniel Imms 5538481833 Draw characters to a grid 2017-09-13 15:07:01 -07:00
Daniel Imms a52b9feeea Ensure mouse coordinates are always within rows/cols
Fixes #986
2017-09-13 14:03:40 -07:00
Daniel Imms 136c82f9ad Merge pull request #981 from Tyriar/974_fix_wide_arrow
Treat \u279C arrow as ambiguous width char (like emoji)
2017-09-13 11:01:40 -07:00
Daniel Imms ead45fe4d0 Add a TODO 2017-09-13 10:59:55 -07:00
Daniel Imms 69982dc16a Merge pull request #983 from Tyriar/remove_log
Remove log
2017-09-13 10:54:10 -07:00
Daniel Imms d030206195 Merge pull request #980 from Tyriar/972_decimal_text
Draw text using decimal numbers
2017-09-13 10:53:49 -07:00
Daniel Imms 30cac21003 Remove log 2017-09-13 10:34:58 -07:00
Daniel Imms cd21a24ee4 Merge pull request #982 from Tyriar/970_fix_alt_selection
Fix alt+selection while mouse events are enabled
2017-09-13 10:16:16 -07:00
Daniel Imms 73d3164426 Fix alt+selection while mouse events are enabled
Fixes #970
2017-09-12 20:00:25 -07:00
Daniel Imms cf32452917 Treat \u279C arrow as ambiguous width char (like emoji)
Fixes #974
2017-09-12 19:23:26 -07:00
Daniel Imms 403fd3cd4f Draw text using decimal numbers
Fixes #972
2017-09-12 18:55:59 -07:00
Daniel Imms 6899e01fc1 Improve scrolling while user has scrolled up
Fixes #953
2017-09-12 15:06:23 -07:00
Felipe Gasper 6181262c76 remove debug changes 2017-09-11 22:39:13 -04:00
Daniel Imms 2114bc4837 Ensure leave is called when leaving a MouseZone
Fixes #975
2017-09-11 11:12:51 -07:00
Daniel Imms 1897f0f51a Merge pull request #968 from Tyriar/line_height_fixes
Fix several issues with line height
2017-09-11 09:42:06 -07:00
Felipe Gasper 91aa8c51fc got it 2017-09-11 00:01:07 -04:00
Daniel Imms 903ed1917e Remove viewport test
It's not tightly linked to renderer and depends on devicePixelRatio.
2017-09-10 10:43:33 -07:00
Daniel Imms ac23be134b Simplify viewport 2017-09-10 10:38:08 -07:00
Daniel Imms ae741348a6 Fix several issues with line height
Fixes #966
Fixes #967
2017-09-10 10:31:19 -07:00
Daniel Imms 052e0b5a94 Merge pull request #961 from Tyriar/959_960_link_state
Fix issues with link state
2017-09-10 08:07:23 -07:00
Daniel Imms 6c06d83525 Support theming cursor accent color
Fixes #963
2017-09-10 08:01:16 -07:00
Felipe Gasper e442512087 trying to make it work 2017-09-09 23:12:01 -04:00
Daniel Imms 0e3518409e Fix issues with link state
- Scrolling will now clear the link renderer
- Refreshing a single line will now recalculate only that line

Fixes #959
Fixes #960
2017-09-09 19:06:30 -07:00
Daniel Imms 9bb675462f Merge pull request #956 from marcdumais-work/v3
Add Theia as a "Real World" use of xterm.js
2017-09-08 11:58:27 -07:00
Daniel Imms 948eedba89 Merge pull request #938 from Tyriar/canvas_render
Render using canvas
2017-09-08 11:07:59 -07:00
Daniel Imms 0c19bc9c28 Fix tests 2017-09-08 11:06:15 -07:00
Daniel Imms 75b91c618e Update license text 2017-09-08 10:16:42 -07:00
Marc Dumais e3051ea1dc Add Theia as a "Real World" use of xterm.js 2017-09-08 11:20:43 -04:00
Thomas Zilz 48391c3108 Merge pull request #952 from mofux/delete-line-fix
Fix CSI Ps M to delete the correct line
2017-09-08 14:00:24 +02:00
Paris Kasidiaris 3a8327de66 Merge pull request #949 from vincentwoo/unused-timer
Delete unused timer variables
2017-09-08 11:41:50 +03:00
Daniel Imms ea8dbbd29f Underline links on hover 2017-09-07 10:20:48 -07:00
Thomas Zilz 4eb356f6be Fix CSI Ps M to delete the correct line 2017-09-07 17:13:15 +02:00
Daniel Imms 67962a5e55 typescript@2.4
For string enums
2017-09-07 07:19:48 -07:00
Daniel Imms e960a0a82c Add ILinkMatcherOptions.hoverEndCallback 2017-09-06 16:05:09 -07:00
Daniel Imms 66c891df5b Fix resize adding right padding on demo 2017-09-06 15:36:40 -07:00
Daniel Imms fb90c98f81 Fix blurry text by supporting floating pt devicePixelRatios 2017-09-06 10:36:34 -07:00
Daniel Imms b69ff5d31a Redraw terminal when devicePixelRatio changes 2017-09-06 10:22:33 -07:00
Paris Kasidiaris a883029044 Merge pull request #926 from ficristo/search-fix
Do not browserify xterm again inside search addon.
2017-09-06 20:04:42 +03:00
Vincent Woo 2f168da1dc Delete unused timer variables 2017-09-05 19:14:11 -07:00
Daniel Imms f87213790e Merge branch 'master' into search-fix 2017-09-05 11:30:28 -07:00
Daniel Imms 7b199ac17f Some more documentation 2017-09-04 19:40:49 -07:00
Daniel Imms 5c2d5dcd27 Document methods of BaseRenderLayer 2017-09-04 19:34:57 -07:00
Daniel Imms 1e728d453b Add new API to typings test 2017-09-04 14:19:17 -07:00
Daniel Imms 46b0857ef6 Resolve TODOs 2017-09-04 14:13:41 -07:00
Daniel Imms 0dc24cf800 Move theme setting into setOption API 2017-09-04 13:41:56 -07:00
Daniel Imms 8e07af04e3 Drop support for IE/Opera and indicate latest
Opera uses Blink under the hood so supporting Chrome is basically
supporting Opera
2017-09-04 13:39:35 -07:00
Daniel Imms da1e3b40cc Don't use ImageBitmap on Firefox 2017-09-04 12:59:59 -07:00
Daniel Imms 9506c01824 Add tests for utils/Mouse 2017-09-04 10:27:07 -07:00
Daniel Imms 1f38c2f467 Remove unused file 2017-09-04 09:53:53 -07:00
Daniel Imms 6f6f17f5dc Add tests for ColorManager 2017-09-04 09:52:35 -07:00
Daniel Imms a35cf02208 Add GridCache tests 2017-09-04 09:39:44 -07:00
Daniel Imms 1c3028c59f Work around an emoji bug 2017-09-04 09:23:14 -07:00
Daniel Imms a17950290c Support emoji 2017-09-04 09:04:50 -07:00
Daniel Imms ff31f34551 Add selection to ITheme 2017-09-04 08:14:40 -07:00
Daniel Imms 0bfdff0b39 Theme unfocused cursor using cursor color 2017-09-04 08:09:43 -07:00
Paris Kasidiaris 247b63a0e3 Merge pull request #933 from nebulade/readystate
Check socket state before sending data
2017-09-04 10:23:22 +03:00
Daniel Imms 29a7ee30f3 Fix lint 2017-09-03 22:39:47 -07:00
Daniel Imms e77f1a9287 Use default colors if not defined in a theme
Previous behavior didn't touch them, meaning partial themes could be
inconsistent
2017-09-03 21:52:52 -07:00
Daniel Imms 7934e05083 jsdoc Linkifier 2017-09-03 21:34:48 -07:00
Daniel Imms e123dd1849 Null check if clicking on scroll bar 2017-09-03 21:15:14 -07:00
Daniel Imms 36778186e1 Fix tests 2017-09-03 14:34:50 -07:00
Daniel Imms e518ea04c5 Get tests reporting failures again 2017-09-03 14:21:30 -07:00
Daniel Imms 17731c3de3 Support multiple links in a line, fix Linkifier tests 2017-09-03 13:56:53 -07:00
Daniel Imms b30cb58ff4 Support hover callback in links 2017-09-03 12:47:04 -07:00
Daniel Imms 923ea7247c Get links working on proper coords 2017-09-03 11:39:17 -07:00
Daniel Imms 5619abe12d Basic link support using mouse zone manager 2017-09-03 11:20:29 -07:00
Daniel Imms 2d1a1bfb76 Fix inconsistency with lineHeight 2017-09-03 09:05:26 -07:00
Daniel Imms 48b37453ea Ensure char measure's line height isn't influenced by outside 2017-09-03 08:40:00 -07:00
Daniel Imms bc3470c272 Fix default bold text 2017-09-03 08:06:27 -07:00
Daniel Imms a3297b0017 Fix viewport/background size after char size changed 2017-09-03 07:57:16 -07:00
Daniel Imms deb47e29bf Fix canvas resizing with non-1 lineHeight 2017-09-03 07:41:18 -07:00
Daniel Imms 5a4851630e Prevent updating of invalid terminal row ranges 2017-09-03 07:27:52 -07:00
Daniel Imms fd4e9d8a1b Fix graphical glitch wide chars would leave behind
Wide chars now 'own' the character next to them and are entirely responsible
for drawing and clean up
2017-09-02 23:13:24 -07:00
Daniel Imms 8427f7490d Clear state when resizing as canvases get cleared 2017-09-02 21:13:44 -07:00
Daniel Imms 7973b26e7a Include new options in ITerminalOptions 2017-09-02 19:45:44 -07:00
Daniel Imms c94e87428d Fix CharMeasure getting taller on successive calls 2017-09-02 19:04:07 -07:00
Daniel Imms 7ccac09b6b Fix the composition element's position 2017-09-02 18:41:53 -07:00
Daniel Imms c5a6d96a62 Remove padding from terminal, not support atm 2017-09-02 14:11:21 -07:00
Daniel Imms 4f81cdfe8c Make the terminal background theme aware 2017-09-02 13:59:22 -07:00
Daniel Imms 8039fd35e6 Remove unused CSS, selectionElement 2017-09-02 13:34:01 -07:00
Daniel Imms 24a98f2fa8 Remove rowContainer and children, disable Linkifier 2017-09-02 13:26:05 -07:00
Daniel Imms 66d41feab6 Expose setTheme through .d.ts 2017-09-02 12:31:26 -07:00
Daniel Imms c92a2f964a Support lineHeight 2017-09-02 12:27:09 -07:00
Daniel Imms 9cabb93b8b Organize temporary color handling code 2017-09-02 11:08:43 -07:00
Daniel Imms ee4b71c8e7 Remove Terminal.options.colors
It wasn't being used
2017-09-02 10:51:08 -07:00
Daniel Imms b8732a25a3 Support Safari
Safari lacks support for window.createImageBitmap, fallback to
HTMLCanvasElement in thi case.
2017-09-02 10:37:51 -07:00
Daniel Imms 32a3c9812d Support wide character drawing and cursors 2017-09-02 10:17:49 -07:00
Daniel Imms ae72e1c51e Fix uncached chars bleeding into other cells 2017-09-02 09:49:48 -07:00
Daniel Imms 6dd6d0391f Add cell spacing to char atlas 2017-09-02 00:06:28 -07:00
Daniel Imms 36a723c4cc Fix 256 FG chars 2017-09-01 23:58:34 -07:00
Daniel Imms cf7237d2a4 Fix remaining cursor animation state issues 2017-09-01 23:47:17 -07:00
Daniel Imms 06b54585a1 Fix cursor render when after focusing underline/bar 2017-09-01 23:11:39 -07:00
Daniel Imms f8ece108c6 Rerender cursor if state changes 2017-09-01 23:00:29 -07:00
Daniel Imms 4919c40b57 Add cursor to ITheme 2017-09-01 22:53:21 -07:00
Daniel Imms dc1e727613 Support blurred cursor 2017-09-01 22:42:31 -07:00
Daniel Imms b57b94ad0b Improve focus/blur state, fire only once
Fixes #681
2017-09-01 22:02:12 -07:00
Daniel Imms 6ee8e9126a Remove some old dead code 2017-09-01 21:38:35 -07:00
Daniel Imms 5cd189e2e0 Fix demo pty size 2017-09-01 21:36:20 -07:00
Daniel Imms b0653fec68 Support underline 2017-09-01 21:24:17 -07:00
Daniel Imms 70764a74af Use the proper bg/fg colors for inverse attr 2017-09-01 21:09:07 -07:00
Daniel Imms 1f444b1913 Support invisible attr 2017-09-01 20:51:18 -07:00
Daniel Imms bf95333275 Fix the fit addon 2017-09-01 20:44:41 -07:00
Daniel Imms 2c9dbc6191 Add some jsdoc 2017-09-01 16:58:02 -07:00
Daniel Imms de4fcb9241 Merge render layer interface types 2017-09-01 16:54:26 -07:00
Daniel Imms bc3bdacdaa Add a char atlas cache to allow different styles+reuse across terminals 2017-09-01 16:43:45 -07:00
Daniel Imms 62fea4d3ed Add theme support 2017-09-01 15:50:18 -07:00
Daniel Imms 076156b66e Properly support blinking cursors 2017-09-01 12:59:18 -07:00
Daniel Imms 3fc500b291 Pull cursor animation state management into a helper class 2017-09-01 12:11:07 -07:00
Daniel Imms 882d7e4a30 Add basic support for cursor blinking 2017-09-01 11:34:52 -07:00
Daniel Imms 848c85c1eb Fix more cases where ' ' doesn't have code 2017-08-31 23:28:42 -07:00
Daniel Imms 81d93b8fbf Ensure CharMeasure exposes integers 2017-08-31 23:23:04 -07:00
Daniel Imms 42e5b3473d Don't clear fg char if it's null or ' ' 2017-08-31 23:13:09 -07:00
Daniel Imms 510940389c Provide convenience draw methods that deal with cells 2017-08-31 23:01:17 -07:00
Daniel Imms 9323833fcc Move scaledCharWidth/Height into base render layer 2017-08-31 22:48:08 -07:00
Daniel Imms 6588e9e01b Fix cursor which cursor character is rendered 2017-08-31 22:43:48 -07:00
Daniel Imms 15c73ef94f Add fontSize and fontFamily options 2017-08-31 22:42:39 -07:00
Daniel Imms c88824155f Simplify color generation code 2017-08-31 21:18:55 -07:00
Daniel Imms 1998675dc0 Move char drawing to base and use in cursor layer 2017-08-31 17:29:58 -07:00
Daniel Imms fe7b424ab8 Move char atlas into BaseRenderLayer 2017-08-31 17:20:50 -07:00
Daniel Imms a91380a76f Pull common parts into BaseRenderLayer 2017-08-31 17:13:15 -07:00
Daniel Imms fd18f7cba7 Support basic cursor 2017-08-31 17:02:24 -07:00
Johannes Zellner 4a9143ab31 Check socket state before sending data
Maybe related to #929
2017-08-31 20:26:36 +02:00
Daniel Imms d3650d9d80 Draw selection underneath foreground 2017-08-31 07:54:16 -07:00
Daniel Imms dff3d16831 Support 256 color 2017-08-31 00:25:52 -07:00
Daniel Imms d601f0aec2 Hang on to selection state to avoid redrawing 2017-08-31 00:13:49 -07:00
Daniel Imms 3d1bb2c60f Support selection 2017-08-31 00:09:23 -07:00
Daniel Imms 5953bbab42 Start SelectionRenderLayer 2017-08-30 23:44:52 -07:00
Daniel Imms 7aff45c2dc Remove additional frame skipping as rendering is so fast now 2017-08-30 23:39:33 -07:00
Daniel Imms a224ed7cc7 Move canvas Renderer into folder 2017-08-30 23:06:55 -07:00
Daniel Imms 1291dc5571 Support inverse 2017-08-30 23:05:51 -07:00
Daniel Imms 6a0b9bd209 Only render fg cells if there are changes 2017-08-30 22:55:17 -07:00
Daniel Imms d93a80398d Draw unicode characters 2017-08-30 22:23:25 -07:00
Daniel Imms 129633a66d Only draw background when needed 2017-08-30 22:09:25 -07:00
Daniel Imms 18e1134e61 Tidy up 2017-08-30 21:55:24 -07:00
Daniel Imms 2cb6593b6b Move fg rendering into IRenderLayer 2017-08-30 21:44:41 -07:00
Daniel Imms 5961bdbd9e typescript@2.3.0 for ImageBitmap interface 2017-08-30 21:44:18 -07:00
Daniel Imms 0db42e2056 Pull bg rendering into an IRenderLayer 2017-08-30 21:13:57 -07:00
Daniel Imms 137847e85c Linkify all rows at once to prevent multiple timeout restarts 2017-08-30 19:27:37 -07:00
Daniel Imms 5ce39d3c81 GPU ascii rendering 2017-08-30 19:12:29 -07:00
Daniel Imms e98794a0a7 progress 2017-08-30 17:27:20 -07:00
Daniel Imms 640cd18515 Support bold, underline, fix colors 2017-08-30 17:07:30 -07:00
Daniel Imms c6d4c73c8a Initial prototype 2017-08-30 14:50:16 -07:00
Daniel Imms 575c10114b Merge pull request #931 from Tyriar/930_fix_alt_tab_stops
Properly setup and maintain tab stops for the alt buffer
2017-08-30 08:20:18 -07:00
Daniel Imms a57e511fa3 Properly setup and maintain tab stops for the alt buffer
Fixes #930
2017-08-29 21:08:11 -07:00
Daniel Imms 38c66e7c1a Merge pull request #928 from Tyriar/927_terminal_in_search
Don't include Terminal in search addon
2017-08-29 09:41:31 -07:00
Daniel Imms 5ca7c7e640 Merge pull request #923 from Tyriar/922_fix_scroll_RI
Fix issues with scroll and reverseIndex
2017-08-27 16:45:54 -07:00
Daniel Imms 6b8b32015d Don't include Terminal in search addon
Fixes #927
2017-08-27 10:39:13 -07:00
ficristo 6900b4dadf Do not browserify xterm again inside search addon. 2017-08-26 14:26:51 +02:00
Daniel Imms bc86664726 Improve Buffer.resize to work with uninitialized buffers
Fixes #924
2017-08-25 13:14:30 -07:00
Daniel Imms 54cf30ae68 Remove test files 2017-08-25 12:47:45 -07:00
Daniel Imms 41463d8eb5 Make reverseIndex scroll region-aware
This was causing a issue when scrollback was 0 as the start of the
buffer was getting copied
2017-08-25 12:41:53 -07:00
Daniel Imms a2161532db Fix reverseIndex to work with scroll regions and 0 scrollback 2017-08-25 12:11:20 -07:00
Daniel Imms 9a8b7a4d8d Fix scroll region scrolling with 0 scrollback 2017-08-25 11:26:46 -07:00
Daniel Imms bfdc468d4b Merge pull request #914 from Tyriar/913_mousedown_prop
Allow mousedown even to propagate on right click
2017-08-25 07:44:13 -07:00
Daniel Imms b706383687 Allow mousedown even to propagate on right click
Fixes #913
2017-08-24 11:15:25 -07:00
Daniel Imms 6e9d60d76d Merge pull request #912 from Tyriar/911_negative_scrollback
Prevent scrollback setOption < 0
2017-08-22 10:54:12 -07:00
dcylabs 79c5f64dd4 Merge branch 'v3' of https://github.com/dcylabs/xterm.js into v3 2017-08-22 00:34:07 +02:00
dcylabs 81cbeb1d5a Fixed selection issue when terminal is in nested scrolled elements 2017-08-22 00:34:03 +02:00
Daniel Imms 877e1e5eb3 Prevent scrollback setOption < 0
Fixes #911
2017-08-21 14:30:56 -07:00
dcylabs 75ff924be1 Merge branch 'v3' of https://github.com/dcylabs/xterm.js into v3 2017-08-21 21:29:17 +02:00
dcylabs d69a01193d Fixed selection issue when terminal is in nested scrolled elements 2017-08-21 21:29:05 +02:00
dcylabs e6c1ba29d9 Fixed selection issue when terminal is in nested scrolled elements 2017-08-21 20:44:02 +02:00
dcylabs 725ec80983 Fixed selection issue when terminal is in nested scrolled elements 2017-08-21 20:43:03 +02:00
dcylabs 7f49bd99c2 Fixed selection issue when terminal is in nested scrolled elements 2017-08-21 20:27:17 +02:00
Daniel Imms abe32272dd Merge pull request #909 from Tyriar/898_improve_types
Minor typings tweaks
2017-08-21 10:09:02 -07:00
Daniel Imms 8bc2242d9f Add generic overloads to overloaded functions in d.ts
If we don't have this then tsc will throw errors when passing strings
to the functions, seems wrong to force casting strings to use the
functions, eg. <'bar'>style
2017-08-20 11:45:42 -07:00
Daniel Imms cea3dd60b6 Add cols and rows to d.ts 2017-08-20 11:43:40 -07:00
Daniel Imms 7645bdd418 Merge pull request #899 from Tyriar/898_explicit_typings
Add explicit types
2017-08-20 10:34:38 -07:00
Daniel Imms eda9443b1a Allow null with cursorStyle and bellStyle 2017-08-20 10:29:48 -07:00
Daniel Imms a0d8e3c666 Merge remote-tracking branch 'ups/v3' into 898_explicit_typings 2017-08-19 16:41:01 -07:00
Daniel Imms f25104789e Merge pull request #906 from npezza93/sync-bell-sound-on-change
When bellSound changes, update the bellAudioElements src
2017-08-19 16:40:08 -07:00
npezza93 f983e4eb6b Combine preloadBellSound and syncBellSound into the same function 2017-08-19 18:03:04 -04:00
Daniel Imms c984013e1e Remove terminal from other events 2017-08-19 14:52:48 -07:00
Daniel Imms 8fdedd4da1 Slim down refresh and resize events
Fixes #903
2017-08-19 14:38:54 -07:00
Daniel Imms e848d6afbe Remove open event
Fixes #901
2017-08-19 14:33:41 -07:00
npezza93 81cb30833f When bellSound changes, update the bellAudioElements src
Fixes #904
2017-08-19 16:55:24 -04:00
Daniel Imms f520e27f40 Fix tests 2017-08-19 13:32:03 -07:00
Daniel Imms fa015d91fe Improve types and add bellStyle/bellSound 2017-08-19 13:30:37 -07:00
Daniel Imms 34e1ee2bf6 Fix typings test on Windows 2017-08-19 13:20:32 -07:00
Daniel Imms 5ab047ea0f Merge remote-tracking branch 'ups/v3' into 898_explicit_typings 2017-08-19 13:20:19 -07:00
Daniel Imms 9ab17dec80 Merge pull request #878 from npezza93/add-bell-sound
If bell() gets called emit bell event and add default bell sound
2017-08-19 13:05:01 -07:00
npezza93 1f930c112b Add bellAudioElement to helperContainer instead of element 2017-08-19 15:56:58 -04:00
npezza93 42c3eff3f7 Update css transitions 2017-08-19 15:55:19 -04:00
npezza93 121143515a Change opacity on visual bell instead of background-color 2017-08-19 15:17:04 -04:00
npezza93 147fef74c6 Use removeChild instead of remove for compatibility 2017-08-19 15:16:21 -04:00
Daniel Imms 668b25eeb2 Fix license info and lint 2017-08-19 11:04:06 -07:00
Daniel Imms 34f5b2cb8a Remove option overloads from src
src/ handles more than that specified (and should incase you're not
using TS), this also reduces duplication as the definitions are only
in typings/
2017-08-19 10:29:05 -07:00
Daniel Imms 380f950d4d Clean up 2017-08-19 10:22:46 -07:00
Daniel Imms 6e2ca0af12 Fill out typings tests 2017-08-19 10:17:47 -07:00
Daniel Imms fd8b62610f Add typings test setup 2017-08-19 09:49:37 -07:00
Daniel Imms 4474f29ebf Add link matcher APIs 2017-08-19 09:25:57 -07:00
Daniel Imms cd29c83a64 Improve overloaded function typings/comments 2017-08-19 09:18:44 -07:00
npezza93 b0164e1f96 Update bell sound 2017-08-19 08:38:19 -04:00
Daniel Imms e4e2fbf885 Add overloads for Terminal.on 2017-08-18 17:46:49 -07:00
Daniel Imms 92ac427d00 Type addon strings in loadAddon 2017-08-18 17:34:10 -07:00
Daniel Imms 3ba3638ab7 Include all APIs from website 2017-08-18 17:25:40 -07:00
Daniel Imms 2f60c241ee Use manual typings over automatically generated ones
These are pulled from the typings I wrote for vscode

Fixes #898
2017-08-18 16:51:43 -07:00
Daniel Imms ae0d5e4ffb Merge pull request #893 from Tyriar/892_alt_buffer_viewport_exception
Prevent exception switching to alt buffer before open()
2017-08-18 16:04:22 -07:00
npezza93 68cd79db34 Set bellStyle to a string type instead of an array of strings 2017-08-17 19:44:37 -04:00
npezza93 8a6bff42c9 Remove bellAudioElement if it is not used. Remove extra import 2017-08-17 18:27:49 -04:00
npezza93 c88f50125b Add a bellStyle dropdown in the demo 2017-08-17 18:02:12 -04:00
Daniel Imms b5fc054fa5 Prevent exception switching to alt buffer before open()
Fixes #892
2017-08-17 08:36:08 -07:00
npezza93 0bb5ff8b09 Fix lints 2017-08-16 21:00:57 -04:00
npezza93 1d6f71d680 Fix bad merge 2017-08-16 20:39:28 -04:00
npezza93 3beb1f5c7c Add return types on new private functions 2017-08-16 20:39:28 -04:00
npezza93 c41bd81526 Swap out bell sound for a free one 2017-08-16 20:39:28 -04:00
npezza93 2f1380a31d Make bellStyle singular. Preload sound on option setting. Use strings as options 2017-08-16 20:39:28 -04:00
npezza93 d8717d64ba Add visual bell styling for underline and bar cursor types 2017-08-16 20:39:27 -04:00
npezza93 96c9d50ee2 Fix some quote lints 2017-08-16 20:39:27 -04:00
npezza93 3027b1d3d4 Set the visual bell color to a light gray 2017-08-16 20:39:27 -04:00
npezza93 8c94ef8aa0 Clear out any existing vidualBellTimers. Set colors back to all white.
Use visual class instead of setting colors codes in js.
2017-08-16 20:39:27 -04:00
npezza93 44ed0b9ceb Dont hardcode as many color codes in xterm.ts 2017-08-16 20:39:27 -04:00
npezza93 8a1f365a7e Add ability to have a visual bell 2017-08-16 20:39:27 -04:00
npezza93 6b46e0837f Move preloading bell audio to open() and append it the the terminal element 2017-08-16 20:39:26 -04:00
npezza93 fd51d0acf3 Preload bell audio
Allow the bellSound to be more easily configurable. You can pass false
to the bellSound and no sound will be played or you can pass it any
source you'd like.
2017-08-16 20:39:26 -04:00
npezza93 0eab4d68f6 Rename Bell.ts to Sounds that has BellSound constant 2017-08-16 20:39:21 -04:00
npezza93 245f62685a If bell() gets called emit bell event and add default bell sound 2017-08-16 20:39:15 -04:00
Daniel Imms f3d375a7a8 Merge pull request #855 from Tyriar/847_proper_scrollback_value
Make buffer length equal rows + scrollback, make alt buffer always 0 scrollback
2017-08-16 09:38:11 -07:00
Daniel Imms 39328d6e0c Merge pull request #882 from Tyriar/406_remove_dist_bower
Remove bower support, clean up readme
2017-08-16 08:46:23 -07:00
Daniel Imms 7b0d0e810c _isAltBuffer -> _hasScrollback 2017-08-16 08:45:30 -07:00
Daniel Imms 9dd1083918 Merge remote-tracking branch 'ups/v3' into 847_proper_scrollback_value 2017-08-16 08:41:42 -07:00
Daniel Imms aa438c8b83 Merge pull request #874 from Tyriar/860_v3_resize_exception
Fix exception when resizing both dimensions
2017-08-16 08:29:35 -07:00
Paris Kasidiaris cc7c310eee Merge pull request #888 from LucaT1/patch-1
Add link to vterm
2017-08-16 17:55:02 +03:00
Luca 4ab6500c1c Add link to vterm 2017-08-16 16:29:04 +02:00
Paris Kasidiaris 14c555fcfb Merge pull request #886 from dgriffen/dgriffen-patch-1
Add link to Whack Whack Terminal
2017-08-15 23:05:28 +03:00
Daniel Griffen bf7dc2f8dd Add link to Whack Whack Terminal 2017-08-15 12:16:53 -07:00
Daniel Imms d583163ac8 Move uses and browser support sections down 2017-08-12 14:48:38 -07:00
Daniel Imms a3f7b36986 Remove bower from prepare-release 2017-08-12 14:45:21 -07:00
Daniel Imms 7c3189379c Remove bower from .vscode/settings.json 2017-08-12 14:45:00 -07:00
Daniel Imms fcd2ba78bb Remove bower from README and reorganize/clean up 2017-08-12 14:44:49 -07:00
Daniel Imms 48b9173f2e Remove bower.json
Part of #406
2017-08-12 14:17:03 -07:00
Daniel Imms 184f49d909 Remove dist folder
Part of #406
2017-08-12 13:54:34 -07:00
Daniel Imms b8127b0d16 Merge pull request #879 from ioquatix/patch-1
Add link to script-runner.
2017-08-11 14:50:59 -07:00
Samuel Williams 1a50671823 Add link to script-runner. 2017-08-12 02:06:42 +12:00
Daniel Imms 996eb1b06f Merge remote-tracking branch 'ups/v3' into 847_proper_scrollback_value 2017-08-08 19:05:24 -07:00
Daniel Imms ad1a42d210 Merge remote-tracking branch 'ups/master' into v3 2017-08-08 18:50:34 -07:00
Daniel Imms 91bf3197ae Merge pull request #868 from Tyriar/865_fix_module_build
Fix module build, add TS declaration files, fix search addon
2017-08-08 03:03:50 -07:00
Daniel Imms 17c3ec0d0c Merge pull request #870 from Tyriar/869_shift_force_selection
Revert "Disable selection override on Windows/Linux"
2017-08-08 03:02:01 -07:00
Daniel Imms 8a17ac1baa Merge pull request #849 from Tyriar/848_cancel_event_on_wheel
Properly cancel event when in mouse mode
2017-08-08 01:09:37 -07:00
Daniel Imms a7aee75025 Merge pull request #858 from Tyriar/646_deprecated_focus
No longer focus the terminal by default
2017-08-08 01:05:42 -07:00
Daniel Imms 0902b92f79 Revert "Disable selection override on Windows/Linux"
This reverts commit 3479614c73.
2017-08-08 01:05:24 -07:00
Daniel Imms 9659f29e50 Remove Terminal.open focus param 2017-08-08 00:59:14 -07:00
Daniel Imms f21d5f25ec Fix search addon after TS refactor
Fixes #867
2017-08-08 00:29:22 -07:00
Daniel Imms 3b787824d3 Fix import for CommonJS consumers
CommonJS now imports the Terminal object directly as the trick in xterm.ts
wasn't working properly.

Fixes #865
2017-08-08 00:24:41 -07:00
Daniel Imms a0ce9a79a9 Build and export TS declaration files
Fixes #866
2017-08-07 23:48:58 -07:00
Daniel Imms acefa1a423 Merge pull request #864 from Tyriar/862_tests_to_ts
Migrate tests to TypeScript
2017-08-07 23:34:55 -07:00
Daniel Imms b42a9039cc Rename TestUtils.ts to TestUtils.test.ts
This will allow it to be excluded when we do #863
2017-08-07 22:40:15 -07:00
Daniel Imms b3ad3eff8b Shuffle files around
src/test/escape-sequences-test.ts -> src/Terminal.integration.ts
src/test/escape_sequence_files/* -> fixtures/escape_sequence_files/
2017-08-07 22:38:42 -07:00
Daniel Imms 28c85b8fb9 Convert escape sequences test to TS
Part of #862
2017-08-07 22:24:22 -07:00
Daniel Imms e9b0867bd2 addons/test.js and test.js -> Terminal.test.ts
Part of #862
2017-08-07 22:15:13 -07:00
Daniel Imms f52b43b380 Merge pull request #861 from Tyriar/791_buffer_refactor
Refactor buffer in preparation for true color and buffer performance improvements
2017-08-07 16:03:00 -07:00
Daniel Imms fd61c8e874 Use a const for all refs to data char and width
Part of #791
2017-08-07 15:40:48 -07:00
Daniel Imms c2bb507fe4 Move BufferLines.ts into Buffer.ts
Part of #791
2017-08-07 15:22:58 -07:00
Daniel Imms 091854df0e Merge pull request #852 from Tyriar/851_negative_tab_stop_width
Fix crash on negative tab stop width
2017-08-07 01:22:13 -07:00
Daniel Imms a1b91e1f96 Merge pull request #856 from Tyriar/fix_vscode_debugging
Fix vscode debugging
2017-08-07 01:21:41 -07:00
Daniel Imms b95d789821 Merge pull request #857 from Tyriar/744_remove_attachCustomKeydownHandler
Remove deprecated attachCustomKeydownHandler
2017-08-07 01:21:26 -07:00
Daniel Imms de8947f3d0 Merge pull request #850 from peterbaumgarten/master
Marking that a C++ compiler is required to build
2017-08-06 19:40:18 -07:00
Daniel Imms b1c6a97839 No longer focus the terminal by default
Fixes #646
2017-08-06 19:22:15 -07:00
Daniel Imms 8c46f1b6ba Remove deprecated attachCustomKeydownHandler
Fixes #744
2017-08-06 19:19:49 -07:00
Daniel Imms fb6cbbdaad Fix vscode debugging
This broke when the TS addon was added
2017-08-06 19:02:56 -07:00
Daniel Imms e7ee3ec63c Fix trimming on a buffer with 0 scrollback
Unfortunately this removed the padding idea from CircularList as it
would only work when the list is not full.
2017-08-06 18:56:37 -07:00
Daniel Imms a57f55dcbf Support buffers with scrollback of 0, force alt as 0
Fixes #802
2017-08-06 18:18:49 -07:00
Daniel Imms 27f7679494 Add some padding and a shrink threshold to CircularList
This is needed so that resize is still performant. Now the list size is only
rebuild (O(n)) when it goes beyond 40 entries of the initial max length. The
List is also rebuilt when the size shrinks below 120 of the actual backing max
length (init_max_length + 40 - 120).
2017-08-06 14:17:30 -07:00
Daniel Imms 26977b370e Fix crash on negative tab stop width
Fixes #851
2017-08-06 13:47:03 -07:00
Daniel Imms 109d467b95 Make buffer length = rows + scrollback
Fixes #847
2017-08-06 13:28:58 -07:00
Peter Baumgarten 63268318ed Marking that a C++ compiler is required. On some linux distributions a C++ compiler is not installed by default. This can frustrate some new users. 2017-08-06 15:09:11 -05:00
Daniel Imms 45157d80c6 Properly cancel event when in mouse mode
Fixes #848
2017-08-06 12:59:40 -07:00
Daniel Imms 687a5e2efb Merge pull request #846 from Tyriar/get-v3-level
Get v3 level with master
2017-08-06 11:28:18 -07:00
Daniel Imms b07c0e4d23 Merge remote-tracking branch 'ups/master' into v3 2017-08-06 11:18:39 -07:00
Paris Kasidiaris 9358bf24db Bump version to 2.9.1
Signed-off-by: Paris Kasidiaris <paris@sourcelair.com>
2017-08-06 21:03:59 +03:00
Daniel Imms 24932b16d7 jsdoc 2017-08-06 21:03:59 +03:00
Steven Silvester 6cdd5a6405 Prevent webpack error 2017-08-06 21:03:59 +03:00
Daniel Imms 3f5b4f49f2 Merge pull request #839 from Tyriar/335_xterm_to_ts
Convert xterm.js to TypeScript
2017-08-06 10:49:27 -07:00
Daniel Imms 6cf2e8753e Remove comments 2017-08-06 01:44:27 -07:00
Daniel Imms 33cc78c987 Add explicit types on set/getOption 2017-08-06 01:42:57 -07:00
Daniel Imms 7cd8d1ec74 Resolve todos 2017-08-06 01:42:41 -07:00
Daniel Imms e0809d526e Type InputHandler tests 2017-08-06 00:58:21 -07:00
Daniel Imms ae3169e6ae Add CharData and LineData 2017-08-05 21:11:16 -07:00
Daniel Imms 2878d978c4 Fix lint 2017-08-05 21:06:04 -07:00
Daniel Imms 56ec6ed22c Merge branch '842_resize_buffers_bug' into 335_xterm_to_ts
setOption('scrollback', 0) no longer returns false, it just warns.
2017-08-05 20:48:42 -07:00
Daniel Imms f9fce53cc4 Add typedef tslint rule 2017-08-05 13:56:38 -07:00
Daniel Imms aee474b53e Type InputHandler._terminal 2017-08-05 12:57:29 -07:00
Daniel Imms 8a0bcf6b79 Clean up 2017-08-05 11:28:24 -07:00
Daniel Imms ad25905783 Fix reset 2017-08-05 11:20:39 -07:00
Daniel Imms 0b5ff47cc0 Give terminal options a proper interface 2017-08-05 02:57:34 -07:00
Daniel Imms da50e33aa8 Finish types on Terminal's properties 2017-08-05 02:50:44 -07:00
Daniel Imms e6b431d92f Add one-variable-per-declaration tslint rule
Multiple declarations per line makes it more difficult to read what
exactly is declared and generally makes code more verbose and less
likely to fill in types
2017-08-05 02:42:49 -07:00
Daniel Imms 7d1c5d1ac6 Fix tests 2017-08-05 02:34:21 -07:00
Daniel Imms 8903bddb17 Fix a bunch of warnings, remove dead code 2017-08-05 02:28:20 -07:00
Daniel Imms 41c335c0e6 The terminal works! 2017-08-05 02:22:43 -07:00
Daniel Imms 2104dccec5 Fix most errors in Terminal.ts 2017-08-05 01:58:42 -07:00
Daniel Imms db5b908d62 Move xterm.js -> Terminal.ts 2017-08-05 00:22:31 -07:00
279 changed files with 10337 additions and 16128 deletions
+9
View File
@@ -14,6 +14,15 @@ npm-debug.log
build/
.vscode/
.DS_Store
fixtures/typings-test/*.js
# Directories needed for code coverage
/coverage/
# Keep legacy files out of the repo, this can be removed when we merge v3 into master
dist/
src/utils/TestUtils.ts
src/xterm.js
# Keep the demo builds out of Git
demo/dist/
View File
+1 -2
View File
@@ -1,9 +1,8 @@
{
"search.exclude": {
"**/node_modules": true,
"**/bower_components": true,
"**/dist": true,
"**/build": true,
"**/lib": true
}
}
}
+18
View File
@@ -19,45 +19,63 @@ Bill Church <billchurch@users.noreply.github.com>
Bob Reid <bobreid@Bobs-MacBook-Pro.local>
bottleofwater <nison.mael+bottleofwater@gmail.com>
Brian Mock <brian@mockbrian.com>
Bruno Ribeito <b.m.fernandes.ribeiro@gmail.com>
Carson Anderson <carson@betterservers.com>
CHaBou <chabup@delean.fr>
Christian Budde Christensen <budde377@gmail.com>
Christof Marti <chrmarti@microsoft.com>
Christopher Jeffrey <chjjeffrey@gmail.com>
coderaiser <mnemonic.enemy@gmail.com>
Dan Brown <jdanbrown@gmail.com>
Daniel Griffen <daniel@griffen.io>
Daniel Imms <daimms@microsoft.com>
Daniel Risacher <drisacher@gmail.com>
Dan Kaplun <dbkaplun@twitch.tv>
Darin Morrison <freebroccolo@users.noreply.github.com>
dcylabs <dcylabs@gmail.com>
Dominik Csapak <d.csapak@proxmox.com>
Edgar Andrés Margffoy Tuay <andfoy@gmail.com>
Elliot Saba <staticfloat@gmail.com>
Exile <exile@chamber.ee>
Felipe Gasper <felipe@felipegasper.com>
ficristo <ficristo.work@gmail.com>
Gary Ritchie <gary@rstudio.com>
hiro-su <h.sugipon@gmail.com>
Ian Lewis <ianlewis@google.com>
imoses <ido@twiggle.com>
InDieTasten <indietasten@gmail.com>
irokas <akasidiari@inf.uth.gr>
Jakob Gillich <jakob@gillich.me>
Jean Bruenn <himself@jeanbruenn.info>
Jeremy Danyow <jedanyow@microsoft.com>
Joao Moreno <jomo@microsoft.com>
Joao Moreno <mail@joaomoreno.com>
Johannes Zellner <johannes@nebulon.de>
Jon Masters <jon.masters@sky.com>
Jörg Breitbart <jerch@rockborn.de>
Justin Mecham <justin@mecham.me>
Kirill Merkushev <lanwen@yandex.ru>
Luca <LucaT1@users.noreply.github.com>
Lucian Buzzo <lucian.buzzo@gmail.com>
Lukas Drgon <lukas.drgon@gmail.com>
Maël Nison <nison.mael@gmail.com>
Marc Dumais <marc.dumais@ericsson.com>
Martin Chloride <i@martincl2.me>
Martin Koppehel <martin.koppehel@st.ovgu.de>
Martin Wang <jiahaow@ca.ibm.com>
Matt Bierner <matb@microsoft.com>
Michael Irwin <mikesir87@gmail.com>
Mikko Karvonen <mikko.karvonen@arm.com>
mofux <t.zilz@mofux.org>
Nicolas Ramz <nicolas.ramz@gmail.com>
npezza93 <npezza93@gmail.com>
Oleksandr Andriienko <oandriie@redhat.com>
Paris Kasidiaris <pariskasidiaris@gmail.com>
Paris Kasidiaris <paris@sourcelair.com>
Peter Baumgarten <me@peterbaumgarten.com>
Rick Baker <rick@ricktbaker.com>
runarberg <runar@greenqloud.com>
Samuel Williams <samuel.williams@oriontransfer.co.nz>
Saswat Das <saswatds@users.noreply.github.com>
Saul Costa <saul@codevolve.com>
Shuanglei Tao <tsl0922@gmail.com>
+2 -2
View File
@@ -1,4 +1,4 @@
FROM node:6.9
FROM node:6
MAINTAINER Paris Kasidiaris <paris@sourcelair.com>
# Set the working directory
@@ -6,7 +6,7 @@ WORKDIR /usr/src/app
# Set an entrypoint, to automatically install node modules
ENTRYPOINT ["/bin/bash", "-c", "if [[ ! -d node_modules ]]; then npm install; fi; exec \"${@:0}\";"]
CMD ["npm", "run", "dev"]
CMD ["npm", "run", "start"]
# First, install dependencies to improve layer caching
COPY package.json /usr/src/app/
-1
View File
@@ -1 +0,0 @@
web: npm run dev
+83 -60
View File
@@ -1,6 +1,6 @@
# [![xterm.js logo](logo.png)](https://xtermjs.org)
# [![xterm.js logo](logo-full.png)](https://xtermjs.org)
[![xterm.js build status](https://api.travis-ci.org/sourcelair/xterm.js.svg)](https://travis-ci.org/sourcelair/xterm.js) [![Coverage Status](https://coveralls.io/repos/github/sourcelair/xterm.js/badge.svg)](https://coveralls.io/github/sourcelair/xterm.js) [![Gitter](https://badges.gitter.im/sourcelair/xterm.js.svg)](https://gitter.im/sourcelair/xterm.js?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
[![xterm.js build status](https://api.travis-ci.org/xtermjs/xterm.js.svg)](https://travis-ci.org/xtermjs/xterm.js) [![Coverage Status](https://coveralls.io/repos/github/sourcelair/xterm.js/badge.svg)](https://coveralls.io/github/sourcelair/xterm.js) [![Gitter](https://badges.gitter.im/sourcelair/xterm.js.svg)](https://gitter.im/sourcelair/xterm.js?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![jsDelivr Hits](https://data.jsdelivr.com/v1/package/npm/xterm/badge?style=rounded)](https://www.jsdelivr.com/package/npm/xterm)
Xterm.js is a terminal front-end component written in JavaScript that works in the browser.
@@ -19,6 +19,75 @@ It enables applications to provide fully featured terminals to their users and c
- Xterm.js is not a terminal application that you can download and use on your computer
- Xterm.js is not `bash`. Xterm.js can be connected to processes like `bash` and let you interact with them (provide input, receive output)
## Getting Started
First you need to install the module, we ship exclusively through [npm](https://www.npmjs.com/) so you need that installed and then add xterm.js as a dependency by running:
```
npm install
```
To start using xterm.js on your browser, add the `xterm.js` and `xterm.css` to the head of your html page. Then create a `<div id="terminal"></div>` onto which xterm can attach itself.
```html
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="node_modules/xterm/dist/xterm.css" />
<script src="node_modules/xterm/dist/xterm.js"></script>
</head>
<body>
<div id="terminal"></div>
<script>
var term = new Terminal();
term.open(document.getElementById('terminal'));
term.write('Hello from \033[1;3;31mxterm.js\033[0m $ ')
</script>
</body>
</html>
```
Finally instantiate the `Terminal` object and then call the `open` function with the DOM object of the `div`.
### Importing
The proposed way to load xterm.js is via the ES6 module syntax.
```javascript
import { Terminal } from 'xterm';
```
*Note: There are currently no typings for addons so you will need to upcast if using TypeScript, eg. `(<any>xterm).fit()`.*
### Addons
Addons are JavaScript modules that extend the `Terminal` prototype with new methods and attributes to provide additional functionality. There are a handful available in the main repository in the `src/addons` directory and you can even write your own, by using xterm.js' public API.
To use an addon, just import the JavaScript module and pass it to `Terminal`'s `applyAddon` method:
```javascript
import { Terminal } from xterm;
import * as fit from 'xterm/lib/addons/fit/fit';
Terminal.applyAddon(fit);
var xterm = new Terminal(); // Instantiate the terminal
xterm.fit(); // Use the `fit` method, provided by the `fit` addon
```
## Browser Support
Since xterm.js is typically implemented as a developer tool, only modern browsers are supported officially. Here is a list of the versions we aim to support:
- Chrome latest
- Edge latest
- Firefox latest
- Safari latest
- IE11
Xterm.js works seamlessly in Electron apps and may even work on earlier versions of the browsers but these are the browsers we strive to keep working.
## Real-world uses
Xterm.js is used in several world-class applications to provide great terminal experiences.
@@ -43,31 +112,24 @@ Xterm.js is used in several world-class applications to provide great terminal e
- [**SSHy**](https://github.com/stuicey/SSHy): HTML5 Based SSHv2 Web Client with E2E encryption utilising `xterm.js`, SJCL & websockets.
- [**JupyterLab**](https://github.com/jupyterlab/jupyterlab): An extensible
computational environment for Jupyter, supporting interactive data science and scientific computing across all programming languages.
- [**Theia**](https://github.com/theia-ide/theia): Theia is a cloud & desktop IDE framework implemented in TypeScript.
- [**Opshell**](https://github.com/ricktbaker/opshell) Ops Helper tool to make life easier working with AWS instances across multiple organizations.
- [**Proxmox VE**](https://www.proxmox.com/en/proxmox-ve): Proxmox VE is a complete open-source platform for enterprise virtualization. It uses xterm.js for container terminals and the host shell.
- [**Script Runner**](https://github.com/ioquatix/script-runner): Run scripts (or a shell) in Atom.
- [**Whack Whack Terminal**](https://github.com/Microsoft/WhackWhackTerminal): Terminal emulator for Visual Studio 2017.
- [**VTerm**](https://github.com/vterm/vterm): Extensible terminal emulator based on Electron and React.
Do you use xterm.js in your application as well? Please [open a Pull Request](https://github.com/sourcelair/xterm.js/pulls) to include it here. We would love to have it in our list.
## Browser Support
Since xterm.js is typically implemented as a developer tool, only modern browsers are supported officially. Here is a list of the versions we aim to support:
- Chrome 48+
- Edge 13+
- Firefox 44+
- Internet Explorer 11+
- Opera 35+
- Safari 8+
Xterm.js works seamlessly in Electron apps and may even work on earlier versions of the browsers but these are the browsers we strive to keep working.
## Demo
### Linux or macOS
Run the following commands:
First, be sure that a C++ compiler such as GCC-C++ or Clang is installed, then run these commands:
```
$ npm install
$ npm start
npm install
npm start
```
Then open http://0.0.0.0:3000 in a web browser.
@@ -76,53 +138,14 @@ Then open http://0.0.0.0:3000 in a web browser.
First, ensure [node-gyp](https://github.com/nodejs/node-gyp) is installed and configured correctly, then run these commands.
Note: Do not use ConEmu, as it seems to break the demo for some reason.
```
> npm install
> npm start
npm install
npm start
```
Then open http://127.0.0.1:3000 in a web browser.
## Getting Started
To start using xterm.js on your browser, add the `xterm.js` and `xterm.css` to the head of your html page. Then create a `<div id="terminal"></div>` onto which xterm can attach itself.
```html
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="bower_components/xterm.js/dist/xterm.css" />
<script src="bower_components/xterm.js/dist/xterm.js"></script>
</head>
<body>
<div id="terminal"></div>
<script>
var term = new Terminal();
term.open(document.getElementById('terminal'));
term.write('Hello from \033[1;3;31mxterm.js\033[0m $ ')
</script>
</body>
</html>
```
Finally instantiate the `Terminal` object and then call the `open` function with the DOM object of the `div`.
## Addons
Addons are JavaScript modules that attach functions to the `Terminal` prototype to extend its functionality. There are a handful available in the main repository in the `dist/addons` directory, you can even write your own (though they may break when the internals of xterm.js change across versions).
To use an addon, just include the JavaScript file after xterm.js and before the `Terminal` object has been instantiated. The function should then be exposed on the `Terminal` object:
```html
<script src="node_modules/dist/xterm.js"></script>
<script src="node_modules/dist/addons/fit/fit.js"></script>
```
```js
var xterm = new Terminal();
// init code...
xterm.fit();
```
*Note: Do not use ConEmu, as it seems to break the demo for some reason.*
## Releases
+1 -8
View File
@@ -12,12 +12,6 @@ CURRENT_PACKAGE_JSON_VERSION=$(cat package.json \
| awk -F: '{ print $2 }' \
| sed 's/[",]//g' \
| tr -d '[[:space:]]')
CURRENT_BOWER_JSON_VERSION=$(cat bower.json \
| grep version \
| head -1 \
| awk -F: '{ print $2 }' \
| sed 's/[",]//g' \
| tr -d '[[:space:]]')
# Build xterm.js into `dist`
export BUILD_DIR=dist
@@ -26,9 +20,8 @@ npm run build
# Update AUTHORS file
sh bin/generate-authors
# Update version in package.json and bower.json
# Update version in package.json
sed -i "s/\"version\": \"$CURRENT_PACKAGE_JSON_VERSION\"/\"version\": \"$NEW_VERSION\"/g" package.json
sed -i "s/\"version\": \"$CURRENT_BOWER_JSON_VERSION\"/\"version\": \"$NEW_VERSION\"/g" bower.json
git commit -S -s -a -m "Bump version to $NEW_VERSION"
git tag $NEW_VERSION
-9
View File
@@ -1,9 +0,0 @@
{
"name": "xterm.js",
"version": "2.9.2",
"ignore": ["demo", "test", ".gitignore"],
"main": [
"dist/xterm.js",
"dist/xterm.css"
]
}
+6 -2
View File
@@ -17,8 +17,12 @@ app.get('/style.css', function(req, res){
res.sendFile(__dirname + '/style.css');
});
app.get('/main.js', function(req, res){
res.sendFile(__dirname + '/main.js');
app.get('/dist/bundle.js', function(req, res){
res.sendFile(__dirname + '/dist/bundle.js');
});
app.get('/dist/bundle.js.map', function(req, res){
res.sendFile(__dirname + '/dist/bundle.js.map');
});
app.post('/terminals', function (req, res) {
+12 -6
View File
@@ -7,11 +7,6 @@
<link rel="stylesheet" href="style.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/es6-promise/4.1.1/es6-promise.auto.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fetch/1.0.0/fetch.min.js"></script>
<script src="/build/xterm.js" ></script>
<script src="/build/addons/attach/attach.js" ></script>
<script src="/build/addons/fit/fit.js" ></script>
<script src="/build/addons/fullscreen/fullscreen.js" ></script>
<script src="/build/addons/search/search.js" ></script>
</head>
<body>
<h1>xterm.js: xterm, in the browser</h1>
@@ -38,6 +33,17 @@
</select>
</label>
</p>
<p>
<label>
bellStyle
<select id="option-bell-style">
<option value="">none</option>
<option value="sound">sound</option>
<option value="visual">visual</option>
<option value="both">both</option>
</select>
</label>
</p>
<p>
<label>scrollback <input type="number" id="option-scrollback" value="1000" /></label>
</p>
@@ -59,6 +65,6 @@
</div>
</div>
<p><strong>Attention:</strong> The demo is a barebones implementation and is designed for xterm.js evaluation purposes only. Exposing the demo to the public as is would introduce security risks for the host.</p>
<script src="main.js" defer ></script>
<script src="dist/bundle.js" defer ></script>
</body>
</html>
+47 -26
View File
@@ -1,10 +1,23 @@
import * as Terminal from '../build/xterm';
import * as attach from '../build/addons/attach/attach';
import * as fit from '../build/addons/fit/fit';
import * as fullscreen from '../build/addons/fullscreen/fullscreen';
import * as search from '../build/addons/search/search';
import * as winptyCompat from '../build/addons/winptyCompat/winptyCompat';
Terminal.applyAddon(attach);
Terminal.applyAddon(fit);
Terminal.applyAddon(fullscreen);
Terminal.applyAddon(search);
Terminal.applyAddon(winptyCompat);
var term,
protocol,
socketURL,
socket,
pid,
charWidth,
charHeight;
pid;
var terminalContainer = document.getElementById('terminal-container'),
actionElements = {
@@ -15,16 +28,19 @@ var terminalContainer = document.getElementById('terminal-container'),
cursorBlink: document.querySelector('#option-cursor-blink'),
cursorStyle: document.querySelector('#option-cursor-style'),
scrollback: document.querySelector('#option-scrollback'),
tabstopwidth: document.querySelector('#option-tabstopwidth')
tabstopwidth: document.querySelector('#option-tabstopwidth'),
bellStyle: document.querySelector('#option-bell-style')
},
colsElement = document.getElementById('cols'),
rowsElement = document.getElementById('rows');
function setTerminalSize () {
var cols = parseInt(colsElement.value, 10),
rows = parseInt(rowsElement.value, 10),
width = (cols * charWidth).toString() + 'px',
height = (rows * charHeight).toString() + 'px';
function setTerminalSize() {
var cols = parseInt(colsElement.value, 10);
var rows = parseInt(rowsElement.value, 10);
var viewportElement = document.querySelector('.xterm-viewport');
var scrollBarWidth = viewportElement.offsetWidth - viewportElement.clientWidth;
var width = (cols * term.renderer.dimensions.actualCellWidth + 20 /*room for scrollbar*/).toString() + 'px';
var height = (rows * term.renderer.dimensions.actualCellHeight).toString() + 'px';
terminalContainer.style.width = width;
terminalContainer.style.height = height;
@@ -53,6 +69,9 @@ optionElements.cursorBlink.addEventListener('change', function () {
optionElements.cursorStyle.addEventListener('change', function () {
term.setOption('cursorStyle', optionElements.cursorStyle.value);
});
optionElements.bellStyle.addEventListener('change', function () {
term.setOption('bellStyle', optionElements.bellStyle.value);
});
optionElements.scrollback.addEventListener('change', function () {
term.setOption('scrollback', parseInt(optionElements.scrollback.value, 10));
});
@@ -72,6 +91,7 @@ function createTerminal() {
scrollback: parseInt(optionElements.scrollback.value, 10),
tabStopWidth: parseInt(optionElements.tabstopwidth.value, 10)
});
window.term = term; // Expose `term` to window for debugging purposes
term.on('resize', function (size) {
if (!pid) {
return;
@@ -86,29 +106,30 @@ function createTerminal() {
socketURL = protocol + location.hostname + ((location.port) ? (':' + location.port) : '') + '/terminals/';
term.open(terminalContainer);
term.winptyCompatInit();
term.fit();
term.focus();
var initialGeometry = term.proposeGeometry(),
cols = initialGeometry.cols,
rows = initialGeometry.rows;
// fit is called within a setTimeout, cols and rows need this.
setTimeout(function () {
colsElement.value = term.cols;
rowsElement.value = term.rows;
colsElement.value = cols;
rowsElement.value = rows;
// Set terminal size again to set the specific dimensions on the demo
setTerminalSize();
fetch('/terminals?cols=' + cols + '&rows=' + rows, {method: 'POST'}).then(function (res) {
fetch('/terminals?cols=' + term.cols + '&rows=' + term.rows, {method: 'POST'}).then(function (res) {
charWidth = Math.ceil(term.element.offsetWidth / cols);
charHeight = Math.ceil(term.element.offsetHeight / rows);
res.text().then(function (pid) {
window.pid = pid;
socketURL += pid;
socket = new WebSocket(socketURL);
socket.onopen = runRealTerminal;
socket.onclose = runFakeTerminal;
socket.onerror = runFakeTerminal;
res.text().then(function (processId) {
pid = processId;
socketURL += processId;
socket = new WebSocket(socketURL);
socket.onopen = runRealTerminal;
socket.onclose = runFakeTerminal;
socket.onerror = runFakeTerminal;
});
});
});
}, 0);
}
function runRealTerminal() {
-6
View File
@@ -14,9 +14,3 @@ h1 {
margin: 0 auto;
padding: 2px;
}
#terminal-container .terminal {
background-color: #111;
color: #fafafa;
padding: 2px;
}
-126
View File
@@ -1,126 +0,0 @@
/**
* Implements the attach method, that attaches the terminal to a WebSocket stream.
* @module xterm/addons/attach/attach
* @license MIT
*/
(function (attach) {
if (typeof exports === 'object' && typeof module === 'object') {
/*
* CommonJS environment
*/
module.exports = attach(require('../../xterm'));
} else if (typeof define == 'function') {
/*
* Require.js is available
*/
define(['../../xterm'], attach);
} else {
/*
* Plain browser environment
*/
attach(window.Terminal);
}
})(function (Xterm) {
'use strict';
var exports = {};
/**
* Attaches the given terminal to the given socket.
*
* @param {Xterm} term - The terminal to be attached to the given socket.
* @param {WebSocket} socket - The socket to attach the current terminal.
* @param {boolean} bidirectional - Whether the terminal should send data
* to the socket as well.
* @param {boolean} buffered - Whether the rendering of incoming data
* should happen instantly or at a maximum
* frequency of 1 rendering per 10ms.
*/
exports.attach = function (term, socket, bidirectional, buffered) {
bidirectional = (typeof bidirectional == 'undefined') ? true : bidirectional;
term.socket = socket;
term._flushBuffer = function () {
term.write(term._attachSocketBuffer);
term._attachSocketBuffer = null;
clearTimeout(term._attachSocketBufferTimer);
term._attachSocketBufferTimer = null;
};
term._pushToBuffer = function (data) {
if (term._attachSocketBuffer) {
term._attachSocketBuffer += data;
} else {
term._attachSocketBuffer = data;
setTimeout(term._flushBuffer, 10);
}
};
term._getMessage = function (ev) {
if (buffered) {
term._pushToBuffer(ev.data);
} else {
term.write(ev.data);
}
};
term._sendData = function (data) {
socket.send(data);
};
socket.addEventListener('message', term._getMessage);
if (bidirectional) {
term.on('data', term._sendData);
}
socket.addEventListener('close', term.detach.bind(term, socket));
socket.addEventListener('error', term.detach.bind(term, socket));
};
/**
* Detaches the given terminal from the given socket
*
* @param {Xterm} term - The terminal to be detached from the given socket.
* @param {WebSocket} socket - The socket from which to detach the current
* terminal.
*/
exports.detach = function (term, socket) {
term.off('data', term._sendData);
socket = (typeof socket == 'undefined') ? term.socket : socket;
if (socket) {
socket.removeEventListener('message', term._getMessage);
}
delete term.socket;
};
/**
* Attaches the current terminal to the given socket
*
* @param {WebSocket} socket - The socket to attach the current terminal.
* @param {boolean} bidirectional - Whether the terminal should send data
* to the socket as well.
* @param {boolean} buffered - Whether the rendering of incoming data
* should happen instantly or at a maximum
* frequency of 1 rendering per 10ms.
*/
Xterm.prototype.attach = function (socket, bidirectional, buffered) {
return exports.attach(this, socket, bidirectional, buffered);
};
/**
* Detaches the current terminal from the given socket.
*
* @param {WebSocket} socket - The socket from which to detach the current
* terminal.
*/
Xterm.prototype.detach = function (socket) {
return exports.detach(this, socket);
};
return exports;
});
-86
View File
@@ -1,86 +0,0 @@
/**
* 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).
* @module xterm/addons/fit/fit
* @license MIT
*/
(function (fit) {
if (typeof exports === 'object' && typeof module === 'object') {
/*
* CommonJS environment
*/
module.exports = fit(require('../../xterm'));
} else if (typeof define == 'function') {
/*
* Require.js is available
*/
define(['../../xterm'], fit);
} else {
/*
* Plain browser environment
*/
fit(window.Terminal);
}
})(function (Xterm) {
var exports = {};
exports.proposeGeometry = function (term) {
if (!term.element.parentElement) {
return null;
}
var parentElementStyle = window.getComputedStyle(term.element.parentElement),
parentElementHeight = parseInt(parentElementStyle.getPropertyValue('height')),
parentElementWidth = Math.max(0, parseInt(parentElementStyle.getPropertyValue('width')) - 17),
elementStyle = window.getComputedStyle(term.element),
elementPaddingVer = parseInt(elementStyle.getPropertyValue('padding-top')) + parseInt(elementStyle.getPropertyValue('padding-bottom')),
elementPaddingHor = parseInt(elementStyle.getPropertyValue('padding-right')) + parseInt(elementStyle.getPropertyValue('padding-left')),
availableHeight = parentElementHeight - elementPaddingVer,
availableWidth = parentElementWidth - elementPaddingHor,
container = term.rowContainer,
subjectRow = term.rowContainer.firstElementChild,
contentBuffer = subjectRow.innerHTML,
characterHeight,
rows,
characterWidth,
cols,
geometry;
subjectRow.style.display = 'inline';
subjectRow.innerHTML = 'W'; // Common character for measuring width, although on monospace
characterWidth = subjectRow.getBoundingClientRect().width;
subjectRow.style.display = ''; // Revert style before calculating height, since they differ.
characterHeight = subjectRow.getBoundingClientRect().height;
subjectRow.innerHTML = contentBuffer;
rows = parseInt(availableHeight / characterHeight);
cols = parseInt(availableWidth / characterWidth);
geometry = {cols: cols, rows: rows};
return geometry;
};
exports.fit = function (term) {
var geometry = exports.proposeGeometry(term);
if (geometry) {
term.resize(geometry.cols, geometry.rows);
}
};
Xterm.prototype.proposeGeometry = function () {
return exports.proposeGeometry(this);
};
Xterm.prototype.fit = function () {
return exports.fit(this);
};
return exports;
});
-10
View File
@@ -1,10 +0,0 @@
.xterm.fullscreen {
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
width: auto;
height: auto;
z-index: 255;
}
-50
View File
@@ -1,50 +0,0 @@
/**
* Fullscreen addon for xterm.js
* @module xterm/addons/fullscreen/fullscreen
* @license MIT
*/
(function (fullscreen) {
if (typeof exports === 'object' && typeof module === 'object') {
/*
* CommonJS environment
*/
module.exports = fullscreen(require('../../xterm'));
} else if (typeof define == 'function') {
/*
* Require.js is available
*/
define(['../../xterm'], fullscreen);
} else {
/*
* Plain browser environment
*/
fullscreen(window.Terminal);
}
})(function (Xterm) {
var exports = {};
/**
* Toggle the given terminal's fullscreen mode.
* @param {Xterm} term - The terminal to toggle full screen mode
* @param {boolean} fullscreen - Toggle fullscreen on (true) or off (false)
*/
exports.toggleFullScreen = function (term, fullscreen) {
var fn;
if (typeof fullscreen == 'undefined') {
fn = (term.element.classList.contains('fullscreen')) ? 'remove' : 'add';
} else if (!fullscreen) {
fn = 'remove';
} else {
fn = 'add';
}
term.element.classList[fn]('fullscreen');
};
Xterm.prototype.toggleFullscreen = function (fullscreen) {
exports.toggleFullScreen(this, fullscreen);
};
return exports;
});
-207
View File
@@ -1,207 +0,0 @@
/**
* Methods for turning URL subscrings in the terminal's content into links (`a` DOM elements).
* @module xterm/addons/linkify/linkify
* @license MIT
*/
(function (linkify) {
if (typeof exports === 'object' && typeof module === 'object') {
/*
* CommonJS environment
*/
module.exports = linkify(require('../../xterm'));
} else if (typeof define == 'function') {
/*
* Require.js is available
*/
define(['../../xterm'], linkify);
} else {
/*
* Plain browser environment
*/
linkify(window.Terminal);
}
})(function (Xterm) {
'use strict';
var exports = {},
protocolClause = '(https?:\\/\\/)',
domainCharacterSet = '[\\da-z\\.-]+',
negatedDomainCharacterSet = '[^\\da-z\\.-]+',
domainBodyClause = '(' + domainCharacterSet + ')',
tldClause = '([a-z\\.]{2,6})',
ipClause = '((\\d{1,3}\\.){3}\\d{1,3})',
portClause = '(:\\d{1,5})',
hostClause = '((' + domainBodyClause + '\\.' + tldClause + ')|' + ipClause + ')' + portClause + '?',
pathClause = '(\\/[\\/\\w\\.-]*)*',
negatedPathCharacterSet = '[^\\/\\w\\.-]+',
bodyClause = hostClause + pathClause,
start = '(?:^|' + negatedDomainCharacterSet + ')(',
end = ')($|' + negatedPathCharacterSet + ')',
lenientUrlClause = start + protocolClause + '?' + bodyClause + end,
strictUrlClause = start + protocolClause + bodyClause + end,
lenientUrlRegex = new RegExp(lenientUrlClause),
strictUrlRegex = new RegExp(strictUrlClause);
/**
* Converts all valid URLs found in the given terminal line into
* hyperlinks. The terminal line can be either the HTML element itself
* or the index of the termina line in the children of the terminal
* rows container.
*
* @param {Xterm} terminal - The terminal that owns the given line.
* @param {number|HTMLDivElement} line - The terminal line that should get
* "linkified".
* @param {boolean} lenient - The regex type that will be used to identify links. If lenient is
* false, the regex requires a protocol clause. Defaults to true.
* @param {string} target - Sets target="" attribute with value provided to links.
* Default doesn't set target attribute
* @emits linkify
* @emits linkify:line
*/
exports.linkifyTerminalLine = function (terminal, line, lenient, target) {
if (typeof line == 'number') {
line = terminal.rowContainer.children[line];
} else if (! (line instanceof HTMLDivElement)) {
var message = 'The "line" argument should be either a number';
message += ' or an HTMLDivElement';
throw new TypeError(message);
}
if (typeof target === 'undefined') {
target = '';
} else {
target = 'target="' + target + '"';
}
var buffer = document.createElement('span'),
nodes = line.childNodes;
for (var j=0; j<nodes.length; j++) {
var node = nodes[j],
match;
/**
* Since we cannot access the TextNode's HTML representation
* from the instance itself, we assign its data as textContent
* to a dummy buffer span, in order to retrieve the TextNode's
* HTML representation from the buffer's innerHTML.
*/
buffer.textContent = node.data;
var nodeHTML = buffer.innerHTML;
/**
* Apply function only on TextNodes
*/
if (node.nodeType != node.TEXT_NODE) {
continue;
}
var url = exports.findLinkMatch(node.data, lenient);
if (!url) {
continue;
}
var startsWithProtocol = new RegExp('^' + protocolClause),
urlHasProtocol = url.match(startsWithProtocol),
href = (urlHasProtocol) ? url : 'http://' + url,
link = '<a href="' + href + '" ' + target + '>' + url + '</a>',
newHTML = nodeHTML.replace(url, link);
line.innerHTML = line.innerHTML.replace(nodeHTML, newHTML);
}
/**
* This event gets emitted when conversion of all URL susbtrings
* to HTML anchor elements (links) has finished, for a specific
* line of the current Xterm instance.
*
* @event linkify:line
*/
terminal.emit('linkify:line', line);
};
/**
* Finds a link within a block of text.
*
* @param {string} text - The text to search .
* @param {boolean} lenient - Whether to use the lenient search.
* @return {string} A URL.
*/
exports.findLinkMatch = function (text, lenient) {
var match = text.match(lenient ? lenientUrlRegex : strictUrlRegex);
if (!match || match.length === 0) {
return null;
}
return match[1];
}
/**
* Converts all valid URLs found in the terminal view into hyperlinks.
*
* @param {Xterm} terminal - The terminal that should get "linkified".
* @param {boolean} lenient - The regex type that will be used to identify links. If lenient is
* false, the regex requires a protocol clause. Defaults to true.
* @param {string} target - Sets target="" attribute with value provided to links.
* Default doesn't set target attribute
* @emits linkify
* @emits linkify:line
*/
exports.linkify = function (terminal, lenient, target) {
var rows = terminal.rowContainer.children;
lenient = (typeof lenient == "boolean") ? lenient : true;
for (var i=0; i<rows.length; i++) {
var line = rows[i];
exports.linkifyTerminalLine(terminal, line, lenient, target);
}
/**
* This event gets emitted when conversion of all URL substrings to
* HTML anchor elements (links) has finished for the current Xterm
* instance's view.
*
* @event linkify
*/
terminal.emit('linkify');
};
/**
* Extend Xterm prototype.
*/
/**
* Converts all valid URLs found in the current terminal linte into
* hyperlinks.
*
* @memberof Xterm
* @param {number|HTMLDivElement} line - The terminal line that should get
* "linkified".
* @param {boolean} lenient - The regex type that will be used to identify links. If lenient is
* false, the regex requires a protocol clause. Defaults to true.
* @param {string} target - Sets target="" attribute with value provided to links.
* Default doesn't set target attribute
*/
Xterm.prototype.linkifyTerminalLine = function (line, lenient, target) {
return exports.linkifyTerminalLine(this, line, lenient, target);
};
/**
* Converts all valid URLs found in the current terminal into hyperlinks.
*
* @memberof Xterm
* @param {boolean} lenient - The regex type that will be used to identify links. If lenient is
* false, the regex requires a protocol clause. Defaults to true.
* @param {string} target - Sets target="" attribute with value provided to links.
* Default doesn't set target attribute
*/
Xterm.prototype.linkify = function (lenient, target) {
return exports.linkify(this, lenient, target);
};
return exports;
});
-135
View File
@@ -1,135 +0,0 @@
/**
* This module provides methods for attaching a terminal to a terminado WebSocket stream.
*
* @module xterm/addons/terminado/terminado
* @license MIT
*/
(function (attach) {
if (typeof exports === 'object' && typeof module === 'object') {
/*
* CommonJS environment
*/
module.exports = attach(require('../../xterm'));
} else if (typeof define == 'function') {
/*
* Require.js is available
*/
define(['../../xterm'], attach);
} else {
/*
* Plain browser environment
*/
attach(window.Terminal);
}
})(function (Xterm) {
'use strict';
var exports = {};
/**
* Attaches the given terminal to the given socket.
*
* @param {Xterm} term - The terminal to be attached to the given socket.
* @param {WebSocket} socket - The socket to attach the current terminal.
* @param {boolean} bidirectional - Whether the terminal should send data
* to the socket as well.
* @param {boolean} buffered - Whether the rendering of incoming data
* should happen instantly or at a maximum
* frequency of 1 rendering per 10ms.
*/
exports.terminadoAttach = function (term, socket, bidirectional, buffered) {
bidirectional = (typeof bidirectional == 'undefined') ? true : bidirectional;
term.socket = socket;
term._flushBuffer = function () {
term.write(term._attachSocketBuffer);
term._attachSocketBuffer = null;
clearTimeout(term._attachSocketBufferTimer);
term._attachSocketBufferTimer = null;
};
term._pushToBuffer = function (data) {
if (term._attachSocketBuffer) {
term._attachSocketBuffer += data;
} else {
term._attachSocketBuffer = data;
setTimeout(term._flushBuffer, 10);
}
};
term._getMessage = function (ev) {
var data = JSON.parse(ev.data)
if( data[0] == "stdout" ) {
if (buffered) {
term._pushToBuffer(data[1]);
} else {
term.write(data[1]);
}
}
};
term._sendData = function (data) {
socket.send(JSON.stringify(['stdin', data]));
};
term._setSize = function (size) {
socket.send(JSON.stringify(['set_size', size.rows, size.cols]));
};
socket.addEventListener('message', term._getMessage);
if (bidirectional) {
term.on('data', term._sendData);
}
term.on('resize', term._setSize);
socket.addEventListener('close', term.terminadoDetach.bind(term, socket));
socket.addEventListener('error', term.terminadoDetach.bind(term, socket));
};
/**
* Detaches the given terminal from the given socket
*
* @param {Xterm} term - The terminal to be detached from the given socket.
* @param {WebSocket} socket - The socket from which to detach the current
* terminal.
*/
exports.terminadoDetach = function (term, socket) {
term.off('data', term._sendData);
socket = (typeof socket == 'undefined') ? term.socket : socket;
if (socket) {
socket.removeEventListener('message', term._getMessage);
}
delete term.socket;
};
/**
* Attaches the current terminal to the given socket
*
* @param {WebSocket} socket - The socket to attach the current terminal.
* @param {boolean} bidirectional - Whether the terminal should send data
* to the socket as well.
* @param {boolean} buffered - Whether the rendering of incoming data
* should happen instantly or at a maximum
* frequency of 1 rendering per 10ms.
*/
Xterm.prototype.terminadoAttach = function (socket, bidirectional, buffered) {
return exports.terminadoAttach(this, socket, bidirectional, buffered);
};
/**
* Detaches the current terminal from the given socket.
*
* @param {WebSocket} socket - The socket from which to detach the current
* terminal.
*/
Xterm.prototype.terminadoDetach = function (socket) {
return exports.terminadoDetach(this, socket);
};
return exports;
});
-2261
View File
File diff suppressed because it is too large Load Diff
-5132
View File
File diff suppressed because it is too large Load Diff
-1
View File
File diff suppressed because one or more lines are too long
-9
View File
@@ -1,9 +0,0 @@
version: '2'
services:
web:
build: ./
volumes:
- ./:/usr/src/app
ports:
- 3000:3000
+9
View File
@@ -0,0 +1,9 @@
version: "3"
services:
web:
build: .
volumes:
- ./:/usr/src/app
ports:
- ${XTERMJS_PORT:3000}:3000

Some files were not shown because too many files have changed in this diff Show More