bootstrap.js 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. document.addEventListener("DOMContentLoaded", function() {
  2. FormHandler.handleSubmitButtons();
  3. let touchHandler = new TouchHandler();
  4. touchHandler.listen();
  5. let navHandler = new NavHandler();
  6. let keyboardHandler = new KeyboardHandler();
  7. keyboardHandler.on("g u", () => navHandler.goToPage("unread"));
  8. keyboardHandler.on("g b", () => navHandler.goToPage("starred"));
  9. keyboardHandler.on("g h", () => navHandler.goToPage("history"));
  10. keyboardHandler.on("g f", () => navHandler.goToPage("feeds"));
  11. keyboardHandler.on("g c", () => navHandler.goToPage("categories"));
  12. keyboardHandler.on("g s", () => navHandler.goToPage("settings"));
  13. keyboardHandler.on("ArrowLeft", () => navHandler.goToPrevious());
  14. keyboardHandler.on("ArrowRight", () => navHandler.goToNext());
  15. keyboardHandler.on("j", () => navHandler.goToPrevious());
  16. keyboardHandler.on("p", () => navHandler.goToPrevious());
  17. keyboardHandler.on("k", () => navHandler.goToNext());
  18. keyboardHandler.on("n", () => navHandler.goToNext());
  19. keyboardHandler.on("h", () => navHandler.goToPage("previous"));
  20. keyboardHandler.on("l", () => navHandler.goToPage("next"));
  21. keyboardHandler.on("o", () => navHandler.openSelectedItem());
  22. keyboardHandler.on("v", () => navHandler.openOriginalLink());
  23. keyboardHandler.on("m", () => navHandler.toggleEntryStatus());
  24. keyboardHandler.on("A", () => navHandler.markPageAsRead());
  25. keyboardHandler.on("s", () => navHandler.saveEntry());
  26. keyboardHandler.on("d", () => navHandler.fetchOriginalContent());
  27. keyboardHandler.on("f", () => navHandler.toggleBookmark());
  28. keyboardHandler.on("?", () => navHandler.showKeyboardShortcuts());
  29. keyboardHandler.on("/", (e) => navHandler.setFocusToSearchInput(e));
  30. keyboardHandler.on("Escape", () => ModalHandler.close());
  31. keyboardHandler.listen();
  32. let mouseHandler = new MouseHandler();
  33. mouseHandler.onClick("a[data-save-entry]", (event) => {
  34. EntryHandler.saveEntry(event.target);
  35. });
  36. mouseHandler.onClick("a[data-toggle-bookmark]", (event) => {
  37. EntryHandler.toggleBookmark(event.target);
  38. });
  39. mouseHandler.onClick("a[data-toggle-status]", (event) => {
  40. let currentItem = DomHelper.findParent(event.target, "entry");
  41. if (! currentItem) {
  42. currentItem = DomHelper.findParent(event.target, "item");
  43. }
  44. if (currentItem) {
  45. EntryHandler.toggleEntryStatus(currentItem);
  46. }
  47. });
  48. mouseHandler.onClick("a[data-fetch-content-entry]", (event) => {
  49. EntryHandler.fetchOriginalContent(event.target);
  50. });
  51. mouseHandler.onClick("a[data-on-click=markPageAsRead]", () => navHandler.markPageAsRead());
  52. mouseHandler.onClick("a[data-confirm]", (event) => {
  53. (new ConfirmHandler()).handle(event);
  54. });
  55. mouseHandler.onClick("a[data-action=search]", (event) => {
  56. navHandler.setFocusToSearchInput(event);
  57. });
  58. mouseHandler.onClick("a[data-link-state=flip]", (event) => {
  59. LinkStateHandler.flip(event.target);
  60. }, true);
  61. if (document.documentElement.clientWidth < 600) {
  62. let menuHandler = new MenuHandler();
  63. mouseHandler.onClick(".logo", () => menuHandler.toggleMainMenu());
  64. mouseHandler.onClick(".header nav li", (event) => menuHandler.clickMenuListItem(event));
  65. }
  66. if ("serviceWorker" in navigator) {
  67. let scriptElement = document.getElementById("service-worker-script");
  68. if (scriptElement) {
  69. navigator.serviceWorker.register(scriptElement.src);
  70. }
  71. }
  72. });