forgebook 0.1.5 → 0.1.7

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 (143) hide show
  1. package/README.md +7 -1
  2. package/dist/bin/forgebook/agentClient.d.ts.map +1 -1
  3. package/dist/bin/forgebook/agentClient.js +2 -2
  4. package/dist/bin/forgebook/agentClient.js.map +1 -1
  5. package/dist/bin/forgebook/agentLoopCommands.d.mts.map +1 -1
  6. package/dist/bin/forgebook/agentLoopCommands.mjs +24 -3
  7. package/dist/bin/forgebook/agentLoopCommands.mjs.map +1 -1
  8. package/dist/bin/forgebook/agents.md +3 -2
  9. package/dist/bin/forgebook/errorsRun.d.ts.map +1 -1
  10. package/dist/bin/forgebook/errorsRun.js +14 -1
  11. package/dist/bin/forgebook/errorsRun.js.map +1 -1
  12. package/dist/bin/forgebook/importers/storybook.d.ts.map +1 -1
  13. package/dist/bin/forgebook/importers/storybook.js +41 -7
  14. package/dist/bin/forgebook/importers/storybook.js.map +1 -1
  15. package/dist/bin/forgebook/initCommands.d.mts.map +1 -1
  16. package/dist/bin/forgebook/initCommands.mjs +5 -2
  17. package/dist/bin/forgebook/initCommands.mjs.map +1 -1
  18. package/dist/bin/forgebook/mcpTools.d.ts.map +1 -1
  19. package/dist/bin/forgebook/mcpTools.js +14 -2
  20. package/dist/bin/forgebook/mcpTools.js.map +1 -1
  21. package/dist/bin/forgebook/touchWindowRun.d.ts.map +1 -1
  22. package/dist/bin/forgebook/touchWindowRun.js +2 -1
  23. package/dist/bin/forgebook/touchWindowRun.js.map +1 -1
  24. package/dist/src/catalogue.d.ts +3 -1
  25. package/dist/src/catalogue.d.ts.map +1 -1
  26. package/dist/src/catalogue.js +2 -1
  27. package/dist/src/catalogue.js.map +1 -1
  28. package/dist/src/controlKeys.d.ts +4 -4
  29. package/dist/src/controlKeys.d.ts.map +1 -1
  30. package/dist/src/controlKeys.js +12 -8
  31. package/dist/src/controlKeys.js.map +1 -1
  32. package/dist/src/frame/frameView.d.ts.map +1 -1
  33. package/dist/src/frame/frameView.js +7 -2
  34. package/dist/src/frame/frameView.js.map +1 -1
  35. package/dist/src/frame/spillOutline.d.ts.map +1 -1
  36. package/dist/src/frame/spillOutline.js +2 -0
  37. package/dist/src/frame/spillOutline.js.map +1 -1
  38. package/dist/src/frame/touchLayer.d.ts.map +1 -1
  39. package/dist/src/frame/touchLayer.js +90 -40
  40. package/dist/src/frame/touchLayer.js.map +1 -1
  41. package/dist/src/frame/touchScroll.d.ts.map +1 -1
  42. package/dist/src/frame/touchScroll.js +29 -12
  43. package/dist/src/frame/touchScroll.js.map +1 -1
  44. package/dist/src/namedViews.d.ts +10 -1
  45. package/dist/src/namedViews.d.ts.map +1 -1
  46. package/dist/src/namedViews.js +24 -0
  47. package/dist/src/namedViews.js.map +1 -1
  48. package/dist/src/shell/ComponentPage.d.ts +6 -1
  49. package/dist/src/shell/ComponentPage.d.ts.map +1 -1
  50. package/dist/src/shell/ComponentPage.js +11 -3
  51. package/dist/src/shell/ComponentPage.js.map +1 -1
  52. package/dist/src/shell/Example.d.ts +5 -0
  53. package/dist/src/shell/Example.d.ts.map +1 -1
  54. package/dist/src/shell/Example.js +18 -2
  55. package/dist/src/shell/Example.js.map +1 -1
  56. package/dist/src/shell/FrameView.d.ts +7 -0
  57. package/dist/src/shell/FrameView.d.ts.map +1 -1
  58. package/dist/src/shell/FrameView.js +12 -0
  59. package/dist/src/shell/FrameView.js.map +1 -1
  60. package/dist/src/shell/InfoTip.d.ts.map +1 -1
  61. package/dist/src/shell/InfoTip.js +3 -1
  62. package/dist/src/shell/InfoTip.js.map +1 -1
  63. package/dist/src/shell/NamedViews.d.ts.map +1 -1
  64. package/dist/src/shell/NamedViews.js +2 -2
  65. package/dist/src/shell/NamedViews.js.map +1 -1
  66. package/dist/src/shell/PinnedControl.d.ts.map +1 -1
  67. package/dist/src/shell/PinnedControl.js +12 -1
  68. package/dist/src/shell/PinnedControl.js.map +1 -1
  69. package/dist/src/shell/Shell.d.ts.map +1 -1
  70. package/dist/src/shell/Shell.js +20 -2
  71. package/dist/src/shell/Shell.js.map +1 -1
  72. package/dist/src/shell/UsedIn.d.ts +4 -3
  73. package/dist/src/shell/UsedIn.d.ts.map +1 -1
  74. package/dist/src/shell/UsedIn.js +11 -7
  75. package/dist/src/shell/UsedIn.js.map +1 -1
  76. package/dist/src/shell/ViewMenu.d.ts +4 -2
  77. package/dist/src/shell/ViewMenu.d.ts.map +1 -1
  78. package/dist/src/shell/ViewMenu.js +7 -3
  79. package/dist/src/shell/ViewMenu.js.map +1 -1
  80. package/dist/src/shell/controlCycle.d.ts.map +1 -1
  81. package/dist/src/shell/controlCycle.js +3 -2
  82. package/dist/src/shell/controlCycle.js.map +1 -1
  83. package/dist/src/shell/shell.css +8 -0
  84. package/dist/src/shell/storyTouch.d.ts +52 -0
  85. package/dist/src/shell/storyTouch.d.ts.map +1 -0
  86. package/dist/src/shell/storyTouch.js +33 -0
  87. package/dist/src/shell/storyTouch.js.map +1 -0
  88. package/dist/src/shell/strings.d.ts +2 -2
  89. package/dist/src/shell/strings.d.ts.map +1 -1
  90. package/dist/src/shell/strings.js +2 -2
  91. package/dist/src/shell/strings.js.map +1 -1
  92. package/dist/src/shell/useFold.d.ts.map +1 -1
  93. package/dist/src/shell/useFold.js +2 -0
  94. package/dist/src/shell/useFold.js.map +1 -1
  95. package/dist/src/shell/useFrameMessages.d.ts +5 -2
  96. package/dist/src/shell/useFrameMessages.d.ts.map +1 -1
  97. package/dist/src/shell/useFrameMessages.js +1 -1
  98. package/dist/src/shell/useFrameMessages.js.map +1 -1
  99. package/dist/src/shell/useLiveView.d.ts +8 -1
  100. package/dist/src/shell/useLiveView.d.ts.map +1 -1
  101. package/dist/src/shell/useLiveView.js +14 -4
  102. package/dist/src/shell/useLiveView.js.map +1 -1
  103. package/dist/src/shell/useWorstCase.d.ts +2 -2
  104. package/dist/src/shell/useWorstCase.d.ts.map +1 -1
  105. package/dist/src/shell/useWorstCase.js +10 -3
  106. package/dist/src/shell/useWorstCase.js.map +1 -1
  107. package/dist/src/storyTree.d.ts +2 -0
  108. package/dist/src/storyTree.d.ts.map +1 -1
  109. package/dist/src/storyTree.js +1 -0
  110. package/dist/src/storyTree.js.map +1 -1
  111. package/dist/src/switches.d.ts +16 -0
  112. package/dist/src/switches.d.ts.map +1 -1
  113. package/dist/src/switches.js +21 -3
  114. package/dist/src/switches.js.map +1 -1
  115. package/dist/src/viewState.d.ts +24 -1
  116. package/dist/src/viewState.d.ts.map +1 -1
  117. package/dist/src/viewState.js +31 -0
  118. package/dist/src/viewState.js.map +1 -1
  119. package/dist/src/vite/agentRoutes.d.ts +7 -0
  120. package/dist/src/vite/agentRoutes.d.ts.map +1 -1
  121. package/dist/src/vite/agentRoutes.js +15 -2
  122. package/dist/src/vite/agentRoutes.js.map +1 -1
  123. package/dist/src/vite/forgebookPlugin.d.ts.map +1 -1
  124. package/dist/src/vite/forgebookPlugin.js +11 -16
  125. package/dist/src/vite/forgebookPlugin.js.map +1 -1
  126. package/dist/src/vite/indexStoryFile.d.ts +1 -1
  127. package/dist/src/vite/indexStoryFile.d.ts.map +1 -1
  128. package/dist/src/vite/indexStoryFile.js +14 -1
  129. package/dist/src/vite/indexStoryFile.js.map +1 -1
  130. package/dist/src/vite/mcpProtocol.d.ts.map +1 -1
  131. package/dist/src/vite/mcpProtocol.js +9 -1
  132. package/dist/src/vite/mcpProtocol.js.map +1 -1
  133. package/dist/src/vite/storyFilesModule.d.ts +17 -11
  134. package/dist/src/vite/storyFilesModule.d.ts.map +1 -1
  135. package/dist/src/vite/storyFilesModule.js +22 -10
  136. package/dist/src/vite/storyFilesModule.js.map +1 -1
  137. package/dist/src/vite/touchMedia.d.ts.map +1 -1
  138. package/dist/src/vite/touchMedia.js +140 -36
  139. package/dist/src/vite/touchMedia.js.map +1 -1
  140. package/dist/src/vite/usageGraph.d.ts.map +1 -1
  141. package/dist/src/vite/usageGraph.js +25 -1
  142. package/dist/src/vite/usageGraph.js.map +1 -1
  143. package/package.json +2 -2
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * The keys that cycle the toolbar's controls: one character per control, pressed without a modifier (Shift goes the
3
- * other way), ignored while typing, as `/` and `[` `]` are.
3
+ * other way), ignored while typing, as `/` and `[` `]` are; a letter, never one of the shell's own keys.
4
4
  *
