Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4118270
ext-keybinding_menu.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
6 KB
Referenced Files
None
Subscribers
None
ext-keybinding_menu.js
View Options
ace
.
define
(
"ace/ext/menu_tools/settings_menu.css"
,[
"require"
,
"exports"
,
"module"
],
function
(
require
,
exports
,
module
){
module
.
exports
=
"#ace_settingsmenu, #kbshortcutmenu {\n background-color: #F7F7F7;\n color: black;\n box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);\n padding: 1em 0.5em 2em 1em;\n overflow: auto;\n position: absolute;\n margin: 0;\n bottom: 0;\n right: 0;\n top: 0;\n z-index: 9991;\n cursor: default;\n}\n\n.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {\n box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);\n background-color: rgba(255, 255, 255, 0.6);\n color: black;\n}\n\n.ace_optionsMenuEntry:hover {\n background-color: rgba(100, 100, 100, 0.1);\n transition: all 0.3s\n}\n\n.ace_closeButton {\n background: rgba(245, 146, 146, 0.5);\n border: 1px solid #F48A8A;\n border-radius: 50%;\n padding: 7px;\n position: absolute;\n right: -8px;\n top: -8px;\n z-index: 100000;\n}\n.ace_closeButton{\n background: rgba(245, 146, 146, 0.9);\n}\n.ace_optionsMenuKey {\n color: darkslateblue;\n font-weight: bold;\n}\n.ace_optionsMenuCommand {\n color: darkcyan;\n font-weight: normal;\n}\n.ace_optionsMenuEntry input, .ace_optionsMenuEntry button {\n vertical-align: middle;\n}\n\n.ace_optionsMenuEntry button[ace_selected_button=true] {\n background: #e7e7e7;\n box-shadow: 1px 0px 2px 0px #adadad inset;\n border-color: #adadad;\n}\n.ace_optionsMenuEntry button {\n background: white;\n border: 1px solid lightgray;\n margin: 0px;\n}\n.ace_optionsMenuEntry button:hover{\n background: #f0f0f0;\n}"
;
});
ace
.
define
(
"ace/ext/menu_tools/overlay_page"
,[
"require"
,
"exports"
,
"module"
,
"ace/lib/dom"
,
"ace/ext/menu_tools/settings_menu.css"
],
function
(
require
,
exports
,
module
){
/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/
'use strict'
;
var
dom
=
require
(
"../../lib/dom"
);
var
cssText
=
require
(
"./settings_menu.css"
);
dom
.
importCssString
(
cssText
,
"settings_menu.css"
,
false
);
module
.
exports
.
overlayPage
=
function
overlayPage
(
editor
,
contentElement
,
callback
)
{
var
closer
=
document
.
createElement
(
'div'
);
var
ignoreFocusOut
=
false
;
function
documentEscListener
(
e
)
{
if
(
e
.
keyCode
===
27
)
{
close
();
}
}
function
close
()
{
if
(
!
closer
)
return
;
document
.
removeEventListener
(
'keydown'
,
documentEscListener
);
closer
.
parentNode
.
removeChild
(
closer
);
if
(
editor
)
{
editor
.
focus
();
}
closer
=
null
;
callback
&&
callback
();
}
function
setIgnoreFocusOut
(
ignore
)
{
ignoreFocusOut
=
ignore
;
if
(
ignore
)
{
closer
.
style
.
pointerEvents
=
"none"
;
contentElement
.
style
.
pointerEvents
=
"auto"
;
}
}
closer
.
style
.
cssText
=
'margin: 0; padding: 0; '
+
'position: fixed; top:0; bottom:0; left:0; right:0;'
+
'z-index: 9990; '
+
(
editor
?
'background-color: rgba(0, 0, 0, 0.3);'
:
''
);
closer
.
addEventListener
(
'click'
,
function
(
e
)
{
if
(
!
ignoreFocusOut
)
{
close
();
}
});
document
.
addEventListener
(
'keydown'
,
documentEscListener
);
contentElement
.
addEventListener
(
'click'
,
function
(
e
)
{
e
.
stopPropagation
();
});
closer
.
appendChild
(
contentElement
);
document
.
body
.
appendChild
(
closer
);
if
(
editor
)
{
editor
.
blur
();
}
return
{
close
:
close
,
setIgnoreFocusOut
:
setIgnoreFocusOut
};
};
});
ace
.
define
(
"ace/ext/menu_tools/get_editor_keyboard_shortcuts"
,[
"require"
,
"exports"
,
"module"
,
"ace/lib/keys"
],
function
(
require
,
exports
,
module
){
/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/
"use strict"
;
var
keys
=
require
(
"../../lib/keys"
);
module
.
exports
.
getEditorKeybordShortcuts
=
function
(
editor
)
{
var
KEY_MODS
=
keys
.
KEY_MODS
;
var
keybindings
=
[];
var
commandMap
=
{};
editor
.
keyBinding
.
$handlers
.
forEach
(
function
(
handler
)
{
var
ckb
=
handler
[
"commandKeyBinding"
];
for
(
var
i
in
ckb
)
{
var
key
=
i
.
replace
(
/(^|-)\w/g
,
function
(
x
)
{
return
x
.
toUpperCase
();
});
var
commands
=
ckb
[
i
];
if
(
!
Array
.
isArray
(
commands
))
commands
=
[
commands
];
commands
.
forEach
(
function
(
command
)
{
if
(
typeof
command
!=
"string"
)
command
=
command
.
name
;
if
(
commandMap
[
command
])
{
commandMap
[
command
].
key
+=
"|"
+
key
;
}
else
{
commandMap
[
command
]
=
{
key
:
key
,
command
:
command
};
keybindings
.
push
(
commandMap
[
command
]);
}
});
}
});
return
keybindings
;
};
});
ace
.
define
(
"ace/ext/keybinding_menu"
,[
"require"
,
"exports"
,
"module"
,
"ace/editor"
,
"ace/ext/menu_tools/overlay_page"
,
"ace/ext/menu_tools/get_editor_keyboard_shortcuts"
],
function
(
require
,
exports
,
module
){
/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/
"use strict"
;
var
Editor
=
require
(
"../editor"
).
Editor
;
function
showKeyboardShortcuts
(
editor
)
{
if
(
!
document
.
getElementById
(
'kbshortcutmenu'
))
{
var
overlayPage
=
require
(
'./menu_tools/overlay_page'
).
overlayPage
;
var
getEditorKeybordShortcuts
=
require
(
'./menu_tools/get_editor_keyboard_shortcuts'
).
getEditorKeybordShortcuts
;
var
kb
=
getEditorKeybordShortcuts
(
editor
);
var
el
=
document
.
createElement
(
'div'
);
var
commands
=
kb
.
reduce
(
function
(
previous
,
current
)
{
return
previous
+
'<div class="ace_optionsMenuEntry"><span class="ace_optionsMenuCommand">'
+
current
.
command
+
'</span> : '
+
'<span class="ace_optionsMenuKey">'
+
current
.
key
+
'</span></div>'
;
},
''
);
el
.
id
=
'kbshortcutmenu'
;
el
.
innerHTML
=
'<h1>Keyboard Shortcuts</h1>'
+
commands
+
'</div>'
;
overlayPage
(
editor
,
el
);
}
}
module
.
exports
.
init
=
function
(
editor
)
{
Editor
.
prototype
.
showKeyboardShortcuts
=
function
()
{
showKeyboardShortcuts
(
this
);
};
editor
.
commands
.
addCommands
([{
name
:
"showKeyboardShortcuts"
,
bindKey
:
{
win
:
"Ctrl-Alt-h"
,
mac
:
"Command-Alt-h"
},
exec
:
function
(
editor
,
line
)
{
editor
.
showKeyboardShortcuts
();
}
}]);
};
});
(
function
()
{
ace
.
require
([
"ace/ext/keybinding_menu"
],
function
(
m
)
{
if
(
typeof
module
==
"object"
&&
typeof
exports
==
"object"
&&
module
)
{
module
.
exports
=
m
;
}
});
})();
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Aug 19, 02:41 (2 w, 2 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
da/10/298762f62135f65c0790ea5bcd89
Default Alt Text
ext-keybinding_menu.js (6 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment