@fc3/mmcadi 0.1.66 → 0.1.68

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 (201) hide show
  1. package/dist/.last-compile-time +1 -1
  2. package/dist/.last-publish-time +1 -1
  3. package/dist/client.js +175 -79
  4. package/dist/src/client/factory/page.js +2 -2
  5. package/dist/src/client/factory/page.js.map +1 -1
  6. package/dist/src/client/helper/interaction.js +18 -15
  7. package/dist/src/client/helper/interaction.js.map +1 -1
  8. package/dist/src/client/page/add-block-to-playlist.js +1 -2
  9. package/dist/src/client/page/add-block-to-playlist.js.map +1 -1
  10. package/dist/src/client/page/create-block.js.map +1 -1
  11. package/dist/src/client/page/cursor.js +39 -13
  12. package/dist/src/client/page/cursor.js.map +1 -1
  13. package/dist/src/client/page/day.js +1 -2
  14. package/dist/src/client/page/day.js.map +1 -1
  15. package/dist/src/client/page/edit-block.js +6 -1
  16. package/dist/src/client/page/edit-block.js.map +1 -1
  17. package/dist/src/client/page/home.js +1 -2
  18. package/dist/src/client/page/home.js.map +1 -1
  19. package/dist/src/client/page/login.js +1 -2
  20. package/dist/src/client/page/login.js.map +1 -1
  21. package/dist/src/client/page/logout.js +1 -2
  22. package/dist/src/client/page/logout.js.map +1 -1
  23. package/dist/src/client/page/month.js +1 -2
  24. package/dist/src/client/page/month.js.map +1 -1
  25. package/dist/src/client/page/move-block.js +1 -2
  26. package/dist/src/client/page/move-block.js.map +1 -1
  27. package/dist/src/client/page/role.js +1 -2
  28. package/dist/src/client/page/role.js.map +1 -1
  29. package/dist/src/client/page/select-block-destination.js +1 -2
  30. package/dist/src/client/page/select-block-destination.js.map +1 -1
  31. package/dist/src/client/page/settings.js +1 -2
  32. package/dist/src/client/page/settings.js.map +1 -1
  33. package/dist/src/client/page/view-custom.js.map +1 -1
  34. package/dist/src/client/page/view-playlist.d.ts +1 -1
  35. package/dist/src/client/page/view-playlist.js +1 -1
  36. package/dist/src/client/page/view-playlist.js.map +1 -1
  37. package/dist/src/client/page/week.js +1 -2
  38. package/dist/src/client/page/week.js.map +1 -1
  39. package/dist/src/client/page/year.js +1 -2
  40. package/dist/src/client/page/year.js.map +1 -1
  41. package/dist/src/client/page.d.ts +1 -1
  42. package/dist/src/client/page.js +10 -5
  43. package/dist/src/client/page.js.map +1 -1
  44. package/dist/src/client/shim/logger.d.ts +3 -3
  45. package/dist/src/client/shim/logger.js +7 -3
  46. package/dist/src/client/shim/logger.js.map +1 -1
  47. package/dist/src/client/shim/process.d.ts +2 -2
  48. package/dist/src/client/shim/process.js +3 -2
  49. package/dist/src/client/shim/process.js.map +1 -1
  50. package/dist/src/client/utility/recompute-index-paths.js.map +1 -1
  51. package/dist/src/common/builder/block/button.d.ts +3 -0
  52. package/dist/src/common/builder/block/button.js +18 -0
  53. package/dist/src/common/builder/block/button.js.map +1 -0
  54. package/dist/src/common/utility/get-input-character-for-block-type.js +2 -1
  55. package/dist/src/common/utility/get-input-character-for-block-type.js.map +1 -1
  56. package/dist/src/common/utility/get-parameter.js.map +1 -1
  57. package/dist/src/constant/role/public.js.map +1 -1
  58. package/dist/src/constant/role/unknown.js.map +1 -1
  59. package/dist/src/enum/block-type.d.ts +2 -1
  60. package/dist/src/enum/block-type.js +1 -0
  61. package/dist/src/enum/block-type.js.map +1 -1
  62. package/dist/src/enum/calendar-view-mode.js.map +1 -1
  63. package/dist/src/enum/emoji.d.ts +2 -2
  64. package/dist/src/enum/emoji.js +2 -2
  65. package/dist/src/enum/emoji.js.map +1 -1
  66. package/dist/src/enum/permission-type.js +0 -1
  67. package/dist/src/enum/permission-type.js.map +1 -1
  68. package/dist/src/enum/tool-type.js.map +1 -1
  69. package/dist/src/index.d.ts +1 -0
  70. package/dist/src/index.js +3 -1
  71. package/dist/src/index.js.map +1 -1
  72. package/dist/src/server/endpoint/abstract-page.d.ts +1 -1
  73. package/dist/src/server/endpoint/abstract-page.js +4 -5
  74. package/dist/src/server/endpoint/abstract-page.js.map +1 -1
  75. package/dist/src/server/endpoint/action/create.js +30 -14
  76. package/dist/src/server/endpoint/action/create.js.map +1 -1
  77. package/dist/src/server/endpoint/action/get.d.ts +1 -1
  78. package/dist/src/server/endpoint/action/get.js +8 -5
  79. package/dist/src/server/endpoint/action/get.js.map +1 -1
  80. package/dist/src/server/endpoint/base.js.map +1 -1
  81. package/dist/src/server/endpoint/generic-page.js +1 -1
  82. package/dist/src/server/endpoint/generic-page.js.map +1 -1
  83. package/dist/src/server/endpoint/history.d.ts +1 -1
  84. package/dist/src/server/endpoint/history.js +1 -3
  85. package/dist/src/server/endpoint/history.js.map +1 -1
  86. package/dist/src/server/endpoint/login.d.ts +1 -1
  87. package/dist/src/server/endpoint/login.js +1 -3
  88. package/dist/src/server/endpoint/login.js.map +1 -1
  89. package/dist/src/server/endpoint/logout.d.ts +1 -1
  90. package/dist/src/server/endpoint/logout.js +1 -4
  91. package/dist/src/server/endpoint/logout.js.map +1 -1
  92. package/dist/src/server/endpoint/month.js +1 -4
  93. package/dist/src/server/endpoint/month.js.map +1 -1
  94. package/dist/src/server/endpoint/playlist/create.js.map +1 -1
  95. package/dist/src/server/endpoint/playlist/get.d.ts +1 -1
  96. package/dist/src/server/endpoint/playlist/get.js.map +1 -1
  97. package/dist/src/server/endpoint/robots.js +1 -3
  98. package/dist/src/server/endpoint/robots.js.map +1 -1
  99. package/dist/src/server/endpoint/session/create.js +1 -4
  100. package/dist/src/server/endpoint/session/create.js.map +1 -1
  101. package/dist/src/server/endpoint/settings/get.d.ts +1 -1
  102. package/dist/src/server/endpoint/settings/get.js +1 -3
  103. package/dist/src/server/endpoint/settings/get.js.map +1 -1
  104. package/dist/src/server/endpoint/settings/update.js +1 -4
  105. package/dist/src/server/endpoint/settings/update.js.map +1 -1
  106. package/dist/src/server/endpoint/week.js +1 -4
  107. package/dist/src/server/endpoint/week.js.map +1 -1
  108. package/dist/src/server/endpoint/year.js +1 -4
  109. package/dist/src/server/endpoint/year.js.map +1 -1
  110. package/dist/src/server/factory/block-serializer.js +3 -0
  111. package/dist/src/server/factory/block-serializer.js.map +1 -1
  112. package/dist/src/server/middleware/base.js.map +1 -1
  113. package/dist/src/server/middleware/error-handler.js +20 -41
  114. package/dist/src/server/middleware/error-handler.js.map +1 -1
  115. package/dist/src/server/middleware/static-file.js.map +1 -1
  116. package/dist/src/server/operation/add-block.js +2 -1
  117. package/dist/src/server/operation/add-block.js.map +1 -1
  118. package/dist/src/server/operation/add-entry-to-playlist.js +1 -4
  119. package/dist/src/server/operation/add-entry-to-playlist.js.map +1 -1
  120. package/dist/src/server/operation/build-block-move-targets.d.ts +13 -0
  121. package/dist/src/server/operation/build-block-move-targets.js +117 -0
  122. package/dist/src/server/operation/build-block-move-targets.js.map +1 -0
  123. package/dist/src/server/operation/create-session.js.map +1 -1
  124. package/dist/src/server/operation/delete-block.js.map +1 -1
  125. package/dist/src/server/operation/demote-block.js +2 -9
  126. package/dist/src/server/operation/demote-block.js.map +1 -1
  127. package/dist/src/server/operation/hide-block.js.map +1 -1
  128. package/dist/src/server/operation/load-block.js +7 -0
  129. package/dist/src/server/operation/load-block.js.map +1 -1
  130. package/dist/src/server/operation/load-page.d.ts +1 -2
  131. package/dist/src/server/operation/load-page.js +39 -76
  132. package/dist/src/server/operation/load-page.js.map +1 -1
  133. package/dist/src/server/operation/move-block.js +17 -0
  134. package/dist/src/server/operation/move-block.js.map +1 -1
  135. package/dist/src/server/operation/promote-block.js.map +1 -1
  136. package/dist/src/server/operation/reposition-block.js.map +1 -1
  137. package/dist/src/server/operation/store-file.js.map +1 -1
  138. package/dist/src/server/operation/update-account-settings.js.map +1 -1
  139. package/dist/src/server/operation/update-block.js.map +1 -1
  140. package/dist/src/server/repository/filesystem.js +1 -4
  141. package/dist/src/server/repository/filesystem.js.map +1 -1
  142. package/dist/src/server/repository/memory.js +2 -8
  143. package/dist/src/server/repository/memory.js.map +1 -1
  144. package/dist/src/server/serializer/action.d.ts +1 -1
  145. package/dist/src/server/serializer/action.js +137 -74
  146. package/dist/src/server/serializer/action.js.map +1 -1
  147. package/dist/src/server/serializer/base.js +53 -2
  148. package/dist/src/server/serializer/base.js.map +1 -1
  149. package/dist/src/server/serializer/block/calendar.js +6 -2
  150. package/dist/src/server/serializer/block/calendar.js.map +1 -1
  151. package/dist/src/server/serializer/block/folder.js.map +1 -1
  152. package/dist/src/server/serializer/block/image.js.map +1 -1
  153. package/dist/src/server/serializer/block/list.js.map +1 -1
  154. package/dist/src/server/serializer/block/multi-column.js +1 -1
  155. package/dist/src/server/serializer/block/multi-column.js.map +1 -1
  156. package/dist/src/server/serializer/block/table.js.map +1 -1
  157. package/dist/src/server/serializer/block/term.d.ts +6 -0
  158. package/dist/src/server/serializer/block/term.js +33 -0
  159. package/dist/src/server/serializer/block/term.js.map +1 -0
  160. package/dist/src/server/serializer/block.js.map +1 -1
  161. package/dist/src/server/serializer/common/time-place-options.js.map +1 -1
  162. package/dist/src/server/serializer/page.d.ts +1 -0
  163. package/dist/src/server/serializer/page.js +10 -1
  164. package/dist/src/server/serializer/page.js.map +1 -1
  165. package/dist/src/server/serializer/settings.js.map +1 -1
  166. package/dist/src/server/serializer/week.js +1 -5
  167. package/dist/src/server/serializer/week.js.map +1 -1
  168. package/dist/src/server/utility/accepts-content-type.js.map +1 -1
  169. package/dist/src/server/utility/create-date.js.map +1 -1
  170. package/dist/src/server/utility/dates-are-on-the-same-day.js +3 -3
  171. package/dist/src/server/utility/dates-are-on-the-same-day.js.map +1 -1
  172. package/dist/src/server/utility/day-to-date.js.map +1 -1
  173. package/dist/src/server/utility/get-emoji-for-block-type.js +2 -1
  174. package/dist/src/server/utility/get-emoji-for-block-type.js.map +1 -1
  175. package/dist/src/server/utility/get-end-of-week.js.map +1 -1
  176. package/dist/src/server/utility/get-label-for-time-place-visibility.js.map +1 -1
  177. package/dist/src/server/utility/get-random-emoji-for-date.js +4 -4
  178. package/dist/src/server/utility/get-random-emoji-for-date.js.map +1 -1
  179. package/dist/src/server/utility/get-siblings-and-index-for-index-path.js.map +1 -1
  180. package/dist/src/server/utility/get-thumbnail-filename.js.map +1 -1
  181. package/dist/src/server/utility/key-to-date.js.map +1 -1
  182. package/dist/src/server/utility/month-to-date.js +1 -1
  183. package/dist/src/server/utility/month-to-date.js.map +1 -1
  184. package/dist/src/server/utility/satisfies-role.js.map +1 -1
  185. package/dist/src/server/utility/validate-url.js +1 -1
  186. package/dist/src/server/utility/validate-url.js.map +1 -1
  187. package/dist/src/server.js.map +1 -1
  188. package/dist/src/type/action/add-block.d.ts +6 -1
  189. package/dist/src/type/action/edit-block.js +0 -1
  190. package/dist/src/type/action/edit-block.js.map +1 -1
  191. package/dist/src/type/action/move-block.d.ts +6 -0
  192. package/dist/src/type/block/term.d.ts +8 -0
  193. package/dist/src/type/block/term.js +3 -0
  194. package/dist/src/type/block/term.js.map +1 -0
  195. package/dist/src/type/page.d.ts +1 -0
  196. package/dist/test/unit/index.js +1 -1
  197. package/dist/test/unit/index.js.map +1 -1
  198. package/dist/test/unit/server/operation/promote-block.js +2 -1
  199. package/dist/test/unit/server/operation/promote-block.js.map +1 -1
  200. package/dist/tsconfig.tsbuildinfo +1 -1
  201. package/package.json +1 -1
