@deephaven/components 0.5.2-beta.0 → 0.6.1-demo.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/dist/AutoCompleteInput.js +410 -448
  2. package/dist/AutoCompleteInput.js.map +1 -1
  3. package/dist/AutoResizeTextarea.js +17 -46
  4. package/dist/AutoResizeTextarea.js.map +1 -1
  5. package/dist/BasicModal.js +18 -19
  6. package/dist/BasicModal.js.map +1 -1
  7. package/dist/Button.js +30 -21
  8. package/dist/Button.js.map +1 -1
  9. package/dist/ButtonGroup.js +6 -4
  10. package/dist/ButtonGroup.js.map +1 -1
  11. package/dist/ButtonOld.js +10 -8
  12. package/dist/ButtonOld.js.map +1 -1
  13. package/dist/CardFlip.js +10 -8
  14. package/dist/CardFlip.js.map +1 -1
  15. package/dist/Checkbox.js +18 -31
  16. package/dist/Checkbox.js.map +1 -1
  17. package/dist/Collapse.js +65 -105
  18. package/dist/Collapse.js.map +1 -1
  19. package/dist/ComboBox.js +432 -460
  20. package/dist/ComboBox.js.map +1 -1
  21. package/dist/CustomTimeSelect.js +485 -517
  22. package/dist/CustomTimeSelect.js.map +1 -1
  23. package/dist/DebouncedSearchInput.js +61 -91
  24. package/dist/DebouncedSearchInput.js.map +1 -1
  25. package/dist/DeephavenSpinner.js +6 -6
  26. package/dist/DeephavenSpinner.js.map +1 -1
  27. package/dist/DragUtils.js +65 -113
  28. package/dist/DragUtils.js.map +1 -1
  29. package/dist/DraggableItemList.d.ts +1 -0
  30. package/dist/DraggableItemList.d.ts.map +1 -1
  31. package/dist/DraggableItemList.js +219 -257
  32. package/dist/DraggableItemList.js.map +1 -1
  33. package/dist/HierarchicalCheckboxMenu.js +160 -227
  34. package/dist/HierarchicalCheckboxMenu.js.map +1 -1
  35. package/dist/ItemList.d.ts +4 -2
  36. package/dist/ItemList.d.ts.map +1 -1
  37. package/dist/ItemList.js +595 -598
  38. package/dist/ItemList.js.map +1 -1
  39. package/dist/ItemListItem.js +194 -215
  40. package/dist/ItemListItem.js.map +1 -1
  41. package/dist/LoadingOverlay.js +9 -10
  42. package/dist/LoadingOverlay.js.map +1 -1
  43. package/dist/LoadingSpinner.js +4 -3
  44. package/dist/LoadingSpinner.js.map +1 -1
  45. package/dist/MaskedInput.js +59 -70
  46. package/dist/MaskedInput.js.map +1 -1
  47. package/dist/Option.js +5 -3
  48. package/dist/Option.js.map +1 -1
  49. package/dist/RadioGroup.js +16 -34
  50. package/dist/RadioGroup.js.map +1 -1
  51. package/dist/RadioItem.js +14 -33
  52. package/dist/RadioItem.js.map +1 -1
  53. package/dist/SearchInput.js +42 -75
  54. package/dist/SearchInput.js.map +1 -1
  55. package/dist/Select.js +10 -8
  56. package/dist/Select.js.map +1 -1
  57. package/dist/SelectValueList.js +97 -134
  58. package/dist/SelectValueList.js.map +1 -1
  59. package/dist/SocketedButton.js +13 -11
  60. package/dist/SocketedButton.js.map +1 -1
  61. package/dist/ThemeExport.js.map +1 -1
  62. package/dist/TimeInput.js +16 -53
  63. package/dist/TimeInput.js.map +1 -1
  64. package/dist/TimeSlider.js +62 -88
  65. package/dist/TimeSlider.js.map +1 -1
  66. package/dist/ToastNotification.js +14 -13
  67. package/dist/ToastNotification.js.map +1 -1
  68. package/dist/UISwitch.js +9 -8
  69. package/dist/UISwitch.js.map +1 -1
  70. package/dist/context-actions/ContextActionUtils.js +173 -231
  71. package/dist/context-actions/ContextActionUtils.js.map +1 -1
  72. package/dist/context-actions/ContextActions.js +135 -177
  73. package/dist/context-actions/ContextActions.js.map +1 -1
  74. package/dist/context-actions/ContextMenu.js +509 -543
  75. package/dist/context-actions/ContextMenu.js.map +1 -1
  76. package/dist/context-actions/ContextMenuItem.js +32 -22
  77. package/dist/context-actions/ContextMenuItem.js.map +1 -1
  78. package/dist/context-actions/ContextMenuRoot.js +112 -152
  79. package/dist/context-actions/ContextMenuRoot.js.map +1 -1
  80. package/dist/context-actions/GlobalContextAction.js +49 -84
  81. package/dist/context-actions/GlobalContextAction.js.map +1 -1
  82. package/dist/context-actions/GlobalContextActions.js +25 -57
  83. package/dist/context-actions/GlobalContextActions.js.map +1 -1
  84. package/dist/context-actions/index.js +4 -4
  85. package/dist/context-actions/index.js.map +1 -1
  86. package/dist/index.js +39 -39
  87. package/dist/index.js.map +1 -1
  88. package/dist/menu-actions/DropdownMenu.js +126 -159
  89. package/dist/menu-actions/DropdownMenu.js.map +1 -1
  90. package/dist/menu-actions/Menu.js +215 -245
  91. package/dist/menu-actions/Menu.js.map +1 -1
  92. package/dist/menu-actions/index.js +1 -1
  93. package/dist/menu-actions/index.js.map +1 -1
  94. package/dist/navigation/Menu.js +14 -18
  95. package/dist/navigation/Menu.js.map +1 -1
  96. package/dist/navigation/MenuItem.js +15 -14
  97. package/dist/navigation/MenuItem.js.map +1 -1
  98. package/dist/navigation/Page.js +7 -5
  99. package/dist/navigation/Page.js.map +1 -1
  100. package/dist/navigation/Stack.js +14 -39
  101. package/dist/navigation/Stack.js.map +1 -1
  102. package/dist/navigation/index.js +4 -4
  103. package/dist/navigation/index.js.map +1 -1
  104. package/dist/popper/Popper.js +209 -235
  105. package/dist/popper/Popper.js.map +1 -1
  106. package/dist/popper/Tooltip.js +227 -257
  107. package/dist/popper/Tooltip.js.map +1 -1
  108. package/dist/popper/index.js +2 -2
  109. package/dist/popper/index.js.map +1 -1
  110. package/dist/shortcuts/GlobalShortcuts.js +2 -2
  111. package/dist/shortcuts/GlobalShortcuts.js.map +1 -1
  112. package/dist/shortcuts/Shortcut.js +263 -291
  113. package/dist/shortcuts/Shortcut.js.map +1 -1
  114. package/dist/shortcuts/ShortcutRegistry.js +48 -71
  115. package/dist/shortcuts/ShortcutRegistry.js.map +1 -1
  116. package/dist/shortcuts/index.js +4 -4
  117. package/dist/shortcuts/index.js.map +1 -1
  118. package/dist/tsconfig.tsbuildinfo +1 -1
  119. package/package.json +30 -54
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/shortcuts/Shortcut.ts"],"names":["ContextActionUtils","MODIFIER","KEY","Shortcut","id","shortcut","macShortcut","isEditable","name","tooltip","isMac","isMacPlatform","activeShortcut","defaultKeyState","createKeyState","keyState","getDisplayText","isValidKeyState","setKeyState","NULL_KEY_STATE","doKeyStatesMatch","e","matchesKeyState","getKeyStateFromEvent","key","Object","values","includes","state","keyValue","isAllowedKey","metaKey","altKey","ctrlKey","shiftKey","ENTER","DELETE","keys","length","forEach","CTRL","ALT","OPTION","CMD","SHIFT","eventKey","keyCode","String","fromCharCode","display","ESCAPE","BACKSPACE","state1","state2","toUpperCase","getMacDisplayText","getWindowsDisplayText"],"mappings":";;;;;;;;AAAA;AAEA,SAASA,kBAAT,QAAmC,oBAAnC;AAEA,WAAYC,QAAZ,C,CAQA;AACA;;WATYA,Q;AAAAA,EAAAA,Q;AAAAA,EAAAA,Q;AAAAA,EAAAA,Q;AAAAA,EAAAA,Q;AAAAA,EAAAA,Q;GAAAA,Q,KAAAA,Q;;AAUZ,WAAYC,GAAZ;;WAAYA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;AAAAA,EAAAA,G;GAAAA,G,KAAAA,G;;IAgGSC,Q;AA4NnB,0BAcG;AAAA,QAbDC,EAaC,QAbDA,EAaC;AAAA,QAZDC,QAYC,QAZDA,QAYC;AAAA,QAXDC,WAWC,QAXDA,WAWC;AAAA,+BAVDC,UAUC;AAAA,QAVDA,UAUC,gCAVY,IAUZ;AAAA,QATDC,IASC,QATDA,IASC;AAAA,QARDC,OAQC,QARDA,OAQC;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AACD,SAAKL,EAAL,GAAUA,EAAV;AACA,SAAKI,IAAL,GAAYA,IAAZ;AACA,SAAKC,OAAL,GAAeA,OAAf;AACA,SAAKF,UAAL,GAAkBA,UAAlB;AAEA,QAAMG,KAAK,GAAGP,QAAQ,CAACQ,aAAvB;AACA,QAAMC,cAAc,GAAGF,KAAK,GAAGJ,WAAH,GAAiBD,QAA7C;AACA,SAAKQ,eAAL,GAAuBV,QAAQ,CAACW,cAAT,CAAwBF,cAAxB,CAAvB;AACA,SAAKG,QAAL,GAAgB,KAAKF,eAArB;AACD;AAED;AACF;AACA;;;;;WACE,0BAAyB;AACvB,aAAOV,QAAQ,CAACa,cAAT,CAAwB,KAAKD,QAA7B,CAAP;AACD;AAED;AACF;AACA;;;;WACE,uBAA6B;AAC3B,aAAO,KAAKA,QAAZ;AACD;AAED;AACF;AACA;AACA;;;;WACE,qBAAYA,QAAZ,EAAsC;AACpC,UAAIZ,QAAQ,CAACc,eAAT,CAAyBF,QAAzB,CAAJ,EAAwC;AACtC,aAAKA,QAAL,GAAgBA,QAAhB;AACD;AACF;AAED;AACF;AACA;AACA;;;;WACE,8BAAoC;AAClC,aAAO,KAAKF,eAAZ;AACD;AAED;AACF;AACA;;;;WACE,qBAAkB;AAChB,WAAKK,WAAL,CAAiBf,QAAQ,CAACgB,cAA1B;AACD;;;WAED,kBAAkB;AAChB,aAAOhB,QAAQ,CAACiB,gBAAT,CAA0B,KAAKL,QAA/B,EAAyCZ,QAAQ,CAACgB,cAAlD,CAAP;AACD;AAED;AACF;AACA;;;;WACE,wBAAqB;AACnB,WAAKD,WAAL,CAAiB,KAAKL,eAAtB;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,yBAAgBE,QAAhB,EAA6C;AAC3C,aAAOZ,QAAQ,CAACiB,gBAAT,CAA0BL,QAA1B,EAAoC,KAAKA,QAAzC,CAAP;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,sBAAaM,CAAb,EAA8D;AAC5D,aAAO,KAAKC,eAAL,CAAqBnB,QAAQ,CAACoB,oBAAT,CAA8BF,CAA9B,CAArB,CAAP;AACD;;;WAvToB;AAEE;;AAkBvB;AACF;AACA;AACA;AACA;AACE,0BAAoBG,GAApB,EAAoD;AAClD,aAAOC,MAAM,CAACC,MAAP,CAAcxB,GAAd,EAAmByB,QAAnB,CAA4BH,GAA5B,CAAP;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,yBAAuBI,KAAvB,EAAgE;AAC9D,aACEA,KAAK,CAACC,QAAN,KAAmB,IAAnB,IACC1B,QAAQ,CAAC2B,YAAT,CAAsBF,KAAK,CAACC,QAA5B,MACE1B,QAAQ,CAACQ,aAAT,IAA0B,CAACiB,KAAK,CAACG,OADnC,OAC+C;AAC7CH,MAAAA,KAAK,CAACI,MAAN,IACCJ,KAAK,CAACK,OADP,IAECL,KAAK,CAACG,OAFP,IAGCH,KAAK,CAACM,QAHP,IAICN,KAAK,CAACC,QAAN,KAAmB3B,GAAG,CAACiC,KAJxB,IAKCP,KAAK,CAACC,QAAN,KAAmB3B,GAAG,CAACkC,MAP1B,CAFH;AAWD;;;;AAID;AACF;AACA;AACA;AACA;AACE,4BAAsBC,IAAtB,EAAyD;AACvD,UAAMtB,QAAuB,GAAG;AAC9BiB,QAAAA,MAAM,EAAE,KADsB;AAE9BC,QAAAA,OAAO,EAAE,KAFqB;AAG9BF,QAAAA,OAAO,EAAE,KAHqB;AAI9BG,QAAAA,QAAQ,EAAE,KAJoB;AAK9BL,QAAAA,QAAQ,EAAEQ,IAAI,CAACA,IAAI,CAACC,MAAL,GAAc,CAAf;AALgB,OAAhC;AAQAD,MAAAA,IAAI,CAACE,OAAL,CAAa,UAAAf,GAAG,EAAI;AAClB,gBAAQA,GAAR;AACE,eAAKvB,QAAQ,CAACuC,IAAd;AACEzB,YAAAA,QAAQ,CAACkB,OAAT,GAAmB,IAAnB;AACA;;AACF,eAAKhC,QAAQ,CAACwC,GAAd;AACA,eAAKxC,QAAQ,CAACyC,MAAd;AACE3B,YAAAA,QAAQ,CAACiB,MAAT,GAAkB,IAAlB;AACA;;AACF,eAAK/B,QAAQ,CAAC0C,GAAd;AACE5B,YAAAA,QAAQ,CAACgB,OAAT,GAAmB,IAAnB;AACA;;AACF,eAAK9B,QAAQ,CAAC2C,KAAd;AACE7B,YAAAA,QAAQ,CAACmB,QAAT,GAAoB,IAApB;AACA;;AACF;AACE;AAfJ;AAiBD,OAlBD;AAoBA,aAAOnB,QAAP;AACD;;;WAED,8BACEM,CADF,EAEY;AACV,UAAawB,QAAb,GAAmCxB,CAAnC,CAAQG,GAAR;AAAA,UAAuBsB,OAAvB,GAAmCzB,CAAnC,CAAuByB,OAAvB;AACA,UAAItB,GAAG,GAAG,EAAV;;AACA,UACEqB,QAAQ,KAAK,OAAb,IACAA,QAAQ,KAAK,MADb,IAEAA,QAAQ,KAAK,SAFb,IAGAA,QAAQ,KAAK,KAJf,EAKE;AACArB,QAAAA,GAAG,GAAG,EAAN;AACD,OAPD,MAOO,IACL,CAACrB,QAAQ,CAAC2B,YAAT,CAAsBe,QAAtB,CAAD,IACA1C,QAAQ,CAAC2B,YAAT,CAAsBiB,MAAM,CAACC,YAAP,CAAoBF,OAApB,CAAtB,CAFK,EAGL;AACAtB,QAAAA,GAAG,GAAGuB,MAAM,CAACC,YAAP,CAAoBF,OAApB,CAAN;AACD,OALM,MAKA;AACLtB,QAAAA,GAAG,GAAGqB,QAAN;AACD;;AAED,aAAO;AACLhB,QAAAA,QAAQ,EAAEL,GADL;AAELQ,QAAAA,MAAM,EAAEX,CAAC,CAACW,MAFL;AAGLC,QAAAA,OAAO,EAAEZ,CAAC,CAACY,OAHN;AAILF,QAAAA,OAAO,EAAEV,CAAC,CAACU,OAJN;AAKLG,QAAAA,QAAQ,EAAEb,CAAC,CAACa;AALP,OAAP;AAOD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,+BAAqCnB,QAArC,EAAiE;AAC/D,UAAIkC,OAAO,GAAG,EAAd;;AAEA,UAAIlC,QAAQ,CAACkB,OAAb,EAAsB;AACpBgB,QAAAA,OAAO,IAAI,OAAX;AACD;;AACD,UAAIlC,QAAQ,CAACiB,MAAb,EAAqB;AACnBiB,QAAAA,OAAO,IAAI,MAAX;AACD;;AACD,UAAIlC,QAAQ,CAACmB,QAAb,EAAuB;AACrBe,QAAAA,OAAO,IAAI,QAAX;AACD;;AAED,UAAIlC,QAAQ,CAACc,QAAT,KAAsB3B,GAAG,CAACgD,MAA9B,EAAsC;AACpCD,QAAAA,OAAO,IAAI,KAAX;AACD,OAFD,MAEO,IAAIlC,QAAQ,CAACc,QAAT,KAAsB,IAA1B,EAAgC;AACrCoB,QAAAA,OAAO,IAAIlC,QAAQ,CAACc,QAApB;AACD;;AAED,aAAOoB,OAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,2BAAiClC,QAAjC,EAA6D;AAC3D,UAAIkC,OAAO,GAAG,EAAd;;AAEA,UAAIlC,QAAQ,CAACkB,OAAb,EAAsB;AACpBgB,QAAAA,OAAO,IAAI,GAAX;AACD;;AACD,UAAIlC,QAAQ,CAACiB,MAAb,EAAqB;AACnBiB,QAAAA,OAAO,IAAI,GAAX;AACD;;AACD,UAAIlC,QAAQ,CAACmB,QAAb,EAAuB;AACrBe,QAAAA,OAAO,IAAI,GAAX;AACD;;AACD,UAAIlC,QAAQ,CAACgB,OAAb,EAAsB;AACpBkB,QAAAA,OAAO,IAAI,GAAX;AACD;;AAED,cAAQlC,QAAQ,CAACc,QAAjB;AACE,aAAK3B,GAAG,CAACiC,KAAT;AACEc,UAAAA,OAAO,IAAI,GAAX;AACA;;AACF,aAAK/C,GAAG,CAACgD,MAAT;AACED,UAAAA,OAAO,IAAI,GAAX;AACA;;AACF,aAAK/C,GAAG,CAACiD,SAAT;AACEF,UAAAA,OAAO,IAAI,GAAX;AACA;;AACF,aAAK/C,GAAG,CAACkC,MAAT;AACEa,UAAAA,OAAO,IAAI,GAAX;AACA;;AACF,aAAK,IAAL;AACE;;AACF;AACEA,UAAAA,OAAO,IAAIlC,QAAQ,CAACc,QAApB;AAhBJ;;AAmBA,aAAOoB,OAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,0BAAwBG,MAAxB,EAA0CC,MAA1C,EAAqE;AAAA;;AACnE,aACE,qBAAAD,MAAM,CAACvB,QAAP,sEAAiByB,WAAjB,6BAAmCD,MAAM,CAACxB,QAA1C,qDAAmC,iBAAiByB,WAAjB,EAAnC,KACAF,MAAM,CAACpB,MAAP,KAAkBqB,MAAM,CAACrB,MADzB,IAEAoB,MAAM,CAACnB,OAAP,KAAmBoB,MAAM,CAACpB,OAF1B,IAGAmB,MAAM,CAACrB,OAAP,KAAmBsB,MAAM,CAACtB,OAH1B,IAIAqB,MAAM,CAAClB,QAAP,KAAoBmB,MAAM,CAACnB,QAL7B;AAOD;AAED;AACF;AACA;AACA;AACA;;;;WACE,wBAAsBnB,QAAtB,EAAkD;AAChD,UAAIA,QAAQ,CAACc,QAAT,KAAsB,IAA1B,EAAgC;AAC9B,eAAO,EAAP;AACD;;AACD,aAAO1B,QAAQ,CAACQ,aAAT,GACHR,QAAQ,CAACoD,iBAAT,CAA2BxC,QAA3B,CADG,GAEHZ,QAAQ,CAACqD,qBAAT,CAA+BzC,QAA/B,CAFJ;AAGD;;;;;;gBA1NkBZ,Q,oBAaoB;AACrC4B,EAAAA,OAAO,EAAE,KAD4B;AAErCG,EAAAA,QAAQ,EAAE,KAF2B;AAGrCF,EAAAA,MAAM,EAAE,KAH6B;AAIrCC,EAAAA,OAAO,EAAE,KAJ4B;AAKrCJ,EAAAA,QAAQ,EAAE;AAL2B,C;;gBAbpB1B,Q,mBAiDIH,kBAAkB,CAACW,aAAnB,E;;SAjDJR,Q","sourcesContent":["/* eslint-disable no-underscore-dangle */\nimport React from 'react';\nimport { ContextActionUtils } from '../context-actions';\n\nexport enum MODIFIER {\n CTRL = 'MODIFIER_CTRL',\n CMD = 'MODIFIER_CMD',\n ALT = 'MODIFIER_ALT',\n OPTION = 'MODIFIER_OPTION',\n SHIFT = 'MODIFIER_SHIFT',\n}\n\n// The value should match the KeyboardEvent.key value\n// This is the value which will be displayed if no display overrides are done in the OS specific getDisplayString methods\nexport enum KEY {\n A = 'A',\n B = 'B',\n C = 'C',\n D = 'D',\n E = 'E',\n F = 'F',\n G = 'G',\n H = 'H',\n I = 'I',\n J = 'J',\n K = 'K',\n L = 'L',\n M = 'M',\n N = 'N',\n O = 'O',\n P = 'P',\n Q = 'Q',\n R = 'R',\n S = 'S',\n T = 'T',\n U = 'U',\n V = 'V',\n W = 'W',\n X = 'X',\n Y = 'Y',\n Z = 'Z',\n ZERO = '0',\n ONE = '1',\n TWO = '2',\n THREE = '3',\n FOUR = '4',\n FIVE = '5',\n SIX = '6',\n SEVEN = '7',\n EIGHT = '8',\n NINE = '9',\n BACKSPACE = 'Backspace',\n ESCAPE = 'Escape',\n ENTER = 'Enter',\n DELETE = 'Delete',\n SLASH = '/',\n QUESTION_MARK = '?',\n BACKSLASH = '\\\\',\n PIPE = '|',\n MINUS = '-',\n UNDERSCORE = '_',\n EQUALS = '=',\n PLUS = '+',\n BACKTICK = '`',\n TILDE = '~',\n COMMA = ',',\n LEFT_CHEVRON = '<',\n PERIOD = '.',\n RIGHT_CHEVRON = '>',\n SEMICOLON = ';',\n COLON = ':',\n SINGLE_QUOTE = \"'\",\n DOUBLE_QUOTE = '\"',\n LEFT_BRACKET = '[',\n RIGHT_BRACKET = ']',\n LEFT_CURLY = '{',\n RIGHT_CURLY = '}',\n F1 = 'F1',\n F2 = 'F2',\n F3 = 'F3',\n F4 = 'F4',\n F5 = 'F5',\n F6 = 'F6',\n F7 = 'F7',\n F8 = 'F8',\n F9 = 'F9',\n F10 = 'F10',\n F11 = 'F11',\n F12 = 'F12',\n}\n\ntype ShortcutKeys = [...MODIFIER[], KEY];\n\nexport interface KeyState {\n /**\n * This is purposely keyValue and not key to make KeyboardEvents not match the interface\n * KeyboardEvents need some processing to get the actual value\n * Use Shortcut.getKeyStateFromEvent to get the right KeyState from an event\n */\n keyValue: string | null;\n altKey: boolean;\n ctrlKey: boolean;\n metaKey: boolean;\n shiftKey: boolean;\n}\n\ninterface ValidKeyState extends KeyState {\n keyValue: KEY | null;\n}\n\nexport default class Shortcut {\n readonly id: string; // Unique identifier for the shortcut\n\n readonly name: string; // e.g. Rename, Save, Run Selected\n\n readonly tooltip?: string;\n\n readonly isEditable: boolean;\n\n private readonly defaultKeyState: ValidKeyState;\n\n private keyState: ValidKeyState;\n\n static NULL_KEY_STATE: ValidKeyState = {\n metaKey: false,\n shiftKey: false,\n altKey: false,\n ctrlKey: false,\n keyValue: null,\n };\n\n /**\n * Use to check if a keyCode corresponds to an allowed key for a shortcut\n * @param keyCode The keyCode to check. This should be the charCode of the key\n * @returns Type predicate asserting the key is an allowed KEY\n */\n static isAllowedKey(key: string | null): key is KEY {\n return Object.values(KEY).includes(key as KEY);\n }\n\n /**\n * Checks if a KeyState has a valid key.\n * @param state KeyState with any string as the key\n * @returns True if KeyState is is using an allowed keyCode\n */\n static isValidKeyState(state: KeyState): state is ValidKeyState {\n return (\n state.keyValue === null ||\n (Shortcut.isAllowedKey(state.keyValue) &&\n (Shortcut.isMacPlatform || !state.metaKey) && // MetaKey not allowed in windows\n (state.altKey ||\n state.ctrlKey ||\n state.metaKey ||\n state.shiftKey ||\n state.keyValue === KEY.ENTER ||\n state.keyValue === KEY.DELETE))\n );\n }\n\n static isMacPlatform = ContextActionUtils.isMacPlatform();\n\n /**\n * Creates a KeyState from a valid array of modifier and key constants\n * @param keys Array of keys in the shortcut. Modifiers first and key last. Should use the MODIFIER and KEY enums\n * @returns KeyState representing the array of constants\n */\n static createKeyState(keys: ShortcutKeys): ValidKeyState {\n const keyState: ValidKeyState = {\n altKey: false,\n ctrlKey: false,\n metaKey: false,\n shiftKey: false,\n keyValue: keys[keys.length - 1] as KEY,\n };\n\n keys.forEach(key => {\n switch (key) {\n case MODIFIER.CTRL:\n keyState.ctrlKey = true;\n break;\n case MODIFIER.ALT:\n case MODIFIER.OPTION:\n keyState.altKey = true;\n break;\n case MODIFIER.CMD:\n keyState.metaKey = true;\n break;\n case MODIFIER.SHIFT:\n keyState.shiftKey = true;\n break;\n default:\n break;\n }\n });\n\n return keyState;\n }\n\n static getKeyStateFromEvent(\n e: React.KeyboardEvent | KeyboardEvent\n ): KeyState {\n const { key: eventKey, keyCode } = e;\n let key = '';\n if (\n eventKey === 'Shift' ||\n eventKey === 'Meta' ||\n eventKey === 'Control' ||\n eventKey === 'Alt'\n ) {\n key = '';\n } else if (\n !Shortcut.isAllowedKey(eventKey) &&\n Shortcut.isAllowedKey(String.fromCharCode(keyCode))\n ) {\n key = String.fromCharCode(keyCode);\n } else {\n key = eventKey;\n }\n\n return {\n keyValue: key,\n altKey: e.altKey,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n shiftKey: e.shiftKey,\n };\n }\n\n /**\n * Gets display string for Windows (and Linux + any other non-Mac OS)\n * If the key is not an allowed key, the display will only display the modifiers\n * @param keyState KeyState to get the display for\n * @returns The string to display on Windows/non-Mac OS\n */\n private static getWindowsDisplayText(keyState: KeyState): string {\n let display = '';\n\n if (keyState.ctrlKey) {\n display += 'Ctrl+';\n }\n if (keyState.altKey) {\n display += 'Alt+';\n }\n if (keyState.shiftKey) {\n display += 'Shift+';\n }\n\n if (keyState.keyValue === KEY.ESCAPE) {\n display += 'Esc';\n } else if (keyState.keyValue !== null) {\n display += keyState.keyValue;\n }\n\n return display;\n }\n\n /**\n * Gets display string Mac OS\n * If the key is not an allowed key, the display will only display the modifiers\n * @param keyState KeyState to get the display for\n * @returns The string to display on Mac OS\n */\n private static getMacDisplayText(keyState: KeyState): string {\n let display = '';\n\n if (keyState.ctrlKey) {\n display += '⌃';\n }\n if (keyState.altKey) {\n display += '⌥';\n }\n if (keyState.shiftKey) {\n display += '⇧';\n }\n if (keyState.metaKey) {\n display += '⌘';\n }\n\n switch (keyState.keyValue) {\n case KEY.ENTER:\n display += '⏎';\n break;\n case KEY.ESCAPE:\n display += '⎋';\n break;\n case KEY.BACKSPACE:\n display += '⌫';\n break;\n case KEY.DELETE:\n display += '⌦';\n break;\n case null:\n break;\n default:\n display += keyState.keyValue;\n }\n\n return display;\n }\n\n /**\n * Checks if 2 KeyStates match\n * @param state1 First KeyState to compare\n * @param state2 Second KeyState to compare\n * @returns True if the KeyStates match and have non-null keyValues\n */\n static doKeyStatesMatch(state1: KeyState, state2: KeyState): boolean {\n return (\n state1.keyValue?.toUpperCase() === state2.keyValue?.toUpperCase() &&\n state1.altKey === state2.altKey &&\n state1.ctrlKey === state2.ctrlKey &&\n state1.metaKey === state2.metaKey &&\n state1.shiftKey === state2.shiftKey\n );\n }\n\n /**\n * Gets the display string for the current OS from a KeyState.\n * @param keyState KeyState to get the display for\n * @returns Display string for the current OS\n */\n static getDisplayText(keyState: KeyState): string {\n if (keyState.keyValue === null) {\n return '';\n }\n return Shortcut.isMacPlatform\n ? Shortcut.getMacDisplayText(keyState)\n : Shortcut.getWindowsDisplayText(keyState);\n }\n\n constructor({\n id,\n shortcut,\n macShortcut,\n isEditable = true,\n name,\n tooltip,\n }: {\n id: string;\n shortcut: ShortcutKeys;\n macShortcut: ShortcutKeys;\n isEditable?: boolean;\n name: string;\n tooltip?: string;\n }) {\n this.id = id;\n this.name = name;\n this.tooltip = tooltip;\n this.isEditable = isEditable;\n\n const isMac = Shortcut.isMacPlatform;\n const activeShortcut = isMac ? macShortcut : shortcut;\n this.defaultKeyState = Shortcut.createKeyState(activeShortcut);\n this.keyState = this.defaultKeyState;\n }\n\n /**\n * Gets the display string for the current OS\n */\n getDisplayText(): string {\n return Shortcut.getDisplayText(this.keyState);\n }\n\n /**\n * Gets the current keyState for the Shortcut\n */\n getKeyState(): ValidKeyState {\n return this.keyState;\n }\n\n /**\n * Sets the KeyState if it is valid\n * @param keyState\n */\n setKeyState(keyState: KeyState): void {\n if (Shortcut.isValidKeyState(keyState)) {\n this.keyState = keyState;\n }\n }\n\n /**\n * Gets the default key state of the shortcut\n * @returns Default key state\n */\n getDefaultKeyState(): ValidKeyState {\n return this.defaultKeyState;\n }\n\n /**\n * Sets the shortcut to have null keyValue\n */\n setToNull(): void {\n this.setKeyState(Shortcut.NULL_KEY_STATE);\n }\n\n isNull(): boolean {\n return Shortcut.doKeyStatesMatch(this.keyState, Shortcut.NULL_KEY_STATE);\n }\n\n /**\n * Sets the shortcut to its default key state\n */\n setToDefault(): void {\n this.setKeyState(this.defaultKeyState);\n }\n\n /**\n * Checks if a KeyState matches the KeyState for the shortcut\n * @param keyState KeyState to check\n * @returns True if the passed KeyState matches the Shortcut's KeyState\n */\n matchesKeyState(keyState: KeyState): boolean {\n return Shortcut.doKeyStatesMatch(keyState, this.keyState);\n }\n\n /**\n * Alias for matchesKeyState\n * @param e KeyboardEvent to check if the Shortcut matches\n * @returns True if the event matches the Shortcut's KeyState\n */\n matchesEvent(e: React.KeyboardEvent | KeyboardEvent): boolean {\n return this.matchesKeyState(Shortcut.getKeyStateFromEvent(e));\n }\n}\n"],"file":"Shortcut.js"}
1
+ {"version":3,"sources":["../../src/shortcuts/Shortcut.ts"],"names":["ContextActionUtils","MODIFIER","KEY","Shortcut","isAllowedKey","key","Object","values","includes","isValidKeyState","state","keyValue","isMacPlatform","metaKey","altKey","ctrlKey","shiftKey","ENTER","DELETE","createKeyState","keys","keyState","length","forEach","CTRL","ALT","OPTION","CMD","SHIFT","getKeyStateFromEvent","e","eventKey","keyCode","String","fromCharCode","getWindowsDisplayText","display","ESCAPE","getMacDisplayText","BACKSPACE","doKeyStatesMatch","state1","state2","toUpperCase","getDisplayText","constructor","id","shortcut","macShortcut","isEditable","name","tooltip","isMac","activeShortcut","defaultKeyState","getKeyState","setKeyState","getDefaultKeyState","setToNull","NULL_KEY_STATE","isNull","setToDefault","matchesKeyState","matchesEvent"],"mappings":"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","sourcesContent":["/* eslint-disable no-underscore-dangle */\nimport React from 'react';\nimport { ContextActionUtils } from '../context-actions';\n\nexport enum MODIFIER {\n CTRL = 'MODIFIER_CTRL',\n CMD = 'MODIFIER_CMD',\n ALT = 'MODIFIER_ALT',\n OPTION = 'MODIFIER_OPTION',\n SHIFT = 'MODIFIER_SHIFT',\n}\n\n// The value should match the KeyboardEvent.key value\n// This is the value which will be displayed if no display overrides are done in the OS specific getDisplayString methods\nexport enum KEY {\n A = 'A',\n B = 'B',\n C = 'C',\n D = 'D',\n E = 'E',\n F = 'F',\n G = 'G',\n H = 'H',\n I = 'I',\n J = 'J',\n K = 'K',\n L = 'L',\n M = 'M',\n N = 'N',\n O = 'O',\n P = 'P',\n Q = 'Q',\n R = 'R',\n S = 'S',\n T = 'T',\n U = 'U',\n V = 'V',\n W = 'W',\n X = 'X',\n Y = 'Y',\n Z = 'Z',\n ZERO = '0',\n ONE = '1',\n TWO = '2',\n THREE = '3',\n FOUR = '4',\n FIVE = '5',\n SIX = '6',\n SEVEN = '7',\n EIGHT = '8',\n NINE = '9',\n BACKSPACE = 'Backspace',\n ESCAPE = 'Escape',\n ENTER = 'Enter',\n DELETE = 'Delete',\n SLASH = '/',\n QUESTION_MARK = '?',\n BACKSLASH = '\\\\',\n PIPE = '|',\n MINUS = '-',\n UNDERSCORE = '_',\n EQUALS = '=',\n PLUS = '+',\n BACKTICK = '`',\n TILDE = '~',\n COMMA = ',',\n LEFT_CHEVRON = '<',\n PERIOD = '.',\n RIGHT_CHEVRON = '>',\n SEMICOLON = ';',\n COLON = ':',\n SINGLE_QUOTE = \"'\",\n DOUBLE_QUOTE = '\"',\n LEFT_BRACKET = '[',\n RIGHT_BRACKET = ']',\n LEFT_CURLY = '{',\n RIGHT_CURLY = '}',\n F1 = 'F1',\n F2 = 'F2',\n F3 = 'F3',\n F4 = 'F4',\n F5 = 'F5',\n F6 = 'F6',\n F7 = 'F7',\n F8 = 'F8',\n F9 = 'F9',\n F10 = 'F10',\n F11 = 'F11',\n F12 = 'F12',\n}\n\ntype ShortcutKeys = [...MODIFIER[], KEY];\n\nexport interface KeyState {\n /**\n * This is purposely keyValue and not key to make KeyboardEvents not match the interface\n * KeyboardEvents need some processing to get the actual value\n * Use Shortcut.getKeyStateFromEvent to get the right KeyState from an event\n */\n keyValue: string | null;\n altKey: boolean;\n ctrlKey: boolean;\n metaKey: boolean;\n shiftKey: boolean;\n}\n\ninterface ValidKeyState extends KeyState {\n keyValue: KEY | null;\n}\n\nexport default class Shortcut {\n readonly id: string; // Unique identifier for the shortcut\n\n readonly name: string; // e.g. Rename, Save, Run Selected\n\n readonly tooltip?: string;\n\n readonly isEditable: boolean;\n\n private readonly defaultKeyState: ValidKeyState;\n\n private keyState: ValidKeyState;\n\n static NULL_KEY_STATE: ValidKeyState = {\n metaKey: false,\n shiftKey: false,\n altKey: false,\n ctrlKey: false,\n keyValue: null,\n };\n\n /**\n * Use to check if a keyCode corresponds to an allowed key for a shortcut\n * @param keyCode The keyCode to check. This should be the charCode of the key\n * @returns Type predicate asserting the key is an allowed KEY\n */\n static isAllowedKey(key: string | null): key is KEY {\n return Object.values(KEY).includes(key as KEY);\n }\n\n /**\n * Checks if a KeyState has a valid key.\n * @param state KeyState with any string as the key\n * @returns True if KeyState is is using an allowed keyCode\n */\n static isValidKeyState(state: KeyState): state is ValidKeyState {\n return (\n state.keyValue === null ||\n (Shortcut.isAllowedKey(state.keyValue) &&\n (Shortcut.isMacPlatform || !state.metaKey) && // MetaKey not allowed in windows\n (state.altKey ||\n state.ctrlKey ||\n state.metaKey ||\n state.shiftKey ||\n state.keyValue === KEY.ENTER ||\n state.keyValue === KEY.DELETE))\n );\n }\n\n static isMacPlatform = ContextActionUtils.isMacPlatform();\n\n /**\n * Creates a KeyState from a valid array of modifier and key constants\n * @param keys Array of keys in the shortcut. Modifiers first and key last. Should use the MODIFIER and KEY enums\n * @returns KeyState representing the array of constants\n */\n static createKeyState(keys: ShortcutKeys): ValidKeyState {\n const keyState: ValidKeyState = {\n altKey: false,\n ctrlKey: false,\n metaKey: false,\n shiftKey: false,\n keyValue: keys[keys.length - 1] as KEY,\n };\n\n keys.forEach(key => {\n switch (key) {\n case MODIFIER.CTRL:\n keyState.ctrlKey = true;\n break;\n case MODIFIER.ALT:\n case MODIFIER.OPTION:\n keyState.altKey = true;\n break;\n case MODIFIER.CMD:\n keyState.metaKey = true;\n break;\n case MODIFIER.SHIFT:\n keyState.shiftKey = true;\n break;\n default:\n break;\n }\n });\n\n return keyState;\n }\n\n static getKeyStateFromEvent(\n e: React.KeyboardEvent | KeyboardEvent\n ): KeyState {\n const { key: eventKey, keyCode } = e;\n let key = '';\n if (\n eventKey === 'Shift' ||\n eventKey === 'Meta' ||\n eventKey === 'Control' ||\n eventKey === 'Alt'\n ) {\n key = '';\n } else if (\n !Shortcut.isAllowedKey(eventKey) &&\n Shortcut.isAllowedKey(String.fromCharCode(keyCode))\n ) {\n key = String.fromCharCode(keyCode);\n } else {\n key = eventKey;\n }\n\n return {\n keyValue: key,\n altKey: e.altKey,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n shiftKey: e.shiftKey,\n };\n }\n\n /**\n * Gets display string for Windows (and Linux + any other non-Mac OS)\n * If the key is not an allowed key, the display will only display the modifiers\n * @param keyState KeyState to get the display for\n * @returns The string to display on Windows/non-Mac OS\n */\n private static getWindowsDisplayText(keyState: KeyState): string {\n let display = '';\n\n if (keyState.ctrlKey) {\n display += 'Ctrl+';\n }\n if (keyState.altKey) {\n display += 'Alt+';\n }\n if (keyState.shiftKey) {\n display += 'Shift+';\n }\n\n if (keyState.keyValue === KEY.ESCAPE) {\n display += 'Esc';\n } else if (keyState.keyValue !== null) {\n display += keyState.keyValue;\n }\n\n return display;\n }\n\n /**\n * Gets display string Mac OS\n * If the key is not an allowed key, the display will only display the modifiers\n * @param keyState KeyState to get the display for\n * @returns The string to display on Mac OS\n */\n private static getMacDisplayText(keyState: KeyState): string {\n let display = '';\n\n if (keyState.ctrlKey) {\n display += '⌃';\n }\n if (keyState.altKey) {\n display += '⌥';\n }\n if (keyState.shiftKey) {\n display += '⇧';\n }\n if (keyState.metaKey) {\n display += '⌘';\n }\n\n switch (keyState.keyValue) {\n case KEY.ENTER:\n display += '⏎';\n break;\n case KEY.ESCAPE:\n display += '⎋';\n break;\n case KEY.BACKSPACE:\n display += '⌫';\n break;\n case KEY.DELETE:\n display += '⌦';\n break;\n case null:\n break;\n default:\n display += keyState.keyValue;\n }\n\n return display;\n }\n\n /**\n * Checks if 2 KeyStates match\n * @param state1 First KeyState to compare\n * @param state2 Second KeyState to compare\n * @returns True if the KeyStates match and have non-null keyValues\n */\n static doKeyStatesMatch(state1: KeyState, state2: KeyState): boolean {\n return (\n state1.keyValue?.toUpperCase() === state2.keyValue?.toUpperCase() &&\n state1.altKey === state2.altKey &&\n state1.ctrlKey === state2.ctrlKey &&\n state1.metaKey === state2.metaKey &&\n state1.shiftKey === state2.shiftKey\n );\n }\n\n /**\n * Gets the display string for the current OS from a KeyState.\n * @param keyState KeyState to get the display for\n * @returns Display string for the current OS\n */\n static getDisplayText(keyState: KeyState): string {\n if (keyState.keyValue === null) {\n return '';\n }\n return Shortcut.isMacPlatform\n ? Shortcut.getMacDisplayText(keyState)\n : Shortcut.getWindowsDisplayText(keyState);\n }\n\n constructor({\n id,\n shortcut,\n macShortcut,\n isEditable = true,\n name,\n tooltip,\n }: {\n id: string;\n shortcut: ShortcutKeys;\n macShortcut: ShortcutKeys;\n isEditable?: boolean;\n name: string;\n tooltip?: string;\n }) {\n this.id = id;\n this.name = name;\n this.tooltip = tooltip;\n this.isEditable = isEditable;\n\n const isMac = Shortcut.isMacPlatform;\n const activeShortcut = isMac ? macShortcut : shortcut;\n this.defaultKeyState = Shortcut.createKeyState(activeShortcut);\n this.keyState = this.defaultKeyState;\n }\n\n /**\n * Gets the display string for the current OS\n */\n getDisplayText(): string {\n return Shortcut.getDisplayText(this.keyState);\n }\n\n /**\n * Gets the current keyState for the Shortcut\n */\n getKeyState(): ValidKeyState {\n return this.keyState;\n }\n\n /**\n * Sets the KeyState if it is valid\n * @param keyState\n */\n setKeyState(keyState: KeyState): void {\n if (Shortcut.isValidKeyState(keyState)) {\n this.keyState = keyState;\n }\n }\n\n /**\n * Gets the default key state of the shortcut\n * @returns Default key state\n */\n getDefaultKeyState(): ValidKeyState {\n return this.defaultKeyState;\n }\n\n /**\n * Sets the shortcut to have null keyValue\n */\n setToNull(): void {\n this.setKeyState(Shortcut.NULL_KEY_STATE);\n }\n\n isNull(): boolean {\n return Shortcut.doKeyStatesMatch(this.keyState, Shortcut.NULL_KEY_STATE);\n }\n\n /**\n * Sets the shortcut to its default key state\n */\n setToDefault(): void {\n this.setKeyState(this.defaultKeyState);\n }\n\n /**\n * Checks if a KeyState matches the KeyState for the shortcut\n * @param keyState KeyState to check\n * @returns True if the passed KeyState matches the Shortcut's KeyState\n */\n matchesKeyState(keyState: KeyState): boolean {\n return Shortcut.doKeyStatesMatch(keyState, this.keyState);\n }\n\n /**\n * Alias for matchesKeyState\n * @param e KeyboardEvent to check if the Shortcut matches\n * @returns True if the event matches the Shortcut's KeyState\n */\n matchesEvent(e: React.KeyboardEvent | KeyboardEvent): boolean {\n return this.matchesKeyState(Shortcut.getKeyStateFromEvent(e));\n }\n}\n"],"file":"Shortcut.js"}
@@ -1,88 +1,65 @@
1
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2
-
3
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
4
-
5
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
6
-
7
1
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
2
 
