From 44fa90fbdceca3c96f81b406daf01f991e8d98b5 Mon Sep 17 00:00:00 2001 From: bjorn Date: Sun, 13 Oct 2019 15:10:10 +0200 Subject: [PATCH] Prepare 2.9.0 release --- CHANGELOG.md | 9 +++++++++ dist/font/context-menu-icons.eot | Bin 3528 -> 3528 bytes dist/font/context-menu-icons.ttf | Bin 3320 -> 3320 bytes dist/font/context-menu-icons.woff | Bin 2180 -> 2180 bytes dist/font/context-menu-icons.woff2 | Bin 1680 -> 1692 bytes dist/jquery.contextMenu.css | 8 ++++---- dist/jquery.contextMenu.js | 6 +++--- dist/jquery.contextMenu.min.css | 6 +++--- dist/jquery.contextMenu.min.css.map | 2 +- dist/jquery.contextMenu.min.js.map | 2 +- package.json | 2 +- src/sass/icons/_variables.scss | 2 +- 12 files changed, 23 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 78d25bd4..f8d37f57 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ ## Changelog ## +### 2.9.0 + +#### Added + +* Added `dataAttr` option to add arbitrary data attributes to menu items. + +#### Changed + +* Updated dev dependencies. ### 2.8.1 diff --git a/dist/font/context-menu-icons.eot b/dist/font/context-menu-icons.eot index c126cb39aea015a31074367de30b11091a6faed8..5db8a5fb9c45c2f8a876c7b70131a348542b143c 100644 GIT binary patch delta 57 zcmX>heL{MI4U518_74*s9heL{MI4GYVqXTz0ogVCE=7{71>0JO>vH2?qr diff --git a/dist/font/context-menu-icons.woff b/dist/font/context-menu-icons.woff index 6cec241ceff76aeb79a81864bbf7eaabb0cf8901..5ac72ec78eb1c1109b406c9223458d0d11f31aa2 100644 GIT binary patch delta 61 zcmV-D0K)%-5rh$tj06^}>BF&*)deUI>{&D7`E9;3aI-Lgz|9kv7Q^WOzy2R!VPZZ2 T`DfkXj%8xCQ!jRyAtca|G~ delta 61 zcmV-D0K)%-5rh$tj06+qNXfB~)deW8)7JFF^V@u7;AUX}fg7nzYB2i$um1;Fn3xX$ Txf~2kAW;BJcnit1jRyAtlJ6Vg diff --git a/dist/font/context-menu-icons.woff2 b/dist/font/context-menu-icons.woff2 index bc07c7242c032907ffe4d76c14333ca33bd0b31b..17530166238a1be81d5822e84dc3bfdd43b8f37d 100644 GIT binary patch delta 1655 zcmV--28j8P4V(=acTYw#00961000J@01E&B000d5000J1kr+CEd6IpBZNnb4<^;jU zs05^n8H~^T9{4p#-~s>u004sLKex~OX23V@Y+SYdBn~mRDqg8|>!**gxMmv*KNU51 zC`a@j6&7+p>9^^?y;UCo^Z%ay?U*I+ITM|>1Jegh@Yi}YGW{B?C#VRMdm^QhHjg#w zfA{;W!q$zy!69=M_CR>2)NVR3PTY z)CfoRpXwY8+Gk0YqaP=;e5lFn%F74XH$nro+mkF4Lo-KzqfMx-D=#e5pnkkGXqV+A zNiR!O(OOPjg~q_V{o~m{MQFJh4-WF!8teG^I2#>D-VW0+wy+zTpu zd11GIXxIY|3fNiHmfd;5KNu!0>W};OtBjeSm47I>M%Qaec;m(}>@@z~;TqpC5?;rJ ztVsoUrzc~W6cm=u0JN2|0Q)?GPvDsvu;&dIfE}gU`XoBy3ReH41adt=#u8SB}qnNB_QjtF6xtaBG8t_~WL3oAxQuP;N#>5?UhlHupjmundCWM3+!6 zZt2><`#X8J$%{#+i-zh?(C;Sbn0c`Tk4_9JCw|44lKkV}7=#5$XOb)LK5K9)OT*IC z>s_yUJ|4$x1)N)&df&63;Hwwl8tkm*tRCzdpyx}~y=UrWDIZ<>*VAW(-d$ZYi%0)| zS>@g2!bzACg#GUFU`tZo)i>Al)qSaN8>C4v-tMZ{zMAHGd~0o9fFP=wwBEU~yg_Dh zU^|8>4S%!0U{W^mb{JDsdllT5qCnHg$BttMpO&NZf{}( zN_Q~!8uBv!=BMP{zL~V1v6J#$Wn%|_T{+Vuzie?u^-A(qiDA*LWFxwdtAXFMg9DD+ zJII-sO4gUxuB_}TlS)`}<= zW!J8iSuoagP1kXhA}iE#xZ&)(7fsyvvf`7)sZ53myM$ zki6D;`V85F)rbG-Ui`FY?!J0|(&`)J|8`40J$rp@lh6H~%$C#iF+CjA*HQ7WWOo*0 z`ychUj1-bwE)nv~QhNx9iV;naShtim>E(<%iroN5sh zpEkszFx`nqEk>U2Q-oD$#BdP;cCUycKlh0y-~}?A@`y=sIYTT0Q6nCIL&fbnK9G5w zqK@&-L5rOa%EKz$Gv>Y#HgEvnU%aDrC3TR5al}iWutO^tHOL3JYo0P^kXdTslI~tj zLtrdbs5mT`%_54juy==w+Mc40@y>x3J0B>+)7|r7{d3<4n|jFc@V>6Fu5_dDV@Dv=5_>GGl0b=N#ry&29xHkMj5_EIJ^Vg&&co?hX)f0NFCAK)?ipOxZ9w{=9q4GS@*dXHwb;;9)gjT1^$3{4>>#tAf^#J`b BClUYv delta 1643 zcmV-x29)`n4Ui2OcTYw#00961000J%01E&B000d5000I1Kv=r5AWmX>Wt{}|p5O$)kly?E$`npPIVdM^ z61{;Ro3>5+-^NCmPTBLV|K%A0I>STg_}~40^>3I*&X1g(PG}Yjaf01#4-p@t*1bX~ znoOiY$%GmK0r1v;5)UiC1q6U280wLK9VY0%c(1WfI)i%6g)B+xPvXaxzh3PvWNscroLL;`|B(j*{w=ED#qC@5*(jv^z5 zn0aYhEiW%!lYQ2=feb}Um3W-y!y*zg!MH7yT(O(|1hS7Gpwj(aeE^WDgBXjwkVj)S zewfu2-`>`LI?8 z4V;x;<)&EgosuiM%We8RbsIOWCQeee>Ml=f8ZXL!sv(91z|Q8q9Gzhc6!&-SYFhvY z5|77vW)L8ZLz_Dh+|?Z)LDPt5QZ9h~!MFvKTpV}8Jz87^8fvNDmP_Jre5so{{0`1@^0fEkkAkuB0oLv zCPBv__dpn@z3h?VS4;}=Km9gS>l=xTNfkG5a(pr+G*#{18)Z4zcvQ)CN>%M|?I$?O z`I~mHlWZ&=WZEU$(K73{sJSM8RLP%aEm!FM>XMm6Id9Cz!~GJ?456)#dos=CS@tKw9Ef?RA}LnQJXD^YSg-7aK^w}r>7+|6pm)=zA&+&MrmiisT#Q8>gd+`Y z&)4CP$zUK+1Hr(O6%pWt6NJIQMI<`8iG(2XBQgw1CL9iGd>tK$v`(RaXkpwrn{i25 ze^^C)p-qzrfdlyd;)fyjv_O@Y5ijX*!5|nl$OGbPYi0u`&X|S+%fy6 zC`{P9b4Bw>(ZaZMHsg}AK0H0X4(o5zBtq&T$HQ-35n}INd8qO-m+JgHrxK|^lP(Xn zZd`4BGi*RMfo3zdEfXe6v4X&drw_QU;N0afz9}~2nY1de*_xmGc>o;3*J~sYBatMM pNgx`cDa`69CwG2jKt! diff --git a/dist/jquery.contextMenu.css b/dist/jquery.contextMenu.css index 020cc519..c7fc0902 100644 --- a/dist/jquery.contextMenu.css +++ b/dist/jquery.contextMenu.css @@ -2,7 +2,7 @@ /*! * jQuery contextMenu - Plugin for simple contextMenu handling * - * Version: v2.8.1 + * Version: v2.9.0 * * Authors: Björn Brala (SWIS.nl), Rodney Rehm, Addy Osmani (patches for FF) * Web: http://swisnl.github.io/jQuery-contextMenu/ @@ -12,7 +12,7 @@ * Licensed under * MIT License http://www.opensource.org/licenses/mit-license * - * Date: 2019-10-06T14:19:04.540Z + * Date: 2019-10-13T13:09:56.297Z */ @-webkit-keyframes cm-spin { 0% { @@ -54,8 +54,8 @@ font-style: normal; font-weight: normal; - src: url("font/context-menu-icons.eot?1zyug"); - src: url("font/context-menu-icons.eot?1zyug#iefix") format("embedded-opentype"), url("font/context-menu-icons.woff2?1zyug") format("woff2"), url("font/context-menu-icons.woff?1zyug") format("woff"), url("font/context-menu-icons.ttf?1zyug") format("truetype"); + src: url("font/context-menu-icons.eot?4f0ru"); + src: url("font/context-menu-icons.eot?4f0ru#iefix") format("embedded-opentype"), url("font/context-menu-icons.woff2?4f0ru") format("woff2"), url("font/context-menu-icons.woff?4f0ru") format("woff"), url("font/context-menu-icons.ttf?4f0ru") format("truetype"); } .context-menu-icon-add:before { diff --git a/dist/jquery.contextMenu.js b/dist/jquery.contextMenu.js index 1d1b6feb..58370f6e 100755 --- a/dist/jquery.contextMenu.js +++ b/dist/jquery.contextMenu.js @@ -1,7 +1,7 @@ /** - * jQuery contextMenu v2.8.1 - Plugin for simple contextMenu handling + * jQuery contextMenu v2.9.0 - Plugin for simple contextMenu handling * - * Version: v2.8.1 + * Version: v2.9.0 * * Authors: Björn Brala (SWIS.nl), Rodney Rehm, Addy Osmani (patches for FF) * Web: http://swisnl.github.io/jQuery-contextMenu/ @@ -11,7 +11,7 @@ * Licensed under * MIT License http://www.opensource.org/licenses/mit-license * - * Date: 2019-10-06T14:19:04.506Z + * Date: 2019-10-13T13:09:56.900Z */ // jscs:disable diff --git a/dist/jquery.contextMenu.min.css b/dist/jquery.contextMenu.min.css index b497aa3b..d6f15b32 100644 --- a/dist/jquery.contextMenu.min.css +++ b/dist/jquery.contextMenu.min.css @@ -1,7 +1,7 @@ @charset "UTF-8";/*! * jQuery contextMenu - Plugin for simple contextMenu handling * - * Version: v2.8.1 + * Version: v2.9.0 * * Authors: Björn Brala (SWIS.nl), Rodney Rehm, Addy Osmani (patches for FF) * Web: http://swisnl.github.io/jQuery-contextMenu/ @@ -11,6 +11,6 @@ * Licensed under * MIT License http://www.opensource.org/licenses/mit-license * - * Date: 2019-10-06T14:19:04.540Z - */@-webkit-keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@-o-keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);-o-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);-o-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);-o-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);-o-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@font-face{font-family:context-menu-icons;font-style:normal;font-weight:400;src:url(font/context-menu-icons.eot?1zyug);src:url(font/context-menu-icons.eot?1zyug#iefix) format("embedded-opentype"),url(font/context-menu-icons.woff2?1zyug) format("woff2"),url(font/context-menu-icons.woff?1zyug) format("woff"),url(font/context-menu-icons.ttf?1zyug) format("truetype")}.context-menu-icon-add:before{content:"\EA01"}.context-menu-icon-copy:before{content:"\EA02"}.context-menu-icon-cut:before{content:"\EA03"}.context-menu-icon-delete:before{content:"\EA04"}.context-menu-icon-edit:before{content:"\EA05"}.context-menu-icon-loading:before{content:"\EA06"}.context-menu-icon-paste:before{content:"\EA07"}.context-menu-icon-quit:before{content:"\EA08"}.context-menu-icon::before{position:absolute;top:50%;left:0;width:2em;font-family:context-menu-icons;font-size:1em;font-style:normal;font-weight:400;line-height:1;color:#2980b9;text-align:center;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.context-menu-icon.context-menu-hover:before{color:#fff}.context-menu-icon.context-menu-disabled::before{color:#bbb}.context-menu-icon.context-menu-icon-loading:before{-webkit-animation:cm-spin 2s infinite;-o-animation:cm-spin 2s infinite;animation:cm-spin 2s infinite}.context-menu-icon.context-menu-icon--fa{display:list-item;font-family:inherit;line-height:inherit}.context-menu-icon.context-menu-icon--fa::before{position:absolute;top:50%;left:0;width:2em;font-family:FontAwesome;font-size:1em;font-style:normal;font-weight:400;line-height:1;color:#2980b9;text-align:center;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.context-menu-icon.context-menu-icon--fa.context-menu-hover:before{color:#fff}.context-menu-icon.context-menu-icon--fa.context-menu-disabled::before{color:#bbb}.context-menu-icon.context-menu-icon--fa5{display:list-item;font-family:inherit;line-height:inherit}.context-menu-icon.context-menu-icon--fa5 i,.context-menu-icon.context-menu-icon--fa5 svg{position:absolute;top:.3em;left:.5em;color:#2980b9}.context-menu-icon.context-menu-icon--fa5.context-menu-hover>i,.context-menu-icon.context-menu-icon--fa5.context-menu-hover>svg{color:#fff}.context-menu-icon.context-menu-icon--fa5.context-menu-disabled i,.context-menu-icon.context-menu-icon--fa5.context-menu-disabled svg{color:#bbb}.context-menu-list{position:absolute;display:inline-block;min-width:13em;max-width:26em;padding:.25em 0;margin:.3em;font-family:inherit;font-size:inherit;list-style-type:none;background:#fff;border:1px solid #bebebe;border-radius:.2em;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.5);box-shadow:0 2px 5px rgba(0,0,0,.5)}.context-menu-item{position:relative;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;padding:.2em 2em;color:#2f2f2f;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff}.context-menu-separator{padding:0;margin:.35em 0;border-bottom:1px solid #e6e6e6}.context-menu-item>label>input,.context-menu-item>label>textarea{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.context-menu-item.context-menu-hover{color:#fff;cursor:pointer;background-color:#2980b9}.context-menu-item.context-menu-disabled{color:#bbb;cursor:default;background-color:#fff}.context-menu-input.context-menu-hover{color:#2f2f2f;cursor:default}.context-menu-submenu:after{position:absolute;top:50%;right:.5em;z-index:1;width:0;height:0;content:'';border-color:transparent transparent transparent #2f2f2f;border-style:solid;border-width:.25em 0 .25em .25em;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}.context-menu-item.context-menu-input{padding:.3em .6em}.context-menu-input>label>*{vertical-align:top}.context-menu-input>label>input[type=checkbox],.context-menu-input>label>input[type=radio]{position:relative;top:.12em;margin-right:.4em}.context-menu-input>label{margin:0}.context-menu-input>label,.context-menu-input>label>input[type=text],.context-menu-input>label>select,.context-menu-input>label>textarea{display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.context-menu-input>label>textarea{height:7em}.context-menu-item>.context-menu-list{top:.3em;right:-.3em;display:none}.context-menu-item.context-menu-visible>.context-menu-list{display:block}.context-menu-accesskey{text-decoration:underline} + * Date: 2019-10-13T13:09:56.297Z + */@-webkit-keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@-o-keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);-o-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);-o-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);-o-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);-o-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@font-face{font-family:context-menu-icons;font-style:normal;font-weight:400;src:url(font/context-menu-icons.eot?4f0ru);src:url(font/context-menu-icons.eot?4f0ru#iefix) format("embedded-opentype"),url(font/context-menu-icons.woff2?4f0ru) format("woff2"),url(font/context-menu-icons.woff?4f0ru) format("woff"),url(font/context-menu-icons.ttf?4f0ru) format("truetype")}.context-menu-icon-add:before{content:"\EA01"}.context-menu-icon-copy:before{content:"\EA02"}.context-menu-icon-cut:before{content:"\EA03"}.context-menu-icon-delete:before{content:"\EA04"}.context-menu-icon-edit:before{content:"\EA05"}.context-menu-icon-loading:before{content:"\EA06"}.context-menu-icon-paste:before{content:"\EA07"}.context-menu-icon-quit:before{content:"\EA08"}.context-menu-icon::before{position:absolute;top:50%;left:0;width:2em;font-family:context-menu-icons;font-size:1em;font-style:normal;font-weight:400;line-height:1;color:#2980b9;text-align:center;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.context-menu-icon.context-menu-hover:before{color:#fff}.context-menu-icon.context-menu-disabled::before{color:#bbb}.context-menu-icon.context-menu-icon-loading:before{-webkit-animation:cm-spin 2s infinite;-o-animation:cm-spin 2s infinite;animation:cm-spin 2s infinite}.context-menu-icon.context-menu-icon--fa{display:list-item;font-family:inherit;line-height:inherit}.context-menu-icon.context-menu-icon--fa::before{position:absolute;top:50%;left:0;width:2em;font-family:FontAwesome;font-size:1em;font-style:normal;font-weight:400;line-height:1;color:#2980b9;text-align:center;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.context-menu-icon.context-menu-icon--fa.context-menu-hover:before{color:#fff}.context-menu-icon.context-menu-icon--fa.context-menu-disabled::before{color:#bbb}.context-menu-icon.context-menu-icon--fa5{display:list-item;font-family:inherit;line-height:inherit}.context-menu-icon.context-menu-icon--fa5 i,.context-menu-icon.context-menu-icon--fa5 svg{position:absolute;top:.3em;left:.5em;color:#2980b9}.context-menu-icon.context-menu-icon--fa5.context-menu-hover>i,.context-menu-icon.context-menu-icon--fa5.context-menu-hover>svg{color:#fff}.context-menu-icon.context-menu-icon--fa5.context-menu-disabled i,.context-menu-icon.context-menu-icon--fa5.context-menu-disabled svg{color:#bbb}.context-menu-list{position:absolute;display:inline-block;min-width:13em;max-width:26em;padding:.25em 0;margin:.3em;font-family:inherit;font-size:inherit;list-style-type:none;background:#fff;border:1px solid #bebebe;border-radius:.2em;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.5);box-shadow:0 2px 5px rgba(0,0,0,.5)}.context-menu-item{position:relative;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;padding:.2em 2em;color:#2f2f2f;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff}.context-menu-separator{padding:0;margin:.35em 0;border-bottom:1px solid #e6e6e6}.context-menu-item>label>input,.context-menu-item>label>textarea{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.context-menu-item.context-menu-hover{color:#fff;cursor:pointer;background-color:#2980b9}.context-menu-item.context-menu-disabled{color:#bbb;cursor:default;background-color:#fff}.context-menu-input.context-menu-hover{color:#2f2f2f;cursor:default}.context-menu-submenu:after{position:absolute;top:50%;right:.5em;z-index:1;width:0;height:0;content:'';border-color:transparent transparent transparent #2f2f2f;border-style:solid;border-width:.25em 0 .25em .25em;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}.context-menu-item.context-menu-input{padding:.3em .6em}.context-menu-input>label>*{vertical-align:top}.context-menu-input>label>input[type=checkbox],.context-menu-input>label>input[type=radio]{position:relative;top:.12em;margin-right:.4em}.context-menu-input>label{margin:0}.context-menu-input>label,.context-menu-input>label>input[type=text],.context-menu-input>label>select,.context-menu-input>label>textarea{display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.context-menu-input>label>textarea{height:7em}.context-menu-item>.context-menu-list{top:.3em;right:-.3em;display:none}.context-menu-item.context-menu-visible>.context-menu-list{display:block}.context-menu-accesskey{text-decoration:underline} /*# sourceMappingURL=jquery.contextMenu.min.css.map */ diff --git a/dist/jquery.contextMenu.min.css.map b/dist/jquery.contextMenu.min.css.map index 33ebc737..3125100b 100644 --- a/dist/jquery.contextMenu.min.css.map +++ b/dist/jquery.contextMenu.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["jquery.contextMenu.css","jquery.contextMenu.min.css"],"names":[],"mappings":"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","file":"jquery.contextMenu.min.css","sourcesContent":["@charset \"UTF-8\";\n/*!\r\n * jQuery contextMenu - Plugin for simple contextMenu handling\r\n *\r\n * Version: v2.8.1\r\n *\r\n * Authors: Björn Brala (SWIS.nl), Rodney Rehm, Addy Osmani (patches for FF)\r\n * Web: http://swisnl.github.io/jQuery-contextMenu/\r\n *\r\n * Copyright (c) 2011-2019 SWIS BV and contributors\r\n *\r\n * Licensed under\r\n * MIT License http://www.opensource.org/licenses/mit-license\r\n *\r\n * Date: 2019-10-06T14:19:04.540Z\r\n */\n@keyframes cm-spin {\n 0% {\n -webkit-transform: translateY(-50%) rotate(0deg);\n transform: translateY(-50%) rotate(0deg); }\n 100% {\n -webkit-transform: translateY(-50%) rotate(359deg);\n transform: translateY(-50%) rotate(359deg); } }\n\n@font-face {\n font-family: \"context-menu-icons\";\n src: url(\"font/context-menu-icons.eot?1zyug\");\n src: url(\"font/context-menu-icons.eot?1zyug#iefix\") format(\"embedded-opentype\"), url(\"font/context-menu-icons.woff2?1zyug\") format(\"woff2\"), url(\"font/context-menu-icons.woff?1zyug\") format(\"woff\"), url(\"font/context-menu-icons.ttf?1zyug\") format(\"truetype\");\n font-weight: normal;\n font-style: normal; }\n\n.context-menu-icon-add:before {\n content: \"\\EA01\"; }\n\n.context-menu-icon-copy:before {\n content: \"\\EA02\"; }\n\n.context-menu-icon-cut:before {\n content: \"\\EA03\"; }\n\n.context-menu-icon-delete:before {\n content: \"\\EA04\"; }\n\n.context-menu-icon-edit:before {\n content: \"\\EA05\"; }\n\n.context-menu-icon-loading:before {\n content: \"\\EA06\"; }\n\n.context-menu-icon-paste:before {\n content: \"\\EA07\"; }\n\n.context-menu-icon-quit:before {\n content: \"\\EA08\"; }\n\n.context-menu-icon::before {\n color: #2980B9;\n font-family: \"context-menu-icons\";\n font-style: normal;\n font-weight: normal;\n font-size: 1em;\n left: 0;\n line-height: 1;\n position: absolute;\n text-align: center;\n top: 50%;\n transform: translateY(-50%);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 2em; }\n\n.context-menu-icon.context-menu-hover:before {\n color: #FFF; }\n\n.context-menu-icon.context-menu-disabled::before {\n color: #bbbbbb; }\n\n.context-menu-icon.context-menu-icon-loading:before {\n animation: cm-spin 2s infinite; }\n\n.context-menu-icon.context-menu-icon--fa {\n display: list-item;\n font-family: inherit;\n line-height: inherit; }\n .context-menu-icon.context-menu-icon--fa::before {\n color: #2980B9;\n font-family: FontAwesome;\n font-style: normal;\n font-weight: normal;\n font-size: 1em;\n left: 0;\n line-height: 1;\n position: absolute;\n text-align: center;\n top: 50%;\n transform: translateY(-50%);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 2em; }\n .context-menu-icon.context-menu-icon--fa.context-menu-hover:before {\n color: #FFF; }\n .context-menu-icon.context-menu-icon--fa.context-menu-disabled::before {\n color: #bbbbbb; }\n\n.context-menu-icon.context-menu-icon--fa5 {\n display: list-item;\n font-family: inherit;\n line-height: inherit; }\n .context-menu-icon.context-menu-icon--fa5 i, .context-menu-icon.context-menu-icon--fa5 svg {\n color: #2980B9;\n left: 0.5em;\n position: absolute;\n top: 0.3em; }\n .context-menu-icon.context-menu-icon--fa5.context-menu-hover > i, .context-menu-icon.context-menu-icon--fa5.context-menu-hover > svg {\n color: #FFF; }\n .context-menu-icon.context-menu-icon--fa5.context-menu-disabled i, .context-menu-icon.context-menu-icon--fa5.context-menu-disabled svg {\n color: #bbbbbb; }\n\n.context-menu-list {\n background: #FFF;\n border: 1px solid #bebebe;\n border-radius: 0.2em;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5);\n display: inline-block;\n font-family: inherit;\n font-size: inherit;\n list-style-type: none;\n margin: 0.3em;\n max-width: 26em;\n min-width: 13em;\n padding: 0.25em 0;\n position: absolute; }\n\n.context-menu-item {\n background-color: #FFF;\n box-sizing: content-box;\n color: #2F2F2F;\n padding: 0.2em 2em;\n position: relative;\n user-select: none; }\n\n.context-menu-separator {\n border-bottom: 1px solid #e6e6e6;\n margin: 0.35em 0;\n padding: 0; }\n\n.context-menu-item > label > input,\n.context-menu-item > label > textarea {\n user-select: text; }\n\n.context-menu-item.context-menu-hover {\n background-color: #2980B9;\n color: #FFF;\n cursor: pointer; }\n\n.context-menu-item.context-menu-disabled {\n background-color: #FFF;\n color: #bbbbbb;\n cursor: default; }\n\n.context-menu-input.context-menu-hover {\n cursor: default;\n color: #2F2F2F; }\n\n.context-menu-submenu:after {\n content: '';\n border-style: solid;\n border-width: .25em 0 .25em .25em;\n border-color: transparent transparent transparent #2F2F2F;\n height: 0;\n position: absolute;\n right: .5em;\n top: 50%;\n transform: translateY(-50%);\n width: 0;\n z-index: 1; }\n\n/**\r\n * Inputs\r\n */\n.context-menu-item.context-menu-input {\n padding: .3em .6em; }\n\n/* vertically align inside labels */\n.context-menu-input > label > * {\n vertical-align: top; }\n\n/* position checkboxes and radios as icons */\n.context-menu-input > label > input[type=\"checkbox\"],\n.context-menu-input > label > input[type=\"radio\"] {\n margin-right: .4em;\n position: relative;\n top: .12em; }\n\n.context-menu-input > label {\n margin: 0; }\n\n.context-menu-input > label,\n.context-menu-input > label > input[type=\"text\"],\n.context-menu-input > label > textarea,\n.context-menu-input > label > select {\n box-sizing: border-box;\n display: block;\n width: 100%; }\n\n.context-menu-input > label > textarea {\n height: 7em; }\n\n.context-menu-item > .context-menu-list {\n display: none;\n /* re-positioned by js */\n right: -.3em;\n top: .3em; }\n\n.context-menu-item.context-menu-visible > .context-menu-list {\n display: block; }\n\n.context-menu-accesskey {\n text-decoration: underline; }\n","@charset \"UTF-8\";/*!\r\n * jQuery contextMenu - Plugin for simple contextMenu handling\r\n *\r\n * Version: v2.8.1\r\n *\r\n * Authors: Björn Brala (SWIS.nl), Rodney Rehm, Addy Osmani (patches for FF)\r\n * Web: http://swisnl.github.io/jQuery-contextMenu/\r\n *\r\n * Copyright (c) 2011-2019 SWIS BV and contributors\r\n *\r\n * Licensed under\r\n * MIT License http://www.opensource.org/licenses/mit-license\r\n *\r\n * Date: 2019-10-05T08:37:44.295Z\r\n */@-webkit-keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@-o-keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);-o-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);-o-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);-o-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);-o-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@font-face{font-family:context-menu-icons;font-style:normal;font-weight:400;src:url(font/context-menu-icons.eot?1zyug);src:url(font/context-menu-icons.eot?1zyug#iefix) format(\"embedded-opentype\"),url(font/context-menu-icons.woff2?1zyug) format(\"woff2\"),url(font/context-menu-icons.woff?1zyug) format(\"woff\"),url(font/context-menu-icons.ttf?1zyug) format(\"truetype\")}.context-menu-icon-add:before{content:\"\\EA01\"}.context-menu-icon-copy:before{content:\"\\EA02\"}.context-menu-icon-cut:before{content:\"\\EA03\"}.context-menu-icon-delete:before{content:\"\\EA04\"}.context-menu-icon-edit:before{content:\"\\EA05\"}.context-menu-icon-loading:before{content:\"\\EA06\"}.context-menu-icon-paste:before{content:\"\\EA07\"}.context-menu-icon-quit:before{content:\"\\EA08\"}.context-menu-icon::before{position:absolute;top:50%;left:0;width:2em;font-family:context-menu-icons;font-size:1em;font-style:normal;font-weight:400;line-height:1;color:#2980b9;text-align:center;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.context-menu-icon.context-menu-hover:before{color:#fff}.context-menu-icon.context-menu-disabled::before{color:#bbb}.context-menu-icon.context-menu-icon-loading:before{-webkit-animation:cm-spin 2s infinite;-o-animation:cm-spin 2s infinite;animation:cm-spin 2s infinite}.context-menu-icon.context-menu-icon--fa{display:list-item;font-family:inherit;line-height:inherit}.context-menu-icon.context-menu-icon--fa::before{position:absolute;top:50%;left:0;width:2em;font-family:FontAwesome;font-size:1em;font-style:normal;font-weight:400;line-height:1;color:#2980b9;text-align:center;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.context-menu-icon.context-menu-icon--fa.context-menu-hover:before{color:#fff}.context-menu-icon.context-menu-icon--fa.context-menu-disabled::before{color:#bbb}.context-menu-icon.context-menu-icon--fa5{display:list-item;font-family:inherit;line-height:inherit}.context-menu-icon.context-menu-icon--fa5 i,.context-menu-icon.context-menu-icon--fa5 svg{position:absolute;top:.3em;left:.5em;color:#2980b9}.context-menu-icon.context-menu-icon--fa5.context-menu-hover>i,.context-menu-icon.context-menu-icon--fa5.context-menu-hover>svg{color:#fff}.context-menu-icon.context-menu-icon--fa5.context-menu-disabled i,.context-menu-icon.context-menu-icon--fa5.context-menu-disabled svg{color:#bbb}.context-menu-list{position:absolute;display:inline-block;min-width:13em;max-width:26em;padding:.25em 0;margin:.3em;font-family:inherit;font-size:inherit;list-style-type:none;background:#fff;border:1px solid #bebebe;border-radius:.2em;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.5);box-shadow:0 2px 5px rgba(0,0,0,.5)}.context-menu-item{position:relative;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;padding:.2em 2em;color:#2f2f2f;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff}.context-menu-separator{padding:0;margin:.35em 0;border-bottom:1px solid #e6e6e6}.context-menu-item>label>input,.context-menu-item>label>textarea{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.context-menu-item.context-menu-hover{color:#fff;cursor:pointer;background-color:#2980b9}.context-menu-item.context-menu-disabled{color:#bbb;cursor:default;background-color:#fff}.context-menu-input.context-menu-hover{color:#2f2f2f;cursor:default}.context-menu-submenu:after{position:absolute;top:50%;right:.5em;z-index:1;width:0;height:0;content:'';border-color:transparent transparent transparent #2f2f2f;border-style:solid;border-width:.25em 0 .25em .25em;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}.context-menu-item.context-menu-input{padding:.3em .6em}.context-menu-input>label>*{vertical-align:top}.context-menu-input>label>input[type=checkbox],.context-menu-input>label>input[type=radio]{position:relative;top:.12em;margin-right:.4em}.context-menu-input>label{margin:0}.context-menu-input>label,.context-menu-input>label>input[type=text],.context-menu-input>label>select,.context-menu-input>label>textarea{display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.context-menu-input>label>textarea{height:7em}.context-menu-item>.context-menu-list{top:.3em;right:-.3em;display:none}.context-menu-item.context-menu-visible>.context-menu-list{display:block}.context-menu-accesskey{text-decoration:underline}\r\n/*# sourceMappingURL=jquery.contextMenu.min.css.map */\r\n"]} \ No newline at end of file +{"version":3,"sources":["jquery.contextMenu.css","jquery.contextMenu.min.css"],"names":[],"mappings":"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","file":"jquery.contextMenu.min.css","sourcesContent":["@charset \"UTF-8\";\n/*!\r\n * jQuery contextMenu - Plugin for simple contextMenu handling\r\n *\r\n * Version: v2.9.0\r\n *\r\n * Authors: Björn Brala (SWIS.nl), Rodney Rehm, Addy Osmani (patches for FF)\r\n * Web: http://swisnl.github.io/jQuery-contextMenu/\r\n *\r\n * Copyright (c) 2011-2019 SWIS BV and contributors\r\n *\r\n * Licensed under\r\n * MIT License http://www.opensource.org/licenses/mit-license\r\n *\r\n * Date: 2019-10-13T13:09:56.297Z\r\n */\n@keyframes cm-spin {\n 0% {\n -webkit-transform: translateY(-50%) rotate(0deg);\n transform: translateY(-50%) rotate(0deg); }\n 100% {\n -webkit-transform: translateY(-50%) rotate(359deg);\n transform: translateY(-50%) rotate(359deg); } }\n\n@font-face {\n font-family: \"context-menu-icons\";\n src: url(\"font/context-menu-icons.eot?4f0ru\");\n src: url(\"font/context-menu-icons.eot?4f0ru#iefix\") format(\"embedded-opentype\"), url(\"font/context-menu-icons.woff2?4f0ru\") format(\"woff2\"), url(\"font/context-menu-icons.woff?4f0ru\") format(\"woff\"), url(\"font/context-menu-icons.ttf?4f0ru\") format(\"truetype\");\n font-weight: normal;\n font-style: normal; }\n\n.context-menu-icon-add:before {\n content: \"\\EA01\"; }\n\n.context-menu-icon-copy:before {\n content: \"\\EA02\"; }\n\n.context-menu-icon-cut:before {\n content: \"\\EA03\"; }\n\n.context-menu-icon-delete:before {\n content: \"\\EA04\"; }\n\n.context-menu-icon-edit:before {\n content: \"\\EA05\"; }\n\n.context-menu-icon-loading:before {\n content: \"\\EA06\"; }\n\n.context-menu-icon-paste:before {\n content: \"\\EA07\"; }\n\n.context-menu-icon-quit:before {\n content: \"\\EA08\"; }\n\n.context-menu-icon::before {\n color: #2980B9;\n font-family: \"context-menu-icons\";\n font-style: normal;\n font-weight: normal;\n font-size: 1em;\n left: 0;\n line-height: 1;\n position: absolute;\n text-align: center;\n top: 50%;\n transform: translateY(-50%);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 2em; }\n\n.context-menu-icon.context-menu-hover:before {\n color: #FFF; }\n\n.context-menu-icon.context-menu-disabled::before {\n color: #bbbbbb; }\n\n.context-menu-icon.context-menu-icon-loading:before {\n animation: cm-spin 2s infinite; }\n\n.context-menu-icon.context-menu-icon--fa {\n display: list-item;\n font-family: inherit;\n line-height: inherit; }\n .context-menu-icon.context-menu-icon--fa::before {\n color: #2980B9;\n font-family: FontAwesome;\n font-style: normal;\n font-weight: normal;\n font-size: 1em;\n left: 0;\n line-height: 1;\n position: absolute;\n text-align: center;\n top: 50%;\n transform: translateY(-50%);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 2em; }\n .context-menu-icon.context-menu-icon--fa.context-menu-hover:before {\n color: #FFF; }\n .context-menu-icon.context-menu-icon--fa.context-menu-disabled::before {\n color: #bbbbbb; }\n\n.context-menu-icon.context-menu-icon--fa5 {\n display: list-item;\n font-family: inherit;\n line-height: inherit; }\n .context-menu-icon.context-menu-icon--fa5 i, .context-menu-icon.context-menu-icon--fa5 svg {\n color: #2980B9;\n left: 0.5em;\n position: absolute;\n top: 0.3em; }\n .context-menu-icon.context-menu-icon--fa5.context-menu-hover > i, .context-menu-icon.context-menu-icon--fa5.context-menu-hover > svg {\n color: #FFF; }\n .context-menu-icon.context-menu-icon--fa5.context-menu-disabled i, .context-menu-icon.context-menu-icon--fa5.context-menu-disabled svg {\n color: #bbbbbb; }\n\n.context-menu-list {\n background: #FFF;\n border: 1px solid #bebebe;\n border-radius: 0.2em;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5);\n display: inline-block;\n font-family: inherit;\n font-size: inherit;\n list-style-type: none;\n margin: 0.3em;\n max-width: 26em;\n min-width: 13em;\n padding: 0.25em 0;\n position: absolute; }\n\n.context-menu-item {\n background-color: #FFF;\n box-sizing: content-box;\n color: #2F2F2F;\n padding: 0.2em 2em;\n position: relative;\n user-select: none; }\n\n.context-menu-separator {\n border-bottom: 1px solid #e6e6e6;\n margin: 0.35em 0;\n padding: 0; }\n\n.context-menu-item > label > input,\n.context-menu-item > label > textarea {\n user-select: text; }\n\n.context-menu-item.context-menu-hover {\n background-color: #2980B9;\n color: #FFF;\n cursor: pointer; }\n\n.context-menu-item.context-menu-disabled {\n background-color: #FFF;\n color: #bbbbbb;\n cursor: default; }\n\n.context-menu-input.context-menu-hover {\n cursor: default;\n color: #2F2F2F; }\n\n.context-menu-submenu:after {\n content: '';\n border-style: solid;\n border-width: .25em 0 .25em .25em;\n border-color: transparent transparent transparent #2F2F2F;\n height: 0;\n position: absolute;\n right: .5em;\n top: 50%;\n transform: translateY(-50%);\n width: 0;\n z-index: 1; }\n\n/**\r\n * Inputs\r\n */\n.context-menu-item.context-menu-input {\n padding: .3em .6em; }\n\n/* vertically align inside labels */\n.context-menu-input > label > * {\n vertical-align: top; }\n\n/* position checkboxes and radios as icons */\n.context-menu-input > label > input[type=\"checkbox\"],\n.context-menu-input > label > input[type=\"radio\"] {\n margin-right: .4em;\n position: relative;\n top: .12em; }\n\n.context-menu-input > label {\n margin: 0; }\n\n.context-menu-input > label,\n.context-menu-input > label > input[type=\"text\"],\n.context-menu-input > label > textarea,\n.context-menu-input > label > select {\n box-sizing: border-box;\n display: block;\n width: 100%; }\n\n.context-menu-input > label > textarea {\n height: 7em; }\n\n.context-menu-item > .context-menu-list {\n display: none;\n /* re-positioned by js */\n right: -.3em;\n top: .3em; }\n\n.context-menu-item.context-menu-visible > .context-menu-list {\n display: block; }\n\n.context-menu-accesskey {\n text-decoration: underline; }\n","@charset \"UTF-8\";/*!\r\n * jQuery contextMenu - Plugin for simple contextMenu handling\r\n *\r\n * Version: v2.8.1\r\n *\r\n * Authors: Björn Brala (SWIS.nl), Rodney Rehm, Addy Osmani (patches for FF)\r\n * Web: http://swisnl.github.io/jQuery-contextMenu/\r\n *\r\n * Copyright (c) 2011-2019 SWIS BV and contributors\r\n *\r\n * Licensed under\r\n * MIT License http://www.opensource.org/licenses/mit-license\r\n *\r\n * Date: 2019-10-06T14:19:04.540Z\r\n */@-webkit-keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@-o-keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);-o-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);-o-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);-o-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);-o-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@font-face{font-family:context-menu-icons;font-style:normal;font-weight:400;src:url(font/context-menu-icons.eot?1zyug);src:url(font/context-menu-icons.eot?1zyug#iefix) format(\"embedded-opentype\"),url(font/context-menu-icons.woff2?1zyug) format(\"woff2\"),url(font/context-menu-icons.woff?1zyug) format(\"woff\"),url(font/context-menu-icons.ttf?1zyug) format(\"truetype\")}.context-menu-icon-add:before{content:\"\\EA01\"}.context-menu-icon-copy:before{content:\"\\EA02\"}.context-menu-icon-cut:before{content:\"\\EA03\"}.context-menu-icon-delete:before{content:\"\\EA04\"}.context-menu-icon-edit:before{content:\"\\EA05\"}.context-menu-icon-loading:before{content:\"\\EA06\"}.context-menu-icon-paste:before{content:\"\\EA07\"}.context-menu-icon-quit:before{content:\"\\EA08\"}.context-menu-icon::before{position:absolute;top:50%;left:0;width:2em;font-family:context-menu-icons;font-size:1em;font-style:normal;font-weight:400;line-height:1;color:#2980b9;text-align:center;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.context-menu-icon.context-menu-hover:before{color:#fff}.context-menu-icon.context-menu-disabled::before{color:#bbb}.context-menu-icon.context-menu-icon-loading:before{-webkit-animation:cm-spin 2s infinite;-o-animation:cm-spin 2s infinite;animation:cm-spin 2s infinite}.context-menu-icon.context-menu-icon--fa{display:list-item;font-family:inherit;line-height:inherit}.context-menu-icon.context-menu-icon--fa::before{position:absolute;top:50%;left:0;width:2em;font-family:FontAwesome;font-size:1em;font-style:normal;font-weight:400;line-height:1;color:#2980b9;text-align:center;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.context-menu-icon.context-menu-icon--fa.context-menu-hover:before{color:#fff}.context-menu-icon.context-menu-icon--fa.context-menu-disabled::before{color:#bbb}.context-menu-icon.context-menu-icon--fa5{display:list-item;font-family:inherit;line-height:inherit}.context-menu-icon.context-menu-icon--fa5 i,.context-menu-icon.context-menu-icon--fa5 svg{position:absolute;top:.3em;left:.5em;color:#2980b9}.context-menu-icon.context-menu-icon--fa5.context-menu-hover>i,.context-menu-icon.context-menu-icon--fa5.context-menu-hover>svg{color:#fff}.context-menu-icon.context-menu-icon--fa5.context-menu-disabled i,.context-menu-icon.context-menu-icon--fa5.context-menu-disabled svg{color:#bbb}.context-menu-list{position:absolute;display:inline-block;min-width:13em;max-width:26em;padding:.25em 0;margin:.3em;font-family:inherit;font-size:inherit;list-style-type:none;background:#fff;border:1px solid #bebebe;border-radius:.2em;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.5);box-shadow:0 2px 5px rgba(0,0,0,.5)}.context-menu-item{position:relative;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;padding:.2em 2em;color:#2f2f2f;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff}.context-menu-separator{padding:0;margin:.35em 0;border-bottom:1px solid #e6e6e6}.context-menu-item>label>input,.context-menu-item>label>textarea{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.context-menu-item.context-menu-hover{color:#fff;cursor:pointer;background-color:#2980b9}.context-menu-item.context-menu-disabled{color:#bbb;cursor:default;background-color:#fff}.context-menu-input.context-menu-hover{color:#2f2f2f;cursor:default}.context-menu-submenu:after{position:absolute;top:50%;right:.5em;z-index:1;width:0;height:0;content:'';border-color:transparent transparent transparent #2f2f2f;border-style:solid;border-width:.25em 0 .25em .25em;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}.context-menu-item.context-menu-input{padding:.3em .6em}.context-menu-input>label>*{vertical-align:top}.context-menu-input>label>input[type=checkbox],.context-menu-input>label>input[type=radio]{position:relative;top:.12em;margin-right:.4em}.context-menu-input>label{margin:0}.context-menu-input>label,.context-menu-input>label>input[type=text],.context-menu-input>label>select,.context-menu-input>label>textarea{display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.context-menu-input>label>textarea{height:7em}.context-menu-item>.context-menu-list{top:.3em;right:-.3em;display:none}.context-menu-item.context-menu-visible>.context-menu-list{display:block}.context-menu-accesskey{text-decoration:underline}\r\n/*# sourceMappingURL=jquery.contextMenu.min.css.map */\r\n"]} \ No newline at end of file diff --git a/dist/jquery.contextMenu.min.js.map b/dist/jquery.contextMenu.min.js.map index 454dab5c..33ddd2b1 100644 --- a/dist/jquery.contextMenu.min.js.map +++ b/dist/jquery.contextMenu.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["jquery.contextMenu.min.js"],"names":["factory","define","amd","exports","require","jQuery","$","orig","support","htmlMenuitem","window","htmlCommand","eventSelectstart","document","documentElement","ui","widget","cleanData","elems","events","elem","i","_data","remove","triggerHandler","e","$currentTrigger","initialized","$win","counter","namespaces","menus","types","defaults","selector","appendTo","trigger","autoHide","delay","reposition","hideOnSecondTrigger","selectableSubMenu","classNames","hover","disabled","visible","notSelectable","icon","iconEdit","iconCut","iconCopy","iconPaste","iconDelete","iconAdd","iconQuit","iconLoadingClass","determinePosition","$menu","position","css","my","at","of","this","offset","collision","top","outerHeight","left","outerWidth","opt","x","y","offsetParentOffset","offsetParent","bottom","scrollTop","height","right","scrollLeft","width","call","positionSubmenu","zIndex","animation","duration","show","hide","preShow","noop","activated","callback","items","hoveract","timer","pageX","pageY","handle","abortevent","preventDefault","stopImmediatePropagation","contextmenu","$this","data","originalEvent","mouseButton","hasClass","build","built","extend","isEmptyObject","console","error","log","Error","$trigger","op","create","click","Event","mousedown","length","is","button","mouseup","removeData","mouseenter","$related","relatedTarget","$document","closest","on","mousemove","setTimeout","off","mouseleave","clearTimeout","layerClick","target","root","fakeClick","undefined","$window","triggerAction","elementFromPoint","$layer","isContentEditable","range","createRange","sel","getSelection","selectNode","collapse","removeAllRanges","addRange","one","contextMenu","keyStop","isInput","stopPropagation","key","targetZIndex","getZIndexOfTriggerTarget","style","parentElement","parseInt","keyCode","shiftKey","$selected","find","blur","prop","parent","$parent","itemdata","children","k","String","fromCharCode","toUpperCase","accesskeys","$node","prevItem","$s","$children","$prev","prev","last","$round","itemMouseleave","get","itemMouseenter","$input","focus","nextItem","$next","next","first","focusInput","contextMenuRoot","blurInput","menuMouseenter","hovering","menuMouseleave","itemClick","contextMenuKey","isFunction","callbacks","Object","prototype","hasOwnProperty","update","inputClick","hideMenu","force","focusItem","addClass","join","not","removeClass","filter","blurItem","additionalZValue","$t","zin","$tt","Math","max","indexOf","toLowerCase","zindex","layer","pos","each","createNameNode","item","$name","_accesskey","_beforeAccesskey","append","createTextNode","text","_afterAccesskey","isHtmlName","accesskey","html","name","className","dataAttr","attr","$label","type","ak","aks","val","t","split","keys","charAt","push","splitAccesskey","matched","match","RegExp","commands","hasTypes","inputs","value","selected","prependTo","radio","options","then","processPromises","_icon","substring","prepend","body","resize","nested","domMenu","display","getBoundingClientRect","ceil","minWidth","maxWidth","addBack","hasVisibleItems","$item","iconResult","z-index","opacity","background-color","insertBefore","promise","errorPromise","errorItem","finishPromiseProcess","bind","$menuOffset","winHeight","winScrollTop","menuHeight","overflow-x","overflow-y","inputLabel","node","id","fn","operation","$o","context","isPlainObject","o","$context","_hasContext","menu","ns","itemClickEvent","contextMenuItemObj","contextmenu:focus.contextMenu","contextmenu:blur.contextMenu","contextmenu.contextMenu","mouseenter.contextMenu","mouseleave.contextMenu","contextmenu:hide.contextMenu","prevcommand.contextMenu","nextcommand.contextMenu","$visibleMenu","fromMenu","setInputValues","getInputValues","element","menuChildren","label","nodeName","clone"],"mappings":"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","file":"jquery.contextMenu.min.js","sourcesContent":["/**\n * jQuery contextMenu v2.8.1 - Plugin for simple contextMenu handling\n *\n * Version: v2.8.1\n *\n * Authors: Björn Brala (SWIS.nl), Rodney Rehm, Addy Osmani (patches for FF)\n * Web: http://swisnl.github.io/jQuery-contextMenu/\n *\n * Copyright (c) 2011-2019 SWIS BV and contributors\n *\n * Licensed under\n * MIT License http://www.opensource.org/licenses/mit-license\n *\n * Date: 2019-10-06T14:19:04.506Z\n */\n\n// jscs:disable\n/* jshint ignore:start */\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as anonymous module.\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n // Node / CommonJS\n factory(require('jquery'));\n } else {\n // Browser globals.\n factory(jQuery);\n }\n})(function ($) {\n\n 'use strict';\n\n // TODO: -\n // ARIA stuff: menuitem, menuitemcheckbox und menuitemradio\n // create structure if $.support[htmlCommand || htmlMenuitem] and !opt.disableNative\n\n // determine html5 compatibility\n $.support.htmlMenuitem = ('HTMLMenuItemElement' in window);\n $.support.htmlCommand = ('HTMLCommandElement' in window);\n $.support.eventSelectstart = ('onselectstart' in document.documentElement);\n /* // should the need arise, test for css user-select\n $.support.cssUserSelect = (function(){\n var t = false,\n e = document.createElement('div');\n\n $.each('Moz|Webkit|Khtml|O|ms|Icab|'.split('|'), function(i, prefix) {\n var propCC = prefix + (prefix ? 'U' : 'u') + 'serSelect',\n prop = (prefix ? ('-' + prefix.toLowerCase() + '-') : '') + 'user-select';\n\n e.style.cssText = prop + ': text;';\n if (e.style[propCC] == 'text') {\n t = true;\n return false;\n }\n\n return true;\n });\n\n return t;\n })();\n */\n\n\n if (!$.ui || !$.widget) {\n // duck punch $.cleanData like jQueryUI does to get that remove event\n $.cleanData = (function (orig) {\n return function (elems) {\n var events, elem, i;\n for (i = 0; elems[i] != null; i++) {\n elem = elems[i];\n try {\n // Only trigger remove when necessary to save time\n events = $._data(elem, 'events');\n if (events && events.remove) {\n $(elem).triggerHandler('remove');\n }\n\n // Http://bugs.jquery.com/ticket/8235\n } catch (e) {\n }\n }\n orig(elems);\n };\n })($.cleanData);\n }\n /* jshint ignore:end */\n // jscs:enable\n\n var // currently active contextMenu trigger\n $currentTrigger = null,\n // is contextMenu initialized with at least one menu?\n initialized = false,\n // window handle\n $win = $(window),\n // number of registered menus\n counter = 0,\n // mapping selector to namespace\n namespaces = {},\n // mapping namespace to options\n menus = {},\n // custom command type handlers\n types = {},\n // default values\n defaults = {\n // selector of contextMenu trigger\n selector: null,\n // where to append the menu to\n appendTo: null,\n // method to trigger context menu [\"right\", \"left\", \"hover\"]\n trigger: 'right',\n // hide menu when mouse leaves trigger / menu elements\n autoHide: false,\n // ms to wait before showing a hover-triggered context menu\n delay: 200,\n // flag denoting if a second trigger should simply move (true) or rebuild (false) an open menu\n // as long as the trigger happened on one of the trigger-element's child nodes\n reposition: true,\n // Flag denoting if a second trigger should close the menu, as long as\n // the trigger happened on one of the trigger-element's child nodes.\n // This overrides the reposition option.\n hideOnSecondTrigger: false,\n\n //ability to select submenu\n selectableSubMenu: false,\n\n // Default classname configuration to be able avoid conflicts in frameworks\n classNames: {\n hover: 'context-menu-hover', // Item hover\n disabled: 'context-menu-disabled', // Item disabled\n visible: 'context-menu-visible', // Item visible\n notSelectable: 'context-menu-not-selectable', // Item not selectable\n\n icon: 'context-menu-icon',\n iconEdit: 'context-menu-icon-edit',\n iconCut: 'context-menu-icon-cut',\n iconCopy: 'context-menu-icon-copy',\n iconPaste: 'context-menu-icon-paste',\n iconDelete: 'context-menu-icon-delete',\n iconAdd: 'context-menu-icon-add',\n iconQuit: 'context-menu-icon-quit',\n iconLoadingClass: 'context-menu-icon-loading'\n },\n\n // determine position to show menu at\n determinePosition: function ($menu) {\n // position to the lower middle of the trigger element\n if ($.ui && $.ui.position) {\n // .position() is provided as a jQuery UI utility\n // (...and it won't work on hidden elements)\n $menu.css('display', 'block').position({\n my: 'center top',\n at: 'center bottom',\n of: this,\n offset: '0 5',\n collision: 'fit'\n }).css('display', 'none');\n } else {\n // determine contextMenu position\n var offset = this.offset();\n offset.top += this.outerHeight();\n offset.left += this.outerWidth() / 2 - $menu.outerWidth() / 2;\n $menu.css(offset);\n }\n },\n // position menu\n position: function (opt, x, y) {\n var offset;\n // determine contextMenu position\n if (!x && !y) {\n opt.determinePosition.call(this, opt.$menu);\n return;\n } else if (x === 'maintain' && y === 'maintain') {\n // x and y must not be changed (after re-show on command click)\n offset = opt.$menu.position();\n } else {\n // x and y are given (by mouse event)\n var offsetParentOffset = opt.$menu.offsetParent().offset();\n offset = {top: y - offsetParentOffset.top, left: x -offsetParentOffset.left};\n }\n\n // correct offset if viewport demands it\n var bottom = $win.scrollTop() + $win.height(),\n right = $win.scrollLeft() + $win.width(),\n height = opt.$menu.outerHeight(),\n width = opt.$menu.outerWidth();\n\n if (offset.top + height > bottom) {\n offset.top -= height;\n }\n\n if (offset.top < 0) {\n offset.top = 0;\n }\n\n if (offset.left + width > right) {\n offset.left -= width;\n }\n\n if (offset.left < 0) {\n offset.left = 0;\n }\n\n opt.$menu.css(offset);\n },\n // position the sub-menu\n positionSubmenu: function ($menu) {\n if (typeof $menu === 'undefined') {\n // When user hovers over item (which has sub items) handle.focusItem will call this.\n // but the submenu does not exist yet if opt.items is a promise. just return, will\n // call positionSubmenu after promise is completed.\n return;\n }\n if ($.ui && $.ui.position) {\n // .position() is provided as a jQuery UI utility\n // (...and it won't work on hidden elements)\n $menu.css('display', 'block').position({\n my: 'left top-5',\n at: 'right top',\n of: this,\n collision: 'flipfit fit'\n }).css('display', '');\n } else {\n // determine contextMenu position\n var offset = {\n top: -9,\n left: this.outerWidth() - 5\n };\n $menu.css(offset);\n }\n },\n // offset to add to zIndex\n zIndex: 1,\n // show hide animation settings\n animation: {\n duration: 50,\n show: 'slideDown',\n hide: 'slideUp'\n },\n // events\n events: {\n preShow: $.noop,\n show: $.noop,\n hide: $.noop,\n activated: $.noop\n },\n // default callback\n callback: null,\n // list of contextMenu items\n items: {}\n },\n // mouse position for hover activation\n hoveract = {\n timer: null,\n pageX: null,\n pageY: null\n },\n // determine zIndex\n zindex = function ($t) {\n var zin = 0,\n $tt = $t;\n\n while (true) {\n zin = Math.max(zin, parseInt($tt.css('z-index'), 10) || 0);\n $tt = $tt.parent();\n if (!$tt || !$tt.length || 'html body'.indexOf($tt.prop('nodeName').toLowerCase()) > -1) {\n break;\n }\n }\n return zin;\n },\n // event handlers\n handle = {\n // abort anything\n abortevent: function (e) {\n e.preventDefault();\n e.stopImmediatePropagation();\n },\n // contextmenu show dispatcher\n contextmenu: function (e) {\n var $this = $(this);\n\n //Show browser context-menu when preShow returns false\n if (e.data.events.preShow($this,e) === false) {\n return;\n }\n\n // disable actual context-menu if we are using the right mouse button as the trigger\n if (e.data.trigger === 'right') {\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n\n // abort native-triggered events unless we're triggering on right click\n if ((e.data.trigger !== 'right' && e.data.trigger !== 'demand') && e.originalEvent) {\n return;\n }\n\n // Let the current contextmenu decide if it should show or not based on its own trigger settings\n if (typeof e.mouseButton !== 'undefined' && e.data) {\n if (!(e.data.trigger === 'left' && e.mouseButton === 0) && !(e.data.trigger === 'right' && e.mouseButton === 2)) {\n // Mouse click is not valid.\n return;\n }\n }\n\n // abort event if menu is visible for this trigger\n if ($this.hasClass('context-menu-active')) {\n return;\n }\n\n if (!$this.hasClass('context-menu-disabled')) {\n // theoretically need to fire a show event at \n // http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#context-menus\n // var evt = jQuery.Event(\"show\", { data: data, pageX: e.pageX, pageY: e.pageY, relatedTarget: this });\n // e.data.$menu.trigger(evt);\n\n $currentTrigger = $this;\n if (e.data.build) {\n var built = e.data.build($currentTrigger, e);\n // abort if build() returned false\n if (built === false) {\n return;\n }\n\n // dynamically build menu on invocation\n e.data = $.extend(true, {}, defaults, e.data, built || {});\n\n // abort if there are no items to display\n if (!e.data.items || $.isEmptyObject(e.data.items)) {\n // Note: jQuery captures and ignores errors from event handlers\n if (window.console) {\n (console.error || console.log).call(console, 'No items specified to show in contextMenu');\n }\n\n throw new Error('No Items specified');\n }\n\n // backreference for custom command type creation\n e.data.$trigger = $currentTrigger;\n\n op.create(e.data);\n }\n op.show.call($this, e.data, e.pageX, e.pageY);\n }\n },\n // contextMenu left-click trigger\n click: function (e) {\n e.preventDefault();\n e.stopImmediatePropagation();\n $(this).trigger($.Event('contextmenu', {data: e.data, pageX: e.pageX, pageY: e.pageY}));\n },\n // contextMenu right-click trigger\n mousedown: function (e) {\n // register mouse down\n var $this = $(this);\n\n // hide any previous menus\n if ($currentTrigger && $currentTrigger.length && !$currentTrigger.is($this)) {\n $currentTrigger.data('contextMenu').$menu.trigger('contextmenu:hide');\n }\n\n // activate on right click\n if (e.button === 2) {\n $currentTrigger = $this.data('contextMenuActive', true);\n }\n },\n // contextMenu right-click trigger\n mouseup: function (e) {\n // show menu\n var $this = $(this);\n if ($this.data('contextMenuActive') && $currentTrigger && $currentTrigger.length && $currentTrigger.is($this) && !$this.hasClass('context-menu-disabled')) {\n e.preventDefault();\n e.stopImmediatePropagation();\n $currentTrigger = $this;\n $this.trigger($.Event('contextmenu', {data: e.data, pageX: e.pageX, pageY: e.pageY}));\n }\n\n $this.removeData('contextMenuActive');\n },\n // contextMenu hover trigger\n mouseenter: function (e) {\n var $this = $(this),\n $related = $(e.relatedTarget),\n $document = $(document);\n\n // abort if we're coming from a menu\n if ($related.is('.context-menu-list') || $related.closest('.context-menu-list').length) {\n return;\n }\n\n // abort if a menu is shown\n if ($currentTrigger && $currentTrigger.length) {\n return;\n }\n\n hoveract.pageX = e.pageX;\n hoveract.pageY = e.pageY;\n hoveract.data = e.data;\n $document.on('mousemove.contextMenuShow', handle.mousemove);\n hoveract.timer = setTimeout(function () {\n hoveract.timer = null;\n $document.off('mousemove.contextMenuShow');\n $currentTrigger = $this;\n $this.trigger($.Event('contextmenu', {\n data: hoveract.data,\n pageX: hoveract.pageX,\n pageY: hoveract.pageY\n }));\n }, e.data.delay);\n },\n // contextMenu hover trigger\n mousemove: function (e) {\n hoveract.pageX = e.pageX;\n hoveract.pageY = e.pageY;\n },\n // contextMenu hover trigger\n mouseleave: function (e) {\n // abort if we're leaving for a menu\n var $related = $(e.relatedTarget);\n if ($related.is('.context-menu-list') || $related.closest('.context-menu-list').length) {\n return;\n }\n\n try {\n clearTimeout(hoveract.timer);\n } catch (e) {\n }\n\n hoveract.timer = null;\n },\n // click on layer to hide contextMenu\n layerClick: function (e) {\n var $this = $(this),\n root = $this.data('contextMenuRoot'),\n button = e.button,\n x = e.pageX,\n y = e.pageY,\n fakeClick = x === undefined,\n target,\n offset;\n\n e.preventDefault();\n\n setTimeout(function () {\n // If the click is not real, things break: https://github.com/swisnl/jQuery-contextMenu/issues/132\n if(fakeClick){\n if (root !== null && typeof root !== 'undefined' && root.$menu !== null && typeof root.$menu !== 'undefined') {\n root.$menu.trigger('contextmenu:hide');\n }\n return;\n }\n\n var $window;\n var triggerAction = ((root.trigger === 'left' && button === 0) || (root.trigger === 'right' && button === 2));\n\n // find the element that would've been clicked, wasn't the layer in the way\n if (document.elementFromPoint && root.$layer) {\n root.$layer.hide();\n target = document.elementFromPoint(x - $win.scrollLeft(), y - $win.scrollTop());\n\n // also need to try and focus this element if we're in a contenteditable area,\n // as the layer will prevent the browser mouse action we want\n if (target.isContentEditable) {\n var range = document.createRange(),\n sel = window.getSelection();\n range.selectNode(target);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n $(target).trigger(e);\n root.$layer.show();\n }\n\n if (root.hideOnSecondTrigger && triggerAction && root.$menu !== null && typeof root.$menu !== 'undefined') {\n root.$menu.trigger('contextmenu:hide');\n return;\n }\n\n if (root.reposition && triggerAction) {\n if (document.elementFromPoint) {\n if (root.$trigger.is(target)) {\n root.position.call(root.$trigger, root, x, y);\n return;\n }\n } else {\n offset = root.$trigger.offset();\n $window = $(window);\n // while this looks kinda awful, it's the best way to avoid\n // unnecessarily calculating any positions\n offset.top += $window.scrollTop();\n if (offset.top <= e.pageY) {\n offset.left += $window.scrollLeft();\n if (offset.left <= e.pageX) {\n offset.bottom = offset.top + root.$trigger.outerHeight();\n if (offset.bottom >= e.pageY) {\n offset.right = offset.left + root.$trigger.outerWidth();\n if (offset.right >= e.pageX) {\n // reposition\n root.position.call(root.$trigger, root, x, y);\n return;\n }\n }\n }\n }\n }\n }\n\n if (target && triggerAction) {\n root.$trigger.one('contextmenu:hidden', function () {\n $(target).contextMenu({x: x, y: y, button: button});\n });\n }\n\n if (root !== null && typeof root !== 'undefined' && root.$menu !== null && typeof root.$menu !== 'undefined') {\n root.$menu.trigger('contextmenu:hide');\n }\n }, 50);\n },\n // key handled :hover\n keyStop: function (e, opt) {\n if (!opt.isInput) {\n e.preventDefault();\n }\n\n e.stopPropagation();\n },\n key: function (e) {\n\n var opt = {};\n\n // Only get the data from $currentTrigger if it exists\n if ($currentTrigger) {\n opt = $currentTrigger.data('contextMenu') || {};\n }\n // If the trigger happen on a element that are above the contextmenu do this\n if (typeof opt.zIndex === 'undefined') {\n opt.zIndex = 0;\n }\n var targetZIndex = 0;\n var getZIndexOfTriggerTarget = function (target) {\n if (target.style.zIndex !== '') {\n targetZIndex = target.style.zIndex;\n } else {\n if (target.offsetParent !== null && typeof target.offsetParent !== 'undefined') {\n getZIndexOfTriggerTarget(target.offsetParent);\n }\n else if (target.parentElement !== null && typeof target.parentElement !== 'undefined') {\n getZIndexOfTriggerTarget(target.parentElement);\n }\n }\n };\n getZIndexOfTriggerTarget(e.target);\n // If targetZIndex is heigher then opt.zIndex dont progress any futher.\n // This is used to make sure that if you are using a dialog with a input / textarea / contenteditable div\n // and its above the contextmenu it wont steal keys events\n if (opt.$menu && parseInt(targetZIndex,10) > parseInt(opt.$menu.css(\"zIndex\"),10)) {\n return;\n }\n switch (e.keyCode) {\n case 9:\n case 38: // up\n handle.keyStop(e, opt);\n // if keyCode is [38 (up)] or [9 (tab) with shift]\n if (opt.isInput) {\n if (e.keyCode === 9 && e.shiftKey) {\n e.preventDefault();\n if (opt.$selected) {\n opt.$selected.find('input, textarea, select').blur();\n }\n if (opt.$menu !== null && typeof opt.$menu !== 'undefined') {\n opt.$menu.trigger('prevcommand');\n }\n return;\n } else if (e.keyCode === 38 && opt.$selected.find('input, textarea, select').prop('type') === 'checkbox') {\n // checkboxes don't capture this key\n e.preventDefault();\n return;\n }\n } else if (e.keyCode !== 9 || e.shiftKey) {\n if (opt.$menu !== null && typeof opt.$menu !== 'undefined') {\n opt.$menu.trigger('prevcommand');\n }\n return;\n }\n break;\n // omitting break;\n // case 9: // tab - reached through omitted break;\n case 40: // down\n handle.keyStop(e, opt);\n if (opt.isInput) {\n if (e.keyCode === 9) {\n e.preventDefault();\n if (opt.$selected) {\n opt.$selected.find('input, textarea, select').blur();\n }\n if (opt.$menu !== null && typeof opt.$menu !== 'undefined') {\n opt.$menu.trigger('nextcommand');\n }\n return;\n } else if (e.keyCode === 40 && opt.$selected.find('input, textarea, select').prop('type') === 'checkbox') {\n // checkboxes don't capture this key\n e.preventDefault();\n return;\n }\n } else {\n if (opt.$menu !== null && typeof opt.$menu !== 'undefined') {\n opt.$menu.trigger('nextcommand');\n }\n return;\n }\n break;\n\n case 37: // left\n handle.keyStop(e, opt);\n if (opt.isInput || !opt.$selected || !opt.$selected.length) {\n break;\n }\n\n if (!opt.$selected.parent().hasClass('context-menu-root')) {\n var $parent = opt.$selected.parent().parent();\n opt.$selected.trigger('contextmenu:blur');\n opt.$selected = $parent;\n return;\n }\n break;\n\n case 39: // right\n handle.keyStop(e, opt);\n if (opt.isInput || !opt.$selected || !opt.$selected.length) {\n break;\n }\n\n var itemdata = opt.$selected.data('contextMenu') || {};\n if (itemdata.$menu && opt.$selected.hasClass('context-menu-submenu')) {\n opt.$selected = null;\n itemdata.$selected = null;\n itemdata.$menu.trigger('nextcommand');\n return;\n }\n break;\n\n case 35: // end\n case 36: // home\n if (opt.$selected && opt.$selected.find('input, textarea, select').length) {\n return;\n } else {\n (opt.$selected && opt.$selected.parent() || opt.$menu)\n .children(':not(.' + opt.classNames.disabled + ', .' + opt.classNames.notSelectable + ')')[e.keyCode === 36 ? 'first' : 'last']()\n .trigger('contextmenu:focus');\n e.preventDefault();\n return;\n }\n break;\n\n case 13: // enter\n handle.keyStop(e, opt);\n if (opt.isInput) {\n if (opt.$selected && !opt.$selected.is('textarea, select')) {\n e.preventDefault();\n return;\n }\n break;\n }\n if (typeof opt.$selected !== 'undefined' && opt.$selected !== null) {\n opt.$selected.trigger('mouseup');\n }\n return;\n\n case 32: // space\n case 33: // page up\n case 34: // page down\n // prevent browser from scrolling down while menu is visible\n handle.keyStop(e, opt);\n return;\n\n case 27: // esc\n handle.keyStop(e, opt);\n if (opt.$menu !== null && typeof opt.$menu !== 'undefined') {\n opt.$menu.trigger('contextmenu:hide');\n }\n return;\n\n default: // 0-9, a-z\n var k = (String.fromCharCode(e.keyCode)).toUpperCase();\n if (opt.accesskeys && opt.accesskeys[k]) {\n // according to the specs accesskeys must be invoked immediately\n opt.accesskeys[k].$node.trigger(opt.accesskeys[k].$menu ? 'contextmenu:focus' : 'mouseup');\n return;\n }\n break;\n }\n // pass event to selected item,\n // stop propagation to avoid endless recursion\n e.stopPropagation();\n if (typeof opt.$selected !== 'undefined' && opt.$selected !== null) {\n opt.$selected.trigger(e);\n }\n },\n // select previous possible command in menu\n prevItem: function (e) {\n e.stopPropagation();\n var opt = $(this).data('contextMenu') || {};\n var root = $(this).data('contextMenuRoot') || {};\n\n // obtain currently selected menu\n if (opt.$selected) {\n var $s = opt.$selected;\n opt = opt.$selected.parent().data('contextMenu') || {};\n opt.$selected = $s;\n }\n\n var $children = opt.$menu.children(),\n $prev = !opt.$selected || !opt.$selected.prev().length ? $children.last() : opt.$selected.prev(),\n $round = $prev;\n\n // skip disabled or hidden elements\n while ($prev.hasClass(root.classNames.disabled) || $prev.hasClass(root.classNames.notSelectable) || $prev.is(':hidden')) {\n if ($prev.prev().length) {\n $prev = $prev.prev();\n } else {\n $prev = $children.last();\n }\n if ($prev.is($round)) {\n // break endless loop\n return;\n }\n }\n\n // leave current\n if (opt.$selected) {\n handle.itemMouseleave.call(opt.$selected.get(0), e);\n }\n\n // activate next\n handle.itemMouseenter.call($prev.get(0), e);\n\n // focus input\n var $input = $prev.find('input, textarea, select');\n if ($input.length) {\n $input.focus();\n }\n },\n // select next possible command in menu\n nextItem: function (e) {\n e.stopPropagation();\n var opt = $(this).data('contextMenu') || {};\n var root = $(this).data('contextMenuRoot') || {};\n\n // obtain currently selected menu\n if (opt.$selected) {\n var $s = opt.$selected;\n opt = opt.$selected.parent().data('contextMenu') || {};\n opt.$selected = $s;\n }\n\n var $children = opt.$menu.children(),\n $next = !opt.$selected || !opt.$selected.next().length ? $children.first() : opt.$selected.next(),\n $round = $next;\n\n // skip disabled\n while ($next.hasClass(root.classNames.disabled) || $next.hasClass(root.classNames.notSelectable) || $next.is(':hidden')) {\n if ($next.next().length) {\n $next = $next.next();\n } else {\n $next = $children.first();\n }\n if ($next.is($round)) {\n // break endless loop\n return;\n }\n }\n\n // leave current\n if (opt.$selected) {\n handle.itemMouseleave.call(opt.$selected.get(0), e);\n }\n\n // activate next\n handle.itemMouseenter.call($next.get(0), e);\n\n // focus input\n var $input = $next.find('input, textarea, select');\n if ($input.length) {\n $input.focus();\n }\n },\n // flag that we're inside an input so the key handler can act accordingly\n focusInput: function () {\n var $this = $(this).closest('.context-menu-item'),\n data = $this.data(),\n opt = data.contextMenu,\n root = data.contextMenuRoot;\n\n root.$selected = opt.$selected = $this;\n root.isInput = opt.isInput = true;\n },\n // flag that we're inside an input so the key handler can act accordingly\n blurInput: function () {\n var $this = $(this).closest('.context-menu-item'),\n data = $this.data(),\n opt = data.contextMenu,\n root = data.contextMenuRoot;\n\n root.isInput = opt.isInput = false;\n },\n // :hover on menu\n menuMouseenter: function () {\n var root = $(this).data().contextMenuRoot;\n root.hovering = true;\n },\n // :hover on menu\n menuMouseleave: function (e) {\n var root = $(this).data().contextMenuRoot;\n if (root.$layer && root.$layer.is(e.relatedTarget)) {\n root.hovering = false;\n }\n },\n // :hover done manually so key handling is possible\n itemMouseenter: function (e) {\n var $this = $(this),\n data = $this.data(),\n opt = data.contextMenu,\n root = data.contextMenuRoot;\n\n root.hovering = true;\n\n // abort if we're re-entering\n if (e && root.$layer && root.$layer.is(e.relatedTarget)) {\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n\n // make sure only one item is selected\n (opt.$menu ? opt : root).$menu\n .children('.' + root.classNames.hover).trigger('contextmenu:blur')\n .children('.hover').trigger('contextmenu:blur');\n\n if ($this.hasClass(root.classNames.disabled) || $this.hasClass(root.classNames.notSelectable)) {\n opt.$selected = null;\n return;\n }\n\n\n $this.trigger('contextmenu:focus');\n },\n // :hover done manually so key handling is possible\n itemMouseleave: function (e) {\n var $this = $(this),\n data = $this.data(),\n opt = data.contextMenu,\n root = data.contextMenuRoot;\n\n if (root !== opt && root.$layer && root.$layer.is(e.relatedTarget)) {\n if (typeof root.$selected !== 'undefined' && root.$selected !== null) {\n root.$selected.trigger('contextmenu:blur');\n }\n e.preventDefault();\n e.stopImmediatePropagation();\n root.$selected = opt.$selected = opt.$node;\n return;\n }\n\n if(opt && opt.$menu && opt.$menu.hasClass('context-menu-visible')){\n return;\n }\n\n $this.trigger('contextmenu:blur');\n },\n // contextMenu item click\n itemClick: function (e) {\n var $this = $(this),\n data = $this.data(),\n opt = data.contextMenu,\n root = data.contextMenuRoot,\n key = data.contextMenuKey,\n callback;\n\n // abort if the key is unknown or disabled or is a menu\n if (!opt.items[key] || $this.is('.' + root.classNames.disabled + ', .context-menu-separator, .' + root.classNames.notSelectable) || ($this.is('.context-menu-submenu') && root.selectableSubMenu === false )) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n\n if ($.isFunction(opt.callbacks[key]) && Object.prototype.hasOwnProperty.call(opt.callbacks, key)) {\n // item-specific callback\n callback = opt.callbacks[key];\n } else if ($.isFunction(root.callback)) {\n // default callback\n callback = root.callback;\n } else {\n // no callback, no action\n return;\n }\n\n // hide menu if callback doesn't stop that\n if (callback.call(root.$trigger, key, root, e) !== false) {\n root.$menu.trigger('contextmenu:hide');\n } else if (root.$menu.parent().length) {\n op.update.call(root.$trigger, root);\n }\n },\n // ignore click events on input elements\n inputClick: function (e) {\n e.stopImmediatePropagation();\n },\n // hide \n hideMenu: function (e, data) {\n var root = $(this).data('contextMenuRoot');\n op.hide.call(root.$trigger, root, data && data.force);\n },\n // focus \n focusItem: function (e) {\n e.stopPropagation();\n var $this = $(this),\n data = $this.data(),\n opt = data.contextMenu,\n root = data.contextMenuRoot;\n\n if ($this.hasClass(root.classNames.disabled) || $this.hasClass(root.classNames.notSelectable)) {\n return;\n }\n\n $this\n .addClass([root.classNames.hover, root.classNames.visible].join(' '))\n // select other items and included items\n .parent().find('.context-menu-item').not($this)\n .removeClass(root.classNames.visible)\n .filter('.' + root.classNames.hover)\n .trigger('contextmenu:blur');\n\n // remember selected\n opt.$selected = root.$selected = $this;\n\n\n if(opt && opt.$node && opt.$node.hasClass('context-menu-submenu')){\n opt.$node.addClass(root.classNames.hover);\n }\n\n // position sub-menu - do after show so dumb $.ui.position can keep up\n if (opt.$node) {\n root.positionSubmenu.call(opt.$node, opt.$menu);\n }\n },\n // blur \n blurItem: function (e) {\n e.stopPropagation();\n var $this = $(this),\n data = $this.data(),\n opt = data.contextMenu,\n root = data.contextMenuRoot;\n\n if (opt.autoHide) { // for tablets and touch screens this needs to remain\n $this.removeClass(root.classNames.visible);\n }\n $this.removeClass(root.classNames.hover);\n opt.$selected = null;\n }\n },\n // operations\n op = {\n show: function (opt, x, y) {\n var $trigger = $(this),\n css = {};\n\n // hide any open menus\n $('#context-menu-layer').trigger('mousedown');\n\n // backreference for callbacks\n opt.$trigger = $trigger;\n\n // show event\n if (opt.events.show.call($trigger, opt) === false) {\n $currentTrigger = null;\n return;\n }\n\n // create or update context menu\n var hasVisibleItems = op.update.call($trigger, opt);\n if (hasVisibleItems === false) {\n $currentTrigger = null;\n return;\n }\n\n // position menu\n opt.position.call($trigger, opt, x, y);\n\n // make sure we're in front\n if (opt.zIndex) {\n var additionalZValue = opt.zIndex;\n // If opt.zIndex is a function, call the function to get the right zIndex.\n if (typeof opt.zIndex === 'function') {\n additionalZValue = opt.zIndex.call($trigger, opt);\n }\n css.zIndex = zindex($trigger) + additionalZValue;\n }\n\n // add layer\n op.layer.call(opt.$menu, opt, css.zIndex);\n\n // adjust sub-menu zIndexes\n opt.$menu.find('ul').css('zIndex', css.zIndex + 1);\n\n // position and show context menu\n opt.$menu.css(css)[opt.animation.show](opt.animation.duration, function () {\n $trigger.trigger('contextmenu:visible');\n\n op.activated(opt);\n opt.events.activated(opt);\n });\n // make options available and set state\n $trigger\n .data('contextMenu', opt)\n .addClass('context-menu-active');\n\n // register key handler\n $(document).off('keydown.contextMenu').on('keydown.contextMenu', handle.key);\n // register autoHide handler\n if (opt.autoHide) {\n // mouse position handler\n $(document).on('mousemove.contextMenuAutoHide', function (e) {\n // need to capture the offset on mousemove,\n // since the page might've been scrolled since activation\n var pos = $trigger.offset();\n pos.right = pos.left + $trigger.outerWidth();\n pos.bottom = pos.top + $trigger.outerHeight();\n\n if (opt.$layer && !opt.hovering && (!(e.pageX >= pos.left && e.pageX <= pos.right) || !(e.pageY >= pos.top && e.pageY <= pos.bottom))) {\n /* Additional hover check after short time, you might just miss the edge of the menu */\n setTimeout(function () {\n if (!opt.hovering && opt.$menu !== null && typeof opt.$menu !== 'undefined') {\n opt.$menu.trigger('contextmenu:hide');\n }\n }, 50);\n }\n });\n }\n },\n hide: function (opt, force) {\n var $trigger = $(this);\n if (!opt) {\n opt = $trigger.data('contextMenu') || {};\n }\n\n // hide event\n if (!force && opt.events && opt.events.hide.call($trigger, opt) === false) {\n return;\n }\n\n // remove options and revert state\n $trigger\n .removeData('contextMenu')\n .removeClass('context-menu-active');\n\n if (opt.$layer) {\n // keep layer for a bit so the contextmenu event can be aborted properly by opera\n setTimeout((function ($layer) {\n return function () {\n $layer.remove();\n };\n })(opt.$layer), 10);\n\n try {\n delete opt.$layer;\n } catch (e) {\n opt.$layer = null;\n }\n }\n\n // remove handle\n $currentTrigger = null;\n // remove selected\n opt.$menu.find('.' + opt.classNames.hover).trigger('contextmenu:blur');\n opt.$selected = null;\n // collapse all submenus\n opt.$menu.find('.' + opt.classNames.visible).removeClass(opt.classNames.visible);\n // unregister key and mouse handlers\n // $(document).off('.contextMenuAutoHide keydown.contextMenu'); // http://bugs.jquery.com/ticket/10705\n $(document).off('.contextMenuAutoHide').off('keydown.contextMenu');\n // hide menu\n if (opt.$menu) {\n opt.$menu[opt.animation.hide](opt.animation.duration, function () {\n // tear down dynamically built menu after animation is completed.\n if (opt.build) {\n opt.$menu.remove();\n $.each(opt, function (key) {\n switch (key) {\n case 'ns':\n case 'selector':\n case 'build':\n case 'trigger':\n return true;\n\n default:\n opt[key] = undefined;\n try {\n delete opt[key];\n } catch (e) {\n }\n return true;\n }\n });\n }\n\n setTimeout(function () {\n $trigger.trigger('contextmenu:hidden');\n }, 10);\n });\n }\n },\n create: function (opt, root) {\n if (typeof root === 'undefined') {\n root = opt;\n }\n\n // create contextMenu\n opt.$menu = $('
    ').addClass(opt.className || '').data({\n 'contextMenu': opt,\n 'contextMenuRoot': root\n });\n if(opt.dataAttr){\n $.each(opt.dataAttr, function (key, item) {\n opt.$menu.attr('data-' + opt.key, item);\n });\n }\n\n $.each(['callbacks', 'commands', 'inputs'], function (i, k) {\n opt[k] = {};\n if (!root[k]) {\n root[k] = {};\n }\n });\n\n if (!root.accesskeys) {\n root.accesskeys = {};\n }\n\n function createNameNode(item) {\n var $name = $('');\n if (item._accesskey) {\n if (item._beforeAccesskey) {\n $name.append(document.createTextNode(item._beforeAccesskey));\n }\n $('')\n .addClass('context-menu-accesskey')\n .text(item._accesskey)\n .appendTo($name);\n if (item._afterAccesskey) {\n $name.append(document.createTextNode(item._afterAccesskey));\n }\n } else {\n if (item.isHtmlName) {\n // restrict use with access keys\n if (typeof item.accesskey !== 'undefined') {\n throw new Error('accesskeys are not compatible with HTML names and cannot be used together in the same item');\n }\n $name.html(item.name);\n } else {\n $name.text(item.name);\n }\n }\n return $name;\n }\n\n // create contextMenu items\n $.each(opt.items, function (key, item) {\n var $t = $('
  • ').addClass(item.className || ''),\n $label = null,\n $input = null;\n\n // iOS needs to see a click-event bound to an element to actually\n // have the TouchEvents infrastructure trigger the click event\n $t.on('click', $.noop);\n\n // Make old school string seperator a real item so checks wont be\n // akward later.\n // And normalize 'cm_separator' into 'cm_seperator'.\n if (typeof item === 'string' || item.type === 'cm_separator') {\n item = {type: 'cm_seperator'};\n }\n\n item.$node = $t.data({\n 'contextMenu': opt,\n 'contextMenuRoot': root,\n 'contextMenuKey': key\n });\n\n // register accesskey\n // NOTE: the accesskey attribute should be applicable to any element, but Safari5 and Chrome13 still can't do that\n if (typeof item.accesskey !== 'undefined') {\n var aks = splitAccesskey(item.accesskey);\n for (var i = 0, ak; ak = aks[i]; i++) {\n if (!root.accesskeys[ak]) {\n root.accesskeys[ak] = item;\n var matched = item.name.match(new RegExp('^(.*?)(' + ak + ')(.*)$', 'i'));\n if (matched) {\n item._beforeAccesskey = matched[1];\n item._accesskey = matched[2];\n item._afterAccesskey = matched[3];\n }\n break;\n }\n }\n }\n\n if (item.type && types[item.type]) {\n // run custom type handler\n types[item.type].call($t, item, opt, root);\n // register commands\n $.each([opt, root], function (i, k) {\n k.commands[key] = item;\n // Overwrite only if undefined or the item is appended to the root. This so it\n // doesn't overwrite callbacks of root elements if the name is the same.\n if ($.isFunction(item.callback) && (typeof k.callbacks[key] === 'undefined' || typeof opt.type === 'undefined')) {\n k.callbacks[key] = item.callback;\n }\n });\n } else {\n // add label for input\n if (item.type === 'cm_seperator') {\n $t.addClass('context-menu-separator ' + root.classNames.notSelectable);\n } else if (item.type === 'html') {\n $t.addClass('context-menu-html ' + root.classNames.notSelectable);\n } else if (item.type !== 'sub' && item.type) {\n $label = $('').appendTo($t);\n createNameNode(item).appendTo($label);\n\n $t.addClass('context-menu-input');\n opt.hasTypes = true;\n $.each([opt, root], function (i, k) {\n k.commands[key] = item;\n k.inputs[key] = item;\n });\n } else if (item.items) {\n item.type = 'sub';\n }\n\n switch (item.type) {\n case 'cm_seperator':\n break;\n\n case 'text':\n $input = $('')\n .attr('name', 'context-menu-input-' + key)\n .val(item.value || '')\n .appendTo($label);\n break;\n\n case 'textarea':\n $input = $('')\n .attr('name', 'context-menu-input-' + key)\n .val(item.value || '')\n .appendTo($label);\n\n if (item.height) {\n $input.height(item.height);\n }\n break;\n\n case 'checkbox':\n $input = $('')\n .attr('name', 'context-menu-input-' + key)\n .val(item.value || '')\n .prop('checked', !!item.selected)\n .prependTo($label);\n break;\n\n case 'radio':\n $input = $('')\n .attr('name', 'context-menu-input-' + item.radio)\n .val(item.value || '')\n .prop('checked', !!item.selected)\n .prependTo($label);\n break;\n\n case 'select':\n $input = $('')\n .attr('name', 'context-menu-input-' + key)\n .appendTo($label);\n if (item.options) {\n $.each(item.options, function (value, text) {\n $('').val(value).text(text).appendTo($input);\n });\n $input.val(item.selected);\n }\n break;\n\n case 'sub':\n createNameNode(item).appendTo($t);\n item.appendTo = item.$node;\n $t.data('contextMenu', item).addClass('context-menu-submenu');\n item.callback = null;\n\n // If item contains items, and this is a promise, we should create it later\n // check if subitems is of type promise. If it is a promise we need to create\n // it later, after promise has been resolved.\n if ('function' === typeof item.items.then) {\n // probably a promise, process it, when completed it will create the sub menu's.\n op.processPromises(item, root, item.items);\n } else {\n // normal submenu.\n op.create(item, root);\n }\n break;\n\n case 'html':\n $(item.html).appendTo($t);\n break;\n\n default:\n $.each([opt, root], function (i, k) {\n k.commands[key] = item;\n // Overwrite only if undefined or the item is appended to the root. This so it\n // doesn't overwrite callbacks of root elements if the name is the same.\n if ($.isFunction(item.callback) && (typeof k.callbacks[key] === 'undefined' || typeof opt.type === 'undefined')) {\n k.callbacks[key] = item.callback;\n }\n });\n createNameNode(item).appendTo($t);\n break;\n }\n\n // disable key listener in \n if (item.type && item.type !== 'sub' && item.type !== 'html' && item.type !== 'cm_seperator') {\n $input\n .on('focus', handle.focusInput)\n .on('blur', handle.blurInput);\n\n if (item.events) {\n $input.on(item.events, opt);\n }\n }\n\n // add icons\n if (item.icon) {\n if ($.isFunction(item.icon)) {\n item._icon = item.icon.call(this, this, $t, key, item);\n } else {\n if (typeof(item.icon) === 'string' && (\n item.icon.substring(0, 4) === 'fab '\n || item.icon.substring(0, 4) === 'fas '\n || item.icon.substring(0, 4) === 'fad '\n || item.icon.substring(0, 4) === 'far '\n || item.icon.substring(0, 4) === 'fal ')\n ) {\n // to enable font awesome\n $t.addClass(root.classNames.icon + ' ' + root.classNames.icon + '--fa5');\n item._icon = $('');\n } else if (typeof(item.icon) === 'string' && item.icon.substring(0, 3) === 'fa-') {\n item._icon = root.classNames.icon + ' ' + root.classNames.icon + '--fa fa ' + item.icon;\n } else {\n item._icon = root.classNames.icon + ' ' + root.classNames.icon + '-' + item.icon;\n }\n }\n\n if(typeof(item._icon) === \"string\"){\n $t.addClass(item._icon);\n } else {\n $t.prepend(item._icon);\n }\n }\n }\n\n // cache contained elements\n item.$input = $input;\n item.$label = $label;\n\n // attach item to menu\n $t.appendTo(opt.$menu);\n\n // Disable text selection\n if (!opt.hasTypes && $.support.eventSelectstart) {\n // browsers support user-select: none,\n // IE has a special event for text-selection\n // browsers supporting neither will not be preventing text-selection\n $t.on('selectstart.disableTextSelect', handle.abortevent);\n }\n });\n // attach contextMenu to (to bypass any possible overflow:hidden issues on parents of the trigger element)\n if (!opt.$node) {\n opt.$menu.css('display', 'none').addClass('context-menu-root');\n }\n opt.$menu.appendTo(opt.appendTo || document.body);\n },\n resize: function ($menu, nested) {\n var domMenu;\n // determine widths of submenus, as CSS won't grow them automatically\n // position:absolute within position:absolute; min-width:100; max-width:200; results in width: 100;\n // kinda sucks hard...\n\n // determine width of absolutely positioned element\n $menu.css({position: 'absolute', display: 'block'});\n // don't apply yet, because that would break nested elements' widths\n $menu.data('width',\n (domMenu = $menu.get(0)).getBoundingClientRect ?\n Math.ceil(domMenu.getBoundingClientRect().width) :\n $menu.outerWidth() + 1); // outerWidth() returns rounded pixels\n // reset styles so they allow nested elements to grow/shrink naturally\n $menu.css({\n position: 'static',\n minWidth: '0px',\n maxWidth: '100000px'\n });\n // identify width of nested menus\n $menu.find('> li > ul').each(function () {\n op.resize($(this), true);\n });\n // reset and apply changes in the end because nested\n // elements' widths wouldn't be calculatable otherwise\n if (!nested) {\n $menu.find('ul').addBack().css({\n position: '',\n display: '',\n minWidth: '',\n maxWidth: ''\n }).outerWidth(function () {\n return $(this).data('width');\n });\n }\n },\n update: function (opt, root) {\n var $trigger = this;\n if (typeof root === 'undefined') {\n root = opt;\n op.resize(opt.$menu);\n }\n\n var hasVisibleItems = false;\n\n // re-check disabled for each item\n opt.$menu.children().each(function () {\n var $item = $(this),\n key = $item.data('contextMenuKey'),\n item = opt.items[key],\n disabled = ($.isFunction(item.disabled) && item.disabled.call($trigger, key, root)) || item.disabled === true,\n visible;\n if ($.isFunction(item.visible)) {\n visible = item.visible.call($trigger, key, root);\n } else if (typeof item.visible !== 'undefined') {\n visible = item.visible === true;\n } else {\n visible = true;\n }\n\n if (visible) {\n hasVisibleItems = true;\n }\n\n $item[visible ? 'show' : 'hide']();\n\n // dis- / enable item\n $item[disabled ? 'addClass' : 'removeClass'](root.classNames.disabled);\n\n if ($.isFunction(item.icon)) {\n $item.removeClass(item._icon);\n var iconResult = item.icon.call(this, $trigger, $item, key, item);\n if(typeof(iconResult) === \"string\"){\n $item.addClass(iconResult);\n } else {\n $item.prepend(iconResult);\n }\n }\n\n if (item.type) {\n // dis- / enable input elements\n $item.find('input, select, textarea').prop('disabled', disabled);\n\n // update input states\n switch (item.type) {\n case 'text':\n case 'textarea':\n item.$input.val(item.value || '');\n break;\n\n case 'checkbox':\n case 'radio':\n item.$input.val(item.value || '').prop('checked', !!item.selected);\n break;\n\n case 'select':\n item.$input.val((item.selected === 0 ? \"0\" : item.selected) || '');\n break;\n }\n }\n\n if (item.$menu) {\n // update sub-menu\n var subMenuHasVisibleItems = op.update.call($trigger, item, root);\n if (subMenuHasVisibleItems) {\n hasVisibleItems = true;\n }\n }\n });\n return hasVisibleItems;\n },\n layer: function (opt, zIndex) {\n // add transparent layer for click area\n // filter and background for Internet Explorer, Issue #23\n var $layer = opt.$layer = $('
    ')\n .css({\n height: $win.height(),\n width: $win.width(),\n display: 'block',\n position: 'fixed',\n 'z-index': zIndex,\n top: 0,\n left: 0,\n opacity: 0,\n filter: 'alpha(opacity=0)',\n 'background-color': '#000'\n })\n .data('contextMenuRoot', opt)\n .insertBefore(this)\n .on('contextmenu', handle.abortevent)\n .on('mousedown', handle.layerClick);\n\n // IE6 doesn't know position:fixed;\n if (typeof document.body.style.maxWidth === 'undefined') { // IE6 doesn't support maxWidth\n $layer.css({\n 'position': 'absolute',\n 'height': $(document).height()\n });\n }\n\n return $layer;\n },\n processPromises: function (opt, root, promise) {\n // Start\n opt.$node.addClass(root.classNames.iconLoadingClass);\n\n function completedPromise(opt, root, items) {\n // Completed promise (dev called promise.resolve). We now have a list of items which can\n // be used to create the rest of the context menu.\n if (typeof items === 'undefined') {\n // Null result, dev should have checked\n errorPromise(undefined);//own error object\n }\n finishPromiseProcess(opt, root, items);\n }\n\n function errorPromise(opt, root, errorItem) {\n // User called promise.reject() with an error item, if not, provide own error item.\n if (typeof errorItem === 'undefined') {\n errorItem = {\n \"error\": {\n name: \"No items and no error item\",\n icon: \"context-menu-icon context-menu-icon-quit\"\n }\n };\n if (window.console) {\n (console.error || console.log).call(console, 'When you reject a promise, provide an \"items\" object, equal to normal sub-menu items');\n }\n } else if (typeof errorItem === 'string') {\n errorItem = {\"error\": {name: errorItem}};\n }\n finishPromiseProcess(opt, root, errorItem);\n }\n\n function finishPromiseProcess(opt, root, items) {\n if (typeof root.$menu === 'undefined' || !root.$menu.is(':visible')) {\n return;\n }\n opt.$node.removeClass(root.classNames.iconLoadingClass);\n opt.items = items;\n op.create(opt, root, true); // Create submenu\n op.update(opt, root); // Correctly update position if user is already hovered over menu item\n root.positionSubmenu.call(opt.$node, opt.$menu); // positionSubmenu, will only do anything if user already hovered over menu item that just got new subitems.\n }\n\n // Wait for promise completion. .then(success, error, notify) (we don't track notify). Bind the opt\n // and root to avoid scope problems\n promise.then(completedPromise.bind(this, opt, root), errorPromise.bind(this, opt, root));\n },\n // operation that will run after contextMenu showed on screen\n activated: function(opt){\n var $menu = opt.$menu;\n var $menuOffset = $menu.offset();\n var winHeight = $(window).height();\n var winScrollTop = $(window).scrollTop();\n var menuHeight = $menu.height();\n if(menuHeight > winHeight){\n $menu.css({\n 'height' : winHeight + 'px',\n 'overflow-x': 'hidden',\n 'overflow-y': 'auto',\n 'top': winScrollTop + 'px'\n });\n } else if(($menuOffset.top < winScrollTop) || ($menuOffset.top + menuHeight > winScrollTop + winHeight)){\n $menu.css({\n 'top': winScrollTop + 'px'\n });\n }\n }\n };\n\n // split accesskey according to http://www.whatwg.org/specs/web-apps/current-work/multipage/editing.html#assigned-access-key\n function splitAccesskey(val) {\n var t = val.split(/\\s+/);\n var keys = [];\n\n for (var i = 0, k; k = t[i]; i++) {\n k = k.charAt(0).toUpperCase(); // first character only\n // theoretically non-accessible characters should be ignored, but different systems, different keyboard layouts, ... screw it.\n // a map to look up already used access keys would be nice\n keys.push(k);\n }\n\n return keys;\n }\n\n// handle contextMenu triggers\n $.fn.contextMenu = function (operation) {\n var $t = this, $o = operation;\n if (this.length > 0) { // this is not a build on demand menu\n if (typeof operation === 'undefined') {\n this.first().trigger('contextmenu');\n } else if (typeof operation.x !== 'undefined' && typeof operation.y !== 'undefined') {\n this.first().trigger($.Event('contextmenu', {\n pageX: operation.x,\n pageY: operation.y,\n mouseButton: operation.button\n }));\n } else if (operation === 'hide') {\n var $menu = this.first().data('contextMenu') ? this.first().data('contextMenu').$menu : null;\n if ($menu) {\n $menu.trigger('contextmenu:hide');\n }\n } else if (operation === 'destroy') {\n $.contextMenu('destroy', {context: this});\n } else if ($.isPlainObject(operation)) {\n operation.context = this;\n $.contextMenu('create', operation);\n } else if (operation) {\n this.removeClass('context-menu-disabled');\n } else if (!operation) {\n this.addClass('context-menu-disabled');\n }\n } else {\n $.each(menus, function () {\n if (this.selector === $t.selector) {\n $o.data = this;\n\n $.extend($o.data, {trigger: 'demand'});\n }\n });\n\n handle.contextmenu.call($o.target, $o);\n }\n\n return this;\n };\n\n // manage contextMenu instances\n $.contextMenu = function (operation, options) {\n if (typeof operation !== 'string') {\n options = operation;\n operation = 'create';\n }\n\n if (typeof options === 'string') {\n options = {selector: options};\n } else if (typeof options === 'undefined') {\n options = {};\n }\n\n // merge with default options\n var o = $.extend(true, {}, defaults, options || {});\n var $document = $(document);\n var $context = $document;\n var _hasContext = false;\n\n if (!o.context || !o.context.length) {\n o.context = document;\n } else {\n // you never know what they throw at you...\n $context = $(o.context).first();\n o.context = $context.get(0);\n _hasContext = !$(o.context).is(document);\n }\n\n switch (operation) {\n\n case 'update':\n // Updates visibility and such\n if(_hasContext){\n op.update($context);\n } else {\n for(var menu in menus){\n if(menus.hasOwnProperty(menu)){\n op.update(menus[menu]);\n }\n }\n }\n break;\n\n case 'create':\n // no selector no joy\n if (!o.selector) {\n throw new Error('No selector specified');\n }\n // make sure internal classes are not bound to\n if (o.selector.match(/.context-menu-(list|item|input)($|\\s)/)) {\n throw new Error('Cannot bind to selector \"' + o.selector + '\" as it contains a reserved className');\n }\n if (!o.build && (!o.items || $.isEmptyObject(o.items))) {\n throw new Error('No Items specified');\n }\n counter++;\n o.ns = '.contextMenu' + counter;\n if (!_hasContext) {\n namespaces[o.selector] = o.ns;\n }\n menus[o.ns] = o;\n\n // default to right click\n if (!o.trigger) {\n o.trigger = 'right';\n }\n\n if (!initialized) {\n var itemClick = o.itemClickEvent === 'click' ? 'click.contextMenu' : 'mouseup.contextMenu';\n var contextMenuItemObj = {\n // 'mouseup.contextMenu': handle.itemClick,\n // 'click.contextMenu': handle.itemClick,\n 'contextmenu:focus.contextMenu': handle.focusItem,\n 'contextmenu:blur.contextMenu': handle.blurItem,\n 'contextmenu.contextMenu': handle.abortevent,\n 'mouseenter.contextMenu': handle.itemMouseenter,\n 'mouseleave.contextMenu': handle.itemMouseleave\n };\n contextMenuItemObj[itemClick] = handle.itemClick;\n // make sure item click is registered first\n $document\n .on({\n 'contextmenu:hide.contextMenu': handle.hideMenu,\n 'prevcommand.contextMenu': handle.prevItem,\n 'nextcommand.contextMenu': handle.nextItem,\n 'contextmenu.contextMenu': handle.abortevent,\n 'mouseenter.contextMenu': handle.menuMouseenter,\n 'mouseleave.contextMenu': handle.menuMouseleave\n }, '.context-menu-list')\n .on('mouseup.contextMenu', '.context-menu-input', handle.inputClick)\n .on(contextMenuItemObj, '.context-menu-item');\n\n initialized = true;\n }\n\n // engage native contextmenu event\n $context\n .on('contextmenu' + o.ns, o.selector, o, handle.contextmenu);\n\n if (_hasContext) {\n // add remove hook, just in case\n $context.on('remove' + o.ns, function () {\n $(this).contextMenu('destroy');\n });\n }\n\n switch (o.trigger) {\n case 'hover':\n $context\n .on('mouseenter' + o.ns, o.selector, o, handle.mouseenter)\n .on('mouseleave' + o.ns, o.selector, o, handle.mouseleave);\n break;\n\n case 'left':\n $context.on('click' + o.ns, o.selector, o, handle.click);\n break;\n\t\t\t\t case 'touchstart':\n $context.on('touchstart' + o.ns, o.selector, o, handle.click);\n break;\n /*\n default:\n // http://www.quirksmode.org/dom/events/contextmenu.html\n $document\n .on('mousedown' + o.ns, o.selector, o, handle.mousedown)\n .on('mouseup' + o.ns, o.selector, o, handle.mouseup);\n break;\n */\n }\n\n // create menu\n if (!o.build) {\n op.create(o);\n }\n break;\n\n case 'destroy':\n var $visibleMenu;\n if (_hasContext) {\n // get proper options\n var context = o.context;\n $.each(menus, function (ns, o) {\n\n if (!o) {\n return true;\n }\n\n // Is this menu equest to the context called from\n if (!$(context).is(o.selector)) {\n return true;\n }\n\n $visibleMenu = $('.context-menu-list').filter(':visible');\n if ($visibleMenu.length && $visibleMenu.data().contextMenuRoot.$trigger.is($(o.context).find(o.selector))) {\n $visibleMenu.trigger('contextmenu:hide', {force: true});\n }\n\n try {\n if (menus[o.ns].$menu) {\n menus[o.ns].$menu.remove();\n }\n\n delete menus[o.ns];\n } catch (e) {\n menus[o.ns] = null;\n }\n\n $(o.context).off(o.ns);\n\n return true;\n });\n } else if (!o.selector) {\n $document.off('.contextMenu .contextMenuAutoHide');\n $.each(menus, function (ns, o) {\n $(o.context).off(o.ns);\n });\n\n namespaces = {};\n menus = {};\n counter = 0;\n initialized = false;\n\n $('#context-menu-layer, .context-menu-list').remove();\n } else if (namespaces[o.selector]) {\n $visibleMenu = $('.context-menu-list').filter(':visible');\n if ($visibleMenu.length && $visibleMenu.data().contextMenuRoot.$trigger.is(o.selector)) {\n $visibleMenu.trigger('contextmenu:hide', {force: true});\n }\n\n try {\n if (menus[namespaces[o.selector]].$menu) {\n menus[namespaces[o.selector]].$menu.remove();\n }\n\n delete menus[namespaces[o.selector]];\n } catch (e) {\n menus[namespaces[o.selector]] = null;\n }\n\n $document.off(namespaces[o.selector]);\n }\n break;\n\n case 'html5':\n // if and are not handled by the browser,\n // or options was a bool true,\n // initialize $.contextMenu for them\n if ((!$.support.htmlCommand && !$.support.htmlMenuitem) || (typeof options === 'boolean' && options)) {\n $('menu[type=\"context\"]').each(function () {\n if (this.id) {\n $.contextMenu({\n selector: '[contextmenu=' + this.id + ']',\n items: $.contextMenu.fromMenu(this)\n });\n }\n }).css('display', 'none');\n }\n break;\n\n default:\n throw new Error('Unknown operation \"' + operation + '\"');\n }\n\n return this;\n };\n\n// import values into commands\n $.contextMenu.setInputValues = function (opt, data) {\n if (typeof data === 'undefined') {\n data = {};\n }\n\n $.each(opt.inputs, function (key, item) {\n switch (item.type) {\n case 'text':\n case 'textarea':\n item.value = data[key] || '';\n break;\n\n case 'checkbox':\n item.selected = data[key] ? true : false;\n break;\n\n case 'radio':\n item.selected = (data[item.radio] || '') === item.value;\n break;\n\n case 'select':\n item.selected = data[key] || '';\n break;\n }\n });\n };\n\n// export values from commands\n $.contextMenu.getInputValues = function (opt, data) {\n if (typeof data === 'undefined') {\n data = {};\n }\n\n $.each(opt.inputs, function (key, item) {\n switch (item.type) {\n case 'text':\n case 'textarea':\n case 'select':\n data[key] = item.$input.val();\n break;\n\n case 'checkbox':\n data[key] = item.$input.prop('checked');\n break;\n\n case 'radio':\n if (item.$input.prop('checked')) {\n data[item.radio] = item.value;\n }\n break;\n }\n });\n\n return data;\n };\n\n// find