@@ -1 +1 @@
1
- 1770382819
1
+ 1771260790
@@ -1 +1 @@
1
- 1770382884
1
+ 1771260824
package/dist/client.js CHANGED
@@ -363,12 +363,12 @@
363
363
  bindProcessLifespanTo: () => bindProcessLifespanTo,
364
364
  execute: () => execute
365
365
  });
366
- function execute(command) {
366
+ function execute(_command) {
367
367
  throw new import_errors.InvariantViolation(`
368
368
  Tried to call process.execute() in client context
369
369
  `);
370
370
  }
371
- function bindProcessLifespanTo(promise) {
371
+ function bindProcessLifespanTo(_promise) {
372
372
  throw new import_errors.InvariantViolation(`
373
373
  Tried to call process.bindProcessLifespanTo in client context
374
374
  `);
@@ -1810,7 +1810,15 @@
1810
1810
  }
1811
1811
  initEvents() {
1812
1812
  window.addEventListener("keydown", (event) => {
1813
+ const target = event.target;
1814
+ if (target === null) {
1815
+ return;
1816
+ }
1817
+ const input = target.closest("input, textarea");
1813
1818
  const key_code = event.keyCode || event.charCode;
1819
+ if (input !== null) {
1820
+ return;
1821
+ }
1814
1822
  this.shift_pressed = event.shiftKey;
1815
1823
  this.handleKey(key_code);
1816
1824
  if (key_code !== key_code_default.SHIFT) {
@@ -1820,7 +1828,7 @@
1820
1828
  }
1821
1829
  initView() {
1822
1830
  }
1823
- handleKey(key_code) {
1831
+ handleKey(_key_code) {
1824
1832
  }
1825
1833
  getPreviousKeyCode() {
1826
1834
  return this.previous_key_code;
@@ -1839,10 +1847,7 @@
1839
1847
  const [target_top, viewport_min] = (() => {
1840
1848
  const header = document.querySelector("header");
1841
1849
  if (header === null) {
1842
- return [
1843
- current_top,
1844
- window.scrollY
1845
- ];
1850
+ return [current_top, window.scrollY];
1846
1851
  } else {
1847
1852
  return [
1848
1853
  current_top - header.offsetHeight,
@@ -1937,6 +1942,7 @@
1937
1942
  BlockType2["CARD"] = "card";
1938
1943
  BlockType2["TABLE"] = "table";
1939
1944
  BlockType2["BUTTON"] = "button";
1945
+ BlockType2["TERM"] = "term";
1940
1946
  return BlockType2;
1941
1947
  })(BlockType || {});
1942
1948
  var block_type_default = BlockType;
@@ -2157,7 +2163,8 @@
2157
2163
  [block_type_default.PARAMETER]: "p",
2158
2164
  [block_type_default.CARD]: "c",
2159
2165
  [block_type_default.TABLE]: "",
2160
- [block_type_default.BUTTON]: ""
2166
+ [block_type_default.BUTTON]: "",
2167
+ [block_type_default.TERM]: "g"
2161
2168
  };
2162
2169
  function getInputCharacterForBlockType(block_type) {
2163
2170
  const character = BlockTypeCharacters[block_type];
@@ -2366,7 +2373,9 @@
2366
2373
  Tried to read block parent element, but it was not set
2367
2374
  `);
2368
2375
  }
2369
- const multicolumn_ancestor = block_parent.closest("section.block.multi_column");
2376
+ const multicolumn_ancestor = block_parent.closest(
2377
+ "section.block.multi_column"
2378
+ );
2370
2379
  if (multicolumn_ancestor === null) {
2371
2380
  const index_path = index.toString();
2372
2381
  block.setAttribute("data-index-path", index_path);
@@ -2406,30 +2415,62 @@
2406
2415
  return;
2407
2416
  }
2408
2417
  this.applyNonInteractiveClasses();
2409
- document.addEventListener("touchstart", (event) => {
2410
- this.handleTouchStart(event);
2411
- }, { capture: true });
2412
- document.addEventListener("mousedown", (event) => {
2413
- this.handleTouchStart(event);
2414
- }, { capture: true });
2415
- document.addEventListener("touchmove", (event) => {
2416
- this.handleTouchMove(event);
2417
- }, { capture: true, passive: false });
2418
- document.addEventListener("mousemove", (event) => {
2419
- this.handleTouchMove(event);
2420
- }, { capture: true, passive: false });
2421
- document.addEventListener("touchend", (event) => {
2422
- this.handleTouchEnd();
2423
- }, { capture: true });
2424
- document.addEventListener("mouseup", (event) => {
2425
- this.handleTouchEnd();
2426
- }, { capture: true });
2427
- document.addEventListener("click", (event) => {
2428
- this.handleGenericClick(event);
2429
- }, { capture: true });
2430
- document.addEventListener("dragstart", (event) => {
2431
- this.handleNativeDragStart(event);
2432
- }, { capture: true });
2418
+ document.addEventListener(
2419
+ "touchstart",
2420
+ (event) => {
2421
+ this.handleTouchStart(event);
2422
+ },
2423
+ { capture: true }
2424
+ );
2425
+ document.addEventListener(
2426
+ "mousedown",
2427
+ (event) => {
2428
+ this.handleTouchStart(event);
2429
+ },
2430
+ { capture: true }
2431
+ );
2432
+ document.addEventListener(
2433
+ "touchmove",
2434
+ (event) => {
2435
+ this.handleTouchMove(event);
2436
+ },
2437
+ { capture: true, passive: false }
2438
+ );
2439
+ document.addEventListener(
2440
+ "mousemove",
2441
+ (event) => {
2442
+ this.handleTouchMove(event);
2443
+ },
2444
+ { capture: true, passive: false }
2445
+ );
2446
+ document.addEventListener(
2447
+ "touchend",
2448
+ (_event) => {
2449
+ this.handleTouchEnd();
2450
+ },
2451
+ { capture: true }
2452
+ );
2453
+ document.addEventListener(
2454
+ "mouseup",
2455
+ (_event) => {
2456
+ this.handleTouchEnd();
2457
+ },
2458
+ { capture: true }
2459
+ );
2460
+ document.addEventListener(
2461
+ "click",
2462
+ (event) => {
2463
+ this.handleGenericClick(event);
2464
+ },
2465
+ { capture: true }
2466
+ );
2467
+ document.addEventListener(
2468
+ "dragstart",
2469
+ (event) => {
2470
+ this.handleNativeDragStart(event);
2471
+ },
2472
+ { capture: true }
2473
+ );
2433
2474
  }
2434
2475
  isDragging() {
2435
2476
  const elements = Array.from(document.querySelectorAll(".dragging"));
@@ -2527,8 +2568,8 @@
2527
2568
  ghost.classList.add("ghost");
2528
2569
  ghost.setAttribute("data-for", index_path);
2529
2570
  candidate.classList.remove("drag-candidate");
2530
- const { parentNode } = candidate;
2531
- if (parentNode === null) {
2571
+ const parent_node = candidate.parentNode;
2572
+ if (parent_node === null) {
2532
2573
  throw new import_errors11.InvariantViolation(`
2533
2574
  Expected drag candidate to be located in a parent, but it was null
2534
2575
  `);
@@ -2544,7 +2585,7 @@
2544
2585
  candidate.setAttribute("data-drag-start-y", rect.top.toString());
2545
2586
  candidate.setAttribute("data-dragging", "true");
2546
2587
  candidate.classList.add("dragging");
2547
- parentNode.insertBefore(ghost, candidate);
2588
+ parent_node.insertBefore(ghost, candidate);
2548
2589
  });
2549
2590
  }
2550
2591
  handleNativeDragStart(event) {
@@ -2744,10 +2785,7 @@
2744
2785
  const new_x = parsed_x + x_delta;
2745
2786
  const new_y = Math.max(
2746
2787
  container_rect.top,
2747
- Math.min(
2748
- parsed_y + y_delta,
2749
- container_rect.bottom
2750
- )
2788
+ Math.min(parsed_y + y_delta, container_rect.bottom)
2751
2789
  );
2752
2790
  block.style.left = `${new_x}px`;
2753
2791
  block.style.top = `${new_y}px`;
@@ -2888,11 +2926,11 @@
2888
2926
  if (sibling === block) {
2889
2927
  continue;
2890
2928
  }
2891
- const { classList } = sibling;
2892
- if (!classList.contains("block")) {
2929
+ const class_list = sibling.classList;
2930
+ if (!class_list.contains("block")) {
2893
2931
  continue;
2894
2932
  }
2895
- if (classList.contains("ghost")) {
2933
+ if (class_list.contains("ghost")) {
2896
2934
  continue;
2897
2935
  }
2898
2936
  return sibling;
@@ -2913,11 +2951,11 @@
2913
2951
  if (sibling === block) {
2914
2952
  continue;
2915
2953
  }
2916
- const { classList } = sibling;
2917
- if (!classList.contains("block")) {
2954
+ const class_list = sibling.classList;
2955
+ if (!class_list.contains("block")) {
2918
2956
  continue;
2919
2957
  }
2920
- if (classList.contains("ghost")) {
2958
+ if (class_list.contains("ghost")) {
2921
2959
  continue;
2922
2960
  }
2923
2961
  return sibling;
@@ -2927,6 +2965,7 @@
2927
2965
  handleTouchEnd() {
2928
2966
  this.demoteAllDragCandidates();
2929
2967
  this.cancelDelayedDrag();
2968
+ this.setDragStartCoordinate(null);
2930
2969
  if (this.isSwiping()) {
2931
2970
  this.deactivateSwiping();
2932
2971
  }
@@ -3103,29 +3142,49 @@
3103
3142
  }
3104
3143
  initEvents() {
3105
3144
  super.initEvents();
3106
- document.addEventListener("canplay", (event) => {
3107
- this.handleMediaCanPlay(event);
3108
- }, true);
3109
- document.addEventListener("ended", (event) => {
3110
- this.handleMediaPlaybackEnded(event);
3111
- }, true);
3112
- document.addEventListener("pointerdown", (event) => {
3113
- this.handlePointerDown(event);
3114
- }, true);
3115
- document.addEventListener("pointermove", (event) => {
3116
- this.handlePointerMove(event);
3117
- }, true);
3118
- document.addEventListener("pointerup", (event) => {
3119
- this.handlePointerUp(event);
3120
- }, true);
3145
+ document.addEventListener(
3146
+ "canplay",
3147
+ (event) => {
3148
+ this.handleMediaCanPlay(event);
3149
+ },
3150
+ true
3151
+ );
3152
+ document.addEventListener(
3153
+ "ended",
3154
+ (event) => {
3155
+ this.handleMediaPlaybackEnded(event);
3156
+ },
3157
+ true
3158
+ );
3159
+ document.addEventListener(
3160
+ "pointerdown",
3161
+ (event) => {
3162
+ this.handlePointerDown(event);
3163
+ },
3164
+ true
3165
+ );
3166
+ document.addEventListener(
3167
+ "pointermove",
3168
+ (event) => {
3169
+ this.handlePointerMove(event);
3170
+ },
3171
+ true
3172
+ );
3173
+ document.addEventListener(
3174
+ "pointerup",
3175
+ (event) => {
3176
+ this.handlePointerUp(event);
3177
+ },
3178
+ true
3179
+ );
3121
3180
  window.addEventListener("popstate", (event) => {
3122
3181
  this.handlePopstate(event);
3123
3182
  });
3124
3183
  }
3125
- handlePointerDown(event) {
3184
+ handlePointerDown(_event) {
3126
3185
  this.pointer_moved = false;
3127
3186
  }
3128
- handlePointerMove(event) {
3187
+ handlePointerMove(_event) {
3129
3188
  this.pointer_moved = true;
3130
3189
  }
3131
3190
  handlePointerUp(event) {
@@ -3188,7 +3247,7 @@
3188
3247
  async fetchAndDisplay(path) {
3189
3248
  const response = await fetch(path, {
3190
3249
  headers: {
3191
- "Accept": "text/html"
3250
+ ACCEPT: "text/html"
3192
3251
  }
3193
3252
  });
3194
3253
  if (!response.ok) {
@@ -3216,8 +3275,17 @@
3216
3275
  }
3217
3276
  old_element.replaceWith(new_element);
3218
3277
  }
3278
+ const new_data = updated_document.querySelector("#page-data");
3279
+ const old_data = document.getElementById("page-data");
3280
+ if (new_data !== null) {
3281
+ if (old_data !== null) {
3282
+ old_data.replaceWith(new_data);
3283
+ } else {
3284
+ document.body.appendChild(new_data);
3285
+ }
3286
+ }
3219
3287
  }
3220
- handlePopstate(event) {
3288
+ handlePopstate(_event) {
3221
3289
  const { pathname, search, hash } = window.location;
3222
3290
  const path = pathname + search + hash;
3223
3291
  this.fetchAndDisplay(path);
@@ -3347,7 +3415,7 @@
3347
3415
  credentials: "same-origin",
3348
3416
  redirect: "follow",
3349
3417
  headers: {
3350
- "Accept": "text/html"
3418
+ ACCEPT: "text/html"
3351
3419
  }
3352
3420
  });
3353
3421
  const html = await response.text();
@@ -3377,8 +3445,23 @@
3377
3445
  window.scrollTo(0, document.documentElement.scrollHeight);
3378
3446
  }
3379
3447
  navigateToParentPage() {
3380
- const parent_path = get_parent_path_default(window.location.pathname);
3381
- this.navigateToPath(parent_path);
3448
+ const current_path = window.location.pathname;
3449
+ const parent_path = get_parent_path_default(current_path);
3450
+ const url = new URL(window.location.origin + parent_path);
3451
+ const editing = this.getQueryParameter("editing");
3452
+ const data_element = document.getElementById("page-data");
3453
+ if (data_element !== null) {
3454
+ const text = data_element.textContent || "";
3455
+ const page = JSON.parse(text);
3456
+ const { path, folder_index_path } = page;
3457
+ if (path === current_path) {
3458
+ url.searchParams.set("index_path", folder_index_path);
3459
+ }
3460
+ }
3461
+ if (editing === "true") {
3462
+ url.searchParams.set("editing", "true");
3463
+ }
3464
+ this.navigateToPath(url.pathname + url.search + url.hash);
3382
3465
  }
3383
3466
  navigateToHistory() {
3384
3467
  window.location.href = "/history";
@@ -3604,7 +3687,9 @@
3604
3687
  const track_target = document.getElementById("persistent-track-name");
3605
3688
  const artist_target = document.getElementById("persistent-artist-name");
3606
3689
  const track_source = media_block.querySelector('[data-role="track_name"]');
3607
- const artist_source = media_block.querySelector('[data-role="artist_name"]');
3690
+ const artist_source = media_block.querySelector(
3691
+ '[data-role="artist_name"]'
3692
+ );
3608
3693
  if (track_target === null) {
3609
3694
  throw new import_errors12.InvariantViolation(`
3610
3695
  Tried to access persistent track name element, but it was not found
@@ -3634,7 +3719,7 @@
3634
3719
  document.body.classList.add("media-visible");
3635
3720
  persistent_audio.currentTime = 0;
3636
3721
  persistent_audio.play();
3637
- if (typeof navigator.mediaSession === void 0) {
3722
+ if (typeof navigator.mediaSession === "undefined") {
3638
3723
  return;
3639
3724
  }
3640
3725
  this.determineMediaSessionArtworkUrl().then((artwork_url) => {
@@ -3642,9 +3727,7 @@
3642
3727
  if (artwork_url === null) {
3643
3728
  return [];
3644
3729
  }
3645
- return [
3646
- { src: artwork_url, sizes: "256x256", type: "image/png" }
3647
- ];
3730
+ return [{ src: artwork_url, sizes: "256x256", type: "image/png" }];
3648
3731
  })();
3649
3732
  navigator.mediaSession.metadata = new MediaMetadata({
3650
3733
  title: track_name,
@@ -3763,7 +3846,7 @@
3763
3846
 
3764
3847
  // src/client/page/view-playlist.ts
3765
3848
  var ViewPlaylistPage = class extends cursor_default {
3766
- deleteBlockElement(block_element) {
3849
+ deleteBlockElement(_block_element) {
3767
3850
  if (!this.isLoggedIn()) {
3768
3851
  return;
3769
3852
  }
@@ -3807,13 +3890,17 @@
3807
3890
  inputs.forEach((input) => {
3808
3891
  const handler = () => {
3809
3892
  const value = input.value;
3810
- const container = input.closest('[data-role="numeric-range-container"]');
3893
+ const container = input.closest(
3894
+ '[data-role="numeric-range-container"]'
3895
+ );
3811
3896
  if (container === null) {
3812
3897
  throw new import_errors13.InvariantViolation(`
3813
3898
  Unable to find numeric range container for range input
3814
3899
  `);
3815
3900
  }
3816
- const raw_labels = container.querySelectorAll('[data-role="numeric-range-value"]');
3901
+ const raw_labels = container.querySelectorAll(
3902
+ '[data-role="numeric-range-value"]'
3903
+ );
3817
3904
  const labels = Array.from(raw_labels);
3818
3905
  labels.forEach((label) => {
3819
3906
  label.innerHTML = value;
@@ -3828,7 +3915,6 @@
3828
3915
  this.queuePreview();
3829
3916
  });
3830
3917
  });
3831
- ;
3832
3918
  }
3833
3919
  async loadPreview() {
3834
3920
  this.last_preview_time = Date.now();
@@ -3892,6 +3978,12 @@
3892
3978
  const label = this.getPreviewInputValue("label");
3893
3979
  form.set("label", label);
3894
3980
  }
3981
+ if (block_type === block_type_default.TERM) {
3982
+ const term = this.getPreviewInputValue("term");
3983
+ const definition = this.getPreviewInputValue("definition");
3984
+ form.set("term", term);
3985
+ form.set("definition", definition);
3986
+ }
3895
3987
  const response = await fetch(`/actions`, {
3896
3988
  method: "POST",
3897
3989
  body: form,
@@ -3995,7 +4087,9 @@
3995
4087
  }
3996
4088
  getPreviewRadioValue(input_name) {
3997
4089
  const edit_form = this.getEditForm();
3998
- const input_element = edit_form.querySelector(`[name="${input_name}"]:checked`);
4090
+ const input_element = edit_form.querySelector(
4091
+ `[name="${input_name}"]:checked`
4092
+ );
3999
4093
  if (input_element === null) {
4000
4094
  throw new import_errors13.InvariantViolation(`
4001
4095
  Tried to read radio value for input named "${input_name}",
@@ -4083,7 +4177,9 @@
4083
4177
  if (isNaN(top_level_index)) {
4084
4178
  throw new import_errors14.InvariantViolation(`Invalid index path: ${current_path}`);
4085
4179
  }
4086
- const add_block_links = document.querySelectorAll('[data-role="add_block_link"]');
4180
+ const add_block_links = document.querySelectorAll(
4181
+ '[data-role="add_block_link"]'
4182
+ );
4087
4183
  const link_index = (() => {
4088
4184
  if (this.shiftIsPressed()) {
4089
4185
  return top_level_index;
@@ -46,7 +46,7 @@ const PageConstructors = {
46
46
  [page_type_1.default.SETTINGS]: settings_1.default,
47
47
  [page_type_1.default.ROLE]: role_1.default,
48
48
  [page_type_1.default.ADD_BLOCK_TO_PLAYLIST]: add_block_to_playlist_1.default,
49
- [page_type_1.default.VIEW_PLAYLIST]: view_playlist_1.default,
49
+ [page_type_1.default.VIEW_PLAYLIST]: view_playlist_1.default
50
50
  };
51
51
  class PageFactory {
52
52
  constructor(page_type) {
@@ -55,7 +55,7 @@ class PageFactory {
55
55
  create() {
56
56
  const page_type = this.getPageType();
57
57
  const page_constructor = PageConstructors[page_type];
58
- return new page_constructor;
58
+ return new page_constructor();
59
59
  }
60
60
  getPageType() {
61
61
  return this.page_type;
@@ -1 +1 @@
1
- {"version":3,"file":"page.js","sourceRoot":"","sources":["../../../../src/client/factory/page.ts"],"names":[],"mappings":";;;;;AACA,sEAA6C;AAE7C,4DAAwC;AACxC,kEAA8C;AAC9C,8DAA0C;AAC1C,gEAA4C;AAC5C,0DAAsC;AACtC,4DAAwC;AACxC,8DAA0C;AAC1C,4DAAwC;AACxC,4DAAwC;AACxC,sFAAgE;AAChE,8EAAyD;AACzD,8FAAuE;AACvE,oGAA8E;AAC9E,4EAAuD;AACvD,wEAAmD;AACnD,0EAAqD;AACrD,0EAAqD;AACrD,4FAAsE;AACtE,wFAAkE;AAClE,wEAAmD;AACnD,oEAAgD;AAMhD,MAAM,gBAAgB,GAAsC;IAC3D,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,cAAQ;IACzB,CAAC,mBAAQ,CAAC,OAAO,CAAC,EAAE,iBAAW;IAC/B,CAAC,mBAAQ,CAAC,KAAK,CAAC,EAAE,eAAS;IAC3B,CAAC,mBAAQ,CAAC,MAAM,CAAC,EAAE,gBAAU;IAC7B,CAAC,mBAAQ,CAAC,GAAG,CAAC,EAAE,aAAO;IACvB,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,cAAQ;IACzB,CAAC,mBAAQ,CAAC,KAAK,CAAC,EAAE,eAAS;IAC3B,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,cAAQ;IACzB,CAAC,mBAAQ,CAAC,iBAAiB,CAAC,EAAE,2BAAmB;IACjD,CAAC,mBAAQ,CAAC,wBAAwB,CAAC,EAAE,kCAA0B;IAC/D,CAAC,mBAAQ,CAAC,YAAY,CAAC,EAAE,sBAAe;IACxC,CAAC,mBAAQ,CAAC,UAAU,CAAC,EAAE,oBAAa;IACpC,CAAC,mBAAQ,CAAC,WAAW,CAAC,EAAE,qBAAc;IACtC,CAAC,mBAAQ,CAAC,WAAW,CAAC,EAAE,qBAAc;IACtC,CAAC,mBAAQ,CAAC,oBAAoB,CAAC,EAAE,8BAAsB;IACvD,CAAC,mBAAQ,CAAC,kBAAkB,CAAC,EAAE,4BAAoB;IACnD,CAAC,mBAAQ,CAAC,UAAU,CAAC,EAAE,oBAAa;IACpC,CAAC,mBAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAY;IACjC,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,cAAQ;IACzB,CAAC,mBAAQ,CAAC,qBAAqB,CAAC,EAAE,+BAAsB;IACxD,CAAC,mBAAQ,CAAC,aAAa,CAAC,EAAE,uBAAgB;CAC1C,CAAC;AAEF,MAAM,WAAW;IAGhB,YAAmB,SAAmB;QACrC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAEM,MAAM;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAErD,OAAO,IAAI,gBAAgB,CAAC;IAC7B,CAAC;IAEO,WAAW;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;CACD;AAED,kBAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../../../../src/client/factory/page.ts"],"names":[],"mappings":";;;;;AACA,sEAA6C;AAE7C,4DAAwC;AACxC,kEAA8C;AAC9C,8DAA0C;AAC1C,gEAA4C;AAC5C,0DAAsC;AACtC,4DAAwC;AACxC,8DAA0C;AAC1C,4DAAwC;AACxC,4DAAwC;AACxC,sFAAgE;AAChE,8EAAyD;AACzD,8FAAuE;AACvE,oGAA8E;AAC9E,4EAAuD;AACvD,wEAAmD;AACnD,0EAAqD;AACrD,0EAAqD;AACrD,4FAAsE;AACtE,wFAAkE;AAClE,wEAAmD;AACnD,oEAAgD;AAMhD,MAAM,gBAAgB,GAAsC;IAC3D,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,cAAQ;IACzB,CAAC,mBAAQ,CAAC,OAAO,CAAC,EAAE,iBAAW;IAC/B,CAAC,mBAAQ,CAAC,KAAK,CAAC,EAAE,eAAS;IAC3B,CAAC,mBAAQ,CAAC,MAAM,CAAC,EAAE,gBAAU;IAC7B,CAAC,mBAAQ,CAAC,GAAG,CAAC,EAAE,aAAO;IACvB,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,cAAQ;IACzB,CAAC,mBAAQ,CAAC,KAAK,CAAC,EAAE,eAAS;IAC3B,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,cAAQ;IACzB,CAAC,mBAAQ,CAAC,iBAAiB,CAAC,EAAE,2BAAmB;IACjD,CAAC,mBAAQ,CAAC,wBAAwB,CAAC,EAAE,kCAA0B;IAC/D,CAAC,mBAAQ,CAAC,YAAY,CAAC,EAAE,sBAAe;IACxC,CAAC,mBAAQ,CAAC,UAAU,CAAC,EAAE,oBAAa;IACpC,CAAC,mBAAQ,CAAC,WAAW,CAAC,EAAE,qBAAc;IACtC,CAAC,mBAAQ,CAAC,WAAW,CAAC,EAAE,qBAAc;IACtC,CAAC,mBAAQ,CAAC,oBAAoB,CAAC,EAAE,8BAAsB;IACvD,CAAC,mBAAQ,CAAC,kBAAkB,CAAC,EAAE,4BAAoB;IACnD,CAAC,mBAAQ,CAAC,UAAU,CAAC,EAAE,oBAAa;IACpC,CAAC,mBAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAY;IACjC,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAE,cAAQ;IACzB,CAAC,mBAAQ,CAAC,qBAAqB,CAAC,EAAE,+BAAsB;IACxD,CAAC,mBAAQ,CAAC,aAAa,CAAC,EAAE,uBAAgB;CAC1C,CAAC;AAEF,MAAM,WAAW;IAGhB,YAAmB,SAAmB;QACrC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAEM,MAAM;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAErD,OAAO,IAAI,gBAAgB,EAAE,CAAC;IAC/B,CAAC;IAEO,WAAW;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;CACD;AAED,kBAAe,WAAW,CAAC"}
@@ -41,10 +41,10 @@ class InteractionHelper {
41
41
  document.addEventListener('mousemove', (event) => {
42
42
  this.handleTouchMove(event);
43
43
  }, { capture: true, passive: false });
44
- document.addEventListener('touchend', (event) => {
44
+ document.addEventListener('touchend', (_event) => {
45
45
  this.handleTouchEnd();
46
46
  }, { capture: true });
47
- document.addEventListener('mouseup', (event) => {
47
+ document.addEventListener('mouseup', (_event) => {
48
48
  this.handleTouchEnd();
49
49
  }, { capture: true });
50
50
  document.addEventListener('click', (event) => {
@@ -154,8 +154,8 @@ class InteractionHelper {
154
154
  ghost.classList.add('ghost');
155
155
  ghost.setAttribute('data-for', index_path);
156
156
  candidate.classList.remove('drag-candidate');
157
- const { parentNode } = candidate;
158
- if (parentNode === null) {
157
+ const parent_node = candidate.parentNode;
158
+ if (parent_node === null) {
159
159
  throw new errors_1.InvariantViolation(`
160
160
  Expected drag candidate to be located in a parent, but it was null
161
161
  `);
@@ -171,7 +171,7 @@ class InteractionHelper {
171
171
  candidate.setAttribute('data-drag-start-y', rect.top.toString());
172
172
  candidate.setAttribute('data-dragging', 'true');
173
173
  candidate.classList.add('dragging');
174
- parentNode.insertBefore(ghost, candidate);
174
+ parent_node.insertBefore(ghost, candidate);
175
175
  });
176
176
  }
177
177
  handleNativeDragStart(event) {
@@ -383,7 +383,7 @@ class InteractionHelper {
383
383
  let swapped = false;
384
384
  if (previous_block !== null) {
385
385
  const previous_rect = previous_block.getBoundingClientRect();
386
- const previous_block_y_threshold = previous_rect.top + (previous_rect.height * 0.4);
386
+ const previous_block_y_threshold = previous_rect.top + previous_rect.height * 0.4;
387
387
  if (block_rect.top < previous_block_y_threshold) {
388
388
  swapped = true;
389
389
  const next_sibling = ghost.nextElementSibling;
@@ -395,9 +395,11 @@ class InteractionHelper {
395
395
  }
396
396
  if (next_block !== null && swapped === false) {
397
397
  const next_rect = next_block.getBoundingClientRect();
398
- const next_block_y_threshold = next_rect.top + (next_rect.height * 0.6);
398
+ const next_block_y_threshold = next_rect.top + next_rect.height * 0.6;
399
399
  if (block_rect.bottom > next_block_y_threshold) {
400
- const next_sibling = ghost.nextElementSibling === next_block ? ghost : ghost.nextElementSibling;
400
+ const next_sibling = ghost.nextElementSibling === next_block
401
+ ? ghost
402
+ : ghost.nextElementSibling;
401
403
  next_block.replaceWith(ghost);
402
404
  if (next_sibling) {
403
405
  next_sibling.before(next_block);
@@ -477,7 +479,7 @@ class InteractionHelper {
477
479
  const scroll_amount = scroll_speed_per_second * time_ratio;
478
480
  const scroll_y = this.getCurrentScrollY();
479
481
  const sign = scroll_direction === ScrollDirection.UP ? -1 : 1;
480
- const new_scroll_y = Math.max(0, Math.min(document.documentElement.scrollHeight, scroll_y + (scroll_amount * sign)));
482
+ const new_scroll_y = Math.max(0, Math.min(document.documentElement.scrollHeight, scroll_y + scroll_amount * sign));
481
483
  this.setCurrentScrollY(new_scroll_y);
482
484
  this.setLastScrollTime(now);
483
485
  const window_moved = new_scroll_y !== scroll_y;
@@ -510,11 +512,11 @@ class InteractionHelper {
510
512
  if (sibling === block) {
511
513
  continue;
512
514
  }
513
- const { classList } = sibling;
514
- if (!classList.contains('block')) {
515
+ const class_list = sibling.classList;
516
+ if (!class_list.contains('block')) {
515
517
  continue;
516
518
  }
517
- if (classList.contains('ghost')) {
519
+ if (class_list.contains('ghost')) {
518
520
  continue;
519
521
  }
520
522
  return sibling;
@@ -536,11 +538,11 @@ class InteractionHelper {
536
538
  if (sibling === block) {
537
539
  continue;
538
540
  }
539
- const { classList } = sibling;
540
- if (!classList.contains('block')) {
541
+ const class_list = sibling.classList;
542
+ if (!class_list.contains('block')) {
541
543
  continue;
542
544
  }
543
- if (classList.contains('ghost')) {
545
+ if (class_list.contains('ghost')) {
544
546
  continue;
545
547
  }
546
548
  return sibling;
@@ -550,6 +552,7 @@ class InteractionHelper {
550
552
  handleTouchEnd() {
551
553
  this.demoteAllDragCandidates();
552
554
  this.cancelDelayedDrag();
555
+ this.setDragStartCoordinate(null);
553
556
  if (this.isSwiping()) {
554
557
  this.deactivateSwiping();
555
558
  }