9
- import Shortcut from './Shortcut';
10
-
11
- var ShortcutRegistry = /*#__PURE__*/function () {
12
- function ShortcutRegistry() {
13
- _classCallCheck(this, ShortcutRegistry);
3
+ import Shortcut from "./Shortcut.js";
4
+ export default class ShortcutRegistry {
5
+ /**
6
+ * Creates a Shortcut and adds it to the registry
7
+ * @param params The constructor params for the {@link Shortcut}
8
+ * @param category The category this will show up under in the settings menu. If omitted, shortcut will be hidden in settings
9
+ * @returns The created Shortcut
10
+ */
11
+ static createAndAdd(params) {
12
+ var shortcut = new Shortcut(params);
13
+ ShortcutRegistry.add(shortcut);
14
+ return shortcut;
14
15
  }
16
+ /**
17
+ * Adds a shortcut to the registry. Throws if a shortcut with the same ID already exists
18
+ * @param shortcut Shortcut to add to the registry
19
+ */
15
20
 
16
- _createClass(ShortcutRegistry, null, [{
17
- key: "createAndAdd",
18
- value:
19
- /**
20
- * Creates a Shortcut and adds it to the registry
21
- * @param params The constructor params for the {@link Shortcut}
22
- * @param category The category this will show up under in the settings menu. If omitted, shortcut will be hidden in settings
23
- * @returns The created Shortcut
24
- */
25
- function createAndAdd(params) {
26
- var shortcut = new Shortcut(params);
27
- ShortcutRegistry.add(shortcut);
28
- return shortcut;
29
- }
30
- /**
31
- * Adds a shortcut to the registry. Throws if a shortcut with the same ID already exists
32
- * @param shortcut Shortcut to add to the registry
33
- */
34
21
 
35
- }, {
36
- key: "add",
37
- value: function add(shortcut) {
38
- if (ShortcutRegistry.shortcutMap.has(shortcut.id)) {
39
- throw new Error("Skipping attempt to add duplicate shortcut ID to registry: ".concat(shortcut.id));
40
- }
22
+ static add(shortcut) {
23
+ if (ShortcutRegistry.shortcutMap.has(shortcut.id)) {
24
+ throw new Error("Skipping attempt to add duplicate shortcut ID to registry: ".concat(shortcut.id));
25
+ }
41
26
 
42
- var category = shortcut.id.split('.')[0];
43
- ShortcutRegistry.shortcutMap.set(shortcut.id, shortcut);
27
+ var category = shortcut.id.split('.')[0];
28
+ ShortcutRegistry.shortcutMap.set(shortcut.id, shortcut);
44
29
 
45
- if (ShortcutRegistry.shortcutsByCategory.has(category)) {
46
- var _ShortcutRegistry$sho;
30
+ if (ShortcutRegistry.shortcutsByCategory.has(category)) {
31
+ var _ShortcutRegistry$sho;
47
32
 
48
- (_ShortcutRegistry$sho = ShortcutRegistry.shortcutsByCategory.get(category)) === null || _ShortcutRegistry$sho === void 0 ? void 0 : _ShortcutRegistry$sho.push(shortcut);
49
- } else {
50
- ShortcutRegistry.shortcutsByCategory.set(category, [shortcut]);
51
- }
33
+ (_ShortcutRegistry$sho = ShortcutRegistry.shortcutsByCategory.get(category)) === null || _ShortcutRegistry$sho === void 0 ? void 0 : _ShortcutRegistry$sho.push(shortcut);
34
+ } else {
35
+ ShortcutRegistry.shortcutsByCategory.set(category, [shortcut]);
52
36
  }
53
- /**
54
- * Gets a shortcut from the registry from an ID
55
- * @param id ID of the shortcut
56
- * @returns The shortcut for that ID if it exists
57
- */
37
+ }
38
+ /**
39
+ * Gets a shortcut from the registry from an ID
40
+ * @param id ID of the shortcut
41
+ * @returns The shortcut for that ID if it exists
42
+ */
58
43
 
59
- }, {
60
- key: "get",
61
- value: function get(id) {
62
- return ShortcutRegistry.shortcutMap.get(id);
63
- }
64
- /**
65
- * Gets an array of any registered shortcuts with conflicting key states.
66
- * Only checks the key states of the current OS (Mac or Windows/Linux)
67
- * @param keyState
68
- * @returns Array of conflicting shortcuts. Empty array if none conflict
69
- */
70
44
 
71
- }, {
72
- key: "getConflictingShortcuts",
73
- value: function getConflictingShortcuts(keyState) {
74
- return Array.from(ShortcutRegistry.shortcutMap.values()).filter(function (shortcut) {
75
- return !shortcut.isNull() && shortcut.matchesKeyState(keyState);
76
- });
77
- }
78
- }]);
45
+ static get(id) {
46
+ return ShortcutRegistry.shortcutMap.get(id);
47
+ }
48
+ /**
49
+ * Gets an array of any registered shortcuts with conflicting key states.
50
+ * Only checks the key states of the current OS (Mac or Windows/Linux)
51
+ * @param keyState
52
+ * @returns Array of conflicting shortcuts. Empty array if none conflict
53
+ */
79
54
 
80
- return ShortcutRegistry;
81
- }();
55
+
56
+ static getConflictingShortcuts(keyState) {
57
+ return Array.from(ShortcutRegistry.shortcutMap.values()).filter(shortcut => !shortcut.isNull() && shortcut.matchesKeyState(keyState));
58
+ }
59
+
60
+ }
82
61
 
83
62
  _defineProperty(ShortcutRegistry, "shortcutMap", new Map());
84
63
 
85
64
  _defineProperty(ShortcutRegistry, "shortcutsByCategory", new Map());
86
-
87
- export { ShortcutRegistry as default };
88
65
  //# sourceMappingURL=ShortcutRegistry.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/shortcuts/ShortcutRegistry.ts"],"names":["Shortcut","ShortcutRegistry","params","shortcut","add","shortcutMap","has","id","Error","category","split","set","shortcutsByCategory","get","push","keyState","Array","from","values","filter","isNull","matchesKeyState","Map"],"mappings":";;;;;;;;AAAA,OAAOA,QAAP,MAAmC,YAAnC;;IAEqBC,gB;;;;;;;;AAKnB;AACF;AACA;AACA;AACA;AACA;AACE,0BACEC,MADF,EAEY;AACV,UAAMC,QAAQ,GAAG,IAAIH,QAAJ,CAAaE,MAAb,CAAjB;AACAD,MAAAA,gBAAgB,CAACG,GAAjB,CAAqBD,QAArB;AACA,aAAOA,QAAP;AACD;AAED;AACF;AACA;AACA;;;;WACE,aAAWA,QAAX,EAAqC;AACnC,UAAIF,gBAAgB,CAACI,WAAjB,CAA6BC,GAA7B,CAAiCH,QAAQ,CAACI,EAA1C,CAAJ,EAAmD;AACjD,cAAM,IAAIC,KAAJ,sEAC0DL,QAAQ,CAACI,EADnE,EAAN;AAGD;;AAED,UAAME,QAAQ,GAAGN,QAAQ,CAACI,EAAT,CAAYG,KAAZ,CAAkB,GAAlB,EAAuB,CAAvB,CAAjB;AAEAT,MAAAA,gBAAgB,CAACI,WAAjB,CAA6BM,GAA7B,CAAiCR,QAAQ,CAACI,EAA1C,EAA8CJ,QAA9C;;AACA,UAAIF,gBAAgB,CAACW,mBAAjB,CAAqCN,GAArC,CAAyCG,QAAzC,CAAJ,EAAwD;AAAA;;AACtD,iCAAAR,gBAAgB,CAACW,mBAAjB,CAAqCC,GAArC,CAAyCJ,QAAzC,iFAAoDK,IAApD,CAAyDX,QAAzD;AACD,OAFD,MAEO;AACLF,QAAAA,gBAAgB,CAACW,mBAAjB,CAAqCD,GAArC,CAAyCF,QAAzC,EAAmD,CAACN,QAAD,CAAnD;AACD;AACF;AAED;AACF;AACA;AACA;AACA;;;;WACE,aAAWI,EAAX,EAA6C;AAC3C,aAAON,gBAAgB,CAACI,WAAjB,CAA6BQ,GAA7B,CAAiCN,EAAjC,CAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,iCAA+BQ,QAA/B,EAA+D;AAC7D,aAAOC,KAAK,CAACC,IAAN,CAAWhB,gBAAgB,CAACI,WAAjB,CAA6Ba,MAA7B,EAAX,EAAkDC,MAAlD,CACL,UAAAhB,QAAQ;AAAA,eAAI,CAACA,QAAQ,CAACiB,MAAT,EAAD,IAAsBjB,QAAQ,CAACkB,eAAT,CAAyBN,QAAzB,CAA1B;AAAA,OADH,CAAP;AAGD;;;;;;gBA3DkBd,gB,iBACW,IAAIqB,GAAJ,E;;gBADXrB,gB,yBAGmB,IAAIqB,GAAJ,E;;SAHnBrB,gB","sourcesContent":["import Shortcut, { KeyState } from './Shortcut';\n\nexport default class ShortcutRegistry {\n static readonly shortcutMap = new Map<string, Shortcut>();\n\n static readonly shortcutsByCategory = new Map<string, Shortcut[]>();\n\n /**\n * Creates a Shortcut and adds it to the registry\n * @param params The constructor params for the {@link Shortcut}\n * @param category The category this will show up under in the settings menu. If omitted, shortcut will be hidden in settings\n * @returns The created Shortcut\n */\n static createAndAdd(\n params: ConstructorParameters<typeof Shortcut>[0]\n ): Shortcut {\n const shortcut = new Shortcut(params);\n ShortcutRegistry.add(shortcut);\n return shortcut;\n }\n\n /**\n * Adds a shortcut to the registry. Throws if a shortcut with the same ID already exists\n * @param shortcut Shortcut to add to the registry\n */\n static add(shortcut: Shortcut): void {\n if (ShortcutRegistry.shortcutMap.has(shortcut.id)) {\n throw new Error(\n `Skipping attempt to add duplicate shortcut ID to registry: ${shortcut.id}`\n );\n }\n\n const category = shortcut.id.split('.')[0];\n\n ShortcutRegistry.shortcutMap.set(shortcut.id, shortcut);\n if (ShortcutRegistry.shortcutsByCategory.has(category)) {\n ShortcutRegistry.shortcutsByCategory.get(category)?.push(shortcut);\n } else {\n ShortcutRegistry.shortcutsByCategory.set(category, [shortcut]);\n }\n }\n\n /**\n * Gets a shortcut from the registry from an ID\n * @param id ID of the shortcut\n * @returns The shortcut for that ID if it exists\n */\n static get(id: string): Shortcut | undefined {\n return ShortcutRegistry.shortcutMap.get(id);\n }\n\n /**\n * Gets an array of any registered shortcuts with conflicting key states.\n * Only checks the key states of the current OS (Mac or Windows/Linux)\n * @param keyState\n * @returns Array of conflicting shortcuts. Empty array if none conflict\n */\n static getConflictingShortcuts(keyState: KeyState): Shortcut[] {\n return Array.from(ShortcutRegistry.shortcutMap.values()).filter(\n shortcut => !shortcut.isNull() && shortcut.matchesKeyState(keyState)\n );\n }\n}\n"],"file":"ShortcutRegistry.js"}
1
+ {"version":3,"sources":["../../src/shortcuts/ShortcutRegistry.ts"],"names":["Shortcut","ShortcutRegistry","createAndAdd","params","shortcut","add","shortcutMap","has","id","Error","category","split","set","shortcutsByCategory","get","push","getConflictingShortcuts","keyState","Array","from","values","filter","isNull","matchesKeyState","Map"],"mappings":";;OAAOA,Q;AAEP,eAAe,MAAMC,gBAAN,CAAuB;AAKpC;AACF;AACA;AACA;AACA;AACA;AACqB,SAAZC,YAAY,CACjBC,MADiB,EAEP;AACV,QAAMC,QAAQ,GAAG,IAAIJ,QAAJ,CAAaG,MAAb,CAAjB;AACAF,IAAAA,gBAAgB,CAACI,GAAjB,CAAqBD,QAArB;AACA,WAAOA,QAAP;AACD;AAED;AACF;AACA;AACA;;;AACY,SAAHC,GAAG,CAACD,QAAD,EAA2B;AACnC,QAAIH,gBAAgB,CAACK,WAAjB,CAA6BC,GAA7B,CAAiCH,QAAQ,CAACI,EAA1C,CAAJ,EAAmD;AACjD,YAAM,IAAIC,KAAJ,sEAC0DL,QAAQ,CAACI,EADnE,EAAN;AAGD;;AAED,QAAME,QAAQ,GAAGN,QAAQ,CAACI,EAAT,CAAYG,KAAZ,CAAkB,GAAlB,EAAuB,CAAvB,CAAjB;AAEAV,IAAAA,gBAAgB,CAACK,WAAjB,CAA6BM,GAA7B,CAAiCR,QAAQ,CAACI,EAA1C,EAA8CJ,QAA9C;;AACA,QAAIH,gBAAgB,CAACY,mBAAjB,CAAqCN,GAArC,CAAyCG,QAAzC,CAAJ,EAAwD;AAAA;;AACtD,+BAAAT,gBAAgB,CAACY,mBAAjB,CAAqCC,GAArC,CAAyCJ,QAAzC,iFAAoDK,IAApD,CAAyDX,QAAzD;AACD,KAFD,MAEO;AACLH,MAAAA,gBAAgB,CAACY,mBAAjB,CAAqCD,GAArC,CAAyCF,QAAzC,EAAmD,CAACN,QAAD,CAAnD;AACD;AACF;AAED;AACF;AACA;AACA;AACA;;;AACY,SAAHU,GAAG,CAACN,EAAD,EAAmC;AAC3C,WAAOP,gBAAgB,CAACK,WAAjB,CAA6BQ,GAA7B,CAAiCN,EAAjC,CAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACgC,SAAvBQ,uBAAuB,CAACC,QAAD,EAAiC;AAC7D,WAAOC,KAAK,CAACC,IAAN,CAAWlB,gBAAgB,CAACK,WAAjB,CAA6Bc,MAA7B,EAAX,EAAkDC,MAAlD,CACLjB,QAAQ,IAAI,CAACA,QAAQ,CAACkB,MAAT,EAAD,IAAsBlB,QAAQ,CAACmB,eAAT,CAAyBN,QAAzB,CAD7B,CAAP;AAGD;;AA3DmC;;gBAAjBhB,gB,iBACW,IAAIuB,GAAJ,E;;gBADXvB,gB,yBAGmB,IAAIuB,GAAJ,E","sourcesContent":["import Shortcut, { KeyState } from './Shortcut';\n\nexport default class ShortcutRegistry {\n static readonly shortcutMap = new Map<string, Shortcut>();\n\n static readonly shortcutsByCategory = new Map<string, Shortcut[]>();\n\n /**\n * Creates a Shortcut and adds it to the registry\n * @param params The constructor params for the {@link Shortcut}\n * @param category The category this will show up under in the settings menu. If omitted, shortcut will be hidden in settings\n * @returns The created Shortcut\n */\n static createAndAdd(\n params: ConstructorParameters<typeof Shortcut>[0]\n ): Shortcut {\n const shortcut = new Shortcut(params);\n ShortcutRegistry.add(shortcut);\n return shortcut;\n }\n\n /**\n * Adds a shortcut to the registry. Throws if a shortcut with the same ID already exists\n * @param shortcut Shortcut to add to the registry\n */\n static add(shortcut: Shortcut): void {\n if (ShortcutRegistry.shortcutMap.has(shortcut.id)) {\n throw new Error(\n `Skipping attempt to add duplicate shortcut ID to registry: ${shortcut.id}`\n );\n }\n\n const category = shortcut.id.split('.')[0];\n\n ShortcutRegistry.shortcutMap.set(shortcut.id, shortcut);\n if (ShortcutRegistry.shortcutsByCategory.has(category)) {\n ShortcutRegistry.shortcutsByCategory.get(category)?.push(shortcut);\n } else {\n ShortcutRegistry.shortcutsByCategory.set(category, [shortcut]);\n }\n }\n\n /**\n * Gets a shortcut from the registry from an ID\n * @param id ID of the shortcut\n * @returns The shortcut for that ID if it exists\n */\n static get(id: string): Shortcut | undefined {\n return ShortcutRegistry.shortcutMap.get(id);\n }\n\n /**\n * Gets an array of any registered shortcuts with conflicting key states.\n * Only checks the key states of the current OS (Mac or Windows/Linux)\n * @param keyState\n * @returns Array of conflicting shortcuts. Empty array if none conflict\n */\n static getConflictingShortcuts(keyState: KeyState): Shortcut[] {\n return Array.from(ShortcutRegistry.shortcutMap.values()).filter(\n shortcut => !shortcut.isNull() && shortcut.matchesKeyState(keyState)\n );\n }\n}\n"],"file":"ShortcutRegistry.js"}
@@ -1,5 +1,5 @@
1
- export { default as GLOBAL_SHORTCUTS } from './GlobalShortcuts';
2
- export { default as Shortcut } from './Shortcut';
3
- export * from './Shortcut';
4
- export { default as ShortcutRegistry } from './ShortcutRegistry';
1
+ export { default as GLOBAL_SHORTCUTS } from "./GlobalShortcuts.js";
2
+ export { default as Shortcut } from "./Shortcut.js";
3
+ export * from "./Shortcut.js";
4
+ export { default as ShortcutRegistry } from "./ShortcutRegistry.js";
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/shortcuts/index.ts"],"names":["default","GLOBAL_SHORTCUTS","Shortcut","ShortcutRegistry"],"mappings":"AAAA,SAASA,OAAO,IAAIC,gBAApB,QAA4C,mBAA5C;AACA,SAASD,OAAO,IAAIE,QAApB,QAAoC,YAApC;AACA,cAAc,YAAd;AACA,SAASF,OAAO,IAAIG,gBAApB,QAA4C,oBAA5C","sourcesContent":["export { default as GLOBAL_SHORTCUTS } from './GlobalShortcuts';\nexport { default as Shortcut } from './Shortcut';\nexport * from './Shortcut';\nexport { default as ShortcutRegistry } from './ShortcutRegistry';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/shortcuts/index.ts"],"names":["default","GLOBAL_SHORTCUTS","Shortcut","ShortcutRegistry"],"mappings":"SAASA,OAAO,IAAIC,gB;SACXD,OAAO,IAAIE,Q;;SAEXF,OAAO,IAAIG,gB","sourcesContent":["export { default as GLOBAL_SHORTCUTS } from './GlobalShortcuts';\nexport { default as Shortcut } from './Shortcut';\nexport * from './Shortcut';\nexport { default as ShortcutRegistry } from './ShortcutRegistry';\n"],"file":"index.js"}