bee_api 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. data/bin/bee_api +84 -0
  2. data/lib/mdpreview.rb +80 -0
  3. data/lib/mdpreview/translator.rb +60 -0
  4. data/lib/mdpreview/version.rb +3 -0
  5. data/test/mdptest.rb +100 -0
  6. data/vendor/HISTORY.md +237 -0
  7. data/vendor/Jakefile.js +316 -0
  8. data/vendor/LICENSE +176 -0
  9. data/vendor/NOTICE +17 -0
  10. data/vendor/README.md +102 -0
  11. data/vendor/app/chrome/documentation.txt +12 -0
  12. data/vendor/app/chrome/manifest.json +24 -0
  13. data/vendor/app/web/ajax.js +43 -0
  14. data/vendor/app/web/app.css +292 -0
  15. data/vendor/app/web/app.js +377 -0
  16. data/vendor/app/web/beta/index.html +17 -0
  17. data/vendor/app/web/datapolicy.txt +48 -0
  18. data/vendor/app/web/doc/doc.css +60 -0
  19. data/vendor/app/web/doc/img/actions_menu.png +0 -0
  20. data/vendor/app/web/doc/img/button_actions_menu.png +0 -0
  21. data/vendor/app/web/doc/img/button_dragarea.png +0 -0
  22. data/vendor/app/web/doc/img/jsoneditor.png +0 -0
  23. data/vendor/app/web/doc/img/jsonformatter.png +0 -0
  24. data/vendor/app/web/doc/img/main_menu.png +0 -0
  25. data/vendor/app/web/doc/img/splitter.png +0 -0
  26. data/vendor/app/web/doc/index.html +201 -0
  27. data/vendor/app/web/favicon.ico +0 -0
  28. data/vendor/app/web/fileretriever.css +54 -0
  29. data/vendor/app/web/fileretriever.js +567 -0
  30. data/vendor/app/web/fileretriever.php +120 -0
  31. data/vendor/app/web/googlea47c4a0b36d11021.html +1 -0
  32. data/vendor/app/web/hash.js +133 -0
  33. data/vendor/app/web/img/description.txt +20 -0
  34. data/vendor/app/web/img/header_background.png +0 -0
  35. data/vendor/app/web/img/icon_128.png +0 -0
  36. data/vendor/app/web/img/icon_16.png +0 -0
  37. data/vendor/app/web/img/icon_gray.svg +151 -0
  38. data/vendor/app/web/img/icon_gray_16.svg +150 -0
  39. data/vendor/app/web/img/icon_orange.svg +151 -0
  40. data/vendor/app/web/img/logo.png +0 -0
  41. data/vendor/app/web/img/logo.xcf +0 -0
  42. data/vendor/app/web/img/logo_app.png +0 -0
  43. data/vendor/app/web/img/logo_app.xcf +0 -0
  44. data/vendor/app/web/index.html +191 -0
  45. data/vendor/app/web/notify.js +150 -0
  46. data/vendor/app/web/queryparams.js +71 -0
  47. data/vendor/app/web/robots.txt +0 -0
  48. data/vendor/app/web/splitter.js +179 -0
  49. data/vendor/app/web/test.html +224 -0
  50. data/vendor/component.json +33 -0
  51. data/vendor/docs/api.md +188 -0
  52. data/vendor/docs/usage.md +137 -0
  53. data/vendor/examples/01_basic_usage.html +45 -0
  54. data/vendor/examples/02_viewer.html +38 -0
  55. data/vendor/examples/03_switch_mode.html +98 -0
  56. data/vendor/examples/cur.file +1 -0
  57. data/vendor/examples/jquery.js +2 -0
  58. data/vendor/examples/meta.js +1 -0
  59. data/vendor/examples/requirejs_demo/requirejs_demo.html +19 -0
  60. data/vendor/examples/requirejs_demo/scripts/main.js +25 -0
  61. data/vendor/examples/requirejs_demo/scripts/require.js +35 -0
  62. data/vendor/img/jsoneditor-icons.png +0 -0
  63. data/vendor/jsoneditor-min.css +1 -0
  64. data/vendor/jsoneditor-min.js +34 -0
  65. data/vendor/jsoneditor.css +597 -0
  66. data/vendor/jsoneditor.js +6069 -0
  67. data/vendor/jsoneditor/css/contextmenu.css +219 -0
  68. data/vendor/jsoneditor/css/img/description.txt +13 -0
  69. data/vendor/jsoneditor/css/img/export.sh +16 -0
  70. data/vendor/jsoneditor/css/img/jsoneditor-icons.png +0 -0
  71. data/vendor/jsoneditor/css/img/jsoneditor-icons.svg +861 -0
  72. data/vendor/jsoneditor/css/jsoneditor.css +220 -0
  73. data/vendor/jsoneditor/css/menu.css +81 -0
  74. data/vendor/jsoneditor/css/searchbox.css +73 -0
  75. data/vendor/jsoneditor/js/appendnode.js +211 -0
  76. data/vendor/jsoneditor/js/contextmenu.js +440 -0
  77. data/vendor/jsoneditor/js/header.js +32 -0
  78. data/vendor/jsoneditor/js/highlighter.js +82 -0
  79. data/vendor/jsoneditor/js/history.js +218 -0
  80. data/vendor/jsoneditor/js/jsoneditor.js +206 -0
  81. data/vendor/jsoneditor/js/module.js +50 -0
  82. data/vendor/jsoneditor/js/node.js +2864 -0
  83. data/vendor/jsoneditor/js/searchbox.js +288 -0
  84. data/vendor/jsoneditor/js/texteditor.js +311 -0
  85. data/vendor/jsoneditor/js/treeeditor.js +770 -0
  86. data/vendor/jsoneditor/js/util.js +582 -0
  87. data/vendor/lib/ace/ace.js +11 -0
  88. data/vendor/lib/ace/mode-json.js +1 -0
  89. data/vendor/lib/ace/theme-jsoneditor.js +144 -0
  90. data/vendor/lib/ace/theme-textmate.js +163 -0
  91. data/vendor/lib/ace/worker-json.js +1 -0
  92. data/vendor/lib/jsonlint/README.md +62 -0
  93. data/vendor/lib/jsonlint/jsonlint.js +432 -0
  94. data/vendor/misc/screenshots/actionsmenu_640x400.png +0 -0
  95. data/vendor/misc/screenshots/codeeditor_640x400.png +0 -0
  96. data/vendor/misc/screenshots/description.json +17 -0
  97. data/vendor/misc/screenshots/jsoneditoronline.png +0 -0
  98. data/vendor/misc/screenshots/jsoneditoronline_640x400.png +0 -0
  99. data/vendor/misc/screenshots/search_640x400.png +0 -0
  100. data/vendor/misc/screenshots/small_tile.xcf +0 -0
  101. data/vendor/misc/screenshots/small_tile_440x280.png +0 -0
  102. data/vendor/misc/todo.txt +101 -0
  103. data/vendor/package.json +28 -0
  104. data/vendor/test/couchdbeditor.html +100 -0
  105. data/vendor/test/largefile.json +12605 -0
  106. data/vendor/test/test_ace.html +60 -0
  107. data/vendor/test/test_editable_div.html +449 -0
  108. metadata +154 -0
@@ -0,0 +1,220 @@
1
+
2
+ .jsoneditor .field,
3
+ .jsoneditor .value,
4
+ .jsoneditor .readonly {
5
+ border: 1px solid transparent;
6
+ min-height: 16px;
7
+ min-width: 32px;
8
+ padding: 2px;
9
+ margin: 1px;
10
+ word-wrap: break-word;
11
+ float: left;
12
+ }
13
+
14
+ /* adjust margin of p elements inside editable divs, needed for Opera, IE */
15
+ .jsoneditor .field p,
16
+ .jsoneditor .value p {
17
+ margin: 0;
18
+ }
19
+
20
+ .jsoneditor .value {
21
+ word-break: break-word;
22
+ }
23
+
24
+ .jsoneditor .readonly {
25
+ min-width: 16px;
26
+ color: gray;
27
+ }
28
+
29
+ .jsoneditor .empty {
30
+ border-color: lightgray;
31
+ border-style: dashed;
32
+ border-radius: 2px;
33
+ }
34
+
35
+ .jsoneditor .field.empty {
36
+ background-image: url('img/jsoneditor-icons.png');
37
+ background-position: 0 -144px;
38
+ }
39
+
40
+ .jsoneditor .value.empty {
41
+ background-image: url('img/jsoneditor-icons.png');
42
+ background-position: -48px -144px;
43
+ }
44
+
45
+ .jsoneditor .value.url {
46
+ color: green;
47
+ text-decoration: underline;
48
+ }
49
+
50
+ .jsoneditor a.value.url:hover,
51
+ .jsoneditor a.value.url:focus {
52
+ color: red;
53
+ }
54
+
55
+ .jsoneditor .separator {
56
+ padding: 3px 0;
57
+ vertical-align: top;
58
+ color: gray;
59
+ }
60
+
61
+ .jsoneditor .field[contenteditable=true]:focus,
62
+ .jsoneditor .field[contenteditable=true]:hover,
63
+ .jsoneditor .value[contenteditable=true]:focus,
64
+ .jsoneditor .value[contenteditable=true]:hover,
65
+ .jsoneditor .field.highlight,
66
+ .jsoneditor .value.highlight {
67
+ background-color: #FFFFAB;
68
+ border: 1px solid yellow;
69
+ border-radius: 2px;
70
+ }
71
+
72
+ .jsoneditor .field.highlight-active,
73
+ .jsoneditor .field.highlight-active:focus,
74
+ .jsoneditor .field.highlight-active:hover,
75
+ .jsoneditor .value.highlight-active,
76
+ .jsoneditor .value.highlight-active:focus,
77
+ .jsoneditor .value.highlight-active:hover {
78
+ background-color: #ffee00;
79
+ border: 1px solid #ffc700;
80
+ border-radius: 2px;
81
+ }
82
+
83
+ .jsoneditor button {
84
+ width: 24px;
85
+ height: 24px;
86
+ padding: 0;
87
+ margin: 0;
88
+ border: none;
89
+ cursor: pointer;
90
+ background: transparent url('img/jsoneditor-icons.png');
91
+ }
92
+
93
+ .jsoneditor button.collapsed {
94
+ background-position: 0 -48px;
95
+ }
96
+
97
+ .jsoneditor button.expanded {
98
+ background-position: 0 -72px;
99
+ }
100
+
101
+ .jsoneditor button.contextmenu {
102
+ background-position: -48px -72px;
103
+ }
104
+
105
+ .jsoneditor button.contextmenu:hover,
106
+ .jsoneditor button.contextmenu:focus,
107
+ .jsoneditor button.contextmenu.selected {
108
+ background-position: -48px -48px;
109
+ }
110
+
111
+ .jsoneditor div.content *:focus {
112
+ outline: none;
113
+ }
114
+
115
+ .jsoneditor div.content button:focus {
116
+ /* TODO: nice outline for buttons with focus
117
+ outline: #97B0F8 solid 2px;
118
+ box-shadow: 0 0 8px #97B0F8;
119
+ */
120
+ background-color: #f5f5f5;
121
+ outline: #e5e5e5 solid 1px;
122
+ }
123
+
124
+ .jsoneditor button.invisible {
125
+ visibility: hidden;
126
+ background: none;
127
+ }
128
+
129
+ div.jsoneditor {
130
+ color: #1A1A1A;
131
+ border: 1px solid #97B0F8;
132
+ -moz-box-sizing: border-box;
133
+ -webkit-box-sizing: border-box;
134
+ box-sizing: border-box;
135
+ width: 100%;
136
+ height: 100%;
137
+ overflow: auto;
138
+ position: relative;
139
+ padding: 0;
140
+ }
141
+
142
+ .jsoneditor table.content {
143
+ border-collapse: collapse;
144
+ border-spacing: 0;
145
+ width: 100%;
146
+ margin: 0;
147
+ }
148
+
149
+ .jsoneditor div.outer {
150
+ width: 100%;
151
+ height: 100%;
152
+ margin: -35px 0 0 0;
153
+ padding: 35px 0 0 0;
154
+
155
+ -moz-box-sizing: border-box;
156
+ -webkit-box-sizing: border-box;
157
+ box-sizing: border-box;
158
+
159
+ overflow: hidden;
160
+ }
161
+
162
+ .jsoneditor div.content {
163
+ width: 100%;
164
+ height: 100%;
165
+ position: relative;
166
+ overflow: auto;
167
+ }
168
+
169
+ .jsoneditor textarea.content {
170
+ width: 100%;
171
+ height: 100%;
172
+ margin: 0;
173
+
174
+ -moz-box-sizing: border-box;
175
+ -webkit-box-sizing: border-box;
176
+ box-sizing: border-box;
177
+
178
+ border: none;
179
+ background-color: white;
180
+ resize: none;
181
+ }
182
+
183
+ .jsoneditor tr.highlight {
184
+ background-color: #FFFFAB;
185
+ }
186
+
187
+ .jsoneditor button.dragarea {
188
+ background: url('img/jsoneditor-icons.png') -72px -72px;
189
+ cursor: move;
190
+ }
191
+
192
+ .jsoneditor button.dragarea:hover,
193
+ .jsoneditor button.dragarea:focus {
194
+ background-position: -72px -48px;
195
+ }
196
+
197
+ .jsoneditor tr,
198
+ .jsoneditor th,
199
+ .jsoneditor td {
200
+ padding: 0;
201
+ margin: 0;
202
+ }
203
+
204
+ .jsoneditor td {
205
+ vertical-align: top;
206
+ }
207
+
208
+ .jsoneditor td.tree {
209
+ vertical-align: top;
210
+ }
211
+
212
+ .jsoneditor .field,
213
+ .jsoneditor .value,
214
+ .jsoneditor td,
215
+ .jsoneditor th,
216
+ .jsoneditor textarea {
217
+ font-family: droid sans mono, monospace, courier new, courier, sans-serif;
218
+ font-size: 10pt;
219
+ color: #1A1A1A;
220
+ }
@@ -0,0 +1,81 @@
1
+
2
+ .jsoneditor .menu {
3
+ width: 100%;
4
+ height: 35px;
5
+ padding: 2px;
6
+ margin: 0;
7
+ overflow: hidden;
8
+ -moz-box-sizing: border-box;
9
+ -webkit-box-sizing: border-box;
10
+ box-sizing: border-box;
11
+
12
+ color: #1A1A1A;
13
+ background-color: #D5DDF6;
14
+ border-bottom: 1px solid #97B0F8;
15
+ }
16
+
17
+ .jsoneditor .menu button {
18
+ width: 26px;
19
+ height: 26px;
20
+ margin: 2px;
21
+ padding: 2px;
22
+ border-radius: 2px;
23
+ border: 1px solid #aec0f8;
24
+ background: #e3eaf6 url('img/jsoneditor-icons.png');
25
+ }
26
+
27
+ .jsoneditor .menu button:hover {
28
+ background-color: #f0f2f5;
29
+ }
30
+ .jsoneditor .menu button:active {
31
+ background-color: #ffffff;
32
+ }
33
+ .jsoneditor .menu button:disabled {
34
+ background-color: #e3eaf6;
35
+ }
36
+
37
+ .jsoneditor .menu button.collapse-all {
38
+ background-position: 0 -96px;
39
+ }
40
+ .jsoneditor .menu button.expand-all {
41
+ background-position: 0 -120px;
42
+ }
43
+ .jsoneditor .menu button.undo {
44
+ background-position: -24px -96px;
45
+ }
46
+ .jsoneditor .menu button.undo:disabled {
47
+ background-position: -24px -120px;
48
+ }
49
+ .jsoneditor .menu button.redo {
50
+ background-position: -48px -96px;
51
+ }
52
+ .jsoneditor .menu button.redo:disabled {
53
+ background-position: -48px -120px;
54
+ }
55
+ .jsoneditor .menu button.compact {
56
+ background-position: -72px -96px;
57
+ }
58
+ .jsoneditor .menu button.format {
59
+ background-position: -72px -120px;
60
+ }
61
+
62
+ .jsoneditor .menu a {
63
+ font-family: arial, sans-serif;
64
+ font-size: 10pt;
65
+ color: #97B0F8;
66
+ vertical-align: middle;
67
+ }
68
+
69
+ .jsoneditor .menu a:hover {
70
+ color: red;
71
+ }
72
+
73
+ .jsoneditor .menu a.poweredBy {
74
+ font-size: 8pt;
75
+ position: absolute;
76
+ right: 0;
77
+ top: 0;
78
+ padding: 10px;
79
+ }
80
+
81
+ /* TODO: css for button:disabled is not supported by IE8 */
@@ -0,0 +1,73 @@
1
+
2
+ .jsoneditor .search input,
3
+ .jsoneditor .search .results {
4
+ font-family: arial, sans-serif;
5
+ font-size: 10pt;
6
+ color: #1A1A1A;
7
+ }
8
+
9
+ .jsoneditor .search {
10
+ position: absolute;
11
+ right: 2px;
12
+ top: 2px;
13
+ }
14
+
15
+ .jsoneditor .search .frame {
16
+ border: 1px solid #97B0F8;
17
+ background-color: white;
18
+ padding: 0 2px;
19
+ margin: 0;
20
+ }
21
+
22
+ .jsoneditor .search .frame table {
23
+ border-collapse: collapse;
24
+ }
25
+
26
+ .jsoneditor .search input {
27
+ width: 120px;
28
+ border: none;
29
+ outline: none;
30
+ margin: 1px;
31
+ }
32
+
33
+ .jsoneditor .search .results {
34
+ color: #4d4d4d;
35
+ padding-right: 5px;
36
+ line-height: 24px;
37
+ }
38
+
39
+ .jsoneditor .search button {
40
+ width: 16px;
41
+ height: 24px;
42
+ padding: 0;
43
+ margin: 0;
44
+ border: none;
45
+ background: url('img/jsoneditor-icons.png');
46
+ vertical-align: top;
47
+ }
48
+
49
+ .jsoneditor .search button:hover {
50
+ background-color: transparent;
51
+ }
52
+
53
+ .jsoneditor .search button.refresh {
54
+ width: 18px;
55
+ background-position: -99px -73px;
56
+ }
57
+
58
+ .jsoneditor .search button.next {
59
+ cursor: pointer;
60
+ background-position: -124px -73px;
61
+ }
62
+ .jsoneditor .search button.next:hover {
63
+ background-position: -124px -49px;
64
+ }
65
+
66
+ .jsoneditor .search button.previous {
67
+ cursor: pointer;
68
+ background-position: -148px -73px;
69
+ margin-right: 2px;
70
+ }
71
+ .jsoneditor .search button.previous:hover {
72
+ background-position: -148px -49px;
73
+ }
@@ -0,0 +1,211 @@
1
+ /**
2
+ * @constructor AppendNode
3
+ * @extends Node
4
+ * @param {TreeEditor} editor
5
+ * Create a new AppendNode. This is a special node which is created at the
6
+ * end of the list with childs for an object or array
7
+ */
8
+ function AppendNode (editor) {
9
+ /** @type {TreeEditor} */
10
+ this.editor = editor;
11
+ this.dom = {};
12
+ }
13
+
14
+ AppendNode.prototype = new Node();
15
+
16
+ /**
17
+ * Return a table row with an append button.
18
+ * @return {Element} dom TR element
19
+ */
20
+ AppendNode.prototype.getDom = function () {
21
+ // TODO: implement a new solution for the append node
22
+ var dom = this.dom;
23
+
24
+ if (dom.tr) {
25
+ return dom.tr;
26
+ }
27
+
28
+ // a row for the append button
29
+ var trAppend = document.createElement('tr');
30
+ trAppend.node = this;
31
+ dom.tr = trAppend;
32
+
33
+ // TODO: consistent naming
34
+
35
+ if (this.editor.mode.edit) {
36
+ // a cell for the dragarea column
37
+ dom.tdDrag = document.createElement('td');
38
+
39
+ // create context menu
40
+ var tdMenu = document.createElement('td');
41
+ dom.tdMenu = tdMenu;
42
+ var menu = document.createElement('button');
43
+ menu.className = 'contextmenu';
44
+ menu.title = 'Click to open the actions menu (Ctrl+M)';
45
+ dom.menu = menu;
46
+ tdMenu.appendChild(dom.menu);
47
+ }
48
+
49
+ // a cell for the contents (showing text 'empty')
50
+ var tdAppend = document.createElement('td');
51
+ var domText = document.createElement('div');
52
+ domText.innerHTML = '(empty)';
53
+ domText.className = 'readonly';
54
+ tdAppend.appendChild(domText);
55
+ dom.td = tdAppend;
56
+ dom.text = domText;
57
+
58
+ this.updateDom();
59
+
60
+ return trAppend;
61
+ };
62
+
63
+ /**
64
+ * Update the HTML dom of the Node
65
+ */
66
+ AppendNode.prototype.updateDom = function () {
67
+ var dom = this.dom;
68
+ var tdAppend = dom.td;
69
+ if (tdAppend) {
70
+ tdAppend.style.paddingLeft = (this.getLevel() * 24 + 26) + 'px';
71
+ // TODO: not so nice hard coded offset
72
+ }
73
+
74
+ var domText = dom.text;
75
+ if (domText) {
76
+ domText.innerHTML = '(empty ' + this.parent.type + ')';
77
+ }
78
+
79
+ // attach or detach the contents of the append node:
80
+ // hide when the parent has childs, show when the parent has no childs
81
+ var trAppend = dom.tr;
82
+ if (!this.isVisible()) {
83
+ if (dom.tr.firstChild) {
84
+ if (dom.tdDrag) {
85
+ trAppend.removeChild(dom.tdDrag);
86
+ }
87
+ if (dom.tdMenu) {
88
+ trAppend.removeChild(dom.tdMenu);
89
+ }
90
+ trAppend.removeChild(tdAppend);
91
+ }
92
+ }
93
+ else {
94
+ if (!dom.tr.firstChild) {
95
+ if (dom.tdDrag) {
96
+ trAppend.appendChild(dom.tdDrag);
97
+ }
98
+ if (dom.tdMenu) {
99
+ trAppend.appendChild(dom.tdMenu);
100
+ }
101
+ trAppend.appendChild(tdAppend);
102
+ }
103
+ }
104
+ };
105
+
106
+ /**
107
+ * Check whether the AppendNode is currently visible.
108
+ * the AppendNode is visible when its parent has no childs (i.e. is empty).
109
+ * @return {boolean} isVisible
110
+ */
111
+ AppendNode.prototype.isVisible = function () {
112
+ return (this.parent.childs.length == 0);
113
+ };
114
+
115
+ /**
116
+ * Show a contextmenu for this node
117
+ * @param {HTMLElement} anchor The element to attach the menu to.
118
+ * @param {function} [onClose] Callback method called when the context menu
119
+ * is being closed.
120
+ */
121
+ AppendNode.prototype.showContextMenu = function (anchor, onClose) {
122
+ var node = this;
123
+ var titles = Node.TYPE_TITLES;
124
+ var items = [
125
+ // create append button
126
+ {
127
+ 'text': 'Append',
128
+ 'title': 'Append a new field with type \'auto\' (Ctrl+Shift+Ins)',
129
+ 'submenuTitle': 'Select the type of the field to be appended',
130
+ 'className': 'insert',
131
+ 'click': function () {
132
+ node._onAppend('', '', 'auto');
133
+ },
134
+ 'submenu': [
135
+ {
136
+ 'text': 'Auto',
137
+ 'className': 'type-auto',
138
+ 'title': titles.auto,
139
+ 'click': function () {
140
+ node._onAppend('', '', 'auto');
141
+ }
142
+ },
143
+ {
144
+ 'text': 'Array',
145
+ 'className': 'type-array',
146
+ 'title': titles.array,
147
+ 'click': function () {
148
+ node._onAppend('', []);
149
+ }
150
+ },
151
+ {
152
+ 'text': 'Object',
153
+ 'className': 'type-object',
154
+ 'title': titles.object,
155
+ 'click': function () {
156
+ node._onAppend('', {});
157
+ }
158
+ },
159
+ {
160
+ 'text': 'String',
161
+ 'className': 'type-string',
162
+ 'title': titles.string,
163
+ 'click': function () {
164
+ node._onAppend('', '', 'string');
165
+ }
166
+ }
167
+ ]
168
+ }
169
+ ];
170
+
171
+ var menu = new ContextMenu(items, {close: onClose});
172
+ menu.show(anchor);
173
+ };
174
+
175
+ /**
176
+ * Handle an event. The event is catched centrally by the editor
177
+ * @param {Event} event
178
+ */
179
+ AppendNode.prototype.onEvent = function (event) {
180
+ var type = event.type;
181
+ var target = event.target || event.srcElement;
182
+ var dom = this.dom;
183
+
184
+ // highlight the append nodes parent
185
+ var menu = dom.menu;
186
+ if (target == menu) {
187
+ if (type == 'mouseover') {
188
+ this.editor.highlighter.highlight(this.parent);
189
+ }
190
+ else if (type == 'mouseout') {
191
+ this.editor.highlighter.unhighlight();
192
+ }
193
+ }
194
+
195
+ // context menu events
196
+ if (type == 'click' && target == dom.menu) {
197
+ var highlighter = this.editor.highlighter;
198
+ highlighter.highlight(this.parent);
199
+ highlighter.lock();
200
+ util.addClassName(dom.menu, 'selected');
201
+ this.showContextMenu(dom.menu, function () {
202
+ util.removeClassName(dom.menu, 'selected');
203
+ highlighter.unlock();
204
+ highlighter.unhighlight();
205
+ });
206
+ }
207
+
208
+ if (type == 'keydown') {
209
+ this.onKeyDown(event);
210
+ }
211
+ };