5
5
  * @remarks
6
6
  * The catalogue sets the key of any control, its switches and Forgebook's own alike (`keys` in its configuration, by
7
7
  * control id; `false` takes one away); the ready-made switches have one by default. A reader changes or removes one
8
- * for themself (kept in their browser), over the catalogue's. A key is one character, never one the shell already
9
- * answers, never one another control has. Pure: keys and a view in, keys or a view out.
8
+ * for themself (kept in their browser), over the catalogue's. A key is one letter (the shell's own keys are not letters),
9
+ * never one another control has. Pure: keys and a view in, keys or a view out.
10
10
  *
11
11
  * @module
12
12
  */
@@ -18,7 +18,7 @@ export type ControlKeys = Readonly<Record<string, string>>;
18
18
  /** A reader's own keys, by control id: a key, or `null` for one they took away. */
19
19
  export type ReaderKeys = Readonly<Record<string, string | null>>;
20
20
  /**
21
- * A key as the shell keeps it: one character, lower case; none when the text is not one.
21
+ * A key as the shell keeps it: one letter, lower case; none when the text is not one.
22
22
  *
23
23
  * @param text - the key as written or pressed.
24
24
  */
@@ -1 +1 @@
1
- {"version":3,"file":"controlKeys.d.ts","sourceRoot":"","sources":["../../src/controlKeys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,mGAAmG;AACnG,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKzD,CAAC;AAKF,+CAA+C;AAC/C,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE3D,mFAAmF;AACnF,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AAEjE;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,KAAG,MAAM,GAAG,SAG7C,CAAC;AAgBF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GACxB,YAAY,SAAS,MAAM,EAAE,EAC7B,MAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAM,KACjD,WAAW,GAAG,MAYhB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,WAAW,WAAW,EAAE,QAAQ,UAAU,KAAG,WAInE,CAAC;AAEL;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,GACxB,WAAW,WAAW,EACtB,QAAQ,UAAU,EAClB,IAAI,MAAM,EACV,KAAK,MAAM,GAAG,IAAI,KACjB,UAAU,GAAG,MAQf,CAAC;AAEF,0CAA0C;AAC1C,MAAM,MAAM,QAAQ,GAAG;IACrB,sBAAsB;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,sEAAsE;IACtE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,WAAW,EACjB,OAAO,QAAQ,KACd;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;CAAE,GAAG,SAKnD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,EAAE,QAAQ,SAAS,MAAM,EAAE,EAAE,SAAS,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAG,MAI9F,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,UAAU,KAAG,MAAM,EAA6C,CAAC"}
1
+ {"version":3,"file":"controlKeys.d.ts","sourceRoot":"","sources":["../../src/controlKeys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,mGAAmG;AACnG,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKzD,CAAC;AAEF,+CAA+C;AAC/C,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE3D,mFAAmF;AACnF,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AAEjE;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,KAAG,MAAM,GAAG,SAI7C,CAAC;AAeF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GACxB,YAAY,SAAS,MAAM,EAAE,EAC7B,MAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAM,KACjD,WAAW,GAAG,MAkBhB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,WAAW,WAAW,EAAE,QAAQ,UAAU,KAAG,WAInE,CAAC;AAEL;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,GACxB,WAAW,WAAW,EACtB,QAAQ,UAAU,EAClB,IAAI,MAAM,EACV,KAAK,MAAM,GAAG,IAAI,KACjB,UAAU,GAAG,MAQf,CAAC;AAEF,0CAA0C;AAC1C,MAAM,MAAM,QAAQ,GAAG;IACrB,sBAAsB;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,sEAAsE;IACtE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,WAAW,EACjB,OAAO,QAAQ,KACd;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;CAAE,GAAG,SAKnD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,EAAE,QAAQ,SAAS,MAAM,EAAE,EAAE,SAAS,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAG,MAI9F,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,UAAU,KAAG,MAAM,EAA6C,CAAC"}
@@ -5,16 +5,15 @@ export const DEFAULT_KEYS = {
5
5
  lang: "l",
6
6
  dir: "d"
7
7
  };
8
- /** The keys the shell answers already: the search, the previous and the next story. */
9
- const RESERVED_KEYS = ["/", "[", "]"];
10
8
  /**
11
- * A key as the shell keeps it: one character, lower case; none when the text is not one.
9
+ * A key as the shell keeps it: one letter, lower case; none when the text is not one.
12
10
  *
13
11
  * @param text - the key as written or pressed.
14
12
  */
15
13
  export const keyOf = (text) => {
16
14
  const key = text.toLowerCase();
17
- return [...key].length === 1 && key.trim() !== "" ? key : undefined;
15
+ // a letter only: Shift turns a digit or a sign into another character, and the cycle could not go back
16
+ return /^\p{L}$/u.test(key) ? key : undefined;
18
17
  };
19
18
  /**
20
19
  * Why a key cannot be given to a control, or none.
@@ -25,9 +24,7 @@ export const keyOf = (text) => {
25
24
  */
26
25
  const keyProblem = (key, id, keys) => {
27
26
  if (keyOf(key) !== key)
28
- return `"${key}" is not one character in lower case`;
29
- if (RESERVED_KEYS.includes(key))
30
- return `"${key}" is the shell's own`;
27
+ return `"${key}" is not one letter in lower case`;
31
28
  const holder = Object.entries(keys).find(([other, held]) => other !== id && held === key)?.[0];
32
29
  return holder === undefined ? undefined : `"${key}" is ${holder}'s already`;
33
30
  };
@@ -43,8 +40,9 @@ export const catalogueKeys = (controlIds, set = {}) => {
43
40
  if (unknown !== undefined)
44
41
  return `The keys name "${unknown}", which is no control of the catalogue`;
45
42
  const keys = {};
43
+ // the keys the catalogue sets first, each checked against the others; then a default where its key is still free
46
44
  for (const id of controlIds) {
47
- const key = set[id] ?? DEFAULT_KEYS[id];
45
+ const key = set[id];
48
46
  if (key === false || key === undefined)
49
47
  continue;
50
48
  const problem = keyProblem(key, id, keys);
@@ -52,6 +50,12 @@ export const catalogueKeys = (controlIds, set = {}) => {
52
50
  return `The key of ${id}: ${problem}`;
53
51
  keys[id] = key;
54
52
  }
53
+ for (const id of controlIds) {
54
+ const key = DEFAULT_KEYS[id];
55
+ if (set[id] !== undefined || key === undefined || keyProblem(key, id, keys) !== undefined)
56
+ continue;
57
+ keys[id] = key;
58
+ }
55
59
  return keys;
56
60
  };
57
61
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"controlKeys.js","sourceRoot":"","sources":["../../src/controlKeys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controlKeys.js","sourceRoot":"","sources":["../../src/controlKeys.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"frameView.d.ts","sourceRoot":"","sources":["../../../src/frame/frameView.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAGlE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,KAAK,QAAQ,EAAY,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AA8E1E;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GACpB,MAAM,WAAW,EACjB,MAAM,QAAQ,EACd,WAAW,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,WAAW,CAAC,KAC3D,IASF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,WAAW,EAAE,MAAM,SAAS,KAAG,MAAM,EAIvE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAU,UAAU,QAAQ,EAAE,MAAM,SAAS,MAAM,EAAE,KAAG,OAAO,CAAC,IAAI,CAc1F,CAAC"}
1
+ {"version":3,"file":"frameView.d.ts","sourceRoot":"","sources":["../../../src/frame/frameView.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAGlE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,KAAK,QAAQ,EAAY,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AA8E1E;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GACpB,MAAM,WAAW,EACjB,MAAM,QAAQ,EACd,WAAW,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,WAAW,CAAC,KAC3D,IAeF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,WAAW,EAAE,MAAM,SAAS,KAAG,MAAM,EAIvE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAU,UAAU,QAAQ,EAAE,MAAM,SAAS,MAAM,EAAE,KAAG,OAAO,CAAC,IAAI,CAc1F,CAAC"}
@@ -98,10 +98,15 @@ const applySwitch = (root, each, value) => {
98
98
  export const applyView = (root, view, catalogue) => {
99
99
  for (const each of catalogue.switches)
100
100
  applySwitch(root, each, view.switches[each.id]);
101
- // a language read right to left draws the story right to left, whatever the direction switch says
101
+ // a language read right to left draws the story right to left; leaving it gives the root its own direction back,
102
+ // unless a switch writes `dir` itself (the direction switch, applied above)
102
103
  const language = switchWithRole(catalogue.switches, "language");
103
- if (language !== undefined && switchValueOf(language, view.switches[language.id])?.isRightToLeft === true)
104
+ const isRightToLeft = language !== undefined && switchValueOf(language, view.switches[language.id])?.isRightToLeft === true;
105
+ const isDirWritten = catalogue.switches.some((each) => each.apply.kind === "attribute" && each.apply.name === "dir");
106
+ if (isRightToLeft)
104
107
  root.setAttribute("dir", "rtl");
108
+ else if (!isDirWritten)
109
+ root.removeAttribute("dir");
105
110
  root.style.fontSize = `${view.text}%`;
106
111
  const backdrop = catalogue.backdrops.find((each) => each.id === view.backdrop);
107
112
  applyBackdrop(root.ownerDocument, backdropSheet(backdrop, schemeOf(view, catalogue.switches)));
@@ -1 +1 @@
1
- {"version":3,"file":"frameView.js","sourceRoot":"","sources":["../../../src/frame/frameView.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frameView.js","sourceRoot":"","sources":["../../../src/frame/frameView.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"spillOutline.d.ts","sourceRoot":"","sources":["../../../src/frame/spillOutline.ts"],"names":[],"mappings":"AAyBA;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GACvB,UAAU,QAAQ,EAClB,cAAc,MAAM,EACpB,SAAS,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,KAC/B,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CA+C1B,CAAC"}
1
+ {"version":3,"file":"spillOutline.d.ts","sourceRoot":"","sources":["../../../src/frame/spillOutline.ts"],"names":[],"mappings":"AAyBA;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GACvB,UAAU,QAAQ,EAClB,cAAc,MAAM,EACpB,SAAS,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,KAC/B,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAiD1B,CAAC"}
@@ -55,6 +55,8 @@ export const spillOutline = (document, rootSelector, onCount) => {
55
55
  characterData: true,
56
56
  attributeFilter: ["class", "style", "hidden"]
57
57
  });
58
+ // the root's direction, text size and switches (its attributes) change the story's layout without touching its body
59
+ mutations.observe(document.documentElement, { attributes: true });
58
60
  const resizes = new ResizeObserver(schedule);
59
61
  resizes.observe(document.body);
60
62
  schedule();
@@ -1 +1 @@
1
- {"version":3,"file":"spillOutline.js","sourceRoot":"","sources":["../../../src/frame/spillOutline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,kEAAkE;AAClE,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAE/C,oDAAoD;AACpD,MAAM,QAAQ,GAAG,uBAAuB,CAAC;AAEzC,yCAAyC;AACzC,MAAM,WAAW,GACf,IAAI,eAAe,qDAAqD;IACxE,wFAAwF,CAAC;AAE3F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,QAAkB,EAClB,YAAoB,EACpB,OAAgC,EACL,EAAE;IAC7B,IAAI,IAA8B,CAAC;IACnC,MAAM,KAAK,GAAG,GAAiB,EAAE;QAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC;QACpB,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;QAChC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,SAA6B,CAAC;QAClC,IAAI,OAA2B,CAAC;QAChC,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,OAAO,GAAG,SAAS,CAAC;YACpB,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC,MAAM,CAAC;YAC/D,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO;YAChC,SAAS,GAAG,KAAK,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC;QACF,0FAA0F;QAC1F,MAAM,QAAQ,GAAG,GAAS,EAAE;YAC1B,OAAO,KAAK,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC;QACF,sFAAsF;QACtF,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACjD,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;YAC/B,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,IAAI;YACnB,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;SAC9C,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,QAAQ,EAAE,CAAC;QACX,OAAO,GAAS,EAAE;YAChB,SAAS,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,OAAO,KAAK,SAAS;gBAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACzD,KAAK,CAAC,MAAM,EAAE,CAAC;YACf,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,gBAAgB,CAAC,IAAI,eAAe,GAAG,CAAC;gBACrE,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QAC7C,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,OAAO,CAAC,IAAa,EAAQ,EAAE;QAC7B,IAAI,IAAI,IAAI,IAAI,KAAK,SAAS;YAAE,IAAI,GAAG,KAAK,EAAE,CAAC;aAC1C,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,EAAE,CAAC;YACP,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"spillOutline.js","sourceRoot":"","sources":["../../../src/frame/spillOutline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,kEAAkE;AAClE,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAE/C,oDAAoD;AACpD,MAAM,QAAQ,GAAG,uBAAuB,CAAC;AAEzC,yCAAyC;AACzC,MAAM,WAAW,GACf,IAAI,eAAe,qDAAqD;IACxE,wFAAwF,CAAC;AAE3F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,QAAkB,EAClB,YAAoB,EACpB,OAAgC,EACL,EAAE;IAC7B,IAAI,IAA8B,CAAC;IACnC,MAAM,KAAK,GAAG,GAAiB,EAAE;QAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC;QACpB,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;QAChC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,SAA6B,CAAC;QAClC,IAAI,OAA2B,CAAC;QAChC,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,OAAO,GAAG,SAAS,CAAC;YACpB,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC,MAAM,CAAC;YAC/D,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO;YAChC,SAAS,GAAG,KAAK,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC;QACF,0FAA0F;QAC1F,MAAM,QAAQ,GAAG,GAAS,EAAE;YAC1B,OAAO,KAAK,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC;QACF,sFAAsF;QACtF,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACjD,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;YAC/B,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,IAAI;YACnB,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;SAC9C,CAAC,CAAC;QACH,oHAAoH;QACpH,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,QAAQ,EAAE,CAAC;QACX,OAAO,GAAS,EAAE;YAChB,SAAS,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,OAAO,KAAK,SAAS;gBAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACzD,KAAK,CAAC,MAAM,EAAE,CAAC;YACf,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,gBAAgB,CAAC,IAAI,eAAe,GAAG,CAAC;gBACrE,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QAC7C,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,OAAO,CAAC,IAAa,EAAQ,EAAE;QAC7B,IAAI,IAAI,IAAI,IAAI,KAAK,SAAS;YAAE,IAAI,GAAG,KAAK,EAAE,CAAC;aAC1C,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,EAAE,CAAC;YACP,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"touchLayer.d.ts","sourceRoot":"","sources":["../../../src/frame/touchLayer.ts"],"names":[],"mappings":"AAoaA;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,UAAU,QAAQ,KAAG,IAehD,CAAC"}
1
+ {"version":3,"file":"touchLayer.d.ts","sourceRoot":"","sources":["../../../src/frame/touchLayer.ts"],"names":[],"mappings":"AAkdA;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,UAAU,QAAQ,KAAG,IAehD,CAAC"}
@@ -7,7 +7,7 @@
7
7
  * starts scrolling, when the pointer is cancelled as the browser cancels it (`touchScroll.ts`); a lift sends
8
8
  * `pointerup` and `touchend`. A tap then sends the mouse's compatibility events and its own click of the `touch` type
9
9
  * in place of the real one, so a button, a link or a checkbox reacts as it would; a press held half a second sends `contextmenu`. A moving mouse with
10
- * no button down sends nothing: a finger does not hover. Shift fixes a centre where the mouse is; a press then puts a
10
+ * no button down sends nothing: a finger does not hover. Shift fixes a centre beside the mouse (the second finger shows 80 px to its left); a press then puts a
11
11
  * second finger mirrored around it, so dragging pinches and rotates. The real cursor is hidden and the fingers are
12
12
  * dots (`touchDots.ts`). While it is on, `navigator.maxTouchPoints` and `ontouchstart` say touch, and capturing a
13
13
  * simulated pointer works. A simulation: the events are not trusted, so the browser's own scrolling, focus from a
@@ -18,25 +18,27 @@
18
18
  import { isRealTouchWindow } from "../realTouch.js";
19
19
  import { touchDots } from "./touchDots.js";
20
20
  import { sendClick, sendMouse, sendPointer, sendTouch } from "./touchEvents.js";
21
- import { distance, dragAxis, isDragging, LONG_PRESS_MS, mirroredFinger } from "./touchGesture.js";
21
+ import { dragAxis, isDragging, LONG_PRESS_MS, mirroredFinger } from "./touchGesture.js";
22
22
  import { endPan, panBy, panOf } from "./touchScroll.js";
23
23
  /** The root's attribute that turns the simulation on. */
24
24
  const TOUCH_ATTRIBUTE = "data-forgebook-touch";
25
25
  /** The simulated pointers' ids: apart from the real mouse's, so the browser never confuses them. */
26
26
  const FINGER_IDS = [100, 101];
27
- /** The least distance between two fingers, in CSS px: a centre right under the mouse moves aside by half of it. */
28
- const LEAST_SPREAD_PX = 80;
27
+ /** How far apart two fingers start, in CSS px: Shift fixes the centre half of it to the left of the mouse. */
28
+ const START_SPREAD_PX = 80;
29
+ /** A finger held still longer than this before it lifts, in ms, lifts without a fling. */
30
+ const STILL_MS = 80;
29
31
  /** The real events that never reach the story while touch is simulated (the hover a finger does not have). */
30
32
  const SWALLOWED = ["mousedown", "mouseup", "mousemove", "mouseover", "mouseout", "mouseenter", "mouseleave"];
31
33
  /** The real pointer events that never reach the story: the fingers send their own. */
32
34
  const SWALLOWED_POINTER = ["pointerover", "pointerout", "pointerenter", "pointerleave"];
33
35
  /**
34
- * The two-finger centre for a press at a point: Shift's, moved aside when it is right under the mouse.
36
+ * The two-finger centre Shift fixes when it goes down with the mouse at a point: half the fingers' spread to its left,
37
+ * so the second finger shows at once beside the first, and moves mirrored from then on.
35
38
  *
36
- * @param center - where Shift fixed it.
37
- * @param point - where the press is.
39
+ * @param point - where the mouse is.
38
40
  */
39
- const spreadCenter = (center, point) => distance(center, point) * 2 >= LEAST_SPREAD_PX ? center : { x: point.x - LEAST_SPREAD_PX / 2, y: point.y };
41
+ const shiftCenter = (point) => ({ x: point.x - START_SPREAD_PX / 2, y: point.y });
40
42
  /**
41
43
  * The fingers' dots: the fingers of a press, or the mouse (and the second finger to come, with Shift) between presses.
42
44
  *
@@ -52,10 +54,8 @@ const drawDots = (state) => {
52
54
  state.dots.draw([]);
53
55
  return;
54
56
  }
55
- // the second finger where a press will put it: the same centre the press takes, moved aside as it will be
56
- const second = center === undefined
57
- ? []
58
- : [{ point: mirroredFinger(spreadCenter(center, mouse), mouse), isPressed: false }];
57
+ // the second finger where a press will put it: mirrored around Shift's centre
58
+ const second = center === undefined ? [] : [{ point: mirroredFinger(center, mouse), isPressed: false }];
59
59
  state.dots.draw([{ point: mouse, isPressed: false }, ...second]);
60
60
  };
61
61
  /**
@@ -80,8 +80,7 @@ const pressDown = (state, event) => {
80
80
  state.stopFling();
81
81
  const point = { x: event.clientX, y: event.clientY };
82
82
  const target = event.target instanceof Element ? event.target : state.document.documentElement;
83
- const shiftCenter = event.shiftKey ? (state.center ?? point) : undefined;
84
- const center = shiftCenter === undefined ? undefined : spreadCenter(shiftCenter, point);
83
+ const center = event.shiftKey ? (state.center ?? shiftCenter(point)) : undefined;
85
84
  // the first finger goes down where the real press did, on the element the browser found under it
86
85
  const fingers = [
87
86
  { id: FINGER_IDS[0], isPrimary: true, point, startTarget: target, captureTarget: target }
@@ -175,18 +174,25 @@ const pressMove = (state, press, event) => {
175
174
  *
176
175
  * @param state - the simulation's state.
177
176
  * @param press - the press.
178
- * @param isCancel - whether the browser cancelled the real pointer.
177
+ * @param isCancel - whether the browser cancelled the real pointer, or the layer stops mid-press.
178
+ * @param time - when, as the events' `timeStamp`.
179
179
  */
180
- const pressUp = (state, press, isCancel) => {
180
+ const pressUp = (state, press, isCancel, time) => {
181
181
  window.clearTimeout(press.timer);
182
- state.press = undefined;
182
+ // a finger that stopped before it lifted throws nothing
183
+ if (time - press.last.time > STILL_MS)
184
+ press.speed = { x: 0, y: 0 };
183
185
  if (press.pan === undefined) {
186
+ // the press is still the layer's while its pointer ends: a story's pointerup may release its capture
184
187
  for (const finger of press.fingers) {
185
188
  sendPointer(isCancel ? "pointercancel" : "pointerup", finger, false);
189
+ // a touch pointer is captured from its press on (by its target, or where the story moved it), and lost here
190
+ sendPointer("lostpointercapture", finger, false);
186
191
  sendPointer("pointerout", finger, false);
187
192
  sendPointer("pointerleave", finger, false);
188
193
  }
189
194
  }
195
+ state.press = undefined;
190
196
  const isEndCancelled = !sendTouch(isCancel ? "touchcancel" : "touchend", [], press.fingers, press.pan === undefined);
191
197
  if (press.pan !== undefined)
192
198
  state.stopFling = endPan(press.pan, press.speed);
@@ -201,15 +207,21 @@ const pressUp = (state, press, isCancel) => {
201
207
  drawDots(state);
202
208
  };
203
209
  /**
204
- * A real event the story never receives in place of a finger's: the click (a tap's is sent again as a finger's, a
205
- * drag's or a long press's is none), a text selection or an image dragged by the finger, the right button's menu.
210
+ * A real event the layer handles apart from the pointer's, before the story: the mouse's click (a tap's is sent again as
211
+ * a finger's, a drag's or a long press's is none), a text selection or an image dragged by the finger, the right
212
+ * button's menu. A click from the keyboard (Enter or Space on a button, Enter in a form) and the keyboard's menu key
213
+ * reach the story as they are: a finger changes nothing of the keyboard.
206
214
  *
207
215
  * @param state - the simulation's state.
208
216
  * @param event - the real event.
209
- * @returns whether it was one of them.
217
+ * @returns whether the event was one of them, handled here.
210
218
  */
211
- const blockedDefault = (state, event) => {
219
+ const handledApart = (state, event) => {
220
+ const isMouseEvent = event instanceof MouseEvent;
212
221
  if (event.type === "click") {
222
+ // a click the keyboard made has no press behind it (`detail` 0) and no tap waiting for it
223
+ if (state.tapper === undefined && isMouseEvent && event.detail === 0)
224
+ return true;
213
225
  event.preventDefault();
214
226
  event.stopImmediatePropagation();
215
227
  const finger = state.tapper;
@@ -217,9 +229,14 @@ const blockedDefault = (state, event) => {
217
229
  // after the real click's dispatch: cancelling it undoes a checkbox's toggle at its end, a click sent inside it too
218
230
  const { target } = event;
219
231
  if (finger !== undefined && target !== null)
220
- window.setTimeout(() => sendClick(target, finger), 0);
232
+ state.clickTimer = window.setTimeout(() => {
233
+ state.clickTimer = undefined;
234
+ sendClick(target, finger);
235
+ }, 0);
221
236
  return true;
222
237
  }
238
+ if (event.type === "contextmenu" && !(isMouseEvent && event.button === 2))
239
+ return true;
223
240
  if (event.type !== "selectstart" && event.type !== "dragstart" && event.type !== "contextmenu")
224
241
  return false;
225
242
  event.preventDefault();
@@ -227,35 +244,52 @@ const blockedDefault = (state, event) => {
227
244
  return true;
228
245
  };
229
246
  /**
230
- * What the simulation does with one real pointer event: the press, the move and the lift of the fingers, the dots
231
- * between presses.
247
+ * The mouse moves: a press under way follows it (or lifts, when its button came up out of sight), the dots follow it
248
+ * between presses, and Shift held fixes the two-finger centre.
232
249
  *
233
250
  * @param state - the simulation's state.
234
- * @param event - the real pointer event.
251
+ * @param event - the real pointer's move.
235
252
  */
236
- const pointerInput = (state, event) => {
253
+ const pointerMove = (state, event) => {
237
254
  const { press } = state;
238
- if (event.type === "pointerout" && event.relatedTarget === null && press === undefined) {
239
- state.mouse = undefined;
240
- drawDots(state);
255
+ if (press !== undefined && (event.buttons & 1) === 0) {
256
+ // the button came up where the frame could not see it (outside the window): the finger lifts here
257
+ state.mouse = { x: event.clientX, y: event.clientY };
258
+ pressUp(state, press, false, event.timeStamp);
241
259
  }
242
- else if (event.type === "pointerdown" && event.button === 0 && press === undefined)
243
- pressDown(state, event);
244
- else if (event.type === "pointermove" && press !== undefined)
260
+ else if (press !== undefined)
245
261
  pressMove(state, press, event);
246
- else if (event.type === "pointermove") {
262
+ else {
247
263
  // Shift read from the pointer, which carries it even when the frame has no focus (the shell usually does): held,
248
- // it fixes the two-finger centre where the mouse was
264
+ // it fixes the two-finger centre beside the mouse
249
265
  if (!event.shiftKey)
250
266
  state.center = undefined;
251
267
  else
252
- state.center ??= state.mouse ?? { x: event.clientX, y: event.clientY };
268
+ state.center ??= shiftCenter(state.mouse ?? { x: event.clientX, y: event.clientY });
253
269
  state.mouse = { x: event.clientX, y: event.clientY };
254
270
  drawDots(state);
255
271
  }
272
+ };
273
+ /**
274
+ * What the simulation does with one real pointer event: the press, the move and the lift of the fingers, the dots
275
+ * between presses.
276
+ *
277
+ * @param state - the simulation's state.
278
+ * @param event - the real pointer event.
279
+ */
280
+ const pointerInput = (state, event) => {
281
+ const { press } = state;
282
+ if (event.type === "pointermove")
283
+ pointerMove(state, event);
284
+ else if (event.type === "pointerout" && event.relatedTarget === null && press === undefined) {
285
+ state.mouse = undefined;
286
+ drawDots(state);
287
+ }
288
+ else if (event.type === "pointerdown" && event.button === 0 && press === undefined)
289
+ pressDown(state, event);
256
290
  else if ((event.type === "pointerup" || event.type === "pointercancel") && press !== undefined) {
257
291
  state.mouse = { x: event.clientX, y: event.clientY };
258
- pressUp(state, press, event.type === "pointercancel");
292
+ pressUp(state, press, event.type === "pointercancel", event.timeStamp);
259
293
  }
260
294
  };
261
295
  /**
@@ -265,7 +299,7 @@ const pointerInput = (state, event) => {
265
299
  * @param event - the real event (the story's own dispatched events are left alone).
266
300
  */
267
301
  const intercept = (state, event) => {
268
- if (!event.isTrusted || blockedDefault(state, event))
302
+ if (!event.isTrusted || handledApart(state, event))
269
303
  return;
270
304
  event.stopImmediatePropagation();
271
305
  if (event instanceof PointerEvent)
@@ -290,8 +324,13 @@ const pretendTouch = (state) => {
290
324
  has: proto.hasPointerCapture
291
325
  };
292
326
  const fingerOf = (id) => state.press?.fingers.find((finger) => finger.id === id);
327
+ // a simulated pointer's id never reaches the browser, which knows no such pointer: once its finger lifted, setting its
328
+ // capture fails as the browser fails it, releasing it does nothing
329
+ const isSimulated = (id) => FINGER_IDS.some((each) => each === id);
293
330
  proto.setPointerCapture = function setPointerCapture(id) {
294
331
  const finger = fingerOf(id);
332
+ if (finger === undefined && isSimulated(id))
333
+ throw new DOMException("No active pointer with the given id is found.", "NotFoundError");
295
334
  if (finger === undefined) {
296
335
  native.set.call(this, id);
297
336
  return;
@@ -302,7 +341,8 @@ const pretendTouch = (state) => {
302
341
  proto.releasePointerCapture = function releasePointerCapture(id) {
303
342
  const finger = fingerOf(id);
304
343
  if (finger === undefined) {
305
- native.release.call(this, id);
344
+ if (!isSimulated(id))
345
+ native.release.call(this, id);
306
346
  return;
307
347
  }
308
348
  sendPointer("lostpointercapture", finger, true);
@@ -310,7 +350,9 @@ const pretendTouch = (state) => {
310
350
  };
311
351
  proto.hasPointerCapture = function hasPointerCapture(id) {
312
352
  const finger = fingerOf(id);
313
- return finger === undefined ? native.has.call(this, id) : finger.captureTarget === this;
353
+ if (finger === undefined)
354
+ return isSimulated(id) ? false : native.has.call(this, id);
355
+ return finger.captureTarget === this;
314
356
  };
315
357
  return () => {
316
358
  Reflect.deleteProperty(view.navigator, "maxTouchPoints");
@@ -347,6 +389,7 @@ const startTouch = (document) => {
347
389
  center: undefined,
348
390
  press: undefined,
349
391
  tapper: undefined,
392
+ clickTimer: undefined,
350
393
  stopFling: () => undefined
351
394
  };
352
395
  const restore = pretendTouch(state);
@@ -355,7 +398,8 @@ const startTouch = (document) => {
355
398
  const onKey = (event) => {
356
399
  if (event.key !== "Shift" || state.press !== undefined)
357
400
  return;
358
- state.center = event.type === "keydown" ? state.mouse : undefined;
401
+ state.center =
402
+ event.type === "keydown" && state.mouse !== undefined ? shiftCenter(state.mouse) : undefined;
359
403
  drawDots(state);
360
404
  };
361
405
  const view = document.defaultView;
@@ -364,6 +408,12 @@ const startTouch = (document) => {
364
408
  view?.addEventListener("keydown", onKey);
365
409
  view?.addEventListener("keyup", onKey);
366
410
  return () => {
411
+ // a press under way is cancelled, as the browser cancels a touch it takes over: its timers, its scroll's snapping
412
+ // and a tap's click to come end with it
413
+ if (state.press !== undefined)
414
+ pressUp(state, state.press, true, performance.now());
415
+ window.clearTimeout(state.clickTimer);
416
+ state.tapper = undefined;
367
417
  for (const type of CAUGHT)
368
418
  view?.removeEventListener(type, onEvent, { capture: true });
369
419
  view?.removeEventListener("keydown", onKey);
@@ -1 +1 @@
1
- {"version":3,"file":"touchLayer.js","sourceRoot":"","sources":["../../../src/frame/touchLayer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"touchLayer.js","sourceRoot":"","sources":["../../../src/frame/touchLayer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"touchScroll.d.ts","sourceRoot":"","sources":["../../../src/frame/touchScroll.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAA0B,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAErF,gCAAgC;AAChC,MAAM,MAAM,GAAG,GAAG;IAChB,8BAA8B;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,8BAA8B;IAC9B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC,CAAC;AAmCF;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,GAAI,QAAQ,OAAO,EAAE,MAAM,GAAG,GAAG,GAAG,KAAG,GAAG,GAAG,SAQ9D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,GAAI,KAAK,GAAG,EAAE,MAAM,KAAK,EAAE,IAAI,KAAK,KAAG,IAKrD,CAAC;AA2CL;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,GAAI,KAAK,GAAG,EAAE,OAAO,KAAK,KAAG,CAAC,MAAM,IAAI,CAgB1D,CAAC"}
1
+ {"version":3,"file":"touchScroll.d.ts","sourceRoot":"","sources":["../../../src/frame/touchScroll.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAA0B,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAErF,gCAAgC;AAChC,MAAM,MAAM,GAAG,GAAG;IAChB,8BAA8B;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,8BAA8B;IAC9B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC,CAAC;AA0CF;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,GAAI,QAAQ,OAAO,EAAE,MAAM,GAAG,GAAG,GAAG,KAAG,GAAG,GAAG,SAQ9D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,GAAI,KAAK,GAAG,EAAE,MAAM,KAAK,EAAE,IAAI,KAAK,KAAG,IAKrD,CAAC;AAkDL;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,GAAI,KAAK,GAAG,EAAE,OAAO,KAAK,KAAG,CAAC,MAAM,IAAI,CAkB1D,CAAC"}
@@ -19,9 +19,16 @@ const SNAP_AIM_MS = 250;
19
19
  * @param axis - the axis.
20
20
  */
21
21
  const scrollsOn = (element, axis) => {
22
- const isDocument = element === element.ownerDocument.scrollingElement;
23
- const overflow = getComputedStyle(element)[axis === "x" ? "overflowX" : "overflowY"];
24
- const isScrollable = isDocument || overflow === "auto" || overflow === "scroll";
22
+ const property = axis === "x" ? "overflowX" : "overflowY";
23
+ const document = element.ownerDocument;
24
+ const overflow = getComputedStyle(element)[property];
25
+ // the document scrolls unless its root or its body hides its overflow (a story that locks it behind a dialog)
26
+ const isDocument = element === document.scrollingElement;
27
+ const isDocumentLocked = [document.documentElement, document.body].some((each) => {
28
+ const value = getComputedStyle(each)[property];
29
+ return value === "hidden" || value === "clip";
30
+ });
31
+ const isScrollable = isDocument ? !isDocumentLocked : overflow === "auto" || overflow === "scroll";
25
32
  const size = axis === "x" ? element.scrollWidth - element.clientWidth : element.scrollHeight - element.clientHeight;
26
33
  return isScrollable && size > 0;
27
34
  };
@@ -84,7 +91,8 @@ const fling = (pan, speed) => {
84
91
  let last = view.performance.now();
85
92
  let frame = 0;
86
93
  const step = (now) => {
87
- const ms = now - last;
94
+ // a frame's time may come before the time the fling started at
95
+ const ms = Math.max(0, now - last);
88
96
  last = now;
89
97
  pan.scroller.scrollBy({ left: -current.x * ms, top: -current.y * ms, behavior: "instant" });
90
98
  current = { x: flungSpeed(current.x, ms), y: flungSpeed(current.y, ms) };
@@ -95,20 +103,28 @@ const fling = (pan, speed) => {
95
103
  return () => view.cancelAnimationFrame(frame);
96
104
  };
97
105
  /**
98
- * Where a snapping container's items start along an axis, in its scroll coordinates: its children that snap.
106
+ * Where a snapping container's items snap along an axis, in its scroll coordinates: its children that snap, each by
107
+ * its `scroll-snap-align` (start, center or end; the container's `scroll-padding` is not read).
99
108
  *
100
109
  * @param scroller - the container.
101
110
  * @param axis - the axis.
102
111
  */
103
112
  const snapPoints = (scroller, axis) => {
104
113
  const box = scroller.getBoundingClientRect();
105
- return [...scroller.children]
106
- .filter((child) => getComputedStyle(child).scrollSnapAlign !== "none")
107
- .map((child) => {
114
+ const room = axis === "x" ? scroller.clientWidth : scroller.clientHeight;
115
+ const scrolled = axis === "x" ? scroller.scrollLeft : scroller.scrollTop;
116
+ return [...scroller.children].flatMap((child) => {
117
+ const aligns = getComputedStyle(child).scrollSnapAlign.split(/\s+/);
118
+ // one value aligns both axes; two give the block axis (y) then the inline one (x)
119
+ const align = (axis === "x" ? aligns[1] : aligns[0]) ?? aligns[0] ?? "none";
120
+ if (align === "none")
121
+ return [];
108
122
  const childBox = child.getBoundingClientRect();
109
- return axis === "x"
110
- ? childBox.left - box.left + scroller.scrollLeft
111
- : childBox.top - box.top + scroller.scrollTop;
123
+ const start = (axis === "x" ? childBox.left - box.left : childBox.top - box.top) + scrolled;
124
+ const size = axis === "x" ? childBox.width : childBox.height;
125
+ if (align === "center")
126
+ return [start + size / 2 - room / 2];
127
+ return [align === "end" ? start + size - room : start];
112
128
  });
113
129
  };
114
130
  /**
@@ -132,6 +148,7 @@ export const endPan = (pan, speed) => {
132
148
  // snapping comes back only now: back on, it would snap the place the finger left before the target is read
133
149
  scroller.style.scrollSnapType = pan.pausedSnap;
134
150
  scroller.scrollTo({ [axis === "x" ? "left" : "top"]: target, behavior: "smooth" });
135
- return () => undefined;
151
+ // a new touch stops the smooth scroll where it is, as a finger stops a scrolling list
152
+ return () => scroller.scrollTo({ left: scroller.scrollLeft, top: scroller.scrollTop, behavior: "instant" });
136
153
  };
137
154
  //# sourceMappingURL=touchScroll.js.map